aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore5
-rw-r--r--AMSB.txt404
-rw-r--r--CHANGES.txt19
-rw-r--r--Makefile72
-rw-r--r--README.txt37
-rw-r--r--TODO9
-rw-r--r--a8cat.19
-rw-r--r--a8cat.c126
-rwxr-xr-xa8diff56
-rw-r--r--a8diff.1118
-rw-r--r--a8diff.rst50
-rw-r--r--a8eol.19
-rw-r--r--a8xd.19
-rwxr-xr-xabas2html109
-rw-r--r--abas2html.1172
-rw-r--r--abas2html.rst90
-rw-r--r--amsb.7600
-rw-r--r--amsb.rst13
-rw-r--r--amsb40.rst31
-rw-r--r--amsb40.txt668
-rw-r--r--amsb_content.rst406
-rw-r--r--amsbtok.h161
-rw-r--r--aplus_tokens.c179
-rw-r--r--aplus_tokens.h5
-rw-r--r--atascii.79
-rw-r--r--atascii.c157
-rw-r--r--atascii.h44
-rw-r--r--atr2xfd.19
-rw-r--r--atrsize.19
-rw-r--r--axe.19
-rw-r--r--bas.c140
-rw-r--r--bas.h10
-rw-r--r--bas2aplus.1211
-rw-r--r--bas2aplus.c272
-rw-r--r--bas2aplus.rst143
-rw-r--r--blob2c.19
-rw-r--r--blob2xex.19
-rw-r--r--bxe_tokens.c19
-rw-r--r--bxe_tokens.h2
-rw-r--r--bxl_tokens.c64
-rw-r--r--bxl_tokens.h5
-rw-r--r--cart2xex.19
-rwxr-xr-xcolorize-amsb284
-rw-r--r--colorize-amsb.1100
-rw-r--r--colorize-amsb.rst39
-rw-r--r--cxrefbas.19
-rw-r--r--dasm2atasm.19
-rwxr-xr-xdiffbas56
-rw-r--r--diffbas.1132
-rw-r--r--diffbas.rst57
-rw-r--r--dumpbas.19
-rw-r--r--fauxtari.7346
-rw-r--r--fauxtari.rst175
-rw-r--r--fenders.19
-rw-r--r--fendersdbl.dasm9
-rw-r--r--fonts/FauxtariScalableMono.ttfbin0 -> 57484 bytes
-rw-r--r--fonts/Makefile2
-rw-r--r--fonts/char0.rawbin0 -> 8 bytes
-rw-r--r--fonts/dupglyphs.pl42
-rw-r--r--fonts/fauxtari-16.bdf9893
-rw-r--r--fonts/fauxtari-16.psfbin0 -> 18030 bytes
-rw-r--r--fonts/fauxtari-16.txt4796
-rw-r--r--fonts/fauxtari-24.bdf13325
-rw-r--r--fonts/fauxtari-24.psfbin0 -> 38510 bytes
-rw-r--r--fonts/fauxtari-24.txt5331
-rw-r--r--fonts/fauxtari-8.bdf6461
-rw-r--r--fonts/fauxtari-8.psfbin0 -> 5742 bytes
-rw-r--r--fonts/fauxtari-8.txt4261
-rw-r--r--fonts/fixbdf.pl41
-rw-r--r--fonts/mkpsf.pl1358
-rw-r--r--fonts/sorttxtfont.pl33
-rw-r--r--install-fonts.sh69
-rw-r--r--int_disk_tokens.c94
-rw-r--r--int_disk_tokens.h5
-rw-r--r--int_tokens.c189
-rw-r--r--int_tokens.h5
-rw-r--r--jindroush/Makefile8
-rw-r--r--jindroush/README.txt7
-rw-r--r--jindroush/chkbas/basic_xe.h6
-rw-r--r--jindroush/chkbas/basic_xl.h6
-rw-r--r--jindroush/man/chkbas.118
-rw-r--r--jindroush/man/chkbas.rst8
-rw-r--r--listamsb.1377
-rw-r--r--listamsb.c1010
-rw-r--r--listamsb.rst313
-rw-r--r--listbas.1399
-rw-r--r--listbas.c1116
-rw-r--r--listbas.rst368
-rw-r--r--manftr.rst7
-rw-r--r--ossintbas.7582
-rw-r--r--ossintbas.rst14
-rw-r--r--ossintbas_content.rst319
-rw-r--r--protbas.19
-rw-r--r--renumbas.126
-rw-r--r--renumbas.c9
-rw-r--r--renumbas.rst19
-rw-r--r--rom2cart.19
-rw-r--r--tokens.c2
-rw-r--r--turbo_tokens.c82
-rw-r--r--turbo_tokens.h5
-rw-r--r--unmac65.19
-rw-r--r--unmac65.c4
-rw-r--r--unprotbas.19
-rw-r--r--ver.rst2
-rw-r--r--vxrefbas.19
-rw-r--r--whichbas.1299
-rw-r--r--whichbas.c1271
-rw-r--r--whichbas.h19
-rw-r--r--whichbas.rst215
-rw-r--r--xex.59
-rw-r--r--xex1to2.19
-rw-r--r--xexamine.19
-rw-r--r--xexcat.19
-rw-r--r--xexsplit.19
-rw-r--r--xfd2atr.19
115 files changed, 57802 insertions, 434 deletions
diff --git a/.gitignore b/.gitignore
index 8cb8268..5914a60 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,8 @@
+bas2aplus
+listamsb
+whichbas
+equates.m65
+fendersdbl.atasm
*.bas
*.BAS
*.LST
diff --git a/AMSB.txt b/AMSB.txt
new file mode 100644
index 0000000..f277e26
--- /dev/null
+++ b/AMSB.txt
@@ -0,0 +1,404 @@
+Atari Microsoft BASIC Notes
+---------------------------
+
+AMSB is actually a pretty cool BASIC for the Atari 8-bit. I never
+got the chance to use it 'back in the day' because it was expensive,
+required a floppy drive and at least 32K of RAM (my poor 400 had a
+tape drive for the first few years), and then later on, there was
+Turbo BASIC XL, which was cooler than AMSB, and also freeware.
+
+This file is a collection of notes I made to myself while developing
+listamsb. The information here might be useful (e.g. if you're trying
+to repair a damaged AMSB file) and hopefully is interesting. Enjoy!
+
+This file is part of the bw-atari8-utils source. You can get the
+latest version of the source from:
+
+https://slackware.uk/~urchlay/repos/bw-atari8-tools
+
+...which you can either view with a web browser or use with the 'git
+clone' command.
+
+ -- B. Watson <urchlay@slackware.uk>
+
+
+Tokenized file format
+---------------------
+
+File begins with a 3-byte header:
+
+offset | purpose
+-------+-------------------------------------------------------
+ 0 | 0 for a normal program, 1 for LOCKed (encrypted).
+ 1 | LSB, program length, not counting the 3-byte header...
+ 2 | MSB, " "
+
+The program length should always be the actual file size minus 3. If
+it's not, the file has either been truncated or had junk added to the
+end. In a LOCKed program, the program length bytes are not encrypted.
+
+After the header, the lines of code (encrypted, for LOCKed programs).
+Each line has a 4-byte header:
+
+offset | purpose
+-------+-------------------------------------------------------
+ 0 | LSB, address of the last byte of this line...
+ 1 | MSB, address ...which is ignored on LOAD!
+ 2 | LSB of line number
+ 3 | MSB " " "
+
+The rest of the line is the tokens, terminated by a $00 byte. The
+next 2 bytes after the $00 is the last-byte offset of the next line.
+
+The last "line" of the program has a $0000 offset, which indicates the
+end of the program. Since the actual last line ends with a $00, that
+means there will be three $00 bytes in a row as the last 3 bytes of
+the file. And that's the *only* place 3 $00's in a row will occur.
+
+Tokenization is "lightweight": there are no tokenized numerics,
+they're just stored as ASCII characters, as typed. There's no "string
+constant follows" token like there is in Atari BASIC (well, there is,
+it's just a double-quote, $22. There's no length byte). Variable names
+are not tokenized, either, they're just stored as-is (name in ASCII,
+including trailing $ for strings, etc). Numeric constants are just
+stored as ASCII digits, just as you typed them.
+
+In fact the only things that are tokenized are BASIC keywords:
+commands and functions... NOT including user functions defined
+with DEF (those are stored as just the ASCII function name, like
+variables).
+
+There are 2 sets of tokens. One set is single-byte, $80 and up.
+These are commands. The other set is functions, which are 2 bytes:
+$FF followed by the token number. See amsbtok.h in the source for the
+actual tokens.
+
+AMSB saves the end-of-line pointers, but it totally ignores them
+on LOAD. The SAVEd file format does *not* have a load address (as e.g.
+Commodore BASIC does), so there's no way to know the address of the
+start of the program (other than counting backwards from the next line,
+since its address is known). It's not just a constant either: it
+depends on what MEMLO was set to when the program was saved (which varies
+depending on what version of AMSB you have, what DOS you boot, whether
+or not you have the R: device driver loaded, etc etc).
+
+
+Redundant Tokens
+----------------
+
+There are two separate tokens each for PRINT and AT:
+
+token | text
+------+-----------------------
+ $ab | "PRINT "
+ $ac | "PRINT"
+ $df | "AT("
+ $e0 | "AT "
+
+When tokenizing a line, AMSB will actually use the $ab token if
+there's a space after PRINT (or ?), otherwise it will use the
+$ac token. These lines actually get tokenized differently:
+
+10 PRINT "HELLO"
+10 PRINT"HELLO"
+
+Same applies to the $df and $e0 AT tokens: if the user entered
+"AT(X,Y)", $df is used. Otherwise, with "AT (X,Y)", $e0 is used
+(followed by an ASCII left parenthesis).
+
+3 tokens include the opening parenthesis:
+
+token | text
+------+-----------------------
+ $d2 | "TAB("
+ $d6 | "SPC("
+ $df | "AT("
+
+Normally in AMSB, it's OK to leave a space between a function name
+and the left-paren. PEEK (123) and SIN (1) are both valid. However,
+for SPC and TAB, no space is allowed, because the ( is part of the
+token. AT would be the same way, except there's a separate token $e0
+that *includes* the space. Weird, huh? A side effect of this is
+that "SPC (10)" or "TAB (10)" won't be treated as a function call.
+Instead, the SPC or TAB is treated as a variable name. If you write:
+
+PRINT TAB (10);"HELLO"
+
+...it'll print " 0 HELLO" at the start of the line[*], instead of "HELLO"
+in the 10th column as you might have expected. It also means that AT,
+TAB, and SPC are valid variable names in AMSB, which is an exception
+to the rule that keywords can't be used as variable names (e.g. SIN=1
+or STRING$="HELLO" are invalid).
+
+[*] Unless you've assigned another value to TAB, of couse.
+
+
+Unused Tokens
+-------------
+
+If you look at the token list in amsbtok.h (or in a hex dump
+of the AMSB executable or cartridge image), you'll see a lot of
+double-quotes mixed in with the list. AMSB doesn't actually tokenize
+the " character (it's stored as $22, its ASCII value), so these seem
+to be placeholders, either because some tokens were deleted from the
+language during its development, or else they're intended for some
+future version of AMSB that never happened.
+
+The weird quote tokens are $99, $c8 to $d0, $d5, and $e7 to $ed. If
+you hexedit a program to replace a regular double-quote with one of
+these tokens, it will list as either "" or just one ", but it will
+cause a syntax error at runtime.
+
+
+LOADing Untokenized Files
+-------------------------
+
+If the first byte of the file is anything other than $00 or $01,
+AMSB's LOAD command reads it in as a text file (LISTed rather than
+SAVEd).
+
+When LOAD is reading a text file, if the last byte of the file isn't
+an ATASCII EOL ($9b), you'll get #136 ERROR. The program doesn't get
+deleted, but the last line of the file didn't get loaded. This could
+happen if a LISTed file somehow got truncated.
+
+While on the subject... the manual doesn't mention it, but if you LOAD
+a text file without line numbers, the code gets executed in direct
+mode during the load (like Atari BASIC's ENTER command does). This
+means you could write scripts (batch files) for AMSB... though you'd
+be better off using MERGE, rather than LOAD (MERGE is basically the
+same thing as Atari BASIC's ENTER).
+
+
+Program Length Header Mismatch
+------------------------------
+
+When AMSB's LOAD command executes, it reads the 3-byte header, then
+reads as many bytes as the header's program length says.
+
+If the header length is longer than the rest of the file, you get
+a #136 ERROR (aka Atari's EOF), and the partially loaded program is
+erased (basically it does a NEW).
+
+If the length is shorter than the program, it'll stop loading no
+matter how much more data is in the file. This means it can stop in
+the middle of a line. It also means, if there was already a program in
+memory that was longer than the program length, you get a "hybrid" mix
+of the new program followed by the remainder of the old one. This is
+because the three $00 bytes at the end of the program weren't read in.
+
+If the program length is correct for the actual program (so the three
+$00 bytes get read), but there's extra data appended to the file, AMSB
+will never read the extra data at all.
+
+
+String Limitations
+------------------
+
+String literals in AMSB cannot contain the | or ATASCII heart
+characters.
+
+AMSB uses | as a terminator for quoted strings, e.g. "STRING" will
+be tokenized as: "STRING|
+
+If you try to use a | in a quoted string, it gets turned into a double
+quote: "FOO|BAR" comes out as "FOO"BAR which is a syntax error!
+
+String variables can store | but only with e.g. CHR$(124) or reading
+from a file: it's string *literals* that don't allow it.
+
+The reason | is used for a terminating quote is to allow doubling up
+the quotes to embed them in a string:
+
+A$ = "HAS ""QUOTES"""
+PRINT A$ will print: HAS "QUOTES"
+
+At first I thought "no pipe characters in strings, WTF man?" but it's
+probably no worse than Atari BASIC's "no quotes in strings constants"
+rule. It *would* be nice if the AMSB manual actually documented the
+fact that | can't occur in a string constant. Not documenting it makes
+it a bug... and they have unused tokens in the $Fx range, I don't see
+why they had to use a printing character for this.
+
+You also can't put a heart (ATASCII character 0) in a string
+literal. It will be treated as the end of the line, as though you
+pressed Enter (and anything else on the line is ignored). This isn't
+documented in the manual, either.
+
+Like the | character, you can use CHR$(0) to store a heart in a string
+and it will work correctly.
+
+
+Line Number Range
+-----------------
+
+AMSB doesn't allow entering line numbers above 63999, but if a file
+is e.g. hex-edited to have a line number that's out of range, it will
+LIST and RUN just fine... except that it's impossible to GOTO or GOSUB
+to an out-of-range line. It will still execute if program flow falls
+into it.
+
+
+Differences Between Versions
+----------------------------
+
+The language is the same in AMSB versions 1 and 2. Tokenized files
+made by one version will LOAD and RUN in the other version.
+
+Version 1, the disk version, always has the full set of commands
+avaiable. Version 2, the cart, only has the full set if the extension
+disk is booted. The missing ones still get tokenized, but you get SN
+ERROR at runtime if you try to execute them. This doesn't affect the
+detokenizer at all. The missing commands:
+
+AUTO
+DEF (the string version; numeric is still present)
+NOTE
+RENUM
+TRON
+TROFF
+DEL
+USING
+STRING$ (function, not a command)
+
+RENUM only works in direct mode, not a program. Executing it
+gives a FUNCTION CALL ERROR.
+
+AUTO is (oddly) allowed in a program. Executing it exits the program
+and puts you back in the editor, in auto-numbering mode.
+
+It would seem weird to have POINT available but not NOTE... except
+that AMSB doesn't even *have* POINT. Instead, the disk addresses
+returned by NOTE are used with AT() in a PRINT statement. Not sure
+if AT() works without the extensions loaded, but it won't be useful
+anyway without NOTE.
+
+One other difference between versions 1 and 2: version 2 will LOAD and
+RUN the file D:AUTORUN.AMB at startup, if it exists.
+
+
+Colon Weirdness
+---------------
+
+AMSB allows comments to be started with the ! and ' characters (as
+well as the traditional REM). For the ! and ' variety, if they
+come at the end of a line after some code, you don't have to put a colon.
+Example:
+
+10 GRAPHICS 2+16 ! NO TEXT WINDOW
+
+However... in the tokenized format, there *is* a tokenized colon
+just before the tokenized ! or ' character. LIST doesn't display it.
+If you did put a colon:
+
+10 CLOSE #1:! WE'RE DONE WITH THE FILE
+
+...then there will be *two* colons in the tokenized file, and only
+one will be LISTed.
+
+The ELSE keyword works the same way. In this line:
+
+10 IF A THEN PRINT ELSE STOP
+
+...there is actually a : character just before the token for ELSE.
+
+Even weirder: you can put as many colons in a row as you like, and
+AMSB will treat it like single colon. This line of code is valid
+and runs correctly:
+
+10 PRINT "FOO"::::::PRINT "BAR"
+
+These colons are displayed normally in LIST output.
+
+
+Memory Usage
+------------
+
+On a 48K/64K Atari, FRE(0) for AMSB 1 with DOS booted (since you can't
+use it without) but no device drivers is 21020. MEMLO is awfully high
+($6a00).
+
+For AMSB 2 with DOS booted, but without the extensions loaded, FRE(0)
+is 24352. With extensions it's 20642 (even though the banner says 20644
+BYTES FREE).
+
+AMSB 2 without DOS gives you 29980, but how are you gonna load or save
+programs without DOS? Nobody wants to use cassette, especially not
+people who could afford to buy the AMSB II cartridge.
+
+
+LOCKed Programs
+---------------
+
+If you save a program with SAVE "filename" LOCK, it gets saved in an
+"encrypted" form. Loading a locked program disbles the LISTing or
+editing the program (you get LK ERROR if you try).
+
+The "encryption" is no better than ROT13. To encrypt, subtract each
+byte from 0x54 (in an 8-bit register, using twos complement). To
+decrypt, do the same. This is a reciprocal cipher, and you can think
+of it as the binary equivalent of ROT13.
+
+You can tell a LOCKed program because its first byte will be 1 instead
+of 0. The next 2 bytes (the program length) unencrypted. The rest of
+the file is encrypted with the lame scheme described above.
+
+When AMSB has a LOCKed program loaded into memory, it's *not* stored
+encrypted in RAM. It would be perfectly possible to write BASIC code
+using direct mode to write the tokenized program out to disk. The
+program starts at MEMLO and extends up to the first occurrence of
+three $00 bytes. The hardest part of this would be generating the
+header using only direct-mode BASIC statements (but it could be done).
+
+However... there's no need to do that. AMSB has a flag that tells it
+whether or not the currently-loaded program is LOCKed. You can just
+clear the flag:
+
+POKE 168,0
+
+Now AMSB won't consider the program LOCKed, and you can SAVE a regular
+copy of it (and LIST, edit, etc).
+
+
+Line Length Limit
+-----------------
+
+In the editor, after a POKE 82,0 (to set the left margin to 0), you
+can enter 120 characters (3 screen lines) on a logical line. If you
+enter a program line that way *without* a space after the line number,
+then LIST it, it will be 121 characters long, because AMSB will
+display a space after the line number.
+
+If you use a text editor (or write a program) to create an untokenized
+BASIC program, you can have a line of code that's 125 characters
+long. AMSB will accept it just fine, with LOAD. If a line is 126
+characters or longer, AMSB will silently ignore that line when
+LOADing.
+
+If you create a 125-character line (with a text editor) consisting
+only of a comment that begins with ! or ', without a space after the
+line number, LOAD it, then SAVE it, that line will be 129 bytes long
+in tokenized form. AMSB will LOAD it with no problems.
+
+If you hex-edit a SAVEd file to create a longer line, AMSB will
+accept that, too... up to 255 bytes. At 256 bytes, AMSB will lock
+up after LOAD.
+
+
+Crunching
+---------
+
+AMSB stores spaces in the tokenized program, just like other 8-bit
+MS BASICs do, but it requires you to put spaces between keywords and
+variables (unlike e.g. Commodore 64 BASIC). This seems to be because
+AMSB allows keywords inside of variable names: you can have a variable
+called LIFE (which contains the keyword IF) in AMSB, but you can't in
+C=64 BASIC (which gives a syntax error becase it sees "L IF E").
+
+This applies to numbers, too: POKE710,0 is a syntax error in
+AMSB. This is because POKE710 is actually a valid variable name: try
+POKE710=123 followed by PRINT POKE710.
+
+However. The spaces aren't needed when the program is RUN. It would be
+possible to remove all the spaces outside of strings or comments and
+the program would still work fine.
diff --git a/CHANGES.txt b/CHANGES.txt
new file mode 100644
index 0000000..17c581e
--- /dev/null
+++ b/CHANGES.txt
@@ -0,0 +1,19 @@
+This is just a list of the user-visible changes. The real log is the
+git commit log, of course.
+
+version 0.2.3 (not released yet):
+
+- OSS Integer BASIC is now supported in listbas.
+- new tool: abas2html.
+- add color syntax highlighting to listamsb.
+- add -k option to listamsb: keep comment-only lines when crunching.
+- convert AMSB.txt to a section 7 man page.
+- a8cat now uses correct ANSI code to disable inverse video.
+
+version 0.2.2:
+
+- Added this file, CHANGES.txt.
+- whichbas now detects LOCKed AMSB programs.
+- AMSB.txt is now installed in the doc dir with 'make install'.
+
+version 0.2.1: first release
diff --git a/Makefile b/Makefile
index 727f8be..90f22c8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,4 @@
+# This Makefile requires GNU make.
# Install paths. DESTDIR is used for installing to an alternate location,
# for people making RPM/deb/tgz/etc packages.
@@ -9,6 +10,9 @@ MAN1DIR=$(MANDIR)/man1
MAN5DIR=$(MANDIR)/man5
MAN7DIR=$(MANDIR)/man7
DOCDIR=$(PREFIX)/share/doc/bw-atari8-tools
+PSFDIR=$(PREFIX)/share/kbd/consolefonts
+BDFDIR=$(PREFIX)/share/share/fonts/misc
+TTFDIR=$(PREFIX)/share/share/fonts/TTF
# Compiler stuff
COPT=-O2
@@ -16,17 +20,20 @@ CC=gcc
CFLAGS=-Wall $(COPT) -ansi -D_GNU_SOURCE -DVERSION=\"$(VERSION)\"
# BINS and SCRIPTS go in $BINDIR, DOCS go in $DOCDIR
-BINS=a8eol atr2xfd atrsize axe blob2c blob2xex cart2xex cxrefbas dumpbas fenders protbas renumbas rom2cart unmac65 unprotbas vxrefbas xex1to2 xexamine xexcat xexsplit xfd2atr listbas a8cat a8xd
-SCRIPTS=dasm2atasm
-MANS=a8eol.1 xfd2atr.1 atr2xfd.1 blob2c.1 cart2xex.1 fenders.1 xexsplit.1 xexcat.1 atrsize.1 rom2cart.1 unmac65.1 axe.1 dasm2atasm.1 blob2xex.1 xexamine.1 xex1to2.1 unprotbas.1 protbas.1 renumbas.1 dumpbas.1 vxrefbas.1 cxrefbas.1 listbas.1 a8cat.1 a8xd.1
+BINS=a8eol atr2xfd atrsize axe blob2c blob2xex cart2xex cxrefbas dumpbas fenders protbas renumbas rom2cart unmac65 unprotbas vxrefbas xex1to2 xexamine xexcat xexsplit xfd2atr listbas a8cat a8xd whichbas bas2aplus listamsb
+SCRIPTS=dasm2atasm diffbas a8diff colorize-amsb abas2html
+MANS=a8eol.1 xfd2atr.1 atr2xfd.1 blob2c.1 cart2xex.1 fenders.1 xexsplit.1 xexcat.1 atrsize.1 rom2cart.1 unmac65.1 axe.1 dasm2atasm.1 blob2xex.1 xexamine.1 xex1to2.1 unprotbas.1 protbas.1 renumbas.1 dumpbas.1 vxrefbas.1 cxrefbas.1 listbas.1 a8cat.1 a8xd.1 whichbas.1 diffbas.1 a8diff.1 bas2aplus.1 listamsb.1 colorize-amsb.1 abas2html.1
MAN5S=xex.5
-MAN7S=atascii.7
-DOCS=README.txt equates.inc *.dasm LICENSE ksiders/atr.txt
+MAN7S=atascii.7 fauxtari.7 amsb.7 ossintbas.7
+DOCS=README.txt CHANGES.txt equates.inc *.dasm LICENSE ksiders/atr.txt
+PSFS=fonts/fauxtari-8.psf fonts/fauxtari-16.psf fonts/fauxtari-24.psf
+BDFS=fonts/fauxtari-8.bdf fonts/fauxtari-16.bdf fonts/fauxtari-24.bdf
+TTF=fonts/FauxtariScalableMono.ttf
SUBDIRS=ksiders jindroush
# All the programs share this version number...
-VERSION=0.2.1
+VERSION=0.2.2
# If your system doesn't support gzipped man pages, comment this out:
GZIP_MAN=y
@@ -47,7 +54,11 @@ RST2MAN=rst2man
# "make clean" and "make distclean" will not delete the 6502 object
# code (the *.bin files), but "make realclean" will.
-all: $(BINS) manpages symlinks subdirs
+all: $(BINS) manpages symlinks subdirs $(TTF) amsb40.txt
+
+atest: atest.c atascii.c atables.c wtable.c
+
+intbas: bas.o
unprotbas: bas.o
@@ -57,12 +68,18 @@ renumbas: bas.o bcdfp.o linetab.o
dumpbas: bas.o
+whichbas: bas.o
+
vxrefbas: bas.o
cxrefbas: bas.o bcdfp.o linetab.o
-listbas: listbas.c bas.o bcdfp.o tokens.o atables.o
- $(CC) $(CFLAGS) -o listbas listbas.c bas.o bcdfp.o tokens.o atables.o -lm
+bas2aplus: bas.o
+
+listbas: listbas.c bas.o bcdfp.o tokens.o atables.o turbo_tokens.o aplus_tokens.o bxl_tokens.o bxe_tokens.o int_disk_tokens.o int_tokens.o
+ $(CC) $(CFLAGS) -o listbas listbas.c bas.o bcdfp.o tokens.o atables.o turbo_tokens.o aplus_tokens.o bxl_tokens.o bxe_tokens.o int_disk_tokens.o int_tokens.o -lm
+
+listamsb: listamsb.o atascii.o atables.o
bas.o: bas.c bas.h
@@ -70,12 +87,12 @@ wtable.o: wtable.c wtable.h
atables.o: atables.c atables.h
-a8cat: a8cat.c atables.o wtable.o
+a8cat: a8cat.c atables.o wtable.o atascii.o
a8xd: a8xd.c atables.o
subdirs:
- for dir in $(SUBDIRS); do make -C $$dir COPT="$(COPT)"; done
+ @for dir in $(SUBDIRS); do ${MAKE} --no-print-directory -C $$dir COPT="$(COPT)"; done
a8eol: a8eol.c
@@ -174,9 +191,24 @@ manpages: $(MANS) $(MAN5S) $(MAN7S)
%.5: %.rst manhdr5.rst manftr.rst
$(RST2MAN) $< > $@
+amsb.7: amsb.rst manhdr7.rst manftr.rst amsb_content.rst
+
+ossintbas.7: ossintbas.rst manhdr7.rst manftr.rst ossintbas_content.rst
+
%.7: %.rst manhdr7.rst manftr.rst
$(RST2MAN) $< > $@
+fonts/fauxtari-8.bdf: fonts/mkpsf.pl
+ ( cd fonts && perl mkpsf.pl )
+
+$(TTF): fonts/fauxtari-8.bdf
+ bitmapfont2ttf --family-name "Fauxtari Scalable Mono" fonts/fauxtari-8.bdf $(TTF)
+
+# 40-column version of amsb.7, as plain text, for use an an Atari BBS.
+amsb40.txt: amsb_content.rst amsb40.rst
+ rst2man amsb40.rst > amsb40.7
+ LANG=C MANWIDTH=40 man --nj ./amsb40.7 > amsb40.txt
+
# "make clean" does NOT remove the .bin or _bin.[ch] files. This is
# for people who don't have either dasm or atasm installed.
# also, it doesn't remove the man pages. these are checked into git, even.
@@ -227,3 +259,21 @@ install-subdirs: subdirs
for dir in $(SUBDIRS); do \
make -C $$dir DESTDIR=$(DESTDIR) PREFIX=$(PREFIX) BINDIR=$(BINDIR) MAN1DIR=$(MAN1DIR) GZIP_MAN=$(GZIP_MAN) DOCDIR=$(DOCDIR) install; \
done
+
+install-fonts: all
+ sh install-fonts.sh "$(DESTDIR)" "$(BDFDIR)" "$(TTFDIR)"
+
+user-font: user-fonts
+
+user-fonts:
+ $(MAKE) install-fonts BDFDIR=$(HOME)/.fonts TTFDIR=$(HOME)/.fonts
+
+user-symlinks: all
+ SRC=$$( pwd ) ; \
+ mkdir -p ~/bin ; \
+ cd ~/bin && \
+ for i in $(BINS) $(SCRIPTS) \
+ ksiders/atrdir ksiders/atrextr ksiders/makeatr ksiders/sortatr ksiders/unmakatr \
+ jindroush/chkrom/chkrom jindroush/chkbas/chkbas jindroush/bas2boot/bas2boot \
+ jindroush/chkexe/chkexe jindroush/adir/adir jindroush/acvt/acvt jindroush/aext/aext \
+ ; do rm -f $$i; ln -sf $$SRC/$$i . ; done
diff --git a/README.txt b/README.txt
index 99d40b3..edbac3c 100644
--- a/README.txt
+++ b/README.txt
@@ -5,11 +5,15 @@ systems, including Cygwin for MS-Windows.
a8cat - Convert Atari 8-bit text to/from UTF-8 encoded Unicode or plain
text.
+a8diff - Show differences between two Atari ATASCII text files.
+
a8eol - Convert Atari 8-bit text files to/from UNIX / DOS / Mac Classic
text file format.
a8xd - ATASCII and Unicode aware hex dump.
+abas2html - Convert tokenized Atari BASIC to lovely HTML, using aha.
+
atr2xfd - Convert an Atari 8-bit ATR disk image to a raw (XFD) image.
atrcheck - Check an Atari 8-bit ATR disk image for various types of problems.
@@ -20,6 +24,8 @@ atrsize - Change the size of an Atari 8-bit ATR disk image, or create
axe - ATR/XFD Editor. Copy files into & out of ATR and XFD images,
create blank ATR images, etc.
+bas2aplus - Convert Atari BASIC (and some BASIC XL/XE) programs to BASIC/A+.
+
blob2c - Create C source and header files from a binary file.
blob2xex - Create a XEX file from arbitrary data.
@@ -33,10 +39,14 @@ cxrefbas - Code cross-reference for tokenized Atari 8-bit BASIC files.
dasm2atasm - Convert 6502 assembly in DASM syntax to ATASM (or MAC/65) format.
+diffbas - Show differences between two tokenized Atari 8-bit BASIC files.
+
dumpbas - Formatted hexdump for tokenized Atari 8-bit BASIC files.
fenders - Install Fenders 3-sector loader in boot sectors of an ATR image.
+listamsb - Detokenize (LIST) Atari Microsoft BASIC programs.
+
listbas - Detokenize (LIST) Atari 8-bit BASIC programs.
protbas - LIST-protect Atari 8-bit BASIC programs.
@@ -52,6 +62,9 @@ vxrefbas - Variable cross-reference for tokenized Atari 8-bit BASIC files.
unprotbas - Unprotect LIST-protected BASIC programs.
+whichbas - Examine a BASIC program, decide whether it's Atari BASIC,
+ Turbo BASIC, BASIC XL, BASIC XE, or Atari Microsoft BASIC.
+
xex1to2 - Convert an Atari DOS 1.0 executable into a standard XEX file.
xexamine - Show information on XEX files.
@@ -63,19 +76,25 @@ xexsplit - Split a multi-segment Atari 8-bit executable (XEX) into
xfd2atr - Convert an Atari 8-bit XFD (raw) disk image to an ATR image.
-All are written in C, except dasm2atasm which is written in Perl. All
-utilities have man pages.
+All are written in C, except dasm2atasm which is written in Perl and
+diffbas which is a shell script. All utilities have man pages.
+
+Also included:
+
+- "equates.inc", a 6502 assembly header file that defines the Atari 8-bit
+ system equates. It's meant to be used with either the DASM or ATASM 6502
+ cross assemblers.
-Also included is "equates.inc", a 6502 assembly header file that defines
-the Atari 8-bit system equates. It's meant to be used with either the
-DASM or ATASM 6502 cross assemblers.
+- Collections of utilities by Ken Siders and Jindrich Kubec. See the
+ README.txt files in the ksiders/ and jindroush/ directories for details.
-Also included: collections of utilities by Ken Siders and Jindrich
-Kubec. See the README.txt files in the ksiders/ and jindroush/
-directories for details.
+- X11 and Linux console fonts composed of glyphs taken from various versions
+ of the Atari XL/XE ROMs. The font family is "Fauxtari"; see fauxtari(7)
+ or fauxtari.rst for details.
To install, use the standard "make && make install" process. The default
-prefix for installation is /usr/local.
+prefix for installation is /usr/local. GNU make is required, so
+use "gmake" if you're on e.g. FreeBSD.
You may use "make install PREFIX=/somewhere/else" to install somewhere
other than /usr/local. Binaries will be installed to $PREFIX/bin, man
diff --git a/TODO b/TODO
index 848f39b..d76feb6 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,13 @@
for now:
+
+fauxtari:
+- Figure out why fauxtari doesn't show up in font-selections
+ dialogs in xfc4-terminal, gnome-terminal; also it doesn't
+ show up in "kitty +list-fonts" output.
+
+listbas:
+- A+/BXL/BXE indentation needs work (BXE seems OK).
+
These may need library (xex.c) changes:
xexcat: handle run/init addresses embedded in a segment longer than
2 bytes. Implemented in library, but not used by xexcat yet.
diff --git a/a8cat.1 b/a8cat.1
index c9d5d2b..58e5252 100644
--- a/a8cat.1
+++ b/a8cat.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "A8CAT" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "A8CAT" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
a8cat \- Convert Atari 8-bit text to UTF-8 encoded Unicode (and back).
.SH SYNOPSIS
@@ -143,28 +143,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/a8cat.c b/a8cat.c
index 76ec67a..92eae9f 100644
--- a/a8cat.c
+++ b/a8cat.c
@@ -6,20 +6,12 @@
#include <wchar.h>
#include <errno.h>
-#include "atables.h"
+#include "atascii.h"
#include "wtable.h"
-const char **table = ata2utf;
+int reverse = 0, verbose = 0;
-/* XXX: hard-coded ANSI/vt100 escape sequences. would be
- better but more complex to use terminfo to support any ol'
- terminal... */
-const char *inverse_on = "\x1b[7m";
-const char *inverse_off = "\x1b[0m";
-
-int verbose = 0;
-int underline = 0, reverse = 0, textmode = 0, ics = 0;
-int magazine = 0, stripinv = 0;
+atascii_ctx actx;
const char *self;
@@ -73,9 +65,9 @@ int handle_escape_seq(int inv, FILE *input, const char *file, int line) {
buf[count] = c; /* FIXME: might be a wide char! */
}
- if(strcmp(inverse_on, buf) == 0) {
+ if(strcmp(atascii_inverse_on, buf) == 0) {
return 0x80;
- } else if(strcmp(inverse_off, buf) == 0) {
+ } else if(strcmp(atascii_inverse_off, buf) == 0) {
return 0;
} else {
fprintf(stderr, "%s: warning: %s:%d: unrecognized ANSI escape sequence.\n", self, file, line);
@@ -108,7 +100,7 @@ int a8revcat(const char *file) {
} else if(c < 0x80) {
putchar(c | inv);
} else {
- d = wchar2atascii(c, ics);
+ d = wchar2atascii(c, actx.flags & ATA_FLAG_ICS);
if(d == -1) {
fprintf(stderr, "%s: warning: %s:%d: unrecognized Unicode character %04x.\n", self, file, line, c);
} else {
@@ -124,103 +116,24 @@ int a8revcat(const char *file) {
return 0;
}
-void inverse(int onoff) {
- fputs((onoff ? inverse_on : inverse_off ), stdout);
-}
-
int a8cat(const char *file) {
FILE *input;
- int c, inv = 0, line = 1;
+ int c;
+ char converted[20];
if( !(input = open_input(file)) )
return 1;
while( (c = fgetc(input)) != EOF ) {
- if(c == 0x9b) {
- putchar('\n');
- line++;
- continue;
- }
-
- if(stripinv) c &= 0x7f;
-
- if(textmode) {
- switch(c) {
- case 0x7f: /* tab */
- putchar('\t');
- continue;
- case 0xfd: /* bell */
- putchar('\a');
- continue;
- case 0x7e: /* backspace */
- putchar('\b');
- continue;
- default: break;
- }
- }
-
- if(!underline) {
- /* strings of inverse chars only get one "inverse on" ANSI
- sequence, and one "inverse off" afterwards. */
- if(c & 0x80) {
- if(!inv) {
- inv = 1;
- if(magazine)
- fputs("{inv}", stdout);
- else
- inverse(1);
- }
- } else {
- if(inv) {
- inv = 0;
- if(magazine)
- fputs("{norm}", stdout);
- else
- inverse(0);
- }
- }
- }
-
- if(magazine) {
- /* special cases: control codes with bit 7 set can't go
- in the table since it's only got 128 entries. */
- switch(c) {
- case 0x9c:
- fputs("{del-line}", stdout); continue;
- case 0x9d:
- fputs("{ins-line}", stdout); continue;
- case 0x9e:
- fputs("{clr-tab}", stdout); continue;
- case 0x9f:
- fputs("{set-tab}", stdout); continue;
- case 0xfd:
- fputs("{bell}", stdout); continue;
- case 0xfe:
- fputs("{del-char}", stdout); continue;
- case 0xff:
- fputs("{ins-char}", stdout); continue;
- }
- }
-
- fputs(table[c & 0x7f], stdout);
-
- if(underline && (c & 0x80)) {
- putchar('\b');
- putchar('_');
- }
+ fputs(atascii_a2utf(&actx, c, converted), stdout);
}
/* gotta turn off inverse, so if there's another file after this one,
it doesn't start out being printed in inverse. */
- if(inv && !underline) {
- if(magazine)
- fputs("{norm}", stdout);
- else
- inverse(0);
- }
+ fputs(atascii_a2utf(&actx, ATA_CHR_FINISH, converted), stdout);
if(verbose)
- fprintf(stderr, "%s: %s: converted %d lines, closing file.\n", self, file, line - 1);
+ fprintf(stderr, "%s: %s: converted %d lines, closing file.\n", self, file, actx.lines - 1);
fclose(input);
return 0;
@@ -228,6 +141,7 @@ int a8cat(const char *file) {
int main(int argc, char **argv) {
int opt, result = 0;
+ int mode = ATA_MODE_UTF8, flags = 0;
set_self(argv[0]);
@@ -243,36 +157,42 @@ int main(int argc, char **argv) {
while( (opt = getopt(argc, argv, "ihurtmsv")) != -1) {
switch(opt) {
- case 'i': table = ics2utf; ics = 1; break;
+ case 'i': flags |= ATA_FLAG_ICS; break;
case 'h': print_help(); exit(0); break;
- case 'u': underline = 1; break;
+ case 'u': flags |= ATA_FLAG_UNDERLINE; break;
case 'r': reverse = 1; break;
- case 't': textmode = 1; break;
- case 'm': table = ata2mag; magazine = 1; break;
- case 's': stripinv = 1; break;
+ case 't': flags |= ATA_FLAG_TEXTMODE; break;
+ case 'm': mode = ATA_MODE_MAGAZINE; break;
+ case 's': flags |= ATA_FLAG_STRIP_INVERSE; break;
case 'v': verbose = 1; break;
default: print_help(); exit(1); break;
}
}
+ atascii_context_init(&actx, mode, flags);
+
if(reverse) {
if(isatty(fileno(stdout)))
die("Refusing to write ATASCII to a terminal.");
+ /*
if(underline || textmode || stripinv || magazine) {
die("-t, -u, -m, -s options don't make sense with -r.\n");
}
+ */
/* the language_country part of the locale doesn't matter,
since we aren't doing localization. the encoding *has*
to be UTF-8. */
setlocale(LC_CTYPE, "en_US.UTF-8");
}
+ /*
if(magazine) {
if(ics || stripinv || underline) {
die("-i, -s, -u options don't make sense with -m.\n");
}
}
+ */
if(optind >= argc) {
result = (reverse ? a8revcat("-") : a8cat("-"));
diff --git a/a8diff b/a8diff
new file mode 100755
index 0000000..38d4460
--- /dev/null
+++ b/a8diff
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+usage() {
+ cat <<EOF
+Usage: $( basename $0 ) [diff-opts] [-- a8cat-opts] file1 file2
+
+Diff two Atari ATASCII files, using a8cat(1) and diff(1).
+
+[diff-opts] is passed through as-is to diff.
+[a8cat-opts] is passed through as-is to a8cat.
+EOF
+ exit "$1"
+}
+
+cleanup() {
+ if [ "$dir" != "" ]; then
+ cd
+ rm -rf "$dir"
+ fi
+}
+
+if [ "$1" = "-h" -o "$1" = "--help" -o "$1" = "" ]; then
+ usage 0
+fi
+
+for i in "$@"; do
+ if [ -f "$i" ]; then
+ if [ "$file1" = "" ]; then
+ file1="$( realpath $i )"
+ base1="$( basename $i )".txt
+ elif [ "$file2" = "" ]; then
+ file2="$( realpath $i )"
+ base2="$( basename $i )".txt
+ else
+ usage 1
+ fi
+ elif [ "$i" = "--" ]; then
+ opts="a8catopts"
+ elif [ "$opts" = "a8catopts" ]; then
+ a8catopts="$a8catopts $i"
+ else
+ diffopts="$diffopts $i"
+ fi
+done
+
+dir="$( mktemp -d -t diffbas.XXXXXXXXXX )"
+[ -d "$dir" ]
+cd "$dir"
+trap cleanup EXIT
+set -e
+
+a8cat $a8catopts "$file1" > $base1
+a8cat $a8catopts "$file2" > $base2
+diff $diffopts $base1 $base2
+
+exit 0
diff --git a/a8diff.1 b/a8diff.1
new file mode 100644
index 0000000..fc4f378
--- /dev/null
+++ b/a8diff.1
@@ -0,0 +1,118 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "A8DIFF" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
+.SH NAME
+a8diff \- Show differences between two Atari 8-bit ATASCII text files
+.SH SYNOPSIS
+.sp
+a8diff [\fIdiff\-options\fP] [\fB\-\-\fP \fIa8cat\-options\fP] \fIfile1\fP \fIfile2\fP
+.SH DESCRIPTION
+.sp
+\fBa8diff\fP shows the differences between two ATASCII text files,
+using \fBa8cat\fP(1) and \fBdiff\fP(1).
+.SH OPTIONS
+.sp
+\fBa8diff\fP takes no options of its own. It will pass options as\-is
+to both \fBa8cat\fP and \fBdiff\fP\&. Use \fB\-\-\fP to separate them: everything
+before \fB\-\-\fP is passed to \fBdiff\fP, and everything between \fB\-\-\fP and
+the first filename is passed to \fBa8cat\fP\&.
+.SH EXAMPLE
+.sp
+A.LST and B.LST were both created by the \fBLIST\fP command in BASIC.
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+$ a8diff \-u A.LST B.LST
+
+\-\-\- A.LST.txt 2024\-07\-12 23:56:46.937965855 \-0400
++++ B.LST.txt 2024\-07\-12 23:56:46.938965854 \-0400
+@@ \-1,3 +1,4 @@
+ 10 ? "THIS LINE IS IN BOTH PROGRAMS."
+ 20 ? "THIS LINE IS ALSO IN BOTH."
++25 ? "THIS LINE ONLY IN B.LST!"
+ 30 END
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH EXIT STATUS
+.sp
+0 for success. On failure, the exit status is that of whichever command
+failed (\fBa8diff\fP or \fBdiff\fP).
+.SH COPYRIGHT
+.sp
+WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
+.SH AUTHOR
+.INDENT 0.0
+.IP B. 3
+Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fBa8cat\fP(1),
+\fBa8eol\fP(1),
+\fBa8xd\fP(1),
+\fBatr2xfd\fP(1),
+\fBatrsize\fP(1),
+\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
+\fBblob2c\fP(1),
+\fBblob2xex\fP(1),
+\fBcart2xex\fP(1),
+\fBcxrefbas\fP(1),
+\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
+\fBdumpbas\fP(1),
+\fBf2toxex\fP(1),
+\fBfenders\fP(1),
+\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
+\fBprotbas\fP(1),
+\fBrenumbas\fP(1),
+\fBrom2cart\fP(1),
+\fBunmac65\fP(1),
+\fBunprotbas\fP(1),
+\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
+\fBxex1to2\fP(1),
+\fBxexamine\fP(1),
+\fBxexcat\fP(1),
+\fBxexsplit\fP(1),
+\fBxfd2atr\fP(1),
+\fBxex\fP(5),
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
+.sp
+Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
+Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
+.\" Generated by docutils manpage writer.
+.
diff --git a/a8diff.rst b/a8diff.rst
new file mode 100644
index 0000000..4273642
--- /dev/null
+++ b/a8diff.rst
@@ -0,0 +1,50 @@
+======
+a8diff
+======
+
+-----------------------------------------------------------
+Show differences between two Atari 8-bit ATASCII text files
+-----------------------------------------------------------
+
+.. include:: manhdr.rst
+
+SYNOPSIS
+========
+
+a8diff [*diff-options*] [**--** *a8cat-options*] *file1* *file2*
+
+DESCRIPTION
+===========
+**a8diff** shows the differences between two ATASCII text files,
+using **a8cat**\(1) and **diff**\(1).
+
+OPTIONS
+=======
+**a8diff** takes no options of its own. It will pass options as-is
+to both **a8cat** and **diff**. Use **--** to separate them: everything
+before **--** is passed to **diff**, and everything between **--** and
+the first filename is passed to **a8cat**.
+
+EXAMPLE
+=======
+
+A.LST and B.LST were both created by the **LIST** command in BASIC.
+
+::
+
+ $ a8diff -u A.LST B.LST
+
+ --- A.LST.txt 2024-07-12 23:56:46.937965855 -0400
+ +++ B.LST.txt 2024-07-12 23:56:46.938965854 -0400
+ @@ -1,3 +1,4 @@
+ 10 ? "THIS LINE IS IN BOTH PROGRAMS."
+ 20 ? "THIS LINE IS ALSO IN BOTH."
+ +25 ? "THIS LINE ONLY IN B.LST!"
+ 30 END
+
+EXIT STATUS
+===========
+0 for success. On failure, the exit status is that of whichever command
+failed (**a8diff** or **diff**).
+
+.. include:: manftr.rst
diff --git a/a8eol.1 b/a8eol.1
index 31648ce..78f2f2d 100644
--- a/a8eol.1
+++ b/a8eol.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "A8EOL" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "A8EOL" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
a8eol \- convert Atari 8-bit text files to/from UNIX/Windows/Mac
.\" RST source for a8eol(1) man page. Convert with:
@@ -467,28 +467,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/a8xd.1 b/a8xd.1
index 1bfde97..3f0b53e 100644
--- a/a8xd.1
+++ b/a8xd.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "A8XD" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "A8XD" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
a8xd \- Atari 8-bit ATASCII-aware hex dump
.SH SYNOPSIS
@@ -238,28 +238,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/abas2html b/abas2html
new file mode 100755
index 0000000..6da890f
--- /dev/null
+++ b/abas2html
@@ -0,0 +1,109 @@
+#!/bin/sh
+
+# this is supposed to be POSIX sh compliant. their getopts docs:
+# https://pubs.opengroup.org/onlinepubs/9699919799/utilities/getopts.html
+
+SELF="$( echo $0 | sed 's,.*/,,' )"
+
+die() {
+ echo "$SELF: $1" >& 2
+ exit 1
+}
+
+checkbin() {
+ if ! which "$1" >/dev/null 2>/dev/null; then
+ die "$1 not found on PATH, can't continue"
+ fi
+}
+
+print_help() {
+ cat <<EOF
+$SELF: convert tokenized Atari BASIC to HTML
+B. Watson <urchlay@slackware.uk>, WTFPL
+Usage: $SELF -a<aha-options> -b<basver> -m input.bas <output.html>
+ -a next option is passed to aha(1). may be used multiple times.
+ -b set BASIC dialect. default is autodetection. valid dialects:
+ -ba Atari 8K BASIC
+ -ba+ OSS BASIC/A+
+ -bm Atari Microsoft BASIC
+ -bt Turbo BASIC XL
+ -bxl OSS BASIC XL
+ -bxe OSS BASIC XE
+ -bic OSS Integer BASIC (cartridge version)
+ -bid OSS Integer BASIC (disk version)
+ -m monochrome: disable color syntax highlighting.
+if output filename is missing, it defaults to the input filename, with
+the extension changed to .html (e.g. FOO.BAS => FOO.html).
+EOF
+ exit $1
+}
+
+# main()
+if [ "$*" = "--help" ]; then
+ print_help 0
+fi
+
+while getopts ":hb:a:mMn" opt; do
+ case "$opt" in
+ b) BASVER="$OPTARG" ;;
+ a) AHA_OPTS="$AHA_OPTS $OPTARG" ;;
+ m|M|n) MONO="1" ;;
+ h) print_help 0 ;;
+ *) die "invalid option -$OPTARG" ;;
+ esac
+done
+
+shift $(($OPTIND - 1))
+
+if [ -z "$1" ]; then
+ die "no input file given (try -h)"
+else
+ infile="$1"
+fi
+
+if [ -n "$2" ]; then
+ outfile="$2"
+else
+ outfile="$( echo "$infile" | sed 's,\.[^.]*$,.html,' )"
+ if [ "$infile" = "$outfile" ]; then
+ outfile="$infile".html
+ fi
+fi
+
+if [ "$BASVER" = "" ]; then
+ checkbin whichbas
+ whichbas -s "$infile"
+ case "$?" in
+ 3) BASVER="a" ;;
+ 4|7|8|9) BASVER="t" ;;
+ 5) BASVER="xl" ;;
+ 6|12) BASVER="xe" ;;
+ 11) BASVER="m" ;;
+ 14) BASVER="a+" ;;
+ 15) BASVER="ic" ;;
+ 16) BASVER="id" ;;
+ *) die "can't detect BASIC dialect; use -b<xx> option" ;;
+ esac
+fi
+
+case "$BASVER" in
+ m) LISTER=listamsb ; BASVER="" ;;
+ a|t|xl|xe|a+|id|ic) LISTER=listbas ; BASVER="-b$BASVER" ;;
+ *) die "$BASVER not a valid BASIC dialect" ;;
+esac
+
+checkbin $LISTER
+checkbin aha
+if [ "$LISTER" = "listamsb" ]; then
+ if [ "$MONO" = "1" ]; then
+ MONO_OPT="-M"
+ else
+ checkbin "${COLORIZE_AMSB:-colorize-amsb}"
+ fi
+else
+ if [ "$MONO" = "1" ]; then
+ MONO_OPT="-n"
+ fi
+fi
+
+exec $LISTER $BASVER $MONO_OPT "$infile" | aha -t "$infile" $AHA_OPTS > "$outfile"
diff --git a/abas2html.1 b/abas2html.1
new file mode 100644
index 0000000..03d48c5
--- /dev/null
+++ b/abas2html.1
@@ -0,0 +1,172 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "ABAS2HTML" 1 "2025-04-01" "0.2.2" "Urchlay's Atari 8-bit Tools"
+.SH NAME
+abas2html \- Create HTML from tokenized Atari BASIC
+.SH SYNOPSIS
+.sp
+\fBabas2html\fP [\fB\-h\fP] [\fB\-a\fP \fIaha\-opts\fP] [\fB\-b\fP \fIdialect\fP] [\fB\-m\fP] \fIinput\-file\fP [\fIoutput\-file\fP]
+.SH DESCRIPTION
+.sp
+\fBabas2html\fP is a shell script wrapper for \fBlistbas\fP(1),
+\fBlistamsb\fP(1), and \fBaha\fP(1). It creates an HTML file of the
+program listing, with color syntax highlighting by default. ATASCII
+characters are converted to Unicode equivalents, and inverse video is
+displayed correctly.
+.sp
+\fIinput\-file\fP must be a tokenized BASIC program, either Atari 8K BASIC,
+OSS BASIC/A+, Atari Microsoft BASIC, Turbo BASIC XL, OSS BASIC XL, or
+OSS BASIC XE. You can specify the BASIC dialect (see \fB\-b\fP, below) or
+let it be autodetected (via \fBwhichbas\fP(1)).
+.sp
+\fIoutput\-file\fP will be an HTML file, created by \fBaha\fP(1). If
+no output filename is given, it will be costructed by changing the
+filename extension to \fI\&.html\fP, or (if there is no extension) by adding
+\fI\&.html\fP to the input filename.
+.sp
+\fBaha\fP can be installed from \fI\%https://github.com/theZiz/aha\fP or from
+your distribution\(aqs package repository (e.g. \fBsbopkg \-i aha\fP on Slackware,
+\fBapt install aha\fP on Debian or Ubuntu).
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \-a
+Next option is passed to \fBaha\fP(1). May be used multiple times.
+Examples:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+abas2html \-a \-b \-a \-n FOO.BAS # black background, no header
+abas2html \-a"\-b \-n" FOO.BAS # same thing, quotes required
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \-b
+Set BASIC dialect. Default is autodetection. Valid dialects:
+.sp
+\fB\-ba\fP Atari 8K BASIC
+.sp
+\fB\-ba+\fP OSS BASIC/A+
+.sp
+\fB\-bm\fP Atari Microsoft BASIC
+.sp
+\fB\-bt\fP Turbo BASIC XL
+.sp
+\fB\-bxl\fP OSS BASIC XL
+.sp
+\fB\-bxe\fP OSS BASIC XE
+.sp
+\fB\-bic\fP OSS Integer BASIC (cartridge version)
+.sp
+\fB\-bid\fP OSS Integer BASIC (disk version)
+.TP
+.B \-m
+Monochrome: disable color syntax highlighting.
+.UNINDENT
+.SH ENVIRONMENT
+.INDENT 0.0
+.TP
+.B \fBPATH\fP
+The various programs executed are searched for in \fBPATH\fP\&. If you don\(aqt
+have the utilities installed system\-wide, you can use something like:
+.INDENT 7.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+PATH=.:$PATH ./abas2html <...>
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.TP
+.B \fBLISTBAS_OPTS\fP
+See \fBlistbas\fP(1) for usage. Note that Atari Microsoft BASIC programs
+are listed with \fBlistamsb\fP, which is not affected by this environment
+variable.
+.TP
+.B \fBCOLORIZE_AMSB\fP
+Used by \fBlistamsb\fP(1) when listing Atari Microsoft BASIC programs.
+.UNINDENT
+.SH EXIT STATUS
+.sp
+0 for success, non\-zero for failure.
+.SH COPYRIGHT
+.sp
+WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
+.SH AUTHOR
+.INDENT 0.0
+.IP B. 3
+Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fBa8cat\fP(1),
+\fBa8eol\fP(1),
+\fBa8xd\fP(1),
+\fBatr2xfd\fP(1),
+\fBatrsize\fP(1),
+\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
+\fBblob2c\fP(1),
+\fBblob2xex\fP(1),
+\fBcart2xex\fP(1),
+\fBcxrefbas\fP(1),
+\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
+\fBdumpbas\fP(1),
+\fBf2toxex\fP(1),
+\fBfenders\fP(1),
+\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
+\fBprotbas\fP(1),
+\fBrenumbas\fP(1),
+\fBrom2cart\fP(1),
+\fBunmac65\fP(1),
+\fBunprotbas\fP(1),
+\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
+\fBxex1to2\fP(1),
+\fBxexamine\fP(1),
+\fBxexcat\fP(1),
+\fBxexsplit\fP(1),
+\fBxfd2atr\fP(1),
+\fBxex\fP(5),
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
+.sp
+Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
+Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
+.\" Generated by docutils manpage writer.
+.
diff --git a/abas2html.rst b/abas2html.rst
new file mode 100644
index 0000000..73e803e
--- /dev/null
+++ b/abas2html.rst
@@ -0,0 +1,90 @@
+=========
+abas2html
+=========
+
+--------------------------------------
+Create HTML from tokenized Atari BASIC
+--------------------------------------
+
+.. include:: manhdr.rst
+
+SYNOPSIS
+========
+
+**abas2html** [**-h**] [**-a** *aha-opts*] [**-b** *dialect*] [**-m**] *input-file* [*output-file*]
+
+DESCRIPTION
+===========
+
+**abas2html** is a shell script wrapper for **listbas**\(1),
+**listamsb**\(1), and **aha**\(1). It creates an HTML file of the
+program listing, with color syntax highlighting by default. ATASCII
+characters are converted to Unicode equivalents, and inverse video is
+displayed correctly.
+
+*input-file* must be a tokenized BASIC program, either Atari 8K BASIC,
+OSS BASIC/A+, Atari Microsoft BASIC, Turbo BASIC XL, OSS BASIC XL, or
+OSS BASIC XE. You can specify the BASIC dialect (see **-b**, below) or
+let it be autodetected (via **whichbas**\(1)).
+
+*output-file* will be an HTML file, created by **aha**\(1). If
+no output filename is given, it will be costructed by changing the
+filename extension to *.html*, or (if there is no extension) by adding
+*.html* to the input filename.
+
+**aha** can be installed from https://github.com/theZiz/aha or from
+your distribution's package repository (e.g. **sbopkg -i aha** on Slackware,
+**apt install aha** on Debian or Ubuntu).
+
+OPTIONS
+=======
+
+-a Next option is passed to **aha**\(1). May be used multiple times.
+ Examples::
+
+ abas2html -a -b -a -n FOO.BAS # black background, no header
+ abas2html -a"-b -n" FOO.BAS # same thing, quotes required
+
+-b Set BASIC dialect. Default is autodetection. Valid dialects:
+
+ **-ba** Atari 8K BASIC
+
+ **-ba+** OSS BASIC/A+
+
+ **-bm** Atari Microsoft BASIC
+
+ **-bt** Turbo BASIC XL
+
+ **-bxl** OSS BASIC XL
+
+ **-bxe** OSS BASIC XE
+
+ **-bic** OSS Integer BASIC (cartridge version)
+
+ **-bid** OSS Integer BASIC (disk version)
+
+-m Monochrome: disable color syntax highlighting.
+
+ENVIRONMENT
+===========
+
+**PATH**
+ The various programs executed are searched for in **PATH**. If you don't
+ have the utilities installed system-wide, you can use something like::
+
+ PATH=.:$PATH ./abas2html <...>
+
+**LISTBAS_OPTS**
+ See **listbas**\(1) for usage. Note that Atari Microsoft BASIC programs
+ are listed with **listamsb**, which is not affected by this environment
+ variable.
+
+**COLORIZE_AMSB**
+ Used by **listamsb**\(1) when listing Atari Microsoft BASIC programs.
+
+EXIT STATUS
+===========
+
+0 for success, non-zero for failure.
+
+.. include:: manftr.rst
diff --git a/amsb.7 b/amsb.7
new file mode 100644
index 0000000..864b72d
--- /dev/null
+++ b/amsb.7
@@ -0,0 +1,600 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "AMSB" 7 "2025-03-13" "0.2.2" "Urchlay's Atari 8-bit Tools"
+.SH NAME
+amsb \- Atari Microsoft BASIC Notes
+.SH DESCRIPTION
+.sp
+Atari Microsoft BASIC is actually a pretty cool BASIC for the Atari 8\-bit. I never
+got the chance to use it \(aqback in the day\(aq because it was expensive,
+required a floppy drive and at least 32K of RAM (my poor 400 had a
+tape drive for the first few years), and then later on, there was
+Turbo BASIC XL, which was cooler than AMSB, and also freeware.
+.sp
+This file is a collection of notes I made to myself while developing
+listamsb. The information here might be useful (e.g. if you\(aqre trying
+to repair a damaged AMSB file) and hopefully is interesting. Enjoy!
+.sp
+This file is part of the bw\-atari8\-utils source. You can get the
+latest version of the source from:
+.sp
+\fI\%https://slackware.uk/~urchlay/repos/bw\-atari8\-tools\fP
+.sp
+\&...which you can either view with a web browser or use with the \(aqgit
+clone\(aq command.
+.SH NOTES
+.SS Tokenized file format
+.sp
+File begins with a 3\-byte header:
+.TS
+center;
+|l|l|.
+_
+T{
+Offset
+T} T{
+Purpose
+T}
+_
+T{
+0
+T} T{
+0 for a normal program, 1 for LOCKed (encrypted)
+T}
+_
+T{
+1
+T} T{
+LSB, program length, not counting the 3\-byte header
+T}
+_
+T{
+2
+T} T{
+MSB, program length
+T}
+_
+.TE
+.sp
+The program length should always be the actual file size minus 3. If
+it\(aqs not, the file has either been truncated or had junk added to the
+end. In a LOCKed program, the program length bytes are not encrypted.
+.sp
+After the header, the lines of code (encrypted, for LOCKed programs).
+Each line has a 4\-byte header:
+.TS
+center;
+|l|l|.
+_
+T{
+0
+T} T{
+LSB, address of the last byte of this line...
+T}
+_
+T{
+1
+T} T{
+MSB, address ...which is ignored on LOAD!
+T}
+_
+T{
+2
+T} T{
+LSB, line number
+T}
+_
+T{
+3
+T} T{
+MSB, line number
+T}
+_
+.TE
+.sp
+The rest of the line is the tokens, terminated by a $00 byte. The
+next 2 bytes after the $00 is the last\-byte offset of the next line.
+.sp
+The last "line" of the program has a $0000 offset, which indicates the
+end of the program. Since the actual last line ends with a $00, that
+means there will be three $00 bytes in a row as the last 3 bytes of
+the file. And that\(aqs the \fIonly\fP place 3 $00\(aqs in a row will occur.
+.sp
+Tokenization is "lightweight": there are no tokenized numerics,
+they\(aqre just stored as ASCII characters, as typed. There\(aqs no "string
+constant follows" token like there is in Atari BASIC (well, there is,
+it\(aqs just a double\-quote, $22. There\(aqs no length byte). Variable names
+are not tokenized, either, they\(aqre just stored as\-is (name in ASCII,
+including trailing $ for strings, etc). Numeric constants are just
+stored as ASCII digits, just as you typed them.
+.sp
+In fact the only things that are tokenized are BASIC keywords:
+commands and functions... NOT including user functions defined
+with DEF (those are stored as just the ASCII function name, like
+variables).
+.sp
+There are 2 sets of tokens. One set is single\-byte, $80 and up.
+These are commands. The other set is functions, which are 2 bytes:
+$FF followed by the token number. See amsbtok.h in the source for the
+actual tokens.
+.sp
+AMSB saves the end\-of\-line pointers, but it totally ignores them
+on LOAD. The SAVEd file format does \fInot\fP have a load address (as e.g.
+Commodore BASIC does), so there\(aqs no way to know the address of the
+start of the program (other than counting backwards from the next line,
+since its address is known). It\(aqs not just a constant either: it
+depends on what MEMLO was set to when the program was saved (which varies
+depending on what version of AMSB you have, what DOS you boot, whether
+or not you have the R: device driver loaded, etc etc).
+.SS Redundant Tokens
+.sp
+There are two separate tokens each for PRINT and AT:
+.TS
+center;
+|l|l|.
+_
+T{
+$ab
+T} T{
+PRINT
+T}
+_
+T{
+$ac
+T} T{
+PRINT
+T}
+_
+T{
+$df
+T} T{
+AT(
+T}
+_
+T{
+$e0
+T} T{
+AT
+T}
+_
+.TE
+.sp
+When tokenizing a line, AMSB will actually use the $ab token if
+there\(aqs a space after PRINT (or ?), otherwise it will use the
+$ac token. These lines actually get tokenized differently:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+10 PRINT "HELLO"
+10 PRINT"HELLO"
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Same applies to the $df and $e0 AT tokens: if the user entered
+"AT(X,Y)", $df is used. Otherwise, with "AT (X,Y)", $e0 is used
+(followed by an ASCII left parenthesis).
+.sp
+3 tokens include the opening parenthesis:
+.TS
+center;
+|l|l|.
+_
+T{
+$d2
+T} T{
+TAB(
+T}
+_
+T{
+$d6
+T} T{
+SPC(
+T}
+_
+T{
+$df
+T} T{
+AT(
+T}
+_
+.TE
+.sp
+Normally in AMSB, it\(aqs OK to leave a space between a function name
+and the left\-paren. PEEK (123) and SIN (1) are both valid. However,
+for SPC and TAB, no space is allowed, because the ( is part of the
+token. AT would be the same way, except there\(aqs a separate token $e0
+that \fIincludes\fP the space. Weird, huh? A side effect of this is
+that "SPC (10)" or "TAB (10)" won\(aqt be treated as a function call.
+Instead, the SPC or TAB is treated as a variable name. If you write:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+PRINT TAB (10);"HELLO"
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\&...it\(aqll print " 0 HELLO" at the start of the line[*], instead of "HELLO"
+in the 10th column as you might have expected. It also means that AT,
+TAB, and SPC are valid variable names in AMSB, which is an exception
+to the rule that keywords can\(aqt be used as variable names (e.g. SIN=1
+or STRING$="HELLO" are invalid).
+.sp
+[*] Unless you\(aqve assigned another value to TAB, of couse.
+.SS Unused Tokens
+.sp
+If you look at the token list in amsbtok.h (or in a hex dump
+of the AMSB executable or cartridge image), you\(aqll see a lot of
+double\-quotes mixed in with the list. AMSB doesn\(aqt actually tokenize
+the " character (it\(aqs stored as $22, its ASCII value), so these seem
+to be placeholders, either because some tokens were deleted from the
+language during its development, or else they\(aqre intended for some
+future version of AMSB that never happened.
+.sp
+The weird quote tokens are $99, $c8 to $d0, $d5, and $e7 to $ed. If
+you hexedit a program to replace a regular double\-quote with one of
+these tokens, it will list as either "" or just one ", but it will
+cause a syntax error at runtime.
+.SS LOADing Untokenized Files
+.sp
+If the first byte of the file is anything other than $00 or $01,
+AMSB\(aqs LOAD command reads it in as a text file (LISTed rather than
+SAVEd).
+.sp
+When LOAD is reading a text file, if the last byte of the file isn\(aqt
+an ATASCII EOL ($9b), you\(aqll get #136 ERROR. The program doesn\(aqt get
+deleted, but the last line of the file didn\(aqt get loaded. This could
+happen if a LISTed file somehow got truncated.
+.sp
+While on the subject... the manual doesn\(aqt mention it, but if you LOAD
+a text file without line numbers, the code gets executed in direct
+mode during the load (like Atari BASIC\(aqs ENTER command does). This
+means you could write scripts (batch files) for AMSB... though you\(aqd
+be better off using MERGE, rather than LOAD (MERGE is basically the
+same thing as Atari BASIC\(aqs ENTER).
+.SS Program Length Header Mismatch
+.sp
+When AMSB\(aqs LOAD command executes, it reads the 3\-byte header, then
+reads as many bytes as the header\(aqs program length says.
+.sp
+If the header length is longer than the rest of the file, you get
+a #136 ERROR (aka Atari\(aqs EOF), and the partially loaded program is
+erased (basically it does a NEW).
+.sp
+If the length is shorter than the program, it\(aqll stop loading no
+matter how much more data is in the file. This means it can stop in
+the middle of a line. It also means, if there was already a program in
+memory that was longer than the program length, you get a "hybrid" mix
+of the new program followed by the remainder of the old one. This is
+because the three $00 bytes at the end of the program weren\(aqt read in.
+.sp
+If the program length is correct for the actual program (so the three
+$00 bytes get read), but there\(aqs extra data appended to the file, AMSB
+will never read the extra data at all.
+.SS String Limitations
+.sp
+String literals in AMSB cannot contain the | or ATASCII heart
+characters.
+.sp
+AMSB uses | as a terminator for quoted strings, e.g. "STRING" will
+be tokenized as: "STRING|
+.sp
+If you try to use a | in a quoted string, it gets turned into a double
+quote: "FOO|BAR" comes out as "FOO"BAR which is a syntax error!
+.sp
+String variables can store | but only with e.g. CHR$(124) or reading
+from a file: it\(aqs string \fIliterals\fP that don\(aqt allow it.
+.sp
+The reason | is used for a terminating quote is to allow doubling up
+the quotes to embed them in a string:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+A$ = "HAS ""QUOTES"""
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+PRINT A$ will print: HAS "QUOTES"
+.sp
+At first I thought "no pipe characters in strings, WTF man?" but it\(aqs
+probably no worse than Atari BASIC\(aqs "no quotes in strings constants"
+rule. It \fIwould\fP be nice if the AMSB manual actually documented the
+fact that | can\(aqt occur in a string constant. Not documenting it makes
+it a bug... and they have unused tokens in the $Fx range, I don\(aqt see
+why they had to use a printing character for this.
+.sp
+You also can\(aqt put a heart (ATASCII character 0) in a string
+literal. It will be treated as the end of the line, as though you
+pressed Enter (and anything else on the line is ignored). This isn\(aqt
+documented in the manual, either.
+.sp
+Like the | character, you can use CHR$(0) to store a heart in a string
+and it will work correctly.
+.SS Line Number Range
+.sp
+AMSB doesn\(aqt allow entering line numbers above 63999, but if a file
+is e.g. hex\-edited to have a line number that\(aqs out of range, it will
+LIST and RUN just fine... except that it\(aqs impossible to GOTO or GOSUB
+to an out\-of\-range line. It will still execute if program flow falls
+into it.
+.SS Differences Between Versions
+.sp
+The language is the same in AMSB versions 1 and 2. Tokenized files
+made by one version will LOAD and RUN in the other version.
+.sp
+Version 1, the disk version, always has the full set of commands
+avaiable. Version 2, the cart, only has the full set if the extension
+disk is booted. The missing ones still get tokenized, but you get SN
+ERROR at runtime if you try to execute them. This doesn\(aqt affect the
+detokenizer at all. The missing commands:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+AUTO
+DEF (string version only)
+NOTE
+RENUM
+TRON
+TROFF
+DEL
+USING
+STRING$ (function)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+RENUM only works in direct mode, not a program. Executing it
+gives a FUNCTION CALL ERROR.
+.sp
+AUTO is (oddly) allowed in a program. Executing it exits the program
+and puts you back in the editor, in auto\-numbering mode.
+.sp
+It would seem weird to have POINT available but not NOTE... except
+that AMSB doesn\(aqt even \fIhave\fP POINT. Instead, the disk addresses
+returned by NOTE are used with AT() in a PRINT statement. Not sure
+if AT() works without the extensions loaded, but it won\(aqt be useful
+anyway without NOTE.
+.sp
+One other difference between versions 1 and 2: version 2 will LOAD and
+RUN the file D:AUTORUN.AMB at startup, if it exists.
+.SS Colon Weirdness
+.sp
+AMSB allows comments to be started with the ! and \(aq characters (as
+well as the traditional REM). For the ! and \(aq variety, if they
+come at the end of a line after some code, you don\(aqt have to put a colon.
+Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+10 GRAPHICS 2+16 ! NO TEXT
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+However... in the tokenized format, there \fIis\fP a tokenized colon
+just before the tokenized ! or \(aq character. LIST doesn\(aqt display it.
+If you did put a colon:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+10 CLOSE #1:! WE\(aqRE DONE
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\&...then there will be \fItwo\fP colons in the tokenized file, and only
+one will be LISTed.
+.sp
+The ELSE keyword works the same way. In this line:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+10 IF A THEN PRINT ELSE STOP
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\&...there is actually a : character just before the token for ELSE.
+.sp
+Even weirder: you can put as many colons in a row as you like, and
+AMSB will treat it like single colon. This line of code is valid
+and runs correctly:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+10 PRINT "A"::::::PRINT "A"
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+These colons are displayed normally in LIST output.
+.SS Memory Usage
+.sp
+On a 48K/64K Atari, FRE(0) for AMSB 1 with DOS booted (since you can\(aqt
+use it without) but no device drivers is 21020. MEMLO is awfully high
+($6a00).
+.sp
+For AMSB 2 with DOS booted, but without the extensions loaded, FRE(0)
+is 24352. With extensions it\(aqs 20642 (even though the banner says 20644
+BYTES FREE).
+.sp
+AMSB 2 without DOS gives you 29980, but how are you gonna load or save
+programs without DOS? Nobody wants to use cassette, especially not
+people who could afford to buy the AMSB II cartridge.
+.SS LOCKed Programs
+.sp
+If you save a program with SAVE "filename" LOCK, it gets saved in an
+"encrypted" form. Loading a locked program disables the LISTing or
+editing the program (you get LK ERROR if you try).
+.sp
+The "encryption" is no better than ROT13. To encrypt, subtract each
+byte from 0x54 (in an 8\-bit register, using twos complement). To
+decrypt, do the same. This is a reciprocal cipher, and you can think
+of it as the binary equivalent of ROT13.
+.sp
+You can tell a LOCKed program because its first byte will be 1 instead
+of 0. The next 2 bytes (the program length) unencrypted. The rest of
+the file is encrypted with the lame scheme described above.
+.sp
+When AMSB has a LOCKed program loaded into memory, it\(aqs \fInot\fP stored
+encrypted in RAM. It would be perfectly possible to write BASIC code
+using direct mode to write the tokenized program out to disk. The
+program starts at MEMLO and extends up to the first occurrence of
+three $00 bytes. The hardest part of this would be generating the
+header using only direct\-mode BASIC statements (but it could be done).
+.sp
+However... there\(aqs no need to do that. AMSB has a flag that tells it
+whether or not the currently\-loaded program is LOCKed. You can just
+clear the flag:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+POKE 168,0
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Now AMSB won\(aqt consider the program LOCKed, and you can SAVE a regular
+copy of it (and LIST, edit, etc).
+.SS Line Length Limit
+.sp
+In the editor, after a POKE 82,0 (to set the left margin to 0), you
+can enter 120 characters (3 screen lines) on a logical line. If you
+enter a program line that way \fIwithout\fP a space after the line number,
+then LIST it, it will be 121 characters long, because AMSB will
+display a space after the line number.
+.sp
+If you use a text editor (or write a program) to create an untokenized
+BASIC program, you can have a line of code that\(aqs 125 characters
+long. AMSB will accept it just fine, with LOAD. If a line is 126
+characters or longer, AMSB will silently ignore that line when
+LOADing.
+.sp
+If you create a 125\-character line (with a text editor) consisting
+only of a comment that begins with ! or \(aq, without a space after the
+line number, LOAD it, then SAVE it, that line will be 129 bytes long
+in tokenized form. AMSB will LOAD it with no problems.
+.sp
+If you hex\-edit a SAVEd file to create a longer line, AMSB will
+accept that, too... up to 255 bytes. At 256 bytes, AMSB will lock
+up after LOAD.
+.SS Crunching
+.sp
+AMSB stores spaces in the tokenized program, just like other 8\-bit
+MS BASICs do, but it requires you to put spaces between keywords and
+variables (unlike e.g. Commodore 64 BASIC). This seems to be because
+AMSB allows keywords inside of variable names: you can have a variable
+called LIFE (which contains the keyword IF) in AMSB, but you can\(aqt in
+C=64 BASIC (which gives a syntax error becase it sees "L IF E").
+.sp
+This applies to numbers, too: POKE710,0 is a syntax error in
+AMSB. This is because POKE710 is actually a valid variable name: try
+POKE710=123 followed by PRINT POKE710.
+.sp
+However. The spaces aren\(aqt needed when the program is RUN. It would be
+possible to remove all the spaces outside of strings or comments and
+the program would still work fine.
+.SH COPYRIGHT
+.sp
+WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
+.SH AUTHOR
+.INDENT 0.0
+.IP B. 3
+Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fBa8cat\fP(1),
+\fBa8eol\fP(1),
+\fBa8xd\fP(1),
+\fBatr2xfd\fP(1),
+\fBatrsize\fP(1),
+\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
+\fBblob2c\fP(1),
+\fBblob2xex\fP(1),
+\fBcart2xex\fP(1),
+\fBcxrefbas\fP(1),
+\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
+\fBdumpbas\fP(1),
+\fBf2toxex\fP(1),
+\fBfenders\fP(1),
+\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
+\fBprotbas\fP(1),
+\fBrenumbas\fP(1),
+\fBrom2cart\fP(1),
+\fBunmac65\fP(1),
+\fBunprotbas\fP(1),
+\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
+\fBxex1to2\fP(1),
+\fBxexamine\fP(1),
+\fBxexcat\fP(1),
+\fBxexsplit\fP(1),
+\fBxfd2atr\fP(1),
+\fBxex\fP(5),
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
+.sp
+Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
+Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
+.\" Generated by docutils manpage writer.
+.
diff --git a/amsb.rst b/amsb.rst
new file mode 100644
index 0000000..19557ee
--- /dev/null
+++ b/amsb.rst
@@ -0,0 +1,13 @@
+====
+amsb
+====
+
+---------------------------
+Atari Microsoft BASIC Notes
+---------------------------
+
+.. include:: manhdr7.rst
+
+.. include:: amsb_content.rst
+
+.. include:: manftr.rst
diff --git a/amsb40.rst b/amsb40.rst
new file mode 100644
index 0000000..6998211
--- /dev/null
+++ b/amsb40.rst
@@ -0,0 +1,31 @@
+====
+amsb
+====
+
+--------------------
+Atari MS BASIC Notes
+--------------------
+
+.. include:: ver.rst
+.. |date| date::
+
+:Manual section: 7
+:Manual group: Urchlay
+:Date: |date|
+:Version: |version|
+
+.. include:: amsb_content.rst
+
+COPYRIGHT
+=========
+
+WTFPL. See http://www.wtfpl.net/txt/copying for details.
+
+AUTHOR
+======
+
+B. Watson
+
+Email: urchlay@slackware.uk
+
+IRC: Urchlay on irc.libera.chat *##atari*.
diff --git a/amsb40.txt b/amsb40.txt
new file mode 100644
index 0000000..5c6f537
--- /dev/null
+++ b/amsb40.txt
@@ -0,0 +1,668 @@
+AMSB(7) Urchlay AMSB(7)
+
+NAME
+ amsb - Atari MS BASIC Notes
+
+DESCRIPTION
+ Atari Microsoft BASIC is actu-
+ ally a pretty cool BASIC for
+ the Atari 8-bit. I never got
+ the chance to use it 'back in
+ the day' because it was expen-
+ sive, required a floppy drive
+ and at least 32K of RAM (my
+ poor 400 had a tape drive for
+ the first few years), and then
+ later on, there was Turbo BASIC
+ XL, which was cooler than AMSB,
+ and also freeware.
+
+ This file is a collection of
+ notes I made to myself while
+ developing listamsb. The infor-
+ mation here might be useful
+ (e.g. if you're trying to re-
+ pair a damaged AMSB file) and
+ hopefully is interesting. En-
+ joy!
+
+ This file is part of the
+ bw-atari8-utils source. You can
+ get the latest version of the
+ source from:
+
+ https://slackware.uk/~urchlay/repos/bw-atari8-tools
+
+ ...which you can either view
+ with a web browser or use with
+ the 'git clone' command.
+
+NOTES
+ Tokenized file format
+ File begins with a 3-byte
+ header:
+
+ +-------+---------------+
+ |Offset | Purpose |
+ +-------+---------------+
+ |0 | 0 for a nor- |
+ | | mal program, |
+ | | 1 for LOCKed |
+ | | (encrypted) |
+ +-------+---------------+
+ |1 | LSB, program |
+ | | length, not |
+ | | counting the |
+ | | 3-byte header |
+ +-------+---------------+
+ |2 | MSB, program |
+ | | length |
+ +-------+---------------+
+
+ The program length should al-
+ ways be the actual file size
+ minus 3. If it's not, the file
+ has either been truncated or
+ had junk added to the end. In a
+ LOCKed program, the program
+ length bytes are not encrypted.
+
+ After the header, the lines of
+ code (encrypted, for LOCKed
+ programs). Each line has a
+ 4-byte header:
+
+ +--+--------------+
+ |0 | LSB, address |
+ | | of the last |
+ | | byte of this |
+ | | line... |
+ +--+--------------+
+ |1 | MSB, address |
+ | | ...which is |
+ | | ignored on |
+ | | LOAD! |
+ +--+--------------+
+ |2 | LSB, line |
+ | | number |
+ +--+--------------+
+ |3 | MSB, line |
+ | | number |
+ +--+--------------+
+
+ The rest of the line is the to-
+ kens, terminated by a $00 byte.
+ The next 2 bytes after the $00
+ is the last-byte offset of the
+ next line.
+
+ The last "line" of the program
+ has a $0000 offset, which indi-
+ cates the end of the program.
+ Since the actual last line ends
+ with a $00, that means there
+ will be three $00 bytes in a
+ row as the last 3 bytes of the
+ file. And that's the only place
+ 3 $00's in a row will occur.
+
+ Tokenization is "lightweight":
+ there are no tokenized numer-
+ ics, they're just stored as
+ ASCII characters, as typed.
+ There's no "string constant
+ follows" token like there is in
+ Atari BASIC (well, there is,
+ it's just a double-quote, $22.
+ There's no length byte). Vari-
+ able names are not tokenized,
+ either, they're just stored
+ as-is (name in ASCII, including
+ trailing $ for strings, etc).
+ Numeric constants are just
+ stored as ASCII digits, just as
+ you typed them.
+
+ In fact the only things that
+ are tokenized are BASIC key-
+ words: commands and func-
+ tions... NOT including user
+ functions defined with DEF
+ (those are stored as just the
+ ASCII function name, like vari-
+ ables).
+
+ There are 2 sets of tokens. One
+ set is single-byte, $80 and up.
+ These are commands. The other
+ set is functions, which are 2
+ bytes: $FF followed by the to-
+ ken number. See amsbtok.h in
+ the source for the actual to-
+ kens.
+
+ AMSB saves the end-of-line
+ pointers, but it totally ig-
+ nores them on LOAD. The SAVEd
+ file format does not have a
+ load address (as e.g. Com-
+ modore BASIC does), so there's
+ no way to know the address of
+ the start of the program (other
+ than counting backwards from
+ the next line, since its ad-
+ dress is known). It's not just
+ a constant either: it depends
+ on what MEMLO was set to when
+ the program was saved (which
+ varies depending on what ver-
+ sion of AMSB you have, what DOS
+ you boot, whether or not you
+ have the R: device driver
+ loaded, etc etc).
+
+ Redundant Tokens
+ There are two separate tokens
+ each for PRINT and AT:
+
+ +----+-------+
+ |$ab | PRINT |
+ +----+-------+
+ |$ac | PRINT |
+ +----+-------+
+ |$df | AT( |
+ +----+-------+
+ |$e0 | AT |
+ +----+-------+
+
+ When tokenizing a line, AMSB
+ will actually use the $ab token
+ if there's a space after PRINT
+ (or ?), otherwise it will use
+ the $ac token. These lines ac-
+ tually get tokenized differ-
+ ently:
+
+ 10 PRINT "HELLO"
+ 10 PRINT"HELLO"
+
+ Same applies to the $df and $e0
+ AT tokens: if the user entered
+ "AT(X,Y)", $df is used. Other-
+ wise, with "AT (X,Y)", $e0 is
+ used (followed by an ASCII left
+ parenthesis).
+
+ 3 tokens include the opening
+ parenthesis:
+
+ +----+------+
+ |$d2 | TAB( |
+ +----+------+
+ |$d6 | SPC( |
+ +----+------+
+ |$df | AT( |
+ +----+------+
+
+ Normally in AMSB, it's OK to
+ leave a space between a func-
+ tion name and the left-paren.
+ PEEK (123) and SIN (1) are both
+ valid. However, for SPC and
+ TAB, no space is allowed, be-
+ cause the ( is part of the to-
+ ken. AT would be the same way,
+ except there's a separate token
+ $e0 that includes the space.
+ Weird, huh? A side effect of
+ this is that "SPC (10)" or "TAB
+ (10)" won't be treated as a
+ function call. Instead, the
+ SPC or TAB is treated as a
+ variable name. If you write:
+
+ PRINT TAB (10);"HELLO"
+
+ ...it'll print " 0 HELLO" at
+ the start of the line[*], in-
+ stead of "HELLO" in the 10th
+ column as you might have ex-
+ pected. It also means that AT,
+ TAB, and SPC are valid variable
+ names in AMSB, which is an ex-
+ ception to the rule that key-
+ words can't be used as variable
+ names (e.g. SIN=1 or
+ STRING$="HELLO" are invalid).
+
+ [*] Unless you've assigned an-
+ other value to TAB, of couse.
+
+ Unused Tokens
+ If you look at the token list
+ in amsbtok.h (or in a hex dump
+ of the AMSB executable or car-
+ tridge image), you'll see a lot
+ of double-quotes mixed in with
+ the list. AMSB doesn't actually
+ tokenize the " character (it's
+ stored as $22, its ASCII
+ value), so these seem to be
+ placeholders, either because
+ some tokens were deleted from
+ the language during its devel-
+ opment, or else they're in-
+ tended for some future version
+ of AMSB that never happened.
+
+ The weird quote tokens are $99,
+ $c8 to $d0, $d5, and $e7 to
+ $ed. If you hexedit a program
+ to replace a regular dou-
+ ble-quote with one of these to-
+ kens, it will list as either ""
+ or just one ", but it will
+ cause a syntax error at run-
+ time.
+
+ LOADing Untokenized Files
+ If the first byte of the file
+ is anything other than $00 or
+ $01, AMSB's LOAD command reads
+ it in as a text file (LISTed
+ rather than SAVEd).
+
+ When LOAD is reading a text
+ file, if the last byte of the
+ file isn't an ATASCII EOL
+ ($9b), you'll get #136 ERROR.
+ The program doesn't get
+ deleted, but the last line of
+ the file didn't get loaded.
+ This could happen if a LISTed
+ file somehow got truncated.
+
+ While on the subject... the
+ manual doesn't mention it, but
+ if you LOAD a text file without
+ line numbers, the code gets ex-
+ ecuted in direct mode during
+ the load (like Atari BASIC's
+ ENTER command does). This means
+ you could write scripts (batch
+ files) for AMSB... though you'd
+ be better off using MERGE,
+ rather than LOAD (MERGE is ba-
+ sically the same thing as Atari
+ BASIC's ENTER).
+
+ Program Length Header Mismatch
+ When AMSB's LOAD command exe-
+ cutes, it reads the 3-byte
+ header, then reads as many
+ bytes as the header's program
+ length says.
+
+ If the header length is longer
+ than the rest of the file, you
+ get a #136 ERROR (aka Atari's
+ EOF), and the partially loaded
+ program is erased (basically it
+ does a NEW).
+
+ If the length is shorter than
+ the program, it'll stop loading
+ no matter how much more data is
+ in the file. This means it can
+ stop in the middle of a line.
+ It also means, if there was al-
+ ready a program in memory that
+ was longer than the program
+ length, you get a "hybrid" mix
+ of the new program followed by
+ the remainder of the old one.
+ This is because the three $00
+ bytes at the end of the program
+ weren't read in.
+
+ If the program length is cor-
+ rect for the actual program (so
+ the three $00 bytes get read),
+ but there's extra data appended
+ to the file, AMSB will never
+ read the extra data at all.
+
+ String Limitations
+ String literals in AMSB cannot
+ contain the | or ATASCII heart
+ characters.
+
+ AMSB uses | as a terminator for
+ quoted strings, e.g. "STRING"
+ will be tokenized as: "STRING|
+
+ If you try to use a | in a
+ quoted string, it gets turned
+ into a double quote: "FOO|BAR"
+ comes out as "FOO"BAR which is
+ a syntax error!
+
+ String variables can store |
+ but only with e.g. CHR$(124) or
+ reading from a file: it's
+ string literals that don't al-
+ low it.
+
+ The reason | is used for a ter-
+ minating quote is to allow dou-
+ bling up the quotes to embed
+ them in a string:
+
+ A$ = "HAS ""QUOTES"""
+
+ PRINT A$ will print: HAS
+ "QUOTES"
+
+ At first I thought "no pipe
+ characters in strings, WTF
+ man?" but it's probably no
+ worse than Atari BASIC's "no
+ quotes in strings constants"
+ rule. It would be nice if the
+ AMSB manual actually documented
+ the fact that | can't occur in
+ a string constant. Not docu-
+ menting it makes it a bug...
+ and they have unused tokens in
+ the $Fx range, I don't see why
+ they had to use a printing
+ character for this.
+
+ You also can't put a heart
+ (ATASCII character 0) in a
+ string literal. It will be
+ treated as the end of the line,
+ as though you pressed Enter
+ (and anything else on the line
+ is ignored). This isn't docu-
+ mented in the manual, either.
+
+ Like the | character, you can
+ use CHR$(0) to store a heart in
+ a string and it will work cor-
+ rectly.
+
+ Line Number Range
+ AMSB doesn't allow entering
+ line numbers above 63999, but
+ if a file is e.g. hex-edited to
+ have a line number that's out
+ of range, it will LIST and RUN
+ just fine... except that it's
+ impossible to GOTO or GOSUB to
+ an out-of-range line. It will
+ still execute if program flow
+ falls into it.
+
+ Differences Between Versions
+ The language is the same in
+ AMSB versions 1 and 2. Tok-
+ enized files made by one ver-
+ sion will LOAD and RUN in the
+ other version.
+
+ Version 1, the disk version,
+ always has the full set of com-
+ mands avaiable. Version 2, the
+ cart, only has the full set if
+ the extension disk is booted.
+ The missing ones still get tok-
+ enized, but you get SN ERROR at
+ runtime if you try to execute
+ them. This doesn't affect the
+ detokenizer at all. The missing
+ commands:
+
+ AUTO
+ DEF (string version only)
+ NOTE
+ RENUM
+ TRON
+ TROFF
+ DEL
+ USING
+ STRING$ (function)
+
+ RENUM only works in direct
+ mode, not a program. Executing
+ it gives a FUNCTION CALL ERROR.
+
+ AUTO is (oddly) allowed in a
+ program. Executing it exits the
+ program and puts you back in
+ the editor, in auto-numbering
+ mode.
+
+ It would seem weird to have
+ POINT available but not NOTE...
+ except that AMSB doesn't even
+ have POINT. Instead, the disk
+ addresses returned by NOTE are
+ used with AT() in a PRINT
+ statement. Not sure if AT()
+ works without the extensions
+ loaded, but it won't be useful
+ anyway without NOTE.
+
+ One other difference between
+ versions 1 and 2: version 2
+ will LOAD and RUN the file
+ D:AUTORUN.AMB at startup, if it
+ exists.
+
+ Colon Weirdness
+ AMSB allows comments to be
+ started with the ! and ' char-
+ acters (as well as the tradi-
+ tional REM). For the ! and '
+ variety, if they come at the
+ end of a line after some code,
+ you don't have to put a colon.
+ Example:
+
+ 10 GRAPHICS 2+16 ! NO TEXT
+
+ However... in the tokenized
+ format, there is a tokenized
+ colon just before the tokenized
+ ! or ' character. LIST doesn't
+ display it. If you did put a
+ colon:
+
+ 10 CLOSE #1:! WE'RE DONE
+
+ ...then there will be two
+ colons in the tokenized file,
+ and only one will be LISTed.
+
+ The ELSE keyword works the same
+ way. In this line:
+
+ 10 IF A THEN PRINT ELSE STOP
+
+ ...there is actually a : char-
+ acter just before the token for
+ ELSE.
+
+ Even weirder: you can put as
+ many colons in a row as you
+ like, and AMSB will treat it
+ like single colon. This line of
+ code is valid and runs cor-
+ rectly:
+
+ 10 PRINT "A"::::::PRINT "A"
+
+ These colons are displayed nor-
+ mally in LIST output.
+
+ Memory Usage
+ On a 48K/64K Atari, FRE(0) for
+ AMSB 1 with DOS booted (since
+ you can't use it without) but
+ no device drivers is 21020.
+ MEMLO is awfully high ($6a00).
+
+ For AMSB 2 with DOS booted, but
+ without the extensions loaded,
+ FRE(0) is 24352. With exten-
+ sions it's 20642 (even though
+ the banner says 20644 BYTES
+ FREE).
+
+ AMSB 2 without DOS gives you
+ 29980, but how are you gonna
+ load or save programs without
+ DOS? Nobody wants to use cas-
+ sette, especially not people
+ who could afford to buy the
+ AMSB II cartridge.
+
+ LOCKed Programs
+ If you save a program with SAVE
+ "filename" LOCK, it gets saved
+ in an "encrypted" form. Loading
+ a locked program disables the
+ LISTing or editing the program
+ (you get LK ERROR if you try).
+
+ The "encryption" is no better
+ than ROT13. To encrypt, sub-
+ tract each byte from 0x54 (in
+ an 8-bit register, using twos
+ complement). To decrypt, do the
+ same. This is a reciprocal ci-
+ pher, and you can think of it
+ as the binary equivalent of
+ ROT13.
+
+ You can tell a LOCKed program
+ because its first byte will be
+ 1 instead of 0. The next 2
+ bytes (the program length) un-
+ encrypted. The rest of the file
+ is encrypted with the lame
+ scheme described above.
+
+ When AMSB has a LOCKed program
+ loaded into memory, it's not
+ stored encrypted in RAM. It
+ would be perfectly possible to
+ write BASIC code using direct
+ mode to write the tokenized
+ program out to disk. The pro-
+ gram starts at MEMLO and ex-
+ tends up to the first occur-
+ rence of three $00 bytes. The
+ hardest part of this would be
+ generating the header using
+ only direct-mode BASIC state-
+ ments (but it could be done).
+
+ However... there's no need to
+ do that. AMSB has a flag that
+ tells it whether or not the
+ currently-loaded program is
+ LOCKed. You can just clear the
+ flag:
+
+ POKE 168,0
+
+ Now AMSB won't consider the
+ program LOCKed, and you can
+ SAVE a regular copy of it (and
+ LIST, edit, etc).
+
+ Line Length Limit
+ In the editor, after a POKE
+ 82,0 (to set the left margin to
+ 0), you can enter 120 charac-
+ ters (3 screen lines) on a log-
+ ical line. If you enter a pro-
+ gram line that way without a
+ space after the line number,
+ then LIST it, it will be 121
+ characters long, because AMSB
+ will display a space after the
+ line number.
+
+ If you use a text editor (or
+ write a program) to create an
+ untokenized BASIC program, you
+ can have a line of code that's
+ 125 characters long. AMSB will
+ accept it just fine, with LOAD.
+ If a line is 126 characters or
+ longer, AMSB will silently ig-
+ nore that line when LOADing.
+
+ If you create a 125-character
+ line (with a text editor) con-
+ sisting only of a comment that
+ begins with ! or ', without a
+ space after the line number,
+ LOAD it, then SAVE it, that
+ line will be 129 bytes long in
+ tokenized form. AMSB will LOAD
+ it with no problems.
+
+ If you hex-edit a SAVEd file to
+ create a longer line, AMSB will
+ accept that, too... up to 255
+ bytes. At 256 bytes, AMSB will
+ lock up after LOAD.
+
+ Crunching
+ AMSB stores spaces in the tok-
+ enized program, just like other
+ 8-bit MS BASICs do, but it re-
+ quires you to put spaces be-
+ tween keywords and variables
+ (unlike e.g. Commodore 64 BA-
+ SIC). This seems to be because
+ AMSB allows keywords inside of
+ variable names: you can have a
+ variable called LIFE (which
+ contains the keyword IF) in
+ AMSB, but you can't in C=64 BA-
+ SIC (which gives a syntax error
+ becase it sees "L IF E").
+
+ This applies to numbers, too:
+ POKE710,0 is a syntax error in
+ AMSB. This is because POKE710
+ is actually a valid variable
+ name: try POKE710=123 followed
+ by PRINT POKE710.
+
+ However. The spaces aren't
+ needed when the program is RUN.
+ It would be possible to remove
+ all the spaces outside of
+ strings or comments and the
+ program would still work fine.
+
+COPYRIGHT
+ WTFPL. See
+ http://www.wtfpl.net/txt/copying
+ for details.
+
+AUTHOR
+ B. Watson
+
+ Email: urchlay@slackware.uk
+
+ IRC: Urchlay on irc.libera.chat
+ ##atari.
+
+0.2.2 2025-03-13 AMSB(7)
diff --git a/amsb_content.rst b/amsb_content.rst
new file mode 100644
index 0000000..51cbb25
--- /dev/null
+++ b/amsb_content.rst
@@ -0,0 +1,406 @@
+DESCRIPTION
+===========
+
+Atari Microsoft BASIC is actually a pretty cool BASIC for the Atari 8-bit. I never
+got the chance to use it 'back in the day' because it was expensive,
+required a floppy drive and at least 32K of RAM (my poor 400 had a
+tape drive for the first few years), and then later on, there was
+Turbo BASIC XL, which was cooler than AMSB, and also freeware.
+
+This file is a collection of notes I made to myself while developing
+listamsb. The information here might be useful (e.g. if you're trying
+to repair a damaged AMSB file) and hopefully is interesting. Enjoy!
+
+This file is part of the bw-atari8-utils source. You can get the
+latest version of the source from:
+
+https://slackware.uk/~urchlay/repos/bw-atari8-tools
+
+...which you can either view with a web browser or use with the 'git
+clone' command.
+
+NOTES
+=====
+
+Tokenized file format
+---------------------
+
+File begins with a 3-byte header:
+
+.. csv-table::
+
+ "Offset", "Purpose"
+ "0", "0 for a normal program, 1 for LOCKed (encrypted)"
+ "1", "LSB, program length, not counting the 3-byte header"
+ "2", "MSB, program length"
+
+The program length should always be the actual file size minus 3. If
+it's not, the file has either been truncated or had junk added to the
+end. In a LOCKed program, the program length bytes are not encrypted.
+
+After the header, the lines of code (encrypted, for LOCKed programs).
+Each line has a 4-byte header:
+
+.. csv-table::
+
+ "0", "LSB, address of the last byte of this line..."
+ "1", "MSB, address ...which is ignored on LOAD!"
+ "2", "LSB, line number"
+ "3", "MSB, line number"
+
+The rest of the line is the tokens, terminated by a $00 byte. The
+next 2 bytes after the $00 is the last-byte offset of the next line.
+
+The last "line" of the program has a $0000 offset, which indicates the
+end of the program. Since the actual last line ends with a $00, that
+means there will be three $00 bytes in a row as the last 3 bytes of
+the file. And that's the *only* place 3 $00's in a row will occur.
+
+Tokenization is "lightweight": there are no tokenized numerics,
+they're just stored as ASCII characters, as typed. There's no "string
+constant follows" token like there is in Atari BASIC (well, there is,
+it's just a double-quote, $22. There's no length byte). Variable names
+are not tokenized, either, they're just stored as-is (name in ASCII,
+including trailing $ for strings, etc). Numeric constants are just
+stored as ASCII digits, just as you typed them.
+
+In fact the only things that are tokenized are BASIC keywords:
+commands and functions... NOT including user functions defined
+with DEF (those are stored as just the ASCII function name, like
+variables).
+
+There are 2 sets of tokens. One set is single-byte, $80 and up.
+These are commands. The other set is functions, which are 2 bytes:
+$FF followed by the token number. See amsbtok.h in the source for the
+actual tokens.
+
+AMSB saves the end-of-line pointers, but it totally ignores them
+on LOAD. The SAVEd file format does *not* have a load address (as e.g.
+Commodore BASIC does), so there's no way to know the address of the
+start of the program (other than counting backwards from the next line,
+since its address is known). It's not just a constant either: it
+depends on what MEMLO was set to when the program was saved (which varies
+depending on what version of AMSB you have, what DOS you boot, whether
+or not you have the R: device driver loaded, etc etc).
+
+
+Redundant Tokens
+----------------
+
+There are two separate tokens each for PRINT and AT:
+
+.. csv-table::
+
+ "$ab", "PRINT "
+ "$ac", "PRINT"
+ "$df", "AT("
+ "$e0", "AT "
+
+When tokenizing a line, AMSB will actually use the $ab token if
+there's a space after PRINT (or ?), otherwise it will use the
+$ac token. These lines actually get tokenized differently::
+
+ 10 PRINT "HELLO"
+ 10 PRINT"HELLO"
+
+Same applies to the $df and $e0 AT tokens: if the user entered
+"AT(X,Y)", $df is used. Otherwise, with "AT (X,Y)", $e0 is used
+(followed by an ASCII left parenthesis).
+
+3 tokens include the opening parenthesis:
+
+.. csv-table::
+
+ "$d2", "TAB("
+ "$d6", "SPC("
+ "$df", "AT("
+
+Normally in AMSB, it's OK to leave a space between a function name
+and the left-paren. PEEK (123) and SIN (1) are both valid. However,
+for SPC and TAB, no space is allowed, because the ( is part of the
+token. AT would be the same way, except there's a separate token $e0
+that *includes* the space. Weird, huh? A side effect of this is
+that "SPC (10)" or "TAB (10)" won't be treated as a function call.
+Instead, the SPC or TAB is treated as a variable name. If you write::
+
+ PRINT TAB (10);"HELLO"
+
+...it'll print " 0 HELLO" at the start of the line[*], instead of "HELLO"
+in the 10th column as you might have expected. It also means that AT,
+TAB, and SPC are valid variable names in AMSB, which is an exception
+to the rule that keywords can't be used as variable names (e.g. SIN=1
+or STRING$="HELLO" are invalid).
+
+[*] Unless you've assigned another value to TAB, of couse.
+
+
+Unused Tokens
+-------------
+
+If you look at the token list in amsbtok.h (or in a hex dump
+of the AMSB executable or cartridge image), you'll see a lot of
+double-quotes mixed in with the list. AMSB doesn't actually tokenize
+the " character (it's stored as $22, its ASCII value), so these seem
+to be placeholders, either because some tokens were deleted from the
+language during its development, or else they're intended for some
+future version of AMSB that never happened.
+
+The weird quote tokens are $99, $c8 to $d0, $d5, and $e7 to $ed. If
+you hexedit a program to replace a regular double-quote with one of
+these tokens, it will list as either "" or just one ", but it will
+cause a syntax error at runtime.
+
+
+LOADing Untokenized Files
+-------------------------
+
+If the first byte of the file is anything other than $00 or $01,
+AMSB's LOAD command reads it in as a text file (LISTed rather than
+SAVEd).
+
+When LOAD is reading a text file, if the last byte of the file isn't
+an ATASCII EOL ($9b), you'll get #136 ERROR. The program doesn't get
+deleted, but the last line of the file didn't get loaded. This could
+happen if a LISTed file somehow got truncated.
+
+While on the subject... the manual doesn't mention it, but if you LOAD
+a text file without line numbers, the code gets executed in direct
+mode during the load (like Atari BASIC's ENTER command does). This
+means you could write scripts (batch files) for AMSB... though you'd
+be better off using MERGE, rather than LOAD (MERGE is basically the
+same thing as Atari BASIC's ENTER).
+
+
+Program Length Header Mismatch
+------------------------------
+
+When AMSB's LOAD command executes, it reads the 3-byte header, then
+reads as many bytes as the header's program length says.
+
+If the header length is longer than the rest of the file, you get
+a #136 ERROR (aka Atari's EOF), and the partially loaded program is
+erased (basically it does a NEW).
+
+If the length is shorter than the program, it'll stop loading no
+matter how much more data is in the file. This means it can stop in
+the middle of a line. It also means, if there was already a program in
+memory that was longer than the program length, you get a "hybrid" mix
+of the new program followed by the remainder of the old one. This is
+because the three $00 bytes at the end of the program weren't read in.
+
+If the program length is correct for the actual program (so the three
+$00 bytes get read), but there's extra data appended to the file, AMSB
+will never read the extra data at all.
+
+
+String Limitations
+------------------
+
+String literals in AMSB cannot contain the | or ATASCII heart
+characters.
+
+AMSB uses | as a terminator for quoted strings, e.g. "STRING" will
+be tokenized as: "STRING|
+
+If you try to use a | in a quoted string, it gets turned into a double
+quote: "FOO|BAR" comes out as "FOO"BAR which is a syntax error!
+
+String variables can store | but only with e.g. CHR$(124) or reading
+from a file: it's string *literals* that don't allow it.
+
+The reason | is used for a terminating quote is to allow doubling up
+the quotes to embed them in a string::
+
+ A$ = "HAS ""QUOTES"""
+
+PRINT A$ will print: HAS "QUOTES"
+
+At first I thought "no pipe characters in strings, WTF man?" but it's
+probably no worse than Atari BASIC's "no quotes in strings constants"
+rule. It *would* be nice if the AMSB manual actually documented the
+fact that | can't occur in a string constant. Not documenting it makes
+it a bug... and they have unused tokens in the $Fx range, I don't see
+why they had to use a printing character for this.
+
+You also can't put a heart (ATASCII character 0) in a string
+literal. It will be treated as the end of the line, as though you
+pressed Enter (and anything else on the line is ignored). This isn't
+documented in the manual, either.
+
+Like the | character, you can use CHR$(0) to store a heart in a string
+and it will work correctly.
+
+
+Line Number Range
+-----------------
+
+AMSB doesn't allow entering line numbers above 63999, but if a file
+is e.g. hex-edited to have a line number that's out of range, it will
+LIST and RUN just fine... except that it's impossible to GOTO or GOSUB
+to an out-of-range line. It will still execute if program flow falls
+into it.
+
+
+Differences Between Versions
+----------------------------
+
+The language is the same in AMSB versions 1 and 2. Tokenized files
+made by one version will LOAD and RUN in the other version.
+
+Version 1, the disk version, always has the full set of commands
+avaiable. Version 2, the cart, only has the full set if the extension
+disk is booted. The missing ones still get tokenized, but you get SN
+ERROR at runtime if you try to execute them. This doesn't affect the
+detokenizer at all. The missing commands::
+
+ AUTO
+ DEF (string version only)
+ NOTE
+ RENUM
+ TRON
+ TROFF
+ DEL
+ USING
+ STRING$ (function)
+
+RENUM only works in direct mode, not a program. Executing it
+gives a FUNCTION CALL ERROR.
+
+AUTO is (oddly) allowed in a program. Executing it exits the program
+and puts you back in the editor, in auto-numbering mode.
+
+It would seem weird to have POINT available but not NOTE... except
+that AMSB doesn't even *have* POINT. Instead, the disk addresses
+returned by NOTE are used with AT() in a PRINT statement. Not sure
+if AT() works without the extensions loaded, but it won't be useful
+anyway without NOTE.
+
+One other difference between versions 1 and 2: version 2 will LOAD and
+RUN the file D:AUTORUN.AMB at startup, if it exists.
+
+
+Colon Weirdness
+---------------
+
+AMSB allows comments to be started with the ! and ' characters (as
+well as the traditional REM). For the ! and ' variety, if they
+come at the end of a line after some code, you don't have to put a colon.
+Example::
+
+ 10 GRAPHICS 2+16 ! NO TEXT
+
+However... in the tokenized format, there *is* a tokenized colon
+just before the tokenized ! or ' character. LIST doesn't display it.
+If you did put a colon::
+
+ 10 CLOSE #1:! WE'RE DONE
+
+...then there will be *two* colons in the tokenized file, and only
+one will be LISTed.
+
+The ELSE keyword works the same way. In this line::
+
+ 10 IF A THEN PRINT ELSE STOP
+
+...there is actually a : character just before the token for ELSE.
+
+Even weirder: you can put as many colons in a row as you like, and
+AMSB will treat it like single colon. This line of code is valid
+and runs correctly::
+
+ 10 PRINT "A"::::::PRINT "A"
+
+These colons are displayed normally in LIST output.
+
+
+Memory Usage
+------------
+
+On a 48K/64K Atari, FRE(0) for AMSB 1 with DOS booted (since you can't
+use it without) but no device drivers is 21020. MEMLO is awfully high
+($6a00).
+
+For AMSB 2 with DOS booted, but without the extensions loaded, FRE(0)
+is 24352. With extensions it's 20642 (even though the banner says 20644
+BYTES FREE).
+
+AMSB 2 without DOS gives you 29980, but how are you gonna load or save
+programs without DOS? Nobody wants to use cassette, especially not
+people who could afford to buy the AMSB II cartridge.
+
+
+LOCKed Programs
+---------------
+
+If you save a program with SAVE "filename" LOCK, it gets saved in an
+"encrypted" form. Loading a locked program disables the LISTing or
+editing the program (you get LK ERROR if you try).
+
+The "encryption" is no better than ROT13. To encrypt, subtract each
+byte from 0x54 (in an 8-bit register, using twos complement). To
+decrypt, do the same. This is a reciprocal cipher, and you can think
+of it as the binary equivalent of ROT13.
+
+You can tell a LOCKed program because its first byte will be 1 instead
+of 0. The next 2 bytes (the program length) unencrypted. The rest of
+the file is encrypted with the lame scheme described above.
+
+When AMSB has a LOCKed program loaded into memory, it's *not* stored
+encrypted in RAM. It would be perfectly possible to write BASIC code
+using direct mode to write the tokenized program out to disk. The
+program starts at MEMLO and extends up to the first occurrence of
+three $00 bytes. The hardest part of this would be generating the
+header using only direct-mode BASIC statements (but it could be done).
+
+However... there's no need to do that. AMSB has a flag that tells it
+whether or not the currently-loaded program is LOCKed. You can just
+clear the flag::
+
+ POKE 168,0
+
+Now AMSB won't consider the program LOCKed, and you can SAVE a regular
+copy of it (and LIST, edit, etc).
+
+
+Line Length Limit
+-----------------
+
+In the editor, after a POKE 82,0 (to set the left margin to 0), you
+can enter 120 characters (3 screen lines) on a logical line. If you
+enter a program line that way *without* a space after the line number,
+then LIST it, it will be 121 characters long, because AMSB will
+display a space after the line number.
+
+If you use a text editor (or write a program) to create an untokenized
+BASIC program, you can have a line of code that's 125 characters
+long. AMSB will accept it just fine, with LOAD. If a line is 126
+characters or longer, AMSB will silently ignore that line when
+LOADing.
+
+If you create a 125-character line (with a text editor) consisting
+only of a comment that begins with ! or ', without a space after the
+line number, LOAD it, then SAVE it, that line will be 129 bytes long
+in tokenized form. AMSB will LOAD it with no problems.
+
+If you hex-edit a SAVEd file to create a longer line, AMSB will
+accept that, too... up to 255 bytes. At 256 bytes, AMSB will lock
+up after LOAD.
+
+
+Crunching
+---------
+
+AMSB stores spaces in the tokenized program, just like other 8-bit
+MS BASICs do, but it requires you to put spaces between keywords and
+variables (unlike e.g. Commodore 64 BASIC). This seems to be because
+AMSB allows keywords inside of variable names: you can have a variable
+called LIFE (which contains the keyword IF) in AMSB, but you can't in
+C=64 BASIC (which gives a syntax error becase it sees "L IF E").
+
+This applies to numbers, too: POKE710,0 is a syntax error in
+AMSB. This is because POKE710 is actually a valid variable name: try
+POKE710=123 followed by PRINT POKE710.
+
+However. The spaces aren't needed when the program is RUN. It would be
+possible to remove all the spaces outside of strings or comments and
+the program would still work fine.
diff --git a/amsbtok.h b/amsbtok.h
new file mode 100644
index 0000000..fe83906
--- /dev/null
+++ b/amsbtok.h
@@ -0,0 +1,161 @@
+const char *std_tokens[] = {
+ "END", /* 80 */
+ "FOR", /* 81 */
+ "NEXT", /* 82 */
+ "READ", /* 83 */
+ "DATA", /* 84 */
+ "RESTORE", /* 85 */
+ "LINE", /* 86 */
+ "INPUT", /* 87 */
+ "DEFSTR", /* 88 */
+ "DEFINT", /* 89 */
+ "DEFDBL", /* 8a */
+ "DEFSNG", /* 8b */
+ "OPTION", /* 8c */
+ "DIM", /* 8d */
+ "COMMON", /* 8e */
+ "DEF", /* 8f */
+ "LET", /* 90 */
+ "RANDOMIZE", /* 91 */
+ "GOTO", /* 92 */
+ "GOSUB", /* 93 */
+ "RETURN", /* 94 */
+ "GO", /* 95 */
+ "RUN", /* 96 */
+ "IF", /* 97 */
+ "REM", /* 98 */
+ "\"", /* 99 */
+ "'", /* 9a */
+ "!", /* 9b */
+ "ELSE", /* 9c */
+ "THEN", /* 9d */
+ "STOP", /* 9e */
+ "CONT", /* 9f */
+ "RESUME", /* a0 */
+ "ERROR", /* a1 */
+ "ON", /* a2 */
+ "AFTER", /* a3 */
+ "POKE", /* a4 */
+ "WAIT", /* a5 */
+ "MOVE", /* a6 */
+ "LOAD", /* a7 */
+ "SAVE", /* a8 */
+ "VERIFY", /* a9 */
+ "MERGE", /* aa */
+ "PRINT ", /* ab */
+ "PRINT", /* ac */
+ "LIST", /* ad */
+ "AUTO", /* ae */
+ "DEL", /* af */
+ "TRON", /* b0 */
+ "TROFF", /* b1 */
+ "RENUM", /* b2 */
+ "OPEN", /* b3 */
+ "CLOSE", /* b4 */
+ "GET", /* b5 */
+ "PUT", /* b6 */
+ "NOTE", /* b7 */
+ "LOCK", /* b8 */
+ "UNLOCK", /* b9 */
+ "KILL", /* ba */
+ "NAME", /* bb */
+ "GRAPHICS", /* bc */
+ "COLOR", /* bd */
+ "PLOT", /* be */
+ "FILL", /* bf */
+ "SETCOLOR", /* c0 */
+ "SOUND", /* c1 */
+ "CLS", /* c2 */
+ "DOS", /* c3 */
+ "CLEAR", /* c4 */
+ "NEW", /* c5 */
+ "CLOAD", /* c6 */
+ "CSAVE", /* c7 */
+ "\"", /* c8 */
+ "\"", /* c9 */
+ "\"", /* ca */
+ "\"", /* cb */
+ "\"", /* cc */
+ "\"", /* cd */
+ "\"", /* ce */
+ "\"", /* cf */
+ "\"", /* d0 */
+ "BASE", /* d1 */
+ "TAB(", /* d2 */
+ "TO", /* d3 */
+ "SUB", /* d4 */
+ "\"", /* d5 */
+ "SPC(", /* d6 */
+ "NOT", /* d7 */
+ "STEP", /* d8 */
+ "ALL", /* d9 */
+ "USING", /* da */
+ "RESERVE", /* db */
+ "UPDATE", /* dc */
+ "OUTPUT", /* dd */
+ "APPEND", /* de */
+ "AT(", /* df */
+ "AT ", /* e0 */
+ "PLM0", /* e1 */
+ "PLM2", /* e2 */
+ "PLM1", /* e3 */
+ "CHR0", /* e4 */
+ "CHR1", /* e5 */
+ "CHR2", /* e6 */
+ "\"", /* e7 */
+ "\"", /* e8 */
+ "\"", /* e9 */
+ "\"", /* ea */
+ "\"", /* eb */
+ "\"", /* ec */
+ "\"", /* ed */
+ "+", /* ee */
+ "-", /* ef */
+ "*", /* f0 */
+ "/", /* f1 */
+ "^", /* f2 */
+ "AND", /* f3 */
+ "OR", /* f4 */
+ "XOR", /* f5 */
+ ">", /* f6 */
+ "=", /* f7 */
+ "<", /* f8 */
+};
+
+const char *ext_tokens[] = {
+ "SGN", /* ffa3 */
+ "INT", /* ffa4 */
+ "ABS", /* ffa5 */
+ "FRE", /* ffa6 */
+ "POS", /* ffa7 */
+ "SQR", /* ffa8 */
+ "LOG", /* ffa9 */
+ "EXP", /* ffaa */
+ "COS", /* ffab */
+ "SIN", /* ffac */
+ "TAN", /* ffad */
+ "ATN", /* ffae */
+ "PEEK", /* ffaf */
+ "LEN", /* ffb0 */
+ "STR$", /* ffb1 */
+ "VAL", /* ffb2 */
+ "ASC", /* ffb3 */
+ "CHR$", /* ffb4 */
+ "STATUS", /* ffb5 */
+ "EOF", /* ffb6 */
+ "LEFT$", /* ffb7 */
+ "RIGHT$", /* ffb8 */
+ "MID$", /* ffb9 */
+ "INSTR", /* ffba */
+ "STRING$", /* ffbb */
+ "VARPTR", /* ffbc */
+ "USR", /* ffbd */
+ "SCRN$", /* ffbe */
+ "RND", /* ffbf */
+ "TIME$", /* ffc0 */
+ "TIME", /* ffc1 */
+ "INKEY$", /* ffc2 */
+ "ERR", /* ffc3 */
+ "ERL", /* ffc4 */
+ "STACK", /* ffc5 */
+};
diff --git a/aplus_tokens.c b/aplus_tokens.c
new file mode 100644
index 0000000..d685189
--- /dev/null
+++ b/aplus_tokens.c
@@ -0,0 +1,179 @@
+/* these have to be full sets of tokens, because A+'s tokens don't
+ match Atari BASIC's */
+
+const char *aplus_cmds[] = {
+ "REM", /* $00 */
+ "DATA", /* $01 */
+ "INPUT", /* $02 */
+ "LIST", /* $03 */
+ "ENTER", /* $04 */
+ "LET", /* $05 */
+ "IF", /* $06 */
+ "FOR", /* $07 */
+ "NEXT", /* $08 */
+ "GOTO", /* $09 */
+ "RENUM", /* $0a */
+ "GOSUB", /* $0b */
+ "TRAP", /* $0c */
+ "BYE", /* $0d */
+ "CONT", /* $0e */
+ "CLOSE", /* $0f */
+ "CLR", /* $10 */
+ "DEG", /* $11 */
+ "DIM", /* $12 */
+ "WHILE", /* $13 */
+ "ENDWHILE", /* $14 */
+ "TRACEOFF", /* $15 */
+ "TRACE", /* $16 */
+ "ELSE", /* $17 */
+ "ENDIF", /* $18 */
+ "END", /* $19 */
+ "NEW", /* $1a */
+ "OPEN", /* $1b */
+ "LOAD", /* $1c */
+ "SAVE", /* $1d */
+ "STATUS", /* $1e */
+ "NOTE", /* $1f */
+ "POINT", /* $20 */
+ "XIO", /* $21 */
+ "ON", /* $22 */
+ "POKE", /* $23 */
+ "DPOKE", /* $24 */
+ "PRINT", /* $25 */
+ "RAD", /* $26 */
+ "READ", /* $27 */
+ "RESTORE", /* $28 */
+ "RETURN", /* $29 */
+ "RUN", /* $2a */
+ "STOP", /* $2b */
+ "POP", /* $2c */
+ "?", /* $2d */
+ "GET", /* $2e */
+ "PUT", /* $2f */
+ "LOMEM", /* $30 */
+ "DEL", /* $31 */
+ "RPUT", /* $32 */
+ "RGET", /* $33 */
+ "BPUT", /* $34 */
+ "BGET", /* $35 */
+ "TAB", /* $36 */
+ "CP", /* $37 */
+ "DOS", /* $38 */
+ "ERASE", /* $39 */
+ "PROTECT", /* $3a */
+ "UNPROTECT", /* $3b */
+ "DIR", /* $3c */
+ "RENAME", /* $3d */
+ "MOVE", /* $3e */
+ "COLOR", /* $3f */
+ "GRAPHICS", /* $40 */
+ "PLOT", /* $41 */
+ "POSITION", /* $42 */
+ "DRAWTO", /* $43 */
+ "SETCOLOR", /* $44 */
+ "LOCATE", /* $45 */
+ "SOUND", /* $46 */
+ "LPRINT", /* $47 */
+ "CSAVE", /* $48 */
+ "CLOAD", /* $49 */
+ "MISSILE", /* $4a */
+ "PMCLR", /* $4b */
+ "PMCOLOR", /* $4c */
+ "PMGRAPHICS", /* $4d */
+ "PMMOVE", /* $4e */
+ "PMWIDTH", /* $4f */
+ "SET", /* $50 */
+ "LVAR", /* $51 */
+ "", /* $52, silent LET */
+ "ERROR- " /* $53 */
+};
+
+const int aplus_cmd_size = sizeof(aplus_cmds);
+
+const char *aplus_ops[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,
+ ",", /* $12 */
+ "$", /* $13 */
+ ":", /* $14 */
+ ";", /* $15 */
+ "", /* $16 */
+ " GOTO ", /* $17 */
+ " GOSUB ", /* $18 */
+ " TO ", /* $19 */
+ " STEP ", /* $1a */
+ " THEN ", /* $1b */
+ " USING ", /* $1c */
+ "#", /* $1d */
+ "<=", /* $1e */
+ "<>", /* $1f */
+ ">=", /* $20 */
+ "<", /* $21 */
+ ">", /* $22 */
+ "=", /* $23 */
+ "^", /* $24 */
+ "*", /* $25 */
+ "+", /* $26 */
+ "-", /* $27 */
+ "/", /* $28 */
+ " NOT ", /* $29 */
+ " OR ", /* $2a */
+ " AND ", /* $2b */
+ "!", /* $2c */
+ "&", /* $2d */
+ "(", /* $2e */
+ ")", /* $2f */
+ "=", /* $30 */
+ "=", /* $31 */
+ "<=", /* $32 */
+ "<>", /* $33 */
+ ">=", /* $34 */
+ "<", /* $35 */
+ ">", /* $36 */
+ "=", /* $37 */
+ "+", /* $38 */
+ "-", /* $39 */
+ "(", /* $3a */
+ "", /* $3b */
+ "", /* $3c */
+ "(", /* $3d */
+ "(", /* $3e */
+ ",", /* $3f */
+ "STR$", /* $40 */
+ "CHR$", /* $41 */
+ "USR", /* $42 */
+ "ASC", /* $43 */
+ "VAL", /* $44 */
+ "LEN", /* $45 */
+ "ADR", /* $46 */
+ "BUMP", /* $47 */
+ "FIND", /* $48 */
+ "DPEEK", /* $49 */
+ "ATN", /* $4a */
+ "COS", /* $4b */
+ "PEEK", /* $4c */
+ "SIN", /* $4d */
+ "RND", /* $4e */
+ "FRE", /* $4f */
+ "EXP", /* $50 */
+ "LOG", /* $51 */
+ "CLOG", /* $52 */
+ "SQR", /* $53 */
+ "SGN", /* $54 */
+ "ABS", /* $55 */
+ "INT", /* $56 */
+ "SYS", /* $57 */
+ "PADDLE", /* $58 */
+ "STICK", /* $59 */
+ "PTRIG", /* $5a */
+ "STRIG", /* $5b */
+ "VSTICK", /* $5c */
+ "HSTICK", /* $5d */
+ "PMADR", /* $5e */
+ "ERR", /* $5f */
+ "TAB", /* $60 */
+ "PEN", /* $61 */
+};
+
+const int aplus_ops_size = sizeof(aplus_ops);
diff --git a/aplus_tokens.h b/aplus_tokens.h
new file mode 100644
index 0000000..f0c905d
--- /dev/null
+++ b/aplus_tokens.h
@@ -0,0 +1,5 @@
+extern const char *aplus_cmds[];
+extern const char *aplus_ops[];
+
+extern const int aplus_cmd_size;
+extern const int aplus_ops_size;
diff --git a/atascii.7 b/atascii.7
index ac08ec6..cd5192e 100644
--- a/atascii.7
+++ b/atascii.7
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ATASCII" 7 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "ATASCII" 7 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
atascii \- Atari 8-bit character set
.\" RST source for atascii(7) man page. Convert with:
@@ -2156,28 +2156,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/atascii.c b/atascii.c
new file mode 100644
index 0000000..d4e4a91
--- /dev/null
+++ b/atascii.c
@@ -0,0 +1,157 @@
+#include "atascii.h"
+
+const char *atascii_inverse_on = "\x1b[7m";
+const char *atascii_inverse_off = "\x1b[27m";
+
+/* only called in magazine mode. cursor control characters
+ like a bell in the middle of a non-inverse string
+ should not cause it to print {inv}{bell}{norm}. The {bell}
+ is "inherently" inverse (since its high bit is set) but doesn't
+ need to be printed that way. */
+static int affects_inv(int c) {
+ switch(c) {
+ case 0x1b: /* esc */
+ case 0x1c: /* up */
+ case 0x1d: /* down */
+ case 0x1e: /* left */
+ case 0x1f: /* right */
+ case 0x9b: /* EOL */
+ case 0x9c: /* del line */
+ case 0x9d: /* ins line */
+ case 0x9e: /* clear tab */
+ case 0x9f: /* set tab */
+ case 0x7d: /* cls */
+ case 0x7e: /* BS */
+ case 0x7f: /* tab */
+ case 0xfd: /* bell */
+ case 0xfe: /* del chr */
+ case 0xff: /* ins chr */
+ return 0;
+ default:
+ return 1;
+ }
+}
+
+int atascii_context_init(atascii_ctx *ctx, int mode, int flags) {
+ memset(ctx, 0, sizeof(atascii_ctx));
+
+ switch(mode) {
+ case ATA_MODE_UTF8:
+ if(flags & ATA_FLAG_ICS)
+ ctx->table = ics2utf;
+ else
+ ctx->table = ata2utf;
+ break;
+ case ATA_MODE_MAGAZINE:
+ ctx->flags &= ~ATA_FLAG_UNDERLINE;
+ ctx->table = ata2mag;
+ break;
+ default:
+ return 0;
+ }
+
+ ctx->mode = mode;
+ ctx->flags = flags;
+
+ return 1;
+}
+
+char *atascii_a2utf(atascii_ctx *ctx, int src, char *dest) {
+ dest[0] = 0;
+
+ if(src == ATA_CHR_FINISH) {
+ if(ctx->inv)
+ strcpy(dest, ctx->mode == ATA_MODE_MAGAZINE ? "{norm}": atascii_inverse_off);
+ return dest;
+ }
+
+ if(src == 0x9b) {
+ strcpy(dest, "\n");
+ ctx->lines++;
+ return dest;
+ }
+
+ if(ctx->flags & ATA_FLAG_TEXTMODE) {
+ switch(src) {
+ case 0x7f: /* tab */
+ strcpy(dest, "\t");
+ return dest;
+ case 0xfd: /* bell */
+ strcpy(dest, "\a");
+ return dest;
+ case 0x7e: /* backspace */
+ strcpy(dest, "\b");
+ return dest;
+ default: break;
+ }
+ }
+
+ if(ctx->flags & ATA_FLAG_STRIP_INVERSE) src &= 0x7f;
+
+ if(!(ctx->flags & ATA_FLAG_UNDERLINE)) {
+ /* strings of inverse chars only get one "inverse on" ANSI
+ sequence, and one "inverse off" afterwards. */
+ if(src & 0x80) {
+ if(!ctx->inv) {
+ if(ctx->mode == ATA_MODE_MAGAZINE) {
+ if(affects_inv(src)) {
+ strcpy(dest, "{inv}");
+ ctx->inv = 1;
+ }
+ } else {
+ strcpy(dest, atascii_inverse_on);
+ ctx->inv = 1;
+ }
+ }
+ } else {
+ if(ctx->inv) {
+ if(ctx->mode == ATA_MODE_MAGAZINE) {
+ if(affects_inv(src)) {
+ strcpy(dest, "{norm}");
+ ctx->inv = 0;
+ }
+ } else {
+ strcpy(dest, atascii_inverse_off);
+ ctx->inv = 0;
+ }
+ }
+ }
+ }
+
+ if(ctx->mode == ATA_MODE_MAGAZINE) {
+ /* special cases: control codes with bit 7 set can't go
+ in the table since it's only got 128 entries. */
+ switch(src) {
+ case 0x9c:
+ strcat(dest, "{del-line}"); return dest;
+ case 0x9d:
+ strcat(dest, "{ins-line}"); return dest;
+ case 0x9e:
+ strcat(dest, "{clr-tab}"); return dest;
+ case 0x9f:
+ strcat(dest, "{set-tab}"); return dest;
+ case 0xfd:
+ strcat(dest, "{bell}"); return dest;
+ case 0xfe:
+ strcat(dest, "{del-char}"); return dest;
+ case 0xff:
+ strcat(dest, "{ins-char}"); return dest;
+ default: break;
+ }
+ }
+
+ strcat(dest, ctx->table[src & 0x7f]);
+
+ if((ctx->flags & ATA_FLAG_UNDERLINE) && (src & 0x80)) {
+ strcat(dest, "\b_");
+ }
+
+ return dest;
+}
+
+const char *atascii_finish(atascii_ctx *ctx) {
+ if(ctx->inv)
+ return ATA_MODE_MAGAZINE ? "{norm}": atascii_inverse_off;
+ else
+ return "";
+};
diff --git a/atascii.h b/atascii.h
new file mode 100644
index 0000000..08abc3f
--- /dev/null
+++ b/atascii.h
@@ -0,0 +1,44 @@
+#ifndef ATASCII_H
+#define ATASCII_H
+
+#include <stdio.h>
+#include <string.h>
+#include "atables.h"
+
+#define ATA_MODE_UTF8 0 /* default */
+#define ATA_MODE_MAGAZINE 1
+/* TODO: #define ATA_MODE_DOTS 2 */
+
+#define ATA_FLAG_NONE 0 /* default */
+#define ATA_FLAG_UNDERLINE 1
+#define ATA_FLAG_ICS 2
+#define ATA_FLAG_TEXTMODE 4
+#define ATA_FLAG_STRIP_INVERSE 8
+
+#define ATA_CHR_FINISH -1
+
+extern const char *atascii_inverse_on;
+extern const char *atascii_inverse_off;
+
+typedef struct {
+ int mode;
+ int flags;
+ int inv;
+ int lines;
+ const char **table;
+} atascii_ctx;
+
+/* returns true if mode and flags are valid, 0 otherwise. */
+extern int atascii_context_init(atascii_ctx *ctx, int mode, int flags);
+
+/* obeys all the flags and modes.
+ result goes in dest, which needs to be 9 bytes in utf-8 mode (big
+ enough to handle up to 4 bytes of UTF-8 plus 4 bytes of ANSI escape
+ code plus a terminating null), or 12 bytes in magazine mode.
+ the return value is dest.
+ */
+extern char *atascii_a2utf(atascii_ctx *ctx, int src, char *dest);
+
+extern const char *atascii_finish(atascii_ctx *ctx);
+
+#endif
diff --git a/atr2xfd.1 b/atr2xfd.1
index f46f6dd..01fd585 100644
--- a/atr2xfd.1
+++ b/atr2xfd.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ATR2XFD" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "ATR2XFD" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
atr2xfd \- Convert an Atari 8-bit ATR disk image to a raw (XFD) image
.\" RST source for atr2xfd(1) man page. Convert with:
@@ -187,28 +187,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/atrsize.1 b/atrsize.1
index 08504ff..bf21a80 100644
--- a/atrsize.1
+++ b/atrsize.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ATRSIZE" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "ATRSIZE" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
atrsize \- Change the size of an Atari 8-bit ATR disk image, or create a blank ATR image
.\" RST source for atrsize(1) man page. Convert with:
@@ -201,28 +201,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/axe.1 b/axe.1
index f2eaef0..0e77a07 100644
--- a/axe.1
+++ b/axe.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "AXE" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "AXE" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
axe \- ATR/XFD Editor
.\" RST source for axe(1) man page. Convert with:
@@ -142,28 +142,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/bas.c b/bas.c
index efb985e..5758110 100644
--- a/bas.c
+++ b/bas.c
@@ -10,7 +10,29 @@
#include "bas.h"
+/* caller's parse_args() should set this for the -v option */
int verbose = 0;
+
+/* hex constants work the same way in Turbo BASIC and BASIC XL/XE: they're
+ exactly like numeric constants, 6-byte BCD FP, but introduced with
+ OP_HEXCONST instead of OP_NUMCONST.
+ If allow_hex_const is set, on_exp_token will be called for OP_HEXCONST.
+ Otherwise, a warning will be printed, on_exp_token will NOT be called,
+ but the constant is skipped the same as a regular numeric, to keep
+ in sync with the token stream. */
+int allow_hex_const = 0;
+
+/* BASIC XL token 0x5a is followed by a single "subtoken", this skips it. */
+int bxl_exttok_hack = 0;
+
+/* 2 for OSS Integer BASIC, 6 for the BCD constants in all others. */
+int numconst_size = 6;
+
+/* BASIC/A+ and OSS Integer use the same cmd tokens for REM and DATA that
+ BASIC does, but not for the ERROR- token. bas.c needs to know what
+ token is ERROR- so it can handle it correctly. */
+int error_token = CMD_ERROR;
+
unsigned short lomem;
unsigned short vntp;
unsigned short vntd;
@@ -20,6 +42,8 @@ unsigned short stmcur;
unsigned short starp;
unsigned short codestart;
unsigned short code_end;
+unsigned short save_command_pos;
+unsigned short save_command_tok;
unsigned short vnstart;
unsigned short vvstart;
int filelen;
@@ -60,6 +84,7 @@ void readfile(void) {
else if(filelen > MAX_PROG_SIZE)
fprintf(stderr, "Warning: file is %d bytes, suspiciously large for a BASIC program.\n", filelen);
fclose(input_file);
+ input_file = NULL; /* so caller can tell it's closed */
if(filelen < MIN_PROG_SIZE)
die("File too short to be a BASIC program (truncated?)\n");
}
@@ -69,6 +94,7 @@ int writefile(void) {
outbytes = fwrite(program, 1, filelen, output_file);
fclose(output_file);
+ output_file = NULL; /* so caller can tell it's closed */
if(verbose) fprintf(stderr, "Wrote %d bytes.\n", outbytes);
return outbytes;
}
@@ -87,9 +113,12 @@ void dump_header_vars(void) {
fprintf(stderr, "LOMEM $%04x VNTP $%04x VNTD $%04x VVTP $%04x\n", lomem, vntp, vntd, vvtp);
fprintf(stderr, "STMTAB $%04x STMCUR $%04x STARP $%04x\n", stmtab, stmcur, starp);
fprintf(stderr, "vnstart $%04x, vvstart $%04x, codestart $%04x, code_end $%04x\n", vnstart, vvstart, codestart, code_end);
+ fprintf(stderr, "save_command_pos $%04x (tok $%02x)\n", save_command_pos, save_command_tok);
}
void parse_header(void) {
+ int vntp_offset;
+
lomem = getword(0);
vntp = getword(2);
vntd = getword(4);
@@ -97,18 +126,42 @@ void parse_header(void) {
stmtab = getword(8);
stmcur = getword(10);
starp = getword(12);
+
codestart = stmtab - TBL_OFFSET - (vntp - 256);
vnstart = vntp - TBL_OFFSET;
vvstart = vvtp - TBL_OFFSET;
+ save_command_pos = stmcur - TBL_OFFSET;
+ save_command_tok = program[save_command_pos + 4];
code_end = starp - TBL_OFFSET;
- if(lomem) die("This doesn't look like an Atari BASIC program (no $0000 signature).");
+ if(vnstart > 0x0e) {
+ if(verbose)
+ fprintf(stderr, "VNTP is $%02x (not ($100), adjusting pointers.\n", vntp);
+ vntp_offset = vnstart - 0x0e;
+ vnstart -= vntp_offset;
+ vvstart -= vntp_offset;
+ }
if(filelen < code_end) {
fprintf(stderr, "Warning: file is truncated: %d bytes, should be %d.\n", filelen, code_end);
}
if(verbose) dump_header_vars();
+
+ /* these checks are actually kind of conservative. */
+ if(lomem == 0x77) {
+ numconst_size = 2;
+ if(verbose)
+ fprintf(stderr, "OSS Integer BASIC $7700 signature found, OK.\n");
+ } else if(lomem == 0) {
+ if(verbose)
+ fprintf(stderr, "BASIC $0000 signature found, OK.\n");
+ } else {
+ die("Not an Atari BASIC program (no $0000 or $7700 signature).");
+ }
+ if(vntp < 0x100) die("Not an Atari BASIC program (invalid VNTP).");
+ if(vvtp < vntd) die("Not an Atari BASIC program (invalid VVTP).");
+ if(starp < vvtp) die("Not an Atari BASIC program (invalid STARP).");
}
void update_header(void) {
@@ -171,23 +224,28 @@ int vntable_ok(void) {
/* first pass: bad = 1 if all the bytes in the table have the same
value, no matter what it is. */
vp = vnstart + 1;
- bad = 1;
- while(vp < vvstart - 1) {
- if(program[vp] != program[vnstart]) {
- bad = 0;
- break;
+
+ /* don't do this check if the table is only one byte long! */
+ if(vp < vvstart - 1) {
+ bad = 1;
+ while(vp < vvstart - 1) {
+ if(program[vp] != program[vnstart]) {
+ bad = 0;
+ break;
+ }
+ vp++;
}
- vp++;
+ if(bad) return 0;
}
- if(bad) return 0;
/* 2nd pass: bad = 1 if there's any invalid character in the table. */
vp = vnstart;
while(vp < vvstart) {
unsigned char c = program[vp];
- /* treat a null byte as end-of-table, ignore any junk between it and VNTP. */
- if(c == 0) break;
+ /* allow for (but don't require) dummy byte at VNTD. used to just
+ quit when we hit 0, but 0 might be part of a scrambled table. */
+ if(c == 0 && vp == (vvstart - 1)) break;
vp++;
@@ -196,6 +254,10 @@ int vntable_ok(void) {
/* numbers and letters are allowed, inverse or normal. */
c &= 0x7f;
+ if(c == '_') {
+ fprintf(stderr, "%s: Underscore in variable name; Turbo or BASIC XE?\n", self);
+ continue;
+ }
if(c >= 0x30 && c <= 0x39) continue;
if(c >= 0x41 && c <= 0x5a) continue;
@@ -290,14 +352,22 @@ void walk_code(unsigned int startlineno, unsigned int endlineno) {
lineno = tmpno;
offset = program[linepos + 2];
nextpos = linepos + offset;
+ if(nextpos > filelen) {
+ fprintf(stderr, "Warning: program truncated in the middle of line %d.\n", lineno);
+ return;
+ }
end = nextpos;
pos = linepos;
- if(offset < 6) {
+ if(offset < 5) {
+ /* actually, real Atari BASIC's minimum offset is 6. however, if you use
+ the "--" (line of dashes, command token 0x54) in Turbo BASIC XL, you
+ get an offset of 5, because there's no end-of-line after it.
+ it seems better to accomodate Turbo here. */
CALL(on_bad_line_length);
offset = program[linepos + 2]; /* on_bad_line_length fixed it (we hope) */
- if(offset < 6)
+ if(offset < 5)
die("Fatal: Program is code-protected; unprotect it first.");
}
@@ -313,33 +383,55 @@ void walk_code(unsigned int startlineno, unsigned int endlineno) {
pos = linepos + 3;
while(pos < nextpos) { /* loop over statements within a line */
soffset = program[pos];
+ if(!soffset) {
+ fprintf(stderr, "Fatal: next-statement offset is 0 at line %d, pos %04x\n", lineno, pos);
+ exit(1);
+ }
end = linepos + soffset;
CALL(on_start_stmt);
while(pos < end) { /* loop over tokens within a statement */
pos++;
CALL(on_cmd_token);
- switch(program[pos]) {
- case CMD_REM:
- case CMD_DATA:
- case CMD_ERROR:
- pos++;
- CALL(on_text);
- pos = end;
- break;
- default:
- pos++;
- break;
+
+ tok = program[pos];
+ if((tok == CMD_REM) || (tok == CMD_DATA) || /* same in all */
+ tok == error_token)
+ {
+ pos++;
+ CALL(on_text);
+ pos = end;
+ } else if(bxl_exttok_hack && tok == 0x5a) {
+ pos += 2; /* skip subtoken */
+ } else {
+ pos++;
}
while(pos < end) { /* loop over operators */
tok = program[pos];
switch(tok) {
+ case 0: /* Turbo variables numbered >= $80 */
+ CALL(on_exp_token);
+ /* on_exp_token callback better know what to do with $00! */
+ pos += 2;
+ break;
case OP_NUMCONST:
CALL(on_exp_token);
pos++;
CALL(on_num_const);
- pos += 6;
+ pos += numconst_size;
+ break;
+ case OP_HEXCONST:
+ if(allow_hex_const) {
+ CALL(on_exp_token);
+ } else {
+ fprintf(stderr, "%s: found Turbo/BXL/BXE hex constant at line %d, skipping\n", self, lineno);
+ }
+ pos++;
+ if(allow_hex_const) {
+ CALL(on_num_const);
+ }
+ pos += numconst_size;
break;
case OP_STRCONST:
CALL(on_exp_token);
diff --git a/bas.h b/bas.h
index 3a24c38..5fb23b7 100644
--- a/bas.h
+++ b/bas.h
@@ -92,8 +92,10 @@
#define CMD_ILET 0x36 /* implied LET */
#define CMD_ERROR 0x37
-/* operators. 0x00-0x0d and 0x0a-0x11 are not used.
+/* operators. 0x00-0x0d and 0x0a-0x11 are not used in Atari BASIC;
+ 0x0d is used (in the same way) in both Turbo BASIC and BXL/BXE.
0x3d-0x54 are functions. */
+#define OP_HEXCONST 0x0d
#define OP_NUMCONST 0x0e
#define OP_STRCONST 0x0f
#define OP_COMMA 0x12
@@ -182,6 +184,8 @@ extern unsigned short starp;
/* positions where various parts of the file start,
derived from the header vars above. */
extern unsigned short codestart;
+extern unsigned short save_command_pos;
+extern unsigned short save_command_tok;
extern unsigned short code_end;
extern unsigned short vnstart;
extern unsigned short vvstart;
@@ -200,6 +204,10 @@ extern FILE *output_file;
extern char *output_filename;
extern int verbose;
+extern int allow_hex_const;
+extern int bxl_exttok_hack;
+extern int numconst_size;
+extern int error_token;
extern void set_self(const char *argv0);
extern void die(const char *msg);
diff --git a/bas2aplus.1 b/bas2aplus.1
new file mode 100644
index 0000000..722e8c2
--- /dev/null
+++ b/bas2aplus.1
@@ -0,0 +1,211 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "BAS2APLUS" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
+.SH NAME
+bas2aplus \- Convert Atari BASIC (and some BASIC XL/XE) programs to BASIC/A+
+.SH SYNOPSIS
+.sp
+bas2aplus \fIinput\-file\fP \fIoutput\-file\fP
+.SH DESCRIPTION
+.sp
+\fBbas2aplus\fP reads an Atari BASIC or BASIC XL/XE tokenized (SAVEd)
+program and converts it to BASIC/A+. The conversion is a simple token
+replacement; no syntax or semantic analysis is done.
+.sp
+\fIinput\-file\fP must be an Atari BASIC, BASIC XL, or BASIC XE program.
+Turbo BASIC is not supported. Trying to convert a program that is
+already BASIC/A+ will appear to succeed, but the resulting program
+will be gibberish and will likely crash BASIC/A+ when \fBRUN\fP\&.
+.sp
+All Atari BASIC programs can be successfully converted. Some BASIC
+XL/XE tokens have no equivalent in BASIC/A+, so programs using these
+can\(aqt be converted (you will see messages on standard error, in that
+case).
+.SH OPTIONS
+.SS General Options
+.INDENT 0.0
+.TP
+.B \fB\-\-help\fP
+Print usage message and exit.
+.TP
+.B \fB\-\-version\fP
+Print version number and exit.
+.TP
+.B \fB\-v\fP
+Verbose operation. When displaying a number in verbose mode, it will
+be prefixed with \fI$\fP if it\(aqs in hex, or no prefix for decimal.
+.UNINDENT
+.SH BASIC
+.sp
+BASIC/A+ is basically a later version of Atari BASIC, by the same team
+that developed Atari BASIC. As such, it\(aqs source\-compatible with Atari
+BASIC, but \fInot\fP token\-compatible.
+.sp
+BASIC/A+ uses a different set of token numbers, but has all but two
+of the same tokens used by Atari BASIC. Conversion should always
+succeed, for an Atari BASIC program.
+.sp
+The two missing tokens are the \fBCOM\fP and \fBGO TO\fP commands, which
+are converted to \fBDIM\fP and \fBGOTO\fP, respectively.
+.sp
+The resulting program should \fBLOAD\fP and \fBRUN\fP in BASIC/A+ and
+function identically to the BASIC version, unless it uses memory
+that\(aqs reserved in A+. \fBUSR()\fP routines that are stored in the lower
+half of Page 6 will have to be relocated, since A+ uses this area
+itself. See the BASIC/A+ manual for full details.
+.SH BASIC XL
+.sp
+BASIC XL is basically the next version of BASIC/A+, by the
+same developers. The token lists were rearranged so that it\(aqs
+token\-compatible with Atari BASIC, and includes all the extra
+commands/functions/etc from BASIC/A+... with different token numbers.
+.sp
+BASIC XL has keywords and operators that don\(aqt exist in BASIC/A+,
+which can\(aqt be translated by \fBbas2aplus\fP\&. These are:
+.INDENT 0.0
+.TP
+.B \fBNUM\fP
+Rarely found in a program (usually only used in direct mode).
+.TP
+.B \fBFAST\fP
+Just doesn\(aqt exist in BASIC/A+.
+.TP
+.B \fBLOCAL\fP, \fBEXIT\fP, \fBPROCEDURE\fP, \fBCALL\fP, \fBSORTUP\fP, \fBSORTDOWN\fP
+These BASIC XL commands are provided by the disk\-based Toolkit
+extension, which doesn\(aqt exist for BASIC/A+.
+.TP
+.B \fBString Arrays\fP
+BASIC/A+ doesn\(aqt support these; if your BASIC XL program uses them,
+it won\(aqt convert correctly.
+.TP
+.B \fBBUMP\fP and \fBFIND\fP
+While BASIC/A+ does support these functions, the token\-level syntax
+is different; it would be possible to translate them, but it would
+require recalculating the line offset and statement offsets for
+every line that uses them. For now, they\(aqre not supported.
+.TP
+.B \fB%\fP
+The exclusive OR operator in BASIC XL. No such animal, in A+.
+.TP
+.B \fBHEX$\fP, \fBRANDOM\fP, \fBLEFT$\fP, \fBRIGHT$\fP, \fBMID$\fP
+These functions don\(aqt exist in BASIC/A+.
+.UNINDENT
+.sp
+Also, BASIC XL supports hex constants, with a leading \fB$\fP\&. A+
+doesn\(aqt support these, so they get converted to the equivalent decimal
+constant. This is basically a cosmetic change; \fBA=$0600\fP assigns the
+same value as \fBA=1536\fP\&.
+.sp
+BASIC XL also allows some syntax that\(aqs not valid in BASIC
+A+. For instance, \fBDIR\fP is allowed with no argument in XL.
+\fBbas2aplus\fP doesn\(aqt detect these constructs.
+.SH BASIC XE
+.sp
+BASIC XE is the last in the series of OSS BASIC interpreters. It
+supports "EXTENDed" mode, which allows BASIC XE to use all the
+memory in a 130XE, but such programs are \fInot\fP supported by
+\fBbas2aplus\fP\&. Only non\-EXTENDed BASIC XE programs can be converted.
+.sp
+BASIC XE adds a few keywords to BASIC XL, which also don\(aqt exist in
+A+. These are:
+.INDENT 0.0
+.TP
+.B \fBEXTEND\fP
+This command is direct\-mode only, so it will never appear in a SAVEd
+program anyway.
+.TP
+.B \fBHITCLR\fP, \fBINVERSE\fP, \fBNORMAL\fP, \fBBLOAD\fP, \fBBSAVE\fP
+Not supported in either A+ or XL.
+.UNINDENT
+.sp
+BASIC XE also allows some syntax that\(aqs not valid in either BASIC XL
+or A+. For instance, \fBIF <condition>\fP, without \fBTHEN\fP, can appear
+as the last statement on a line, and \fBLVAR\fP no longer requires an
+argument. \fBbas2aplus\fP doesn\(aqt detect these constructs.
+.sp
+Actually, BASIC/A+ will \fBLIST\fP and \fBRUN\fP programs with the \fBIF\fP
+issue, but such lines can\(aqt be edited in A+. Easy enough to add a
+\fB:REM\fP to the end of the line, though.
+.SH TURBO BASIC
+.sp
+Not supported. It\(aqs also an extended version of Atari BASIC (by
+a different developer), but extends the syntax in ways that just
+wouldn\(aqt convert directly to BASIC/A+.
+.SH EXIT STATUS
+.sp
+0 for success, non\-zero for failure.
+.SH COPYRIGHT
+.sp
+WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
+.SH AUTHOR
+.INDENT 0.0
+.IP B. 3
+Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fBa8cat\fP(1),
+\fBa8eol\fP(1),
+\fBa8xd\fP(1),
+\fBatr2xfd\fP(1),
+\fBatrsize\fP(1),
+\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
+\fBblob2c\fP(1),
+\fBblob2xex\fP(1),
+\fBcart2xex\fP(1),
+\fBcxrefbas\fP(1),
+\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
+\fBdumpbas\fP(1),
+\fBf2toxex\fP(1),
+\fBfenders\fP(1),
+\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
+\fBprotbas\fP(1),
+\fBrenumbas\fP(1),
+\fBrom2cart\fP(1),
+\fBunmac65\fP(1),
+\fBunprotbas\fP(1),
+\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
+\fBxex1to2\fP(1),
+\fBxexamine\fP(1),
+\fBxexcat\fP(1),
+\fBxexsplit\fP(1),
+\fBxfd2atr\fP(1),
+\fBxex\fP(5),
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
+.sp
+Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
+Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
+.\" Generated by docutils manpage writer.
+.
diff --git a/bas2aplus.c b/bas2aplus.c
new file mode 100644
index 0000000..de259aa
--- /dev/null
+++ b/bas2aplus.c
@@ -0,0 +1,272 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <time.h>
+
+#include "bas.h"
+
+#undef DUMP_TABLES
+
+#include "tokens.c"
+#include "aplus_tokens.c"
+#include "bxl_tokens.c"
+#include "bxe_tokens.c"
+
+int errs = 0;
+
+/* there are a few more BXL commands past 0x55, but they have no
+ A+ equivalents. */
+#define LAST_BXL_CMD 0x55
+#define LAST_BXL_OP 0x65
+
+/* cmd_table[basic_token] or op_table[basic_token] gives the equivalent
+ A+ token. note that there's no "GO TO" or "COM" in A+, we translate
+ those as GOTO and DIM. */
+unsigned char cmd_table[] = {
+ /* Atari BASIC: */
+ /* REM DATA INPUT COLOR LIST ENTER LET IF:*/
+ 0x00, 0x01, 0x02, 0x3f, 0x03, 0x04, 0x05, 0x06, /* 0x00 - 0x07 */
+
+ /* FOR NEXT GOTO GO<sp>TO GOSUB TRAP BYE CONT: */
+ 0x07, 0x08, 0x09, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, /* 0x08 - 0x0f */
+
+ /* COM CLOSE CLR DEG DIM END NEW OPEN: */
+ 0x12, 0x0f, 0x10, 0x11, 0x12, 0x19, 0x1a, 0x1b, /* 0x10 - 0x17 */
+
+ /* LOAD SAVE STATUS NOTE POINT XIO ON POKE: */
+ 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, /* 0x18 - 0x1f */
+
+ /* PRINT RAD READ RESTORE RETURN RUN STOP POP: */
+ 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, /* 0x20 - 0x27 */
+
+ /* ? GET PUT GRAPHICS PLOT POSITION DOS DRAWTO: */
+ 0x2d, 0x2e, 0x2f, 0x40, 0x41, 0x42, 0x38, 0x43, /* 0x28 - 0x2f */
+
+ /* SETCOLOR LOCATE SOUND LPRINT CSAVE CLOAD <silent-let> ERROR-: */
+ 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x52, 0x53, /* 0x30 - 0x37 */
+
+ /* BASIC XL: */
+ /* WHILE ENDWHILE TRACEOFF TRACE ELSE ENDIF DPOKE LOMEM: */
+ 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x24, 0x30, /* 0x38-0x3f */
+
+ /* DEL RPUT RGET BPUT BGET TAB CP ERASE: */
+ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x39, /* 0x40-0x47 */
+
+ /* PROTECT UNPROTECT DIR RENAME MOVE MISSILE PMCLR PMCOLOR: */
+ 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x4a, 0x4b, 0x4c, /* 0x48-0x4f */
+
+ /* PMGRAPHICS PMMOVE PMWIDTH SET LVAR RENUM: */
+ 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x0a, /* 0x50-0x55 */
+
+};
+
+/* 0xff means "untranslatable". these are:
+ BUMP( FIND( HEX$ RANDOM(
+ ...though BUMP( and FIND( do have A+ equivalents (they just need
+ a left paren inserted after) */
+unsigned char op_table[] = {
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* not used: 0x00-0x07 */
+ 0xff, 0xff, 0xff, 0xff, 0xff, /* not used: 0x08-0x0c */
+ 0x0e, /* convert BXL hex const to decimal */
+ 0x0e, 0x0f, /* numeric and string consts are the same */
+ 0xff, 0xff, /* these 2 not used: 0x10-0x11 */
+
+ /* these are the same, 0x12-0x1b */
+ 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b,
+
+ /* 0x1c-0x2a off by one due to USING inserted at 0x1c */
+ 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24,
+ 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
+
+ /* 0x2b-0x43 off by 3 due to ! and & */
+ 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
+ 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
+ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45,
+ 0x46,
+
+ /* 0x44-0x50 */
+ 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51,
+ 0x52, 0x53, 0x54, 0x55, 0x56,
+
+ /* 0x51-0x54 (last BASIC) */
+ 0x58, 0x59, 0x5a, 0x5b,
+
+ /* BXL stuff, 0x55-0x5f */
+ 0x1c, 0xff /* % */, 0x2c, 0x2d,
+ 0xff, /* string array semicolon */
+ 0xff, /* BUMP( (TODO: A+ token 0x47 plus a paren) */
+ 0xff, /* FIND( (TODO: A+ token 0x48 plus a paren) */
+ 0xff, /* HEX$ */
+ 0xff, /* RANDOM( */
+ 0x49, /* DPEEK */
+ 0x57, /* SYS */
+ 0x5c, /* VSTICK */
+ 0x5d, /* HSTICK */
+ 0x5e, /* PMADR */
+ 0x5f, /* ERR */
+ 0x60, /* TAB */
+ 0x61, /* PEN */
+
+};
+
+#ifdef DUMP_TABLES
+void dump_tables(void) {
+ int i;
+
+ for(i = 0; i <= LAST_BXL_CMD; i++) {
+ const char *b, *ap = aplus_cmds[cmd_table[i]];
+ if(i <= last_command)
+ b = commands[i];
+ else
+ b = bxl_cmds[i - 0x38];
+ printf("%02x: %s %s%s\n", i, b, ap, (strcmp(b, ap) == 0) ? " SAME" : "");
+ }
+
+ printf("\n\n");
+
+ for(i = 0x12; i <= LAST_BXL_OP; i++) {
+ int j = op_table[i];;
+ const char *b, *ap;
+ if(j == 0xff)
+ ap = "(not in A+)";
+ else
+ ap = aplus_ops[j];
+ if(i <= last_operator)
+ b = operators[i];
+ else
+ b = bxl_ops[i - 0x55];
+ printf("%02x: %s %s%s\n", i, b, ap, (strcmp(b, ap) == 0) ? " SAME" : "");
+ }
+}
+#endif
+
+void print_help(void) {
+ printf("%s [input-file] [output-file]\n", self);
+}
+
+void parse_args(int argc, char **argv) {
+ int opt;
+
+ while( (opt = getopt(argc, argv, "v")) != -1) {
+ switch(opt) {
+ case 'v': verbose = 1; break;
+ case 'h': print_help(); exit(0);
+ default:
+ print_help();
+ exit(1);
+ }
+ }
+
+ if(optind == argc)
+ die("No input file given.");
+ else
+ open_input(argv[optind]);
+
+ if(++optind == argc)
+ die("No output file given.");
+ else
+ output_filename = argv[optind];
+
+ if(argv[++optind])
+ die("Only one input and one output file allowed.");
+}
+
+const char *get_tok_name(unsigned char tok, int is_cmd) {
+ if(is_cmd) {
+ if(tok <= last_command) {
+ return commands[tok];
+ } else if(tok == 0x5a) {
+ return "BASIC XL LOCAL/EXIT/PROCEDURE/CALL/SORTUP/SORTDOWN";
+ } else if(tok == 0x59 || (tok > 0x5a && tok < 0x65)) {
+ return bxe_cmds[tok - 0x57];
+ } else if(tok > last_command && tok <= 0x58) {
+ return bxl_cmds[tok - 0x38];
+ } else {
+ return "(maybe Turbo BASIC?)";
+ }
+ } else {
+ if(tok < 0x12) return "";
+ if(tok <= last_operator) {
+ return operators[tok];
+ } else if(tok <= 0x68) {
+ return bxl_ops[tok - 0x55];
+ } else {
+ return "(maybe Turbo BASIC?)";
+ }
+ }
+}
+
+void unsupported_msg(unsigned char tok, int lineno, int is_cmd) {
+ fprintf(stderr, "%s: Invalid %s \"%s\" ($%02x) at line %d, not converted.\n",
+ self, is_cmd ? "command" : "operator", get_tok_name(tok, is_cmd), tok, lineno);
+ errs++;
+}
+
+int is_supported_cmd(unsigned char tok, int lineno) {
+ if(tok > LAST_BXL_CMD) {
+ unsupported_msg(tok, lineno, 1);
+ return 0;
+ }
+ return 1;
+}
+
+int is_supported_op(unsigned char tok, int lineno) {
+ if(tok > LAST_BXL_OP || op_table[tok] == 0xff) {
+ unsupported_msg(tok, lineno, 0);
+ return 0;
+ }
+ return 1;
+}
+
+CALLBACK(conv_cmd) {
+ if(!is_supported_cmd(tok, lineno))
+ return;
+
+ program[pos] = cmd_table[tok];
+
+ if(verbose && tok != program[pos])
+ fprintf(stderr, "command \"%s\" ($%02x) converted to $%02x at line %d, pos $%04x\n",
+ get_tok_name(tok, 1), tok, program[pos], lineno, pos);
+}
+
+CALLBACK(conv_op) {
+ if(!is_supported_op(tok, lineno))
+ return;
+
+ program[pos] = op_table[tok];
+
+ if(verbose && tok != program[pos])
+ fprintf(stderr, "operator \"%s\" ($%02x) converted to $%02x at line %d, pos $%04x\n",
+ get_tok_name(tok, 0), tok, program[pos], lineno, pos);
+}
+
+int main(int argc, char **argv) {
+#ifdef DUMP_TABLES
+ dump_tables(); exit(0);
+#endif
+ set_self(*argv);
+ parse_general_args(argc, argv, print_help);
+ parse_args(argc, argv);
+
+ readfile();
+ parse_header();
+
+ on_cmd_token = conv_cmd;
+ on_exp_token = conv_op;
+
+ allow_hex_const = 1;
+ walk_all_code();
+
+ open_output(output_filename);
+ writefile();
+
+ if(errs) {
+ fprintf(stderr, "%s: program has %d invalid tokens; BASIC/A+ won't RUN it.\n",
+ self, errs);
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/bas2aplus.rst b/bas2aplus.rst
new file mode 100644
index 0000000..4ce3f50
--- /dev/null
+++ b/bas2aplus.rst
@@ -0,0 +1,143 @@
+=========
+bas2aplus
+=========
+
+---------------------------------------------------------------
+Convert Atari BASIC (and some BASIC XL/XE) programs to BASIC/A+
+---------------------------------------------------------------
+
+.. include:: manhdr.rst
+
+SYNOPSIS
+========
+
+bas2aplus *input-file* *output-file*
+
+DESCRIPTION
+===========
+
+**bas2aplus** reads an Atari BASIC or BASIC XL/XE tokenized (SAVEd)
+program and converts it to BASIC/A+. The conversion is a simple token
+replacement; no syntax or semantic analysis is done.
+
+*input-file* must be an Atari BASIC, BASIC XL, or BASIC XE program.
+Turbo BASIC is not supported. Trying to convert a program that is
+already BASIC/A+ will appear to succeed, but the resulting program
+will be gibberish and will likely crash BASIC/A+ when **RUN**.
+
+All Atari BASIC programs can be successfully converted. Some BASIC
+XL/XE tokens have no equivalent in BASIC/A+, so programs using these
+can't be converted (you will see messages on standard error, in that
+case).
+
+OPTIONS
+=======
+
+.. include:: genopts.rst
+
+BASIC
+=====
+
+BASIC/A+ is basically a later version of Atari BASIC, by the same team
+that developed Atari BASIC. As such, it's source-compatible with Atari
+BASIC, but *not* token-compatible.
+
+BASIC/A+ uses a different set of token numbers, but has all but two
+of the same tokens used by Atari BASIC. Conversion should always
+succeed, for an Atari BASIC program.
+
+The two missing tokens are the **COM** and **GO TO** commands, which
+are converted to **DIM** and **GOTO**, respectively.
+
+The resulting program should **LOAD** and **RUN** in BASIC/A+ and
+function identically to the BASIC version, unless it uses memory
+that's reserved in A+. **USR()** routines that are stored in the lower
+half of Page 6 will have to be relocated, since A+ uses this area
+itself. See the BASIC/A+ manual for full details.
+
+BASIC XL
+========
+
+BASIC XL is basically the next version of BASIC/A+, by the
+same developers. The token lists were rearranged so that it's
+token-compatible with Atari BASIC, and includes all the extra
+commands/functions/etc from BASIC/A+... with different token numbers.
+
+BASIC XL has keywords and operators that don't exist in BASIC/A+,
+which can't be translated by **bas2aplus**. These are:
+
+**NUM**
+ Rarely found in a program (usually only used in direct mode).
+
+**FAST**
+ Just doesn't exist in BASIC/A+.
+
+**LOCAL**, **EXIT**, **PROCEDURE**, **CALL**, **SORTUP**, **SORTDOWN**
+ These BASIC XL commands are provided by the disk-based Toolkit
+ extension, which doesn't exist for BASIC/A+.
+
+**String Arrays**
+ BASIC/A+ doesn't support these; if your BASIC XL program uses them,
+ it won't convert correctly.
+
+**BUMP** and **FIND**
+ While BASIC/A+ does support these functions, the token-level syntax
+ is different; it would be possible to translate them, but it would
+ require recalculating the line offset and statement offsets for
+ every line that uses them. For now, they're not supported.
+
+**%**
+ The exclusive OR operator in BASIC XL. No such animal, in A+.
+
+**HEX$**, **RANDOM**, **LEFT$**, **RIGHT$**, **MID$**
+ These functions don't exist in BASIC/A+.
+
+Also, BASIC XL supports hex constants, with a leading **$**. A+
+doesn't support these, so they get converted to the equivalent decimal
+constant. This is basically a cosmetic change; **A=$0600** assigns the
+same value as **A=1536**.
+
+BASIC XL also allows some syntax that's not valid in BASIC
+A+. For instance, **DIR** is allowed with no argument in XL.
+**bas2aplus** doesn't detect these constructs.
+
+BASIC XE
+========
+
+BASIC XE is the last in the series of OSS BASIC interpreters. It
+supports "EXTENDed" mode, which allows BASIC XE to use all the
+memory in a 130XE, but such programs are *not* supported by
+**bas2aplus**. Only non-EXTENDed BASIC XE programs can be converted.
+
+BASIC XE adds a few keywords to BASIC XL, which also don't exist in
+A+. These are:
+
+**EXTEND**
+ This command is direct-mode only, so it will never appear in a SAVEd
+ program anyway.
+
+**HITCLR**, **INVERSE**, **NORMAL**, **BLOAD**, **BSAVE**
+ Not supported in either A+ or XL.
+
+BASIC XE also allows some syntax that's not valid in either BASIC XL
+or A+. For instance, **IF <condition>**, without **THEN**, can appear
+as the last statement on a line, and **LVAR** no longer requires an
+argument. **bas2aplus** doesn't detect these constructs.
+
+Actually, BASIC/A+ will **LIST** and **RUN** programs with the **IF**
+issue, but such lines can't be edited in A+. Easy enough to add a
+**:REM** to the end of the line, though.
+
+TURBO BASIC
+===========
+
+Not supported. It's also an extended version of Atari BASIC (by
+a different developer), but extends the syntax in ways that just
+wouldn't convert directly to BASIC/A+.
+
+EXIT STATUS
+===========
+
+0 for success, non-zero for failure.
+
+.. include:: manftr.rst
diff --git a/blob2c.1 b/blob2c.1
index 56c8977..32ee530 100644
--- a/blob2c.1
+++ b/blob2c.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "BLOB2C" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "BLOB2C" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
blob2c \- Create C source and header files from a binary file
.\" RST source for blob2c(1) man page. Convert with:
@@ -122,28 +122,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/blob2xex.1 b/blob2xex.1
index 6f06b32..377d792 100644
--- a/blob2xex.1
+++ b/blob2xex.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "BLOB2XEX" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "BLOB2XEX" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
blob2xex \- Create Atari 8-bit executables from arbitrary data
.\" RST source for blob2xex(1) man page. Convert with:
@@ -213,28 +213,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/bxe_tokens.c b/bxe_tokens.c
new file mode 100644
index 0000000..5189ee0
--- /dev/null
+++ b/bxe_tokens.c
@@ -0,0 +1,19 @@
+/* BXL and BXE token tables are identical up to 0x56 */
+const char *bxe_cmds[] = {
+ "LOCAL", /* $57 */
+ "EXTEND", /* $58 */
+ "PROCEDURE", /* $59 */
+ 0, /* $5A */
+ "CALL", /* $5B */
+ "SORTUP", /* $5C */
+ "SORTDOWN", /* $5D */
+ "EXIT", /* $5E */
+ "NUM", /* $5F */
+ "HITCLR", /* $60 */
+ "INVERSE", /* $61 */
+ "NORMAL", /* $62 */
+ "BLOAD", /* $63 */
+ "BSAVE" /* $64 */
+};
+
+const int bxe_cmd_size = sizeof(bxe_cmds);
diff --git a/bxe_tokens.h b/bxe_tokens.h
new file mode 100644
index 0000000..25bc14a
--- /dev/null
+++ b/bxe_tokens.h
@@ -0,0 +1,2 @@
+extern const char *bxe_cmds[];
+extern const int bxe_cmd_size;
diff --git a/bxl_tokens.c b/bxl_tokens.c
new file mode 100644
index 0000000..3543f11
--- /dev/null
+++ b/bxl_tokens.c
@@ -0,0 +1,64 @@
+const char *bxl_cmds[] = {
+ "WHILE", /* $38 */
+ "ENDWHILE", /* $39 */
+ "TRACEOFF", /* $3A */
+ "TRACE", /* $3B */
+ "ELSE", /* $3C */
+ "ENDIF", /* $3D */
+ "DPOKE", /* $3E */
+ "LOMEM", /* $3F */
+ "DEL", /* $40 */
+ "RPUT", /* $41 */
+ "RGET", /* $42 */
+ "BPUT", /* $43 */
+ "BGET", /* $44 */
+ "TAB", /* $45 */
+ "CP", /* $46 */
+ "ERASE", /* $47 */
+ "PROTECT", /* $48 */
+ "UNPROTECT", /* $49 */
+ "DIR", /* $4A */
+ "RENAME", /* $4B */
+ "MOVE", /* $4C */
+ "MISSILE", /* $4D */
+ "PMCLR", /* $4E */
+ "PMCOLOR", /* $4F */
+ "PMGRAPHICS", /* $50 */
+ "PMMOVE", /* $51 */
+ "PMWIDTH", /* $52 */
+ "SET", /* $53 */
+ "LVAR", /* $54 */
+ "RENUM", /* $55 */
+ "FAST", /* $56 */
+ "NUM", /* $57 */
+ "END", /* $58 */
+ 0, /* $59 */
+ "", /* $5A, disk extensions */
+};
+
+const int bxl_cmd_size = sizeof(bxl_cmds);
+
+const char *bxl_ops[] = {
+ " USING ", /* $55 */
+ "%", /* $56 */
+ "!", /* $57 */
+ "&", /* $58 */
+ ";", /* $59 */
+ "BUMP(", /* $5A */
+ "FIND(", /* $5B */
+ "HEX$", /* $5C */
+ "RANDOM(", /* $5D */
+ "DPEEK", /* $5E */
+ "SYS", /* $5F */
+ "VSTICK", /* $60 */
+ "HSTICK", /* $61 */
+ "PMADR", /* $62 */
+ "ERR", /* $63 */
+ "TAB", /* $64 */
+ "PEN", /* $65 */
+ "LEFT$(", /* $66 */
+ "RIGHT$(", /* $67 */
+ "MID$(", /* $68 */
+};
+
+const int bxl_ops_size = sizeof(bxl_ops);
diff --git a/bxl_tokens.h b/bxl_tokens.h
new file mode 100644
index 0000000..b769038
--- /dev/null
+++ b/bxl_tokens.h
@@ -0,0 +1,5 @@
+extern const char *bxl_cmds[];
+extern const int bxl_cmd_size;
+
+extern const char *bxl_ops[];
+extern const int bxl_ops_size;
diff --git a/cart2xex.1 b/cart2xex.1
index 349e637..8c18e08 100644
--- a/cart2xex.1
+++ b/cart2xex.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CART2XEX" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "CART2XEX" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
cart2xex \- Convert an Atari 8-bit ROM cartridge image to a binary load file
.\" RST source for cart2xex(1) man page. Convert with:
@@ -231,28 +231,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/colorize-amsb b/colorize-amsb
new file mode 100755
index 0000000..4d6c616
--- /dev/null
+++ b/colorize-amsb
@@ -0,0 +1,284 @@
+#!/usr/bin/perl -w
+
+# colorize output from listbas... *after* it's been converted to utf8
+# with a8cat, including ANSI codes for reverse/normal video.
+
+($SELF = $0) =~ s,.*/,,;
+
+%colornames = (
+ none => 0,
+ red => 1,
+ green => 2,
+ yellow => 3,
+ blue => 4,
+ purple => 5,
+ cyan => 6,
+);
+
+%colors = (
+ numbers => 'red',
+ commands => 'yellow',
+ functions => 'purple',
+ linenumbers => 'cyan',
+ comments => 'blue',
+ variables => 'none',
+ operators => 'green',
+ strings => 'red',
+);
+
+@commands = qw/
+ END FOR NEXT READ DATA RESTORE LINE INPUT DEFSTR DEFINT DEFDBL DEFSNG
+ OPTION DIM COMMON DEF LET RANDOMIZE GOTO GOSUB RETURN GO RUN IF
+ ELSE THEN STOP CONT RESUME ERROR ON AFTER POKE WAIT MOVE LOAD SAVE
+ VERIFY MERGE PRINT PRINT LIST AUTO DEL TRON TROFF RENUM OPEN CLOSE
+ GET PUT NOTE LOCK UNLOCK KILL NAME GRAPHICS COLOR PLOT FILL SETCOLOR
+ SOUND CLS DOS CLEAR NEW CLOAD CSAVE BASE TO SUB NOT STEP ALL USING
+ RESERVE UPDATE OUTPUT APPEND AT PLM0 PLM2 PLM1 CHR0 CHR1 CHR2 AND
+ OR XOR
+/;
+
+@functions = qw/
+ TAB SPC AT SGN INT ABS FRE POS SQR LOG EXP COS SIN TAN ATN PEEK LEN STR
+ VAL ASC CHR STATUS EOF LEFT RIGHT MID INSTR STRING VARPTR USR SCRN RND
+ TIME INKEY ERR ERL STACK
+/;
+
+$cmdhash{$_}++ for @commands;
+$funchash{$_}++ for @functions;
+
+sub conf_file_name {
+ my $home = $ENV{HOME};
+ if(!defined $home) {
+ warn "$SELF: HOME not set in environment, not reading config file\n";
+ return undef;
+ }
+ return $home . '/.colorize-amsb.conf';
+}
+
+sub read_config {
+ my $file = conf_file_name();
+ return 1 if !defined $file; # caller won't create
+ open my $fh, '<', $file or return 0; # not found, caller will create
+
+ while(<$fh>) {
+ chomp;
+ s/#.*//;
+ next if /^\s*$/;
+ s/^\s*//;
+ s/\s*$//;
+ $_ = lc $_;
+ if(/^([a-z]+)[^a-z]+([a-z]+)*$/) {
+ my($k, $v) = ($1, $2);
+ if(!defined $colors{$k}) {
+ warn "$SELF: $file:$.: unknown color type '$k', ignoring\n";
+ } elsif(!defined $colornames{$v}) {
+ warn "$SELF: $file:$.: unknown color name '$v', ignoring\n";
+ } else {
+ $colors{$k} = $v;
+ }
+ } else {
+ warn "$SELF: $file:$.: malformed line, skipping\n";
+ }
+ }
+
+ close $fh;
+}
+
+sub create_config {
+ my $file = conf_file_name();
+ return unless defined $file;
+ open my $fh, '>', $file or do {
+ warn "$SELF: can't create $file: $!\n";
+ return;
+ };
+
+ my $types = join(" ", sort keys %colors);
+ my $names = join(" ", sort keys %colornames);
+
+ print $fh <<EOF;
+# colorize-amsb.conf
+
+# lines with # are comments. blank lines are ignored.
+
+# each line is "type = color", where valid types are:
+# $types
+# and valid colors are:
+# $names
+
+EOF
+
+ for(sort keys %colors) {
+ print $fh '#' . $_ . ' = ' . $colors{$_} . "\n";
+ }
+
+ close $fh;
+}
+
+sub is_cmd {
+ return $cmdhash{$_[0]};
+}
+
+sub is_func {
+ return $funchash{$_[0]};
+}
+
+sub is_punct {
+ for($_[0]) {
+ return 0 if length > 1;
+ return 0 if /[\sA-Za-z0-9]/;
+ }
+ return 1;
+}
+
+sub is_varname {
+ return $_[0] =~ /^[A-Z]/;
+}
+
+sub start_color {
+ my $color = shift;
+ my $colortype = $colors{$color} || die "invalid color type $color\n";
+ my $colornum = $colornames{$colortype};
+ die "invalid color name $color\n" unless defined $colornum;
+ if($colornum) {
+ print "\x1b[3" . $colornum . "m";
+ }
+}
+
+sub end_color {
+ print "\x1b[0m";
+}
+
+sub colorize {
+ my $color = shift;
+ my $text = shift;
+ #warn "color $color, text '$text'\n";
+ start_color($color) if $color;
+ print $text;
+ end_color if $color;
+}
+
+sub colorize_line {
+ my $line = shift;
+
+ # skip initial blank line (or really any blank lines)
+ return unless length $line;
+
+ # split on non-word characters, capturing the delimiters.
+ # spliting this: 10 PRINT "HELLO":A=1.0E+10:END
+ # ...gives this set of tokens:
+ # 10
+ # <space>
+ # PRINT
+ # <space>
+ # "
+ # HELLO
+ # "
+ # :
+ # 1
+ # .
+ # 0E
+ # +
+ # 10
+ # :
+ # END
+
+ @toks = (split(/(\W)/, $line));
+
+ # special case the line number
+ my $tok = shift @toks;
+ if($tok =~ /^\d+/) {
+ colorize('linenumbers', $tok);
+ } else {
+ die "$SELF: no line number at line $., not LISTed AMSB?\n";
+ }
+
+ my $lasttok = '';
+ my $lastcolor = 0;
+ my $in_comment = 0;
+ my $in_string = 0;
+
+ # iterate over the rest of the tokens. kinda hairy, sorry.
+ for my $tok (@toks) {
+ my $color = 0;
+
+ if($in_comment || $in_string) {
+ $color = 0;
+ if($in_string && $tok eq '"') {
+ $in_string = 0;
+ $color = 'operators';
+ }
+ } elsif($tok =~ /^REM|!|'/) {
+ start_color('comments'); # rest of line
+ $in_comment = 1;
+ } elsif($tok eq '"') {
+ $color = 'operators';
+ $in_string = 1;
+ } elsif($tok eq '#') {
+ if($lastcolor eq 'variables') {
+ # double-precision variable
+ $color = 'variables';
+ } else {
+ # OPEN #, PRINT #, CLOSE #, etc
+ $color = 'operators';
+ }
+ } elsif($tok eq '%') {
+ # integer variable
+ $color = 'variables';
+ } elsif($tok eq '#' && $lastcolor eq 'variables') {
+ # double-precision variable
+ $color = 'variables';
+ } elsif($tok eq '$') {
+ # $ takes either the functions or variables color
+ $color = $lastcolor;
+ } elsif($tok eq '.') {
+ # decimal point only appears in a number
+ $color = 'numbers';
+ } elsif(($tok eq '-' || $tok eq '+') && $lasttok =~ /^\d+E$/) {
+ # scientific notation (entire number is the same color)
+ $color = 'numbers';
+ } elsif($tok eq '&') {
+ # hex constant operator
+ $color = 'numbers';
+ } elsif($lasttok eq '&') {
+ # hex constant argument
+ $color = 'numbers';
+ } elsif(is_cmd($tok)) {
+ $color = 'commands';
+ } elsif(is_func($tok)) {
+ $color = 'functions';
+ } elsif(is_punct($tok)) {
+ $color = 'operators';
+ } elsif(is_varname($tok)) {
+ $color = 'variables';
+ } else {
+ $color = 'numbers';
+ }
+
+ # if $color == 0, colorize() just prints the token without escape codes.
+ colorize($color, $tok);
+
+ # if we just started a string, set the strings color.
+ if($tok eq '"' && $in_string) {
+ start_color('strings');
+ }
+ $lastcolor = $color;
+ $lasttok = $tok;
+ }
+
+ # don't leave the text color enabled at the end of the line.
+ end_color() if $in_comment || $in_string;
+}
+
+# main()
+binmode(STDIN, ":utf8");
+binmode(STDOUT, ":utf8");
+
+if(!read_config()) {
+ create_config();
+}
+
+while(<>) {
+ chomp;
+ colorize_line($_);
+ print "\n";
+}
diff --git a/colorize-amsb.1 b/colorize-amsb.1
new file mode 100644
index 0000000..f18143d
--- /dev/null
+++ b/colorize-amsb.1
@@ -0,0 +1,100 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "COLORIZE-AMSB" 1 "2025-03-16" "0.2.2" "Urchlay's Atari 8-bit Tools"
+.SH NAME
+colorize-amsb \- color syntax highlighting for detokenized Atari MS BASIC
+.SH SYNOPSIS
+.sp
+\fBcolorize\-amsb\fP [\fBfile\fP]
+.SH DESCRIPTION
+.sp
+\fBcolorize\-amsb\fP is a filter that postprocesses the LISTed output
+of \fBlistamsb\fP, after it has been piped through \fBa8cat\fP\&. Normally,
+there\(aqs no need to run \fBcolorize\-amsb\fP explicitly, as it\(aqs called by
+\fBlistamsb\fP automatically.
+.sp
+\fBcolorize\-amsb\fP takes no options.
+.SH CONFIGURATION
+.sp
+The colors are controlled by the config file, \fB~/.colorize\-amsb.conf\fP\&.
+.sp
+If the file doesn\(aqt exist, \fBcolorize\-amsb\fP creates it, with all
+options commented out. See the comments in the file for the syntax.
+.SH EXIT STATUS
+.sp
+0 for success, non\-zero for any error. Error messages are printed to \fBstderr\fP\&.
+.SH COPYRIGHT
+.sp
+WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
+.SH AUTHOR
+.INDENT 0.0
+.IP B. 3
+Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fBa8cat\fP(1),
+\fBa8eol\fP(1),
+\fBa8xd\fP(1),
+\fBatr2xfd\fP(1),
+\fBatrsize\fP(1),
+\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
+\fBblob2c\fP(1),
+\fBblob2xex\fP(1),
+\fBcart2xex\fP(1),
+\fBcxrefbas\fP(1),
+\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
+\fBdumpbas\fP(1),
+\fBf2toxex\fP(1),
+\fBfenders\fP(1),
+\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
+\fBprotbas\fP(1),
+\fBrenumbas\fP(1),
+\fBrom2cart\fP(1),
+\fBunmac65\fP(1),
+\fBunprotbas\fP(1),
+\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
+\fBxex1to2\fP(1),
+\fBxexamine\fP(1),
+\fBxexcat\fP(1),
+\fBxexsplit\fP(1),
+\fBxfd2atr\fP(1),
+\fBxex\fP(5),
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
+.sp
+Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
+Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
+.\" Generated by docutils manpage writer.
+.
diff --git a/colorize-amsb.rst b/colorize-amsb.rst
new file mode 100644
index 0000000..b680b31
--- /dev/null
+++ b/colorize-amsb.rst
@@ -0,0 +1,39 @@
+=============
+colorize-amsb
+=============
+
+--------------------------------------------------------
+color syntax highlighting for detokenized Atari MS BASIC
+--------------------------------------------------------
+
+.. include:: manhdr.rst
+
+SYNOPSIS
+========
+
+**colorize-amsb** [**file**]
+
+DESCRIPTION
+===========
+
+**colorize-amsb** is a filter that postprocesses the LISTed output
+of **listamsb**, after it has been piped through **a8cat**. Normally,
+there's no need to run **colorize-amsb** explicitly, as it's called by
+**listamsb** automatically.
+
+**colorize-amsb** takes no options.
+
+CONFIGURATION
+=============
+
+The colors are controlled by the config file, **~/.colorize-amsb.conf**.
+
+If the file doesn't exist, **colorize-amsb** creates it, with all
+options commented out. See the comments in the file for the syntax.
+
+EXIT STATUS
+===========
+
+0 for success, non-zero for any error. Error messages are printed to **stderr**.
+
+.. include:: manftr.rst
diff --git a/cxrefbas.1 b/cxrefbas.1
index 893d47b..91fc308 100644
--- a/cxrefbas.1
+++ b/cxrefbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CXREFBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "CXREFBAS" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
cxrefbas \- Code cross-reference for tokenized Atari 8-bit BASIC files
.SH SYNOPSIS
@@ -160,28 +160,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/dasm2atasm.1 b/dasm2atasm.1
index 18f0100..733037c 100644
--- a/dasm2atasm.1
+++ b/dasm2atasm.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DASM2ATASM" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "DASM2ATASM" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
dasm2atasm \- Convert 6502 assembly source from dasm syntax to atasm or ca65 syntax.
.\" RST source for dasm2atasm(1) man page. Convert with:
@@ -229,28 +229,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/diffbas b/diffbas
new file mode 100755
index 0000000..ef621e5
--- /dev/null
+++ b/diffbas
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+usage() {
+ cat <<EOF
+Usage: $( basename $0 ) [diff-opts] [-- listbas-opts] file1.bas file2.bas
+
+Diff two tokenized Atari BASIC programs, using listbas(1) and diff(1).
+
+[diff-opts] is passed through as-is to diff.
+[listbas-opts] is passed through as-is to listbas.
+EOF
+ exit "$1"
+}
+
+cleanup() {
+ if [ "$dir" != "" ]; then
+ cd
+ rm -rf "$dir"
+ fi
+}
+
+if [ "$1" = "-h" -o "$1" = "--help" -o "$1" = "" ]; then
+ usage 0
+fi
+
+for i in "$@"; do
+ if [ -f "$i" ]; then
+ if [ "$file1" = "" ]; then
+ file1="$( realpath $i )"
+ base1="$( basename $i )".lst
+ elif [ "$file2" = "" ]; then
+ file2="$( realpath $i )"
+ base2="$( basename $i )".lst
+ else
+ usage 1
+ fi
+ elif [ "$i" = "--" ]; then
+ opts="listbasopts"
+ elif [ "$opts" = "listbasopts" ]; then
+ listbasopts="$listbasopts $i"
+ else
+ diffopts="$diffopts $i"
+ fi
+done
+
+dir="$( mktemp -d -t diffbas.XXXXXXXXXX )"
+[ -d "$dir" ]
+cd "$dir"
+trap cleanup EXIT
+set -e
+
+listbas $listbasopts "$file1" > $base1
+listbas $listbasopts "$file2" > $base2
+diff $diffopts $base1 $base2
+
+exit 0
diff --git a/diffbas.1 b/diffbas.1
new file mode 100644
index 0000000..67a9f4f
--- /dev/null
+++ b/diffbas.1
@@ -0,0 +1,132 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "DIFFBAS" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
+.SH NAME
+diffbas \- Show differences between two tokenized Atari 8-bit BASIC files
+.SH SYNOPSIS
+.sp
+diffbas [\fIdiff\-options\fP] [\fB\-\-\fP \fIlistbas\-options\fP] \fIfile1\fP \fIfile2\fP
+.SH DESCRIPTION
+.sp
+\fBdiffbas\fP shows the differences between two tokenized (SAVEd)
+Atari BASIC programs, using \fBlistbas\fP(1) and \fBdiff\fP(1).
+.SH OPTIONS
+.sp
+\fBdiffbas\fP takes no options of its own. It will pass options as\-is
+to both \fBlistbas\fP and \fBdiff\fP\&. Use \fB\-\-\fP to separate them: everything
+before \fB\-\-\fP is passed to \fBdiff\fP, and everything between \fB\-\-\fP and
+the first filename is passed to \fBlistbas\fP\&.
+.SH COLOR
+.sp
+By default, the output is colorized by \fBlistbas\fP\&. If you want to use
+\fBdiff\fP\(aqs \fB\-\-color\fP option, you should use \fB\-n\fP as a \fBlistbas\fP
+option. Color diffs are most useful with \fB\-u\fP (unified diff format),
+so the command would look like:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+$ diffbas \-u \-\-color \-\- \-n A.BAS B.BAS
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH EXAMPLE
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+$ diffbas \-u A.BAS B.BAS
+
+\-\-\- A.BAS.lst 2024\-07\-12 23:56:46.937965855 \-0400
++++ B.BAS.lst 2024\-07\-12 23:56:46.938965854 \-0400
+@@ \-1,3 +1,4 @@
+ 10 ? "THIS LINE IS IN BOTH PROGRAMS."
+ 20 ? "THIS LINE IS ALSO IN BOTH."
++25 ? "THIS LINE ONLY IN B.BAS!"
+ 30 END
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.SH EXIT STATUS
+.sp
+0 for success. On failure, the exit status is that of whichever command
+failed (\fBlistbas\fP or \fBdiff\fP).
+.SH COPYRIGHT
+.sp
+WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
+.SH AUTHOR
+.INDENT 0.0
+.IP B. 3
+Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fBa8cat\fP(1),
+\fBa8eol\fP(1),
+\fBa8xd\fP(1),
+\fBatr2xfd\fP(1),
+\fBatrsize\fP(1),
+\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
+\fBblob2c\fP(1),
+\fBblob2xex\fP(1),
+\fBcart2xex\fP(1),
+\fBcxrefbas\fP(1),
+\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
+\fBdumpbas\fP(1),
+\fBf2toxex\fP(1),
+\fBfenders\fP(1),
+\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
+\fBprotbas\fP(1),
+\fBrenumbas\fP(1),
+\fBrom2cart\fP(1),
+\fBunmac65\fP(1),
+\fBunprotbas\fP(1),
+\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
+\fBxex1to2\fP(1),
+\fBxexamine\fP(1),
+\fBxexcat\fP(1),
+\fBxexsplit\fP(1),
+\fBxfd2atr\fP(1),
+\fBxex\fP(5),
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
+.sp
+Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
+Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
+.\" Generated by docutils manpage writer.
+.
diff --git a/diffbas.rst b/diffbas.rst
new file mode 100644
index 0000000..0fd94c0
--- /dev/null
+++ b/diffbas.rst
@@ -0,0 +1,57 @@
+=======
+diffbas
+=======
+
+--------------------------------------------------------------
+Show differences between two tokenized Atari 8-bit BASIC files
+--------------------------------------------------------------
+
+.. include:: manhdr.rst
+
+SYNOPSIS
+========
+
+diffbas [*diff-options*] [**--** *listbas-options*] *file1* *file2*
+
+DESCRIPTION
+===========
+**diffbas** shows the differences between two tokenized (SAVEd)
+Atari BASIC programs, using **listbas**\(1) and **diff**\(1).
+
+OPTIONS
+=======
+**diffbas** takes no options of its own. It will pass options as-is
+to both **listbas** and **diff**. Use **--** to separate them: everything
+before **--** is passed to **diff**, and everything between **--** and
+the first filename is passed to **listbas**.
+
+COLOR
+=====
+By default, the output is colorized by **listbas**. If you want to use
+**diff**\'s **--color** option, you should use **-n** as a **listbas**
+option. Color diffs are most useful with **-u** (unified diff format),
+so the command would look like::
+
+ $ diffbas -u --color -- -n A.BAS B.BAS
+
+EXAMPLE
+=======
+
+::
+
+ $ diffbas -u A.BAS B.BAS
+
+ --- A.BAS.lst 2024-07-12 23:56:46.937965855 -0400
+ +++ B.BAS.lst 2024-07-12 23:56:46.938965854 -0400
+ @@ -1,3 +1,4 @@
+ 10 ? "THIS LINE IS IN BOTH PROGRAMS."
+ 20 ? "THIS LINE IS ALSO IN BOTH."
+ +25 ? "THIS LINE ONLY IN B.BAS!"
+ 30 END
+
+EXIT STATUS
+===========
+0 for success. On failure, the exit status is that of whichever command
+failed (**listbas** or **diff**).
+
+.. include:: manftr.rst
diff --git a/dumpbas.1 b/dumpbas.1
index 7eff370..44554e3 100644
--- a/dumpbas.1
+++ b/dumpbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "DUMPBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "DUMPBAS" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
dumpbas \- Formatted hexdump for tokenized Atari 8-bit BASIC files
.SH SYNOPSIS
@@ -210,28 +210,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/fauxtari.7 b/fauxtari.7
new file mode 100644
index 0000000..3300496
--- /dev/null
+++ b/fauxtari.7
@@ -0,0 +1,346 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "FAUXTARI" 7 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
+.SH NAME
+fauxtari \- Atari 8-bit-based font for Linux console and X11/Wayland/Mac/Windows
+.SH DESCRIPTION
+.sp
+\fBfauxtari\fP is a set of monospaced bitmap fonts for use with the
+Linux console or graphical environments such as X11. Most of the
+glyphs are taken from the Atari XL/XE ROM font; see \fBGLYPHS\fP, below.
+.sp
+Three font formats are provided: \fBpsf\fP, for use with the console;
+\fBbdf\fP, for use with "old\-school" X11 apps such as \fBxterm\fP(1);
+and \fBttf\fP for use with modern X11/Wayland/Mac/Windows apps.
+.SH APPEARANCE
+.sp
+The console (\fBpsf\fP files) and X11 (\fBbdf\fP files) fonts each come
+in 3 sizes: 8x8 (original size), 16x16 (scaled 2x), and 24x24 (scaled
+3x). The scaling has no interpolation or antialiasing, so the larger
+fonts have a blocky "retro" look.
+.sp
+The appearance of the font is also vertically squashed, since it was
+designed for non\-square pixels (NTSC and PAL "pixels" are slightly
+taller than they are wide). This allows you to fit a \fIlot\fP of text
+on the screen, in the console or with a fullscreen X terminal:
+.TS
+center;
+|l|l|l|.
+_
+T{
+Font Size
+T} T{
+Display Size
+T} T{
+Characters
+T}
+_
+T{
+8x8
+T} T{
+1280x1024
+T} T{
+160x128
+T}
+_
+T{
+8x8
+T} T{
+1920x1080
+T} T{
+240x135
+T}
+_
+T{
+8x8
+T} T{
+3840x2160
+T} T{
+480x270
+T}
+_
+T{
+16x16
+T} T{
+1280x1024
+T} T{
+80x64
+T}
+_
+T{
+16x16
+T} T{
+1920x1080
+T} T{
+120x67
+T}
+_
+T{
+16x16
+T} T{
+3840x2160
+T} T{
+240x135
+T}
+_
+T{
+24x24
+T} T{
+1280x1024
+T} T{
+53x42
+T}
+_
+T{
+24x24
+T} T{
+1920x1080
+T} T{
+80x45
+T}
+_
+T{
+24x24
+T} T{
+3840x2160
+T} T{
+160x90
+T}
+_
+.TE
+.sp
+Of course, the smaller font sizes might be too small to read, especially
+on smaller displays.
+.sp
+The TrueType font is scalable, but always retains the pixelated look.
+.SH CONSOLE
+.sp
+If the \fBpsf\fP fonts have been installed to the standard console font
+directory (usually \fB/usr/share/kbd/consolefonts/\fP; this is done by
+\fBmake install\fP when \fBbw\-atari8\-tools\fP is built), you can use e.g.:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+setfont fauxtari\-16
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Replace the 16 with 8 or 24, for the other sizes. For Slackware Linux,
+you can make this the default in \fB/etc/rc.d/rc.font\fP, or just put it
+in \fB/etc/rc.d/rc.local\fP\&. Other Linux distributions will have their
+own ways to set this up (especially systemd\-based ones).
+.SH X11/ETC
+.SS TTF (scalable)
+.sp
+The scalable font is called \fBFauxtari Scalable Mono\fP, and should be
+selectable from graphical applications that allow choosing the font.
+You may also see \fBFauxtari Fixed Mono\fP in the list; this is the \fBbdf\fP
+font.
+.sp
+It can also be used in \fBurxvt\fP and \fBxterm\fP (provided \fBxterm\fP
+was built with support for TTF fonts):
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+urxvt \-fn \(aqxft:Fauxtari Scalable Mono:pixelsize=16\(aq
+
+xterm \-fa \(aqFauxtari Scalable Mono\(aq \-fs 16
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The font can be scaled to any size, though it will look best if you
+stick with multiples of 8 pixels.
+.sp
+The scalable font should also work on Wayland, Macintosh, or Windows
+systems, though this hasn\(aqt been tested.
+.SS BDF (non\-scalable)
+.sp
+If the \fBbdf\fP fonts have been installed (via \fBmake install\fP when
+\fBbw\-atari8\-tools\fP is built), you should be able to launch a terminal
+via:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+xterm \-fn fauxtari\-16
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Replace the 16 with 8 or 24, for the other sizes. These names are
+aliases (added to \fBfonts.alias\fP in the font directory); the full
+names are:
+.INDENT 0.0
+.IP \(bu 2
+\-bw\-fauxtari fixed mono\-medium\-r\-normal\-\-8\-80\-75\-75\-c\-80\-iso10646\-1
+.IP \(bu 2
+\-bw\-fauxtari fixed mono\-medium\-r\-normal\-\-16\-160\-75\-75\-c\-160\-iso10646\-1
+.IP \(bu 2
+\-bw\-fauxtari fixed mono\-medium\-r\-normal\-\-24\-240\-75\-75\-c\-240\-iso10646\-1
+.UNINDENT
+.sp
+For \fBurxvt\fP(1), you might have to turn off the \fBboldFont\fP resource (set
+it to an empty string), or run it as:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+urxvt \-fn fauxtari\-16 \-fb ""
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This keeps \fBurxvt\fP from using some other font (from its built\-in
+list, or from your \fBURxvt.font\fP resource) for bold characters.
+.sp
+For \fBst\fP from suckless.org, run:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+st \-f fauxtari\-16
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+It\(aqs possible to use the fonts with \fBrxvt\fP, but since \fBrxvt\fP
+doesn\(aqt support Unicode, it won\(aqt be all that useful except for plain
+ASCII text. Why are you still using \fBrxvt\fP, anyway?
+.SH GLYPHS
+.sp
+All 3 sizes contain the same set of glyphs. These include:
+.INDENT 0.0
+.IP \(bu 2
+Printable ASCII. Complete. Mostly taken from the Atari 800XL ROM
+($E000 area), except the \fB~\fP \fB{\fP \fB}\fP \fB\(ga\fP characters which are
+missing from the Atari\(aqs character set (these were hand\-drawn by the
+author).
+.IP \(bu 2
+Unicode mappings for ATASCII graphics characters. Complete set. These
+work well with \fBlistbas\fP(1), \fBa8cat\fP(1), and \fBa8xd\fP(1). The glyphs
+are taken from the 800XL ROM.
+.IP \(bu 2
+The XL International Character set (umlauted/accented letters, plus
+the \fB¡\fP character and the British pound sign), taken from the 800XL ROM
+($CC00 area).
+.IP \(bu 2
+Arabic, taken from Atari\(aqs Arabic model of the 65XE. Only the
+isolated and terminal letter forms are included, but these are
+also mapped to the Unicode codepoints for the initial and medial forms.
+Hopefully this results in readable Arabic text. The creator of
+\fBfauxtari\fP can\(aqt read Arabic at all and doesn\(aqt know anyone who
+can, so some of the character mappings may be wrong.
+.IP \(bu 2
+Hebrew glyphs, the complete aleph\-bet, taken from the Hebrew ROM
+modification that was available for sale in Israel in the early 1980s.
+I\(aqm almost 100% certain this was a 3rd\-party product, not made by Atari.
+.IP \(bu 2
+Polish accented letters, taken from a Polish XL ROM found on the Web
+at some point. No idea who created this or whether it was homebrew or
+commercial.
+.IP \(bu 2
+A few extra Latin\-1 characters, hand\-drawn by the author. These include
+Spanish punctuation (quotation marks, inverted question mark), the
+copyright symbol, and the Euro currency sign.
+.IP \(bu 2
+TODO: Commodore 64 graphics characters.
+.UNINDENT
+.SH LIMITATIONS
+.INDENT 0.0
+.IP \(bu 2
+There should be more glyphs; at least Unicode Latin\-1 should have complete
+coverage. Some of them (e.g. fractions) will be hard to do in 8x8 character
+cells...
+.IP \(bu 2
+There are no true descenders, since the Atari ROM character set doesn\(aqt use them.
+Someday I may add hand\-hacked true descender versions of the fonts.
+.UNINDENT
+.SH COPYRIGHT
+.sp
+WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
+.SH AUTHOR
+.INDENT 0.0
+.IP B. 3
+Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fBa8cat\fP(1),
+\fBa8eol\fP(1),
+\fBa8xd\fP(1),
+\fBatr2xfd\fP(1),
+\fBatrsize\fP(1),
+\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
+\fBblob2c\fP(1),
+\fBblob2xex\fP(1),
+\fBcart2xex\fP(1),
+\fBcxrefbas\fP(1),
+\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
+\fBdumpbas\fP(1),
+\fBf2toxex\fP(1),
+\fBfenders\fP(1),
+\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
+\fBprotbas\fP(1),
+\fBrenumbas\fP(1),
+\fBrom2cart\fP(1),
+\fBunmac65\fP(1),
+\fBunprotbas\fP(1),
+\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
+\fBxex1to2\fP(1),
+\fBxexamine\fP(1),
+\fBxexcat\fP(1),
+\fBxexsplit\fP(1),
+\fBxfd2atr\fP(1),
+\fBxex\fP(5),
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
+.sp
+Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
+Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
+.\" Generated by docutils manpage writer.
+.
diff --git a/fauxtari.rst b/fauxtari.rst
new file mode 100644
index 0000000..736a9c4
--- /dev/null
+++ b/fauxtari.rst
@@ -0,0 +1,175 @@
+========
+fauxtari
+========
+
+--------------------------------------------------------------------
+Atari 8-bit-based font for Linux console and X11/Wayland/Mac/Windows
+--------------------------------------------------------------------
+
+.. include:: manhdr7.rst
+
+DESCRIPTION
+===========
+
+**fauxtari** is a set of monospaced bitmap fonts for use with the
+Linux console or graphical environments such as X11. Most of the
+glyphs are taken from the Atari XL/XE ROM font; see **GLYPHS**, below.
+
+Three font formats are provided: **psf**, for use with the console;
+**bdf**, for use with "old-school" X11 apps such as **xterm**\(1);
+and **ttf** for use with modern X11/Wayland/Mac/Windows apps.
+
+APPEARANCE
+==========
+
+The console (**psf** files) and X11 (**bdf** files) fonts each come
+in 3 sizes: 8x8 (original size), 16x16 (scaled 2x), and 24x24 (scaled
+3x). The scaling has no interpolation or antialiasing, so the larger
+fonts have a blocky "retro" look.
+
+The appearance of the font is also vertically squashed, since it was
+designed for non-square pixels (NTSC and PAL "pixels" are slightly
+taller than they are wide). This allows you to fit a *lot* of text
+on the screen, in the console or with a fullscreen X terminal:
+
+.. csv-table::
+
+ "Font Size", "Display Size", "Characters"
+ "8x8", "1280x1024", "160x128"
+ "8x8", "1920x1080", "240x135"
+ "8x8", "3840x2160", "480x270"
+ "16x16", "1280x1024", "80x64"
+ "16x16", "1920x1080", "120x67"
+ "16x16", "3840x2160", "240x135"
+ "24x24", "1280x1024", "53x42"
+ "24x24", "1920x1080", "80x45"
+ "24x24", "3840x2160", "160x90"
+
+Of course, the smaller font sizes might be too small to read, especially
+on smaller displays.
+
+The TrueType font is scalable, but always retains the pixelated look.
+
+CONSOLE
+=======
+
+If the **psf** fonts have been installed to the standard console font
+directory (usually **/usr/share/kbd/consolefonts/**; this is done by
+**make install** when **bw-atari8-tools** is built), you can use e.g.::
+
+ setfont fauxtari-16
+
+Replace the 16 with 8 or 24, for the other sizes. For Slackware Linux,
+you can make this the default in **/etc/rc.d/rc.font**, or just put it
+in **/etc/rc.d/rc.local**. Other Linux distributions will have their
+own ways to set this up (especially systemd-based ones).
+
+X11/etc
+=======
+
+TTF (scalable)
+--------------
+
+The scalable font is called **Fauxtari Scalable Mono**, and should be
+selectable from graphical applications that allow choosing the font.
+You may also see **Fauxtari Fixed Mono** in the list; this is the **bdf**
+font.
+
+It can also be used in **urxvt** and **xterm** (provided **xterm**
+was built with support for TTF fonts)::
+
+ urxvt -fn 'xft:Fauxtari Scalable Mono:pixelsize=16'
+
+ xterm -fa 'Fauxtari Scalable Mono' -fs 16
+
+The font can be scaled to any size, though it will look best if you
+stick with multiples of 8 pixels.
+
+The scalable font should also work on Wayland, Macintosh, or Windows
+systems, though this hasn't been tested.
+
+BDF (non-scalable)
+------------------
+
+If the **bdf** fonts have been installed (via **make install** when
+**bw-atari8-tools** is built), you should be able to launch a terminal
+via::
+
+ xterm -fn fauxtari-16
+
+Replace the 16 with 8 or 24, for the other sizes. These names are
+aliases (added to **fonts.alias** in the font directory); the full
+names are:
+
+- -bw-fauxtari fixed mono-medium-r-normal--8-80-75-75-c-80-iso10646-1
+
+- -bw-fauxtari fixed mono-medium-r-normal--16-160-75-75-c-160-iso10646-1
+
+- -bw-fauxtari fixed mono-medium-r-normal--24-240-75-75-c-240-iso10646-1
+
+For **urxvt**\(1), you might have to turn off the **boldFont** resource (set
+it to an empty string), or run it as::
+
+ urxvt -fn fauxtari-16 -fb ""
+
+This keeps **urxvt** from using some other font (from its built-in
+list, or from your **URxvt.font** resource) for bold characters.
+
+For **st** from suckless.org, run::
+
+ st -f fauxtari-16
+
+It's possible to use the fonts with **rxvt**, but since **rxvt**
+doesn't support Unicode, it won't be all that useful except for plain
+ASCII text. Why are you still using **rxvt**, anyway?
+
+GLYPHS
+======
+
+All 3 sizes contain the same set of glyphs. These include:
+
+- Printable ASCII. Complete. Mostly taken from the Atari 800XL ROM
+ ($E000 area), except the **~** **{** **}** **`** characters which are
+ missing from the Atari's character set (these were hand-drawn by the
+ author).
+
+- Unicode mappings for ATASCII graphics characters. Complete set. These
+ work well with **listbas**\(1), **a8cat**\(1), and **a8xd**\(1). The glyphs
+ are taken from the 800XL ROM.
+
+- The XL International Character set (umlauted/accented letters, plus
+ the **¡** character and the British pound sign), taken from the 800XL ROM
+ ($CC00 area).
+
+- Arabic, taken from Atari's Arabic model of the 65XE. Only the
+ isolated and terminal letter forms are included, but these are
+ also mapped to the Unicode codepoints for the initial and medial forms.
+ Hopefully this results in readable Arabic text. The creator of
+ **fauxtari** can't read Arabic at all and doesn't know anyone who
+ can, so some of the character mappings may be wrong.
+
+- Hebrew glyphs, the complete aleph-bet, taken from the Hebrew ROM
+ modification that was available for sale in Israel in the early 1980s.
+ I'm almost 100% certain this was a 3rd-party product, not made by Atari.
+
+- Polish accented letters, taken from a Polish XL ROM found on the Web
+ at some point. No idea who created this or whether it was homebrew or
+ commercial.
+
+- A few extra Latin-1 characters, hand-drawn by the author. These include
+ Spanish punctuation (quotation marks, inverted question mark), the
+ copyright symbol, and the Euro currency sign.
+
+- TODO: Commodore 64 graphics characters.
+
+LIMITATIONS
+===========
+
+- There should be more glyphs; at least Unicode Latin-1 should have complete
+ coverage. Some of them (e.g. fractions) will be hard to do in 8x8 character
+ cells...
+
+- There are no true descenders, since the Atari ROM character set doesn't use them.
+ Someday I may add hand-hacked true descender versions of the fonts.
+
+.. include:: manftr.rst
diff --git a/fenders.1 b/fenders.1
index 9aa9651..7e4700f 100644
--- a/fenders.1
+++ b/fenders.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "FENDERS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "FENDERS" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
fenders \- Install Fenders 3-sector loader in boot sectors of an ATR image
.\" RST source for fenders(1) man page. Convert with:
@@ -276,28 +276,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/fendersdbl.dasm b/fendersdbl.dasm
index cb6ea3f..23ebec7 100644
--- a/fendersdbl.dasm
+++ b/fendersdbl.dasm
@@ -287,18 +287,13 @@ clear_zp:
INY
BPL clear_zp
-; the "JSR try_read" below MUST be located at $087f.
-; The JSR opcode is the last byte loaded in the 3-sector boot loader,
-; and its operand is the first 2 bytes loaded from sector 720!
- .if *<>$087f
- .echo "Code offsets have changed, fix me (", *, "should be $087f)"
- .err
- .endif
JSR try_read ; cut here!
DEX
read_segment:
+ ; The JSR opcode below is the last byte in sector 3.
+ ; Its operand is the first 2 bytes in sector 720.
JSR get_next_byte
STA dest_ptr
JSR get_next_byte
diff --git a/fonts/FauxtariScalableMono.ttf b/fonts/FauxtariScalableMono.ttf
new file mode 100644
index 0000000..590bc3b
--- /dev/null
+++ b/fonts/FauxtariScalableMono.ttf
Binary files differ
diff --git a/fonts/Makefile b/fonts/Makefile
new file mode 100644
index 0000000..cb1c69f
--- /dev/null
+++ b/fonts/Makefile
@@ -0,0 +1,2 @@
+all:
+ cd .. && $(MAKE)
diff --git a/fonts/char0.raw b/fonts/char0.raw
new file mode 100644
index 0000000..a699b13
--- /dev/null
+++ b/fonts/char0.raw
Binary files differ
diff --git a/fonts/dupglyphs.pl b/fonts/dupglyphs.pl
new file mode 100644
index 0000000..0532522
--- /dev/null
+++ b/fonts/dupglyphs.pl
@@ -0,0 +1,42 @@
+#!/usr/bin/perl -w
+
+# read a psftools .txt font, for any glyph that has multiple Unicode
+# codepoints, output that glyph multiple times (one per codepoint).
+# result is suitable for conversion to a BDF.
+
+$glyphcount = 0;
+
+sub dup {
+ my $orig = shift;
+ my $new;
+ my $ret;
+ my @cps = ($orig =~ /\[(\w+)\];/g);
+
+ for my $cp (@cps) {
+ #warn ">> $cp <<\n";
+ $glyphcount++;
+ ($new = $orig) =~ s,(Unicode: ).*,$1\[$cp\];,;
+ $ret .= $new;
+ }
+ return $ret;
+}
+
+$/ = '%';
+
+<>;
+$header = '%' . <>;
+
+$zerocount = 0;
+while(<>) {
+ next if /\[0000\];/ && ($zerocount++);
+ if(/Unicode:.*;.*;/) {
+ $_ = dup($_);
+ } else {
+ $glyphcount++;
+ }
+ $output .= $_;
+}
+
+$header =~ s/(Length:\s+)\d+/$1$glyphcount/;
+
+print $header . $output;
diff --git a/fonts/fauxtari-16.bdf b/fonts/fauxtari-16.bdf
new file mode 100644
index 0000000..8a219f0
--- /dev/null
+++ b/fonts/fauxtari-16.bdf
@@ -0,0 +1,9893 @@
+STARTFONT 2.1
+FONT -BW-Fauxtari Fixed Mono-Medium-R-Normal--16-160-75-75-C-160-iso10646-1
+SIZE 16 75 75
+FONTBOUNDINGBOX 16 16 0 -4
+STARTPROPERTIES 18
+FOUNDRY "BW"
+FAMILY_NAME "Fauxtari Fixed Mono"
+FACE_NAME "Fauxtari 16"
+WEIGHT_NAME "Medium"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+PIXEL_SIZE 16
+POINT_SIZE 160
+RESOLUTION_X 75
+RESOLUTION_Y 75
+SPACING "C"
+AVERAGE_WIDTH 160
+CHARSET_REGISTRY "iso10646"
+CHARSET_ENCODING "1"
+FONT_DESCENT 4
+FONT_ASCENT 12
+DEFAULT_CHAR 0
+ENDPROPERTIES
+CHARS 429
+STARTCHAR C0000
+ENCODING 0
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3cfc
+3cfc
+3000
+3000
+000c
+000c
+3000
+3000
+000c
+000c
+3f3c
+3f3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0001
+ENCODING 32
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0002
+ENCODING 33
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0003
+ENCODING 34
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0004
+ENCODING 35
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+ffff
+ffff
+3c3c
+3c3c
+3c3c
+3c3c
+ffff
+ffff
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0005
+ENCODING 36
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+0ffc
+0ffc
+3c00
+3c00
+0ff0
+0ff0
+003c
+003c
+3ff0
+3ff0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0006
+ENCODING 37
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3cf0
+3cf0
+03c0
+03c0
+0f00
+0f00
+3c3c
+3c3c
+303c
+303c
+0000
+0000
+ENDCHAR
+STARTCHAR C0007
+ENCODING 38
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03f0
+03f0
+0f3c
+0f3c
+03f0
+03f0
+0fc0
+0fc0
+3cff
+3cff
+3c3c
+3c3c
+0fcf
+0fcf
+0000
+0000
+ENDCHAR
+STARTCHAR C0008
+ENCODING 39
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0009
+ENCODING 40
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00fc
+00fc
+03f0
+03f0
+03c0
+03c0
+03c0
+03c0
+03f0
+03f0
+00fc
+00fc
+0000
+0000
+ENDCHAR
+STARTCHAR C000a
+ENCODING 41
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3f00
+3f00
+0fc0
+0fc0
+03c0
+03c0
+03c0
+03c0
+0fc0
+0fc0
+3f00
+3f00
+0000
+0000
+ENDCHAR
+STARTCHAR C000b
+ENCODING 42
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+0ff0
+0ff0
+ffff
+ffff
+0ff0
+0ff0
+3c3c
+3c3c
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C000c
+ENCODING 43
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+3ffc
+3ffc
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C000d
+ENCODING 44
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+0f00
+0f00
+ENDCHAR
+STARTCHAR C000e
+ENCODING 45
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C000f
+ENCODING 46
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0010
+ENCODING 47
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+003c
+003c
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+3c00
+3c00
+3000
+3000
+0000
+0000
+ENDCHAR
+STARTCHAR C0011
+ENCODING 48
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3cfc
+3cfc
+3f3c
+3f3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0012
+ENCODING 49
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0fc0
+0fc0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0013
+ENCODING 50
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0014
+ENCODING 51
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+00f0
+00f0
+03c0
+03c0
+00f0
+00f0
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0015
+ENCODING 52
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00f0
+00f0
+03f0
+03f0
+0ff0
+0ff0
+3cf0
+3cf0
+3ffc
+3ffc
+00f0
+00f0
+0000
+0000
+ENDCHAR
+STARTCHAR C0016
+ENCODING 53
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+3c00
+3c00
+3ff0
+3ff0
+003c
+003c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0017
+ENCODING 54
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c00
+3c00
+3ff0
+3ff0
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0018
+ENCODING 55
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+003c
+003c
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+0f00
+0f00
+0000
+0000
+ENDCHAR
+STARTCHAR C0019
+ENCODING 56
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C001a
+ENCODING 57
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+0ffc
+0ffc
+003c
+003c
+00f0
+00f0
+0fc0
+0fc0
+0000
+0000
+ENDCHAR
+STARTCHAR C001b
+ENCODING 58
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C001c
+ENCODING 59
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+0f00
+0f00
+ENDCHAR
+STARTCHAR C001d
+ENCODING 60
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+003c
+003c
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+03c0
+03c0
+00f0
+00f0
+003c
+003c
+0000
+0000
+ENDCHAR
+STARTCHAR C001e
+ENCODING 61
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C001f
+ENCODING 62
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+0f00
+0f00
+03c0
+03c0
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+3c00
+3c00
+0000
+0000
+ENDCHAR
+STARTCHAR C0020
+ENCODING 63
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+00f0
+00f0
+03c0
+03c0
+0000
+0000
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0021
+ENCODING 64
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3cfc
+3cfc
+3cfc
+3cfc
+3c00
+3c00
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0022
+ENCODING 65
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3ffc
+3ffc
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0023
+ENCODING 66
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ff0
+3ff0
+3c3c
+3c3c
+3ff0
+3ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3ff0
+3ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0024
+ENCODING 67
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c00
+3c00
+3c00
+3c00
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0025
+ENCODING 68
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+3cf0
+3cf0
+3c3c
+3c3c
+3c3c
+3c3c
+3cf0
+3cf0
+3fc0
+3fc0
+0000
+0000
+ENDCHAR
+STARTCHAR C0026
+ENCODING 69
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+3c00
+3c00
+3ff0
+3ff0
+3c00
+3c00
+3c00
+3c00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0027
+ENCODING 70
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+3c00
+3c00
+3ff0
+3ff0
+3c00
+3c00
+3c00
+3c00
+3c00
+3c00
+0000
+0000
+ENDCHAR
+STARTCHAR C0028
+ENCODING 71
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ffc
+0ffc
+3c00
+3c00
+3c00
+3c00
+3cfc
+3cfc
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0029
+ENCODING 72
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3ffc
+3ffc
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C002a
+ENCODING 73
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C002b
+ENCODING 74
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C002c
+ENCODING 75
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3cf0
+3cf0
+3fc0
+3fc0
+3fc0
+3fc0
+3cf0
+3cf0
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C002d
+ENCODING 76
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c00
+3c00
+3c00
+3c00
+3c00
+3c00
+3c00
+3c00
+3c00
+3c00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C002e
+ENCODING 77
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c0f
+3c0f
+3f3f
+3f3f
+3fff
+3fff
+3ccf
+3ccf
+3c0f
+3c0f
+3c0f
+3c0f
+0000
+0000
+ENDCHAR
+STARTCHAR C002f
+ENCODING 78
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3f3c
+3f3c
+3ffc
+3ffc
+3ffc
+3ffc
+3cfc
+3cfc
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0030
+ENCODING 79
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0031
+ENCODING 80
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ff0
+3ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3ff0
+3ff0
+3c00
+3c00
+3c00
+3c00
+0000
+0000
+ENDCHAR
+STARTCHAR C0032
+ENCODING 81
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3cf0
+3cf0
+0f3c
+0f3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0033
+ENCODING 82
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ff0
+3ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3ff0
+3ff0
+3cf0
+3cf0
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0034
+ENCODING 83
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c00
+3c00
+0ff0
+0ff0
+003c
+003c
+003c
+003c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0035
+ENCODING 84
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0036
+ENCODING 85
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0037
+ENCODING 86
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0038
+ENCODING 87
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c0f
+3c0f
+3c0f
+3c0f
+3ccf
+3ccf
+3fff
+3fff
+3f3f
+3f3f
+3c0f
+3c0f
+0000
+0000
+ENDCHAR
+STARTCHAR C0039
+ENCODING 88
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C003a
+ENCODING 89
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C003b
+ENCODING 90
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+3c00
+3c00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C003c
+ENCODING 91
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03fc
+03fc
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03fc
+03fc
+0000
+0000
+ENDCHAR
+STARTCHAR C003d
+ENCODING 92
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3000
+3000
+3c00
+3c00
+0f00
+0f00
+03c0
+03c0
+00f0
+00f0
+003c
+003c
+0000
+0000
+ENDCHAR
+STARTCHAR C003e
+ENCODING 93
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+3fc0
+3fc0
+0000
+0000
+ENDCHAR
+STARTCHAR C003f
+ENCODING 94
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00c0
+00c0
+03f0
+03f0
+0f3c
+0f3c
+3c0f
+3c0f
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0040
+ENCODING 95
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ffff
+ffff
+0000
+0000
+ENDCHAR
+STARTCHAR C0041
+ENCODING 96
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f00
+0f00
+0f00
+0f00
+03c0
+03c0
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0042
+ENCODING 97
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ff0
+0ff0
+003c
+003c
+0ffc
+0ffc
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0043
+ENCODING 98
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c00
+3c00
+3c00
+3c00
+3ff0
+3ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3ff0
+3ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0044
+ENCODING 99
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ff0
+0ff0
+3c00
+3c00
+3c00
+3c00
+3c00
+3c00
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0045
+ENCODING 100
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+003c
+003c
+003c
+003c
+0ffc
+0ffc
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0046
+ENCODING 101
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c00
+3c00
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0047
+ENCODING 102
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00fc
+00fc
+03c0
+03c0
+0ffc
+0ffc
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0048
+ENCODING 103
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ffc
+0ffc
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0049
+ENCODING 104
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c00
+3c00
+3c00
+3c00
+3ff0
+3ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C004a
+ENCODING 105
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0000
+0000
+0fc0
+0fc0
+03c0
+03c0
+03c0
+03c0
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C004b
+ENCODING 106
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+003c
+003c
+0000
+0000
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+0ff0
+0ff0
+ENDCHAR
+STARTCHAR C004c
+ENCODING 107
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c00
+3c00
+3c00
+3c00
+3cf0
+3cf0
+3fc0
+3fc0
+3cf0
+3cf0
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C004d
+ENCODING 108
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0fc0
+0fc0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C004e
+ENCODING 109
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3c3c
+3c3c
+3fff
+3fff
+3fff
+3fff
+3ccf
+3ccf
+3c0f
+3c0f
+0000
+0000
+ENDCHAR
+STARTCHAR C004f
+ENCODING 110
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3ff0
+3ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0050
+ENCODING 111
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0051
+ENCODING 112
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3ff0
+3ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3ff0
+3ff0
+3c00
+3c00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C0052
+ENCODING 113
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ffc
+0ffc
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+003c
+003c
+003c
+003c
+ENDCHAR
+STARTCHAR C0053
+ENCODING 114
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3ff0
+3ff0
+3c3c
+3c3c
+3c00
+3c00
+3c00
+3c00
+3c00
+3c00
+0000
+0000
+ENDCHAR
+STARTCHAR C0054
+ENCODING 115
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ffc
+0ffc
+3c00
+3c00
+0ff0
+0ff0
+003c
+003c
+3ff0
+3ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0055
+ENCODING 116
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+3ffc
+3ffc
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+00fc
+00fc
+0000
+0000
+ENDCHAR
+STARTCHAR C0056
+ENCODING 117
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0057
+ENCODING 118
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0058
+ENCODING 119
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3c0f
+3c0f
+3ccf
+3ccf
+3fff
+3fff
+0ffc
+0ffc
+0f3c
+0f3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0059
+ENCODING 120
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3c3c
+3c3c
+0ff0
+0ff0
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C005a
+ENCODING 121
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+00f0
+00f0
+3fc0
+3fc0
+ENDCHAR
+STARTCHAR C005b
+ENCODING 122
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3ffc
+3ffc
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C005c
+ENCODING 123
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+03c0
+03c0
+0f00
+0f00
+03c0
+03c0
+03c0
+03c0
+00f0
+00f0
+0000
+0000
+ENDCHAR
+STARTCHAR C005d
+ENCODING 124
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C005e
+ENCODING 125
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+03c0
+03c0
+03c0
+03c0
+00f0
+00f0
+03c0
+03c0
+03c0
+03c0
+0f00
+0f00
+0000
+0000
+ENDCHAR
+STARTCHAR C005f
+ENCODING 126
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3f0f
+3f0f
+f3cf
+f3cf
+f0fc
+f0fc
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0060
+ENCODING 160
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0061
+ENCODING 161
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0062
+ENCODING 162
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0ffc
+0ffc
+3c00
+3c00
+3c00
+3c00
+0ffc
+0ffc
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0063
+ENCODING 163
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03f0
+03f0
+0f00
+0f00
+0f00
+0f00
+3fc0
+3fc0
+0f00
+0f00
+0f00
+0f00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0064
+ENCODING 164
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+300c
+300c
+0ff0
+0ff0
+0c30
+0c30
+0c30
+0c30
+0ff0
+0ff0
+300c
+300c
+0000
+0000
+ENDCHAR
+STARTCHAR C0065
+ENCODING 165
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c3c
+3c3c
+3c3c
+3c3c
+03c0
+03c0
+3ffc
+3ffc
+03c0
+03c0
+3ffc
+3ffc
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0066
+ENCODING 166
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0067
+ENCODING 167
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03f0
+03f0
+0c00
+0c00
+03c0
+03c0
+0c30
+0c30
+03c0
+03c0
+0030
+0030
+0fc0
+0fc0
+0000
+0000
+ENDCHAR
+STARTCHAR C0068
+ENCODING 168
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0069
+ENCODING 169
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3ff0
+3ff0
+c00c
+c00c
+c3cc
+c3cc
+cc0c
+cc0c
+c3cc
+c3cc
+c00c
+c00c
+3ff0
+3ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C006a
+ENCODING 170
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+00fc
+00fc
+0f3c
+0f3c
+03fc
+03fc
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C006b
+ENCODING 171
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+3c3c
+3c3c
+f0f0
+f0f0
+3c3c
+3c3c
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C006c
+ENCODING 172
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+3ffc
+3ffc
+003c
+003c
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C006d
+ENCODING 173
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C006e
+ENCODING 174
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3ff0
+3ff0
+c00c
+c00c
+cf0c
+cf0c
+cccc
+cccc
+cf0c
+cf0c
+cccc
+cccc
+3ff0
+3ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C006f
+ENCODING 175
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0070
+ENCODING 176
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0c30
+0c30
+03c0
+03c0
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0071
+ENCODING 177
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+3ffc
+3ffc
+03c0
+03c0
+0000
+0000
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0072
+ENCODING 178
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f00
+0f00
+30c0
+30c0
+0300
+0300
+0c00
+0c00
+3fc0
+3fc0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0073
+ENCODING 179
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f00
+0f00
+30c0
+30c0
+0300
+0300
+30c0
+30c0
+0f00
+0f00
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0074
+ENCODING 180
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00f0
+00f0
+03c0
+03c0
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0075
+ENCODING 181
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+003c
+003c
+0000
+0000
+ENDCHAR
+STARTCHAR C0076
+ENCODING 182
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f3c
+0f3c
+3f3c
+3f3c
+3f3c
+3f3c
+0f3c
+0f3c
+033c
+033c
+033c
+033c
+0000
+0000
+ENDCHAR
+STARTCHAR C0077
+ENCODING 183
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0078
+ENCODING 184
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+0f00
+0f00
+ENDCHAR
+STARTCHAR C0079
+ENCODING 185
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0fc0
+0fc0
+03c0
+03c0
+0ff0
+0ff0
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C007a
+ENCODING 186
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0c30
+0c30
+03c0
+03c0
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C007b
+ENCODING 187
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+f0f0
+f0f0
+3c3c
+3c3c
+f0f0
+f0f0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C007c
+ENCODING 191
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0000
+0000
+03c0
+03c0
+00f0
+00f0
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C007d
+ENCODING 192
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f00
+0f00
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C007e
+ENCODING 193
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00f0
+00f0
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C007f
+ENCODING 194
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0ff0
+0ff0
+300c
+300c
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0080
+ENCODING 195
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+3cf0
+3cf0
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0081
+ENCODING 196
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c3c
+3c3c
+3c3c
+3c3c
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0082
+ENCODING 197
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+0c30
+0c30
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C0083
+ENCODING 198
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ffc
+0ffc
+3fc0
+3fc0
+f3c0
+f3c0
+fffc
+fffc
+f3c0
+f3c0
+f3fc
+f3fc
+0000
+0000
+ENDCHAR
+STARTCHAR C0084
+ENCODING 199
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c00
+3c00
+3c3c
+3c3c
+0ff0
+0ff0
+03c0
+03c0
+0f00
+0f00
+ENDCHAR
+STARTCHAR C0085
+ENCODING 201
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+3ffc
+3ffc
+3c00
+3c00
+3ff0
+3ff0
+3c00
+3c00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0086
+ENCODING 202
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0ff0
+0ff0
+300c
+300c
+3ffc
+3ffc
+3c00
+3c00
+3ff0
+3ff0
+3c00
+3c00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0087
+ENCODING 203
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+0000
+0000
+3ffc
+3ffc
+3c00
+3c00
+3ff0
+3ff0
+3c00
+3c00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0088
+ENCODING 204
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+03c0
+03c0
+3ffc
+3ffc
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0089
+ENCODING 205
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+3ffc
+3ffc
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C008a
+ENCODING 206
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0ff0
+0ff0
+300c
+300c
+3ffc
+3ffc
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C008b
+ENCODING 207
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+0000
+0000
+3ffc
+3ffc
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C008c
+ENCODING 208
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+3cf0
+3cf0
+3c3c
+3c3c
+ff3c
+ff3c
+3cf0
+3cf0
+3fc0
+3fc0
+0000
+0000
+ENDCHAR
+STARTCHAR C008d
+ENCODING 209
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+3cf0
+3cf0
+0000
+0000
+3f3c
+3f3c
+3f3c
+3f3c
+3ffc
+3ffc
+3cfc
+3cfc
+0000
+0000
+ENDCHAR
+STARTCHAR C008e
+ENCODING 210
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+0ff0
+0ff0
+333c
+333c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C008f
+ENCODING 211
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+003c
+003c
+0ff0
+0ff0
+3ccc
+3ccc
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0090
+ENCODING 214
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c3c
+3c3c
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0091
+ENCODING 215
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+0ff0
+0ff0
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0092
+ENCODING 217
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+03c0
+03c0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0093
+ENCODING 218
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0094
+ENCODING 220
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c3c
+3c3c
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0095
+ENCODING 221
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0096
+ENCODING 222
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c00
+3c00
+3ff0
+3ff0
+3c3c
+3c3c
+3ff0
+3ff0
+3c00
+3c00
+3c00
+3c00
+0000
+0000
+ENDCHAR
+STARTCHAR C0097
+ENCODING 223
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03f0
+03f0
+0f3c
+0f3c
+0ff0
+0ff0
+0f3c
+0f3c
+0f3f
+0f3f
+0ffc
+0ffc
+3c00
+3c00
+ENDCHAR
+STARTCHAR C0098
+ENCODING 224
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+03c0
+03c0
+0ff0
+0ff0
+003c
+003c
+0ffc
+0ffc
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0099
+ENCODING 225
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+0ff0
+0ff0
+003c
+003c
+0ffc
+0ffc
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C009a
+ENCODING 226
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0ff0
+0ff0
+300c
+300c
+0000
+0000
+0ff0
+0ff0
+00fc
+00fc
+0f3c
+0f3c
+03fc
+03fc
+0000
+0000
+ENDCHAR
+STARTCHAR C009b
+ENCODING 227
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+3cf0
+3cf0
+0000
+0000
+0ff0
+0ff0
+00fc
+00fc
+0f3c
+0f3c
+03fc
+03fc
+0000
+0000
+ENDCHAR
+STARTCHAR C009c
+ENCODING 228
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+0000
+0000
+0ff0
+0ff0
+003c
+003c
+0ffc
+0ffc
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C009d
+ENCODING 229
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0ff0
+0ff0
+3c3c
+3c3c
+03f0
+03f0
+003c
+003c
+0ffc
+0ffc
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C009e
+ENCODING 230
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3f3c
+3f3c
+03cf
+03cf
+3ffc
+3ffc
+f3c0
+f3c0
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C009f
+ENCODING 231
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ff0
+0ff0
+3c00
+3c00
+3c00
+3c00
+0ff0
+0ff0
+03c0
+03c0
+0f00
+0f00
+ENDCHAR
+STARTCHAR C00a0
+ENCODING 232
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c00
+3c00
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00a1
+ENCODING 233
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c00
+3c00
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00a2
+ENCODING 234
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0ff0
+0ff0
+f00f
+f00f
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c00
+3c00
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00a3
+ENCODING 235
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c3c
+3c3c
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c00
+3c00
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00a4
+ENCODING 236
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+03c0
+03c0
+0000
+0000
+0fc0
+0fc0
+03c0
+03c0
+03c0
+03c0
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00a5
+ENCODING 237
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+0000
+0000
+0fc0
+0fc0
+03c0
+03c0
+03c0
+03c0
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00a6
+ENCODING 238
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0ff0
+0ff0
+3c3c
+3c3c
+0000
+0000
+0fc0
+0fc0
+03c0
+03c0
+03c0
+03c0
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00a7
+ENCODING 239
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+0000
+0000
+0fc0
+0fc0
+03c0
+03c0
+03c0
+03c0
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00a8
+ENCODING 240
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3cc0
+3cc0
+0f00
+0f00
+33c0
+33c0
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00a9
+ENCODING 241
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+3cf0
+3cf0
+0000
+0000
+3ff0
+3ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C00aa
+ENCODING 242
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+03c0
+03c0
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00ab
+ENCODING 243
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00ac
+ENCODING 244
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0ff0
+0ff0
+3c3c
+3c3c
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00ad
+ENCODING 245
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+3cf0
+3cf0
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00ae
+ENCODING 246
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00af
+ENCODING 247
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0000
+0000
+3ffc
+3ffc
+0000
+0000
+03c0
+03c0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00b0
+ENCODING 249
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+03c0
+03c0
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00b1
+ENCODING 250
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00b2
+ENCODING 251
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0ff0
+0ff0
+3c3c
+3c3c
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00b3
+ENCODING 252
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00b4
+ENCODING 253
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+00f0
+00f0
+3fc0
+3fc0
+ENDCHAR
+STARTCHAR C00b5
+ENCODING 254
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+3c00
+3c00
+3fc0
+3fc0
+3cf0
+3cf0
+3fc0
+3fc0
+3c00
+3c00
+3c00
+3c00
+0000
+0000
+ENDCHAR
+STARTCHAR C00b6
+ENCODING 255
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c3c
+3c3c
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ffc
+0ffc
+00f0
+00f0
+3fc0
+3fc0
+ENDCHAR
+STARTCHAR C00b7
+ENCODING 260
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3ffc
+3ffc
+3c3c
+3c3c
+000f
+000f
+ENDCHAR
+STARTCHAR C00b8
+ENCODING 261
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ff0
+0ff0
+003c
+003c
+0ffc
+0ffc
+3c3c
+3c3c
+0ffc
+0ffc
+000f
+000f
+ENDCHAR
+STARTCHAR C00b9
+ENCODING 262
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+0ff0
+0ff0
+3cfc
+3cfc
+3c00
+3c00
+3c00
+3c00
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00ba
+ENCODING 263
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+0ff0
+0ff0
+3c00
+3c00
+3c00
+3c00
+3c00
+3c00
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00bb
+ENCODING 280
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3fc0
+3fc0
+3c00
+3c00
+3fc0
+3fc0
+3c00
+3c00
+3ffc
+3ffc
+03c0
+03c0
+03fc
+03fc
+0000
+0000
+ENDCHAR
+STARTCHAR C00bc
+ENCODING 281
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3ffc
+3ffc
+3c00
+3c00
+0ff0
+0ff0
+003c
+003c
+ENDCHAR
+STARTCHAR C00bd
+ENCODING 321
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c00
+3c00
+3c00
+3c00
+3fc0
+3fc0
+3f00
+3f00
+fc00
+fc00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00be
+ENCODING 322
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0fc0
+0fc0
+03c0
+03c0
+03f0
+03f0
+0fc0
+0fc0
+03c0
+03c0
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00bf
+ENCODING 323
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+33cc
+33cc
+3c3c
+3c3c
+3ffc
+3ffc
+3ffc
+3ffc
+3cfc
+3cfc
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C00c0
+ENCODING 324
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+3ff0
+3ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0000
+0000
+ENDCHAR
+STARTCHAR C00c1
+ENCODING 346
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+0ff0
+0ff0
+3c00
+3c00
+0ff0
+0ff0
+003c
+003c
+003c
+003c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00c2
+ENCODING 347
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+0ffc
+0ffc
+3c00
+3c00
+0ff0
+0ff0
+003c
+003c
+3ff0
+3ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C00c3
+ENCODING 377
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+3ffc
+3ffc
+0f3c
+0f3c
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00c4
+ENCODING 378
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+03c0
+03c0
+3ffc
+3ffc
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00c5
+ENCODING 379
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+3ffc
+3ffc
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+3c00
+3c00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00c6
+ENCODING 380
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+0000
+0000
+3ffc
+3ffc
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00c7
+ENCODING 551
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+0000
+0000
+0ff0
+0ff0
+003c
+003c
+0ffc
+0ffc
+3c3c
+3c3c
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00c8
+ENCODING 1488
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+f03c
+f03c
+ff3c
+ff3c
+f3fc
+f3fc
+f0f0
+f0f0
+f03c
+f03c
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00c9
+ENCODING 1489
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+ffc0
+ffc0
+03f0
+03f0
+00f0
+00f0
+00f0
+00f0
+fffc
+fffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00ca
+ENCODING 1490
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+00f0
+00f0
+00f0
+00f0
+3ff0
+3ff0
+fc3c
+fc3c
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00cb
+ENCODING 1491
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fffc
+fffc
+03f0
+03f0
+00f0
+00f0
+00f0
+00f0
+00f0
+00f0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00cc
+ENCODING 1492
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fff0
+fff0
+003c
+003c
+303c
+303c
+3c3c
+3c3c
+3c3c
+3c3c
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00cd
+ENCODING 1493
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+03f0
+03f0
+00f0
+00f0
+00f0
+00f0
+00f0
+00f0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00ce
+ENCODING 1494
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fff0
+fff0
+3f00
+3f00
+0f00
+0f00
+0f00
+0f00
+0f00
+0f00
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00cf
+ENCODING 1495
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fff0
+fff0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00d0
+ENCODING 1496
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+f3fc
+f3fc
+f33c
+f33c
+f03c
+f03c
+f03c
+f03c
+fff0
+fff0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00d1
+ENCODING 1497
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ff0
+3ff0
+03f0
+03f0
+00f0
+00f0
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00d2
+ENCODING 1498
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fff0
+fff0
+00fc
+00fc
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+ENDCHAR
+STARTCHAR C00d3
+ENCODING 1499
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fff0
+fff0
+003c
+003c
+003c
+003c
+00fc
+00fc
+fff0
+fff0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00d4
+ENCODING 1500
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+f000
+f000
+fff0
+fff0
+003c
+003c
+003c
+003c
+00fc
+00fc
+0ff0
+0ff0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00d5
+ENCODING 1501
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00d6
+ENCODING 1502
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+f3f0
+f3f0
+3f3c
+3f3c
+3c3c
+3c3c
+3c3c
+3c3c
+3cfc
+3cfc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00d7
+ENCODING 1503
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03fc
+03fc
+00fc
+00fc
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+ENDCHAR
+STARTCHAR C00d8
+ENCODING 1504
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03fc
+03fc
+003c
+003c
+003c
+003c
+00fc
+00fc
+3ff0
+3ff0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00d9
+ENCODING 1505
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fffc
+fffc
+3c3c
+3c3c
+3c3c
+3c3c
+3cf0
+3cf0
+3fc0
+3fc0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00da
+ENCODING 1506
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fcfc
+fcfc
+3c3c
+3c3c
+0f3c
+0f3c
+0f3c
+0f3c
+fff0
+fff0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00db
+ENCODING 1507
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fff0
+fff0
+3cfc
+3cfc
+3c3c
+3c3c
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+003c
+ENDCHAR
+STARTCHAR C00dc
+ENCODING 1508
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fff0
+fff0
+3c3c
+3c3c
+3c3c
+3c3c
+00fc
+00fc
+fff0
+fff0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00dd
+ENCODING 1509
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+f0fc
+f0fc
+3c3c
+3c3c
+3cf0
+3cf0
+3fc0
+3fc0
+3c00
+3c00
+3c00
+3c00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C00de
+ENCODING 1510
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+f03c
+f03c
+3cfc
+3cfc
+0fc0
+0fc0
+00f0
+00f0
+fffc
+fffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00df
+ENCODING 1511
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fff0
+fff0
+00fc
+00fc
+f03c
+f03c
+f0f0
+f0f0
+f3c0
+f3c0
+f000
+f000
+f000
+f000
+ENDCHAR
+STARTCHAR C00e0
+ENCODING 1512
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fff0
+fff0
+00fc
+00fc
+003c
+003c
+003c
+003c
+003c
+003c
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00e1
+ENCODING 1513
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+c30c
+c30c
+f30c
+f30c
+fc3c
+fc3c
+f0f0
+f0f0
+fff0
+fff0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00e2
+ENCODING 1514
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+fff0
+fff0
+3cfc
+3cfc
+3c3c
+3c3c
+3c3c
+3c3c
+fc3c
+fc3c
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00e3
+ENCODING 1567
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+0f00
+0f00
+03c0
+03c0
+0000
+0000
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C00e4
+ENCODING 1569
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+03f0
+03f0
+0f00
+0f00
+03f0
+03f0
+0fc0
+0fc0
+0c00
+0c00
+0000
+0000
+ENDCHAR
+STARTCHAR C00e5
+ENCODING 1570
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C00e6
+ENCODING 1572
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c00
+3c00
+f0ff
+f0ff
+03cf
+03cf
+00ff
+00ff
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C00e7
+ENCODING 1575
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00e8
+ENCODING 1576
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+03c0
+03c0
+ENDCHAR
+STARTCHAR C00e9
+ENCODING 1577
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03cf
+03cf
+0000
+0000
+00ff
+00ff
+03cf
+03cf
+03cf
+03cf
+03ff
+03ff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00ea
+ENCODING 1578
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f3c
+0f3c
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00eb
+ENCODING 1579
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+3c3c
+3c3c
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00ec
+ENCODING 1580
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c00
+3c00
+3c0f
+3c0f
+0fc0
+0fc0
+ENDCHAR
+STARTCHAR C00ed
+ENCODING 1581
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c03
+3c03
+3c00
+3c00
+0ff0
+0ff0
+ENDCHAR
+STARTCHAR C00ee
+ENCODING 1582
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c03
+3c03
+3c00
+3c00
+0ff0
+0ff0
+ENDCHAR
+STARTCHAR C00ef
+ENCODING 1583
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+003c
+003c
+000f
+000f
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C00f0
+ENCODING 1584
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+0000
+0000
+00f0
+00f0
+003c
+003c
+000f
+000f
+000f
+000f
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00f1
+ENCODING 1585
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+003c
+003c
+000f
+000f
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C00f2
+ENCODING 1586
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+000f
+000f
+0000
+0000
+003c
+003c
+000f
+000f
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C00f3
+ENCODING 1587
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+c333
+c333
+c333
+c333
+c3ff
+c3ff
+c3fc
+c3fc
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C00f4
+ENCODING 1588
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+0f0f
+0f0f
+0000
+0000
+c333
+c333
+c333
+c333
+c3ff
+c3ff
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C00f5
+ENCODING 1589
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+c3c3
+c3c3
+c303
+c303
+c3ff
+c3ff
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C00f6
+ENCODING 1590
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+0000
+0000
+00ff
+00ff
+c3c3
+c3c3
+c303
+c303
+c3ff
+c3ff
+ffc0
+ffc0
+3f00
+3f00
+ENDCHAR
+STARTCHAR C00f7
+ENCODING 1591
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+3c00
+3c00
+3cff
+3cff
+3fc3
+3fc3
+3f03
+3f03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00f8
+ENCODING 1592
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3cf0
+3cf0
+3c00
+3c00
+3cff
+3cff
+3fc3
+3fc3
+3f03
+3f03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00f9
+ENCODING 1593
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00fc
+00fc
+03c0
+03c0
+03c0
+03c0
+0fff
+0fff
+3c03
+3c03
+3f00
+3f00
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C00fa
+ENCODING 1594
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+00fc
+00fc
+03c0
+03c0
+03c0
+03c0
+0fff
+0fff
+3c03
+3c03
+3f00
+3f00
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C00fb
+ENCODING 1601
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f00
+0f00
+003f
+003f
+f0f3
+f0f3
+f03f
+f03f
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C00fc
+ENCODING 1602
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+0000
+0000
+003f
+003f
+30f3
+30f3
+f03f
+f03f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00fd
+ENCODING 1603
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+0f0f
+0f0f
+0c0f
+0c0f
+3f0f
+3f0f
+000f
+000f
+c00f
+c00f
+fffc
+fffc
+0000
+0000
+ENDCHAR
+STARTCHAR C00fe
+ENCODING 1604
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+3c0f
+3c0f
+3c0f
+3c0f
+3c0f
+3c0f
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C00ff
+ENCODING 1605
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+003c
+003c
+03ff
+03ff
+0ff3
+0ff3
+3c3f
+3c3f
+3c0f
+3c0f
+3c00
+3c00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C0100
+ENCODING 1606
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0000
+0000
+0c0c
+0c0c
+3c0f
+3c0f
+3c0f
+3c0f
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0101
+ENCODING 1607
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+03cf
+03cf
+03cf
+03cf
+03ff
+03ff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0102
+ENCODING 1608
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+03cf
+03cf
+03ff
+03ff
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0103
+ENCODING 1609
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00fc
+00fc
+f3cf
+f3cf
+f3c3
+f3c3
+f0f3
+f0f3
+f0f0
+f0f0
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0104
+ENCODING 1610
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00fc
+00fc
+c3ff
+c3ff
+c3c3
+c3c3
+f0f3
+f0f3
+3ff3
+3ff3
+0000
+0000
+0f3c
+0f3c
+ENDCHAR
+STARTCHAR C0105
+ENCODING 1632
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+003c
+003c
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+3c00
+3c00
+3000
+3000
+0000
+0000
+ENDCHAR
+STARTCHAR C0106
+ENCODING 1633
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00c0
+00c0
+03f0
+03f0
+0ffc
+0ffc
+03f0
+03f0
+00c0
+00c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0107
+ENCODING 1634
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0108
+ENCODING 1635
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0ff0
+0ff0
+3c3c
+3c3c
+3c00
+3c00
+0f00
+0f00
+03c0
+03c0
+00f0
+00f0
+003c
+003c
+ENDCHAR
+STARTCHAR C0109
+ENCODING 1636
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ccf
+3ccf
+3ccf
+3ccf
+3fff
+3fff
+3f00
+3f00
+0f00
+0f00
+0fc0
+0fc0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C010a
+ENCODING 1637
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03fc
+03fc
+0fc0
+0fc0
+3f00
+3f00
+03f0
+03f0
+0fc0
+0fc0
+3f00
+3f00
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C010b
+ENCODING 1638
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03f0
+03f0
+0ffc
+0ffc
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3ffc
+3ffc
+0ff0
+0ff0
+ENDCHAR
+STARTCHAR C010c
+ENCODING 1639
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ff0
+3ff0
+3ff0
+3ff0
+00f0
+00f0
+00f0
+00f0
+00f0
+00f0
+00f0
+00f0
+00f0
+00f0
+ENDCHAR
+STARTCHAR C010d
+ENCODING 1640
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+0ff0
+0ff0
+0ff0
+0ff0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C010e
+ENCODING 1641
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0ff0
+0ff0
+0ff0
+0ff0
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+3c3c
+ENDCHAR
+STARTCHAR C010f
+ENCODING 8211
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0110
+ENCODING 8212
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0111
+ENCODING 8216
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f00
+0f00
+03c0
+03c0
+00f0
+00f0
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0112
+ENCODING 8217
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00f0
+00f0
+03c0
+03c0
+0f00
+0f00
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0113
+ENCODING 8220
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+0f0f
+0f0f
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0114
+ENCODING 8221
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c3c
+3c3c
+3c3c
+3c3c
+f0f0
+f0f0
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0115
+ENCODING 8249
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+03c0
+03c0
+0f00
+0f00
+03c0
+03c0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0116
+ENCODING 8250
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+03c0
+03c0
+00f0
+00f0
+03c0
+03c0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0117
+ENCODING 8364
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03fc
+03fc
+0f00
+0f00
+3ff0
+3ff0
+0f00
+0f00
+3ff0
+3ff0
+0f00
+0f00
+03fc
+03fc
+0000
+0000
+ENDCHAR
+STARTCHAR C0118
+ENCODING 8592
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0f00
+0f00
+3ffc
+3ffc
+0f00
+0f00
+03c0
+03c0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0119
+ENCODING 8593
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0ff0
+0ff0
+3ffc
+3ffc
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C011a
+ENCODING 8594
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+00f0
+00f0
+3ffc
+3ffc
+00f0
+00f0
+03c0
+03c0
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C011b
+ENCODING 8595
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+3ffc
+3ffc
+0ff0
+0ff0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C011c
+ENCODING 8624
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3ffc
+3ffc
+3fc0
+3fc0
+3ff0
+3ff0
+3cfc
+3cfc
+3c3c
+3c3c
+003c
+003c
+0000
+0000
+ENDCHAR
+STARTCHAR C011d
+ENCODING 9243
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3fc0
+3fc0
+3c00
+3c00
+3fc0
+3fc0
+3c00
+3c00
+3ffc
+3ffc
+03c0
+03c0
+03fc
+03fc
+0000
+0000
+ENDCHAR
+STARTCHAR C011e
+ENCODING 9473
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+ffff
+ffff
+ffff
+ffff
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C011f
+ENCODING 9475
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+ENDCHAR
+STARTCHAR C0120
+ENCODING 9487
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+03ff
+03ff
+03ff
+03ff
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0121
+ENCODING 9491
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+ffc0
+ffc0
+ffc0
+ffc0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0122
+ENCODING 9495
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03ff
+03ff
+03ff
+03ff
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0123
+ENCODING 9499
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ffc0
+ffc0
+ffc0
+ffc0
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0124
+ENCODING 9507
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03ff
+03ff
+03ff
+03ff
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0125
+ENCODING 9515
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ffc0
+ffc0
+ffc0
+ffc0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0126
+ENCODING 9523
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+ffff
+ffff
+ffff
+ffff
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0127
+ENCODING 9531
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ffff
+ffff
+ffff
+ffff
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0128
+ENCODING 9547
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ffff
+ffff
+ffff
+ffff
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0129
+ENCODING 9585
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+003f
+003f
+00fc
+00fc
+03f0
+03f0
+0fc0
+0fc0
+3f00
+3f00
+fc00
+fc00
+f000
+f000
+ENDCHAR
+STARTCHAR C012a
+ENCODING 9586
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+f000
+f000
+fc00
+fc00
+3f00
+3f00
+0fc0
+0fc0
+03f0
+03f0
+00fc
+00fc
+003f
+003f
+000f
+000f
+ENDCHAR
+STARTCHAR C012b
+ENCODING 9601
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ffff
+ffff
+ffff
+ffff
+ENDCHAR
+STARTCHAR C012c
+ENCODING 9604
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ffff
+ffff
+ffff
+ffff
+ffff
+ffff
+ffff
+ffff
+ENDCHAR
+STARTCHAR C012d
+ENCODING 9612
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ENDCHAR
+STARTCHAR C012e
+ENCODING 9614
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+f000
+f000
+f000
+f000
+f000
+f000
+f000
+f000
+f000
+f000
+f000
+f000
+f000
+f000
+f000
+f000
+ENDCHAR
+STARTCHAR C012f
+ENCODING 9620
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+ffff
+ffff
+ffff
+ffff
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0130
+ENCODING 9622
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ENDCHAR
+STARTCHAR C0131
+ENCODING 9623
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+00ff
+00ff
+00ff
+00ff
+00ff
+00ff
+00ff
+00ff
+ENDCHAR
+STARTCHAR C0132
+ENCODING 9624
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+ff00
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0133
+ENCODING 9629
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00ff
+00ff
+00ff
+00ff
+00ff
+00ff
+00ff
+00ff
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0134
+ENCODING 9654
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0300
+0300
+03c0
+03c0
+03f0
+03f0
+03fc
+03fc
+03f0
+03f0
+03c0
+03c0
+0300
+0300
+0000
+0000
+ENDCHAR
+STARTCHAR C0135
+ENCODING 9664
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00c0
+00c0
+03c0
+03c0
+0fc0
+0fc0
+3fc0
+3fc0
+0fc0
+0fc0
+03c0
+03c0
+00c0
+00c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0136
+ENCODING 9670
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0ff0
+0ff0
+3ffc
+3ffc
+3ffc
+3ffc
+0ff0
+0ff0
+03c0
+03c0
+0000
+0000
+ENDCHAR
+STARTCHAR C0137
+ENCODING 9679
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0ff0
+0ff0
+3ffc
+3ffc
+3ffc
+3ffc
+3ffc
+3ffc
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C0138
+ENCODING 9698
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0003
+0003
+000f
+000f
+003f
+003f
+00ff
+00ff
+03ff
+03ff
+0fff
+0fff
+3fff
+3fff
+ffff
+ffff
+ENDCHAR
+STARTCHAR C0139
+ENCODING 9699
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+c000
+c000
+f000
+f000
+fc00
+fc00
+ff00
+ff00
+ffc0
+ffc0
+fff0
+fff0
+fffc
+fffc
+ffff
+ffff
+ENDCHAR
+STARTCHAR C013a
+ENCODING 9824
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0ff0
+0ff0
+3ffc
+3ffc
+3ffc
+3ffc
+03c0
+03c0
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C013b
+ENCODING 9827
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03f0
+03f0
+03f0
+03f0
+3f3f
+3f3f
+3f3f
+3f3f
+00c0
+00c0
+03f0
+03f0
+0000
+0000
+ENDCHAR
+STARTCHAR C013c
+ENCODING 9829
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f3c
+0f3c
+3fff
+3fff
+3fff
+3fff
+0ffc
+0ffc
+03f0
+03f0
+00c0
+00c0
+0000
+0000
+ENDCHAR
+STARTCHAR C013d
+ENCODING 62456
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+0c0f
+0c0f
+0f0f
+0f0f
+03cf
+03cf
+00cf
+00cf
+00fc
+00fc
+3ff0
+3ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C013e
+ENCODING 65152
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+03f0
+03f0
+0f00
+0f00
+03f0
+03f0
+0fc0
+0fc0
+0c00
+0c00
+0000
+0000
+ENDCHAR
+STARTCHAR C013f
+ENCODING 65153
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0140
+ENCODING 65154
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0141
+ENCODING 65157
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c00
+3c00
+f0ff
+f0ff
+03cf
+03cf
+00ff
+00ff
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0142
+ENCODING 65158
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3c00
+3c00
+f0ff
+f0ff
+03cf
+03cf
+00ff
+00ff
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0143
+ENCODING 65165
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0144
+ENCODING 65166
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0145
+ENCODING 65167
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0146
+ENCODING 65168
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0147
+ENCODING 65169
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+000f
+000f
+000f
+000f
+ffff
+ffff
+0000
+0000
+003c
+003c
+ENDCHAR
+STARTCHAR C0148
+ENCODING 65170
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+03c0
+03c0
+ENDCHAR
+STARTCHAR C0149
+ENCODING 65171
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03cf
+03cf
+0000
+0000
+00ff
+00ff
+03cf
+03cf
+03cf
+03cf
+03ff
+03ff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C014a
+ENCODING 65172
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03cf
+03cf
+0000
+0000
+00ff
+00ff
+03cf
+03cf
+03cf
+03cf
+03ff
+03ff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C014b
+ENCODING 65173
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f3c
+0f3c
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C014c
+ENCODING 65174
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f3c
+0f3c
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C014d
+ENCODING 65175
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3cf0
+3cf0
+0000
+0000
+000f
+000f
+000f
+000f
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C014e
+ENCODING 65176
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f3c
+0f3c
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C014f
+ENCODING 65177
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+3c3c
+3c3c
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0150
+ENCODING 65178
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+3c3c
+3c3c
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0151
+ENCODING 65179
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+3c3c
+3c3c
+0000
+0000
+000f
+000f
+000f
+000f
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0152
+ENCODING 65180
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+3c3c
+3c3c
+0000
+0000
+f00f
+f00f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0153
+ENCODING 65181
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c00
+3c00
+3c0f
+3c0f
+0fc0
+0fc0
+ENDCHAR
+STARTCHAR C0154
+ENCODING 65182
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c00
+3c00
+3c0f
+3c0f
+0fc0
+0fc0
+ENDCHAR
+STARTCHAR C0155
+ENCODING 65183
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3fc0
+3fc0
+30f0
+30f0
+003c
+003c
+ffff
+ffff
+0000
+0000
+00f0
+00f0
+ENDCHAR
+STARTCHAR C0156
+ENCODING 65184
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c00
+3c00
+3c0f
+3c0f
+0fc0
+0fc0
+ENDCHAR
+STARTCHAR C0157
+ENCODING 65185
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c03
+3c03
+3c00
+3c00
+0ff0
+0ff0
+ENDCHAR
+STARTCHAR C0158
+ENCODING 65186
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c03
+3c03
+3c00
+3c00
+0ff0
+0ff0
+ENDCHAR
+STARTCHAR C0159
+ENCODING 65187
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+3fc0
+3fc0
+30f0
+30f0
+003c
+003c
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C015a
+ENCODING 65188
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c03
+3c03
+3c00
+3c00
+0ff0
+0ff0
+ENDCHAR
+STARTCHAR C015b
+ENCODING 65189
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c03
+3c03
+3c00
+3c00
+0ff0
+0ff0
+ENDCHAR
+STARTCHAR C015c
+ENCODING 65190
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c03
+3c03
+3c00
+3c00
+0ff0
+0ff0
+ENDCHAR
+STARTCHAR C015d
+ENCODING 65191
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+0000
+0000
+3fc0
+3fc0
+30f0
+30f0
+003c
+003c
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C015e
+ENCODING 65192
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+3fc0
+3fc0
+00f0
+00f0
+0ffc
+0ffc
+3c0f
+3c0f
+3c03
+3c03
+3c00
+3c00
+0ff0
+0ff0
+ENDCHAR
+STARTCHAR C015f
+ENCODING 65193
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+003c
+003c
+000f
+000f
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0160
+ENCODING 65194
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+003c
+003c
+000f
+000f
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0161
+ENCODING 65195
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+0000
+0000
+00f0
+00f0
+003c
+003c
+000f
+000f
+000f
+000f
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0162
+ENCODING 65196
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+0000
+0000
+00f0
+00f0
+003c
+003c
+000f
+000f
+000f
+000f
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0163
+ENCODING 65197
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+003c
+003c
+000f
+000f
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0164
+ENCODING 65198
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+003c
+003c
+000f
+000f
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0165
+ENCODING 65199
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+000f
+000f
+0000
+0000
+003c
+003c
+000f
+000f
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0166
+ENCODING 65200
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+000f
+000f
+0000
+0000
+003c
+003c
+000f
+000f
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C0167
+ENCODING 65201
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+c333
+c333
+c333
+c333
+c3ff
+c3ff
+c3fc
+c3fc
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C0168
+ENCODING 65202
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+c333
+c333
+c333
+c333
+c3ff
+c3ff
+c3fc
+c3fc
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C0169
+ENCODING 65203
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+30c3
+30c3
+f3cf
+f3cf
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C016a
+ENCODING 65204
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+c333
+c333
+c333
+c333
+c3ff
+c3ff
+c3fc
+c3fc
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C016b
+ENCODING 65205
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+0f0f
+0f0f
+0000
+0000
+c333
+c333
+c333
+c333
+c3ff
+c3ff
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C016c
+ENCODING 65206
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+0f0f
+0f0f
+0000
+0000
+c333
+c333
+c333
+c333
+c3ff
+c3ff
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C016d
+ENCODING 65207
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+3c3c
+3c3c
+0000
+0000
+30c3
+30c3
+f3cf
+f3cf
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C016e
+ENCODING 65208
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+0f0f
+0f0f
+0000
+0000
+c333
+c333
+c333
+c333
+c3ff
+c3ff
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C016f
+ENCODING 65209
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+c3c3
+c3c3
+c303
+c303
+c3ff
+c3ff
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C0170
+ENCODING 65210
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+c3c3
+c3c3
+c303
+c303
+c3ff
+c3ff
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C0171
+ENCODING 65211
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+33c3
+33c3
+ff03
+ff03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0172
+ENCODING 65212
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+c3c3
+c3c3
+c303
+c303
+c3ff
+c3ff
+ff00
+ff00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C0173
+ENCODING 65213
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+0000
+0000
+00ff
+00ff
+c3c3
+c3c3
+c303
+c303
+c3ff
+c3ff
+ffc0
+ffc0
+3f00
+3f00
+ENDCHAR
+STARTCHAR C0174
+ENCODING 65214
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+0000
+0000
+00ff
+00ff
+c3c3
+c3c3
+c303
+c303
+c3ff
+c3ff
+ffc0
+ffc0
+3f00
+3f00
+ENDCHAR
+STARTCHAR C0175
+ENCODING 65215
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+03c0
+03c0
+0000
+0000
+00ff
+00ff
+33c3
+33c3
+ff03
+ff03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0176
+ENCODING 65216
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+00f0
+00f0
+0000
+0000
+00ff
+00ff
+c3c3
+c3c3
+c303
+c303
+c3ff
+c3ff
+ffc0
+ffc0
+3f00
+3f00
+ENDCHAR
+STARTCHAR C0177
+ENCODING 65217
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+3c00
+3c00
+3cff
+3cff
+3fc3
+3fc3
+3f03
+3f03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0178
+ENCODING 65218
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+3c00
+3c00
+3cff
+3cff
+3fc3
+3fc3
+3f03
+3f03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0179
+ENCODING 65219
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+3c00
+3c00
+3cff
+3cff
+3fc3
+3fc3
+3f03
+3f03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C017a
+ENCODING 65220
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+3c00
+3c00
+3cff
+3cff
+3fc3
+3fc3
+3f03
+3f03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C017b
+ENCODING 65221
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3cf0
+3cf0
+3c00
+3c00
+3cff
+3cff
+3fc3
+3fc3
+3f03
+3f03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C017c
+ENCODING 65222
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3cf0
+3cf0
+3c00
+3c00
+3cff
+3cff
+3fc3
+3fc3
+3f03
+3f03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C017d
+ENCODING 65223
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3cf0
+3cf0
+3c00
+3c00
+3cff
+3cff
+3fc3
+3fc3
+3f03
+3f03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C017e
+ENCODING 65224
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3cf0
+3cf0
+3c00
+3c00
+3cff
+3cff
+3fc3
+3fc3
+3f03
+3f03
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C017f
+ENCODING 65225
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00fc
+00fc
+03c0
+03c0
+03c0
+03c0
+0fff
+0fff
+3c03
+3c03
+3f00
+3f00
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C0180
+ENCODING 65226
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00fc
+00fc
+03c0
+03c0
+03c0
+03c0
+0fff
+0fff
+3c03
+3c03
+3f00
+3f00
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C0181
+ENCODING 65227
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03f0
+03f0
+0ffc
+0ffc
+0f00
+0f00
+03c0
+03c0
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0182
+ENCODING 65228
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00fc
+00fc
+03c0
+03c0
+03c0
+03c0
+0fff
+0fff
+3c03
+3c03
+3f00
+3f00
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C0183
+ENCODING 65229
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+00fc
+00fc
+03c0
+03c0
+03c0
+03c0
+0fff
+0fff
+3c03
+3c03
+3f00
+3f00
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C0184
+ENCODING 65230
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+00fc
+00fc
+03c0
+03c0
+03c0
+03c0
+0fff
+0fff
+3c03
+3c03
+3f00
+3f00
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C0185
+ENCODING 65231
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+03f0
+03f0
+0ffc
+0ffc
+0f00
+0f00
+03c0
+03c0
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0186
+ENCODING 65232
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3c00
+3c00
+00fc
+00fc
+03c0
+03c0
+03c0
+03c0
+0fff
+0fff
+3c03
+3c03
+3f00
+3f00
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C0187
+ENCODING 65233
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f00
+0f00
+003f
+003f
+f0f3
+f0f3
+f03f
+f03f
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0188
+ENCODING 65234
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f00
+0f00
+003f
+003f
+f0f3
+f0f3
+f03f
+f03f
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0189
+ENCODING 65235
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f00
+0f00
+0000
+0000
+00ff
+00ff
+00f3
+00f3
+003f
+003f
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C018a
+ENCODING 65236
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0f00
+0f00
+003f
+003f
+f0f3
+f0f3
+f03f
+f03f
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C018b
+ENCODING 65237
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+0000
+0000
+003f
+003f
+30f3
+30f3
+f03f
+f03f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C018c
+ENCODING 65238
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+0000
+0000
+003f
+003f
+30f3
+30f3
+f03f
+f03f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C018d
+ENCODING 65239
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+3cf0
+3cf0
+0000
+0000
+03ff
+03ff
+03c3
+03c3
+00ff
+00ff
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C018e
+ENCODING 65240
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0f3c
+0f3c
+0000
+0000
+003f
+003f
+30f3
+30f3
+f03f
+f03f
+f00f
+f00f
+3ffc
+3ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C018f
+ENCODING 65241
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+0f0f
+0f0f
+0c0f
+0c0f
+3f0f
+3f0f
+000f
+000f
+c00f
+c00f
+fffc
+fffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0190
+ENCODING 65242
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+0f0f
+0f0f
+0c0f
+0c0f
+3f0f
+3f0f
+000f
+000f
+c00f
+c00f
+fffc
+fffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0191
+ENCODING 65243
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+03f0
+03f0
+003c
+003c
+000f
+000f
+000f
+000f
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0192
+ENCODING 65244
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+0f0f
+0f0f
+0c0f
+0c0f
+3f0f
+3f0f
+000f
+000f
+c00f
+c00f
+fffc
+fffc
+0000
+0000
+ENDCHAR
+STARTCHAR C0193
+ENCODING 65245
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+3c0f
+3c0f
+3c0f
+3c0f
+3c0f
+3c0f
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C0194
+ENCODING 65246
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+3c0f
+3c0f
+3c0f
+3c0f
+3c0f
+3c0f
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C0195
+ENCODING 65247
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C0196
+ENCODING 65248
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+000f
+3c0f
+3c0f
+3c0f
+3c0f
+3c0f
+3c0f
+0ffc
+0ffc
+ENDCHAR
+STARTCHAR C0197
+ENCODING 65249
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+003c
+003c
+03ff
+03ff
+0ff3
+0ff3
+3c3f
+3c3f
+3c0f
+3c0f
+3c00
+3c00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C0198
+ENCODING 65250
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+003c
+003c
+03ff
+03ff
+0ff3
+0ff3
+3c3f
+3c3f
+3c0f
+3c0f
+3c00
+3c00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C0199
+ENCODING 65251
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+003f
+003f
+00f3
+00f3
+fff3
+fff3
+003f
+003f
+0000
+0000
+ENDCHAR
+STARTCHAR C019a
+ENCODING 65252
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+003c
+003c
+03ff
+03ff
+0ff3
+0ff3
+3c3f
+3c3f
+3c0f
+3c0f
+3c00
+3c00
+3c00
+3c00
+ENDCHAR
+STARTCHAR C019b
+ENCODING 65253
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0000
+0000
+0c0c
+0c0c
+3c0f
+3c0f
+3c0f
+3c0f
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C019c
+ENCODING 65254
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0000
+0000
+0c0c
+0c0c
+3c0f
+3c0f
+3c0f
+3c0f
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C019d
+ENCODING 65255
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00f0
+00f0
+0000
+0000
+000f
+000f
+000f
+000f
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C019e
+ENCODING 65256
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+03c0
+03c0
+0000
+0000
+0c0c
+0c0c
+3c0f
+3c0f
+3c0f
+3c0f
+0ffc
+0ffc
+0000
+0000
+ENDCHAR
+STARTCHAR C019f
+ENCODING 65257
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+03cf
+03cf
+03cf
+03cf
+03ff
+03ff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C01a0
+ENCODING 65258
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+03cf
+03cf
+03cf
+03cf
+03ff
+03ff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C01a1
+ENCODING 65259
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0300
+0300
+0ffc
+0ffc
+0c3f
+0c3f
+0fc3
+0fc3
+ffff
+ffff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C01a2
+ENCODING 65260
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+03cf
+03cf
+03cf
+03cf
+03ff
+03ff
+0000
+0000
+0000
+0000
+ENDCHAR
+STARTCHAR C01a3
+ENCODING 65261
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+03cf
+03cf
+03ff
+03ff
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C01a4
+ENCODING 65262
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00ff
+00ff
+03cf
+03cf
+03ff
+03ff
+000f
+000f
+003c
+003c
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C01a5
+ENCODING 65263
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00fc
+00fc
+f3cf
+f3cf
+f3c3
+f3c3
+f0f3
+f0f3
+f0f0
+f0f0
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C01a6
+ENCODING 65264
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+00fc
+00fc
+f3cf
+f3cf
+f3c3
+f3c3
+f0f3
+f0f3
+f0f0
+f0f0
+3ff0
+3ff0
+ENDCHAR
+STARTCHAR C01a7
+ENCODING 65265
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00fc
+00fc
+c3ff
+c3ff
+c3c3
+c3c3
+f0f3
+f0f3
+3ff3
+3ff3
+0000
+0000
+0f3c
+0f3c
+ENDCHAR
+STARTCHAR C01a8
+ENCODING 65266
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00fc
+00fc
+c3ff
+c3ff
+c3c3
+c3c3
+f0f3
+f0f3
+3ff3
+3ff3
+0000
+0000
+0f3c
+0f3c
+ENDCHAR
+STARTCHAR C01a9
+ENCODING 65267
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+0000
+0000
+0000
+0000
+000f
+000f
+000f
+000f
+ffff
+ffff
+0000
+0000
+0f3c
+0f3c
+ENDCHAR
+STARTCHAR C01aa
+ENCODING 65268
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0000
+0000
+00fc
+00fc
+c3ff
+c3ff
+c3c3
+c3c3
+f0f3
+f0f3
+3ff3
+3ff3
+0000
+0000
+0f3c
+0f3c
+ENDCHAR
+STARTCHAR C01ab
+ENCODING 65271
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+000f
+000f
+0c0f
+0c0f
+0f0f
+0f0f
+03cf
+03cf
+00cf
+00cf
+00fc
+00fc
+3ff0
+3ff0
+0000
+0000
+ENDCHAR
+STARTCHAR C01ac
+ENCODING 65533
+SWIDTH 666 0
+DWIDTH 16 0
+BBX 16 16 0 -4
+BITMAP
+0ff0
+0ff0
+3c3c
+3c3c
+33cc
+33cc
+3f3c
+3f3c
+3ffc
+3ffc
+3f3c
+3f3c
+0ff0
+0ff0
+0000
+0000
+ENDCHAR
+ENDFONT
diff --git a/fonts/fauxtari-16.psf b/fonts/fauxtari-16.psf
new file mode 100644
index 0000000..8462735
--- /dev/null
+++ b/fonts/fauxtari-16.psf
Binary files differ
diff --git a/fonts/fauxtari-16.txt b/fonts/fauxtari-16.txt
new file mode 100644
index 0000000..1f450d9
--- /dev/null
+++ b/fonts/fauxtari-16.txt
@@ -0,0 +1,4796 @@
+%PSF2
+Version: 0
+Flags: 1
+Length: 512
+Width: 16
+Height: 16
+%
+Unicode: [2665];
+Bitmap: \
+-------------------------------- \
+----####--####------####--####-- \
+--##############--############## \
+--##############--############## \
+----##########------##########-- \
+------######----------######---- \
+--------##--------------##------ \
+--------------------------------
+%
+Unicode: [2523];
+Bitmap: \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------##########------########## \
+------##########------########## \
+------####------------####------ \
+------####------------####------ \
+------####------------####------
+%
+Unicode: [2503];
+Bitmap: \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------####
+%
+Unicode: [251b];
+Bitmap: \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+##########------##########------ \
+##########------##########------ \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [252b];
+Bitmap: \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+##########------##########------ \
+##########------##########------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------
+%
+Unicode: [2513];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+##########------##########------ \
+##########------##########------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------
+%
+Unicode: [2571];
+Bitmap: \
+------------####------------#### \
+----------######----------###### \
+--------######----------######-- \
+------######----------######---- \
+----######----------######------ \
+--######----------######-------- \
+######----------######---------- \
+####------------####------------
+%
+Unicode: [2572];
+Bitmap: \
+####------------####------------ \
+######----------######---------- \
+--######----------######-------- \
+----######----------######------ \
+------######----------######---- \
+--------######----------######-- \
+----------######----------###### \
+------------####------------####
+%
+Unicode: [25e2];
+Bitmap: \
+--------------##--------------## \
+------------####------------#### \
+----------######----------###### \
+--------########--------######## \
+------##########------########## \
+----############----############ \
+--##############--############## \
+################################
+%
+Unicode: [2597];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--------########--------######## \
+--------########--------######## \
+--------########--------######## \
+--------########--------########
+%
+Unicode: [25e3];
+Bitmap: \
+##--------------##-------------- \
+####------------####------------ \
+######----------######---------- \
+########--------########-------- \
+##########------##########------ \
+############----############---- \
+##############--##############-- \
+################################
+%
+Unicode: [259d];
+Bitmap: \
+--------########--------######## \
+--------########--------######## \
+--------########--------######## \
+--------########--------######## \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [2598];
+Bitmap: \
+########--------########-------- \
+########--------########-------- \
+########--------########-------- \
+########--------########-------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [2594];
+Bitmap: \
+################################ \
+################################ \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [2581];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+################################ \
+################################
+%
+Unicode: [2596];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+########--------########-------- \
+########--------########-------- \
+########--------########-------- \
+########--------########--------
+%
+Unicode: [2663];
+Bitmap: \
+-------------------------------- \
+------######----------######---- \
+------######----------######---- \
+--######--######--######--###### \
+--######--######--######--###### \
+--------##--------------##------ \
+------######----------######---- \
+--------------------------------
+%
+Unicode: [250f];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+------##########------########## \
+------##########------########## \
+------####------------####------ \
+------####------------####------ \
+------####------------####------
+%
+Unicode: [2501];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+################################ \
+################################ \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [254b];
+Bitmap: \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+################################ \
+################################ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------
+%
+Unicode: [25cf];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----########--------########---- \
+--############----############-- \
+--############----############-- \
+--############----############-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [2584];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+################################ \
+################################ \
+################################ \
+################################
+%
+Unicode: [258e];
+Bitmap: \
+####------------####------------ \
+####------------####------------ \
+####------------####------------ \
+####------------####------------ \
+####------------####------------ \
+####------------####------------ \
+####------------####------------ \
+####------------####------------
+%
+Unicode: [2533];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+################################ \
+################################ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------
+%
+Unicode: [253b];
+Bitmap: \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+################################ \
+################################ \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [258c];
+Bitmap: \
+########--------########-------- \
+########--------########-------- \
+########--------########-------- \
+########--------########-------- \
+########--------########-------- \
+########--------########-------- \
+########--------########-------- \
+########--------########--------
+%
+Unicode: [2517];
+Bitmap: \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------##########------########## \
+------##########------########## \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0118];[241b];
+Bitmap: \
+--########--------########------ \
+--####------------####---------- \
+--########--------########------ \
+--####------------####---------- \
+--############----############-- \
+------####------------####------ \
+------########--------########-- \
+--------------------------------
+%
+Unicode: [2191];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+----########--------########---- \
+--############----############-- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [2193];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+--############----############-- \
+----########--------########---- \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [2190];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+----####------------####-------- \
+--############----############-- \
+----####------------####-------- \
+------####------------####------ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [2192];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+--------####------------####---- \
+--############----############-- \
+--------####------------####---- \
+------####------------####------ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0020];[00a0];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0021];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+-------------------------------- \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [0022];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0023];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+################################ \
+--####----####----####----####-- \
+--####----####----####----####-- \
+################################ \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [0024];
+Bitmap: \
+------####------------####------ \
+----##########------##########-- \
+--####------------####---------- \
+----########--------########---- \
+----------####------------####-- \
+--##########------##########---- \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [0025];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+--####--####------####--####---- \
+------####------------####------ \
+----####------------####-------- \
+--####----####----####----####-- \
+--##------####----##------####-- \
+--------------------------------
+%
+Unicode: [0026];
+Bitmap: \
+------######----------######---- \
+----####--####------####--####-- \
+------######----------######---- \
+----######----------######------ \
+--####--########--####--######## \
+--####----####----####----####-- \
+----######--####----######--#### \
+--------------------------------
+%
+Unicode: [0027];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0028];
+Bitmap: \
+-------------------------------- \
+--------######----------######-- \
+------######----------######---- \
+------####------------####------ \
+------####------------####------ \
+------######----------######---- \
+--------######----------######-- \
+--------------------------------
+%
+Unicode: [0029];
+Bitmap: \
+-------------------------------- \
+--######----------######-------- \
+----######----------######------ \
+------####------------####------ \
+------####------------####------ \
+----######----------######------ \
+--######----------######-------- \
+--------------------------------
+%
+Unicode: [002a];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+----########--------########---- \
+################################ \
+----########--------########---- \
+--####----####----####----####-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [002b];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+--############----############-- \
+------####------------####------ \
+------####------------####------ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [002c];[00b8];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+----####------------####--------
+%
+Unicode: [002d];[00ad];[2013];[2014];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--############----############-- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [002e];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [002f];
+Bitmap: \
+-------------------------------- \
+----------####------------####-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+--####------------####---------- \
+--##--------------##------------ \
+--------------------------------
+%
+Unicode: [0030];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####--######----####--######-- \
+--######--####----######--####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0031];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+----######----------######------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+--############----############-- \
+--------------------------------
+%
+Unicode: [0032];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [0033];
+Bitmap: \
+-------------------------------- \
+--############----############-- \
+--------####------------####---- \
+------####------------####------ \
+--------####------------####---- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0034];
+Bitmap: \
+-------------------------------- \
+--------####------------####---- \
+------######----------######---- \
+----########--------########---- \
+--####--####------####--####---- \
+--############----############-- \
+--------####------------####---- \
+--------------------------------
+%
+Unicode: [0035];
+Bitmap: \
+-------------------------------- \
+--############----############-- \
+--####------------####---------- \
+--##########------##########---- \
+----------####------------####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0036];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####------------####---------- \
+--##########------##########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0037];
+Bitmap: \
+-------------------------------- \
+--############----############-- \
+----------####------------####-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+----####------------####-------- \
+--------------------------------
+%
+Unicode: [0038];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0039];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+----##########------##########-- \
+----------####------------####-- \
+--------####------------####---- \
+----######----------######------ \
+--------------------------------
+%
+Unicode: [003a];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [003b];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+----####------------####--------
+%
+Unicode: [003c];
+Bitmap: \
+----------####------------####-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+------####------------####------ \
+--------####------------####---- \
+----------####------------####-- \
+--------------------------------
+%
+Unicode: [003d];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--############----############-- \
+-------------------------------- \
+-------------------------------- \
+--############----############-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [003e];
+Bitmap: \
+--####------------####---------- \
+----####------------####-------- \
+------####------------####------ \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+--####------------####---------- \
+--------------------------------
+%
+Unicode: [003f];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--------####------------####---- \
+------####------------####------ \
+-------------------------------- \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [0040];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####--######----####--######-- \
+--####--######----####--######-- \
+--####------------####---------- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [0041];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--############----############-- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [0042];
+Bitmap: \
+-------------------------------- \
+--##########------##########---- \
+--####----####----####----####-- \
+--##########------##########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--##########------##########---- \
+--------------------------------
+%
+Unicode: [0043];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####------------####---------- \
+--####------------####---------- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0044];
+Bitmap: \
+-------------------------------- \
+--########--------########------ \
+--####--####------####--####---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####--####------####--####---- \
+--########--------########------ \
+--------------------------------
+%
+Unicode: [0045];
+Bitmap: \
+-------------------------------- \
+--############----############-- \
+--####------------####---------- \
+--##########------##########---- \
+--####------------####---------- \
+--####------------####---------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [0046];
+Bitmap: \
+-------------------------------- \
+--############----############-- \
+--####------------####---------- \
+--##########------##########---- \
+--####------------####---------- \
+--####------------####---------- \
+--####------------####---------- \
+--------------------------------
+%
+Unicode: [0047];
+Bitmap: \
+-------------------------------- \
+----##########------##########-- \
+--####------------####---------- \
+--####------------####---------- \
+--####--######----####--######-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [0048];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--############----############-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [0049];
+Bitmap: \
+-------------------------------- \
+--############----############-- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+--############----############-- \
+--------------------------------
+%
+Unicode: [004a];
+Bitmap: \
+-------------------------------- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [004b];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+--####--####------####--####---- \
+--########--------########------ \
+--########--------########------ \
+--####--####------####--####---- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [004c];
+Bitmap: \
+-------------------------------- \
+--####------------####---------- \
+--####------------####---------- \
+--####------------####---------- \
+--####------------####---------- \
+--####------------####---------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [004d];
+Bitmap: \
+-------------------------------- \
+--####------####--####------#### \
+--######--######--######--###### \
+--##############--############## \
+--####--##--####--####--##--#### \
+--####------####--####------#### \
+--####------####--####------#### \
+--------------------------------
+%
+Unicode: [004e];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+--######--####----######--####-- \
+--############----############-- \
+--############----############-- \
+--####--######----####--######-- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [004f];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0050];
+Bitmap: \
+-------------------------------- \
+--##########------##########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--##########------##########---- \
+--####------------####---------- \
+--####------------####---------- \
+--------------------------------
+%
+Unicode: [0051];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####--####------####--####---- \
+----####--####------####--####-- \
+--------------------------------
+%
+Unicode: [0052];
+Bitmap: \
+-------------------------------- \
+--##########------##########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--##########------##########---- \
+--####--####------####--####---- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [0053];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####------------####---------- \
+----########--------########---- \
+----------####------------####-- \
+----------####------------####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0054];
+Bitmap: \
+-------------------------------- \
+--############----############-- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [0055];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [0056];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [0057];
+Bitmap: \
+-------------------------------- \
+--####------####--####------#### \
+--####------####--####------#### \
+--####--##--####--####--##--#### \
+--##############--############## \
+--######--######--######--###### \
+--####------####--####------#### \
+--------------------------------
+%
+Unicode: [0058];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [0059];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [005a];
+Bitmap: \
+-------------------------------- \
+--############----############-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+--####------------####---------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [005b];
+Bitmap: \
+-------------------------------- \
+------########--------########-- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------########--------########-- \
+--------------------------------
+%
+Unicode: [005c];
+Bitmap: \
+-------------------------------- \
+--##--------------##------------ \
+--####------------####---------- \
+----####------------####-------- \
+------####------------####------ \
+--------####------------####---- \
+----------####------------####-- \
+--------------------------------
+%
+Unicode: [005d];
+Bitmap: \
+-------------------------------- \
+--########--------########------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+--########--------########------ \
+--------------------------------
+%
+Unicode: [005e];
+Bitmap: \
+-------------------------------- \
+--------##--------------##------ \
+------######----------######---- \
+----####--####------####--####-- \
+--####------####--####------#### \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [005f];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+################################ \
+--------------------------------
+%
+Unicode: [25c6];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+----########--------########---- \
+--############----############-- \
+--############----############-- \
+----########--------########---- \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [0061];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----########--------########---- \
+----------####------------####-- \
+----##########------##########-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [0062];
+Bitmap: \
+-------------------------------- \
+--####------------####---------- \
+--####------------####---------- \
+--##########------##########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--##########------##########---- \
+--------------------------------
+%
+Unicode: [0063];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----########--------########---- \
+--####------------####---------- \
+--####------------####---------- \
+--####------------####---------- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0064];
+Bitmap: \
+-------------------------------- \
+----------####------------####-- \
+----------####------------####-- \
+----##########------##########-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [0065];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--############----############-- \
+--####------------####---------- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0066];
+Bitmap: \
+-------------------------------- \
+--------######----------######-- \
+------####------------####------ \
+----##########------##########-- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [0067];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----##########------##########-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----##########------##########-- \
+----------####------------####-- \
+--##########------##########----
+%
+Unicode: [0068];
+Bitmap: \
+-------------------------------- \
+--####------------####---------- \
+--####------------####---------- \
+--##########------##########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [0069];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+-------------------------------- \
+----######----------######------ \
+------####------------####------ \
+------####------------####------ \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [006a];
+Bitmap: \
+-------------------------------- \
+----------####------------####-- \
+-------------------------------- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####-- \
+----########--------########----
+%
+Unicode: [006b];
+Bitmap: \
+-------------------------------- \
+--####------------####---------- \
+--####------------####---------- \
+--####--####------####--####---- \
+--########--------########------ \
+--####--####------####--####---- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [006c];
+Bitmap: \
+-------------------------------- \
+----######----------######------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [006d];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--####----####----####----####-- \
+--##############--############## \
+--##############--############## \
+--####--##--####--####--##--#### \
+--####------####--####------#### \
+--------------------------------
+%
+Unicode: [006e];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--##########------##########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [006f];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0070];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--##########------##########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--##########------##########---- \
+--####------------####---------- \
+--####------------####----------
+%
+Unicode: [0071];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----##########------##########-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----##########------##########-- \
+----------####------------####-- \
+----------####------------####--
+%
+Unicode: [0072];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--##########------##########---- \
+--####----####----####----####-- \
+--####------------####---------- \
+--####------------####---------- \
+--####------------####---------- \
+--------------------------------
+%
+Unicode: [0073];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----##########------##########-- \
+--####------------####---------- \
+----########--------########---- \
+----------####------------####-- \
+--##########------##########---- \
+--------------------------------
+%
+Unicode: [0074];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+--############----############-- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+--------######----------######-- \
+--------------------------------
+%
+Unicode: [0075];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [0076];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [0077];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--####------####--####------#### \
+--####--##--####--####--##--#### \
+--##############--############## \
+----##########------##########-- \
+----####--####------####--####-- \
+--------------------------------
+%
+Unicode: [0078];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--####----####----####----####-- \
+----########--------########---- \
+------####------------####------ \
+----########--------########---- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [0079];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------####------------####---- \
+--########--------########------
+%
+Unicode: [007a];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--############----############-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [2660];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+----########--------########---- \
+--############----############-- \
+--############----############-- \
+------####------------####------ \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [007c];[0622];[fe81];[fe82];
+Bitmap: \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------
+%
+Unicode: [21b0];
+Bitmap: \
+-------------------------------- \
+--############----############-- \
+--########--------########------ \
+--##########------##########---- \
+--####--######----####--######-- \
+--####----####----####----####-- \
+----------####------------####-- \
+--------------------------------
+%
+Unicode: [25c0];
+Bitmap: \
+--------##--------------##------ \
+------####------------####------ \
+----######----------######------ \
+--########--------########------ \
+----######----------######------ \
+------####------------####------ \
+--------##--------------##------ \
+--------------------------------
+%
+Unicode: [25b6];
+Bitmap: \
+------##--------------##-------- \
+------####------------####------ \
+------######----------######---- \
+------########--------########-- \
+------######----------######---- \
+------####------------####------ \
+------##--------------##-------- \
+--------------------------------
+%
+Unicode: [00e1];
+Bitmap: \
+--------####------------####---- \
+------####------------####------ \
+----########--------########---- \
+----------####------------####-- \
+----##########------##########-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [00f9];
+Bitmap: \
+----####------------####-------- \
+------####------------####------ \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [00d1];
+Bitmap: \
+----####--####------####--####-- \
+--####--####------####--####---- \
+-------------------------------- \
+--######--####----######--####-- \
+--######--####----######--####-- \
+--############----############-- \
+--####--######----####--######-- \
+--------------------------------
+%
+Unicode: [00c9];
+Bitmap: \
+--------####------------####---- \
+------####------------####------ \
+--############----############-- \
+--####------------####---------- \
+--##########------##########---- \
+--####------------####---------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [00e7];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----########--------########---- \
+--####------------####---------- \
+--####------------####---------- \
+----########--------########---- \
+------####------------####------ \
+----####------------####--------
+%
+Unicode: [00f4];
+Bitmap: \
+----########--------########---- \
+--####----####----####----####-- \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [00f2];
+Bitmap: \
+----####------------####-------- \
+------####------------####------ \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [00ec];
+Bitmap: \
+----####------------####-------- \
+------####------------####------ \
+-------------------------------- \
+----######----------######------ \
+------####------------####------ \
+------####------------####------ \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [00a3];
+Bitmap: \
+------######----------######---- \
+----####------------####-------- \
+----####------------####-------- \
+--########--------########------ \
+----####------------####-------- \
+----####------------####-------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [00ef];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+-------------------------------- \
+----######----------######------ \
+------####------------####------ \
+------####------------####------ \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [00fc];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [00e4];
+Bitmap: \
+----####--####------####--####-- \
+-------------------------------- \
+----########--------########---- \
+----------####------------####-- \
+----##########------##########-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [00d6];
+Bitmap: \
+--####----####----####----####-- \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [00fa];
+Bitmap: \
+--------####------------####---- \
+------####------------####------ \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [00f3];
+Bitmap: \
+--------####------------####---- \
+------####------------####------ \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [00f6];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [00dc];
+Bitmap: \
+--####----####----####----####-- \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [00e5];
+Bitmap: \
+----########--------########---- \
+--####----####----####----####-- \
+------######----------######---- \
+----------####------------####-- \
+----##########------##########-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [00fb];
+Bitmap: \
+----########--------########---- \
+--####----####----####----####-- \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [00ee];
+Bitmap: \
+----########--------########---- \
+--####----####----####----####-- \
+-------------------------------- \
+----######----------######------ \
+------####------------####------ \
+------####------------####------ \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [00e9];
+Bitmap: \
+--------####------------####---- \
+------####------------####------ \
+----########--------########---- \
+--####----####----####----####-- \
+--############----############-- \
+--####------------####---------- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [00e8];
+Bitmap: \
+----####------------####-------- \
+------####------------####------ \
+----########--------########---- \
+--####----####----####----####-- \
+--############----############-- \
+--####------------####---------- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [00f1];
+Bitmap: \
+----####--####------####--####-- \
+--####--####------####--####---- \
+-------------------------------- \
+--##########------##########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [00ea];
+Bitmap: \
+----########--------########---- \
+####--------########--------#### \
+----########--------########---- \
+--####----####----####----####-- \
+--############----############-- \
+--####------------####---------- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0227];
+Bitmap: \
+------####------------####------ \
+-------------------------------- \
+----########--------########---- \
+----------####------------####-- \
+----##########------##########-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [00e0];
+Bitmap: \
+----####------------####-------- \
+------####------------####------ \
+----########--------########---- \
+----------####------------####-- \
+----##########------##########-- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [00a1];
+Bitmap: \
+------####------------####------ \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+--------------------------------
+%
+Unicode: [00c4];
+Bitmap: \
+--####----####----####----####-- \
+--####----####----####----####-- \
+------####------------####------ \
+----########--------########---- \
+--####----####----####----####-- \
+--############----############-- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [05d0];
+Bitmap: \
+-------------------------------- \
+####------####--####------####-- \
+########--####--########--####-- \
+####--########--####--########-- \
+####----####----####----####---- \
+####------####--####------####-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05d1];
+Bitmap: \
+-------------------------------- \
+##########------##########------ \
+------######----------######---- \
+--------####------------####---- \
+--------####------------####---- \
+##############--##############-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05d2];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--------####------------####---- \
+--------####------------####---- \
+--##########------##########---- \
+######----####--######----####-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05d3];
+Bitmap: \
+-------------------------------- \
+##############--##############-- \
+------######----------######---- \
+--------####------------####---- \
+--------####------------####---- \
+--------####------------####---- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05d4];
+Bitmap: \
+-------------------------------- \
+############----############---- \
+----------####------------####-- \
+--##------####----##------####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05d5];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+------######----------######---- \
+--------####------------####---- \
+--------####------------####---- \
+--------####------------####---- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05d6];
+Bitmap: \
+-------------------------------- \
+############----############---- \
+--######----------######-------- \
+----####------------####-------- \
+----####------------####-------- \
+----####------------####-------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05d7];
+Bitmap: \
+-------------------------------- \
+############----############---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05d8];
+Bitmap: \
+-------------------------------- \
+####--########--####--########-- \
+####--##--####--####--##--####-- \
+####------####--####------####-- \
+####------####--####------####-- \
+############----############---- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05d9];
+Bitmap: \
+-------------------------------- \
+--##########------##########---- \
+------######----------######---- \
+--------####------------####---- \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05da];
+Bitmap: \
+-------------------------------- \
+############----############---- \
+--------######----------######-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####--
+%
+Unicode: [05db];
+Bitmap: \
+-------------------------------- \
+############----############---- \
+----------####------------####-- \
+----------####------------####-- \
+--------######----------######-- \
+############----############---- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05dc];
+Bitmap: \
+####------------####------------ \
+############----############---- \
+----------####------------####-- \
+----------####------------####-- \
+--------######----------######-- \
+----########--------########---- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05dd];
+Bitmap: \
+-------------------------------- \
+--############----############-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--############----############-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05de];
+Bitmap: \
+-------------------------------- \
+####--######----####--######---- \
+--######--####----######--####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####--######----####--######-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05df];
+Bitmap: \
+-------------------------------- \
+------########--------########-- \
+--------######----------######-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####--
+%
+Unicode: [05e0];
+Bitmap: \
+-------------------------------- \
+------########--------########-- \
+----------####------------####-- \
+----------####------------####-- \
+--------######----------######-- \
+--##########------##########---- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05e1];
+Bitmap: \
+-------------------------------- \
+##############--##############-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####--####------####--####---- \
+--########--------########------ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05e2];
+Bitmap: \
+-------------------------------- \
+######--######--######--######-- \
+--####----####----####----####-- \
+----####--####------####--####-- \
+----####--####------####--####-- \
+############----############---- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05e3];
+Bitmap: \
+-------------------------------- \
+############----############---- \
+--####--######----####--######-- \
+--####----####----####----####-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####--
+%
+Unicode: [05e4];
+Bitmap: \
+-------------------------------- \
+############----############---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--------######----------######-- \
+############----############---- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05e5];
+Bitmap: \
+-------------------------------- \
+####----######--####----######-- \
+--####----####----####----####-- \
+--####--####------####--####---- \
+--########--------########------ \
+--####------------####---------- \
+--####------------####---------- \
+--####------------####----------
+%
+Unicode: [05e6];
+Bitmap: \
+-------------------------------- \
+####------####--####------####-- \
+--####--######----####--######-- \
+----######----------######------ \
+--------####------------####---- \
+##############--##############-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05e7];
+Bitmap: \
+-------------------------------- \
+############----############---- \
+--------######----------######-- \
+####------####--####------####-- \
+####----####----####----####---- \
+####--####------####--####------ \
+####------------####------------ \
+####------------####------------
+%
+Unicode: [05e8];
+Bitmap: \
+-------------------------------- \
+############----############---- \
+--------######----------######-- \
+----------####------------####-- \
+----------####------------####-- \
+----------####------------####-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05e9];
+Bitmap: \
+-------------------------------- \
+##----##----##--##----##----##-- \
+####--##----##--####--##----##-- \
+######----####--######----####-- \
+####----####----####----####---- \
+############----############---- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [05ea];
+Bitmap: \
+-------------------------------- \
+############----############---- \
+--####--######----####--######-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+######----####--######----####-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0179];
+Bitmap: \
+------####------------####------ \
+--############----############-- \
+----####--####------####--####-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [0105];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----########--------########---- \
+----------####------------####-- \
+----##########------##########-- \
+--####----####----####----####-- \
+----##########------##########-- \
+------------####------------####
+%
+Unicode: [017a];
+Bitmap: \
+--------####------------####---- \
+------####------------####------ \
+--############----############-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [0107];
+Bitmap: \
+--------####------------####---- \
+------####------------####------ \
+----########--------########---- \
+--####------------####---------- \
+--####------------####---------- \
+--####------------####---------- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [015a];
+Bitmap: \
+------####------------####------ \
+----########--------########---- \
+--####------------####---------- \
+----########--------########---- \
+----------####------------####-- \
+----------####------------####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0119];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--############----############-- \
+--####------------####---------- \
+----########--------########---- \
+----------####------------####--
+%
+Unicode: [00df];
+Bitmap: \
+-------------------------------- \
+------######----------######---- \
+----####--####------####--####-- \
+----########--------########---- \
+----####--####------####--####-- \
+----####--######----####--###### \
+----##########------##########-- \
+--####------------####----------
+%
+Unicode: [0141];
+Bitmap: \
+-------------------------------- \
+--####------------####---------- \
+--####------------####---------- \
+--########--------########------ \
+--######----------######-------- \
+######----------######---------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [0142];
+Bitmap: \
+-------------------------------- \
+----######----------######------ \
+------####------------####------ \
+------######----------######---- \
+----######----------######------ \
+------####------------####------ \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [0143];
+Bitmap: \
+--------####------------####---- \
+--##--####--##----##--####--##-- \
+--####----####----####----####-- \
+--############----############-- \
+--############----############-- \
+--####--######----####--######-- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [0144];
+Bitmap: \
+--------####------------####---- \
+------####------------####------ \
+--##########------##########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--------------------------------
+%
+Unicode: [00d3];
+Bitmap: \
+----------####------------####-- \
+----########--------########---- \
+--####--##--##----####--##--##-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+--------------------------------
+%
+Unicode: [015b];
+Bitmap: \
+--------####------------####---- \
+------####------------####------ \
+----##########------##########-- \
+--####------------####---------- \
+----########--------########---- \
+----------####------------####-- \
+--##########------##########---- \
+--------------------------------
+%
+Unicode: [0106];
+Bitmap: \
+--------####------------####---- \
+----########--------########---- \
+--####--######----####--######-- \
+--####------------####---------- \
+--####------------####---------- \
+--####----####----####----####-- \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [0104];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--############----############-- \
+--####----####----####----####-- \
+------------####------------####
+%
+Unicode: [017b];
+Bitmap: \
+------####------------####------ \
+--############----############-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+--####------------####---------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [017c];
+Bitmap: \
+------####------------####------ \
+-------------------------------- \
+--############----############-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+--############----############-- \
+--------------------------------
+%
+Unicode: [0660];
+Bitmap: \
+-------------------------------- \
+----------####------------####-- \
+--------####------------####---- \
+------####------------####------ \
+----####------------####-------- \
+--####------------####---------- \
+--##--------------##------------ \
+--------------------------------
+%
+Unicode: [0661];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--------##--------------##------ \
+------######----------######---- \
+----##########------##########-- \
+------######----------######---- \
+--------##--------------##------ \
+--------------------------------
+%
+Unicode: [0662];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------ \
+------####------------####------
+%
+Unicode: [0663];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+--####------------####---------- \
+----####------------####-------- \
+------####------------####------ \
+--------####------------####---- \
+----------####------------####--
+%
+Unicode: [0664];
+Bitmap: \
+-------------------------------- \
+--####--##--####--####--##--#### \
+--####--##--####--####--##--#### \
+--##############--############## \
+--######----------######-------- \
+----####------------####-------- \
+----######----------######------ \
+------####------------####------
+%
+Unicode: [0665];
+Bitmap: \
+-------------------------------- \
+------########--------########-- \
+----######----------######------ \
+--######----------######-------- \
+------######----------######---- \
+----######----------######------ \
+--######----------######-------- \
+----##########------##########--
+%
+Unicode: [0666];
+Bitmap: \
+-------------------------------- \
+------######----------######---- \
+----##########------##########-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--############----############-- \
+----########--------########----
+%
+Unicode: [0667];
+Bitmap: \
+-------------------------------- \
+--##########------##########---- \
+--##########------##########---- \
+--------####------------####---- \
+--------####------------####---- \
+--------####------------####---- \
+--------####------------####---- \
+--------####------------####----
+%
+Unicode: [0668];
+Bitmap: \
+-------------------------------- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+----########--------########---- \
+----########--------########---- \
+------####------------####------
+%
+Unicode: [0669];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+----########--------########---- \
+----########--------########---- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####-- \
+--####----####----####----####--
+%
+Unicode: [0624];[fe85];[fe86];
+Bitmap: \
+-------------------------------- \
+--####------------####---------- \
+####----############----######## \
+------####--####------####--#### \
+--------########--------######## \
+------------####------------#### \
+----------####------------####-- \
+--##########------##########----
+%
+Unicode: [0634];[feb5];[feb6];[feb8];
+Bitmap: \
+--------####------------####---- \
+----####----####----####----#### \
+-------------------------------- \
+##----##--##--####----##--##--## \
+##----##--##--####----##--##--## \
+##----############----########## \
+########--------########-------- \
+--####------------####----------
+%
+Unicode: [0648];[feed];[feee];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--------########--------######## \
+------####--####------####--#### \
+------##########------########## \
+------------####------------#### \
+----------####------------####-- \
+--##########------##########----
+%
+Unicode: [0629];[fe93];[fe94];
+Bitmap: \
+------####--####------####--#### \
+-------------------------------- \
+--------########--------######## \
+------####--####------####--#### \
+------####--####------####--#### \
+------##########------########## \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [064a];[fef1];[fef2];[fef4];
+Bitmap: \
+-------------------------------- \
+--------######----------######-- \
+##----############----########## \
+##----####----####----####----## \
+####----####--######----####--## \
+--##########--##--##########--## \
+-------------------------------- \
+----####--####------####--####--
+%
+Unicode: [062b];[fe99];[fe9a];[fe9c];
+Bitmap: \
+------####------------####------ \
+--####----####----####----####-- \
+-------------------------------- \
+####--------########--------#### \
+####--------########--------#### \
+--############----############-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0628];[fe8f];[fe90];[fe92];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+####--------########--------#### \
+####--------########--------#### \
+--############----############-- \
+-------------------------------- \
+------####------------####------
+%
+Unicode: [0644];[fedd];[fede];[fee0];
+Bitmap: \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+--####------####--####------#### \
+--####------####--####------#### \
+--####------####--####------#### \
+----##########------##########--
+%
+Unicode: [0621];[fe80];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+------######----------######---- \
+----####------------####-------- \
+------######----------######---- \
+----######----------######------ \
+----##--------------##---------- \
+--------------------------------
+%
+Unicode: [0647];[fee9];[feea];[feec];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--------########--------######## \
+------####--####------####--#### \
+------####--####------####--#### \
+------##########------########## \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [062a];[fe95];[fe96];[fe98];
+Bitmap: \
+-------------------------------- \
+----####--####------####--####-- \
+-------------------------------- \
+####--------########--------#### \
+####--------########--------#### \
+--############----############-- \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0646];[fee5];[fee6];[fee8];
+Bitmap: \
+-------------------------------- \
+------####------------####------ \
+-------------------------------- \
+----##------##------##------##-- \
+--####------####--####------#### \
+--####------####--####------#### \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [0645];[fee1];[fee2];[fee4];
+Bitmap: \
+-------------------------------- \
+----------####------------####-- \
+------##########------########## \
+----########--##----########--## \
+--####----######--####----###### \
+--####------####--####------#### \
+--####------------####---------- \
+--####------------####----------
+%
+Unicode: [062c];[fe9d];[fe9e];[fea0];
+Bitmap: \
+-------------------------------- \
+--########--------########------ \
+--------####------------####---- \
+----##########------##########-- \
+--####------####--####------#### \
+--####------------####---------- \
+--####------####--####------#### \
+----######----------######------
+%
+Unicode: [062e];[fea5];[fea6];[fea8];
+Bitmap: \
+------------####------------#### \
+--########--------########------ \
+--------####------------####---- \
+----##########------##########-- \
+--####------####--####------#### \
+--####--------##--####--------## \
+--####------------####---------- \
+----########--------########----
+%
+Unicode: [062d];[fea1];[fea2];[fea4];
+Bitmap: \
+-------------------------------- \
+--########--------########------ \
+--------####------------####---- \
+----##########------##########-- \
+--####------####--####------#### \
+--####--------##--####--------## \
+--####------------####---------- \
+----########--------########----
+%
+Unicode: [0636];[febd];[febe];[fec0];
+Bitmap: \
+--------####------------####---- \
+-------------------------------- \
+--------########--------######## \
+##----####----####----####----## \
+##----##------####----##------## \
+##----############----########## \
+##########------##########------ \
+--######----------######--------
+%
+Unicode: [0642];[fed5];[fed6];[fed8];
+Bitmap: \
+----####--####------####--####-- \
+-------------------------------- \
+----------######----------###### \
+--##----####--##--##----####--## \
+####------##########------###### \
+####--------########--------#### \
+--############----############-- \
+--------------------------------
+%
+Unicode: [0633];[feb1];[feb2];[feb4];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+##----##--##--####----##--##--## \
+##----##--##--####----##--##--## \
+##----############----########## \
+##----########--##----########-- \
+########--------########-------- \
+--####------------####----------
+%
+Unicode: [0641];[fed1];[fed2];[fed4];
+Bitmap: \
+-------------------------------- \
+----####------------####-------- \
+----------######----------###### \
+####----####--######----####--## \
+####------##########------###### \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0639];[fec9];[feca];[fecc];
+Bitmap: \
+-------------------------------- \
+--------######----------######-- \
+------####------------####------ \
+------####------------####------ \
+----############----############ \
+--####--------##--####--------## \
+--######----------######-------- \
+----##########------##########--
+%
+Unicode: [0643];[fed9];[feda];[fedc];
+Bitmap: \
+------------####------------#### \
+----####----####----####----#### \
+----##------####----##------#### \
+--######----####--######----#### \
+------------####------------#### \
+##----------######----------#### \
+##############--##############-- \
+--------------------------------
+%
+Unicode: [0635];[feb9];[feba];[febc];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--------########--------######## \
+##----####----####----####----## \
+##----##------####----##------## \
+##----############----########## \
+########--------########-------- \
+--####------------####----------
+%
+Unicode: [063a];[fecd];[fece];[fed0];
+Bitmap: \
+--####------------####---------- \
+--------######----------######-- \
+------####------------####------ \
+------####------------####------ \
+----############----############ \
+--####--------##--####--------## \
+--######----------######-------- \
+----##########------##########--
+%
+Unicode: [0649];[feef];[fef0];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--------######----------######-- \
+####--####--########--####--#### \
+####--####----######--####----## \
+####----####--######----####--## \
+####----####----####----####---- \
+--##########------##########----
+%
+Unicode: [0632];[feaf];[feb0];
+Bitmap: \
+-------------------------------- \
+------------####------------#### \
+-------------------------------- \
+----------####------------####-- \
+------------####------------#### \
+------------####------------#### \
+----------####------------####-- \
+--##########------##########----
+%
+Unicode: [feb7];
+Bitmap: \
+------####------------####------ \
+--####----####----####----####-- \
+-------------------------------- \
+--##----##----##--##----##----## \
+####--####--########--####--#### \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [062f];[fea9];[feaa];[0631];[fead];[feae];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+----------####------------####-- \
+------------####------------#### \
+------------####------------#### \
+----------####------------####-- \
+--##########------##########----
+%
+Unicode: [0630];[feab];[feac];
+Bitmap: \
+----####------------####-------- \
+-------------------------------- \
+--------####------------####---- \
+----------####------------####-- \
+------------####------------#### \
+------------####------------#### \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [fef3];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+------------####------------#### \
+------------####------------#### \
+################################ \
+-------------------------------- \
+----####--####------####--####--
+%
+Unicode: [fe9b];
+Bitmap: \
+------####------------####------ \
+--####----####----####----####-- \
+-------------------------------- \
+------------####------------#### \
+------------####------------#### \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [fe91];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+------------####------------#### \
+------------####------------#### \
+################################ \
+-------------------------------- \
+----------####------------####--
+%
+Unicode: [fedf];
+Bitmap: \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0627];[fe8d];[fe8e];
+Bitmap: \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+------------####------------#### \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [feeb];
+Bitmap: \
+-------------------------------- \
+------##--------------##-------- \
+----##########------##########-- \
+----##----######----##----###### \
+----######----##----######----## \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [fe97];
+Bitmap: \
+-------------------------------- \
+--####--####------####--####---- \
+-------------------------------- \
+------------####------------#### \
+------------####------------#### \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [fee7];
+Bitmap: \
+-------------------------------- \
+--------####------------####---- \
+-------------------------------- \
+------------####------------#### \
+------------####------------#### \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [fee3];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+----------######----------###### \
+--------####--##--------####--## \
+############--##############--## \
+----------######----------###### \
+--------------------------------
+%
+Unicode: [fe9f];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--########--------########------ \
+--##----####------##----####---- \
+----------####------------####-- \
+################################ \
+-------------------------------- \
+--------####------------####----
+%
+Unicode: [fef7];[f3f8];
+Bitmap: \
+------------####------------#### \
+----##------####----##------#### \
+----####----####----####----#### \
+------####--####------####--#### \
+--------##--####--------##--#### \
+--------######----------######-- \
+--##########------##########---- \
+--------------------------------
+%
+Unicode: [fea7];
+Bitmap: \
+----####------------####-------- \
+-------------------------------- \
+--########--------########------ \
+--##----####------##----####---- \
+----------####------------####-- \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [fea3];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--########--------########------ \
+--##----####------##----####---- \
+----------####------------####-- \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [febf];
+Bitmap: \
+------####------------####------ \
+-------------------------------- \
+--------########--------######## \
+--##--####----##--##--####----## \
+########------##########------## \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [fed7];
+Bitmap: \
+--####--####------####--####---- \
+-------------------------------- \
+------##########------########## \
+------####----##------####----## \
+--------########--------######## \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [feb3];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+-------------------------------- \
+--##----##----##--##----##----## \
+####--####--########--####--#### \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [fed3];
+Bitmap: \
+----####------------####-------- \
+-------------------------------- \
+--------########--------######## \
+--------####--##--------####--## \
+----------######----------###### \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [fecb];
+Bitmap: \
+-------------------------------- \
+------######----------######---- \
+----##########------##########-- \
+----####------------####-------- \
+------####------------####------ \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [fedb];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+------######----------######---- \
+----------####------------####-- \
+------------####------------#### \
+------------####------------#### \
+----##########------##########-- \
+--------------------------------
+%
+Unicode: [febb];
+Bitmap: \
+-------------------------------- \
+-------------------------------- \
+--------########--------######## \
+--##--####----##--##--####----## \
+########------##########------## \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0637];[fec1];[fec2];[fec4];[fec3];
+Bitmap: \
+--####------------####---------- \
+--####------------####---------- \
+--####--########--####--######## \
+--########----##--########----## \
+--######------##--######------## \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [fecf];
+Bitmap: \
+--####------------####---------- \
+------######----------######---- \
+----##########------##########-- \
+----####------------####-------- \
+------####------------####------ \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [0638];[fec5];[fec6];[fec8];[fec7];
+Bitmap: \
+--####--####------####--####---- \
+--####------------####---------- \
+--####--########--####--######## \
+--########----##--########----## \
+--######------##--######------## \
+################################ \
+-------------------------------- \
+--------------------------------
+%
+Unicode: [061f];
+Bitmap: \
+-------------------------------- \
+----########--------########---- \
+--####----####----####----####-- \
+----####------------####-------- \
+------####------------####------ \
+-------------------------------- \
+------####------------####------ \
+--------------------------------
+%
+// dotted-box (no such glyph)
+Unicode: [0000];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --####--######-- \
+ --####--######-- \
+ --##------------ \
+ --##------------ \
+ ------------##-- \
+ ------------##-- \
+ --##------------ \
+ --##------------ \
+ ------------##-- \
+ ------------##-- \
+ --######--####-- \
+ --######--####-- \
+ ----------------
+ ----------------
+%
+// backtick
+Unicode: [0060];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ----####-------- \
+ ----####-------- \
+ ----####-------- \
+ ----####-------- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// curlies
+Unicode: [007b];
+Bitmap: \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ----####-------- \
+ ----####-------- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ --------####---- \
+ --------####---- \
+ ----------------
+ ----------------
+%
+Unicode: [007d];
+Bitmap: \
+ ----####-------- \
+ ----####-------- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ----####-------- \
+ ----####-------- \
+ ----------------
+ ----------------
+%
+// tilde
+Unicode: [007e];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --######----#### \
+ --######----#### \
+ ####--####--#### \
+ ####--####--#### \
+ ####----######-- \
+ ####----######-- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// euro
+Unicode: [20ac];
+Bitmap: \
+ ------########-- \
+ ------########-- \
+ ----####-------- \
+ ----####-------- \
+ --##########---- \
+ --##########---- \
+ ----####-------- \
+ ----####-------- \
+ --##########---- \
+ --##########---- \
+ ----####-------- \
+ ----####-------- \
+ ------########-- \
+ ------########-- \
+ ----------------
+ ----------------
+%
+// spanish left-quote
+Unicode: [00ab];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ --####----####-- \
+ --####----####-- \
+ ####----####---- \
+ ####----####---- \
+ --####----####-- \
+ --####----####-- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// spanish right-quote
+Unicode: [00bb];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ####----####---- \
+ ####----####---- \
+ --####----####-- \
+ --####----####-- \
+ ####----####---- \
+ ####----####---- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// spanish inverted question mark
+Unicode: [00bf];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ --------####---- \
+ --------####---- \
+ --####----####-- \
+ --####----####-- \
+ ----########---- \
+ ----########---- \
+ ----------------
+ ----------------
+%
+// copyright
+Unicode: [00a9];
+Bitmap: \
+ --##########---- \
+ --##########---- \
+ ##----------##-- \
+ ##----------##-- \
+ ##----####--##-- \
+ ##----####--##-- \
+ ##--##------##-- \
+ ##--##------##-- \
+ ##----####--##-- \
+ ##----####--##-- \
+ ##----------##-- \
+ ##----------##-- \
+ --##########---- \
+ --##########---- \
+ ----------------
+ ----------------
+%
+// registered
+Unicode: [00ae];
+Bitmap: \
+ --##########---- \
+ --##########---- \
+ ##----------##-- \
+ ##----------##-- \
+ ##--####----##-- \
+ ##--####----##-- \
+ ##--##--##--##-- \
+ ##--##--##--##-- \
+ ##--####----##-- \
+ ##--####----##-- \
+ ##--##--##--##-- \
+ ##--##--##--##-- \
+ --##########---- \
+ --##########---- \
+ ----------------
+ ----------------
+%
+// degrees
+Unicode: [00b0];[00ba];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ ----##----##---- \
+ ----##----##---- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// cents
+Unicode: [00a2];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ ----##########-- \
+ ----##########-- \
+ --####---------- \
+ --####---------- \
+ --####---------- \
+ --####---------- \
+ ----##########-- \
+ ----##########-- \
+ ------####------ \
+ ------####------ \
+ ----------------
+ ----------------
+%
+// "currency sign"
+// FIXME: not bold enough
+Unicode: [00a4];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --##--------##-- \
+ --##--------##-- \
+ ----########---- \
+ ----########---- \
+ ----##----##---- \
+ ----##----##---- \
+ ----##----##---- \
+ ----##----##---- \
+ ----########---- \
+ ----########---- \
+ --##--------##-- \
+ --##--------##-- \
+ ----------------
+ ----------------
+%
+// yen
+Unicode: [00a5];
+Bitmap: \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ------####------ \
+ ------####------ \
+ --############-- \
+ --############-- \
+ ------####------ \
+ ------####------ \
+ --############-- \
+ --############-- \
+ ------####------ \
+ ------####------ \
+ ----------------
+ ----------------
+%
+// broken bar
+Unicode: [00a6];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ----------------
+ ----------------
+%
+// section sign
+// FIXME: not bold enough
+Unicode: [00a7];
+Bitmap: \
+ ------######---- \
+ ------######---- \
+ ----##---------- \
+ ----##---------- \
+ ------####------ \
+ ------####------ \
+ ----##----##---- \
+ ----##----##---- \
+ ------####------ \
+ ------####------ \
+ ----------##---- \
+ ----------##---- \
+ ----######------ \
+ ----######------ \
+ ----------------
+ ----------------
+%
+// diaresis (cha, cha, cha!)
+Unicode: [00a8];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// feminine ordinal (superscript a)
+Unicode: [00aa];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ----########---- \
+ ----########---- \
+ --------######-- \
+ --------######-- \
+ ----####--####-- \
+ ----####--####-- \
+ ------########-- \
+ ------########-- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// "not" sign
+Unicode: [00ac];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ --############-- \
+ --############-- \
+ ----------####-- \
+ ----------####-- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// macron
+Unicode: [00af];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --############-- \
+ --############-- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// plus-minus
+Unicode: [00b1];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ --############-- \
+ --############-- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ --############-- \
+ --############-- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// superscript 2
+// FIXME: not bold enough
+Unicode: [00b2];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ----####-------- \
+ ----####-------- \
+ --##----##------ \
+ --##----##------ \
+ ------##-------- \
+ ------##-------- \
+ ----##---------- \
+ ----##---------- \
+ --########------ \
+ --########------ \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// FIXME: not bold enough
+// superscript 3
+Unicode: [00b3];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ----####-------- \
+ ----####-------- \
+ --##----##------ \
+ --##----##------ \
+ ------##-------- \
+ ------##-------- \
+ --##----##------ \
+ --##----##------ \
+ ----####-------- \
+ ----####-------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// acute
+Unicode: [00b4];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// mu
+Unicode: [00b5];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ----##########-- \
+ ----##########-- \
+ ----------####-- \
+ ----------####-- \
+ ----------------
+ ----------------
+%
+// paragraph
+Unicode: [00b6];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ----####--####-- \
+ ----####--####-- \
+ --######--####-- \
+ --######--####-- \
+ --######--####-- \
+ --######--####-- \
+ ----####--####-- \
+ ----####--####-- \
+ ------##--####-- \
+ ------##--####-- \
+ ------##--####-- \
+ ------##--####-- \
+ ----------------
+ ----------------
+%
+// middle dot
+Unicode: [00b7];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// superscript 1
+Unicode: [00b9];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ ----######------ \
+ ----######------ \
+ ------####------ \
+ ------####------ \
+ ----########---- \
+ ----########---- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+// FIXME: MISSING fractions, 00bc/00bd/00bc, ¼ ½ ¾, hard to do in 8x8
+%
+// A with grave
+Unicode: [00c0];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ----####-------- \
+ ----####-------- \
+ ------####------ \
+ ------####------ \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ --############-- \
+ --############-- \
+ --####----####-- \
+ --####----####-- \
+ ----------------
+ ----------------
+%
+// A with acute
+Unicode: [00c1];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ --############-- \
+ --############-- \
+ --####----####-- \
+ --####----####-- \
+ ----------------
+ ----------------
+%
+// A with circumflex
+Unicode: [00c2];
+Bitmap: \
+ ----########---- \
+ ----########---- \
+ --##--------##-- \
+ --##--------##-- \
+ ------####------ \
+ ------####------ \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ --############-- \
+ --############-- \
+ --####----####-- \
+ --####----####-- \
+ ----------------
+ ----------------
+%
+// A with tilde
+Unicode: [00c3];
+Bitmap: \
+ ----####--####-- \
+ ----####--####-- \
+ --####--####---- \
+ --####--####---- \
+ ------####------ \
+ ------####------ \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ --############-- \
+ --############-- \
+ --####----####-- \
+ --####----####-- \
+ ----------------
+ ----------------
+%
+// A with ring
+Unicode: [00c5];
+Bitmap: \
+ ------####------ \
+ ------####------ \
+ ----##----##---- \
+ ----##----##---- \
+ ------####------ \
+ ------####------ \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ --############-- \
+ --############-- \
+ --####----####-- \
+ --####----####-- \
+ ----------------
+ ----------------
+%
+// AE ligature
+Unicode: [00c6];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ----##########-- \
+ ----##########-- \
+ --########------ \
+ --########------ \
+ ####--####------ \
+ ####--####------ \
+ ##############-- \
+ ##############-- \
+ ####--####------ \
+ ####--####------ \
+ ####--########-- \
+ ####--########-- \
+ ----------------
+ ----------------
+// FIXME: this is hideous!
+%
+// C with cedilla
+Unicode: [00c7];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ --####---------- \
+ --####---------- \
+ --####----####-- \
+ --####----####-- \
+ ----########---- \
+ ----########---- \
+ ------####------ \
+ ------####------ \
+ ----####--------
+ ----####--------
+%
+// E with circumflex
+Unicode: [00ca];
+Bitmap: \
+ ----########---- \
+ ----########---- \
+ --##--------##-- \
+ --##--------##-- \
+ --############-- \
+ --############-- \
+ --####---------- \
+ --####---------- \
+ --##########---- \
+ --##########---- \
+ --####---------- \
+ --####---------- \
+ --############-- \
+ --############-- \
+ ----------------
+ ----------------
+// FIXME: ugly!
+%
+// E with umlaut
+Unicode: [00cb];
+Bitmap: \
+ ----####--####-- \
+ ----####--####-- \
+ ---------------- \
+ ---------------- \
+ --############-- \
+ --############-- \
+ --####---------- \
+ --####---------- \
+ --##########---- \
+ --##########---- \
+ --####---------- \
+ --####---------- \
+ --############-- \
+ --############-- \
+ ----------------
+ ----------------
+%
+// I with grave
+Unicode: [00cc];
+Bitmap: \
+ ----####-------- \
+ ----####-------- \
+ ------####------ \
+ ------####------ \
+ --############-- \
+ --############-- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ --############-- \
+ --############-- \
+ ----------------
+ ----------------
+%
+// I with acute
+Unicode: [00cd];
+Bitmap: \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ --############-- \
+ --############-- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ --############-- \
+ --############-- \
+ ----------------
+ ----------------
+%
+// I with circumflex
+Unicode: [00ce];
+Bitmap: \
+ ----########---- \
+ ----########---- \
+ --##--------##-- \
+ --##--------##-- \
+ --############-- \
+ --############-- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ --############-- \
+ --############-- \
+ ----------------
+ ----------------
+// FIXME: ugly!
+%
+// I with umlaut
+Unicode: [00cf];
+Bitmap: \
+ ----####--####-- \
+ ----####--####-- \
+ ---------------- \
+ ---------------- \
+ --############-- \
+ --############-- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ --############-- \
+ --############-- \
+ ----------------
+ ----------------
+%
+// capital eth
+Unicode: [00d0];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --########------ \
+ --########------ \
+ --####--####---- \
+ --####--####---- \
+ --####----####-- \
+ --####----####-- \
+ ########--####-- \
+ ########--####-- \
+ --####--####---- \
+ --####--####---- \
+ --########------ \
+ --########------ \
+ ----------------
+ ----------------
+%
+// O with grave
+Unicode: [00d2];
+Bitmap: \
+ --####---------- \
+ --####---------- \
+ ----########---- \
+ ----########---- \
+ --##--##--####-- \
+ --##--##--####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ----########---- \
+ ----########---- \
+ ----------------
+ ----------------
+// FIXME: MISSING Ô Õ
+%
+// multiplication
+Unicode: [00d7];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --####----####-- \
+ --####----####-- \
+ ----########---- \
+ ----########---- \
+ ------####------ \
+ ------####------ \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+// FIXME: MISSING Ø
+%
+// U with grave
+Unicode: [00d9];
+Bitmap: \
+ ----####-------- \
+ ----####-------- \
+ ------####------ \
+ ------####------ \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --############-- \
+ --############-- \
+ ----------------
+ ----------------
+%
+// U with acute
+Unicode: [00da];
+Bitmap: \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --############-- \
+ --############-- \
+ ----------------
+ ----------------
+// FIXME: MISSING Û
+%
+// Y with acute
+Unicode: [00dd];
+Bitmap: \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ----########---- \
+ ----########---- \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ----------------
+ ----------------
+%
+// capital thorn
+Unicode: [00de];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --####---------- \
+ --####---------- \
+ --##########---- \
+ --##########---- \
+ --####----####-- \
+ --####----####-- \
+ --##########---- \
+ --##########---- \
+ --####---------- \
+ --####---------- \
+ --####---------- \
+ --####---------- \
+ ----------------
+ ----------------
+%
+// a with circumflex
+Unicode: [00e2];
+Bitmap: \
+ ----########---- \
+ ----########---- \
+ --##--------##-- \
+ --##--------##-- \
+ ---------------- \
+ ---------------- \
+ ----########---- \
+ ----########---- \
+ --------######-- \
+ --------######-- \
+ ----####--####-- \
+ ----####--####-- \
+ ------########-- \
+ ------########-- \
+ ----------------
+ ----------------
+%
+// a with tilde
+Unicode: [00e3];
+Bitmap: \
+ ----####--####-- \
+ ----####--####-- \
+ --####--####---- \
+ --####--####---- \
+ ---------------- \
+ ---------------- \
+ ----########---- \
+ ----########---- \
+ --------######-- \
+ --------######-- \
+ ----####--####-- \
+ ----####--####-- \
+ ------########--
+ ------########--
+// FIXME: touches bottom
+%
+// ae ligature
+Unicode: [00e6];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ --######--####-- \
+ --######--####-- \
+ ------####--#### \
+ ------####--#### \
+ --############-- \
+ --############-- \
+ ####--####------ \
+ ####--####------ \
+ --############-- \
+ --############-- \
+ ----------------
+ ----------------
+// FIXME: fugly
+%
+// e with umlaut
+Unicode: [00eb];
+Bitmap: \
+ --####----####-- \
+ --####----####-- \
+ ---------------- \
+ ---------------- \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ --############-- \
+ --############-- \
+ --####---------- \
+ --####---------- \
+ ----########---- \
+ ----########---- \
+ ----------------
+ ----------------
+%
+// i with acute
+Unicode: [00ed];
+Bitmap: \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ ----######------ \
+ ----######------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ------####------ \
+ ----########---- \
+ ----########---- \
+ ----------------
+ ----------------
+%
+// lowercase eth
+Unicode: [00f0];
+Bitmap: \
+ --####--##------ \
+ --####--##------ \
+ ----####-------- \
+ ----####-------- \
+ --##--####------ \
+ --##--####------ \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ----########---- \
+ ----########---- \
+ ----------------
+ ----------------
+%
+// o with tilde
+Unicode: [00f5];
+Bitmap: \
+ ----####--####-- \
+ ----####--####-- \
+ --####--####---- \
+ --####--####---- \
+ ---------------- \
+ ---------------- \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ----########---- \
+ ----########---- \
+ ----------------
+ ----------------
+%
+// division
+Unicode: [00f7];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ --############-- \
+ --############-- \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+// FIXME: MISSING ø
+%
+// y with acute
+Unicode: [00fd];
+Bitmap: \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ----##########-- \
+ ----##########-- \
+ --------####---- \
+ --------####---- \
+ --########------
+ --########------
+%
+// lowercase thorn
+Unicode: [00fe];
+Bitmap: \
+ --####---------- \
+ --####---------- \
+ --####---------- \
+ --####---------- \
+ --########------ \
+ --########------ \
+ --####--####---- \
+ --####--####---- \
+ --########------ \
+ --########------ \
+ --####---------- \
+ --####---------- \
+ --####---------- \
+ --####---------- \
+ ----------------
+ ----------------
+%
+// y with umlaut
+Unicode: [00ff];
+Bitmap: \
+ --####----####-- \
+ --####----####-- \
+ ---------------- \
+ ---------------- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ----##########-- \
+ ----##########-- \
+ --------####---- \
+ --------####---- \
+ --########------
+ --########------
+%
+// left single curly quote
+Unicode: [2018];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ----####-------- \
+ ----####-------- \
+ ------####------ \
+ ------####------ \
+ --------####---- \
+ --------####---- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// right single curly quote
+Unicode: [2019];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ ----####-------- \
+ ----####-------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// left double curly quote
+Unicode: [201c];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ----####----#### \
+ ----####----#### \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// right double curly quote
+Unicode: [201d];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ --####----####-- \
+ ####----####---- \
+ ####----####---- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// spanish left single quote
+Unicode: [2039];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ ----####-------- \
+ ----####-------- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// spanish right single quote
+Unicode: [203a];
+Bitmap: \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ---------------- \
+ ------####------ \
+ ------####------ \
+ --------####---- \
+ --------####---- \
+ ------####------ \
+ ------####------ \
+ ---------------- \
+ ---------------- \
+ ----------------
+ ----------------
+%
+// replacement character for missing glyphs
+Unicode: [fffd];
+Bitmap: \
+ ----########---- \
+ ----########---- \
+ --####----####-- \
+ --####----####-- \
+ --##--####--##-- \
+ --##--####--##-- \
+ --######--####-- \
+ --######--####-- \
+ --############-- \
+ --############-- \
+ --######--####-- \
+ --######--####-- \
+ ----########---- \
+ ----########---- \
+ ----------------
+ ----------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/fonts/fauxtari-24.bdf b/fonts/fauxtari-24.bdf
new file mode 100644
index 0000000..8cb0933
--- /dev/null
+++ b/fonts/fauxtari-24.bdf
@@ -0,0 +1,13325 @@
+STARTFONT 2.1
+FONT -BW-Fauxtari Fixed Mono-Medium-R-Normal--24-240-75-75-C-240-iso10646-1
+SIZE 24 75 75
+FONTBOUNDINGBOX 24 24 0 -6
+STARTPROPERTIES 18
+FOUNDRY "BW"
+FAMILY_NAME "Fauxtari Fixed Mono"
+FACE_NAME "Fauxtari 24"
+WEIGHT_NAME "Medium"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+PIXEL_SIZE 24
+POINT_SIZE 240
+RESOLUTION_X 75
+RESOLUTION_Y 75
+SPACING "C"
+AVERAGE_WIDTH 240
+CHARSET_REGISTRY "iso10646"
+CHARSET_ENCODING "1"
+FONT_DESCENT 6
+FONT_ASCENT 18
+DEFAULT_CHAR 0
+ENDPROPERTIES
+CHARS 429
+STARTCHAR C0000
+ENCODING 0
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8ff8
+1f8ff8
+1f8ff8
+1c0000
+1c0000
+1c0000
+000038
+000038
+000038
+1c0000
+1c0000
+1c0000
+000038
+000038
+000038
+1ff1f8
+1ff1f8
+1ff1f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0001
+ENCODING 32
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0002
+ENCODING 33
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0003
+ENCODING 34
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0004
+ENCODING 35
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+ffffff
+ffffff
+ffffff
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+ffffff
+ffffff
+ffffff
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0005
+ENCODING 36
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+03fff8
+03fff8
+03fff8
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0006
+ENCODING 37
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f8fc0
+1f8fc0
+1f8fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1f81f8
+1f81f8
+1f81f8
+1c01f8
+1c01f8
+1c01f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0007
+ENCODING 38
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007fc0
+007fc0
+007fc0
+03f1f8
+03f1f8
+03f1f8
+007fc0
+007fc0
+007fc0
+03fe00
+03fe00
+03fe00
+1f8fff
+1f8fff
+1f8fff
+1f81f8
+1f81f8
+1f81f8
+03fe3f
+03fe3f
+03fe3f
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0008
+ENCODING 39
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0009
+ENCODING 40
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+007fc0
+007fc0
+007fc0
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007fc0
+007fc0
+007fc0
+000ff8
+000ff8
+000ff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C000a
+ENCODING 41
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ff000
+1ff000
+1ff000
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03fe00
+03fe00
+03fe00
+1ff000
+1ff000
+1ff000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C000b
+ENCODING 42
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+ffffff
+ffffff
+ffffff
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C000c
+ENCODING 43
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C000d
+ENCODING 44
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+ENDCHAR
+STARTCHAR C000e
+ENCODING 45
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C000f
+ENCODING 46
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0010
+ENCODING 47
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1f8000
+1f8000
+1f8000
+1c0000
+1c0000
+1c0000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0011
+ENCODING 48
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f8ff8
+1f8ff8
+1f8ff8
+1ff1f8
+1ff1f8
+1ff1f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0012
+ENCODING 49
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0013
+ENCODING 50
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0014
+ENCODING 51
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0015
+ENCODING 52
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000fc0
+000fc0
+000fc0
+007fc0
+007fc0
+007fc0
+03ffc0
+03ffc0
+03ffc0
+1f8fc0
+1f8fc0
+1f8fc0
+1ffff8
+1ffff8
+1ffff8
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0016
+ENCODING 53
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+1fffc0
+1fffc0
+1fffc0
+0001f8
+0001f8
+0001f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0017
+ENCODING 54
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f8000
+1f8000
+1f8000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0018
+ENCODING 55
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+0001f8
+0001f8
+0001f8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+03f000
+03f000
+03f000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0019
+ENCODING 56
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C001a
+ENCODING 57
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+0001f8
+0001f8
+0001f8
+000fc0
+000fc0
+000fc0
+03fe00
+03fe00
+03fe00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C001b
+ENCODING 58
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C001c
+ENCODING 59
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+ENDCHAR
+STARTCHAR C001d
+ENCODING 60
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+0001f8
+0001f8
+0001f8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+0001f8
+0001f8
+0001f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C001e
+ENCODING 61
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C001f
+ENCODING 62
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1f8000
+1f8000
+1f8000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0020
+ENCODING 63
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0021
+ENCODING 64
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f8ff8
+1f8ff8
+1f8ff8
+1f8ff8
+1f8ff8
+1f8ff8
+1f8000
+1f8000
+1f8000
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0022
+ENCODING 65
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0023
+ENCODING 66
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1fffc0
+1fffc0
+1fffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0024
+ENCODING 67
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0025
+ENCODING 68
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+1f8fc0
+1f8fc0
+1f8fc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f8fc0
+1f8fc0
+1f8fc0
+1ffe00
+1ffe00
+1ffe00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0026
+ENCODING 69
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+1fffc0
+1fffc0
+1fffc0
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0027
+ENCODING 70
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+1fffc0
+1fffc0
+1fffc0
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0028
+ENCODING 71
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03fff8
+03fff8
+03fff8
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8ff8
+1f8ff8
+1f8ff8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0029
+ENCODING 72
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C002a
+ENCODING 73
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C002b
+ENCODING 74
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C002c
+ENCODING 75
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f8fc0
+1f8fc0
+1f8fc0
+1ffe00
+1ffe00
+1ffe00
+1ffe00
+1ffe00
+1ffe00
+1f8fc0
+1f8fc0
+1f8fc0
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C002d
+ENCODING 76
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C002e
+ENCODING 77
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f803f
+1f803f
+1f803f
+1ff1ff
+1ff1ff
+1ff1ff
+1fffff
+1fffff
+1fffff
+1f8e3f
+1f8e3f
+1f8e3f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C002f
+ENCODING 78
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1ff1f8
+1ff1f8
+1ff1f8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1f8ff8
+1f8ff8
+1f8ff8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0030
+ENCODING 79
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0031
+ENCODING 80
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1fffc0
+1fffc0
+1fffc0
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0032
+ENCODING 81
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f8fc0
+1f8fc0
+1f8fc0
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0033
+ENCODING 82
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1fffc0
+1fffc0
+1fffc0
+1f8fc0
+1f8fc0
+1f8fc0
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0034
+ENCODING 83
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0035
+ENCODING 84
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0036
+ENCODING 85
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0037
+ENCODING 86
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0038
+ENCODING 87
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f8e3f
+1f8e3f
+1f8e3f
+1fffff
+1fffff
+1fffff
+1ff1ff
+1ff1ff
+1ff1ff
+1f803f
+1f803f
+1f803f
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0039
+ENCODING 88
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C003a
+ENCODING 89
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C003b
+ENCODING 90
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1f8000
+1f8000
+1f8000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C003c
+ENCODING 91
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007ff8
+007ff8
+007ff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007ff8
+007ff8
+007ff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C003d
+ENCODING 92
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1c0000
+1c0000
+1c0000
+1f8000
+1f8000
+1f8000
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+0001f8
+0001f8
+0001f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C003e
+ENCODING 93
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+1ffe00
+1ffe00
+1ffe00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C003f
+ENCODING 94
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000e00
+000e00
+000e00
+007fc0
+007fc0
+007fc0
+03f1f8
+03f1f8
+03f1f8
+1f803f
+1f803f
+1f803f
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0040
+ENCODING 95
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0041
+ENCODING 96
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f000
+03f000
+03f000
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0042
+ENCODING 97
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0043
+ENCODING 98
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1fffc0
+1fffc0
+1fffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0044
+ENCODING 99
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0045
+ENCODING 100
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0046
+ENCODING 101
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0047
+ENCODING 102
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+007e00
+007e00
+007e00
+03fff8
+03fff8
+03fff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0048
+ENCODING 103
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0049
+ENCODING 104
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C004a
+ENCODING 105
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C004b
+ENCODING 106
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+03ffc0
+03ffc0
+03ffc0
+ENDCHAR
+STARTCHAR C004c
+ENCODING 107
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8fc0
+1f8fc0
+1f8fc0
+1ffe00
+1ffe00
+1ffe00
+1f8fc0
+1f8fc0
+1f8fc0
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C004d
+ENCODING 108
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C004e
+ENCODING 109
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1fffff
+1fffff
+1fffff
+1fffff
+1fffff
+1fffff
+1f8e3f
+1f8e3f
+1f8e3f
+1f803f
+1f803f
+1f803f
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C004f
+ENCODING 110
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0050
+ENCODING 111
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0051
+ENCODING 112
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1fffc0
+1fffc0
+1fffc0
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C0052
+ENCODING 113
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+ENDCHAR
+STARTCHAR C0053
+ENCODING 114
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0054
+ENCODING 115
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03fff8
+03fff8
+03fff8
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0055
+ENCODING 116
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000ff8
+000ff8
+000ff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0056
+ENCODING 117
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0057
+ENCODING 118
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0058
+ENCODING 119
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1f803f
+1f803f
+1f803f
+1f8e3f
+1f8e3f
+1f8e3f
+1fffff
+1fffff
+1fffff
+03fff8
+03fff8
+03fff8
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0059
+ENCODING 120
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C005a
+ENCODING 121
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000fc0
+000fc0
+000fc0
+1ffe00
+1ffe00
+1ffe00
+ENDCHAR
+STARTCHAR C005b
+ENCODING 122
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C005c
+ENCODING 123
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C005d
+ENCODING 124
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C005e
+ENCODING 125
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C005f
+ENCODING 126
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ff03f
+1ff03f
+1ff03f
+fc7e3f
+fc7e3f
+fc7e3f
+fc0ff8
+fc0ff8
+fc0ff8
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0060
+ENCODING 160
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0061
+ENCODING 161
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0062
+ENCODING 162
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03fff8
+03fff8
+03fff8
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+03fff8
+03fff8
+03fff8
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0063
+ENCODING 163
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007fc0
+007fc0
+007fc0
+03f000
+03f000
+03f000
+03f000
+03f000
+03f000
+1ffe00
+1ffe00
+1ffe00
+03f000
+03f000
+03f000
+03f000
+03f000
+03f000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0064
+ENCODING 164
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1c0038
+1c0038
+1c0038
+03ffc0
+03ffc0
+03ffc0
+0381c0
+0381c0
+0381c0
+0381c0
+0381c0
+0381c0
+03ffc0
+03ffc0
+03ffc0
+1c0038
+1c0038
+1c0038
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0065
+ENCODING 165
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0066
+ENCODING 166
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0067
+ENCODING 167
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007fc0
+007fc0
+007fc0
+038000
+038000
+038000
+007e00
+007e00
+007e00
+0381c0
+0381c0
+0381c0
+007e00
+007e00
+007e00
+0001c0
+0001c0
+0001c0
+03fe00
+03fe00
+03fe00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0068
+ENCODING 168
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0069
+ENCODING 169
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1fffc0
+1fffc0
+1fffc0
+e00038
+e00038
+e00038
+e07e38
+e07e38
+e07e38
+e38038
+e38038
+e38038
+e07e38
+e07e38
+e07e38
+e00038
+e00038
+e00038
+1fffc0
+1fffc0
+1fffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C006a
+ENCODING 170
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+000ff8
+000ff8
+000ff8
+03f1f8
+03f1f8
+03f1f8
+007ff8
+007ff8
+007ff8
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C006b
+ENCODING 171
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+fc0fc0
+fc0fc0
+fc0fc0
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C006c
+ENCODING 172
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+0001f8
+0001f8
+0001f8
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C006d
+ENCODING 173
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C006e
+ENCODING 174
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1fffc0
+1fffc0
+1fffc0
+e00038
+e00038
+e00038
+e3f038
+e3f038
+e3f038
+e38e38
+e38e38
+e38e38
+e3f038
+e3f038
+e3f038
+e38e38
+e38e38
+e38e38
+1fffc0
+1fffc0
+1fffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C006f
+ENCODING 175
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0070
+ENCODING 176
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+0381c0
+0381c0
+0381c0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0071
+ENCODING 177
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0072
+ENCODING 178
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f000
+03f000
+03f000
+1c0e00
+1c0e00
+1c0e00
+007000
+007000
+007000
+038000
+038000
+038000
+1ffe00
+1ffe00
+1ffe00
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0073
+ENCODING 179
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f000
+03f000
+03f000
+1c0e00
+1c0e00
+1c0e00
+007000
+007000
+007000
+1c0e00
+1c0e00
+1c0e00
+03f000
+03f000
+03f000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0074
+ENCODING 180
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0075
+ENCODING 181
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+0001f8
+0001f8
+0001f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0076
+ENCODING 182
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+1ff1f8
+1ff1f8
+1ff1f8
+1ff1f8
+1ff1f8
+1ff1f8
+03f1f8
+03f1f8
+03f1f8
+0071f8
+0071f8
+0071f8
+0071f8
+0071f8
+0071f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0077
+ENCODING 183
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0078
+ENCODING 184
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+ENDCHAR
+STARTCHAR C0079
+ENCODING 185
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C007a
+ENCODING 186
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+0381c0
+0381c0
+0381c0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C007b
+ENCODING 187
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+fc0fc0
+fc0fc0
+fc0fc0
+1f81f8
+1f81f8
+1f81f8
+fc0fc0
+fc0fc0
+fc0fc0
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C007c
+ENCODING 191
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C007d
+ENCODING 192
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C007e
+ENCODING 193
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C007f
+ENCODING 194
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03ffc0
+03ffc0
+03ffc0
+1c0038
+1c0038
+1c0038
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0080
+ENCODING 195
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+1f8fc0
+1f8fc0
+1f8fc0
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0081
+ENCODING 196
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0082
+ENCODING 197
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+0381c0
+0381c0
+0381c0
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0083
+ENCODING 198
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03fff8
+03fff8
+03fff8
+1ffe00
+1ffe00
+1ffe00
+fc7e00
+fc7e00
+fc7e00
+fffff8
+fffff8
+fffff8
+fc7e00
+fc7e00
+fc7e00
+fc7ff8
+fc7ff8
+fc7ff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0084
+ENCODING 199
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f8000
+1f8000
+1f8000
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+ENDCHAR
+STARTCHAR C0085
+ENCODING 201
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+1fffc0
+1fffc0
+1fffc0
+1f8000
+1f8000
+1f8000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0086
+ENCODING 202
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03ffc0
+03ffc0
+03ffc0
+1c0038
+1c0038
+1c0038
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+1fffc0
+1fffc0
+1fffc0
+1f8000
+1f8000
+1f8000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0087
+ENCODING 203
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+1fffc0
+1fffc0
+1fffc0
+1f8000
+1f8000
+1f8000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0088
+ENCODING 204
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0089
+ENCODING 205
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C008a
+ENCODING 206
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03ffc0
+03ffc0
+03ffc0
+1c0038
+1c0038
+1c0038
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C008b
+ENCODING 207
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C008c
+ENCODING 208
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+1f8fc0
+1f8fc0
+1f8fc0
+1f81f8
+1f81f8
+1f81f8
+fff1f8
+fff1f8
+fff1f8
+1f8fc0
+1f8fc0
+1f8fc0
+1ffe00
+1ffe00
+1ffe00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C008d
+ENCODING 209
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+1f8fc0
+1f8fc0
+1f8fc0
+000000
+000000
+000000
+1ff1f8
+1ff1f8
+1ff1f8
+1ff1f8
+1ff1f8
+1ff1f8
+1ffff8
+1ffff8
+1ffff8
+1f8ff8
+1f8ff8
+1f8ff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C008e
+ENCODING 210
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+1c71f8
+1c71f8
+1c71f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C008f
+ENCODING 211
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+0001f8
+0001f8
+0001f8
+03ffc0
+03ffc0
+03ffc0
+1f8e38
+1f8e38
+1f8e38
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0090
+ENCODING 214
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0091
+ENCODING 215
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0092
+ENCODING 217
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0093
+ENCODING 218
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0094
+ENCODING 220
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0095
+ENCODING 221
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0096
+ENCODING 222
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8000
+1f8000
+1f8000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1fffc0
+1fffc0
+1fffc0
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0097
+ENCODING 223
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007fc0
+007fc0
+007fc0
+03f1f8
+03f1f8
+03f1f8
+03ffc0
+03ffc0
+03ffc0
+03f1f8
+03f1f8
+03f1f8
+03f1ff
+03f1ff
+03f1ff
+03fff8
+03fff8
+03fff8
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C0098
+ENCODING 224
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0099
+ENCODING 225
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C009a
+ENCODING 226
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03ffc0
+03ffc0
+03ffc0
+1c0038
+1c0038
+1c0038
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+000ff8
+000ff8
+000ff8
+03f1f8
+03f1f8
+03f1f8
+007ff8
+007ff8
+007ff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C009b
+ENCODING 227
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+1f8fc0
+1f8fc0
+1f8fc0
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+000ff8
+000ff8
+000ff8
+03f1f8
+03f1f8
+03f1f8
+007ff8
+007ff8
+007ff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C009c
+ENCODING 228
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C009d
+ENCODING 229
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+007fc0
+007fc0
+007fc0
+0001f8
+0001f8
+0001f8
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C009e
+ENCODING 230
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1ff1f8
+1ff1f8
+1ff1f8
+007e3f
+007e3f
+007e3f
+1ffff8
+1ffff8
+1ffff8
+fc7e00
+fc7e00
+fc7e00
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C009f
+ENCODING 231
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+ENDCHAR
+STARTCHAR C00a0
+ENCODING 232
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00a1
+ENCODING 233
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00a2
+ENCODING 234
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03ffc0
+03ffc0
+03ffc0
+fc003f
+fc003f
+fc003f
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00a3
+ENCODING 235
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00a4
+ENCODING 236
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00a5
+ENCODING 237
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00a6
+ENCODING 238
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00a7
+ENCODING 239
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00a8
+ENCODING 240
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8e00
+1f8e00
+1f8e00
+03f000
+03f000
+03f000
+1c7e00
+1c7e00
+1c7e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00a9
+ENCODING 241
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+1f8fc0
+1f8fc0
+1f8fc0
+000000
+000000
+000000
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00aa
+ENCODING 242
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00ab
+ENCODING 243
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00ac
+ENCODING 244
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00ad
+ENCODING 245
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+1f8fc0
+1f8fc0
+1f8fc0
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00ae
+ENCODING 246
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00af
+ENCODING 247
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00b0
+ENCODING 249
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00b1
+ENCODING 250
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00b2
+ENCODING 251
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00b3
+ENCODING 252
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00b4
+ENCODING 253
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000fc0
+000fc0
+000fc0
+1ffe00
+1ffe00
+1ffe00
+ENDCHAR
+STARTCHAR C00b5
+ENCODING 254
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1ffe00
+1ffe00
+1ffe00
+1f8fc0
+1f8fc0
+1f8fc0
+1ffe00
+1ffe00
+1ffe00
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00b6
+ENCODING 255
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000fc0
+000fc0
+000fc0
+1ffe00
+1ffe00
+1ffe00
+ENDCHAR
+STARTCHAR C00b7
+ENCODING 260
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f81f8
+1f81f8
+1f81f8
+00003f
+00003f
+00003f
+ENDCHAR
+STARTCHAR C00b8
+ENCODING 261
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+00003f
+00003f
+00003f
+ENDCHAR
+STARTCHAR C00b9
+ENCODING 262
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+03ffc0
+03ffc0
+03ffc0
+1f8ff8
+1f8ff8
+1f8ff8
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00ba
+ENCODING 263
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00bb
+ENCODING 280
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1ffe00
+1ffe00
+1ffe00
+1f8000
+1f8000
+1f8000
+1ffe00
+1ffe00
+1ffe00
+1f8000
+1f8000
+1f8000
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007ff8
+007ff8
+007ff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00bc
+ENCODING 281
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+ENDCHAR
+STARTCHAR C00bd
+ENCODING 321
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1ffe00
+1ffe00
+1ffe00
+1ff000
+1ff000
+1ff000
+ff8000
+ff8000
+ff8000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00be
+ENCODING 322
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+007fc0
+007fc0
+007fc0
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00bf
+ENCODING 323
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+1c7e38
+1c7e38
+1c7e38
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1f8ff8
+1f8ff8
+1f8ff8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00c0
+ENCODING 324
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+1fffc0
+1fffc0
+1fffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00c1
+ENCODING 346
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00c2
+ENCODING 347
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03fff8
+03fff8
+03fff8
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00c3
+ENCODING 377
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+03f1f8
+03f1f8
+03f1f8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00c4
+ENCODING 378
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00c5
+ENCODING 379
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1f8000
+1f8000
+1f8000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00c6
+ENCODING 380
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00c7
+ENCODING 551
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+0001f8
+0001f8
+0001f8
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00c8
+ENCODING 1488
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+fc01f8
+fc01f8
+fc01f8
+fff1f8
+fff1f8
+fff1f8
+fc7ff8
+fc7ff8
+fc7ff8
+fc0fc0
+fc0fc0
+fc0fc0
+fc01f8
+fc01f8
+fc01f8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00c9
+ENCODING 1489
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+fffe00
+fffe00
+fffe00
+007fc0
+007fc0
+007fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+fffff8
+fffff8
+fffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00ca
+ENCODING 1490
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+1fffc0
+1fffc0
+1fffc0
+ff81f8
+ff81f8
+ff81f8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00cb
+ENCODING 1491
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+fffff8
+fffff8
+fffff8
+007fc0
+007fc0
+007fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00cc
+ENCODING 1492
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ffffc0
+ffffc0
+ffffc0
+0001f8
+0001f8
+0001f8
+1c01f8
+1c01f8
+1c01f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00cd
+ENCODING 1493
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+007fc0
+007fc0
+007fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00ce
+ENCODING 1494
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ffffc0
+ffffc0
+ffffc0
+1ff000
+1ff000
+1ff000
+03f000
+03f000
+03f000
+03f000
+03f000
+03f000
+03f000
+03f000
+03f000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00cf
+ENCODING 1495
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ffffc0
+ffffc0
+ffffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00d0
+ENCODING 1496
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+fc7ff8
+fc7ff8
+fc7ff8
+fc71f8
+fc71f8
+fc71f8
+fc01f8
+fc01f8
+fc01f8
+fc01f8
+fc01f8
+fc01f8
+ffffc0
+ffffc0
+ffffc0
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00d1
+ENCODING 1497
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1fffc0
+1fffc0
+1fffc0
+007fc0
+007fc0
+007fc0
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00d2
+ENCODING 1498
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ffffc0
+ffffc0
+ffffc0
+000ff8
+000ff8
+000ff8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+ENDCHAR
+STARTCHAR C00d3
+ENCODING 1499
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ffffc0
+ffffc0
+ffffc0
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+000ff8
+000ff8
+000ff8
+ffffc0
+ffffc0
+ffffc0
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00d4
+ENCODING 1500
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+fc0000
+fc0000
+fc0000
+ffffc0
+ffffc0
+ffffc0
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+000ff8
+000ff8
+000ff8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00d5
+ENCODING 1501
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00d6
+ENCODING 1502
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+fc7fc0
+fc7fc0
+fc7fc0
+1ff1f8
+1ff1f8
+1ff1f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f8ff8
+1f8ff8
+1f8ff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00d7
+ENCODING 1503
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007ff8
+007ff8
+007ff8
+000ff8
+000ff8
+000ff8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+ENDCHAR
+STARTCHAR C00d8
+ENCODING 1504
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007ff8
+007ff8
+007ff8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+000ff8
+000ff8
+000ff8
+1fffc0
+1fffc0
+1fffc0
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00d9
+ENCODING 1505
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+fffff8
+fffff8
+fffff8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f8fc0
+1f8fc0
+1f8fc0
+1ffe00
+1ffe00
+1ffe00
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00da
+ENCODING 1506
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ff8ff8
+ff8ff8
+ff8ff8
+1f81f8
+1f81f8
+1f81f8
+03f1f8
+03f1f8
+03f1f8
+03f1f8
+03f1f8
+03f1f8
+ffffc0
+ffffc0
+ffffc0
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00db
+ENCODING 1507
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ffffc0
+ffffc0
+ffffc0
+1f8ff8
+1f8ff8
+1f8ff8
+1f81f8
+1f81f8
+1f81f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+ENDCHAR
+STARTCHAR C00dc
+ENCODING 1508
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ffffc0
+ffffc0
+ffffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+000ff8
+000ff8
+000ff8
+ffffc0
+ffffc0
+ffffc0
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00dd
+ENCODING 1509
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+fc0ff8
+fc0ff8
+fc0ff8
+1f81f8
+1f81f8
+1f81f8
+1f8fc0
+1f8fc0
+1f8fc0
+1ffe00
+1ffe00
+1ffe00
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C00de
+ENCODING 1510
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+fc01f8
+fc01f8
+fc01f8
+1f8ff8
+1f8ff8
+1f8ff8
+03fe00
+03fe00
+03fe00
+000fc0
+000fc0
+000fc0
+fffff8
+fffff8
+fffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00df
+ENCODING 1511
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ffffc0
+ffffc0
+ffffc0
+000ff8
+000ff8
+000ff8
+fc01f8
+fc01f8
+fc01f8
+fc0fc0
+fc0fc0
+fc0fc0
+fc7e00
+fc7e00
+fc7e00
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+ENDCHAR
+STARTCHAR C00e0
+ENCODING 1512
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ffffc0
+ffffc0
+ffffc0
+000ff8
+000ff8
+000ff8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+0001f8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00e1
+ENCODING 1513
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+e07038
+e07038
+e07038
+fc7038
+fc7038
+fc7038
+ff81f8
+ff81f8
+ff81f8
+fc0fc0
+fc0fc0
+fc0fc0
+ffffc0
+ffffc0
+ffffc0
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00e2
+ENCODING 1514
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+ffffc0
+ffffc0
+ffffc0
+1f8ff8
+1f8ff8
+1f8ff8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+ff81f8
+ff81f8
+ff81f8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00e3
+ENCODING 1567
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00e4
+ENCODING 1569
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+007fc0
+007fc0
+007fc0
+03f000
+03f000
+03f000
+007fc0
+007fc0
+007fc0
+03fe00
+03fe00
+03fe00
+038000
+038000
+038000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00e5
+ENCODING 1570
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C00e6
+ENCODING 1572
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8000
+1f8000
+1f8000
+fc0fff
+fc0fff
+fc0fff
+007e3f
+007e3f
+007e3f
+000fff
+000fff
+000fff
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C00e7
+ENCODING 1575
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00e8
+ENCODING 1576
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C00e9
+ENCODING 1577
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e3f
+007e3f
+007e3f
+000000
+000000
+000000
+000fff
+000fff
+000fff
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007fff
+007fff
+007fff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00ea
+ENCODING 1578
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00eb
+ENCODING 1579
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00ec
+ENCODING 1580
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8000
+1f8000
+1f8000
+1f803f
+1f803f
+1f803f
+03fe00
+03fe00
+03fe00
+ENDCHAR
+STARTCHAR C00ed
+ENCODING 1581
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8007
+1f8007
+1f8007
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+ENDCHAR
+STARTCHAR C00ee
+ENCODING 1582
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8007
+1f8007
+1f8007
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+ENDCHAR
+STARTCHAR C00ef
+ENCODING 1583
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C00f0
+ENCODING 1584
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+000000
+000000
+000000
+000fc0
+000fc0
+000fc0
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00f1
+ENCODING 1585
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C00f2
+ENCODING 1586
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+00003f
+00003f
+00003f
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C00f3
+ENCODING 1587
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e07fff
+e07fff
+e07fff
+e07ff8
+e07ff8
+e07ff8
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C00f4
+ENCODING 1588
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+03f03f
+03f03f
+03f03f
+000000
+000000
+000000
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e07fff
+e07fff
+e07fff
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C00f5
+ENCODING 1589
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+e07e07
+e07e07
+e07e07
+e07007
+e07007
+e07007
+e07fff
+e07fff
+e07fff
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C00f6
+ENCODING 1590
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+000fff
+000fff
+000fff
+e07e07
+e07e07
+e07e07
+e07007
+e07007
+e07007
+e07fff
+e07fff
+e07fff
+fffe00
+fffe00
+fffe00
+1ff000
+1ff000
+1ff000
+ENDCHAR
+STARTCHAR C00f7
+ENCODING 1591
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8fff
+1f8fff
+1f8fff
+1ffe07
+1ffe07
+1ffe07
+1ff007
+1ff007
+1ff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00f8
+ENCODING 1592
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8fc0
+1f8fc0
+1f8fc0
+1f8000
+1f8000
+1f8000
+1f8fff
+1f8fff
+1f8fff
+1ffe07
+1ffe07
+1ffe07
+1ff007
+1ff007
+1ff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00f9
+ENCODING 1593
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffff
+03ffff
+03ffff
+1f8007
+1f8007
+1f8007
+1ff000
+1ff000
+1ff000
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C00fa
+ENCODING 1594
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+000ff8
+000ff8
+000ff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffff
+03ffff
+03ffff
+1f8007
+1f8007
+1f8007
+1ff000
+1ff000
+1ff000
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C00fb
+ENCODING 1601
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f000
+03f000
+03f000
+0001ff
+0001ff
+0001ff
+fc0fc7
+fc0fc7
+fc0fc7
+fc01ff
+fc01ff
+fc01ff
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00fc
+ENCODING 1602
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+0001ff
+0001ff
+0001ff
+1c0fc7
+1c0fc7
+1c0fc7
+fc01ff
+fc01ff
+fc01ff
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00fd
+ENCODING 1603
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+03f03f
+03f03f
+03f03f
+03803f
+03803f
+03803f
+1ff03f
+1ff03f
+1ff03f
+00003f
+00003f
+00003f
+e0003f
+e0003f
+e0003f
+fffff8
+fffff8
+fffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C00fe
+ENCODING 1604
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C00ff
+ENCODING 1605
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+007fff
+007fff
+007fff
+03ffc7
+03ffc7
+03ffc7
+1f81ff
+1f81ff
+1f81ff
+1f803f
+1f803f
+1f803f
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C0100
+ENCODING 1606
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+038038
+038038
+038038
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0101
+ENCODING 1607
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007fff
+007fff
+007fff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0102
+ENCODING 1608
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+007e3f
+007e3f
+007e3f
+007fff
+007fff
+007fff
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0103
+ENCODING 1609
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+fc7e3f
+fc7e3f
+fc7e3f
+fc7e07
+fc7e07
+fc7e07
+fc0fc7
+fc0fc7
+fc0fc7
+fc0fc0
+fc0fc0
+fc0fc0
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0104
+ENCODING 1610
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+e07fff
+e07fff
+e07fff
+e07e07
+e07e07
+e07e07
+fc0fc7
+fc0fc7
+fc0fc7
+1fffc7
+1fffc7
+1fffc7
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+ENDCHAR
+STARTCHAR C0105
+ENCODING 1632
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1f8000
+1f8000
+1f8000
+1c0000
+1c0000
+1c0000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0106
+ENCODING 1633
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000e00
+000e00
+000e00
+007fc0
+007fc0
+007fc0
+03fff8
+03fff8
+03fff8
+007fc0
+007fc0
+007fc0
+000e00
+000e00
+000e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0107
+ENCODING 1634
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0108
+ENCODING 1635
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f8000
+1f8000
+1f8000
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+0001f8
+0001f8
+0001f8
+ENDCHAR
+STARTCHAR C0109
+ENCODING 1636
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8e3f
+1f8e3f
+1f8e3f
+1f8e3f
+1f8e3f
+1f8e3f
+1fffff
+1fffff
+1fffff
+1ff000
+1ff000
+1ff000
+03f000
+03f000
+03f000
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C010a
+ENCODING 1637
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007ff8
+007ff8
+007ff8
+03fe00
+03fe00
+03fe00
+1ff000
+1ff000
+1ff000
+007fc0
+007fc0
+007fc0
+03fe00
+03fe00
+03fe00
+1ff000
+1ff000
+1ff000
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C010b
+ENCODING 1638
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007fc0
+007fc0
+007fc0
+03fff8
+03fff8
+03fff8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1ffff8
+1ffff8
+1ffff8
+03ffc0
+03ffc0
+03ffc0
+ENDCHAR
+STARTCHAR C010c
+ENCODING 1639
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1fffc0
+1fffc0
+1fffc0
+1fffc0
+1fffc0
+1fffc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+000fc0
+ENDCHAR
+STARTCHAR C010d
+ENCODING 1640
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03ffc0
+03ffc0
+03ffc0
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C010e
+ENCODING 1641
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+ENDCHAR
+STARTCHAR C010f
+ENCODING 8211
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0110
+ENCODING 8212
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0111
+ENCODING 8216
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0112
+ENCODING 8217
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0113
+ENCODING 8220
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+03f03f
+03f03f
+03f03f
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0114
+ENCODING 8221
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+1f81f8
+fc0fc0
+fc0fc0
+fc0fc0
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0115
+ENCODING 8249
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0116
+ENCODING 8250
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0117
+ENCODING 8364
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007ff8
+007ff8
+007ff8
+03f000
+03f000
+03f000
+1fffc0
+1fffc0
+1fffc0
+03f000
+03f000
+03f000
+1fffc0
+1fffc0
+1fffc0
+03f000
+03f000
+03f000
+007ff8
+007ff8
+007ff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0118
+ENCODING 8592
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03f000
+03f000
+03f000
+1ffff8
+1ffff8
+1ffff8
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0119
+ENCODING 8593
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C011a
+ENCODING 8594
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000fc0
+000fc0
+000fc0
+1ffff8
+1ffff8
+1ffff8
+000fc0
+000fc0
+000fc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C011b
+ENCODING 8595
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+1ffff8
+1ffff8
+1ffff8
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C011c
+ENCODING 8624
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffff8
+1ffff8
+1ffff8
+1ffe00
+1ffe00
+1ffe00
+1fffc0
+1fffc0
+1fffc0
+1f8ff8
+1f8ff8
+1f8ff8
+1f81f8
+1f81f8
+1f81f8
+0001f8
+0001f8
+0001f8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C011d
+ENCODING 9243
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1ffe00
+1ffe00
+1ffe00
+1f8000
+1f8000
+1f8000
+1ffe00
+1ffe00
+1ffe00
+1f8000
+1f8000
+1f8000
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+007ff8
+007ff8
+007ff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C011e
+ENCODING 9473
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C011f
+ENCODING 9475
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+ENDCHAR
+STARTCHAR C0120
+ENCODING 9487
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+007fff
+007fff
+007fff
+007fff
+007fff
+007fff
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0121
+ENCODING 9491
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+fffe00
+fffe00
+fffe00
+fffe00
+fffe00
+fffe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0122
+ENCODING 9495
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007fff
+007fff
+007fff
+007fff
+007fff
+007fff
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0123
+ENCODING 9499
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+fffe00
+fffe00
+fffe00
+fffe00
+fffe00
+fffe00
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0124
+ENCODING 9507
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007fff
+007fff
+007fff
+007fff
+007fff
+007fff
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0125
+ENCODING 9515
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+fffe00
+fffe00
+fffe00
+fffe00
+fffe00
+fffe00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0126
+ENCODING 9523
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0127
+ENCODING 9531
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0128
+ENCODING 9547
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0129
+ENCODING 9585
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+0001ff
+0001ff
+0001ff
+000ff8
+000ff8
+000ff8
+007fc0
+007fc0
+007fc0
+03fe00
+03fe00
+03fe00
+1ff000
+1ff000
+1ff000
+ff8000
+ff8000
+ff8000
+fc0000
+fc0000
+fc0000
+ENDCHAR
+STARTCHAR C012a
+ENCODING 9586
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+fc0000
+fc0000
+fc0000
+ff8000
+ff8000
+ff8000
+1ff000
+1ff000
+1ff000
+03fe00
+03fe00
+03fe00
+007fc0
+007fc0
+007fc0
+000ff8
+000ff8
+000ff8
+0001ff
+0001ff
+0001ff
+00003f
+00003f
+00003f
+ENDCHAR
+STARTCHAR C012b
+ENCODING 9601
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ENDCHAR
+STARTCHAR C012c
+ENCODING 9604
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ENDCHAR
+STARTCHAR C012d
+ENCODING 9612
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+ENDCHAR
+STARTCHAR C012e
+ENCODING 9614
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+fc0000
+ENDCHAR
+STARTCHAR C012f
+ENCODING 9620
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0130
+ENCODING 9622
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+ENDCHAR
+STARTCHAR C0131
+ENCODING 9623
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+ENDCHAR
+STARTCHAR C0132
+ENCODING 9624
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+fff000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0133
+ENCODING 9629
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000fff
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0134
+ENCODING 9654
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007000
+007000
+007000
+007e00
+007e00
+007e00
+007fc0
+007fc0
+007fc0
+007ff8
+007ff8
+007ff8
+007fc0
+007fc0
+007fc0
+007e00
+007e00
+007e00
+007000
+007000
+007000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0135
+ENCODING 9664
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000e00
+000e00
+000e00
+007e00
+007e00
+007e00
+03fe00
+03fe00
+03fe00
+1ffe00
+1ffe00
+1ffe00
+03fe00
+03fe00
+03fe00
+007e00
+007e00
+007e00
+000e00
+000e00
+000e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0136
+ENCODING 9670
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+03ffc0
+03ffc0
+03ffc0
+007e00
+007e00
+007e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0137
+ENCODING 9679
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+03ffc0
+03ffc0
+03ffc0
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0138
+ENCODING 9698
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000007
+000007
+000007
+00003f
+00003f
+00003f
+0001ff
+0001ff
+0001ff
+000fff
+000fff
+000fff
+007fff
+007fff
+007fff
+03ffff
+03ffff
+03ffff
+1fffff
+1fffff
+1fffff
+ffffff
+ffffff
+ffffff
+ENDCHAR
+STARTCHAR C0139
+ENCODING 9699
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+e00000
+e00000
+e00000
+fc0000
+fc0000
+fc0000
+ff8000
+ff8000
+ff8000
+fff000
+fff000
+fff000
+fffe00
+fffe00
+fffe00
+ffffc0
+ffffc0
+ffffc0
+fffff8
+fffff8
+fffff8
+ffffff
+ffffff
+ffffff
+ENDCHAR
+STARTCHAR C013a
+ENCODING 9824
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+1ffff8
+007e00
+007e00
+007e00
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C013b
+ENCODING 9827
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007fc0
+007fc0
+007fc0
+007fc0
+007fc0
+007fc0
+1ff1ff
+1ff1ff
+1ff1ff
+1ff1ff
+1ff1ff
+1ff1ff
+000e00
+000e00
+000e00
+007fc0
+007fc0
+007fc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C013c
+ENCODING 9829
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+1fffff
+1fffff
+1fffff
+1fffff
+1fffff
+1fffff
+03fff8
+03fff8
+03fff8
+007fc0
+007fc0
+007fc0
+000e00
+000e00
+000e00
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C013d
+ENCODING 62456
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+03803f
+03803f
+03803f
+03f03f
+03f03f
+03f03f
+007e3f
+007e3f
+007e3f
+000e3f
+000e3f
+000e3f
+000ff8
+000ff8
+000ff8
+1fffc0
+1fffc0
+1fffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C013e
+ENCODING 65152
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+007fc0
+007fc0
+007fc0
+03f000
+03f000
+03f000
+007fc0
+007fc0
+007fc0
+03fe00
+03fe00
+03fe00
+038000
+038000
+038000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C013f
+ENCODING 65153
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0140
+ENCODING 65154
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0141
+ENCODING 65157
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8000
+1f8000
+1f8000
+fc0fff
+fc0fff
+fc0fff
+007e3f
+007e3f
+007e3f
+000fff
+000fff
+000fff
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0142
+ENCODING 65158
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8000
+1f8000
+1f8000
+fc0fff
+fc0fff
+fc0fff
+007e3f
+007e3f
+007e3f
+000fff
+000fff
+000fff
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0143
+ENCODING 65165
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0144
+ENCODING 65166
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0145
+ENCODING 65167
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0146
+ENCODING 65168
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0147
+ENCODING 65169
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+ENDCHAR
+STARTCHAR C0148
+ENCODING 65170
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+007e00
+007e00
+007e00
+ENDCHAR
+STARTCHAR C0149
+ENCODING 65171
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e3f
+007e3f
+007e3f
+000000
+000000
+000000
+000fff
+000fff
+000fff
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007fff
+007fff
+007fff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C014a
+ENCODING 65172
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e3f
+007e3f
+007e3f
+000000
+000000
+000000
+000fff
+000fff
+000fff
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007fff
+007fff
+007fff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C014b
+ENCODING 65173
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C014c
+ENCODING 65174
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C014d
+ENCODING 65175
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1f8fc0
+1f8fc0
+1f8fc0
+000000
+000000
+000000
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C014e
+ENCODING 65176
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C014f
+ENCODING 65177
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0150
+ENCODING 65178
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0151
+ENCODING 65179
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0152
+ENCODING 65180
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0153
+ENCODING 65181
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8000
+1f8000
+1f8000
+1f803f
+1f803f
+1f803f
+03fe00
+03fe00
+03fe00
+ENDCHAR
+STARTCHAR C0154
+ENCODING 65182
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8000
+1f8000
+1f8000
+1f803f
+1f803f
+1f803f
+03fe00
+03fe00
+03fe00
+ENDCHAR
+STARTCHAR C0155
+ENCODING 65183
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+1c0fc0
+1c0fc0
+1c0fc0
+0001f8
+0001f8
+0001f8
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000fc0
+000fc0
+000fc0
+ENDCHAR
+STARTCHAR C0156
+ENCODING 65184
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8000
+1f8000
+1f8000
+1f803f
+1f803f
+1f803f
+03fe00
+03fe00
+03fe00
+ENDCHAR
+STARTCHAR C0157
+ENCODING 65185
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8007
+1f8007
+1f8007
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+ENDCHAR
+STARTCHAR C0158
+ENCODING 65186
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8007
+1f8007
+1f8007
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+ENDCHAR
+STARTCHAR C0159
+ENCODING 65187
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+1c0fc0
+1c0fc0
+1c0fc0
+0001f8
+0001f8
+0001f8
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C015a
+ENCODING 65188
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8007
+1f8007
+1f8007
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+ENDCHAR
+STARTCHAR C015b
+ENCODING 65189
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8007
+1f8007
+1f8007
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+ENDCHAR
+STARTCHAR C015c
+ENCODING 65190
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8007
+1f8007
+1f8007
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+ENDCHAR
+STARTCHAR C015d
+ENCODING 65191
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+000000
+000000
+000000
+1ffe00
+1ffe00
+1ffe00
+1c0fc0
+1c0fc0
+1c0fc0
+0001f8
+0001f8
+0001f8
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C015e
+ENCODING 65192
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+1ffe00
+1ffe00
+1ffe00
+000fc0
+000fc0
+000fc0
+03fff8
+03fff8
+03fff8
+1f803f
+1f803f
+1f803f
+1f8007
+1f8007
+1f8007
+1f8000
+1f8000
+1f8000
+03ffc0
+03ffc0
+03ffc0
+ENDCHAR
+STARTCHAR C015f
+ENCODING 65193
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0160
+ENCODING 65194
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0161
+ENCODING 65195
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+000000
+000000
+000000
+000fc0
+000fc0
+000fc0
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0162
+ENCODING 65196
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+000000
+000000
+000000
+000fc0
+000fc0
+000fc0
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0163
+ENCODING 65197
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0164
+ENCODING 65198
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0165
+ENCODING 65199
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+00003f
+00003f
+00003f
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0166
+ENCODING 65200
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+00003f
+00003f
+00003f
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C0167
+ENCODING 65201
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e07fff
+e07fff
+e07fff
+e07ff8
+e07ff8
+e07ff8
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C0168
+ENCODING 65202
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e07fff
+e07fff
+e07fff
+e07ff8
+e07ff8
+e07ff8
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C0169
+ENCODING 65203
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+1c0e07
+1c0e07
+1c0e07
+fc7e3f
+fc7e3f
+fc7e3f
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C016a
+ENCODING 65204
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e07fff
+e07fff
+e07fff
+e07ff8
+e07ff8
+e07ff8
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C016b
+ENCODING 65205
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+03f03f
+03f03f
+03f03f
+000000
+000000
+000000
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e07fff
+e07fff
+e07fff
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C016c
+ENCODING 65206
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+03f03f
+03f03f
+03f03f
+000000
+000000
+000000
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e07fff
+e07fff
+e07fff
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C016d
+ENCODING 65207
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+1f81f8
+1f81f8
+1f81f8
+000000
+000000
+000000
+1c0e07
+1c0e07
+1c0e07
+fc7e3f
+fc7e3f
+fc7e3f
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C016e
+ENCODING 65208
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+03f03f
+03f03f
+03f03f
+000000
+000000
+000000
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e071c7
+e07fff
+e07fff
+e07fff
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C016f
+ENCODING 65209
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+e07e07
+e07e07
+e07e07
+e07007
+e07007
+e07007
+e07fff
+e07fff
+e07fff
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C0170
+ENCODING 65210
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+e07e07
+e07e07
+e07e07
+e07007
+e07007
+e07007
+e07fff
+e07fff
+e07fff
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C0171
+ENCODING 65211
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+1c7e07
+1c7e07
+1c7e07
+fff007
+fff007
+fff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0172
+ENCODING 65212
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+e07e07
+e07e07
+e07e07
+e07007
+e07007
+e07007
+e07fff
+e07fff
+e07fff
+fff000
+fff000
+fff000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C0173
+ENCODING 65213
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+000fff
+000fff
+000fff
+e07e07
+e07e07
+e07e07
+e07007
+e07007
+e07007
+e07fff
+e07fff
+e07fff
+fffe00
+fffe00
+fffe00
+1ff000
+1ff000
+1ff000
+ENDCHAR
+STARTCHAR C0174
+ENCODING 65214
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+000fff
+000fff
+000fff
+e07e07
+e07e07
+e07e07
+e07007
+e07007
+e07007
+e07fff
+e07fff
+e07fff
+fffe00
+fffe00
+fffe00
+1ff000
+1ff000
+1ff000
+ENDCHAR
+STARTCHAR C0175
+ENCODING 65215
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+007e00
+007e00
+007e00
+000000
+000000
+000000
+000fff
+000fff
+000fff
+1c7e07
+1c7e07
+1c7e07
+fff007
+fff007
+fff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0176
+ENCODING 65216
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+000fff
+000fff
+000fff
+e07e07
+e07e07
+e07e07
+e07007
+e07007
+e07007
+e07fff
+e07fff
+e07fff
+fffe00
+fffe00
+fffe00
+1ff000
+1ff000
+1ff000
+ENDCHAR
+STARTCHAR C0177
+ENCODING 65217
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8fff
+1f8fff
+1f8fff
+1ffe07
+1ffe07
+1ffe07
+1ff007
+1ff007
+1ff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0178
+ENCODING 65218
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8fff
+1f8fff
+1f8fff
+1ffe07
+1ffe07
+1ffe07
+1ff007
+1ff007
+1ff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0179
+ENCODING 65219
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8fff
+1f8fff
+1f8fff
+1ffe07
+1ffe07
+1ffe07
+1ff007
+1ff007
+1ff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C017a
+ENCODING 65220
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8fff
+1f8fff
+1f8fff
+1ffe07
+1ffe07
+1ffe07
+1ff007
+1ff007
+1ff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C017b
+ENCODING 65221
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8fc0
+1f8fc0
+1f8fc0
+1f8000
+1f8000
+1f8000
+1f8fff
+1f8fff
+1f8fff
+1ffe07
+1ffe07
+1ffe07
+1ff007
+1ff007
+1ff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C017c
+ENCODING 65222
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8fc0
+1f8fc0
+1f8fc0
+1f8000
+1f8000
+1f8000
+1f8fff
+1f8fff
+1f8fff
+1ffe07
+1ffe07
+1ffe07
+1ff007
+1ff007
+1ff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C017d
+ENCODING 65223
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8fc0
+1f8fc0
+1f8fc0
+1f8000
+1f8000
+1f8000
+1f8fff
+1f8fff
+1f8fff
+1ffe07
+1ffe07
+1ffe07
+1ff007
+1ff007
+1ff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C017e
+ENCODING 65224
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8fc0
+1f8fc0
+1f8fc0
+1f8000
+1f8000
+1f8000
+1f8fff
+1f8fff
+1f8fff
+1ffe07
+1ffe07
+1ffe07
+1ff007
+1ff007
+1ff007
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C017f
+ENCODING 65225
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffff
+03ffff
+03ffff
+1f8007
+1f8007
+1f8007
+1ff000
+1ff000
+1ff000
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C0180
+ENCODING 65226
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffff
+03ffff
+03ffff
+1f8007
+1f8007
+1f8007
+1ff000
+1ff000
+1ff000
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C0181
+ENCODING 65227
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007fc0
+007fc0
+007fc0
+03fff8
+03fff8
+03fff8
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0182
+ENCODING 65228
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffff
+03ffff
+03ffff
+1f8007
+1f8007
+1f8007
+1ff000
+1ff000
+1ff000
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C0183
+ENCODING 65229
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+000ff8
+000ff8
+000ff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffff
+03ffff
+03ffff
+1f8007
+1f8007
+1f8007
+1ff000
+1ff000
+1ff000
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C0184
+ENCODING 65230
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+000ff8
+000ff8
+000ff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffff
+03ffff
+03ffff
+1f8007
+1f8007
+1f8007
+1ff000
+1ff000
+1ff000
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C0185
+ENCODING 65231
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+007fc0
+007fc0
+007fc0
+03fff8
+03fff8
+03fff8
+03f000
+03f000
+03f000
+007e00
+007e00
+007e00
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0186
+ENCODING 65232
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8000
+1f8000
+1f8000
+000ff8
+000ff8
+000ff8
+007e00
+007e00
+007e00
+007e00
+007e00
+007e00
+03ffff
+03ffff
+03ffff
+1f8007
+1f8007
+1f8007
+1ff000
+1ff000
+1ff000
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C0187
+ENCODING 65233
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f000
+03f000
+03f000
+0001ff
+0001ff
+0001ff
+fc0fc7
+fc0fc7
+fc0fc7
+fc01ff
+fc01ff
+fc01ff
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0188
+ENCODING 65234
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f000
+03f000
+03f000
+0001ff
+0001ff
+0001ff
+fc0fc7
+fc0fc7
+fc0fc7
+fc01ff
+fc01ff
+fc01ff
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0189
+ENCODING 65235
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f000
+03f000
+03f000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+000fc7
+000fc7
+000fc7
+0001ff
+0001ff
+0001ff
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C018a
+ENCODING 65236
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+03f000
+03f000
+03f000
+0001ff
+0001ff
+0001ff
+fc0fc7
+fc0fc7
+fc0fc7
+fc01ff
+fc01ff
+fc01ff
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C018b
+ENCODING 65237
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+0001ff
+0001ff
+0001ff
+1c0fc7
+1c0fc7
+1c0fc7
+fc01ff
+fc01ff
+fc01ff
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C018c
+ENCODING 65238
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+0001ff
+0001ff
+0001ff
+1c0fc7
+1c0fc7
+1c0fc7
+fc01ff
+fc01ff
+fc01ff
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C018d
+ENCODING 65239
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+1f8fc0
+1f8fc0
+1f8fc0
+000000
+000000
+000000
+007fff
+007fff
+007fff
+007e07
+007e07
+007e07
+000fff
+000fff
+000fff
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C018e
+ENCODING 65240
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03f1f8
+03f1f8
+03f1f8
+000000
+000000
+000000
+0001ff
+0001ff
+0001ff
+1c0fc7
+1c0fc7
+1c0fc7
+fc01ff
+fc01ff
+fc01ff
+fc003f
+fc003f
+fc003f
+1ffff8
+1ffff8
+1ffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C018f
+ENCODING 65241
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+03f03f
+03f03f
+03f03f
+03803f
+03803f
+03803f
+1ff03f
+1ff03f
+1ff03f
+00003f
+00003f
+00003f
+e0003f
+e0003f
+e0003f
+fffff8
+fffff8
+fffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0190
+ENCODING 65242
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+03f03f
+03f03f
+03f03f
+03803f
+03803f
+03803f
+1ff03f
+1ff03f
+1ff03f
+00003f
+00003f
+00003f
+e0003f
+e0003f
+e0003f
+fffff8
+fffff8
+fffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0191
+ENCODING 65243
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+007fc0
+007fc0
+007fc0
+0001f8
+0001f8
+0001f8
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0192
+ENCODING 65244
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+03f03f
+03f03f
+03f03f
+03803f
+03803f
+03803f
+1ff03f
+1ff03f
+1ff03f
+00003f
+00003f
+00003f
+e0003f
+e0003f
+e0003f
+fffff8
+fffff8
+fffff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0193
+ENCODING 65245
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C0194
+ENCODING 65246
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C0195
+ENCODING 65247
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C0196
+ENCODING 65248
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+03fff8
+03fff8
+03fff8
+ENDCHAR
+STARTCHAR C0197
+ENCODING 65249
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+007fff
+007fff
+007fff
+03ffc7
+03ffc7
+03ffc7
+1f81ff
+1f81ff
+1f81ff
+1f803f
+1f803f
+1f803f
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C0198
+ENCODING 65250
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+007fff
+007fff
+007fff
+03ffc7
+03ffc7
+03ffc7
+1f81ff
+1f81ff
+1f81ff
+1f803f
+1f803f
+1f803f
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C0199
+ENCODING 65251
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+0001ff
+0001ff
+0001ff
+000fc7
+000fc7
+000fc7
+ffffc7
+ffffc7
+ffffc7
+0001ff
+0001ff
+0001ff
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C019a
+ENCODING 65252
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+0001f8
+0001f8
+0001f8
+007fff
+007fff
+007fff
+03ffc7
+03ffc7
+03ffc7
+1f81ff
+1f81ff
+1f81ff
+1f803f
+1f803f
+1f803f
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+1f8000
+ENDCHAR
+STARTCHAR C019b
+ENCODING 65253
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+038038
+038038
+038038
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C019c
+ENCODING 65254
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+038038
+038038
+038038
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C019d
+ENCODING 65255
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000fc0
+000fc0
+000fc0
+000000
+000000
+000000
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C019e
+ENCODING 65256
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007e00
+007e00
+007e00
+000000
+000000
+000000
+038038
+038038
+038038
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+1f803f
+03fff8
+03fff8
+03fff8
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C019f
+ENCODING 65257
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007fff
+007fff
+007fff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C01a0
+ENCODING 65258
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007fff
+007fff
+007fff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C01a1
+ENCODING 65259
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+007000
+007000
+007000
+03fff8
+03fff8
+03fff8
+0381ff
+0381ff
+0381ff
+03fe07
+03fe07
+03fe07
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C01a2
+ENCODING 65260
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007e3f
+007fff
+007fff
+007fff
+000000
+000000
+000000
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C01a3
+ENCODING 65261
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+007e3f
+007e3f
+007e3f
+007fff
+007fff
+007fff
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C01a4
+ENCODING 65262
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000fff
+000fff
+000fff
+007e3f
+007e3f
+007e3f
+007fff
+007fff
+007fff
+00003f
+00003f
+00003f
+0001f8
+0001f8
+0001f8
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C01a5
+ENCODING 65263
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+fc7e3f
+fc7e3f
+fc7e3f
+fc7e07
+fc7e07
+fc7e07
+fc0fc7
+fc0fc7
+fc0fc7
+fc0fc0
+fc0fc0
+fc0fc0
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C01a6
+ENCODING 65264
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+fc7e3f
+fc7e3f
+fc7e3f
+fc7e07
+fc7e07
+fc7e07
+fc0fc7
+fc0fc7
+fc0fc7
+fc0fc0
+fc0fc0
+fc0fc0
+1fffc0
+1fffc0
+1fffc0
+ENDCHAR
+STARTCHAR C01a7
+ENCODING 65265
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+e07fff
+e07fff
+e07fff
+e07e07
+e07e07
+e07e07
+fc0fc7
+fc0fc7
+fc0fc7
+1fffc7
+1fffc7
+1fffc7
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+ENDCHAR
+STARTCHAR C01a8
+ENCODING 65266
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+e07fff
+e07fff
+e07fff
+e07e07
+e07e07
+e07e07
+fc0fc7
+fc0fc7
+fc0fc7
+1fffc7
+1fffc7
+1fffc7
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+ENDCHAR
+STARTCHAR C01a9
+ENCODING 65267
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+000000
+00003f
+00003f
+00003f
+00003f
+00003f
+00003f
+ffffff
+ffffff
+ffffff
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+ENDCHAR
+STARTCHAR C01aa
+ENCODING 65268
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+000000
+000000
+000000
+000ff8
+000ff8
+000ff8
+e07fff
+e07fff
+e07fff
+e07e07
+e07e07
+e07e07
+fc0fc7
+fc0fc7
+fc0fc7
+1fffc7
+1fffc7
+1fffc7
+000000
+000000
+000000
+03f1f8
+03f1f8
+03f1f8
+ENDCHAR
+STARTCHAR C01ab
+ENCODING 65271
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+00003f
+00003f
+00003f
+03803f
+03803f
+03803f
+03f03f
+03f03f
+03f03f
+007e3f
+007e3f
+007e3f
+000e3f
+000e3f
+000e3f
+000ff8
+000ff8
+000ff8
+1fffc0
+1fffc0
+1fffc0
+000000
+000000
+000000
+ENDCHAR
+STARTCHAR C01ac
+ENCODING 65533
+SWIDTH 666 0
+DWIDTH 24 0
+BBX 24 24 0 -6
+BITMAP
+03ffc0
+03ffc0
+03ffc0
+1f81f8
+1f81f8
+1f81f8
+1c7e38
+1c7e38
+1c7e38
+1ff1f8
+1ff1f8
+1ff1f8
+1ffff8
+1ffff8
+1ffff8
+1ff1f8
+1ff1f8
+1ff1f8
+03ffc0
+03ffc0
+03ffc0
+000000
+000000
+000000
+ENDCHAR
+ENDFONT
diff --git a/fonts/fauxtari-24.psf b/fonts/fauxtari-24.psf
new file mode 100644
index 0000000..901df8d
--- /dev/null
+++ b/fonts/fauxtari-24.psf
Binary files differ
diff --git a/fonts/fauxtari-24.txt b/fonts/fauxtari-24.txt
new file mode 100644
index 0000000..e667ba8
--- /dev/null
+++ b/fonts/fauxtari-24.txt
@@ -0,0 +1,5331 @@
+%PSF2
+Version: 0
+Flags: 1
+Length: 512
+Width: 24
+Height: 24
+%
+Unicode: [2665];
+Bitmap: \
+------------------------------------------------------------------------ \
+------######---######---------######---######---------######---######--- \
+---#####################---#####################---##################### \
+---#####################---#####################---##################### \
+------###############---------###############---------###############--- \
+---------#########---------------#########---------------#########------ \
+------------###---------------------###---------------------###--------- \
+------------------------------------------------------------------------
+%
+Unicode: [2523];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------###############---------###############---------############### \
+---------###############---------###############---------############### \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######---------
+%
+Unicode: [2503];
+Bitmap: \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------######
+%
+Unicode: [251b];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+###############---------###############---------###############--------- \
+###############---------###############---------###############--------- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [252b];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+###############---------###############---------###############--------- \
+###############---------###############---------###############--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######---------
+%
+Unicode: [2513];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+###############---------###############---------###############--------- \
+###############---------###############---------###############--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######---------
+%
+Unicode: [2571];
+Bitmap: \
+------------------######------------------######------------------###### \
+---------------#########---------------#########---------------######### \
+------------#########---------------#########---------------#########--- \
+---------#########---------------#########---------------#########------ \
+------#########---------------#########---------------#########--------- \
+---#########---------------#########---------------#########------------ \
+#########---------------#########---------------#########--------------- \
+######------------------######------------------######------------------
+%
+Unicode: [2572];
+Bitmap: \
+######------------------######------------------######------------------ \
+#########---------------#########---------------#########--------------- \
+---#########---------------#########---------------#########------------ \
+------#########---------------#########---------------#########--------- \
+---------#########---------------#########---------------#########------ \
+------------#########---------------#########---------------#########--- \
+---------------#########---------------#########---------------######### \
+------------------######------------------######------------------######
+%
+Unicode: [25e2];
+Bitmap: \
+---------------------###---------------------###---------------------### \
+------------------######------------------######------------------###### \
+---------------#########---------------#########---------------######### \
+------------############------------############------------############ \
+---------###############---------###############---------############### \
+------##################------##################------################## \
+---#####################---#####################---##################### \
+########################################################################
+%
+Unicode: [2597];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------############------------############------------############ \
+------------############------------############------------############ \
+------------############------------############------------############ \
+------------############------------############------------############
+%
+Unicode: [25e3];
+Bitmap: \
+###---------------------###---------------------###--------------------- \
+######------------------######------------------######------------------ \
+#########---------------#########---------------#########--------------- \
+############------------############------------############------------ \
+###############---------###############---------###############--------- \
+##################------##################------##################------ \
+#####################---#####################---#####################--- \
+########################################################################
+%
+Unicode: [259d];
+Bitmap: \
+------------############------------############------------############ \
+------------############------------############------------############ \
+------------############------------############------------############ \
+------------############------------############------------############ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [2598];
+Bitmap: \
+############------------############------------############------------ \
+############------------############------------############------------ \
+############------------############------------############------------ \
+############------------############------------############------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [2594];
+Bitmap: \
+######################################################################## \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [2581];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+######################################################################## \
+########################################################################
+%
+Unicode: [2596];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+############------------############------------############------------ \
+############------------############------------############------------ \
+############------------############------------############------------ \
+############------------############------------############------------
+%
+Unicode: [2663];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------#########---------------#########---------------#########------ \
+---------#########---------------#########---------------#########------ \
+---#########---#########---#########---#########---#########---######### \
+---#########---#########---#########---#########---#########---######### \
+------------###---------------------###---------------------###--------- \
+---------#########---------------#########---------------#########------ \
+------------------------------------------------------------------------
+%
+Unicode: [250f];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---------###############---------###############---------############### \
+---------###############---------###############---------############### \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######---------
+%
+Unicode: [2501];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+######################################################################## \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [254b];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+######################################################################## \
+######################################################################## \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######---------
+%
+Unicode: [25cf];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---##################------##################------##################--- \
+---##################------##################------##################--- \
+---##################------##################------##################--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [2584];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+######################################################################## \
+######################################################################## \
+######################################################################## \
+########################################################################
+%
+Unicode: [258e];
+Bitmap: \
+######------------------######------------------######------------------ \
+######------------------######------------------######------------------ \
+######------------------######------------------######------------------ \
+######------------------######------------------######------------------ \
+######------------------######------------------######------------------ \
+######------------------######------------------######------------------ \
+######------------------######------------------######------------------ \
+######------------------######------------------######------------------
+%
+Unicode: [2533];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+######################################################################## \
+######################################################################## \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######---------
+%
+Unicode: [253b];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+######################################################################## \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [258c];
+Bitmap: \
+############------------############------------############------------ \
+############------------############------------############------------ \
+############------------############------------############------------ \
+############------------############------------############------------ \
+############------------############------------############------------ \
+############------------############------------############------------ \
+############------------############------------############------------ \
+############------------############------------############------------
+%
+Unicode: [2517];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------###############---------###############---------############### \
+---------###############---------###############---------############### \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0118];[241b];
+Bitmap: \
+---############------------############------------############--------- \
+---######------------------######------------------######--------------- \
+---############------------############------------############--------- \
+---######------------------######------------------######--------------- \
+---##################------##################------##################--- \
+---------######------------------######------------------######--------- \
+---------############------------############------------############--- \
+------------------------------------------------------------------------
+%
+Unicode: [2191];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---##################------##################------##################--- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [2193];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---##################------##################------##################--- \
+------############------------############------------############------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [2190];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---##################------##################------##################--- \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [2192];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------------######------------------######------------------######------ \
+---##################------##################------##################--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0020];[00a0];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0021];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [0022];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0023];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+######################################################################## \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+######################################################################## \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0024];
+Bitmap: \
+---------######------------------######------------------######--------- \
+------###############---------###############---------###############--- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+---###############---------###############---------###############------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [0025];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######---######---------######---######---------######---######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---######------######------######------######------######------######--- \
+---###---------######------###---------######------###---------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0026];
+Bitmap: \
+---------#########---------------#########---------------#########------ \
+------######---######---------######---######---------######---######--- \
+---------#########---------------#########---------------#########------ \
+------#########---------------#########---------------#########--------- \
+---######---############---######---############---######---############ \
+---######------######------######------######------######------######--- \
+------#########---######------#########---######------#########---###### \
+------------------------------------------------------------------------
+%
+Unicode: [0027];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0028];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------#########---------------#########---------------#########--- \
+---------#########---------------#########---------------#########------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------#########---------------#########---------------#########------ \
+------------#########---------------#########---------------#########--- \
+------------------------------------------------------------------------
+%
+Unicode: [0029];
+Bitmap: \
+------------------------------------------------------------------------ \
+---#########---------------#########---------------#########------------ \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------#########---------------#########---------------#########--------- \
+---#########---------------#########---------------#########------------ \
+------------------------------------------------------------------------
+%
+Unicode: [002a];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+######################################################################## \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [002b];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---##################------##################------##################--- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [002c];[00b8];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------
+%
+Unicode: [002d];[00ad];[2013];[2014];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [002e];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [002f];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------------######------------------######------------------######--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---######------------------######------------------######--------------- \
+---###---------------------###---------------------###------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0030];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######---#########------######---#########------######---#########--- \
+---#########---######------#########---######------#########---######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0031];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [0032];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [0033];
+Bitmap: \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------------######------------------######------------------######------ \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0034];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------######------------------######------------------######------ \
+---------#########---------------#########---------------#########------ \
+------############------------############------------############------ \
+---######---######---------######---######---------######---######------ \
+---##################------##################------##################--- \
+------------######------------------######------------------######------ \
+------------------------------------------------------------------------
+%
+Unicode: [0035];
+Bitmap: \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+---######------------------######------------------######--------------- \
+---###############---------###############---------###############------ \
+---------------######------------------######------------------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0036];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------------------######------------------######--------------- \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0037];
+Bitmap: \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+---------------######------------------######------------------######--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+------######------------------######------------------######------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0038];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0039];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+---------------######------------------######------------------######--- \
+------------######------------------######------------------######------ \
+------#########---------------#########---------------#########--------- \
+------------------------------------------------------------------------
+%
+Unicode: [003a];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [003b];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------
+%
+Unicode: [003c];
+Bitmap: \
+---------------######------------------######------------------######--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------------######------------------######------------------######------ \
+---------------######------------------######------------------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [003d];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [003e];
+Bitmap: \
+---######------------------######------------------######--------------- \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---######------------------######------------------######--------------- \
+------------------------------------------------------------------------
+%
+Unicode: [003f];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [0040];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######---#########------######---#########------######---#########--- \
+---######---#########------######---#########------######---#########--- \
+---######------------------######------------------######--------------- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [0041];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0042];
+Bitmap: \
+------------------------------------------------------------------------ \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---###############---------###############---------###############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0043];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0044];
+Bitmap: \
+------------------------------------------------------------------------ \
+---############------------############------------############--------- \
+---######---######---------######---######---------######---######------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######---######---------######---######---------######---######------ \
+---############------------############------------############--------- \
+------------------------------------------------------------------------
+%
+Unicode: [0045];
+Bitmap: \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+---######------------------######------------------######--------------- \
+---###############---------###############---------###############------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [0046];
+Bitmap: \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+---######------------------######------------------######--------------- \
+---###############---------###############---------###############------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+------------------------------------------------------------------------
+%
+Unicode: [0047];
+Bitmap: \
+------------------------------------------------------------------------ \
+------###############---------###############---------###############--- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######---#########------######---#########------######---#########--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [0048];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0049];
+Bitmap: \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [004a];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [004b];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######---######---------######---######---------######---######------ \
+---############------------############------------############--------- \
+---############------------############------------############--------- \
+---######---######---------######---######---------######---######------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [004c];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [004d];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######---------######---######---------######---######---------###### \
+---#########---#########---#########---#########---#########---######### \
+---#####################---#####################---##################### \
+---######---###---######---######---###---######---######---###---###### \
+---######---------######---######---------######---######---------###### \
+---######---------######---######---------######---######---------###### \
+------------------------------------------------------------------------
+%
+Unicode: [004e];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---#########---######------#########---######------#########---######--- \
+---##################------##################------##################--- \
+---##################------##################------##################--- \
+---######---#########------######---#########------######---#########--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [004f];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0050];
+Bitmap: \
+------------------------------------------------------------------------ \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---###############---------###############---------###############------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+------------------------------------------------------------------------
+%
+Unicode: [0051];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######---######---------######---######---------######---######------ \
+------######---######---------######---######---------######---######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0052];
+Bitmap: \
+------------------------------------------------------------------------ \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---###############---------###############---------###############------ \
+---######---######---------######---######---------######---######------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0053];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0054];
+Bitmap: \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [0055];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [0056];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [0057];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######---------######---######---------######---######---------###### \
+---######---------######---######---------######---######---------###### \
+---######---###---######---######---###---######---######---###---###### \
+---#####################---#####################---##################### \
+---#########---#########---#########---#########---#########---######### \
+---######---------######---######---------######---######---------###### \
+------------------------------------------------------------------------
+%
+Unicode: [0058];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0059];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [005a];
+Bitmap: \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---######------------------######------------------######--------------- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [005b];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------############------------############------------############--- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------############------------############------------############--- \
+------------------------------------------------------------------------
+%
+Unicode: [005c];
+Bitmap: \
+------------------------------------------------------------------------ \
+---###---------------------###---------------------###------------------ \
+---######------------------######------------------######--------------- \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------------######------------------######------------------######------ \
+---------------######------------------######------------------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [005d];
+Bitmap: \
+------------------------------------------------------------------------ \
+---############------------############------------############--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---############------------############------------############--------- \
+------------------------------------------------------------------------
+%
+Unicode: [005e];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------###---------------------###---------------------###--------- \
+---------#########---------------#########---------------#########------ \
+------######---######---------######---######---------######---######--- \
+---######---------######---######---------######---######---------###### \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [005f];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+######################################################################## \
+------------------------------------------------------------------------
+%
+Unicode: [25c6];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---##################------##################------##################--- \
+---##################------##################------##################--- \
+------############------------############------------############------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [0061];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [0062];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---###############---------###############---------###############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0063];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0064];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [0065];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0066];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------#########---------------#########---------------#########--- \
+---------######------------------######------------------######--------- \
+------###############---------###############---------###############--- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [0067];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+---------------######------------------######------------------######--- \
+---###############---------###############---------###############------
+%
+Unicode: [0068];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0069];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [006a];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------------######------------------######------------------######--- \
+------------------------------------------------------------------------ \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+------############------------############------------############------
+%
+Unicode: [006b];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######---######---------######---######---------######---######------ \
+---############------------############------------############--------- \
+---######---######---------######---######---------######---######------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [006c];
+Bitmap: \
+------------------------------------------------------------------------ \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [006d];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---#####################---#####################---##################### \
+---#####################---#####################---##################### \
+---######---###---######---######---###---######---######---###---###### \
+---######---------######---######---------######---######---------###### \
+------------------------------------------------------------------------
+%
+Unicode: [006e];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [006f];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0070];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---###############---------###############---------###############------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######---------------
+%
+Unicode: [0071];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######---
+%
+Unicode: [0072];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+------------------------------------------------------------------------
+%
+Unicode: [0073];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------###############---------###############---------###############--- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+---###############---------###############---------###############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0074];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---##################------##################------##################--- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------#########---------------#########---------------#########--- \
+------------------------------------------------------------------------
+%
+Unicode: [0075];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [0076];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [0077];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---######---------######---######---------######---######---------###### \
+---######---###---######---######---###---######---######---###---###### \
+---#####################---#####################---##################### \
+------###############---------###############---------###############--- \
+------######---######---------######---######---------######---######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0078];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0079];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------######------------------######------------------######------ \
+---############------------############------------############---------
+%
+Unicode: [007a];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [2660];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---##################------##################------##################--- \
+---##################------##################------##################--- \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [007c];[0622];[fe81];[fe82];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######---------
+%
+Unicode: [21b0];
+Bitmap: \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+---############------------############------------############--------- \
+---###############---------###############---------###############------ \
+---######---#########------######---#########------######---#########--- \
+---######------######------######------######------######------######--- \
+---------------######------------------######------------------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [25c0];
+Bitmap: \
+------------###---------------------###---------------------###--------- \
+---------######------------------######------------------######--------- \
+------#########---------------#########---------------#########--------- \
+---############------------############------------############--------- \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######--------- \
+------------###---------------------###---------------------###--------- \
+------------------------------------------------------------------------
+%
+Unicode: [25b6];
+Bitmap: \
+---------###---------------------###---------------------###------------ \
+---------######------------------######------------------######--------- \
+---------#########---------------#########---------------#########------ \
+---------############------------############------------############--- \
+---------#########---------------#########---------------#########------ \
+---------######------------------######------------------######--------- \
+---------###---------------------###---------------------###------------ \
+------------------------------------------------------------------------
+%
+Unicode: [00e1];
+Bitmap: \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [00f9];
+Bitmap: \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [00d1];
+Bitmap: \
+------######---######---------######---######---------######---######--- \
+---######---######---------######---######---------######---######------ \
+------------------------------------------------------------------------ \
+---#########---######------#########---######------#########---######--- \
+---#########---######------#########---######------#########---######--- \
+---##################------##################------##################--- \
+---######---#########------######---#########------######---#########--- \
+------------------------------------------------------------------------
+%
+Unicode: [00c9];
+Bitmap: \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+---##################------##################------##################--- \
+---######------------------######------------------######--------------- \
+---###############---------###############---------###############------ \
+---######------------------######------------------######--------------- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [00e7];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------
+%
+Unicode: [00f4];
+Bitmap: \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [00f2];
+Bitmap: \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [00ec];
+Bitmap: \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [00a3];
+Bitmap: \
+---------#########---------------#########---------------#########------ \
+------######------------------######------------------######------------ \
+------######------------------######------------------######------------ \
+---############------------############------------############--------- \
+------######------------------######------------------######------------ \
+------######------------------######------------------######------------ \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [00ef];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [00fc];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [00e4];
+Bitmap: \
+------######---######---------######---######---------######---######--- \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [00d6];
+Bitmap: \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [00fa];
+Bitmap: \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [00f3];
+Bitmap: \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [00f6];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [00dc];
+Bitmap: \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [00e5];
+Bitmap: \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---------#########---------------#########---------------#########------ \
+---------------######------------------######------------------######--- \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [00fb];
+Bitmap: \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [00ee];
+Bitmap: \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [00e9];
+Bitmap: \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [00e8];
+Bitmap: \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [00f1];
+Bitmap: \
+------######---######---------######---######---------######---######--- \
+---######---######---------######---######---------######---######------ \
+------------------------------------------------------------------------ \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [00ea];
+Bitmap: \
+------############------------############------------############------ \
+######------------############------------############------------###### \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0227];
+Bitmap: \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [00e0];
+Bitmap: \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [00a1];
+Bitmap: \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+Unicode: [00c4];
+Bitmap: \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [05d0];
+Bitmap: \
+------------------------------------------------------------------------ \
+######---------######---######---------######---######---------######--- \
+############---######---############---######---############---######--- \
+######---############---######---############---######---############--- \
+######------######------######------######------######------######------ \
+######---------######---######---------######---######---------######--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05d1];
+Bitmap: \
+------------------------------------------------------------------------ \
+###############---------###############---------###############--------- \
+---------#########---------------#########---------------#########------ \
+------------######------------------######------------------######------ \
+------------######------------------######------------------######------ \
+#####################---#####################---#####################--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05d2];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+------------######------------------######------------------######------ \
+------------######------------------######------------------######------ \
+---###############---------###############---------###############------ \
+#########------######---#########------######---#########------######--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05d3];
+Bitmap: \
+------------------------------------------------------------------------ \
+#####################---#####################---#####################--- \
+---------#########---------------#########---------------#########------ \
+------------######------------------######------------------######------ \
+------------######------------------######------------------######------ \
+------------######------------------######------------------######------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05d4];
+Bitmap: \
+------------------------------------------------------------------------ \
+##################------##################------##################------ \
+---------------######------------------######------------------######--- \
+---###---------######------###---------######------###---------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05d5];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---------#########---------------#########---------------#########------ \
+------------######------------------######------------------######------ \
+------------######------------------######------------------######------ \
+------------######------------------######------------------######------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05d6];
+Bitmap: \
+------------------------------------------------------------------------ \
+##################------##################------##################------ \
+---#########---------------#########---------------#########------------ \
+------######------------------######------------------######------------ \
+------######------------------######------------------######------------ \
+------######------------------######------------------######------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05d7];
+Bitmap: \
+------------------------------------------------------------------------ \
+##################------##################------##################------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05d8];
+Bitmap: \
+------------------------------------------------------------------------ \
+######---############---######---############---######---############--- \
+######---###---######---######---###---######---######---###---######--- \
+######---------######---######---------######---######---------######--- \
+######---------######---######---------######---######---------######--- \
+##################------##################------##################------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05d9];
+Bitmap: \
+------------------------------------------------------------------------ \
+---###############---------###############---------###############------ \
+---------#########---------------#########---------------#########------ \
+------------######------------------######------------------######------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05da];
+Bitmap: \
+------------------------------------------------------------------------ \
+##################------##################------##################------ \
+------------#########---------------#########---------------#########--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######---
+%
+Unicode: [05db];
+Bitmap: \
+------------------------------------------------------------------------ \
+##################------##################------##################------ \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+------------#########---------------#########---------------#########--- \
+##################------##################------##################------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05dc];
+Bitmap: \
+######------------------######------------------######------------------ \
+##################------##################------##################------ \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+------------#########---------------#########---------------#########--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05dd];
+Bitmap: \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05de];
+Bitmap: \
+------------------------------------------------------------------------ \
+######---#########------######---#########------######---#########------ \
+---#########---######------#########---######------#########---######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######---#########------######---#########------######---#########--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05df];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------############------------############------------############--- \
+------------#########---------------#########---------------#########--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######---
+%
+Unicode: [05e0];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------############------------############------------############--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+------------#########---------------#########---------------#########--- \
+---###############---------###############---------###############------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05e1];
+Bitmap: \
+------------------------------------------------------------------------ \
+#####################---#####################---#####################--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######---######---------######---######---------######---######------ \
+---############------------############------------############--------- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05e2];
+Bitmap: \
+------------------------------------------------------------------------ \
+#########---#########---#########---#########---#########---#########--- \
+---######------######------######------######------######------######--- \
+------######---######---------######---######---------######---######--- \
+------######---######---------######---######---------######---######--- \
+##################------##################------##################------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05e3];
+Bitmap: \
+------------------------------------------------------------------------ \
+##################------##################------##################------ \
+---######---#########------######---#########------######---#########--- \
+---######------######------######------######------######------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######---
+%
+Unicode: [05e4];
+Bitmap: \
+------------------------------------------------------------------------ \
+##################------##################------##################------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------------#########---------------#########---------------#########--- \
+##################------##################------##################------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05e5];
+Bitmap: \
+------------------------------------------------------------------------ \
+######------#########---######------#########---######------#########--- \
+---######------######------######------######------######------######--- \
+---######---######---------######---######---------######---######------ \
+---############------------############------------############--------- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######---------------
+%
+Unicode: [05e6];
+Bitmap: \
+------------------------------------------------------------------------ \
+######---------######---######---------######---######---------######--- \
+---######---#########------######---#########------######---#########--- \
+------#########---------------#########---------------#########--------- \
+------------######------------------######------------------######------ \
+#####################---#####################---#####################--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05e7];
+Bitmap: \
+------------------------------------------------------------------------ \
+##################------##################------##################------ \
+------------#########---------------#########---------------#########--- \
+######---------######---######---------######---######---------######--- \
+######------######------######------######------######------######------ \
+######---######---------######---######---------######---######--------- \
+######------------------######------------------######------------------ \
+######------------------######------------------######------------------
+%
+Unicode: [05e8];
+Bitmap: \
+------------------------------------------------------------------------ \
+##################------##################------##################------ \
+------------#########---------------#########---------------#########--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05e9];
+Bitmap: \
+------------------------------------------------------------------------ \
+###------###------###---###------###------###---###------###------###--- \
+######---###------###---######---###------###---######---###------###--- \
+#########------######---#########------######---#########------######--- \
+######------######------######------######------######------######------ \
+##################------##################------##################------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [05ea];
+Bitmap: \
+------------------------------------------------------------------------ \
+##################------##################------##################------ \
+---######---#########------######---#########------######---#########--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+#########------######---#########------######---#########------######--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0179];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---##################------##################------##################--- \
+------######---######---------######---######---------######---######--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [0105];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------######------------------######------------------######
+%
+Unicode: [017a];
+Bitmap: \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+---##################------##################------##################--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [0107];
+Bitmap: \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [015a];
+Bitmap: \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+---------------######------------------######------------------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0119];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+---------------######------------------######------------------######---
+%
+Unicode: [00df];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------#########---------------#########---------------#########------ \
+------######---######---------######---######---------######---######--- \
+------############------------############------------############------ \
+------######---######---------######---######---------######---######--- \
+------######---#########------######---#########------######---######### \
+------###############---------###############---------###############--- \
+---######------------------######------------------######---------------
+%
+Unicode: [0141];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---############------------############------------############--------- \
+---#########---------------#########---------------#########------------ \
+#########---------------#########---------------#########--------------- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [0142];
+Bitmap: \
+------------------------------------------------------------------------ \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######--------- \
+---------#########---------------#########---------------#########------ \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0143];
+Bitmap: \
+------------######------------------######------------------######------ \
+---###---######---###------###---######---###------###---######---###--- \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+---##################------##################------##################--- \
+---######---#########------######---#########------######---#########--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [0144];
+Bitmap: \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+---###############---------###############---------###############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------
+%
+Unicode: [00d3];
+Bitmap: \
+---------------######------------------######------------------######--- \
+------############------------############------------############------ \
+---######---###---###------######---###---###------######---###---###--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------------------------------------------------------------------------
+%
+Unicode: [015b];
+Bitmap: \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------###############---------###############---------###############--- \
+---######------------------######------------------######--------------- \
+------############------------############------------############------ \
+---------------######------------------######------------------######--- \
+---###############---------###############---------###############------ \
+------------------------------------------------------------------------
+%
+Unicode: [0106];
+Bitmap: \
+------------######------------------######------------------######------ \
+------############------------############------------############------ \
+---######---#########------######---#########------######---#########--- \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######------######------######------######------######------######--- \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [0104];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+---######------######------######------######------######------######--- \
+------------------######------------------######------------------######
+%
+Unicode: [017b];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---##################------##################------##################--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---######------------------######------------------######--------------- \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [017c];
+Bitmap: \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+---##################------##################------##################--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [0660];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------------######------------------######------------------######--- \
+------------######------------------######------------------######------ \
+---------######------------------######------------------######--------- \
+------######------------------######------------------######------------ \
+---######------------------######------------------######--------------- \
+---###---------------------###---------------------###------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0661];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------###---------------------###---------------------###--------- \
+---------#########---------------#########---------------#########------ \
+------###############---------###############---------###############--- \
+---------#########---------------#########---------------#########------ \
+------------###---------------------###---------------------###--------- \
+------------------------------------------------------------------------
+%
+Unicode: [0662];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######---------
+%
+Unicode: [0663];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------------------######------------------######--------------- \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------------######------------------######------------------######------ \
+---------------######------------------######------------------######---
+%
+Unicode: [0664];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######---###---######---######---###---######---######---###---###### \
+---######---###---######---######---###---######---######---###---###### \
+---#####################---#####################---##################### \
+---#########---------------#########---------------#########------------ \
+------######------------------######------------------######------------ \
+------#########---------------#########---------------#########--------- \
+---------######------------------######------------------######---------
+%
+Unicode: [0665];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------############------------############------------############--- \
+------#########---------------#########---------------#########--------- \
+---#########---------------#########---------------#########------------ \
+---------#########---------------#########---------------#########------ \
+------#########---------------#########---------------#########--------- \
+---#########---------------#########---------------#########------------ \
+------###############---------###############---------###############---
+%
+Unicode: [0666];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------#########---------------#########---------------#########------ \
+------###############---------###############---------###############--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---##################------##################------##################--- \
+------############------------############------------############------
+%
+Unicode: [0667];
+Bitmap: \
+------------------------------------------------------------------------ \
+---###############---------###############---------###############------ \
+---###############---------###############---------###############------ \
+------------######------------------######------------------######------ \
+------------######------------------######------------------######------ \
+------------######------------------######------------------######------ \
+------------######------------------######------------------######------ \
+------------######------------------######------------------######------
+%
+Unicode: [0668];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+------############------------############------------############------ \
+------############------------############------------############------ \
+---------######------------------######------------------######---------
+%
+Unicode: [0669];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------############------------############------------############------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######--- \
+---######------######------######------######------######------######---
+%
+Unicode: [0624];[fe85];[fe86];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######------------------######------------------######--------------- \
+######------##################------##################------############ \
+---------######---######---------######---######---------######---###### \
+------------############------------############------------############ \
+------------------######------------------######------------------###### \
+---------------######------------------######------------------######--- \
+---###############---------###############---------###############------
+%
+Unicode: [0634];[feb5];[feb6];[feb8];
+Bitmap: \
+------------######------------------######------------------######------ \
+------######------######------######------######------######------###### \
+------------------------------------------------------------------------ \
+###------###---###---######------###---###---######------###---###---### \
+###------###---###---######------###---###---######------###---###---### \
+###------##################------##################------############### \
+############------------############------------############------------ \
+---######------------------######------------------######---------------
+%
+Unicode: [0648];[feed];[feee];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------############------------############------------############ \
+---------######---######---------######---######---------######---###### \
+---------###############---------###############---------############### \
+------------------######------------------######------------------###### \
+---------------######------------------######------------------######--- \
+---###############---------###############---------###############------
+%
+Unicode: [0629];[fe93];[fe94];
+Bitmap: \
+---------######---######---------######---######---------######---###### \
+------------------------------------------------------------------------ \
+------------############------------############------------############ \
+---------######---######---------######---######---------######---###### \
+---------######---######---------######---######---------######---###### \
+---------###############---------###############---------############### \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [064a];[fef1];[fef2];[fef4];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------#########---------------#########---------------#########--- \
+###------##################------##################------############### \
+###------######------######------######------######------######------### \
+######------######---#########------######---#########------######---### \
+---###############---###---###############---###---###############---### \
+------------------------------------------------------------------------ \
+------######---######---------######---######---------######---######---
+%
+Unicode: [062b];[fe99];[fe9a];[fe9c];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+######------------############------------############------------###### \
+######------------############------------############------------###### \
+---##################------##################------##################--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0628];[fe8f];[fe90];[fe92];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+######------------############------------############------------###### \
+######------------############------------############------------###### \
+---##################------##################------##################--- \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######---------
+%
+Unicode: [0644];[fedd];[fede];[fee0];
+Bitmap: \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+---######---------######---######---------######---######---------###### \
+---######---------######---######---------######---######---------###### \
+---######---------######---######---------######---######---------###### \
+------###############---------###############---------###############---
+%
+Unicode: [0621];[fe80];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---------#########---------------#########---------------#########------ \
+------######------------------######------------------######------------ \
+---------#########---------------#########---------------#########------ \
+------#########---------------#########---------------#########--------- \
+------###---------------------###---------------------###--------------- \
+------------------------------------------------------------------------
+%
+Unicode: [0647];[fee9];[feea];[feec];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------############------------############------------############ \
+---------######---######---------######---######---------######---###### \
+---------######---######---------######---######---------######---###### \
+---------###############---------###############---------############### \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [062a];[fe95];[fe96];[fe98];
+Bitmap: \
+------------------------------------------------------------------------ \
+------######---######---------######---######---------######---######--- \
+------------------------------------------------------------------------ \
+######------------############------------############------------###### \
+######------------############------------############------------###### \
+---##################------##################------##################--- \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0646];[fee5];[fee6];[fee8];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------###---------###---------###---------###---------###---------###--- \
+---######---------######---######---------######---######---------###### \
+---######---------######---######---------######---######---------###### \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [0645];[fee1];[fee2];[fee4];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------------######------------------######------------------######--- \
+---------###############---------###############---------############### \
+------############---###------############---###------############---### \
+---######------#########---######------#########---######------######### \
+---######---------######---######---------######---######---------###### \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######---------------
+%
+Unicode: [062c];[fe9d];[fe9e];[fea0];
+Bitmap: \
+------------------------------------------------------------------------ \
+---############------------############------------############--------- \
+------------######------------------######------------------######------ \
+------###############---------###############---------###############--- \
+---######---------######---######---------######---######---------###### \
+---######------------------######------------------######--------------- \
+---######---------######---######---------######---######---------###### \
+------#########---------------#########---------------#########---------
+%
+Unicode: [062e];[fea5];[fea6];[fea8];
+Bitmap: \
+------------------######------------------######------------------###### \
+---############------------############------------############--------- \
+------------######------------------######------------------######------ \
+------###############---------###############---------###############--- \
+---######---------######---######---------######---######---------###### \
+---######------------###---######------------###---######------------### \
+---######------------------######------------------######--------------- \
+------############------------############------------############------
+%
+Unicode: [062d];[fea1];[fea2];[fea4];
+Bitmap: \
+------------------------------------------------------------------------ \
+---############------------############------------############--------- \
+------------######------------------######------------------######------ \
+------###############---------###############---------###############--- \
+---######---------######---######---------######---######---------###### \
+---######------------###---######------------###---######------------### \
+---######------------------######------------------######--------------- \
+------############------------############------------############------
+%
+Unicode: [0636];[febd];[febe];[fec0];
+Bitmap: \
+------------######------------------######------------------######------ \
+------------------------------------------------------------------------ \
+------------############------------############------------############ \
+###------######------######------######------######------######------### \
+###------###---------######------###---------######------###---------### \
+###------##################------##################------############### \
+###############---------###############---------###############--------- \
+---#########---------------#########---------------#########------------
+%
+Unicode: [0642];[fed5];[fed6];[fed8];
+Bitmap: \
+------######---######---------######---######---------######---######--- \
+------------------------------------------------------------------------ \
+---------------#########---------------#########---------------######### \
+---###------######---###---###------######---###---###------######---### \
+######---------###############---------###############---------######### \
+######------------############------------############------------###### \
+---##################------##################------##################--- \
+------------------------------------------------------------------------
+%
+Unicode: [0633];[feb1];[feb2];[feb4];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+###------###---###---######------###---###---######------###---###---### \
+###------###---###---######------###---###---######------###---###---### \
+###------##################------##################------############### \
+###------############---###------############---###------############--- \
+############------------############------------############------------ \
+---######------------------######------------------######---------------
+%
+Unicode: [0641];[fed1];[fed2];[fed4];
+Bitmap: \
+------------------------------------------------------------------------ \
+------######------------------######------------------######------------ \
+---------------#########---------------#########---------------######### \
+######------######---#########------######---#########------######---### \
+######---------###############---------###############---------######### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0639];[fec9];[feca];[fecc];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------#########---------------#########---------------#########--- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------##################------##################------################## \
+---######------------###---######------------###---######------------### \
+---#########---------------#########---------------#########------------ \
+------###############---------###############---------###############---
+%
+Unicode: [0643];[fed9];[feda];[fedc];
+Bitmap: \
+------------------######------------------######------------------###### \
+------######------######------######------######------######------###### \
+------###---------######------###---------######------###---------###### \
+---#########------######---#########------######---#########------###### \
+------------------######------------------######------------------###### \
+###---------------#########---------------#########---------------###### \
+#####################---#####################---#####################--- \
+------------------------------------------------------------------------
+%
+Unicode: [0635];[feb9];[feba];[febc];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------############------------############------------############ \
+###------######------######------######------######------######------### \
+###------###---------######------###---------######------###---------### \
+###------##################------##################------############### \
+############------------############------------############------------ \
+---######------------------######------------------######---------------
+%
+Unicode: [063a];[fecd];[fece];[fed0];
+Bitmap: \
+---######------------------######------------------######--------------- \
+------------#########---------------#########---------------#########--- \
+---------######------------------######------------------######--------- \
+---------######------------------######------------------######--------- \
+------##################------##################------################## \
+---######------------###---######------------###---######------------### \
+---#########---------------#########---------------#########------------ \
+------###############---------###############---------###############---
+%
+Unicode: [0649];[feef];[fef0];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------#########---------------#########---------------#########--- \
+######---######---############---######---############---######---###### \
+######---######------#########---######------#########---######------### \
+######------######---#########------######---#########------######---### \
+######------######------######------######------######------######------ \
+---###############---------###############---------###############------
+%
+Unicode: [0632];[feaf];[feb0];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------######------------------######------------------###### \
+------------------------------------------------------------------------ \
+---------------######------------------######------------------######--- \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+---------------######------------------######------------------######--- \
+---###############---------###############---------###############------
+%
+Unicode: [feb7];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+---###------###------###---###------###------###---###------###------### \
+######---######---############---######---############---######---###### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [062f];[fea9];[feaa];[0631];[fead];[feae];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---------------######------------------######------------------######--- \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+---------------######------------------######------------------######--- \
+---###############---------###############---------###############------
+%
+Unicode: [0630];[feab];[feac];
+Bitmap: \
+------######------------------######------------------######------------ \
+------------------------------------------------------------------------ \
+------------######------------------######------------------######------ \
+---------------######------------------######------------------######--- \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [fef3];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------######---######---------######---######---------######---######---
+%
+Unicode: [fe9b];
+Bitmap: \
+---------######------------------######------------------######--------- \
+---######------######------######------######------######------######--- \
+------------------------------------------------------------------------ \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [fe91];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+######################################################################## \
+------------------------------------------------------------------------ \
+---------------######------------------######------------------######---
+%
+Unicode: [fedf];
+Bitmap: \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0627];[fe8d];[fe8e];
+Bitmap: \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [feeb];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------###---------------------###---------------------###------------ \
+------###############---------###############---------###############--- \
+------###------#########------###------#########------###------######### \
+------#########------###------#########------###------#########------### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [fe97];
+Bitmap: \
+------------------------------------------------------------------------ \
+---######---######---------######---######---------######---######------ \
+------------------------------------------------------------------------ \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [fee7];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------######------------------######------------------######------ \
+------------------------------------------------------------------------ \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [fee3];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---------------#########---------------#########---------------######### \
+------------######---###------------######---###------------######---### \
+##################---#####################---#####################---### \
+---------------#########---------------#########---------------######### \
+------------------------------------------------------------------------
+%
+Unicode: [fe9f];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---############------------############------------############--------- \
+---###------######---------###------######---------###------######------ \
+---------------######------------------######------------------######--- \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------######------------------######------------------######------
+%
+Unicode: [fef7];[f3f8];
+Bitmap: \
+------------------######------------------######------------------###### \
+------###---------######------###---------######------###---------###### \
+------######------######------######------######------######------###### \
+---------######---######---------######---######---------######---###### \
+------------###---######------------###---######------------###---###### \
+------------#########---------------#########---------------#########--- \
+---###############---------###############---------###############------ \
+------------------------------------------------------------------------
+%
+Unicode: [fea7];
+Bitmap: \
+------######------------------######------------------######------------ \
+------------------------------------------------------------------------ \
+---############------------############------------############--------- \
+---###------######---------###------######---------###------######------ \
+---------------######------------------######------------------######--- \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [fea3];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---############------------############------------############--------- \
+---###------######---------###------######---------###------######------ \
+---------------######------------------######------------------######--- \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [febf];
+Bitmap: \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+------------############------------############------------############ \
+---###---######------###---###---######------###---###---######------### \
+############---------###############---------###############---------### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [fed7];
+Bitmap: \
+---######---######---------######---######---------######---######------ \
+------------------------------------------------------------------------ \
+---------###############---------###############---------############### \
+---------######------###---------######------###---------######------### \
+------------############------------############------------############ \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [feb3];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---###------###------###---###------###------###---###------###------### \
+######---######---############---######---############---######---###### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [fed3];
+Bitmap: \
+------######------------------######------------------######------------ \
+------------------------------------------------------------------------ \
+------------############------------############------------############ \
+------------######---###------------######---###------------######---### \
+---------------#########---------------#########---------------######### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [fecb];
+Bitmap: \
+------------------------------------------------------------------------ \
+---------#########---------------#########---------------#########------ \
+------###############---------###############---------###############--- \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [fedb];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+---------#########---------------#########---------------#########------ \
+---------------######------------------######------------------######--- \
+------------------######------------------######------------------###### \
+------------------######------------------######------------------###### \
+------###############---------###############---------###############--- \
+------------------------------------------------------------------------
+%
+Unicode: [febb];
+Bitmap: \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------ \
+------------############------------############------------############ \
+---###---######------###---###---######------###---###---######------### \
+############---------###############---------###############---------### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0637];[fec1];[fec2];[fec4];[fec3];
+Bitmap: \
+---######------------------######------------------######--------------- \
+---######------------------######------------------######--------------- \
+---######---############---######---############---######---############ \
+---############------###---############------###---############------### \
+---#########---------###---#########---------###---#########---------### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [fecf];
+Bitmap: \
+---######------------------######------------------######--------------- \
+---------#########---------------#########---------------#########------ \
+------###############---------###############---------###############--- \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [0638];[fec5];[fec6];[fec8];[fec7];
+Bitmap: \
+---######---######---------######---######---------######---######------ \
+---######------------------######------------------######--------------- \
+---######---############---######---############---######---############ \
+---############------###---############------###---############------### \
+---#########---------###---#########---------###---#########---------### \
+######################################################################## \
+------------------------------------------------------------------------ \
+------------------------------------------------------------------------
+%
+Unicode: [061f];
+Bitmap: \
+------------------------------------------------------------------------ \
+------############------------############------------############------ \
+---######------######------######------######------######------######--- \
+------######------------------######------------------######------------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------ \
+---------######------------------######------------------######--------- \
+------------------------------------------------------------------------
+%
+// dotted-box (no such glyph)
+Unicode: [0000];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---######---#########--- \
+ ---######---#########--- \
+ ---######---#########--- \
+ ---###------------------ \
+ ---###------------------ \
+ ---###------------------ \
+ ------------------###--- \
+ ------------------###--- \
+ ------------------###--- \
+ ---###------------------ \
+ ---###------------------ \
+ ---###------------------ \
+ ------------------###--- \
+ ------------------###--- \
+ ------------------###--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// backtick
+Unicode: [0060];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// curlies
+Unicode: [007b];
+Bitmap: \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+Unicode: [007d];
+Bitmap: \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// tilde
+Unicode: [007e];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---#########------###### \
+ ---#########------###### \
+ ---#########------###### \
+ ######---######---###### \
+ ######---######---###### \
+ ######---######---###### \
+ ######------#########--- \
+ ######------#########--- \
+ ######------#########--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// euro
+Unicode: [20ac];
+Bitmap: \
+ ---------############--- \
+ ---------############--- \
+ ---------############--- \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---###############------ \
+ ---###############------ \
+ ---###############------ \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---###############------ \
+ ---###############------ \
+ ---###############------ \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---------############--- \
+ ---------############--- \
+ ---------############--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// spanish left-quote
+Unicode: [00ab];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ######------######------ \
+ ######------######------ \
+ ######------######------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// spanish right-quote
+Unicode: [00bb];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ######------######------ \
+ ######------######------ \
+ ######------######------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ######------######------ \
+ ######------######------ \
+ ######------######------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// spanish inverted question mark
+Unicode: [00bf];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// copyright
+Unicode: [00a9];
+Bitmap: \
+ ---###############------ \
+ ---###############------ \
+ ---###############------ \
+ ###---------------###--- \
+ ###---------------###--- \
+ ###---------------###--- \
+ ###------######---###--- \
+ ###------######---###--- \
+ ###------######---###--- \
+ ###---###---------###--- \
+ ###---###---------###--- \
+ ###---###---------###--- \
+ ###------######---###--- \
+ ###------######---###--- \
+ ###------######---###--- \
+ ###---------------###--- \
+ ###---------------###--- \
+ ###---------------###--- \
+ ---###############------ \
+ ---###############------ \
+ ---###############------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// registered
+Unicode: [00ae];
+Bitmap: \
+ ---###############------ \
+ ---###############------ \
+ ---###############------ \
+ ###---------------###--- \
+ ###---------------###--- \
+ ###---------------###--- \
+ ###---######------###--- \
+ ###---######------###--- \
+ ###---######------###--- \
+ ###---###---###---###--- \
+ ###---###---###---###--- \
+ ###---###---###---###--- \
+ ###---######------###--- \
+ ###---######------###--- \
+ ###---######------###--- \
+ ###---###---###---###--- \
+ ###---###---###---###--- \
+ ###---###---###---###--- \
+ ---###############------ \
+ ---###############------ \
+ ---###############------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// degrees
+Unicode: [00b0];[00ba];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------###------###------ \
+ ------###------###------ \
+ ------###------###------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// cents
+Unicode: [00a2];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------###############--- \
+ ------###############--- \
+ ------###############--- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ------###############--- \
+ ------###############--- \
+ ------###############--- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// "currency sign"
+// FIXME: not bold enough
+Unicode: [00a4];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---###------------###--- \
+ ---###------------###--- \
+ ---###------------###--- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------###------###------ \
+ ------###------###------ \
+ ------###------###------ \
+ ------###------###------ \
+ ------###------###------ \
+ ------###------###------ \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---###------------###--- \
+ ---###------------###--- \
+ ---###------------###--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// yen
+Unicode: [00a5];
+Bitmap: \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// broken bar
+Unicode: [00a6];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// section sign
+// FIXME: not bold enough
+Unicode: [00a7];
+Bitmap: \
+ ---------#########------ \
+ ---------#########------ \
+ ---------#########------ \
+ ------###--------------- \
+ ------###--------------- \
+ ------###--------------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------###------###------ \
+ ------###------###------ \
+ ------###------###------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------------###------ \
+ ---------------###------ \
+ ---------------###------ \
+ ------#########--------- \
+ ------#########--------- \
+ ------#########--------- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// diaresis (cha, cha, cha!)
+Unicode: [00a8];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// feminine ordinal (superscript a)
+Unicode: [00aa];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------#########--- \
+ ------------#########--- \
+ ------------#########--- \
+ ------######---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ---------############--- \
+ ---------############--- \
+ ---------############--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// "not" sign
+Unicode: [00ac];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---------------######--- \
+ ---------------######--- \
+ ---------------######--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// macron
+Unicode: [00af];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// plus-minus
+Unicode: [00b1];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// superscript 2
+// FIXME: not bold enough
+Unicode: [00b2];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---###------###--------- \
+ ---###------###--------- \
+ ---###------###--------- \
+ ---------###------------ \
+ ---------###------------ \
+ ---------###------------ \
+ ------###--------------- \
+ ------###--------------- \
+ ------###--------------- \
+ ---############--------- \
+ ---############--------- \
+ ---############--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// FIXME: not bold enough
+// superscript 3
+Unicode: [00b3];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---###------###--------- \
+ ---###------###--------- \
+ ---###------###--------- \
+ ---------###------------ \
+ ---------###------------ \
+ ---------###------------ \
+ ---###------###--------- \
+ ---###------###--------- \
+ ---###------###--------- \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// acute
+Unicode: [00b4];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// mu
+Unicode: [00b5];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------###############--- \
+ ------###############--- \
+ ------###############--- \
+ ---------------######--- \
+ ---------------######--- \
+ ---------------######--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// paragraph
+Unicode: [00b6];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------######---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ---------###---######--- \
+ ---------###---######--- \
+ ---------###---######--- \
+ ---------###---######--- \
+ ---------###---######--- \
+ ---------###---######--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// middle dot
+Unicode: [00b7];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// superscript 1
+Unicode: [00b9];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------#########--------- \
+ ------#########--------- \
+ ------#########--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+// FIXME: MISSING fractions, 00bc/00bd/00bc, ¼ ½ ¾, hard to do in 8x8
+%
+// A with grave
+Unicode: [00c0];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// A with acute
+Unicode: [00c1];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// A with circumflex
+Unicode: [00c2];
+Bitmap: \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---###------------###--- \
+ ---###------------###--- \
+ ---###------------###--- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// A with tilde
+Unicode: [00c3];
+Bitmap: \
+ ------######---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ---######---######------ \
+ ---######---######------ \
+ ---######---######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// A with ring
+Unicode: [00c5];
+Bitmap: \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------###------###------ \
+ ------###------###------ \
+ ------###------###------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// AE ligature
+Unicode: [00c6];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------###############--- \
+ ------###############--- \
+ ------###############--- \
+ ---############--------- \
+ ---############--------- \
+ ---############--------- \
+ ######---######--------- \
+ ######---######--------- \
+ ######---######--------- \
+ #####################--- \
+ #####################--- \
+ #####################--- \
+ ######---######--------- \
+ ######---######--------- \
+ ######---######--------- \
+ ######---############--- \
+ ######---############--- \
+ ######---############--- \
+ ------------------------
+ ------------------------
+ ------------------------
+// FIXME: this is hideous!
+%
+// C with cedilla
+Unicode: [00c7];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------######------------
+ ------######------------
+ ------######------------
+%
+// E with circumflex
+Unicode: [00ca];
+Bitmap: \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---###------------###--- \
+ ---###------------###--- \
+ ---###------------###--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---###############------ \
+ ---###############------ \
+ ---###############------ \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------
+ ------------------------
+ ------------------------
+// FIXME: ugly!
+%
+// E with umlaut
+Unicode: [00cb];
+Bitmap: \
+ ------######---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---###############------ \
+ ---###############------ \
+ ---###############------ \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// I with grave
+Unicode: [00cc];
+Bitmap: \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// I with acute
+Unicode: [00cd];
+Bitmap: \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// I with circumflex
+Unicode: [00ce];
+Bitmap: \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---###------------###--- \
+ ---###------------###--- \
+ ---###------------###--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------
+ ------------------------
+ ------------------------
+// FIXME: ugly!
+%
+// I with umlaut
+Unicode: [00cf];
+Bitmap: \
+ ------######---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// capital eth
+Unicode: [00d0];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---############--------- \
+ ---############--------- \
+ ---############--------- \
+ ---######---######------ \
+ ---######---######------ \
+ ---######---######------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ############---######--- \
+ ############---######--- \
+ ############---######--- \
+ ---######---######------ \
+ ---######---######------ \
+ ---######---######------ \
+ ---############--------- \
+ ---############--------- \
+ ---############--------- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// O with grave
+Unicode: [00d2];
+Bitmap: \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---###---###---######--- \
+ ---###---###---######--- \
+ ---###---###---######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------------------
+ ------------------------
+ ------------------------
+// FIXME: MISSING Ô Õ
+%
+// multiplication
+Unicode: [00d7];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+// FIXME: MISSING Ø
+%
+// U with grave
+Unicode: [00d9];
+Bitmap: \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// U with acute
+Unicode: [00da];
+Bitmap: \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------
+ ------------------------
+ ------------------------
+// FIXME: MISSING Û
+%
+// Y with acute
+Unicode: [00dd];
+Bitmap: \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// capital thorn
+Unicode: [00de];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---###############------ \
+ ---###############------ \
+ ---###############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---###############------ \
+ ---###############------ \
+ ---###############------ \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// a with circumflex
+Unicode: [00e2];
+Bitmap: \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---###------------###--- \
+ ---###------------###--- \
+ ---###------------###--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------#########--- \
+ ------------#########--- \
+ ------------#########--- \
+ ------######---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ---------############--- \
+ ---------############--- \
+ ---------############--- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// a with tilde
+Unicode: [00e3];
+Bitmap: \
+ ------######---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ---######---######------ \
+ ---######---######------ \
+ ---######---######------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------#########--- \
+ ------------#########--- \
+ ------------#########--- \
+ ------######---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ---------############---
+ ---------############---
+ ---------############---
+// FIXME: touches bottom
+%
+// ae ligature
+Unicode: [00e6];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---#########---######--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ---------######---###### \
+ ---------######---###### \
+ ---------######---###### \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ######---######--------- \
+ ######---######--------- \
+ ######---######--------- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------
+ ------------------------
+ ------------------------
+// FIXME: fugly
+%
+// e with umlaut
+Unicode: [00eb];
+Bitmap: \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// i with acute
+Unicode: [00ed];
+Bitmap: \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------#########--------- \
+ ------#########--------- \
+ ------#########--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// lowercase eth
+Unicode: [00f0];
+Bitmap: \
+ ---######---###--------- \
+ ---######---###--------- \
+ ---######---###--------- \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---###---######--------- \
+ ---###---######--------- \
+ ---###---######--------- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// o with tilde
+Unicode: [00f5];
+Bitmap: \
+ ------######---######--- \
+ ------######---######--- \
+ ------######---######--- \
+ ---######---######------ \
+ ---######---######------ \
+ ---######---######------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// division
+Unicode: [00f7];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+// FIXME: MISSING ø
+%
+// y with acute
+Unicode: [00fd];
+Bitmap: \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------###############--- \
+ ------###############--- \
+ ------###############--- \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---############---------
+ ---############---------
+ ---############---------
+%
+// lowercase thorn
+Unicode: [00fe];
+Bitmap: \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---############--------- \
+ ---############--------- \
+ ---############--------- \
+ ---######---######------ \
+ ---######---######------ \
+ ---######---######------ \
+ ---############--------- \
+ ---############--------- \
+ ---############--------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ---######--------------- \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// y with umlaut
+Unicode: [00ff];
+Bitmap: \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------###############--- \
+ ------###############--- \
+ ------###############--- \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---############---------
+ ---############---------
+ ---############---------
+%
+// left single curly quote
+Unicode: [2018];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// right single curly quote
+Unicode: [2019];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// left double curly quote
+Unicode: [201c];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ------######------###### \
+ ------######------###### \
+ ------######------###### \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// right double curly quote
+Unicode: [201d];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ######------######------ \
+ ######------######------ \
+ ######------######------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// spanish left single quote
+Unicode: [2039];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------######------------ \
+ ------######------------ \
+ ------######------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// spanish right single quote
+Unicode: [203a];
+Bitmap: \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------######------ \
+ ------------######------ \
+ ------------######------ \
+ ---------######--------- \
+ ---------######--------- \
+ ---------######--------- \
+ ------------------------ \
+ ------------------------ \
+ ------------------------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+// replacement character for missing glyphs
+Unicode: [fffd];
+Bitmap: \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ---######------######--- \
+ ---######------######--- \
+ ---######------######--- \
+ ---###---######---###--- \
+ ---###---######---###--- \
+ ---###---######---###--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ---##################--- \
+ ---##################--- \
+ ---##################--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ---#########---######--- \
+ ------############------ \
+ ------############------ \
+ ------############------ \
+ ------------------------
+ ------------------------
+ ------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
diff --git a/fonts/fauxtari-8.bdf b/fonts/fauxtari-8.bdf
new file mode 100644
index 0000000..f54470d
--- /dev/null
+++ b/fonts/fauxtari-8.bdf
@@ -0,0 +1,6461 @@
+STARTFONT 2.1
+FONT -BW-Fauxtari Fixed Mono-Medium-R-Normal--8-80-75-75-C-80-iso10646-1
+SIZE 8 75 75
+FONTBOUNDINGBOX 8 8 0 -2
+STARTPROPERTIES 18
+FOUNDRY "BW"
+FAMILY_NAME "Fauxtari Fixed Mono"
+FACE_NAME "Fauxtari 8"
+WEIGHT_NAME "Medium"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+PIXEL_SIZE 8
+POINT_SIZE 80
+RESOLUTION_X 75
+RESOLUTION_Y 75
+SPACING "C"
+AVERAGE_WIDTH 80
+CHARSET_REGISTRY "iso10646"
+CHARSET_ENCODING "1"
+FONT_DESCENT 2
+FONT_ASCENT 6
+DEFAULT_CHAR 0
+ENDPROPERTIES
+CHARS 429
+STARTCHAR C0000
+ENCODING 0
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+6e
+40
+02
+40
+02
+76
+00
+ENDCHAR
+STARTCHAR C0001
+ENCODING 32
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0002
+ENCODING 33
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+18
+18
+18
+00
+18
+00
+ENDCHAR
+STARTCHAR C0003
+ENCODING 34
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+66
+66
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0004
+ENCODING 35
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+ff
+66
+66
+ff
+66
+00
+ENDCHAR
+STARTCHAR C0005
+ENCODING 36
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+3e
+60
+3c
+06
+7c
+18
+00
+ENDCHAR
+STARTCHAR C0006
+ENCODING 37
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+6c
+18
+30
+66
+46
+00
+ENDCHAR
+STARTCHAR C0007
+ENCODING 38
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+1c
+36
+1c
+38
+6f
+66
+3b
+00
+ENDCHAR
+STARTCHAR C0008
+ENCODING 39
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+18
+18
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0009
+ENCODING 40
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0e
+1c
+18
+18
+1c
+0e
+00
+ENDCHAR
+STARTCHAR C000a
+ENCODING 41
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+70
+38
+18
+18
+38
+70
+00
+ENDCHAR
+STARTCHAR C000b
+ENCODING 42
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+3c
+ff
+3c
+66
+00
+00
+ENDCHAR
+STARTCHAR C000c
+ENCODING 43
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+18
+7e
+18
+18
+00
+00
+ENDCHAR
+STARTCHAR C000d
+ENCODING 44
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+00
+00
+18
+18
+30
+ENDCHAR
+STARTCHAR C000e
+ENCODING 45
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+7e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C000f
+ENCODING 46
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+00
+00
+18
+18
+00
+ENDCHAR
+STARTCHAR C0010
+ENCODING 47
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+06
+0c
+18
+30
+60
+40
+00
+ENDCHAR
+STARTCHAR C0011
+ENCODING 48
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+6e
+76
+66
+3c
+00
+ENDCHAR
+STARTCHAR C0012
+ENCODING 49
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+38
+18
+18
+18
+7e
+00
+ENDCHAR
+STARTCHAR C0013
+ENCODING 50
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+0c
+18
+30
+7e
+00
+ENDCHAR
+STARTCHAR C0014
+ENCODING 51
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+0c
+18
+0c
+66
+3c
+00
+ENDCHAR
+STARTCHAR C0015
+ENCODING 52
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0c
+1c
+3c
+6c
+7e
+0c
+00
+ENDCHAR
+STARTCHAR C0016
+ENCODING 53
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+60
+7c
+06
+66
+3c
+00
+ENDCHAR
+STARTCHAR C0017
+ENCODING 54
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+60
+7c
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C0018
+ENCODING 55
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+06
+0c
+18
+30
+30
+00
+ENDCHAR
+STARTCHAR C0019
+ENCODING 56
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+3c
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C001a
+ENCODING 57
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+3e
+06
+0c
+38
+00
+ENDCHAR
+STARTCHAR C001b
+ENCODING 58
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+18
+18
+00
+18
+18
+00
+ENDCHAR
+STARTCHAR C001c
+ENCODING 59
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+18
+18
+00
+18
+18
+30
+ENDCHAR
+STARTCHAR C001d
+ENCODING 60
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+06
+0c
+18
+30
+18
+0c
+06
+00
+ENDCHAR
+STARTCHAR C001e
+ENCODING 61
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+7e
+00
+00
+7e
+00
+00
+ENDCHAR
+STARTCHAR C001f
+ENCODING 62
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+30
+18
+0c
+18
+30
+60
+00
+ENDCHAR
+STARTCHAR C0020
+ENCODING 63
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+0c
+18
+00
+18
+00
+ENDCHAR
+STARTCHAR C0021
+ENCODING 64
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+6e
+6e
+60
+3e
+00
+ENDCHAR
+STARTCHAR C0022
+ENCODING 65
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+3c
+66
+66
+7e
+66
+00
+ENDCHAR
+STARTCHAR C0023
+ENCODING 66
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7c
+66
+7c
+66
+66
+7c
+00
+ENDCHAR
+STARTCHAR C0024
+ENCODING 67
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+60
+60
+66
+3c
+00
+ENDCHAR
+STARTCHAR C0025
+ENCODING 68
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+6c
+66
+66
+6c
+78
+00
+ENDCHAR
+STARTCHAR C0026
+ENCODING 69
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+60
+7c
+60
+60
+7e
+00
+ENDCHAR
+STARTCHAR C0027
+ENCODING 70
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+60
+7c
+60
+60
+60
+00
+ENDCHAR
+STARTCHAR C0028
+ENCODING 71
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3e
+60
+60
+6e
+66
+3e
+00
+ENDCHAR
+STARTCHAR C0029
+ENCODING 72
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+66
+7e
+66
+66
+66
+00
+ENDCHAR
+STARTCHAR C002a
+ENCODING 73
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+18
+18
+18
+18
+7e
+00
+ENDCHAR
+STARTCHAR C002b
+ENCODING 74
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+06
+06
+06
+06
+66
+3c
+00
+ENDCHAR
+STARTCHAR C002c
+ENCODING 75
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+6c
+78
+78
+6c
+66
+00
+ENDCHAR
+STARTCHAR C002d
+ENCODING 76
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+60
+60
+60
+60
+60
+7e
+00
+ENDCHAR
+STARTCHAR C002e
+ENCODING 77
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+63
+77
+7f
+6b
+63
+63
+00
+ENDCHAR
+STARTCHAR C002f
+ENCODING 78
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+76
+7e
+7e
+6e
+66
+00
+ENDCHAR
+STARTCHAR C0030
+ENCODING 79
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+66
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C0031
+ENCODING 80
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7c
+66
+66
+7c
+60
+60
+00
+ENDCHAR
+STARTCHAR C0032
+ENCODING 81
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+66
+66
+6c
+36
+00
+ENDCHAR
+STARTCHAR C0033
+ENCODING 82
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7c
+66
+66
+7c
+6c
+66
+00
+ENDCHAR
+STARTCHAR C0034
+ENCODING 83
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+60
+3c
+06
+06
+3c
+00
+ENDCHAR
+STARTCHAR C0035
+ENCODING 84
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+18
+18
+18
+18
+18
+00
+ENDCHAR
+STARTCHAR C0036
+ENCODING 85
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+66
+66
+66
+66
+7e
+00
+ENDCHAR
+STARTCHAR C0037
+ENCODING 86
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+66
+66
+66
+3c
+18
+00
+ENDCHAR
+STARTCHAR C0038
+ENCODING 87
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+63
+63
+6b
+7f
+77
+63
+00
+ENDCHAR
+STARTCHAR C0039
+ENCODING 88
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+66
+3c
+3c
+66
+66
+00
+ENDCHAR
+STARTCHAR C003a
+ENCODING 89
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+66
+3c
+18
+18
+18
+00
+ENDCHAR
+STARTCHAR C003b
+ENCODING 90
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+0c
+18
+30
+60
+7e
+00
+ENDCHAR
+STARTCHAR C003c
+ENCODING 91
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+1e
+18
+18
+18
+18
+1e
+00
+ENDCHAR
+STARTCHAR C003d
+ENCODING 92
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+40
+60
+30
+18
+0c
+06
+00
+ENDCHAR
+STARTCHAR C003e
+ENCODING 93
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+18
+18
+18
+18
+78
+00
+ENDCHAR
+STARTCHAR C003f
+ENCODING 94
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+08
+1c
+36
+63
+00
+00
+00
+ENDCHAR
+STARTCHAR C0040
+ENCODING 95
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+ff
+00
+ENDCHAR
+STARTCHAR C0041
+ENCODING 96
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+30
+30
+18
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0042
+ENCODING 97
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3c
+06
+3e
+66
+3e
+00
+ENDCHAR
+STARTCHAR C0043
+ENCODING 98
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+60
+60
+7c
+66
+66
+7c
+00
+ENDCHAR
+STARTCHAR C0044
+ENCODING 99
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3c
+60
+60
+60
+3c
+00
+ENDCHAR
+STARTCHAR C0045
+ENCODING 100
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+06
+06
+3e
+66
+66
+3e
+00
+ENDCHAR
+STARTCHAR C0046
+ENCODING 101
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3c
+66
+7e
+60
+3c
+00
+ENDCHAR
+STARTCHAR C0047
+ENCODING 102
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0e
+18
+3e
+18
+18
+18
+00
+ENDCHAR
+STARTCHAR C0048
+ENCODING 103
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3e
+66
+66
+3e
+06
+7c
+ENDCHAR
+STARTCHAR C0049
+ENCODING 104
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+60
+60
+7c
+66
+66
+66
+00
+ENDCHAR
+STARTCHAR C004a
+ENCODING 105
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+00
+38
+18
+18
+3c
+00
+ENDCHAR
+STARTCHAR C004b
+ENCODING 106
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+06
+00
+06
+06
+06
+06
+3c
+ENDCHAR
+STARTCHAR C004c
+ENCODING 107
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+60
+60
+6c
+78
+6c
+66
+00
+ENDCHAR
+STARTCHAR C004d
+ENCODING 108
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+38
+18
+18
+18
+18
+3c
+00
+ENDCHAR
+STARTCHAR C004e
+ENCODING 109
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+66
+7f
+7f
+6b
+63
+00
+ENDCHAR
+STARTCHAR C004f
+ENCODING 110
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+7c
+66
+66
+66
+66
+00
+ENDCHAR
+STARTCHAR C0050
+ENCODING 111
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3c
+66
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C0051
+ENCODING 112
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+7c
+66
+66
+7c
+60
+60
+ENDCHAR
+STARTCHAR C0052
+ENCODING 113
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3e
+66
+66
+3e
+06
+06
+ENDCHAR
+STARTCHAR C0053
+ENCODING 114
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+7c
+66
+60
+60
+60
+00
+ENDCHAR
+STARTCHAR C0054
+ENCODING 115
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3e
+60
+3c
+06
+7c
+00
+ENDCHAR
+STARTCHAR C0055
+ENCODING 116
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+7e
+18
+18
+18
+0e
+00
+ENDCHAR
+STARTCHAR C0056
+ENCODING 117
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+66
+66
+66
+66
+3e
+00
+ENDCHAR
+STARTCHAR C0057
+ENCODING 118
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+66
+66
+66
+3c
+18
+00
+ENDCHAR
+STARTCHAR C0058
+ENCODING 119
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+63
+6b
+7f
+3e
+36
+00
+ENDCHAR
+STARTCHAR C0059
+ENCODING 120
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+66
+3c
+18
+3c
+66
+00
+ENDCHAR
+STARTCHAR C005a
+ENCODING 121
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+66
+66
+66
+3e
+0c
+78
+ENDCHAR
+STARTCHAR C005b
+ENCODING 122
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+7e
+0c
+18
+30
+7e
+00
+ENDCHAR
+STARTCHAR C005c
+ENCODING 123
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+18
+30
+18
+18
+0c
+00
+ENDCHAR
+STARTCHAR C005d
+ENCODING 124
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+18
+18
+18
+18
+18
+18
+18
+ENDCHAR
+STARTCHAR C005e
+ENCODING 125
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+18
+18
+0c
+18
+18
+30
+00
+ENDCHAR
+STARTCHAR C005f
+ENCODING 126
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+73
+db
+ce
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0060
+ENCODING 160
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0061
+ENCODING 161
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+00
+18
+18
+18
+18
+18
+00
+ENDCHAR
+STARTCHAR C0062
+ENCODING 162
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+3e
+60
+60
+3e
+18
+00
+ENDCHAR
+STARTCHAR C0063
+ENCODING 163
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+1c
+30
+30
+78
+30
+30
+7e
+00
+ENDCHAR
+STARTCHAR C0064
+ENCODING 164
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+42
+3c
+24
+24
+3c
+42
+00
+ENDCHAR
+STARTCHAR C0065
+ENCODING 165
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+66
+66
+18
+7e
+18
+7e
+18
+00
+ENDCHAR
+STARTCHAR C0066
+ENCODING 166
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+18
+00
+18
+18
+18
+00
+ENDCHAR
+STARTCHAR C0067
+ENCODING 167
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+1c
+20
+18
+24
+18
+04
+38
+00
+ENDCHAR
+STARTCHAR C0068
+ENCODING 168
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+66
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0069
+ENCODING 169
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+7c
+82
+9a
+a2
+9a
+82
+7c
+00
+ENDCHAR
+STARTCHAR C006a
+ENCODING 170
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+0e
+36
+1e
+00
+00
+00
+ENDCHAR
+STARTCHAR C006b
+ENCODING 171
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+66
+cc
+66
+00
+00
+ENDCHAR
+STARTCHAR C006c
+ENCODING 172
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+7e
+06
+00
+00
+00
+ENDCHAR
+STARTCHAR C006d
+ENCODING 173
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+7e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C006e
+ENCODING 174
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+7c
+82
+b2
+aa
+b2
+aa
+7c
+00
+ENDCHAR
+STARTCHAR C006f
+ENCODING 175
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0070
+ENCODING 176
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+24
+18
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0071
+ENCODING 177
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+7e
+18
+00
+7e
+00
+00
+ENDCHAR
+STARTCHAR C0072
+ENCODING 178
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+30
+48
+10
+20
+78
+00
+00
+ENDCHAR
+STARTCHAR C0073
+ENCODING 179
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+30
+48
+10
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR C0074
+ENCODING 180
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0c
+18
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0075
+ENCODING 181
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+66
+66
+66
+3e
+06
+00
+ENDCHAR
+STARTCHAR C0076
+ENCODING 182
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+36
+76
+76
+36
+16
+16
+00
+ENDCHAR
+STARTCHAR C0077
+ENCODING 183
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+18
+18
+00
+00
+00
+ENDCHAR
+STARTCHAR C0078
+ENCODING 184
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+00
+00
+18
+18
+30
+ENDCHAR
+STARTCHAR C0079
+ENCODING 185
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+38
+18
+3c
+00
+00
+00
+ENDCHAR
+STARTCHAR C007a
+ENCODING 186
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+24
+18
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C007b
+ENCODING 187
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+cc
+66
+cc
+00
+00
+ENDCHAR
+STARTCHAR C007c
+ENCODING 191
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+00
+18
+0c
+66
+3c
+00
+ENDCHAR
+STARTCHAR C007d
+ENCODING 192
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+30
+18
+3c
+66
+7e
+66
+00
+ENDCHAR
+STARTCHAR C007e
+ENCODING 193
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0c
+18
+3c
+66
+7e
+66
+00
+ENDCHAR
+STARTCHAR C007f
+ENCODING 194
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+3c
+42
+18
+3c
+66
+7e
+66
+00
+ENDCHAR
+STARTCHAR C0080
+ENCODING 195
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+6c
+18
+3c
+66
+7e
+66
+00
+ENDCHAR
+STARTCHAR C0081
+ENCODING 196
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+66
+66
+18
+3c
+66
+7e
+66
+00
+ENDCHAR
+STARTCHAR C0082
+ENCODING 197
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+24
+18
+3c
+66
+7e
+66
+00
+ENDCHAR
+STARTCHAR C0083
+ENCODING 198
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3e
+78
+d8
+fe
+d8
+de
+00
+ENDCHAR
+STARTCHAR C0084
+ENCODING 199
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+60
+66
+3c
+18
+30
+ENDCHAR
+STARTCHAR C0085
+ENCODING 201
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+7e
+60
+7c
+60
+7e
+00
+ENDCHAR
+STARTCHAR C0086
+ENCODING 202
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+3c
+42
+7e
+60
+7c
+60
+7e
+00
+ENDCHAR
+STARTCHAR C0087
+ENCODING 203
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+00
+7e
+60
+7c
+60
+7e
+00
+ENDCHAR
+STARTCHAR C0088
+ENCODING 204
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+18
+7e
+18
+18
+18
+7e
+00
+ENDCHAR
+STARTCHAR C0089
+ENCODING 205
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+7e
+18
+18
+18
+7e
+00
+ENDCHAR
+STARTCHAR C008a
+ENCODING 206
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+3c
+42
+7e
+18
+18
+18
+7e
+00
+ENDCHAR
+STARTCHAR C008b
+ENCODING 207
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+00
+7e
+18
+18
+18
+7e
+00
+ENDCHAR
+STARTCHAR C008c
+ENCODING 208
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+6c
+66
+f6
+6c
+78
+00
+ENDCHAR
+STARTCHAR C008d
+ENCODING 209
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+6c
+00
+76
+76
+7e
+6e
+00
+ENDCHAR
+STARTCHAR C008e
+ENCODING 210
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+3c
+56
+66
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C008f
+ENCODING 211
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+06
+3c
+6a
+66
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C0090
+ENCODING 214
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+66
+00
+3c
+66
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C0091
+ENCODING 215
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+3c
+18
+3c
+66
+00
+00
+ENDCHAR
+STARTCHAR C0092
+ENCODING 217
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+18
+66
+66
+66
+66
+7e
+00
+ENDCHAR
+STARTCHAR C0093
+ENCODING 218
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+66
+66
+66
+66
+7e
+00
+ENDCHAR
+STARTCHAR C0094
+ENCODING 220
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+66
+00
+66
+66
+66
+66
+7e
+00
+ENDCHAR
+STARTCHAR C0095
+ENCODING 221
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+66
+66
+3c
+18
+18
+00
+ENDCHAR
+STARTCHAR C0096
+ENCODING 222
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+60
+7c
+66
+7c
+60
+60
+00
+ENDCHAR
+STARTCHAR C0097
+ENCODING 223
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+1c
+36
+3c
+36
+37
+3e
+60
+ENDCHAR
+STARTCHAR C0098
+ENCODING 224
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+18
+3c
+06
+3e
+66
+3e
+00
+ENDCHAR
+STARTCHAR C0099
+ENCODING 225
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+3c
+06
+3e
+66
+3e
+00
+ENDCHAR
+STARTCHAR C009a
+ENCODING 226
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+3c
+42
+00
+3c
+0e
+36
+1e
+00
+ENDCHAR
+STARTCHAR C009b
+ENCODING 227
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+6c
+00
+3c
+0e
+36
+1e
+00
+ENDCHAR
+STARTCHAR C009c
+ENCODING 228
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+00
+3c
+06
+3e
+66
+3e
+00
+ENDCHAR
+STARTCHAR C009d
+ENCODING 229
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+3c
+66
+1c
+06
+3e
+66
+3e
+00
+ENDCHAR
+STARTCHAR C009e
+ENCODING 230
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+76
+1b
+7e
+d8
+7e
+00
+ENDCHAR
+STARTCHAR C009f
+ENCODING 231
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3c
+60
+60
+3c
+18
+30
+ENDCHAR
+STARTCHAR C00a0
+ENCODING 232
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+18
+3c
+66
+7e
+60
+3c
+00
+ENDCHAR
+STARTCHAR C00a1
+ENCODING 233
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+3c
+66
+7e
+60
+3c
+00
+ENDCHAR
+STARTCHAR C00a2
+ENCODING 234
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+3c
+c3
+3c
+66
+7e
+60
+3c
+00
+ENDCHAR
+STARTCHAR C00a3
+ENCODING 235
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+66
+00
+3c
+66
+7e
+60
+3c
+00
+ENDCHAR
+STARTCHAR C00a4
+ENCODING 236
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+18
+00
+38
+18
+18
+3c
+00
+ENDCHAR
+STARTCHAR C00a5
+ENCODING 237
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+00
+38
+18
+18
+3c
+00
+ENDCHAR
+STARTCHAR C00a6
+ENCODING 238
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+3c
+66
+00
+38
+18
+18
+3c
+00
+ENDCHAR
+STARTCHAR C00a7
+ENCODING 239
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+00
+38
+18
+18
+3c
+00
+ENDCHAR
+STARTCHAR C00a8
+ENCODING 240
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+68
+30
+58
+3c
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C00a9
+ENCODING 241
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+6c
+00
+7c
+66
+66
+66
+00
+ENDCHAR
+STARTCHAR C00aa
+ENCODING 242
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+18
+00
+3c
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C00ab
+ENCODING 243
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+00
+3c
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C00ac
+ENCODING 244
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+3c
+66
+00
+3c
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C00ad
+ENCODING 245
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+6c
+00
+3c
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C00ae
+ENCODING 246
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+00
+3c
+66
+66
+3c
+00
+ENDCHAR
+STARTCHAR C00af
+ENCODING 247
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+00
+7e
+00
+18
+00
+00
+ENDCHAR
+STARTCHAR C00b0
+ENCODING 249
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+18
+00
+66
+66
+66
+3e
+00
+ENDCHAR
+STARTCHAR C00b1
+ENCODING 250
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+00
+66
+66
+66
+3e
+00
+ENDCHAR
+STARTCHAR C00b2
+ENCODING 251
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+3c
+66
+00
+66
+66
+66
+3e
+00
+ENDCHAR
+STARTCHAR C00b3
+ENCODING 252
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+00
+66
+66
+66
+3e
+00
+ENDCHAR
+STARTCHAR C00b4
+ENCODING 253
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+00
+66
+66
+3e
+0c
+78
+ENDCHAR
+STARTCHAR C00b5
+ENCODING 254
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+60
+78
+6c
+78
+60
+60
+00
+ENDCHAR
+STARTCHAR C00b6
+ENCODING 255
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+66
+00
+66
+66
+66
+3e
+0c
+78
+ENDCHAR
+STARTCHAR C00b7
+ENCODING 260
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+3c
+66
+66
+7e
+66
+03
+ENDCHAR
+STARTCHAR C00b8
+ENCODING 261
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3c
+06
+3e
+66
+3e
+03
+ENDCHAR
+STARTCHAR C00b9
+ENCODING 262
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+3c
+6e
+60
+60
+66
+3e
+00
+ENDCHAR
+STARTCHAR C00ba
+ENCODING 263
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+3c
+60
+60
+60
+3c
+00
+ENDCHAR
+STARTCHAR C00bb
+ENCODING 280
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+78
+60
+78
+60
+7e
+18
+1e
+00
+ENDCHAR
+STARTCHAR C00bc
+ENCODING 281
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3c
+66
+7e
+60
+3c
+06
+ENDCHAR
+STARTCHAR C00bd
+ENCODING 321
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+60
+60
+78
+70
+e0
+7e
+00
+ENDCHAR
+STARTCHAR C00be
+ENCODING 322
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+38
+18
+1c
+38
+18
+3c
+00
+ENDCHAR
+STARTCHAR C00bf
+ENCODING 323
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+5a
+66
+7e
+7e
+6e
+66
+00
+ENDCHAR
+STARTCHAR C00c0
+ENCODING 324
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+7c
+66
+66
+66
+66
+00
+ENDCHAR
+STARTCHAR C00c1
+ENCODING 346
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+3c
+60
+3c
+06
+06
+3c
+00
+ENDCHAR
+STARTCHAR C00c2
+ENCODING 347
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+3e
+60
+3c
+06
+7c
+00
+ENDCHAR
+STARTCHAR C00c3
+ENCODING 377
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+7e
+36
+0c
+18
+30
+7e
+00
+ENDCHAR
+STARTCHAR C00c4
+ENCODING 378
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+18
+7e
+0c
+18
+30
+7e
+00
+ENDCHAR
+STARTCHAR C00c5
+ENCODING 379
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+7e
+0c
+18
+30
+60
+7e
+00
+ENDCHAR
+STARTCHAR C00c6
+ENCODING 380
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+00
+7e
+0c
+18
+30
+7e
+00
+ENDCHAR
+STARTCHAR C00c7
+ENCODING 551
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+00
+3c
+06
+3e
+66
+3e
+00
+ENDCHAR
+STARTCHAR C00c8
+ENCODING 1488
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+c6
+f6
+de
+cc
+c6
+00
+00
+ENDCHAR
+STARTCHAR C00c9
+ENCODING 1489
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+f8
+1c
+0c
+0c
+fe
+00
+00
+ENDCHAR
+STARTCHAR C00ca
+ENCODING 1490
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+0c
+0c
+7c
+e6
+00
+00
+ENDCHAR
+STARTCHAR C00cb
+ENCODING 1491
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fe
+1c
+0c
+0c
+0c
+00
+00
+ENDCHAR
+STARTCHAR C00cc
+ENCODING 1492
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fc
+06
+46
+66
+66
+00
+00
+ENDCHAR
+STARTCHAR C00cd
+ENCODING 1493
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+1c
+0c
+0c
+0c
+00
+00
+ENDCHAR
+STARTCHAR C00ce
+ENCODING 1494
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fc
+70
+30
+30
+30
+00
+00
+ENDCHAR
+STARTCHAR C00cf
+ENCODING 1495
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fc
+66
+66
+66
+66
+00
+00
+ENDCHAR
+STARTCHAR C00d0
+ENCODING 1496
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+de
+d6
+c6
+c6
+fc
+00
+00
+ENDCHAR
+STARTCHAR C00d1
+ENCODING 1497
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7c
+1c
+0c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C00d2
+ENCODING 1498
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fc
+0e
+06
+06
+06
+06
+06
+ENDCHAR
+STARTCHAR C00d3
+ENCODING 1499
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fc
+06
+06
+0e
+fc
+00
+00
+ENDCHAR
+STARTCHAR C00d4
+ENCODING 1500
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+c0
+fc
+06
+06
+0e
+3c
+00
+00
+ENDCHAR
+STARTCHAR C00d5
+ENCODING 1501
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+66
+66
+66
+7e
+00
+00
+ENDCHAR
+STARTCHAR C00d6
+ENCODING 1502
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+dc
+76
+66
+66
+6e
+00
+00
+ENDCHAR
+STARTCHAR C00d7
+ENCODING 1503
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+1e
+0e
+06
+06
+06
+06
+06
+ENDCHAR
+STARTCHAR C00d8
+ENCODING 1504
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+1e
+06
+06
+0e
+7c
+00
+00
+ENDCHAR
+STARTCHAR C00d9
+ENCODING 1505
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fe
+66
+66
+6c
+78
+00
+00
+ENDCHAR
+STARTCHAR C00da
+ENCODING 1506
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+ee
+66
+36
+36
+fc
+00
+00
+ENDCHAR
+STARTCHAR C00db
+ENCODING 1507
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fc
+6e
+66
+06
+06
+06
+06
+ENDCHAR
+STARTCHAR C00dc
+ENCODING 1508
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fc
+66
+66
+0e
+fc
+00
+00
+ENDCHAR
+STARTCHAR C00dd
+ENCODING 1509
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+ce
+66
+6c
+78
+60
+60
+60
+ENDCHAR
+STARTCHAR C00de
+ENCODING 1510
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+c6
+6e
+38
+0c
+fe
+00
+00
+ENDCHAR
+STARTCHAR C00df
+ENCODING 1511
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fc
+0e
+c6
+cc
+d8
+c0
+c0
+ENDCHAR
+STARTCHAR C00e0
+ENCODING 1512
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fc
+0e
+06
+06
+06
+00
+00
+ENDCHAR
+STARTCHAR C00e1
+ENCODING 1513
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+92
+d2
+e6
+cc
+fc
+00
+00
+ENDCHAR
+STARTCHAR C00e2
+ENCODING 1514
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+fc
+6e
+66
+66
+e6
+00
+00
+ENDCHAR
+STARTCHAR C00e3
+ENCODING 1567
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+30
+18
+00
+18
+00
+ENDCHAR
+STARTCHAR C00e4
+ENCODING 1569
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+1c
+30
+1c
+38
+20
+00
+ENDCHAR
+STARTCHAR C00e5
+ENCODING 1570
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+18
+18
+18
+18
+18
+18
+18
+ENDCHAR
+STARTCHAR C00e6
+ENCODING 1572
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+60
+cf
+1b
+0f
+03
+06
+7c
+ENDCHAR
+STARTCHAR C00e7
+ENCODING 1575
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+03
+03
+03
+03
+03
+00
+00
+ENDCHAR
+STARTCHAR C00e8
+ENCODING 1576
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+c3
+c3
+7e
+00
+18
+ENDCHAR
+STARTCHAR C00e9
+ENCODING 1577
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+1b
+00
+0f
+1b
+1b
+1f
+00
+00
+ENDCHAR
+STARTCHAR C00ea
+ENCODING 1578
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+36
+00
+c3
+c3
+7e
+00
+00
+ENDCHAR
+STARTCHAR C00eb
+ENCODING 1579
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+66
+00
+c3
+c3
+7e
+00
+00
+ENDCHAR
+STARTCHAR C00ec
+ENCODING 1580
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+0c
+3e
+63
+60
+63
+38
+ENDCHAR
+STARTCHAR C00ed
+ENCODING 1581
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+0c
+3e
+63
+61
+60
+3c
+ENDCHAR
+STARTCHAR C00ee
+ENCODING 1582
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+78
+0c
+3e
+63
+61
+60
+3c
+ENDCHAR
+STARTCHAR C00ef
+ENCODING 1583
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+06
+03
+03
+06
+7c
+ENDCHAR
+STARTCHAR C00f0
+ENCODING 1584
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+00
+0c
+06
+03
+03
+3e
+00
+ENDCHAR
+STARTCHAR C00f1
+ENCODING 1585
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+06
+03
+03
+06
+7c
+ENDCHAR
+STARTCHAR C00f2
+ENCODING 1586
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+03
+00
+06
+03
+03
+06
+7c
+ENDCHAR
+STARTCHAR C00f3
+ENCODING 1587
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+95
+95
+9f
+9e
+f0
+60
+ENDCHAR
+STARTCHAR C00f4
+ENCODING 1588
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+33
+00
+95
+95
+9f
+f0
+60
+ENDCHAR
+STARTCHAR C00f5
+ENCODING 1589
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+99
+91
+9f
+f0
+60
+ENDCHAR
+STARTCHAR C00f6
+ENCODING 1590
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+00
+0f
+99
+91
+9f
+f8
+70
+ENDCHAR
+STARTCHAR C00f7
+ENCODING 1591
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+60
+6f
+79
+71
+ff
+00
+00
+ENDCHAR
+STARTCHAR C00f8
+ENCODING 1592
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+6c
+60
+6f
+79
+71
+ff
+00
+00
+ENDCHAR
+STARTCHAR C00f9
+ENCODING 1593
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0e
+18
+18
+3f
+61
+70
+3e
+ENDCHAR
+STARTCHAR C00fa
+ENCODING 1594
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+0e
+18
+18
+3f
+61
+70
+3e
+ENDCHAR
+STARTCHAR C00fb
+ENCODING 1601
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+30
+07
+cd
+c7
+ff
+00
+00
+ENDCHAR
+STARTCHAR C00fc
+ENCODING 1602
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+00
+07
+4d
+c7
+c3
+7e
+00
+ENDCHAR
+STARTCHAR C00fd
+ENCODING 1603
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+33
+23
+73
+03
+83
+fe
+00
+ENDCHAR
+STARTCHAR C00fe
+ENCODING 1604
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+03
+03
+03
+63
+63
+63
+3e
+ENDCHAR
+STARTCHAR C00ff
+ENCODING 1605
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+06
+1f
+3d
+67
+63
+60
+60
+ENDCHAR
+STARTCHAR C0100
+ENCODING 1606
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+00
+22
+63
+63
+3e
+00
+ENDCHAR
+STARTCHAR C0101
+ENCODING 1607
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+1b
+1b
+1f
+00
+00
+ENDCHAR
+STARTCHAR C0102
+ENCODING 1608
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+1b
+1f
+03
+06
+7c
+ENDCHAR
+STARTCHAR C0103
+ENCODING 1609
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0e
+db
+d9
+cd
+cc
+7c
+ENDCHAR
+STARTCHAR C0104
+ENCODING 1610
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0e
+9f
+99
+cd
+7d
+00
+36
+ENDCHAR
+STARTCHAR C0105
+ENCODING 1632
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+06
+0c
+18
+30
+60
+40
+00
+ENDCHAR
+STARTCHAR C0106
+ENCODING 1633
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+08
+1c
+3e
+1c
+08
+00
+ENDCHAR
+STARTCHAR C0107
+ENCODING 1634
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+18
+18
+18
+18
+18
+18
+ENDCHAR
+STARTCHAR C0108
+ENCODING 1635
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+3c
+66
+60
+30
+18
+0c
+06
+ENDCHAR
+STARTCHAR C0109
+ENCODING 1636
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+6b
+6b
+7f
+70
+30
+38
+18
+ENDCHAR
+STARTCHAR C010a
+ENCODING 1637
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+1e
+38
+70
+1c
+38
+70
+3e
+ENDCHAR
+STARTCHAR C010b
+ENCODING 1638
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+1c
+3e
+66
+66
+66
+7e
+3c
+ENDCHAR
+STARTCHAR C010c
+ENCODING 1639
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7c
+7c
+0c
+0c
+0c
+0c
+0c
+ENDCHAR
+STARTCHAR C010d
+ENCODING 1640
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+66
+66
+66
+3c
+3c
+18
+ENDCHAR
+STARTCHAR C010e
+ENCODING 1641
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+3c
+3c
+66
+66
+66
+66
+ENDCHAR
+STARTCHAR C010f
+ENCODING 8211
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+7e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0110
+ENCODING 8212
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+7e
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0111
+ENCODING 8216
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+30
+18
+0c
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0112
+ENCODING 8217
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0c
+18
+30
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0113
+ENCODING 8220
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+66
+33
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0114
+ENCODING 8221
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+66
+66
+cc
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0115
+ENCODING 8249
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+18
+30
+18
+00
+00
+ENDCHAR
+STARTCHAR C0116
+ENCODING 8250
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+18
+0c
+18
+00
+00
+ENDCHAR
+STARTCHAR C0117
+ENCODING 8364
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+1e
+30
+7c
+30
+7c
+30
+1e
+00
+ENDCHAR
+STARTCHAR C0118
+ENCODING 8592
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+30
+7e
+30
+18
+00
+00
+ENDCHAR
+STARTCHAR C0119
+ENCODING 8593
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+3c
+7e
+18
+18
+18
+00
+ENDCHAR
+STARTCHAR C011a
+ENCODING 8594
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+0c
+7e
+0c
+18
+00
+00
+ENDCHAR
+STARTCHAR C011b
+ENCODING 8595
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+18
+18
+7e
+3c
+18
+00
+ENDCHAR
+STARTCHAR C011c
+ENCODING 8624
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+7e
+78
+7c
+6e
+66
+06
+00
+ENDCHAR
+STARTCHAR C011d
+ENCODING 9243
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+78
+60
+78
+60
+7e
+18
+1e
+00
+ENDCHAR
+STARTCHAR C011e
+ENCODING 9473
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+ff
+ff
+00
+00
+00
+ENDCHAR
+STARTCHAR C011f
+ENCODING 9475
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+03
+03
+03
+03
+03
+03
+03
+ENDCHAR
+STARTCHAR C0120
+ENCODING 9487
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+1f
+1f
+18
+18
+18
+ENDCHAR
+STARTCHAR C0121
+ENCODING 9491
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+f8
+f8
+18
+18
+18
+ENDCHAR
+STARTCHAR C0122
+ENCODING 9495
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+18
+18
+1f
+1f
+00
+00
+00
+ENDCHAR
+STARTCHAR C0123
+ENCODING 9499
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+18
+18
+f8
+f8
+00
+00
+00
+ENDCHAR
+STARTCHAR C0124
+ENCODING 9507
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+18
+18
+1f
+1f
+18
+18
+18
+ENDCHAR
+STARTCHAR C0125
+ENCODING 9515
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+18
+18
+f8
+f8
+18
+18
+18
+ENDCHAR
+STARTCHAR C0126
+ENCODING 9523
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+ff
+ff
+18
+18
+18
+ENDCHAR
+STARTCHAR C0127
+ENCODING 9531
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+18
+18
+ff
+ff
+00
+00
+00
+ENDCHAR
+STARTCHAR C0128
+ENCODING 9547
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+18
+18
+ff
+ff
+18
+18
+18
+ENDCHAR
+STARTCHAR C0129
+ENCODING 9585
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+07
+0e
+1c
+38
+70
+e0
+c0
+ENDCHAR
+STARTCHAR C012a
+ENCODING 9586
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+c0
+e0
+70
+38
+1c
+0e
+07
+03
+ENDCHAR
+STARTCHAR C012b
+ENCODING 9601
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+ff
+ff
+ENDCHAR
+STARTCHAR C012c
+ENCODING 9604
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+00
+ff
+ff
+ff
+ff
+ENDCHAR
+STARTCHAR C012d
+ENCODING 9612
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+f0
+f0
+f0
+f0
+f0
+f0
+f0
+f0
+ENDCHAR
+STARTCHAR C012e
+ENCODING 9614
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+c0
+c0
+c0
+c0
+c0
+c0
+c0
+c0
+ENDCHAR
+STARTCHAR C012f
+ENCODING 9620
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+ff
+ff
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0130
+ENCODING 9622
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+00
+f0
+f0
+f0
+f0
+ENDCHAR
+STARTCHAR C0131
+ENCODING 9623
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+00
+0f
+0f
+0f
+0f
+ENDCHAR
+STARTCHAR C0132
+ENCODING 9624
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+f0
+f0
+f0
+f0
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0133
+ENCODING 9629
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0f
+0f
+0f
+0f
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR C0134
+ENCODING 9654
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+10
+18
+1c
+1e
+1c
+18
+10
+00
+ENDCHAR
+STARTCHAR C0135
+ENCODING 9664
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+08
+18
+38
+78
+38
+18
+08
+00
+ENDCHAR
+STARTCHAR C0136
+ENCODING 9670
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+3c
+7e
+7e
+3c
+18
+00
+ENDCHAR
+STARTCHAR C0137
+ENCODING 9679
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+3c
+7e
+7e
+7e
+3c
+00
+ENDCHAR
+STARTCHAR C0138
+ENCODING 9698
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+01
+03
+07
+0f
+1f
+3f
+7f
+ff
+ENDCHAR
+STARTCHAR C0139
+ENCODING 9699
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+80
+c0
+e0
+f0
+f8
+fc
+fe
+ff
+ENDCHAR
+STARTCHAR C013a
+ENCODING 9824
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+3c
+7e
+7e
+18
+3c
+00
+ENDCHAR
+STARTCHAR C013b
+ENCODING 9827
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+1c
+1c
+77
+77
+08
+1c
+00
+ENDCHAR
+STARTCHAR C013c
+ENCODING 9829
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+36
+7f
+7f
+3e
+1c
+08
+00
+ENDCHAR
+STARTCHAR C013d
+ENCODING 62456
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+23
+33
+1b
+0b
+0e
+7c
+00
+ENDCHAR
+STARTCHAR C013e
+ENCODING 65152
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+1c
+30
+1c
+38
+20
+00
+ENDCHAR
+STARTCHAR C013f
+ENCODING 65153
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+18
+18
+18
+18
+18
+18
+18
+ENDCHAR
+STARTCHAR C0140
+ENCODING 65154
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+18
+18
+18
+18
+18
+18
+18
+ENDCHAR
+STARTCHAR C0141
+ENCODING 65157
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+60
+cf
+1b
+0f
+03
+06
+7c
+ENDCHAR
+STARTCHAR C0142
+ENCODING 65158
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+60
+cf
+1b
+0f
+03
+06
+7c
+ENDCHAR
+STARTCHAR C0143
+ENCODING 65165
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+03
+03
+03
+03
+03
+00
+00
+ENDCHAR
+STARTCHAR C0144
+ENCODING 65166
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+03
+03
+03
+03
+03
+00
+00
+ENDCHAR
+STARTCHAR C0145
+ENCODING 65167
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+c3
+c3
+7e
+00
+18
+ENDCHAR
+STARTCHAR C0146
+ENCODING 65168
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+c3
+c3
+7e
+00
+18
+ENDCHAR
+STARTCHAR C0147
+ENCODING 65169
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+03
+03
+ff
+00
+06
+ENDCHAR
+STARTCHAR C0148
+ENCODING 65170
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+c3
+c3
+7e
+00
+18
+ENDCHAR
+STARTCHAR C0149
+ENCODING 65171
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+1b
+00
+0f
+1b
+1b
+1f
+00
+00
+ENDCHAR
+STARTCHAR C014a
+ENCODING 65172
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+1b
+00
+0f
+1b
+1b
+1f
+00
+00
+ENDCHAR
+STARTCHAR C014b
+ENCODING 65173
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+36
+00
+c3
+c3
+7e
+00
+00
+ENDCHAR
+STARTCHAR C014c
+ENCODING 65174
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+36
+00
+c3
+c3
+7e
+00
+00
+ENDCHAR
+STARTCHAR C014d
+ENCODING 65175
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+6c
+00
+03
+03
+ff
+00
+00
+ENDCHAR
+STARTCHAR C014e
+ENCODING 65176
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+36
+00
+c3
+c3
+7e
+00
+00
+ENDCHAR
+STARTCHAR C014f
+ENCODING 65177
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+66
+00
+c3
+c3
+7e
+00
+00
+ENDCHAR
+STARTCHAR C0150
+ENCODING 65178
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+66
+00
+c3
+c3
+7e
+00
+00
+ENDCHAR
+STARTCHAR C0151
+ENCODING 65179
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+66
+00
+03
+03
+ff
+00
+00
+ENDCHAR
+STARTCHAR C0152
+ENCODING 65180
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+66
+00
+c3
+c3
+7e
+00
+00
+ENDCHAR
+STARTCHAR C0153
+ENCODING 65181
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+0c
+3e
+63
+60
+63
+38
+ENDCHAR
+STARTCHAR C0154
+ENCODING 65182
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+0c
+3e
+63
+60
+63
+38
+ENDCHAR
+STARTCHAR C0155
+ENCODING 65183
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+78
+4c
+06
+ff
+00
+0c
+ENDCHAR
+STARTCHAR C0156
+ENCODING 65184
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+0c
+3e
+63
+60
+63
+38
+ENDCHAR
+STARTCHAR C0157
+ENCODING 65185
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+0c
+3e
+63
+61
+60
+3c
+ENDCHAR
+STARTCHAR C0158
+ENCODING 65186
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+0c
+3e
+63
+61
+60
+3c
+ENDCHAR
+STARTCHAR C0159
+ENCODING 65187
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+78
+4c
+06
+ff
+00
+00
+ENDCHAR
+STARTCHAR C015a
+ENCODING 65188
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+78
+0c
+3e
+63
+61
+60
+3c
+ENDCHAR
+STARTCHAR C015b
+ENCODING 65189
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+78
+0c
+3e
+63
+61
+60
+3c
+ENDCHAR
+STARTCHAR C015c
+ENCODING 65190
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+78
+0c
+3e
+63
+61
+60
+3c
+ENDCHAR
+STARTCHAR C015d
+ENCODING 65191
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+00
+78
+4c
+06
+ff
+00
+00
+ENDCHAR
+STARTCHAR C015e
+ENCODING 65192
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+78
+0c
+3e
+63
+61
+60
+3c
+ENDCHAR
+STARTCHAR C015f
+ENCODING 65193
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+06
+03
+03
+06
+7c
+ENDCHAR
+STARTCHAR C0160
+ENCODING 65194
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+06
+03
+03
+06
+7c
+ENDCHAR
+STARTCHAR C0161
+ENCODING 65195
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+00
+0c
+06
+03
+03
+3e
+00
+ENDCHAR
+STARTCHAR C0162
+ENCODING 65196
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+00
+0c
+06
+03
+03
+3e
+00
+ENDCHAR
+STARTCHAR C0163
+ENCODING 65197
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+06
+03
+03
+06
+7c
+ENDCHAR
+STARTCHAR C0164
+ENCODING 65198
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+06
+03
+03
+06
+7c
+ENDCHAR
+STARTCHAR C0165
+ENCODING 65199
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+03
+00
+06
+03
+03
+06
+7c
+ENDCHAR
+STARTCHAR C0166
+ENCODING 65200
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+03
+00
+06
+03
+03
+06
+7c
+ENDCHAR
+STARTCHAR C0167
+ENCODING 65201
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+95
+95
+9f
+9e
+f0
+60
+ENDCHAR
+STARTCHAR C0168
+ENCODING 65202
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+95
+95
+9f
+9e
+f0
+60
+ENDCHAR
+STARTCHAR C0169
+ENCODING 65203
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+49
+db
+ff
+00
+00
+ENDCHAR
+STARTCHAR C016a
+ENCODING 65204
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+95
+95
+9f
+9e
+f0
+60
+ENDCHAR
+STARTCHAR C016b
+ENCODING 65205
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+33
+00
+95
+95
+9f
+f0
+60
+ENDCHAR
+STARTCHAR C016c
+ENCODING 65206
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+33
+00
+95
+95
+9f
+f0
+60
+ENDCHAR
+STARTCHAR C016d
+ENCODING 65207
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+66
+00
+49
+db
+ff
+00
+00
+ENDCHAR
+STARTCHAR C016e
+ENCODING 65208
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+33
+00
+95
+95
+9f
+f0
+60
+ENDCHAR
+STARTCHAR C016f
+ENCODING 65209
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+99
+91
+9f
+f0
+60
+ENDCHAR
+STARTCHAR C0170
+ENCODING 65210
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+99
+91
+9f
+f0
+60
+ENDCHAR
+STARTCHAR C0171
+ENCODING 65211
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+59
+f1
+ff
+00
+00
+ENDCHAR
+STARTCHAR C0172
+ENCODING 65212
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+99
+91
+9f
+f0
+60
+ENDCHAR
+STARTCHAR C0173
+ENCODING 65213
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+00
+0f
+99
+91
+9f
+f8
+70
+ENDCHAR
+STARTCHAR C0174
+ENCODING 65214
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+00
+0f
+99
+91
+9f
+f8
+70
+ENDCHAR
+STARTCHAR C0175
+ENCODING 65215
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+18
+00
+0f
+59
+f1
+ff
+00
+00
+ENDCHAR
+STARTCHAR C0176
+ENCODING 65216
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+0c
+00
+0f
+99
+91
+9f
+f8
+70
+ENDCHAR
+STARTCHAR C0177
+ENCODING 65217
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+60
+6f
+79
+71
+ff
+00
+00
+ENDCHAR
+STARTCHAR C0178
+ENCODING 65218
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+60
+6f
+79
+71
+ff
+00
+00
+ENDCHAR
+STARTCHAR C0179
+ENCODING 65219
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+60
+6f
+79
+71
+ff
+00
+00
+ENDCHAR
+STARTCHAR C017a
+ENCODING 65220
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+60
+6f
+79
+71
+ff
+00
+00
+ENDCHAR
+STARTCHAR C017b
+ENCODING 65221
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+6c
+60
+6f
+79
+71
+ff
+00
+00
+ENDCHAR
+STARTCHAR C017c
+ENCODING 65222
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+6c
+60
+6f
+79
+71
+ff
+00
+00
+ENDCHAR
+STARTCHAR C017d
+ENCODING 65223
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+6c
+60
+6f
+79
+71
+ff
+00
+00
+ENDCHAR
+STARTCHAR C017e
+ENCODING 65224
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+6c
+60
+6f
+79
+71
+ff
+00
+00
+ENDCHAR
+STARTCHAR C017f
+ENCODING 65225
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0e
+18
+18
+3f
+61
+70
+3e
+ENDCHAR
+STARTCHAR C0180
+ENCODING 65226
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0e
+18
+18
+3f
+61
+70
+3e
+ENDCHAR
+STARTCHAR C0181
+ENCODING 65227
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+1c
+3e
+30
+18
+ff
+00
+00
+ENDCHAR
+STARTCHAR C0182
+ENCODING 65228
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0e
+18
+18
+3f
+61
+70
+3e
+ENDCHAR
+STARTCHAR C0183
+ENCODING 65229
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+0e
+18
+18
+3f
+61
+70
+3e
+ENDCHAR
+STARTCHAR C0184
+ENCODING 65230
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+0e
+18
+18
+3f
+61
+70
+3e
+ENDCHAR
+STARTCHAR C0185
+ENCODING 65231
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+1c
+3e
+30
+18
+ff
+00
+00
+ENDCHAR
+STARTCHAR C0186
+ENCODING 65232
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+60
+0e
+18
+18
+3f
+61
+70
+3e
+ENDCHAR
+STARTCHAR C0187
+ENCODING 65233
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+30
+07
+cd
+c7
+ff
+00
+00
+ENDCHAR
+STARTCHAR C0188
+ENCODING 65234
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+30
+07
+cd
+c7
+ff
+00
+00
+ENDCHAR
+STARTCHAR C0189
+ENCODING 65235
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+30
+00
+0f
+0d
+07
+ff
+00
+00
+ENDCHAR
+STARTCHAR C018a
+ENCODING 65236
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+30
+07
+cd
+c7
+ff
+00
+00
+ENDCHAR
+STARTCHAR C018b
+ENCODING 65237
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+00
+07
+4d
+c7
+c3
+7e
+00
+ENDCHAR
+STARTCHAR C018c
+ENCODING 65238
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+00
+07
+4d
+c7
+c3
+7e
+00
+ENDCHAR
+STARTCHAR C018d
+ENCODING 65239
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+6c
+00
+1f
+19
+0f
+ff
+00
+00
+ENDCHAR
+STARTCHAR C018e
+ENCODING 65240
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+36
+00
+07
+4d
+c7
+c3
+7e
+00
+ENDCHAR
+STARTCHAR C018f
+ENCODING 65241
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+33
+23
+73
+03
+83
+fe
+00
+ENDCHAR
+STARTCHAR C0190
+ENCODING 65242
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+33
+23
+73
+03
+83
+fe
+00
+ENDCHAR
+STARTCHAR C0191
+ENCODING 65243
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+1c
+06
+03
+03
+3e
+00
+ENDCHAR
+STARTCHAR C0192
+ENCODING 65244
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+33
+23
+73
+03
+83
+fe
+00
+ENDCHAR
+STARTCHAR C0193
+ENCODING 65245
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+03
+03
+03
+63
+63
+63
+3e
+ENDCHAR
+STARTCHAR C0194
+ENCODING 65246
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+03
+03
+03
+63
+63
+63
+3e
+ENDCHAR
+STARTCHAR C0195
+ENCODING 65247
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+03
+03
+03
+03
+ff
+00
+00
+ENDCHAR
+STARTCHAR C0196
+ENCODING 65248
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+03
+03
+03
+63
+63
+63
+3e
+ENDCHAR
+STARTCHAR C0197
+ENCODING 65249
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+06
+1f
+3d
+67
+63
+60
+60
+ENDCHAR
+STARTCHAR C0198
+ENCODING 65250
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+06
+1f
+3d
+67
+63
+60
+60
+ENDCHAR
+STARTCHAR C0199
+ENCODING 65251
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+07
+0d
+fd
+07
+00
+ENDCHAR
+STARTCHAR C019a
+ENCODING 65252
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+06
+1f
+3d
+67
+63
+60
+60
+ENDCHAR
+STARTCHAR C019b
+ENCODING 65253
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+00
+22
+63
+63
+3e
+00
+ENDCHAR
+STARTCHAR C019c
+ENCODING 65254
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+00
+22
+63
+63
+3e
+00
+ENDCHAR
+STARTCHAR C019d
+ENCODING 65255
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0c
+00
+03
+03
+ff
+00
+00
+ENDCHAR
+STARTCHAR C019e
+ENCODING 65256
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+18
+00
+22
+63
+63
+3e
+00
+ENDCHAR
+STARTCHAR C019f
+ENCODING 65257
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+1b
+1b
+1f
+00
+00
+ENDCHAR
+STARTCHAR C01a0
+ENCODING 65258
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+1b
+1b
+1f
+00
+00
+ENDCHAR
+STARTCHAR C01a1
+ENCODING 65259
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+10
+3e
+27
+39
+ff
+00
+00
+ENDCHAR
+STARTCHAR C01a2
+ENCODING 65260
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+1b
+1b
+1f
+00
+00
+ENDCHAR
+STARTCHAR C01a3
+ENCODING 65261
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+1b
+1f
+03
+06
+7c
+ENDCHAR
+STARTCHAR C01a4
+ENCODING 65262
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0f
+1b
+1f
+03
+06
+7c
+ENDCHAR
+STARTCHAR C01a5
+ENCODING 65263
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0e
+db
+d9
+cd
+cc
+7c
+ENDCHAR
+STARTCHAR C01a6
+ENCODING 65264
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+0e
+db
+d9
+cd
+cc
+7c
+ENDCHAR
+STARTCHAR C01a7
+ENCODING 65265
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0e
+9f
+99
+cd
+7d
+00
+36
+ENDCHAR
+STARTCHAR C01a8
+ENCODING 65266
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0e
+9f
+99
+cd
+7d
+00
+36
+ENDCHAR
+STARTCHAR C01a9
+ENCODING 65267
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+00
+00
+03
+03
+ff
+00
+36
+ENDCHAR
+STARTCHAR C01aa
+ENCODING 65268
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+00
+0e
+9f
+99
+cd
+7d
+00
+36
+ENDCHAR
+STARTCHAR C01ab
+ENCODING 65271
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+03
+23
+33
+1b
+0b
+0e
+7c
+00
+ENDCHAR
+STARTCHAR C01ac
+ENCODING 65533
+SWIDTH 666 0
+DWIDTH 8 0
+BBX 8 8 0 -2
+BITMAP
+3c
+66
+5a
+76
+7e
+76
+3c
+00
+ENDCHAR
+ENDFONT
diff --git a/fonts/fauxtari-8.psf b/fonts/fauxtari-8.psf
new file mode 100644
index 0000000..a58b0e0
--- /dev/null
+++ b/fonts/fauxtari-8.psf
Binary files differ
diff --git a/fonts/fauxtari-8.txt b/fonts/fauxtari-8.txt
new file mode 100644
index 0000000..f82836e
--- /dev/null
+++ b/fonts/fauxtari-8.txt
@@ -0,0 +1,4261 @@
+%PSF2
+Version: 0
+Flags: 1
+Length: 512
+Width: 8
+Height: 8
+%
+Unicode: [2665];
+Bitmap: \
+-------- \
+--##-##- \
+-####### \
+-####### \
+--#####- \
+---###-- \
+----#--- \
+--------
+%
+Unicode: [2523];
+Bitmap: \
+---##--- \
+---##--- \
+---##--- \
+---##### \
+---##### \
+---##--- \
+---##--- \
+---##---
+%
+Unicode: [2503];
+Bitmap: \
+------## \
+------## \
+------## \
+------## \
+------## \
+------## \
+------## \
+------##
+%
+Unicode: [251b];
+Bitmap: \
+---##--- \
+---##--- \
+---##--- \
+#####--- \
+#####--- \
+-------- \
+-------- \
+--------
+%
+Unicode: [252b];
+Bitmap: \
+---##--- \
+---##--- \
+---##--- \
+#####--- \
+#####--- \
+---##--- \
+---##--- \
+---##---
+%
+Unicode: [2513];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+#####--- \
+#####--- \
+---##--- \
+---##--- \
+---##---
+%
+Unicode: [2571];
+Bitmap: \
+------## \
+-----### \
+----###- \
+---###-- \
+--###--- \
+-###---- \
+###----- \
+##------
+%
+Unicode: [2572];
+Bitmap: \
+##------ \
+###----- \
+-###---- \
+--###--- \
+---###-- \
+----###- \
+-----### \
+------##
+%
+Unicode: [25e2];
+Bitmap: \
+-------# \
+------## \
+-----### \
+----#### \
+---##### \
+--###### \
+-####### \
+########
+%
+Unicode: [2597];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-------- \
+----#### \
+----#### \
+----#### \
+----####
+%
+Unicode: [25e3];
+Bitmap: \
+#------- \
+##------ \
+###----- \
+####---- \
+#####--- \
+######-- \
+#######- \
+########
+%
+Unicode: [259d];
+Bitmap: \
+----#### \
+----#### \
+----#### \
+----#### \
+-------- \
+-------- \
+-------- \
+--------
+%
+Unicode: [2598];
+Bitmap: \
+####---- \
+####---- \
+####---- \
+####---- \
+-------- \
+-------- \
+-------- \
+--------
+%
+Unicode: [2594];
+Bitmap: \
+######## \
+######## \
+-------- \
+-------- \
+-------- \
+-------- \
+-------- \
+--------
+%
+Unicode: [2581];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-------- \
+-------- \
+-------- \
+######## \
+########
+%
+Unicode: [2596];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-------- \
+####---- \
+####---- \
+####---- \
+####----
+%
+Unicode: [2663];
+Bitmap: \
+-------- \
+---###-- \
+---###-- \
+-###-### \
+-###-### \
+----#--- \
+---###-- \
+--------
+%
+Unicode: [250f];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+---##### \
+---##### \
+---##--- \
+---##--- \
+---##---
+%
+Unicode: [2501];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+######## \
+######## \
+-------- \
+-------- \
+--------
+%
+Unicode: [254b];
+Bitmap: \
+---##--- \
+---##--- \
+---##--- \
+######## \
+######## \
+---##--- \
+---##--- \
+---##---
+%
+Unicode: [25cf];
+Bitmap: \
+-------- \
+-------- \
+--####-- \
+-######- \
+-######- \
+-######- \
+--####-- \
+--------
+%
+Unicode: [2584];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-------- \
+######## \
+######## \
+######## \
+########
+%
+Unicode: [258e];
+Bitmap: \
+##------ \
+##------ \
+##------ \
+##------ \
+##------ \
+##------ \
+##------ \
+##------
+%
+Unicode: [2533];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+######## \
+######## \
+---##--- \
+---##--- \
+---##---
+%
+Unicode: [253b];
+Bitmap: \
+---##--- \
+---##--- \
+---##--- \
+######## \
+######## \
+-------- \
+-------- \
+--------
+%
+Unicode: [258c];
+Bitmap: \
+####---- \
+####---- \
+####---- \
+####---- \
+####---- \
+####---- \
+####---- \
+####----
+%
+Unicode: [2517];
+Bitmap: \
+---##--- \
+---##--- \
+---##--- \
+---##### \
+---##### \
+-------- \
+-------- \
+--------
+%
+Unicode: [0118];[241b];
+Bitmap: \
+-####--- \
+-##----- \
+-####--- \
+-##----- \
+-######- \
+---##--- \
+---####- \
+--------
+%
+Unicode: [2191];
+Bitmap: \
+-------- \
+---##--- \
+--####-- \
+-######- \
+---##--- \
+---##--- \
+---##--- \
+--------
+%
+Unicode: [2193];
+Bitmap: \
+-------- \
+---##--- \
+---##--- \
+---##--- \
+-######- \
+--####-- \
+---##--- \
+--------
+%
+Unicode: [2190];
+Bitmap: \
+-------- \
+---##--- \
+--##---- \
+-######- \
+--##---- \
+---##--- \
+-------- \
+--------
+%
+Unicode: [2192];
+Bitmap: \
+-------- \
+---##--- \
+----##-- \
+-######- \
+----##-- \
+---##--- \
+-------- \
+--------
+%
+Unicode: [0020];[00a0];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-------- \
+-------- \
+-------- \
+-------- \
+--------
+%
+Unicode: [0021];
+Bitmap: \
+-------- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+-------- \
+---##--- \
+--------
+%
+Unicode: [0022];
+Bitmap: \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+-------- \
+-------- \
+-------- \
+--------
+%
+Unicode: [0023];
+Bitmap: \
+-------- \
+-##--##- \
+######## \
+-##--##- \
+-##--##- \
+######## \
+-##--##- \
+--------
+%
+Unicode: [0024];
+Bitmap: \
+---##--- \
+--#####- \
+-##----- \
+--####-- \
+-----##- \
+-#####-- \
+---##--- \
+--------
+%
+Unicode: [0025];
+Bitmap: \
+-------- \
+-##--##- \
+-##-##-- \
+---##--- \
+--##---- \
+-##--##- \
+-#---##- \
+--------
+%
+Unicode: [0026];
+Bitmap: \
+---###-- \
+--##-##- \
+---###-- \
+--###--- \
+-##-#### \
+-##--##- \
+--###-## \
+--------
+%
+Unicode: [0027];
+Bitmap: \
+-------- \
+---##--- \
+---##--- \
+---##--- \
+-------- \
+-------- \
+-------- \
+--------
+%
+Unicode: [0028];
+Bitmap: \
+-------- \
+----###- \
+---###-- \
+---##--- \
+---##--- \
+---###-- \
+----###- \
+--------
+%
+Unicode: [0029];
+Bitmap: \
+-------- \
+-###---- \
+--###--- \
+---##--- \
+---##--- \
+--###--- \
+-###---- \
+--------
+%
+Unicode: [002a];
+Bitmap: \
+-------- \
+-##--##- \
+--####-- \
+######## \
+--####-- \
+-##--##- \
+-------- \
+--------
+%
+Unicode: [002b];
+Bitmap: \
+-------- \
+---##--- \
+---##--- \
+-######- \
+---##--- \
+---##--- \
+-------- \
+--------
+%
+Unicode: [002c];[00b8];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-------- \
+-------- \
+---##--- \
+---##--- \
+--##----
+%
+Unicode: [002d];[00ad];[2013];[2014];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-######- \
+-------- \
+-------- \
+-------- \
+--------
+%
+Unicode: [002e];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-------- \
+-------- \
+---##--- \
+---##--- \
+--------
+%
+Unicode: [002f];
+Bitmap: \
+-------- \
+-----##- \
+----##-- \
+---##--- \
+--##---- \
+-##----- \
+-#------ \
+--------
+%
+Unicode: [0030];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+-##-###- \
+-###-##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [0031];
+Bitmap: \
+-------- \
+---##--- \
+--###--- \
+---##--- \
+---##--- \
+---##--- \
+-######- \
+--------
+%
+Unicode: [0032];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+----##-- \
+---##--- \
+--##---- \
+-######- \
+--------
+%
+Unicode: [0033];
+Bitmap: \
+-------- \
+-######- \
+----##-- \
+---##--- \
+----##-- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [0034];
+Bitmap: \
+-------- \
+----##-- \
+---###-- \
+--####-- \
+-##-##-- \
+-######- \
+----##-- \
+--------
+%
+Unicode: [0035];
+Bitmap: \
+-------- \
+-######- \
+-##----- \
+-#####-- \
+-----##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [0036];
+Bitmap: \
+-------- \
+--####-- \
+-##----- \
+-#####-- \
+-##--##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [0037];
+Bitmap: \
+-------- \
+-######- \
+-----##- \
+----##-- \
+---##--- \
+--##---- \
+--##---- \
+--------
+%
+Unicode: [0038];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+--####-- \
+-##--##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [0039];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+--#####- \
+-----##- \
+----##-- \
+--###--- \
+--------
+%
+Unicode: [003a];
+Bitmap: \
+-------- \
+-------- \
+---##--- \
+---##--- \
+-------- \
+---##--- \
+---##--- \
+--------
+%
+Unicode: [003b];
+Bitmap: \
+-------- \
+-------- \
+---##--- \
+---##--- \
+-------- \
+---##--- \
+---##--- \
+--##----
+%
+Unicode: [003c];
+Bitmap: \
+-----##- \
+----##-- \
+---##--- \
+--##---- \
+---##--- \
+----##-- \
+-----##- \
+--------
+%
+Unicode: [003d];
+Bitmap: \
+-------- \
+-------- \
+-######- \
+-------- \
+-------- \
+-######- \
+-------- \
+--------
+%
+Unicode: [003e];
+Bitmap: \
+-##----- \
+--##---- \
+---##--- \
+----##-- \
+---##--- \
+--##---- \
+-##----- \
+--------
+%
+Unicode: [003f];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+----##-- \
+---##--- \
+-------- \
+---##--- \
+--------
+%
+Unicode: [0040];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+-##-###- \
+-##-###- \
+-##----- \
+--#####- \
+--------
+%
+Unicode: [0041];
+Bitmap: \
+-------- \
+---##--- \
+--####-- \
+-##--##- \
+-##--##- \
+-######- \
+-##--##- \
+--------
+%
+Unicode: [0042];
+Bitmap: \
+-------- \
+-#####-- \
+-##--##- \
+-#####-- \
+-##--##- \
+-##--##- \
+-#####-- \
+--------
+%
+Unicode: [0043];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+-##----- \
+-##----- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [0044];
+Bitmap: \
+-------- \
+-####--- \
+-##-##-- \
+-##--##- \
+-##--##- \
+-##-##-- \
+-####--- \
+--------
+%
+Unicode: [0045];
+Bitmap: \
+-------- \
+-######- \
+-##----- \
+-#####-- \
+-##----- \
+-##----- \
+-######- \
+--------
+%
+Unicode: [0046];
+Bitmap: \
+-------- \
+-######- \
+-##----- \
+-#####-- \
+-##----- \
+-##----- \
+-##----- \
+--------
+%
+Unicode: [0047];
+Bitmap: \
+-------- \
+--#####- \
+-##----- \
+-##----- \
+-##-###- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [0048];
+Bitmap: \
+-------- \
+-##--##- \
+-##--##- \
+-######- \
+-##--##- \
+-##--##- \
+-##--##- \
+--------
+%
+Unicode: [0049];
+Bitmap: \
+-------- \
+-######- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+-######- \
+--------
+%
+Unicode: [004a];
+Bitmap: \
+-------- \
+-----##- \
+-----##- \
+-----##- \
+-----##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [004b];
+Bitmap: \
+-------- \
+-##--##- \
+-##-##-- \
+-####--- \
+-####--- \
+-##-##-- \
+-##--##- \
+--------
+%
+Unicode: [004c];
+Bitmap: \
+-------- \
+-##----- \
+-##----- \
+-##----- \
+-##----- \
+-##----- \
+-######- \
+--------
+%
+Unicode: [004d];
+Bitmap: \
+-------- \
+-##---## \
+-###-### \
+-####### \
+-##-#-## \
+-##---## \
+-##---## \
+--------
+%
+Unicode: [004e];
+Bitmap: \
+-------- \
+-##--##- \
+-###-##- \
+-######- \
+-######- \
+-##-###- \
+-##--##- \
+--------
+%
+Unicode: [004f];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [0050];
+Bitmap: \
+-------- \
+-#####-- \
+-##--##- \
+-##--##- \
+-#####-- \
+-##----- \
+-##----- \
+--------
+%
+Unicode: [0051];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##-##-- \
+--##-##- \
+--------
+%
+Unicode: [0052];
+Bitmap: \
+-------- \
+-#####-- \
+-##--##- \
+-##--##- \
+-#####-- \
+-##-##-- \
+-##--##- \
+--------
+%
+Unicode: [0053];
+Bitmap: \
+-------- \
+--####-- \
+-##----- \
+--####-- \
+-----##- \
+-----##- \
+--####-- \
+--------
+%
+Unicode: [0054];
+Bitmap: \
+-------- \
+-######- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+--------
+%
+Unicode: [0055];
+Bitmap: \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##- \
+-######- \
+--------
+%
+Unicode: [0056];
+Bitmap: \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##- \
+--####-- \
+---##--- \
+--------
+%
+Unicode: [0057];
+Bitmap: \
+-------- \
+-##---## \
+-##---## \
+-##-#-## \
+-####### \
+-###-### \
+-##---## \
+--------
+%
+Unicode: [0058];
+Bitmap: \
+-------- \
+-##--##- \
+-##--##- \
+--####-- \
+--####-- \
+-##--##- \
+-##--##- \
+--------
+%
+Unicode: [0059];
+Bitmap: \
+-------- \
+-##--##- \
+-##--##- \
+--####-- \
+---##--- \
+---##--- \
+---##--- \
+--------
+%
+Unicode: [005a];
+Bitmap: \
+-------- \
+-######- \
+----##-- \
+---##--- \
+--##---- \
+-##----- \
+-######- \
+--------
+%
+Unicode: [005b];
+Bitmap: \
+-------- \
+---####- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+---####- \
+--------
+%
+Unicode: [005c];
+Bitmap: \
+-------- \
+-#------ \
+-##----- \
+--##---- \
+---##--- \
+----##-- \
+-----##- \
+--------
+%
+Unicode: [005d];
+Bitmap: \
+-------- \
+-####--- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+-####--- \
+--------
+%
+Unicode: [005e];
+Bitmap: \
+-------- \
+----#--- \
+---###-- \
+--##-##- \
+-##---## \
+-------- \
+-------- \
+--------
+%
+Unicode: [005f];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-------- \
+-------- \
+-------- \
+######## \
+--------
+%
+Unicode: [25c6];
+Bitmap: \
+-------- \
+---##--- \
+--####-- \
+-######- \
+-######- \
+--####-- \
+---##--- \
+--------
+%
+Unicode: [0061];
+Bitmap: \
+-------- \
+-------- \
+--####-- \
+-----##- \
+--#####- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [0062];
+Bitmap: \
+-------- \
+-##----- \
+-##----- \
+-#####-- \
+-##--##- \
+-##--##- \
+-#####-- \
+--------
+%
+Unicode: [0063];
+Bitmap: \
+-------- \
+-------- \
+--####-- \
+-##----- \
+-##----- \
+-##----- \
+--####-- \
+--------
+%
+Unicode: [0064];
+Bitmap: \
+-------- \
+-----##- \
+-----##- \
+--#####- \
+-##--##- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [0065];
+Bitmap: \
+-------- \
+-------- \
+--####-- \
+-##--##- \
+-######- \
+-##----- \
+--####-- \
+--------
+%
+Unicode: [0066];
+Bitmap: \
+-------- \
+----###- \
+---##--- \
+--#####- \
+---##--- \
+---##--- \
+---##--- \
+--------
+%
+Unicode: [0067];
+Bitmap: \
+-------- \
+-------- \
+--#####- \
+-##--##- \
+-##--##- \
+--#####- \
+-----##- \
+-#####--
+%
+Unicode: [0068];
+Bitmap: \
+-------- \
+-##----- \
+-##----- \
+-#####-- \
+-##--##- \
+-##--##- \
+-##--##- \
+--------
+%
+Unicode: [0069];
+Bitmap: \
+-------- \
+---##--- \
+-------- \
+--###--- \
+---##--- \
+---##--- \
+--####-- \
+--------
+%
+Unicode: [006a];
+Bitmap: \
+-------- \
+-----##- \
+-------- \
+-----##- \
+-----##- \
+-----##- \
+-----##- \
+--####--
+%
+Unicode: [006b];
+Bitmap: \
+-------- \
+-##----- \
+-##----- \
+-##-##-- \
+-####--- \
+-##-##-- \
+-##--##- \
+--------
+%
+Unicode: [006c];
+Bitmap: \
+-------- \
+--###--- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+--####-- \
+--------
+%
+Unicode: [006d];
+Bitmap: \
+-------- \
+-------- \
+-##--##- \
+-####### \
+-####### \
+-##-#-## \
+-##---## \
+--------
+%
+Unicode: [006e];
+Bitmap: \
+-------- \
+-------- \
+-#####-- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##- \
+--------
+%
+Unicode: [006f];
+Bitmap: \
+-------- \
+-------- \
+--####-- \
+-##--##- \
+-##--##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [0070];
+Bitmap: \
+-------- \
+-------- \
+-#####-- \
+-##--##- \
+-##--##- \
+-#####-- \
+-##----- \
+-##-----
+%
+Unicode: [0071];
+Bitmap: \
+-------- \
+-------- \
+--#####- \
+-##--##- \
+-##--##- \
+--#####- \
+-----##- \
+-----##-
+%
+Unicode: [0072];
+Bitmap: \
+-------- \
+-------- \
+-#####-- \
+-##--##- \
+-##----- \
+-##----- \
+-##----- \
+--------
+%
+Unicode: [0073];
+Bitmap: \
+-------- \
+-------- \
+--#####- \
+-##----- \
+--####-- \
+-----##- \
+-#####-- \
+--------
+%
+Unicode: [0074];
+Bitmap: \
+-------- \
+---##--- \
+-######- \
+---##--- \
+---##--- \
+---##--- \
+----###- \
+--------
+%
+Unicode: [0075];
+Bitmap: \
+-------- \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [0076];
+Bitmap: \
+-------- \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+--####-- \
+---##--- \
+--------
+%
+Unicode: [0077];
+Bitmap: \
+-------- \
+-------- \
+-##---## \
+-##-#-## \
+-####### \
+--#####- \
+--##-##- \
+--------
+%
+Unicode: [0078];
+Bitmap: \
+-------- \
+-------- \
+-##--##- \
+--####-- \
+---##--- \
+--####-- \
+-##--##- \
+--------
+%
+Unicode: [0079];
+Bitmap: \
+-------- \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+--#####- \
+----##-- \
+-####---
+%
+Unicode: [007a];
+Bitmap: \
+-------- \
+-------- \
+-######- \
+----##-- \
+---##--- \
+--##---- \
+-######- \
+--------
+%
+Unicode: [2660];
+Bitmap: \
+-------- \
+---##--- \
+--####-- \
+-######- \
+-######- \
+---##--- \
+--####-- \
+--------
+%
+Unicode: [007c];[0622];[fe81];[fe82];
+Bitmap: \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+---##---
+%
+Unicode: [21b0];
+Bitmap: \
+-------- \
+-######- \
+-####--- \
+-#####-- \
+-##-###- \
+-##--##- \
+-----##- \
+--------
+%
+Unicode: [25c0];
+Bitmap: \
+----#--- \
+---##--- \
+--###--- \
+-####--- \
+--###--- \
+---##--- \
+----#--- \
+--------
+%
+Unicode: [25b6];
+Bitmap: \
+---#---- \
+---##--- \
+---###-- \
+---####- \
+---###-- \
+---##--- \
+---#---- \
+--------
+%
+Unicode: [00e1];
+Bitmap: \
+----##-- \
+---##--- \
+--####-- \
+-----##- \
+--#####- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [00f9];
+Bitmap: \
+--##---- \
+---##--- \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [00d1];
+Bitmap: \
+--##-##- \
+-##-##-- \
+-------- \
+-###-##- \
+-###-##- \
+-######- \
+-##-###- \
+--------
+%
+Unicode: [00c9];
+Bitmap: \
+----##-- \
+---##--- \
+-######- \
+-##----- \
+-#####-- \
+-##----- \
+-######- \
+--------
+%
+Unicode: [00e7];
+Bitmap: \
+-------- \
+-------- \
+--####-- \
+-##----- \
+-##----- \
+--####-- \
+---##--- \
+--##----
+%
+Unicode: [00f4];
+Bitmap: \
+--####-- \
+-##--##- \
+-------- \
+--####-- \
+-##--##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [00f2];
+Bitmap: \
+--##---- \
+---##--- \
+-------- \
+--####-- \
+-##--##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [00ec];
+Bitmap: \
+--##---- \
+---##--- \
+-------- \
+--###--- \
+---##--- \
+---##--- \
+--####-- \
+--------
+%
+Unicode: [00a3];
+Bitmap: \
+---###-- \
+--##---- \
+--##---- \
+-####--- \
+--##---- \
+--##---- \
+-######- \
+--------
+%
+Unicode: [00ef];
+Bitmap: \
+-------- \
+-##--##- \
+-------- \
+--###--- \
+---##--- \
+---##--- \
+--####-- \
+--------
+%
+Unicode: [00fc];
+Bitmap: \
+-------- \
+-##--##- \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [00e4];
+Bitmap: \
+--##-##- \
+-------- \
+--####-- \
+-----##- \
+--#####- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [00d6];
+Bitmap: \
+-##--##- \
+-------- \
+--####-- \
+-##--##- \
+-##--##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [00fa];
+Bitmap: \
+----##-- \
+---##--- \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [00f3];
+Bitmap: \
+----##-- \
+---##--- \
+-------- \
+--####-- \
+-##--##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [00f6];
+Bitmap: \
+-------- \
+-##--##- \
+-------- \
+--####-- \
+-##--##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [00dc];
+Bitmap: \
+-##--##- \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##- \
+-######- \
+--------
+%
+Unicode: [00e5];
+Bitmap: \
+--####-- \
+-##--##- \
+---###-- \
+-----##- \
+--#####- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [00fb];
+Bitmap: \
+--####-- \
+-##--##- \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [00ee];
+Bitmap: \
+--####-- \
+-##--##- \
+-------- \
+--###--- \
+---##--- \
+---##--- \
+--####-- \
+--------
+%
+Unicode: [00e9];
+Bitmap: \
+----##-- \
+---##--- \
+--####-- \
+-##--##- \
+-######- \
+-##----- \
+--####-- \
+--------
+%
+Unicode: [00e8];
+Bitmap: \
+--##---- \
+---##--- \
+--####-- \
+-##--##- \
+-######- \
+-##----- \
+--####-- \
+--------
+%
+Unicode: [00f1];
+Bitmap: \
+--##-##- \
+-##-##-- \
+-------- \
+-#####-- \
+-##--##- \
+-##--##- \
+-##--##- \
+--------
+%
+Unicode: [00ea];
+Bitmap: \
+--####-- \
+##----## \
+--####-- \
+-##--##- \
+-######- \
+-##----- \
+--####-- \
+--------
+%
+Unicode: [0227];
+Bitmap: \
+---##--- \
+-------- \
+--####-- \
+-----##- \
+--#####- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [00e0];
+Bitmap: \
+--##---- \
+---##--- \
+--####-- \
+-----##- \
+--#####- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [00a1];
+Bitmap: \
+---##--- \
+-------- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+--------
+%
+Unicode: [00c4];
+Bitmap: \
+-##--##- \
+-##--##- \
+---##--- \
+--####-- \
+-##--##- \
+-######- \
+-##--##- \
+--------
+%
+Unicode: [05d0];
+Bitmap: \
+-------- \
+##---##- \
+####-##- \
+##-####- \
+##--##-- \
+##---##- \
+-------- \
+--------
+%
+Unicode: [05d1];
+Bitmap: \
+-------- \
+#####--- \
+---###-- \
+----##-- \
+----##-- \
+#######- \
+-------- \
+--------
+%
+Unicode: [05d2];
+Bitmap: \
+-------- \
+--####-- \
+----##-- \
+----##-- \
+-#####-- \
+###--##- \
+-------- \
+--------
+%
+Unicode: [05d3];
+Bitmap: \
+-------- \
+#######- \
+---###-- \
+----##-- \
+----##-- \
+----##-- \
+-------- \
+--------
+%
+Unicode: [05d4];
+Bitmap: \
+-------- \
+######-- \
+-----##- \
+-#---##- \
+-##--##- \
+-##--##- \
+-------- \
+--------
+%
+Unicode: [05d5];
+Bitmap: \
+-------- \
+--####-- \
+---###-- \
+----##-- \
+----##-- \
+----##-- \
+-------- \
+--------
+%
+Unicode: [05d6];
+Bitmap: \
+-------- \
+######-- \
+-###---- \
+--##---- \
+--##---- \
+--##---- \
+-------- \
+--------
+%
+Unicode: [05d7];
+Bitmap: \
+-------- \
+######-- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##- \
+-------- \
+--------
+%
+Unicode: [05d8];
+Bitmap: \
+-------- \
+##-####- \
+##-#-##- \
+##---##- \
+##---##- \
+######-- \
+-------- \
+--------
+%
+Unicode: [05d9];
+Bitmap: \
+-------- \
+-#####-- \
+---###-- \
+----##-- \
+-------- \
+-------- \
+-------- \
+--------
+%
+Unicode: [05da];
+Bitmap: \
+-------- \
+######-- \
+----###- \
+-----##- \
+-----##- \
+-----##- \
+-----##- \
+-----##-
+%
+Unicode: [05db];
+Bitmap: \
+-------- \
+######-- \
+-----##- \
+-----##- \
+----###- \
+######-- \
+-------- \
+--------
+%
+Unicode: [05dc];
+Bitmap: \
+##------ \
+######-- \
+-----##- \
+-----##- \
+----###- \
+--####-- \
+-------- \
+--------
+%
+Unicode: [05dd];
+Bitmap: \
+-------- \
+-######- \
+-##--##- \
+-##--##- \
+-##--##- \
+-######- \
+-------- \
+--------
+%
+Unicode: [05de];
+Bitmap: \
+-------- \
+##-###-- \
+-###-##- \
+-##--##- \
+-##--##- \
+-##-###- \
+-------- \
+--------
+%
+Unicode: [05df];
+Bitmap: \
+-------- \
+---####- \
+----###- \
+-----##- \
+-----##- \
+-----##- \
+-----##- \
+-----##-
+%
+Unicode: [05e0];
+Bitmap: \
+-------- \
+---####- \
+-----##- \
+-----##- \
+----###- \
+-#####-- \
+-------- \
+--------
+%
+Unicode: [05e1];
+Bitmap: \
+-------- \
+#######- \
+-##--##- \
+-##--##- \
+-##-##-- \
+-####--- \
+-------- \
+--------
+%
+Unicode: [05e2];
+Bitmap: \
+-------- \
+###-###- \
+-##--##- \
+--##-##- \
+--##-##- \
+######-- \
+-------- \
+--------
+%
+Unicode: [05e3];
+Bitmap: \
+-------- \
+######-- \
+-##-###- \
+-##--##- \
+-----##- \
+-----##- \
+-----##- \
+-----##-
+%
+Unicode: [05e4];
+Bitmap: \
+-------- \
+######-- \
+-##--##- \
+-##--##- \
+----###- \
+######-- \
+-------- \
+--------
+%
+Unicode: [05e5];
+Bitmap: \
+-------- \
+##--###- \
+-##--##- \
+-##-##-- \
+-####--- \
+-##----- \
+-##----- \
+-##-----
+%
+Unicode: [05e6];
+Bitmap: \
+-------- \
+##---##- \
+-##-###- \
+--###--- \
+----##-- \
+#######- \
+-------- \
+--------
+%
+Unicode: [05e7];
+Bitmap: \
+-------- \
+######-- \
+----###- \
+##---##- \
+##--##-- \
+##-##--- \
+##------ \
+##------
+%
+Unicode: [05e8];
+Bitmap: \
+-------- \
+######-- \
+----###- \
+-----##- \
+-----##- \
+-----##- \
+-------- \
+--------
+%
+Unicode: [05e9];
+Bitmap: \
+-------- \
+#--#--#- \
+##-#--#- \
+###--##- \
+##--##-- \
+######-- \
+-------- \
+--------
+%
+Unicode: [05ea];
+Bitmap: \
+-------- \
+######-- \
+-##-###- \
+-##--##- \
+-##--##- \
+###--##- \
+-------- \
+--------
+%
+Unicode: [0179];
+Bitmap: \
+---##--- \
+-######- \
+--##-##- \
+----##-- \
+---##--- \
+--##---- \
+-######- \
+--------
+%
+Unicode: [0105];
+Bitmap: \
+-------- \
+-------- \
+--####-- \
+-----##- \
+--#####- \
+-##--##- \
+--#####- \
+------##
+%
+Unicode: [017a];
+Bitmap: \
+----##-- \
+---##--- \
+-######- \
+----##-- \
+---##--- \
+--##---- \
+-######- \
+--------
+%
+Unicode: [0107];
+Bitmap: \
+----##-- \
+---##--- \
+--####-- \
+-##----- \
+-##----- \
+-##----- \
+--####-- \
+--------
+%
+Unicode: [015a];
+Bitmap: \
+---##--- \
+--####-- \
+-##----- \
+--####-- \
+-----##- \
+-----##- \
+--####-- \
+--------
+%
+Unicode: [0119];
+Bitmap: \
+-------- \
+-------- \
+--####-- \
+-##--##- \
+-######- \
+-##----- \
+--####-- \
+-----##-
+%
+Unicode: [00df];
+Bitmap: \
+-------- \
+---###-- \
+--##-##- \
+--####-- \
+--##-##- \
+--##-### \
+--#####- \
+-##-----
+%
+Unicode: [0141];
+Bitmap: \
+-------- \
+-##----- \
+-##----- \
+-####--- \
+-###---- \
+###----- \
+-######- \
+--------
+%
+Unicode: [0142];
+Bitmap: \
+-------- \
+--###--- \
+---##--- \
+---###-- \
+--###--- \
+---##--- \
+--####-- \
+--------
+%
+Unicode: [0143];
+Bitmap: \
+----##-- \
+-#-##-#- \
+-##--##- \
+-######- \
+-######- \
+-##-###- \
+-##--##- \
+--------
+%
+Unicode: [0144];
+Bitmap: \
+----##-- \
+---##--- \
+-#####-- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##- \
+--------
+%
+Unicode: [00d3];
+Bitmap: \
+-----##- \
+--####-- \
+-##-#-#- \
+-##--##- \
+-##--##- \
+-##--##- \
+--####-- \
+--------
+%
+Unicode: [015b];
+Bitmap: \
+----##-- \
+---##--- \
+--#####- \
+-##----- \
+--####-- \
+-----##- \
+-#####-- \
+--------
+%
+Unicode: [0106];
+Bitmap: \
+----##-- \
+--####-- \
+-##-###- \
+-##----- \
+-##----- \
+-##--##- \
+--#####- \
+--------
+%
+Unicode: [0104];
+Bitmap: \
+-------- \
+---##--- \
+--####-- \
+-##--##- \
+-##--##- \
+-######- \
+-##--##- \
+------##
+%
+Unicode: [017b];
+Bitmap: \
+---##--- \
+-######- \
+----##-- \
+---##--- \
+--##---- \
+-##----- \
+-######- \
+--------
+%
+Unicode: [017c];
+Bitmap: \
+---##--- \
+-------- \
+-######- \
+----##-- \
+---##--- \
+--##---- \
+-######- \
+--------
+%
+Unicode: [0660];
+Bitmap: \
+-------- \
+-----##- \
+----##-- \
+---##--- \
+--##---- \
+-##----- \
+-#------ \
+--------
+%
+Unicode: [0661];
+Bitmap: \
+-------- \
+-------- \
+----#--- \
+---###-- \
+--#####- \
+---###-- \
+----#--- \
+--------
+%
+Unicode: [0662];
+Bitmap: \
+-------- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+---##--- \
+---##---
+%
+Unicode: [0663];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+-##----- \
+--##---- \
+---##--- \
+----##-- \
+-----##-
+%
+Unicode: [0664];
+Bitmap: \
+-------- \
+-##-#-## \
+-##-#-## \
+-####### \
+-###---- \
+--##---- \
+--###--- \
+---##---
+%
+Unicode: [0665];
+Bitmap: \
+-------- \
+---####- \
+--###--- \
+-###---- \
+---###-- \
+--###--- \
+-###---- \
+--#####-
+%
+Unicode: [0666];
+Bitmap: \
+-------- \
+---###-- \
+--#####- \
+-##--##- \
+-##--##- \
+-##--##- \
+-######- \
+--####--
+%
+Unicode: [0667];
+Bitmap: \
+-------- \
+-#####-- \
+-#####-- \
+----##-- \
+----##-- \
+----##-- \
+----##-- \
+----##--
+%
+Unicode: [0668];
+Bitmap: \
+-------- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##- \
+--####-- \
+--####-- \
+---##---
+%
+Unicode: [0669];
+Bitmap: \
+-------- \
+---##--- \
+--####-- \
+--####-- \
+-##--##- \
+-##--##- \
+-##--##- \
+-##--##-
+%
+Unicode: [0624];[fe85];[fe86];
+Bitmap: \
+-------- \
+-##----- \
+##--#### \
+---##-## \
+----#### \
+------## \
+-----##- \
+-#####--
+%
+Unicode: [0634];[feb5];[feb6];[feb8];
+Bitmap: \
+----##-- \
+--##--## \
+-------- \
+#--#-#-# \
+#--#-#-# \
+#--##### \
+####---- \
+-##-----
+%
+Unicode: [0648];[feed];[feee];
+Bitmap: \
+-------- \
+-------- \
+----#### \
+---##-## \
+---##### \
+------## \
+-----##- \
+-#####--
+%
+Unicode: [0629];[fe93];[fe94];
+Bitmap: \
+---##-## \
+-------- \
+----#### \
+---##-## \
+---##-## \
+---##### \
+-------- \
+--------
+%
+Unicode: [064a];[fef1];[fef2];[fef4];
+Bitmap: \
+-------- \
+----###- \
+#--##### \
+#--##--# \
+##--##-# \
+-#####-# \
+-------- \
+--##-##-
+%
+Unicode: [062b];[fe99];[fe9a];[fe9c];
+Bitmap: \
+---##--- \
+-##--##- \
+-------- \
+##----## \
+##----## \
+-######- \
+-------- \
+--------
+%
+Unicode: [0628];[fe8f];[fe90];[fe92];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+##----## \
+##----## \
+-######- \
+-------- \
+---##---
+%
+Unicode: [0644];[fedd];[fede];[fee0];
+Bitmap: \
+------## \
+------## \
+------## \
+------## \
+-##---## \
+-##---## \
+-##---## \
+--#####-
+%
+Unicode: [0621];[fe80];
+Bitmap: \
+-------- \
+-------- \
+---###-- \
+--##---- \
+---###-- \
+--###--- \
+--#----- \
+--------
+%
+Unicode: [0647];[fee9];[feea];[feec];
+Bitmap: \
+-------- \
+-------- \
+----#### \
+---##-## \
+---##-## \
+---##### \
+-------- \
+--------
+%
+Unicode: [062a];[fe95];[fe96];[fe98];
+Bitmap: \
+-------- \
+--##-##- \
+-------- \
+##----## \
+##----## \
+-######- \
+-------- \
+--------
+%
+Unicode: [0646];[fee5];[fee6];[fee8];
+Bitmap: \
+-------- \
+---##--- \
+-------- \
+--#---#- \
+-##---## \
+-##---## \
+--#####- \
+--------
+%
+Unicode: [0645];[fee1];[fee2];[fee4];
+Bitmap: \
+-------- \
+-----##- \
+---##### \
+--####-# \
+-##--### \
+-##---## \
+-##----- \
+-##-----
+%
+Unicode: [062c];[fe9d];[fe9e];[fea0];
+Bitmap: \
+-------- \
+-####--- \
+----##-- \
+--#####- \
+-##---## \
+-##----- \
+-##---## \
+--###---
+%
+Unicode: [062e];[fea5];[fea6];[fea8];
+Bitmap: \
+------## \
+-####--- \
+----##-- \
+--#####- \
+-##---## \
+-##----# \
+-##----- \
+--####--
+%
+Unicode: [062d];[fea1];[fea2];[fea4];
+Bitmap: \
+-------- \
+-####--- \
+----##-- \
+--#####- \
+-##---## \
+-##----# \
+-##----- \
+--####--
+%
+Unicode: [0636];[febd];[febe];[fec0];
+Bitmap: \
+----##-- \
+-------- \
+----#### \
+#--##--# \
+#--#---# \
+#--##### \
+#####--- \
+-###----
+%
+Unicode: [0642];[fed5];[fed6];[fed8];
+Bitmap: \
+--##-##- \
+-------- \
+-----### \
+-#--##-# \
+##---### \
+##----## \
+-######- \
+--------
+%
+Unicode: [0633];[feb1];[feb2];[feb4];
+Bitmap: \
+-------- \
+-------- \
+#--#-#-# \
+#--#-#-# \
+#--##### \
+#--####- \
+####---- \
+-##-----
+%
+Unicode: [0641];[fed1];[fed2];[fed4];
+Bitmap: \
+-------- \
+--##---- \
+-----### \
+##--##-# \
+##---### \
+######## \
+-------- \
+--------
+%
+Unicode: [0639];[fec9];[feca];[fecc];
+Bitmap: \
+-------- \
+----###- \
+---##--- \
+---##--- \
+--###### \
+-##----# \
+-###---- \
+--#####-
+%
+Unicode: [0643];[fed9];[feda];[fedc];
+Bitmap: \
+------## \
+--##--## \
+--#---## \
+-###--## \
+------## \
+#-----## \
+#######- \
+--------
+%
+Unicode: [0635];[feb9];[feba];[febc];
+Bitmap: \
+-------- \
+-------- \
+----#### \
+#--##--# \
+#--#---# \
+#--##### \
+####---- \
+-##-----
+%
+Unicode: [063a];[fecd];[fece];[fed0];
+Bitmap: \
+-##----- \
+----###- \
+---##--- \
+---##--- \
+--###### \
+-##----# \
+-###---- \
+--#####-
+%
+Unicode: [0649];[feef];[fef0];
+Bitmap: \
+-------- \
+-------- \
+----###- \
+##-##-## \
+##-##--# \
+##--##-# \
+##--##-- \
+-#####--
+%
+Unicode: [0632];[feaf];[feb0];
+Bitmap: \
+-------- \
+------## \
+-------- \
+-----##- \
+------## \
+------## \
+-----##- \
+-#####--
+%
+Unicode: [feb7];
+Bitmap: \
+---##--- \
+-##--##- \
+-------- \
+-#--#--# \
+##-##-## \
+######## \
+-------- \
+--------
+%
+Unicode: [062f];[fea9];[feaa];[0631];[fead];[feae];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-----##- \
+------## \
+------## \
+-----##- \
+-#####--
+%
+Unicode: [0630];[feab];[feac];
+Bitmap: \
+--##---- \
+-------- \
+----##-- \
+-----##- \
+------## \
+------## \
+--#####- \
+--------
+%
+Unicode: [fef3];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+------## \
+------## \
+######## \
+-------- \
+--##-##-
+%
+Unicode: [fe9b];
+Bitmap: \
+---##--- \
+-##--##- \
+-------- \
+------## \
+------## \
+######## \
+-------- \
+--------
+%
+Unicode: [fe91];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+------## \
+------## \
+######## \
+-------- \
+-----##-
+%
+Unicode: [fedf];
+Bitmap: \
+------## \
+------## \
+------## \
+------## \
+------## \
+######## \
+-------- \
+--------
+%
+Unicode: [0627];[fe8d];[fe8e];
+Bitmap: \
+------## \
+------## \
+------## \
+------## \
+------## \
+------## \
+-------- \
+--------
+%
+Unicode: [feeb];
+Bitmap: \
+-------- \
+---#---- \
+--#####- \
+--#--### \
+--###--# \
+######## \
+-------- \
+--------
+%
+Unicode: [fe97];
+Bitmap: \
+-------- \
+-##-##-- \
+-------- \
+------## \
+------## \
+######## \
+-------- \
+--------
+%
+Unicode: [fee7];
+Bitmap: \
+-------- \
+----##-- \
+-------- \
+------## \
+------## \
+######## \
+-------- \
+--------
+%
+Unicode: [fee3];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-----### \
+----##-# \
+######-# \
+-----### \
+--------
+%
+Unicode: [fe9f];
+Bitmap: \
+-------- \
+-------- \
+-####--- \
+-#--##-- \
+-----##- \
+######## \
+-------- \
+----##--
+%
+Unicode: [fef7];[f3f8];
+Bitmap: \
+------## \
+--#---## \
+--##--## \
+---##-## \
+----#-## \
+----###- \
+-#####-- \
+--------
+%
+Unicode: [fea7];
+Bitmap: \
+--##---- \
+-------- \
+-####--- \
+-#--##-- \
+-----##- \
+######## \
+-------- \
+--------
+%
+Unicode: [fea3];
+Bitmap: \
+-------- \
+-------- \
+-####--- \
+-#--##-- \
+-----##- \
+######## \
+-------- \
+--------
+%
+Unicode: [febf];
+Bitmap: \
+---##--- \
+-------- \
+----#### \
+-#-##--# \
+####---# \
+######## \
+-------- \
+--------
+%
+Unicode: [fed7];
+Bitmap: \
+-##-##-- \
+-------- \
+---##### \
+---##--# \
+----#### \
+######## \
+-------- \
+--------
+%
+Unicode: [feb3];
+Bitmap: \
+-------- \
+-------- \
+-------- \
+-#--#--# \
+##-##-## \
+######## \
+-------- \
+--------
+%
+Unicode: [fed3];
+Bitmap: \
+--##---- \
+-------- \
+----#### \
+----##-# \
+-----### \
+######## \
+-------- \
+--------
+%
+Unicode: [fecb];
+Bitmap: \
+-------- \
+---###-- \
+--#####- \
+--##---- \
+---##--- \
+######## \
+-------- \
+--------
+%
+Unicode: [fedb];
+Bitmap: \
+-------- \
+-------- \
+---###-- \
+-----##- \
+------## \
+------## \
+--#####- \
+--------
+%
+Unicode: [febb];
+Bitmap: \
+-------- \
+-------- \
+----#### \
+-#-##--# \
+####---# \
+######## \
+-------- \
+--------
+%
+Unicode: [0637];[fec1];[fec2];[fec4];[fec3];
+Bitmap: \
+-##----- \
+-##----- \
+-##-#### \
+-####--# \
+-###---# \
+######## \
+-------- \
+--------
+%
+Unicode: [fecf];
+Bitmap: \
+-##----- \
+---###-- \
+--#####- \
+--##---- \
+---##--- \
+######## \
+-------- \
+--------
+%
+Unicode: [0638];[fec5];[fec6];[fec8];[fec7];
+Bitmap: \
+-##-##-- \
+-##----- \
+-##-#### \
+-####--# \
+-###---# \
+######## \
+-------- \
+--------
+%
+Unicode: [061f];
+Bitmap: \
+-------- \
+--####-- \
+-##--##- \
+--##---- \
+---##--- \
+-------- \
+---##--- \
+--------
+%
+// dotted-box (no such glyph)
+Unicode: [0000];
+Bitmap: \
+ -------- \
+ -##-###- \
+ -#------ \
+ ------#- \
+ -#------ \
+ ------#- \
+ -###-##- \
+ --------
+%
+// backtick
+Unicode: [0060];
+Bitmap: \
+ -------- \
+ --##---- \
+ --##---- \
+ ---##--- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// curlies
+Unicode: [007b];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ ---##--- \
+ --##---- \
+ ---##--- \
+ ---##--- \
+ ----##-- \
+ --------
+%
+Unicode: [007d];
+Bitmap: \
+ --##---- \
+ ---##--- \
+ ---##--- \
+ ----##-- \
+ ---##--- \
+ ---##--- \
+ --##---- \
+ --------
+%
+// tilde
+Unicode: [007e];
+Bitmap: \
+ -------- \
+ -###--## \
+ ##-##-## \
+ ##--###- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// euro
+Unicode: [20ac];
+Bitmap: \
+ ---####- \
+ --##---- \
+ -#####-- \
+ --##---- \
+ -#####-- \
+ --##---- \
+ ---####- \
+ --------
+%
+// spanish left-quote
+Unicode: [00ab];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ -##--##- \
+ ##--##-- \
+ -##--##- \
+ -------- \
+ --------
+%
+// spanish right-quote
+Unicode: [00bb];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ ##--##-- \
+ -##--##- \
+ ##--##-- \
+ -------- \
+ --------
+%
+// spanish inverted question mark
+Unicode: [00bf];
+Bitmap: \
+ -------- \
+ ---##--- \
+ -------- \
+ ---##--- \
+ ----##-- \
+ -##--##- \
+ --####-- \
+ --------
+%
+// copyright
+Unicode: [00a9];
+Bitmap: \
+ -#####-- \
+ #-----#- \
+ #--##-#- \
+ #-#---#- \
+ #--##-#- \
+ #-----#- \
+ -#####-- \
+ --------
+%
+// registered
+Unicode: [00ae];
+Bitmap: \
+ -#####-- \
+ #-----#- \
+ #-##--#- \
+ #-#-#-#- \
+ #-##--#- \
+ #-#-#-#- \
+ -#####-- \
+ --------
+%
+// degrees
+Unicode: [00b0];[00ba];
+Bitmap: \
+ -------- \
+ ---##--- \
+ --#--#-- \
+ ---##--- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// cents
+Unicode: [00a2];
+Bitmap: \
+ -------- \
+ ---##--- \
+ --#####- \
+ -##----- \
+ -##----- \
+ --#####- \
+ ---##--- \
+ --------
+%
+// "currency sign"
+// FIXME: not bold enough
+Unicode: [00a4];
+Bitmap: \
+ -------- \
+ -#----#- \
+ --####-- \
+ --#--#-- \
+ --#--#-- \
+ --####-- \
+ -#----#- \
+ --------
+%
+// yen
+Unicode: [00a5];
+Bitmap: \
+ -##--##- \
+ -##--##- \
+ ---##--- \
+ -######- \
+ ---##--- \
+ -######- \
+ ---##--- \
+ --------
+%
+// broken bar
+Unicode: [00a6];
+Bitmap: \
+ -------- \
+ ---##--- \
+ ---##--- \
+ -------- \
+ ---##--- \
+ ---##--- \
+ ---##--- \
+ --------
+%
+// section sign
+// FIXME: not bold enough
+Unicode: [00a7];
+Bitmap: \
+ ---###-- \
+ --#----- \
+ ---##--- \
+ --#--#-- \
+ ---##--- \
+ -----#-- \
+ --###--- \
+ --------
+%
+// diaresis (cha, cha, cha!)
+Unicode: [00a8];
+Bitmap: \
+ -------- \
+ -##--##- \
+ -##--##- \
+ -------- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// feminine ordinal (superscript a)
+Unicode: [00aa];
+Bitmap: \
+ -------- \
+ --####-- \
+ ----###- \
+ --##-##- \
+ ---####- \
+ -------- \
+ -------- \
+ --------
+%
+// "not" sign
+Unicode: [00ac];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ -######- \
+ -----##- \
+ -------- \
+ -------- \
+ --------
+%
+// macron
+Unicode: [00af];
+Bitmap: \
+ -------- \
+ -######- \
+ -------- \
+ -------- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// plus-minus
+Unicode: [00b1];
+Bitmap: \
+ -------- \
+ ---##--- \
+ -######- \
+ ---##--- \
+ -------- \
+ -######- \
+ -------- \
+ --------
+%
+// superscript 2
+// FIXME: not bold enough
+Unicode: [00b2];
+Bitmap: \
+ -------- \
+ --##---- \
+ -#--#--- \
+ ---#---- \
+ --#----- \
+ -####--- \
+ -------- \
+ --------
+%
+// FIXME: not bold enough
+// superscript 3
+Unicode: [00b3];
+Bitmap: \
+ -------- \
+ --##---- \
+ -#--#--- \
+ ---#---- \
+ -#--#--- \
+ --##---- \
+ -------- \
+ --------
+%
+// acute
+Unicode: [00b4];
+Bitmap: \
+ -------- \
+ ----##-- \
+ ---##--- \
+ -------- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// mu
+Unicode: [00b5];
+Bitmap: \
+ -------- \
+ -------- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ --#####- \
+ -----##- \
+ --------
+%
+// paragraph
+Unicode: [00b6];
+Bitmap: \
+ -------- \
+ --##-##- \
+ -###-##- \
+ -###-##- \
+ --##-##- \
+ ---#-##- \
+ ---#-##- \
+ --------
+%
+// middle dot
+Unicode: [00b7];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ ---##--- \
+ ---##--- \
+ -------- \
+ -------- \
+ --------
+%
+// superscript 1
+Unicode: [00b9];
+Bitmap: \
+ -------- \
+ ---##--- \
+ --###--- \
+ ---##--- \
+ --####-- \
+ -------- \
+ -------- \
+ --------
+// FIXME: MISSING fractions, 00bc/00bd/00bc, ¼ ½ ¾, hard to do in 8x8
+%
+// A with grave
+Unicode: [00c0];
+Bitmap: \
+ -------- \
+ --##---- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##--##- \
+ --------
+%
+// A with acute
+Unicode: [00c1];
+Bitmap: \
+ -------- \
+ ----##-- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##--##- \
+ --------
+%
+// A with circumflex
+Unicode: [00c2];
+Bitmap: \
+ --####-- \
+ -#----#- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##--##- \
+ --------
+%
+// A with tilde
+Unicode: [00c3];
+Bitmap: \
+ --##-##- \
+ -##-##-- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##--##- \
+ --------
+%
+// A with ring
+Unicode: [00c5];
+Bitmap: \
+ ---##--- \
+ --#--#-- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##--##- \
+ --------
+%
+// AE ligature
+Unicode: [00c6];
+Bitmap: \
+ -------- \
+ --#####- \
+ -####--- \
+ ##-##--- \
+ #######- \
+ ##-##--- \
+ ##-####- \
+ --------
+// FIXME: this is hideous!
+%
+// C with cedilla
+Unicode: [00c7];
+Bitmap: \
+ -------- \
+ --####-- \
+ -##--##- \
+ -##----- \
+ -##--##- \
+ --####-- \
+ ---##--- \
+ --##----
+%
+// E with circumflex
+Unicode: [00ca];
+Bitmap: \
+ --####-- \
+ -#----#- \
+ -######- \
+ -##----- \
+ -#####-- \
+ -##----- \
+ -######- \
+ --------
+// FIXME: ugly!
+%
+// E with umlaut
+Unicode: [00cb];
+Bitmap: \
+ --##-##- \
+ -------- \
+ -######- \
+ -##----- \
+ -#####-- \
+ -##----- \
+ -######- \
+ --------
+%
+// I with grave
+Unicode: [00cc];
+Bitmap: \
+ --##---- \
+ ---##--- \
+ -######- \
+ ---##--- \
+ ---##--- \
+ ---##--- \
+ -######- \
+ --------
+%
+// I with acute
+Unicode: [00cd];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ -######- \
+ ---##--- \
+ ---##--- \
+ ---##--- \
+ -######- \
+ --------
+%
+// I with circumflex
+Unicode: [00ce];
+Bitmap: \
+ --####-- \
+ -#----#- \
+ -######- \
+ ---##--- \
+ ---##--- \
+ ---##--- \
+ -######- \
+ --------
+// FIXME: ugly!
+%
+// I with umlaut
+Unicode: [00cf];
+Bitmap: \
+ --##-##- \
+ -------- \
+ -######- \
+ ---##--- \
+ ---##--- \
+ ---##--- \
+ -######- \
+ --------
+%
+// capital eth
+Unicode: [00d0];
+Bitmap: \
+ -------- \
+ -####--- \
+ -##-##-- \
+ -##--##- \
+ ####-##- \
+ -##-##-- \
+ -####--- \
+ --------
+%
+// O with grave
+Unicode: [00d2];
+Bitmap: \
+ -##----- \
+ --####-- \
+ -#-#-##- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ --####-- \
+ --------
+// FIXME: MISSING Ô Õ
+%
+// multiplication
+Unicode: [00d7];
+Bitmap: \
+ -------- \
+ -##--##- \
+ --####-- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -------- \
+ --------
+// FIXME: MISSING Ø
+%
+// U with grave
+Unicode: [00d9];
+Bitmap: \
+ --##---- \
+ ---##--- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ -######- \
+ --------
+%
+// U with acute
+Unicode: [00da];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ -######- \
+ --------
+// FIXME: MISSING Û
+%
+// Y with acute
+Unicode: [00dd];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ -##--##- \
+ -##--##- \
+ --####-- \
+ ---##--- \
+ ---##--- \
+ --------
+%
+// capital thorn
+Unicode: [00de];
+Bitmap: \
+ -------- \
+ -##----- \
+ -#####-- \
+ -##--##- \
+ -#####-- \
+ -##----- \
+ -##----- \
+ --------
+%
+// a with circumflex
+Unicode: [00e2];
+Bitmap: \
+ --####-- \
+ -#----#- \
+ -------- \
+ --####-- \
+ ----###- \
+ --##-##- \
+ ---####- \
+ --------
+%
+// a with tilde
+Unicode: [00e3];
+Bitmap: \
+ --##-##- \
+ -##-##-- \
+ -------- \
+ --####-- \
+ ----###- \
+ --##-##- \
+ ---####-
+// FIXME: touches bottom
+%
+// ae ligature
+Unicode: [00e6];
+Bitmap: \
+ -------- \
+ -------- \
+ -###-##- \
+ ---##-## \
+ -######- \
+ ##-##--- \
+ -######- \
+ --------
+// FIXME: fugly
+%
+// e with umlaut
+Unicode: [00eb];
+Bitmap: \
+ -##--##- \
+ -------- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##----- \
+ --####-- \
+ --------
+%
+// i with acute
+Unicode: [00ed];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ -------- \
+ --###--- \
+ ---##--- \
+ ---##--- \
+ --####-- \
+ --------
+%
+// lowercase eth
+Unicode: [00f0];
+Bitmap: \
+ -##-#--- \
+ --##---- \
+ -#-##--- \
+ --####-- \
+ -##--##- \
+ -##--##- \
+ --####-- \
+ --------
+%
+// o with tilde
+Unicode: [00f5];
+Bitmap: \
+ --##-##- \
+ -##-##-- \
+ -------- \
+ --####-- \
+ -##--##- \
+ -##--##- \
+ --####-- \
+ --------
+%
+// division
+Unicode: [00f7];
+Bitmap: \
+ -------- \
+ ---##--- \
+ -------- \
+ -######- \
+ -------- \
+ ---##--- \
+ -------- \
+ --------
+// FIXME: MISSING ø
+%
+// y with acute
+Unicode: [00fd];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ -------- \
+ -##--##- \
+ -##--##- \
+ --#####- \
+ ----##-- \
+ -####---
+%
+// lowercase thorn
+Unicode: [00fe];
+Bitmap: \
+ -##----- \
+ -##----- \
+ -####--- \
+ -##-##-- \
+ -####--- \
+ -##----- \
+ -##----- \
+ --------
+%
+// y with umlaut
+Unicode: [00ff];
+Bitmap: \
+ -##--##- \
+ -------- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ --#####- \
+ ----##-- \
+ -####---
+%
+// left single curly quote
+Unicode: [2018];
+Bitmap: \
+ -------- \
+ --##---- \
+ ---##--- \
+ ----##-- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// right single curly quote
+Unicode: [2019];
+Bitmap: \
+ -------- \
+ ----##-- \
+ ---##--- \
+ --##---- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// left double curly quote
+Unicode: [201c];
+Bitmap: \
+ -------- \
+ -##--##- \
+ -##--##- \
+ --##--## \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// right double curly quote
+Unicode: [201d];
+Bitmap: \
+ -------- \
+ -##--##- \
+ -##--##- \
+ ##--##-- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// spanish left single quote
+Unicode: [2039];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ ---##--- \
+ --##---- \
+ ---##--- \
+ -------- \
+ --------
+%
+// spanish right single quote
+Unicode: [203a];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ ---##--- \
+ ----##-- \
+ ---##--- \
+ -------- \
+ --------
+%
+// replacement character for missing glyphs
+Unicode: [fffd];
+Bitmap: \
+ --####-- \
+ -##--##- \
+ -#-##-#- \
+ -###-##- \
+ -######- \
+ -###-##- \
+ --####-- \
+ --------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
+%
+Unicode: [0000];
+Bitmap: ----------------------------------------------------------------
diff --git a/fonts/fixbdf.pl b/fonts/fixbdf.pl
new file mode 100644
index 0000000..e0ba143
--- /dev/null
+++ b/fonts/fixbdf.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/perl -w
+
+# clean up BDF files created by psf2bdf.
+
+$px = shift || die "$0: missing pixel size argument";
+
+
+$pointsize = $px * 10;
+$avgwidth = $px * 10; # square font!
+
+$font = "-BW-Fauxtari Fixed Mono-Medium-R-Normal--$px-$pointsize-75-75-C-$avgwidth-iso10646-1";
+
+while(<>) {
+ chomp;
+ if(/^STARTPROPERTIES\s+(\d+)/) {
+ $oldprop = $1;
+ $newprop = $oldprop + 15;
+ print <<EOF;
+STARTPROPERTIES $newprop
+FOUNDRY "BW"
+FAMILY_NAME "Fauxtari Fixed Mono"
+FACE_NAME "Fauxtari $px"
+WEIGHT_NAME "Medium"
+SLANT "R"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+PIXEL_SIZE $px
+POINT_SIZE $pointsize
+RESOLUTION_X 75
+RESOLUTION_Y 75
+SPACING "C"
+AVERAGE_WIDTH $avgwidth
+CHARSET_REGISTRY "iso10646"
+CHARSET_ENCODING "1"
+EOF
+ } elsif(/^FONT\s/) {
+ print "FONT $font\n";
+ } else {
+ print "$_\n";
+ }
+}
diff --git a/fonts/mkpsf.pl b/fonts/mkpsf.pl
new file mode 100644
index 0000000..8a349f1
--- /dev/null
+++ b/fonts/mkpsf.pl
@@ -0,0 +1,1358 @@
+#!/usr/bin/perl -w
+
+# Read raw font data from atari rom images, plus a few hand-drawn
+# "text bitmaps" from __DATA__.
+
+# Write 3 bitmap font "txt" files in the format txt2psf expects, then
+# runs txt2psf on them. Results in 3 fonts:
+
+# fauxtari-8.psf - 8x8 native size
+# fauxtari-16.psf - 16x16 scaled up
+# fauxtari-24.psf - 24x24 scaled up
+
+# The fiddly bits of this are getting the Unicode mappings correct.
+
+# ROM dumps are mapped to Atari address space at $C000, the regular
+# charset starts at $E000, so it's at offset $2000 (8192) in the
+# image. The XL international set is at $CC00, or offset $0C00 (3072).
+# In the Arabic ROM, the Arabic font takes the place of the standard
+# charset. All the charsets are 1K in size.
+
+# Arabic ROM, plus some info about it and a mention of the Hebrew ROM:
+# https://www.savetz.com/vintagecomputers/arabic65xe/
+
+use bytes;
+
+$fontname = "fauxtari";
+
+sub byte2line {
+ my $t = shift;
+ $t = sprintf("%08b", $t);
+ $t =~ y/0/-/;
+ $t =~ y/1/#/;
+ return $t;
+}
+
+sub scale_line {
+ my $line = shift;
+ my $scale = shift;
+ my $one = '#' x $scale;
+ my $zero = '-' x $scale;
+
+ $line =~ s/#/$one/g;
+ $line =~ s/-/$zero/g;
+ return ($line x $scale);
+}
+
+sub chr2output {
+ my $codepoint = shift;
+ my $bytes = shift;
+ my $scale = shift || 1;
+ my $unicode = "";
+
+ if(!ref $codepoint) {
+ $codepoint = [ $codepoint ];
+ }
+
+ $unicode .= sprintf("[%04x];", $_) for @$codepoint;
+
+ my $result = sprintf("%%\nUnicode: %s\nBitmap: \\\n", $unicode);
+ for(0..7) {
+ my $byte = $bytes->[$_];
+ my $line = byte2line($byte);
+ $result .= scale_line($line, $scale);
+ $result .= " \\" unless $_ == 7;
+ $result .= "\n";
+ }
+ return $result;
+}
+
+sub internal2byte {
+ my $t = shift;
+ $t =~ y/-/0/;
+ $t =~ y/#/1/;
+ return pack("B*", $t);
+}
+
+sub psf2txt_header {
+ my $charcount = shift;
+ my $scale = shift;
+ my $w = 8 * $scale;
+ my $h = 8 * $scale;
+ return <<EOF;
+%PSF2
+Version: 0
+Flags: 1
+Length: $charcount
+Width: $w
+Height: $h
+EOF
+}
+
+sub read_rom {
+ my $data;
+ my $filename = shift;
+ my $offset = shift;
+ my $charcount = shift;
+ my $len = $charcount * 8;
+ open my $fh, '<', $filename;
+ read($fh, $data, 16384);
+ close $fh;
+ return substr($data, $offset, $len);
+}
+
+# position in the map (array index) is the raw glyph number, in
+# the order we read the font data.
+# value is the Unicode codepoint. if there are multiple codepoints
+# for the glyph, make the value an array ref (see 0x1B below, the
+# Atari Escape glyph is both 0x0118 aka LATIN CAPITAL LETTER E WITH OGONEK,
+# and 0x241b aka SYMBOL FOR ESCAPE).
+sub setup_map {
+ our @map = (
+ 0x2665, # 0x00
+ 0x2523, # 0x01
+ 0x2503, # 0x02
+ 0x251b, # 0x03
+ 0x252b, # 0x04
+ 0x2513, # 0x05
+ 0x2571, # 0x06
+ 0x2572, # 0x07
+ 0x25e2, # 0x08
+ 0x2597, # 0x09
+ 0x25e3, # 0x0a
+ 0x259d, # 0x0b
+ 0x2598, # 0x0c
+ 0x2594, # 0x0d
+ 0x2581, # 0x0e
+ 0x2596, # 0x0f
+ 0x2663, # 0x10
+ 0x250f, # 0x11
+ 0x2501, # 0x12
+ 0x254b, # 0x13
+ 0x25cf, # 0x14
+ 0x2584, # 0x15
+ 0x258e, # 0x16
+ 0x2533, # 0x17
+ 0x253b, # 0x18
+ 0x258c, # 0x19
+ 0x2517, # 0x1a
+ [ 0x0118, 0x241b ], # 0x1b
+ 0x2191, # 0x1c
+ 0x2193, # 0x1d
+ 0x2190, # 0x1e
+ 0x2192, # 0x1f
+ [ 0x0020, 0xa0 ], # 0x20 (plus &nbsp;)
+ 0x0021, # 0x21
+ 0x0022, # 0x22
+ 0x0023, # 0x23
+ 0x0024, # 0x24
+ 0x0025, # 0x25
+ 0x0026, # 0x26
+ 0x0027, # 0x27
+ 0x0028, # 0x28
+ 0x0029, # 0x29
+ 0x002a, # 0x2a
+ 0x002b, # 0x2b
+ [ 0x002c, 0x00b8 ], # 0x2c (comma and cedilla)
+ [ 0x002d, 0x00ad, 0x2013, 0x2014 ], # 0x2d (plus soft hyphen, en, em)
+ 0x002e, # 0x2e
+ 0x002f, # 0x2f
+ 0x0030, # 0x30
+ 0x0031, # 0x31
+ 0x0032, # 0x32
+ 0x0033, # 0x33
+ 0x0034, # 0x34
+ 0x0035, # 0x35
+ 0x0036, # 0x36
+ 0x0037, # 0x37
+ 0x0038, # 0x38
+ 0x0039, # 0x39
+ 0x003a, # 0x3a
+ 0x003b, # 0x3b
+ 0x003c, # 0x3c
+ 0x003d, # 0x3d
+ 0x003e, # 0x3e
+ 0x003f, # 0x3f
+ 0x0040, # 0x40
+ 0x0041, # 0x41
+ 0x0042, # 0x42
+ 0x0043, # 0x43
+ 0x0044, # 0x44
+ 0x0045, # 0x45
+ 0x0046, # 0x46
+ 0x0047, # 0x47
+ 0x0048, # 0x48
+ 0x0049, # 0x49
+ 0x004a, # 0x4a
+ 0x004b, # 0x4b
+ 0x004c, # 0x4c
+ 0x004d, # 0x4d
+ 0x004e, # 0x4e
+ 0x004f, # 0x4f
+ 0x0050, # 0x50
+ 0x0051, # 0x51
+ 0x0052, # 0x52
+ 0x0053, # 0x53
+ 0x0054, # 0x54
+ 0x0055, # 0x55
+ 0x0056, # 0x56
+ 0x0057, # 0x57
+ 0x0058, # 0x58
+ 0x0059, # 0x59
+ 0x005a, # 0x5a
+ 0x005b, # 0x5b
+ 0x005c, # 0x5c
+ 0x005d, # 0x5d
+ 0x005e, # 0x5e
+ 0x005f, # 0x5f
+ 0x25c6, # 0x60
+ 0x0061, # 0x61
+ 0x0062, # 0x62
+ 0x0063, # 0x63
+ 0x0064, # 0x64
+ 0x0065, # 0x65
+ 0x0066, # 0x66
+ 0x0067, # 0x67
+ 0x0068, # 0x68
+ 0x0069, # 0x69
+ 0x006a, # 0x6a
+ 0x006b, # 0x6b
+ 0x006c, # 0x6c
+ 0x006d, # 0x6d
+ 0x006e, # 0x6e
+ 0x006f, # 0x6f
+ 0x0070, # 0x70
+ 0x0071, # 0x71
+ 0x0072, # 0x72
+ 0x0073, # 0x73
+ 0x0074, # 0x74
+ 0x0075, # 0x75
+ 0x0076, # 0x76
+ 0x0077, # 0x77
+ 0x0078, # 0x78
+ 0x0079, # 0x79
+ 0x007a, # 0x7a
+ 0x2660, # 0x7b
+ [ 0x007c, 0x0622, 0xfe81, 0xfe82 ], # 0x7c, pipe + arabic ﺁ
+ 0x21b0, # 0x7d
+ 0x25c0, # 0x7e
+ 0x25b6, # 0x7f
+
+# next, 28 "international" characters from the xl rom $cc00 area
+# á
+ 0x00e1, # 0x80
+# ù
+ 0x00f9, # 0x81
+# Ñ
+ 0x00d1, # 0x82
+# É
+ 0x00c9, # 0x83
+# ç
+ 0x00e7, # 0x84
+# ô (or is it?)
+ 0x00f4, # 0x85
+# ò
+ 0x00f2, # 0x86
+# ì
+ 0x00ec, # 0x87
+# £
+ 0x00a3, # 0x88
+# ï
+ 0x00ef, # 0x89
+# ü
+ 0x00fc, # 0x8a
+# ä
+ 0x00e4, # 0x8b
+# Ö
+ 0x00d6, # 0x8c
+# ú
+ 0x00fa, # 0x8d
+# ó
+ 0x00f3, # 0x8e
+# ö
+ 0x00f6, # 0x8f
+# Ü
+ 0x00dc, # 0x90
+# å
+ 0x00e5, # 0x91
+# û (?)
+ 0x00fb, # 0x92
+# î
+ 0x00ee, # 0x93
+# é
+ 0x00e9, # 0x94
+# è
+ 0x00e8, # 0x95
+# ñ
+ 0x00f1, # 0x96
+# ê
+ 0x00ea, # 0x97
+# ȧ
+ 0x0227, # 0x98
+# à
+ 0x00e0, # 0x99
+# ¡
+ 0x00a1, # 0x9a
+# Ä
+ 0x00c4, # 0x9b
+
+# hebrew rom is probably a 3rd-party hack, afaik never released by
+# atari, but i'm told the glyphs look good (by someone who reads hebrew),
+# so include it here.
+ 0x05d0, # 0x9c
+ 0x05d1, # 0x9d
+ 0x05d2, # 0x9e
+ 0x05d3, # 0x9f
+ 0x05d4, # 0xa0
+ 0x05d5, # 0xa1
+ 0x05d6, # 0xa2
+ 0x05d7, # 0xa3
+ 0x05d8, # 0xa4
+ 0x05d9, # 0xa5
+ 0x05da, # 0xa6
+ 0x05db, # 0xa7
+ 0x05dc, # 0xa8
+ 0x05dd, # 0xa9
+ 0x05de, # 0xaa
+ 0x05df, # 0xab
+ 0x05e0, # 0xac
+ 0x05e1, # 0xad
+ 0x05e2, # 0xae
+ 0x05e3, # 0xaf
+ 0x05e4, # 0xb0
+ 0x05e5, # 0xb1
+ 0x05e6, # 0xb2
+ 0x05e7, # 0xb3
+ 0x05e8, # 0xb4
+ 0x05e9, # 0xb5
+ 0x05ea, # 0xb6
+
+# polish rom. probably a 3rd-party hack, but there are a lot of polish
+# atari users out there.
+ 0x0179, # 0xb7
+ 0x0105, # 0xb8
+ 0x017a, # 0xb9
+ 0x0107, # 0xba
+ 0x015a, # 0xbb
+ 0x0119, # 0xbc
+# german sharp s, not polish at all:
+ 0x00df, # 0xbd
+ 0x0141, # 0xbe
+ 0x0142, # 0xbf
+ 0x0143, # 0xc0
+ 0x0144, # 0xc1
+ 0x00d3, # 0xc3
+# 0xc3 weird-looking v?
+# next glyph is e with ogonek, we already have it as esc
+ 0x015b, # 0xc4
+ 0x0106, # 0xc5
+ 0x0104, # 0xc6
+ 0x017b, # 0xc7
+ 0x017c, # 0xc8
+
+# the rest are from the arabic xe rom
+ 0x0660, # eastern arabic numeral 0
+ 0x0661, # eastern arabic numeral 1
+ 0x0662, # eastern arabic numeral 2
+ 0x0663, # eastern arabic numeral 3
+ 0x0664, # eastern arabic numeral 4
+ 0x0665, # eastern arabic numeral 5
+ 0x0666, # eastern arabic numeral 6
+ 0x0667, # eastern arabic numeral 7
+ 0x0668, # eastern arabic numeral 8
+ 0x0669, # eastern arabic numeral 9
+
+# todo: figure out the arabic letter mappings. might need someone who
+# actually reads arabic to make sense of them... what i've got is just
+# a guess.
+ [ 0x0624, 0xfe85, 0xfe86 ], # 0x3c, maybe?
+
+ [ 0x0634, 0xfeb5, 0xfeb6, 0xfeb8 ], # 0x41
+ [ 0x0648, 0xfeed, 0xfeee ], # 0x42
+ [ 0x0629, 0xfe93, 0xfe94 ], # 0x43
+ [ 0x064a, 0xfef1, 0xfef2, 0xfef4 ], # 0x44
+ [ 0x062b, 0xfe99, 0xfe9a, 0xfe9c ], # 0x45
+ [ 0x0628, 0xfe8f, 0xfe90, 0xfe92 ], # 0x46
+ [ 0x0644, 0xfedd, 0xfede, 0xfee0 ], # 0x47
+ [ 0x0621, 0xfe80 ], # 0x48
+ [ 0x0647, 0xfee9, 0xfeea, 0xfeec ], # 0x49
+ [ 0x062a, 0xfe95, 0xfe96, 0xfe98 ], # 0x4a
+ [ 0x0646, 0xfee5, 0xfee6, 0xfee8 ], # 0x4b
+ [ 0x0645, 0xfee1, 0xfee2, 0xfee4 ], # 0x4c
+ [ 0x062c, 0xfe9d, 0xfe9e, 0xfea0 ], # 0x4d
+ # xxx don't know what 0x4e is
+ [ 0x062e, 0xfea5, 0xfea6, 0xfea8 ], # 0x4f
+ [ 0x062d, 0xfea1, 0xfea2, 0xfea4 ], # 0x50
+ [ 0x0636, 0xfebd, 0xfebe, 0xfec0 ], # 0x51
+ [ 0x0642, 0xfed5, 0xfed6, 0xfed8 ], # 0x52
+ [ 0x0633, 0xfeb1, 0xfeb2, 0xfeb4 ], # 0x53
+ [ 0x0641, 0xfed1, 0xfed2, 0xfed4 ], # 0x54
+ [ 0x0639, 0xfec9, 0xfeca, 0xfecc ], # 0x55
+ [ 0x0643, 0xfed9, 0xfeda, 0xfedc ], # 0x56
+ [ 0x0635, 0xfeb9, 0xfeba, 0xfebc ], # 0x57
+ # xxx don't know what 0x58 is
+ [ 0x063a, 0xfecd, 0xfece, 0xfed0 ], # 0x59
+ [ 0x0649, 0xfeef, 0xfef0 ], # 0x5a
+ [ 0x0632, 0xfeaf, 0xfeb0 ], # 0x60
+ 0xfeb7, # 0x61
+ # xxx 0x62 isn't really both ﺩ and ﺭ but where's the atari's ﺭ at?
+ [ 0x062f, 0xfea9, 0xfeaa, 0x0631, 0xfead, 0xfeae ], # 0x62
+ [ 0x0630, 0xfeab, 0xfeac ], # 0x63
+ 0xfef3, # 0x64
+ 0xfe9b, # 0x65
+ 0xfe91, # 0x66
+ 0xfedf, # 0x67
+ [ 0x0627, 0xfe8d, 0xfe8e ], # 0x68
+ 0xfeeb, # 0x69
+ 0xfe97, # 0x6a
+ 0xfee7, # 0x6b
+ 0xfee3, # 0x6c
+ 0xfe9f, # 0x6d
+ [ 0xfef7, 0xf3f8 ], # 0x6e
+ 0xfea7, # 0x6f
+ 0xfea3, # 0x70
+ 0xfebf, # 0x71
+ 0xfed7, # 0x72
+ 0xfeb3, # 0x73
+ 0xfed3, # 0x74
+ 0xfecb, # 0x75
+ 0xfedb, # 0x76
+ 0xfebb, # 0x77
+ [ 0x0637, 0xfec1, 0xfec2, 0xfec4, 0xfec3 ], # 0x78
+ 0xfecf, # 0x79
+ [ 0x0638, 0xfec5, 0xfec6, 0xfec8, 0xfec7 ], # 0x7a
+ 0x061f, # 0x7f
+ );
+}
+
+### main()
+setup_map();
+
+@scale1 = ();
+@scale2 = ();
+@scale3 = ();
+
+$raw .= read_rom("atarixl.rom", 0x2200, 32);
+$raw .= read_rom("atarixl.rom", 0x2000, 32);
+$raw .= read_rom("atarixl.rom", 0x2100, 32);
+$raw .= read_rom("atarixl.rom", 0x2300, 32);
+$raw .= read_rom("atarixl.rom", 0xe00, 26);
+$raw .= read_rom("atarixl.rom", 0xf00, 1);
+$raw .= read_rom("atarixl.rom", 0xfd8, 1);
+
+$raw .= read_rom("xl_hebrew.rom", 0xf00, 27);
+
+$raw .= read_rom("xl_polish.rom", 0xe00, 6);
+$raw .= read_rom("xl_polish.rom", 0xe50, 5);
+$raw .= read_rom("xl_polish.rom", 0xe80, 1);
+$raw .= read_rom("xl_polish.rom", 0xe98, 1);
+$raw .= read_rom("xl_polish.rom", 0xeb0, 3);
+$raw .= read_rom("xl_polish.rom", 0xed0, 1);
+
+$raw .= read_rom("xe_arabic.rom", 0x2000+8*15, 10);
+$raw .= read_rom("xe_arabic.rom", 0x2000+8*0x3c, 1);
+$raw .= read_rom("xe_arabic.rom", 0x2000+8*0x41, 13);
+$raw .= read_rom("xe_arabic.rom", 0x2000+8*0x4f, 9);
+$raw .= read_rom("xe_arabic.rom", 0x2000+8*0x59, 2);
+$raw .= read_rom("xe_arabic.rom", 0x2000+8*0x60, 27);
+$raw .= read_rom("xe_arabic.rom", 0x2000+8*0x7f, 1);
+
+$cnt = 0;
+while($raw =~ /(.{8})/gc) {
+ my @bytes;
+ my $got = $1;
+ my $chr = $map[$cnt++];
+ die "$0: incomplete map" unless defined $chr;
+ #warn $got;
+ push @bytes, ord(substr($got, $_, 1)) for(0..7);
+ #warn $_ for @bytes;
+ push @scale1, chr2output($chr, \@bytes, 1);
+ push @scale2, chr2output($chr, \@bytes, 2);
+ push @scale3, chr2output($chr, \@bytes, 3);
+}
+
+while(<DATA>) {
+ push @scale1, $_;
+ $cnt++ if /^%/;
+ if(/^\s*[-#]/) {
+ push @scale2, scale_line($_, 2);
+ push @scale3, scale_line($_, 3);
+ } else {
+ push @scale2, $_;
+ push @scale3, $_;
+ }
+}
+
+#warn "$cnt characters\n";
+#warn "(padding to 256 characters)\n" unless $cnt >= 256;
+#warn "(padding to 512 characters)\n" unless $cnt >= 512;
+
+# 512 glyphs is the max for a PSF font. There can be more
+# *codepoints*, because the Unicode directory allows the same
+# glyph to represent multiple codepoints (e.g. space and
+# non-breaking space).
+if($cnt > 512) {
+ die "$0: too many glyphs ($cnt > 512)";
+}
+
+# The kernel refuses to load a font that isn't exactly
+# 256 or 512 glyphs, so we have to pad with junk glyphs.
+while($cnt < 512) {
+ my $fake = "%\nUnicode: [0000];\nBitmap: ";
+ push @scale1, $fake . (("-" x 8) x 8) . "\n";
+ push @scale2, $fake . (("-" x 16) x 16) . "\n";
+ push @scale3, $fake . (("-" x 24) x 24) . "\n";
+ $cnt++;
+}
+
+#warn "$cnt characters with padding\n";
+
+# What is dupglyphs.pl for?
+# PSF allows the same glyph to represent multiple codepoints (e.g.
+# space and NBSP, or hyphen/soft-hyphen/en-dash). We only get 512
+# glyphs max for a PSF, so we definitely want to use this.
+# BDF on the other hand doesn't allow this. So if the same glyph
+# data is to be used for multiple codepoints in BDF, the glyph data
+# has to be repeated for each codepoint. Bloats the font, but not
+# too much. The BDF is also what gets made into the TTF. I'm pretty
+# sure TTF supports multiple codepoints per glyph, but until I
+# learn some other way besides bitmapfont2ttf to generate the TTF,
+# it also will have dup glyph bloat. On the bright side, dupglyphs.pl
+# removes all the padding characters required by the psf font.
+sub mkfonts {
+ my $px = shift;
+ my $scaled_data = shift;
+ my $scale = shift;
+
+ open $fh, '>', "$fontname-$px.txt" or die $!;
+ print $fh psf2txt_header($cnt, $scale);
+ print $fh $_ for(@$scaled_data);
+ close $fh;
+
+ system("txt2psf $fontname-$px.txt $fontname-$px.psf");
+ system("perl dupglyphs.pl $fontname-$px.txt | perl sorttxtfont.pl | txt2psf | psf2bdf --defchar=0 --iso10646 --fontname=$fontname-$px | perl ./fixbdf.pl $px > $fontname-$px.bdf");
+}
+
+mkfonts(8, \@scale1, 1);
+mkfonts(16, \@scale2, 2);
+mkfonts(24, \@scale3, 3);
+
+exit 0;
+
+__DATA__
+%
+// dotted-box (no such glyph)
+Unicode: [0000];
+Bitmap: \
+ -------- \
+ -##-###- \
+ -#------ \
+ ------#- \
+ -#------ \
+ ------#- \
+ -###-##- \
+ --------
+%
+// backtick
+Unicode: [0060];
+Bitmap: \
+ -------- \
+ --##---- \
+ --##---- \
+ ---##--- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// curlies
+Unicode: [007b];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ ---##--- \
+ --##---- \
+ ---##--- \
+ ---##--- \
+ ----##-- \
+ --------
+%
+Unicode: [007d];
+Bitmap: \
+ --##---- \
+ ---##--- \
+ ---##--- \
+ ----##-- \
+ ---##--- \
+ ---##--- \
+ --##---- \
+ --------
+%
+// tilde
+Unicode: [007e];
+Bitmap: \
+ -------- \
+ -###--## \
+ ##-##-## \
+ ##--###- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// euro
+Unicode: [20ac];
+Bitmap: \
+ ---####- \
+ --##---- \
+ -#####-- \
+ --##---- \
+ -#####-- \
+ --##---- \
+ ---####- \
+ --------
+%
+// spanish left-quote
+Unicode: [00ab];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ -##--##- \
+ ##--##-- \
+ -##--##- \
+ -------- \
+ --------
+%
+// spanish right-quote
+Unicode: [00bb];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ ##--##-- \
+ -##--##- \
+ ##--##-- \
+ -------- \
+ --------
+%
+// spanish inverted question mark
+Unicode: [00bf];
+Bitmap: \
+ -------- \
+ ---##--- \
+ -------- \
+ ---##--- \
+ ----##-- \
+ -##--##- \
+ --####-- \
+ --------
+%
+// copyright
+Unicode: [00a9];
+Bitmap: \
+ -#####-- \
+ #-----#- \
+ #--##-#- \
+ #-#---#- \
+ #--##-#- \
+ #-----#- \
+ -#####-- \
+ --------
+%
+// registered
+Unicode: [00ae];
+Bitmap: \
+ -#####-- \
+ #-----#- \
+ #-##--#- \
+ #-#-#-#- \
+ #-##--#- \
+ #-#-#-#- \
+ -#####-- \
+ --------
+%
+// degrees
+Unicode: [00b0];[00ba];
+Bitmap: \
+ -------- \
+ ---##--- \
+ --#--#-- \
+ ---##--- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// cents
+Unicode: [00a2];
+Bitmap: \
+ -------- \
+ ---##--- \
+ --#####- \
+ -##----- \
+ -##----- \
+ --#####- \
+ ---##--- \
+ --------
+%
+// "currency sign"
+// FIXME: not bold enough
+Unicode: [00a4];
+Bitmap: \
+ -------- \
+ -#----#- \
+ --####-- \
+ --#--#-- \
+ --#--#-- \
+ --####-- \
+ -#----#- \
+ --------
+%
+// yen
+Unicode: [00a5];
+Bitmap: \
+ -##--##- \
+ -##--##- \
+ ---##--- \
+ -######- \
+ ---##--- \
+ -######- \
+ ---##--- \
+ --------
+%
+// broken bar
+Unicode: [00a6];
+Bitmap: \
+ -------- \
+ ---##--- \
+ ---##--- \
+ -------- \
+ ---##--- \
+ ---##--- \
+ ---##--- \
+ --------
+%
+// section sign
+// FIXME: not bold enough
+Unicode: [00a7];
+Bitmap: \
+ ---###-- \
+ --#----- \
+ ---##--- \
+ --#--#-- \
+ ---##--- \
+ -----#-- \
+ --###--- \
+ --------
+%
+// diaresis (cha, cha, cha!)
+Unicode: [00a8];
+Bitmap: \
+ -------- \
+ -##--##- \
+ -##--##- \
+ -------- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// feminine ordinal (superscript a)
+Unicode: [00aa];
+Bitmap: \
+ -------- \
+ --####-- \
+ ----###- \
+ --##-##- \
+ ---####- \
+ -------- \
+ -------- \
+ --------
+%
+// "not" sign
+Unicode: [00ac];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ -######- \
+ -----##- \
+ -------- \
+ -------- \
+ --------
+%
+// macron
+Unicode: [00af];
+Bitmap: \
+ -------- \
+ -######- \
+ -------- \
+ -------- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// plus-minus
+Unicode: [00b1];
+Bitmap: \
+ -------- \
+ ---##--- \
+ -######- \
+ ---##--- \
+ -------- \
+ -######- \
+ -------- \
+ --------
+%
+// superscript 2
+// FIXME: not bold enough
+Unicode: [00b2];
+Bitmap: \
+ -------- \
+ --##---- \
+ -#--#--- \
+ ---#---- \
+ --#----- \
+ -####--- \
+ -------- \
+ --------
+%
+// FIXME: not bold enough
+// superscript 3
+Unicode: [00b3];
+Bitmap: \
+ -------- \
+ --##---- \
+ -#--#--- \
+ ---#---- \
+ -#--#--- \
+ --##---- \
+ -------- \
+ --------
+%
+// acute
+Unicode: [00b4];
+Bitmap: \
+ -------- \
+ ----##-- \
+ ---##--- \
+ -------- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// mu
+Unicode: [00b5];
+Bitmap: \
+ -------- \
+ -------- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ --#####- \
+ -----##- \
+ --------
+%
+// paragraph
+Unicode: [00b6];
+Bitmap: \
+ -------- \
+ --##-##- \
+ -###-##- \
+ -###-##- \
+ --##-##- \
+ ---#-##- \
+ ---#-##- \
+ --------
+%
+// middle dot
+Unicode: [00b7];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ ---##--- \
+ ---##--- \
+ -------- \
+ -------- \
+ --------
+%
+// superscript 1
+Unicode: [00b9];
+Bitmap: \
+ -------- \
+ ---##--- \
+ --###--- \
+ ---##--- \
+ --####-- \
+ -------- \
+ -------- \
+ --------
+// FIXME: MISSING fractions, 00bc/00bd/00bc, ¼ ½ ¾, hard to do in 8x8
+%
+// A with grave
+Unicode: [00c0];
+Bitmap: \
+ -------- \
+ --##---- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##--##- \
+ --------
+%
+// A with acute
+Unicode: [00c1];
+Bitmap: \
+ -------- \
+ ----##-- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##--##- \
+ --------
+%
+// A with circumflex
+Unicode: [00c2];
+Bitmap: \
+ --####-- \
+ -#----#- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##--##- \
+ --------
+%
+// A with tilde
+Unicode: [00c3];
+Bitmap: \
+ --##-##- \
+ -##-##-- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##--##- \
+ --------
+%
+// A with ring
+Unicode: [00c5];
+Bitmap: \
+ ---##--- \
+ --#--#-- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##--##- \
+ --------
+%
+// AE ligature
+Unicode: [00c6];
+Bitmap: \
+ -------- \
+ --#####- \
+ -####--- \
+ ##-##--- \
+ #######- \
+ ##-##--- \
+ ##-####- \
+ --------
+// FIXME: this is hideous!
+%
+// C with cedilla
+Unicode: [00c7];
+Bitmap: \
+ -------- \
+ --####-- \
+ -##--##- \
+ -##----- \
+ -##--##- \
+ --####-- \
+ ---##--- \
+ --##----
+%
+// E with circumflex
+Unicode: [00ca];
+Bitmap: \
+ --####-- \
+ -#----#- \
+ -######- \
+ -##----- \
+ -#####-- \
+ -##----- \
+ -######- \
+ --------
+// FIXME: ugly!
+%
+// E with umlaut
+Unicode: [00cb];
+Bitmap: \
+ --##-##- \
+ -------- \
+ -######- \
+ -##----- \
+ -#####-- \
+ -##----- \
+ -######- \
+ --------
+%
+// I with grave
+Unicode: [00cc];
+Bitmap: \
+ --##---- \
+ ---##--- \
+ -######- \
+ ---##--- \
+ ---##--- \
+ ---##--- \
+ -######- \
+ --------
+%
+// I with acute
+Unicode: [00cd];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ -######- \
+ ---##--- \
+ ---##--- \
+ ---##--- \
+ -######- \
+ --------
+%
+// I with circumflex
+Unicode: [00ce];
+Bitmap: \
+ --####-- \
+ -#----#- \
+ -######- \
+ ---##--- \
+ ---##--- \
+ ---##--- \
+ -######- \
+ --------
+// FIXME: ugly!
+%
+// I with umlaut
+Unicode: [00cf];
+Bitmap: \
+ --##-##- \
+ -------- \
+ -######- \
+ ---##--- \
+ ---##--- \
+ ---##--- \
+ -######- \
+ --------
+%
+// capital eth
+Unicode: [00d0];
+Bitmap: \
+ -------- \
+ -####--- \
+ -##-##-- \
+ -##--##- \
+ ####-##- \
+ -##-##-- \
+ -####--- \
+ --------
+%
+// O with grave
+Unicode: [00d2];
+Bitmap: \
+ -##----- \
+ --####-- \
+ -#-#-##- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ --####-- \
+ --------
+// FIXME: MISSING Ô Õ
+%
+// multiplication
+Unicode: [00d7];
+Bitmap: \
+ -------- \
+ -##--##- \
+ --####-- \
+ ---##--- \
+ --####-- \
+ -##--##- \
+ -------- \
+ --------
+// FIXME: MISSING Ø
+%
+// U with grave
+Unicode: [00d9];
+Bitmap: \
+ --##---- \
+ ---##--- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ -######- \
+ --------
+%
+// U with acute
+Unicode: [00da];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ -######- \
+ --------
+// FIXME: MISSING Û
+%
+// Y with acute
+Unicode: [00dd];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ -##--##- \
+ -##--##- \
+ --####-- \
+ ---##--- \
+ ---##--- \
+ --------
+%
+// capital thorn
+Unicode: [00de];
+Bitmap: \
+ -------- \
+ -##----- \
+ -#####-- \
+ -##--##- \
+ -#####-- \
+ -##----- \
+ -##----- \
+ --------
+%
+// a with circumflex
+Unicode: [00e2];
+Bitmap: \
+ --####-- \
+ -#----#- \
+ -------- \
+ --####-- \
+ ----###- \
+ --##-##- \
+ ---####- \
+ --------
+%
+// a with tilde
+Unicode: [00e3];
+Bitmap: \
+ --##-##- \
+ -##-##-- \
+ -------- \
+ --####-- \
+ ----###- \
+ --##-##- \
+ ---####-
+// FIXME: touches bottom
+%
+// ae ligature
+Unicode: [00e6];
+Bitmap: \
+ -------- \
+ -------- \
+ -###-##- \
+ ---##-## \
+ -######- \
+ ##-##--- \
+ -######- \
+ --------
+// FIXME: fugly
+%
+// e with umlaut
+Unicode: [00eb];
+Bitmap: \
+ -##--##- \
+ -------- \
+ --####-- \
+ -##--##- \
+ -######- \
+ -##----- \
+ --####-- \
+ --------
+%
+// i with acute
+Unicode: [00ed];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ -------- \
+ --###--- \
+ ---##--- \
+ ---##--- \
+ --####-- \
+ --------
+%
+// lowercase eth
+Unicode: [00f0];
+Bitmap: \
+ -##-#--- \
+ --##---- \
+ -#-##--- \
+ --####-- \
+ -##--##- \
+ -##--##- \
+ --####-- \
+ --------
+%
+// o with tilde
+Unicode: [00f5];
+Bitmap: \
+ --##-##- \
+ -##-##-- \
+ -------- \
+ --####-- \
+ -##--##- \
+ -##--##- \
+ --####-- \
+ --------
+%
+// division
+Unicode: [00f7];
+Bitmap: \
+ -------- \
+ ---##--- \
+ -------- \
+ -######- \
+ -------- \
+ ---##--- \
+ -------- \
+ --------
+// FIXME: MISSING ø
+%
+// y with acute
+Unicode: [00fd];
+Bitmap: \
+ ----##-- \
+ ---##--- \
+ -------- \
+ -##--##- \
+ -##--##- \
+ --#####- \
+ ----##-- \
+ -####---
+%
+// lowercase thorn
+Unicode: [00fe];
+Bitmap: \
+ -##----- \
+ -##----- \
+ -####--- \
+ -##-##-- \
+ -####--- \
+ -##----- \
+ -##----- \
+ --------
+%
+// y with umlaut
+Unicode: [00ff];
+Bitmap: \
+ -##--##- \
+ -------- \
+ -##--##- \
+ -##--##- \
+ -##--##- \
+ --#####- \
+ ----##-- \
+ -####---
+%
+// left single curly quote
+Unicode: [2018];
+Bitmap: \
+ -------- \
+ --##---- \
+ ---##--- \
+ ----##-- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// right single curly quote
+Unicode: [2019];
+Bitmap: \
+ -------- \
+ ----##-- \
+ ---##--- \
+ --##---- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// left double curly quote
+Unicode: [201c];
+Bitmap: \
+ -------- \
+ -##--##- \
+ -##--##- \
+ --##--## \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// right double curly quote
+Unicode: [201d];
+Bitmap: \
+ -------- \
+ -##--##- \
+ -##--##- \
+ ##--##-- \
+ -------- \
+ -------- \
+ -------- \
+ --------
+%
+// spanish left single quote
+Unicode: [2039];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ ---##--- \
+ --##---- \
+ ---##--- \
+ -------- \
+ --------
+%
+// spanish right single quote
+Unicode: [203a];
+Bitmap: \
+ -------- \
+ -------- \
+ -------- \
+ ---##--- \
+ ----##-- \
+ ---##--- \
+ -------- \
+ --------
+%
+// replacement character for missing glyphs
+Unicode: [fffd];
+Bitmap: \
+ --####-- \
+ -##--##- \
+ -#-##-#- \
+ -###-##- \
+ -######- \
+ -###-##- \
+ --####-- \
+ --------
diff --git a/fonts/sorttxtfont.pl b/fonts/sorttxtfont.pl
new file mode 100644
index 0000000..62c37cc
--- /dev/null
+++ b/fonts/sorttxtfont.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/perl -w
+
+# sort a font in psftools .txt format, by unicode codepoint.
+# only the *first* codepoint per glyph is used as the key.
+
+undef $/;
+$_ = <>;
+@glyphs = split "%";
+shift @glyphs;
+$header = "%" . (shift @glyphs);
+
+# 0 is a special case because fonts intended to become PSFs will
+# be padded with extra characters with encoding 0. only the first
+# one seen is the real one.
+$zeroseen = 0;
+
+for(@glyphs) {
+ my($cp, $dcp);
+ ($cp) = (/Unicode: \[([0-9a-fA-F]+)/);
+ $dcp = eval "0x$cp";
+ if($dcp == 0) {
+ next if $zeroseen++;
+ }
+ if(defined $sortme{$dcp}) {
+ warn "duplicate codepoint 0x$cp\n";
+ }
+ $sortme{$dcp} = $_;
+}
+
+for(sort { $a <=> $b } keys %sortme) {
+ push @sorted, $sortme{$_};
+}
+print join("%", $header, @sorted);
diff --git a/install-fonts.sh b/install-fonts.sh
new file mode 100644
index 0000000..7d803f8
--- /dev/null
+++ b/install-fonts.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# Install the BDF fonts where they belong. DESTDIR, BDFDIR, and TTFDIR
+# must be given as arguments. If DESTDIR is blank, the X server and
+# fontconfig will be informed about the new fonts. If DESTDIR is NOT
+# blank, we're not really installing the fonts system-wide, so no
+# extra config will be done (the files will just be copied).
+
+DESTDIR="$1"
+BDFDIR="$2"
+TTFDIR="$3"
+
+SYSTEM=yes
+
+if [ "$DISPLAY" = "" ]; then
+ SYSTEM=no
+fi
+
+if [ "$DESTDIR" != "" ]; then
+ BDFDIR="$DESTDIR/$BDFDIR"
+ TTFDIR="$DESTDIR/$TTFDIR"
+ SYSTEM=no
+fi
+
+if [ "$#" != "3" -o "$BDFDIR" = "" ]; then
+ echo "usage: $0 <destdir> <bdfdir> <ttfdir>"
+ exit 1
+fi
+
+echo -n "$0: will "
+if [ "$SYSTEM" != "yes" ]; then
+ echo -n "NOT "
+fi
+echo "run mkfontdir/mkfontscale/xset/fc-cache"
+
+install_font() {
+ BDF=fauxtari-$1.bdf
+ ALIAS=fauxtari-$1
+ cp "fonts/$BDF" "$BDFDIR"
+ chown root:root "$BDFDIR/$BDF" &> /dev/null
+ if [ "$SYSTEM" = "yes" ]; then
+ ( cd "$BDFDIR"
+ mkfontdir
+ mkfontscale
+ if ! grep "^$ALIAS" fonts.alias &> /dev/null; then
+ NAME="$( grep "^$BDF" fonts.dir | cut -d' ' -f2- )"
+ echo "$ALIAS \"$NAME\"" >> fonts.alias
+ fi
+ )
+ fi
+}
+
+mkdir -p "$BDFDIR" || exit 1
+mkdir -p "$TTFDIR" || exit 1
+install_font 8
+install_font 16
+install_font 24
+
+cp "fonts/FauxtariScalableMono.ttf" "$TTFDIR"
+if [ "$SYSTEM" = "yes" ]; then
+ fc-cache -f "$BDFDIR" &> /dev/null
+ xset fp rehash &> /dev/null
+ if [ "$BDFDIR" != "$TTFDIR" ]; then
+ cd "$TTFDIR"
+ mkfontdir
+ mkfontscale
+ fc-cache -f "$TTFDIR" &> /dev/null
+ fi
+fi
diff --git a/int_disk_tokens.c b/int_disk_tokens.c
new file mode 100644
index 0000000..3ea0f77
--- /dev/null
+++ b/int_disk_tokens.c
@@ -0,0 +1,94 @@
+const char *int_disk_cmds[] = {
+ "REM", /* $00 */
+ "DATA", /* $01 */
+ "INPUT", /* $02 */
+ "COLOR", /* $03 */
+ "LIST", /* $04 */
+ "ENTER", /* $05 */
+ "LET", /* $06 */
+ "IF", /* $07 */
+ "FOR", /* $08 */
+ "NEXT", /* $09 */
+ "GOTO", /* $0A */
+ "GO TO", /* $0B */
+ "GOSUB", /* $0C */
+ "TRAP", /* $0D */
+ "BYE", /* $0E */
+ "CONT", /* $0F */
+ "COM", /* $10 */
+ "CLOSE", /* $11 */
+ "CLR", /* $12 */
+ "VBLANKWAIT", /* $13 */
+ "DIM", /* $14 */
+ "END", /* $15 */
+ "NEW", /* $16 */
+ "OPEN", /* $17 */
+ "LOAD", /* $18 */
+ "SAVE", /* $19 */
+ "STATUS", /* $1A */
+ "NOTE", /* $1B */
+ "POINT", /* $1C */
+ "XIO", /* $1D */
+ "ON", /* $1E */
+ "POKE", /* $1F */
+ "PRINT", /* $20 */
+ "READ", /* $21 */
+ "RESTORE", /* $22 */
+ "RETURN", /* $23 */
+ "RUN", /* $24 */
+ "STOP", /* $25 */
+ "POP", /* $26 */
+ "?", /* $27 */
+ "GET", /* $28 */
+ "PUT", /* $29 */
+ "GRAPHICS", /* $2A */
+ "PLOT", /* $2B */
+ "POSITION", /* $2C */
+ "DOS", /* $2D */
+ "DRAWTO", /* $2E */
+ "SETCOLOR", /* $2F */
+ "LOCATE", /* $30 */
+ "SOUND", /* $31 */
+ "LPRINT", /* $32 */
+ "CSAVE", /* $33 */
+ "CLOAD", /* $34 */
+ "", /* $35 */
+ "ERROR- ", /* $36 */
+ "WHILE", /* $37 */
+ "ENDWHILE", /* $38 */
+ "TRACEOFF", /* $39 */
+ "TRACE", /* $3A */
+ "ELSE", /* $3B */
+ "ENDIF", /* $3C */
+ "DPOKE", /* $3D */
+ "LOMEM", /* $3E */
+ "DEL", /* $3F */
+ "VINC", /* $40 */
+ "VDEC", /* $41 */
+ "VCONST", /* $42 */
+ "BPUT", /* $43 */
+ "BGET", /* $44 */
+ "TAB", /* $45 */
+ "CP", /* $46 */
+ "ERASE", /* $47 */
+ "PROTECT", /* $48 */
+ "UNPROTECT", /* $49 */
+ "DIR", /* $4A */
+ "RENAME", /* $4B */
+ "MOVE", /* $4C */
+ "MISSILE", /* $4D */
+ "PMCLR", /* $4E */
+ "PMCOLOR", /* $4F */
+ "PMGRAPHICS", /* $50 */
+ "PMMOVE", /* $51 */
+ "PMWIDTH", /* $52 */
+ "SET", /* $53 */
+ "LVAR", /* $54 */
+ "RENUM", /* $55 */
+ "FAST", /* $56 */
+ "NUM", /* $57 */
+ "END", /* $58 */
+};
+
+const int int_disk_cmd_size = sizeof(int_disk_cmds);
+
diff --git a/int_disk_tokens.h b/int_disk_tokens.h
new file mode 100644
index 0000000..f5059d9
--- /dev/null
+++ b/int_disk_tokens.h
@@ -0,0 +1,5 @@
+extern const char *int_disk_cmds[];
+#define int_disk_ops int_ops
+
+extern const int int_disk_cmd_size;
+#define int_disk_ops_size int_ops_size
diff --git a/int_tokens.c b/int_tokens.c
new file mode 100644
index 0000000..9875e75
--- /dev/null
+++ b/int_tokens.c
@@ -0,0 +1,189 @@
+const char *int_cmds[] = {
+ "REM", /* $00 */
+ "DATA", /* $01 */
+ "INPUT", /* $02 */
+ "COLOR", /* $03 */
+ "LIST", /* $04 */
+ "ENTER", /* $05 */
+ "LET", /* $06 */
+ "IF", /* $07 */
+ "FOR", /* $08 */
+ "NEXT", /* $09 */
+ "GOTO", /* $0A */
+ "GO TO", /* $0B */
+ "GOSUB", /* $0C */
+ "TRAP", /* $0D */
+ "BYE", /* $0E */
+ "CONT", /* $0F */
+ "COM", /* $10 */
+ "CLOSE", /* $11 */
+ "CLR", /* $12 */
+ "VBLANKWAIT", /* $13 */
+ "HITCLR", /* $14 */
+ " ", /* $15 */
+ "DIM", /* $16 */
+ "END", /* $17 */
+ "NEW", /* $18 */
+ "OPEN", /* $19 */
+ "LOAD", /* $1A */
+ "SAVE", /* $1B */
+ "STATUS", /* $1C */
+ "NOTE", /* $1D */
+ "POINT", /* $1E */
+ "XIO", /* $1F */
+ "ON", /* $20 */
+ "POKE", /* $21 */
+ "PRINT", /* $22 */
+ "READ", /* $23 */
+ "RESTORE", /* $24 */
+ "RETURN", /* $25 */
+ "RUN", /* $26 */
+ "STOP", /* $27 */
+ "POP", /* $28 */
+ "?", /* $29 */
+ "GET", /* $2A */
+ "PUT", /* $2B */
+ "GRAPHICS", /* $2C */
+ "PLOT", /* $2D */
+ "POSITION", /* $2E */
+ "DOS", /* $2F */
+ "DRAWTO", /* $30 */
+ "SETCOLOR", /* $31 */
+ "LOCATE", /* $32 */
+ "SOUND", /* $33 */
+ "LPRINT", /* $34 */
+ "CSAVE", /* $35 */
+ "CLOAD", /* $36 */
+ "", /* $37 */
+ "ERROR- ", /* $38 */
+ "WHILE", /* $39 */
+ "ENDWHILE", /* $3A */
+ "TRACEOFF", /* $3B */
+ "TRACE", /* $3C */
+ "ELSE", /* $3D */
+ "ENDIF", /* $3E */
+ "DPOKE", /* $3F */
+ "LOMEM", /* $40 */
+ "DEL", /* $41 */
+ "VINC", /* $42 */
+ "VDEC", /* $43 */
+ "VCONST", /* $44 */
+ "BPUT", /* $45 */
+ "BGET", /* $46 */
+ "TAB", /* $47 */
+ "CP", /* $48 */
+ "ERASE", /* $49 */
+ "PROTECT", /* $4A */
+ "UNPROTECT", /* $4B */
+ "DIR", /* $4C */
+ "RENAME", /* $4D */
+ "MOVE", /* $4E */
+ "MISSILE", /* $4F */
+ "PMCLR", /* $50 */
+ "PMCOLOR", /* $51 */
+ "PMGRAPHICS", /* $52 */
+ "PMMOVE", /* $53 */
+ "PMWIDTH", /* $54 */
+ "SET", /* $55 */
+ "LVAR", /* $56 */
+ "RENUM", /* $57 */
+ "FAST", /* $58 */
+ "NUM", /* $59 */
+ "END", /* $5A */
+};
+
+const int int_cmd_size = sizeof(int_cmds);
+
+const char *int_ops[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ ",", /* $10 */
+ ":", /* $11 */
+ ";", /* $12 */
+ "", /* $13 */
+ " GOTO ", /* $14 */
+ " GOSUB ", /* $15 */
+ " TO ", /* $16 */
+ " STEP ", /* $17 */
+ "=", /* $18 */
+ "=", /* $19 */
+ " THEN ", /* $1A */
+ "#", /* $1B */
+ "^&", /* $1C */
+ "^!", /* $1D */
+ "^%", /* $1E */
+ ">>", /* $1F */
+ "<<", /* $20 */
+ "<=", /* $21 */
+ "<>", /* $22 */
+ ">=", /* $23 */
+ "<", /* $24 */
+ ">", /* $25 */
+ "=", /* $26 */
+ "\\", /* $27 */
+ "*", /* $28 */
+ "+", /* $29 */
+ "-", /* $2A */
+ "/", /* $2B */
+ "%", /* $2C */
+ " NOT ", /* $2D */
+ " OR ", /* $2E */
+ " AND ", /* $2F */
+ "!", /* $30 */
+ "&", /* $31 */
+ "(", /* $32 */
+ ")", /* $33 */
+ "<=", /* $34 */
+ "<>", /* $35 */
+ ">=", /* $36 */
+ "<", /* $37 */
+ ">", /* $38 */
+ "=", /* $39 */
+ "+", /* $3A */
+ "-", /* $3B */
+ "(", /* $3C */
+ "", /* $3D */
+ "", /* $3E */
+ "(", /* $3F */
+ "(", /* $40 */
+ ",", /* $41 */
+ ";", /* $42 */
+ "LEFT$(", /* $43 */
+ "RIGHT$(", /* $44 */
+ "MID$(", /* $45 */
+ "STR$(", /* $46 */
+ "CHR$(", /* $47 */
+ "USR(", /* $48 */
+ "ASC(", /* $49 */
+ "VAL(", /* $4A */
+ "LEN(", /* $4B */
+ "ADR(", /* $4C */
+ "BUMP(", /* $4D */
+ "FIND(", /* $4E */
+ "HEX$(", /* $4F */
+ "RANDOM(", /* $50 */
+ "DPEEK(", /* $51 */
+ "RUN(", /* $52 */
+ " ", /* $53 */
+ "PEEK(", /* $54 */
+ " ", /* $55 */
+ "RND(", /* $56 */
+ "FRE(", /* $57 */
+ "SQR(", /* $58 */
+ "SGN(", /* $59 */
+ "ABS(", /* $5A */
+ "INT(", /* $5B */
+ "SYS(", /* $5C */
+ "PADDLE(", /* $5D */
+ "STICK(", /* $5E */
+ "PTRIG(", /* $5F */
+ "STRIG(", /* $60 */
+ "VSTICK(", /* $61 */
+ "HSTICK(", /* $62 */
+ "PMADR(", /* $63 */
+ "ERR(", /* $64 */
+ "TAB(", /* $65 */
+ "PEN(", /* $66 */
+};
+
+const int int_ops_size = sizeof(int_ops);
diff --git a/int_tokens.h b/int_tokens.h
new file mode 100644
index 0000000..135890e
--- /dev/null
+++ b/int_tokens.h
@@ -0,0 +1,5 @@
+extern const char *int_cmds[];
+extern const char *int_ops[];
+
+extern const int int_cmd_size;
+extern const int int_ops_size;
diff --git a/jindroush/Makefile b/jindroush/Makefile
index 605dc70..a4fe4c9 100644
--- a/jindroush/Makefile
+++ b/jindroush/Makefile
@@ -18,15 +18,15 @@ BINS=acvt adir aext bas2boot chkbas chkexe chkrom
W=-Wall -Wno-write-strings
all: libs manpages
- for i in $(BINS); do \
- make -C $$i COPT="$(COPT) $(W)" ; \
+ @for i in $(BINS); do \
+ $(MAKE) --no-print-directory -C $$i COPT="$(COPT) $(W)" ; \
done
manpages:
- make -C man
+ @$(MAKE) --no-print-directory -C man
libs:
- make -C lib COPT="$(COPT) $(W)"
+ @$(MAKE) --no-print-directory -C lib COPT="$(COPT) $(W)"
clean:
make -C lib clean
diff --git a/jindroush/README.txt b/jindroush/README.txt
index 31d9af9..a085003 100644
--- a/jindroush/README.txt
+++ b/jindroush/README.txt
@@ -29,9 +29,10 @@ I've made to Jindroush's code:
with mode 0600; changed this to 0666 (which will still be affected
by the user's umask).
-- Added "listbas" symlink, to save typing "chkbas -short" over and over
- again.
-
- adir's -dir option now creates the directory if it doesn't exist.
- Wrote man pages for all the utilities.
+
+- Fixed a bug in chkbas: BASIC XL and XE's LEFT$ RIGHT$ MID$ were
+ being printed without the left parenthesis (e.g Left$(A$,3) was
+ coming out as Left$A$,3).
diff --git a/jindroush/chkbas/basic_xe.h b/jindroush/chkbas/basic_xe.h
index fc86131..56e0276 100644
--- a/jindroush/chkbas/basic_xe.h
+++ b/jindroush/chkbas/basic_xe.h
@@ -209,9 +209,9 @@ char* aOpsBasicXe[] = {
"ERR", //63
"TAB", //64
"PEN", //65
- "LEFT$", //66
- "RIGHT$", //67
- "MID$", //68
+ "LEFT$(", //66
+ "RIGHT$(", //67
+ "MID$(", //68
};
#define BASICXE_CMD_NUM ( sizeof( aCmdsBasicXe ) / sizeof( aCmdsBasicXe[ 0 ] ) )
diff --git a/jindroush/chkbas/basic_xl.h b/jindroush/chkbas/basic_xl.h
index a97f8a7..97dd627 100644
--- a/jindroush/chkbas/basic_xl.h
+++ b/jindroush/chkbas/basic_xl.h
@@ -203,9 +203,9 @@ char* aOpsBasicXl[] = {
"ERR", //63
"TAB", //64
"PEN", //65
- "LEFT$", //66
- "RIGHT$", //67
- "MID$", //68
+ "LEFT$(", //66
+ "RIGHT$(", //67
+ "MID$(", //68
};
#define BASICXL_CMD_NUM ( sizeof( aCmdsBasicXl ) / sizeof( aCmdsBasicXl[ 0 ] ) )
diff --git a/jindroush/man/chkbas.1 b/jindroush/man/chkbas.1
index 1f5313a..f2664f3 100644
--- a/jindroush/man/chkbas.1
+++ b/jindroush/man/chkbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "CHKBAS" 1 "2024-06-25" "1.10" "Jindroush's Atari 8-bit tools"
+.TH "CHKBAS" 1 "2024-07-10" "1.10" "Jindroush's Atari 8-bit tools"
.SH NAME
chkbas \- check and detokenize Atari BASIC SAVEd files
.SH SYNOPSIS
@@ -45,6 +45,22 @@ standard output. If \fBbasic\-file\fP is anything other than standard
Atari BASIC, the BASIC dialect must be specified (see \fBOPTIONS\fP,
below).
.sp
+It\(aqs highly recommended to avoid running \fBchkbas\fP without
+redirecting or piping its output: If the program contains ATASCII
+graphics or inverse characters, they will be printed as\-is to the
+terminal, which can confuse the terminal. For simply reading the code,
+pipe to \fBa8cat\fP(1), thus:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+$ chkbas \-atari PROGRAM.BAS | a8cat
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
Sample run, with no options:
.INDENT 0.0
.INDENT 3.5
diff --git a/jindroush/man/chkbas.rst b/jindroush/man/chkbas.rst
index e16f475..b6c678f 100644
--- a/jindroush/man/chkbas.rst
+++ b/jindroush/man/chkbas.rst
@@ -28,6 +28,14 @@ standard output. If **basic-file** is anything other than standard
Atari BASIC, the BASIC dialect must be specified (see **OPTIONS**,
below).
+It's highly recommended to avoid running **chkbas** without
+redirecting or piping its output: If the program contains ATASCII
+graphics or inverse characters, they will be printed as-is to the
+terminal, which can confuse the terminal. For simply reading the code,
+pipe to **a8cat**\(1), thus::
+
+ $ chkbas -atari PROGRAM.BAS | a8cat
+
Sample run, with no options::
$ chkbas HELLO.BAS
diff --git a/listamsb.1 b/listamsb.1
new file mode 100644
index 0000000..b5e2213
--- /dev/null
+++ b/listamsb.1
@@ -0,0 +1,377 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "LISTAMSB" 1 "2025-04-02" "0.2.2" "Urchlay's Atari 8-bit Tools"
+.SH NAME
+listamsb \- List the source of a tokenized Atari Microsoft BASIC program
+.SH SYNOPSIS
+.sp
+listamsb [\fB\-U\fP] | [\fB\-C\fP [\fB\-k\fP]] | [\fB\-D\fP] | [[\fB\-L\fP] [\fB\-a\fP] [\fB\-c\fP] [\fB\-v\fP] [\fB\-h\fP] [\fB\-i\fP] [\fB\-u\fP] [\fB\-t\fP] [\fB\-m\fP] [\fB\-M\fP] [\fB\-n\fP] [\fB\-s\fP] [\fB\-r\fP \fIline\-range\fP] ...] [\fBinput\-file\fP] [\fBoutput\-file\fP]
+.SH DESCRIPTION
+.sp
+\fBlistamsb\fP acts like the \fILIST\fP command in Atari Microsoft BASIC. It reads a
+tokenized (SAVEd) AMSB program and prints the code in human\-readable
+format.
+.sp
+\fBlistamsb\fP supports both versions of Atari Microsoft BASIC: the
+disk\-based version 1 and the cartridge\-based version 2. The language
+is the same for both versions, so there\(aqs no need to specify it.
+.sp
+\fBinput\-file\fP must be a tokenized AMSB program. If no \fBinput\-file\fP is given,
+input is read from \fBstdin\fP\&.
+.sp
+Programs created with \fISAVE "filename" LOCK\fP are autodetected,
+and will be listed normally. It\(aqs also possible to convert a LOCKed
+program to an unencrypted one, with the \fB\-U\fP option.
+.sp
+Programs can be "crunched" and "decrunched" with the \fB\-C\fP and \fB\-D\fP
+options.
+.sp
+If no \fBoutput\-file\fP is given, output is to \fBstdout\fP\&. When output
+is to a file, the file will be overwritten without prompting if it
+already exists.
+.sp
+By default, output is modern UTF\-8 equivalents of the ATASCII
+character set, with ANSI control sequences for inverse video and
+color. See the \fB\-M\fP, \fB\-a\fP, \fB\-i\fP, \fB\-u\fP, \fB\-t\fP, \fB\-m\fP, \fB\-s\fP
+options to change the output style.
+.sp
+When listing in color (when the \fB\-M\fP option is not used),
+\fBlistamsb\fP\(aqs output is piped through \fBcolorize\-amsb\fP, which must
+be available in your \fBPATH\fP\&.
+.sp
+\fBlistamsb\fP will not write binary data (ATASCII or tokenized BASIC)
+directly to a terminal, under any circumstances.
+.SH OPTIONS
+.SS Operation Modes
+.INDENT 0.0
+.TP
+.B \fB\-L\fP
+LIST program. This is the default, so there\(aqs no need to give this option
+normally. See next section for options that control the listing.
+.TP
+.B \fB\-C\fP
+"Crunch" program: remove comments and spaces that occur outside of a
+string. The resulting program is tokenized, and is usually 5 to 10
+percent smaller. It should RUN correctly, but will be difficult to
+edit in AMSB because its parser requires the spaces.
+.sp
+The crunched program will always be unLOCKed.
+.sp
+If any comment\-only lines are the target of GOTO or GOSUB, the
+program won\(aqt RUN correctly because all comment\-only lines are
+removed. If this happens, you can use the \fB\-k\fP option (see below).
+.sp
+This option must be used with an \fBoutput\-file\fP, since seeking is done.
+None of the other options have any effect with \fB\-C\fP\&.
+.TP
+.B \fB\-D\fP
+"Decrunch" a crunched program. Puts spaces where they\(aqre required for
+AMSB\(aqs parser. The resulting program is tokenized, and will be
+editable in AMSB. Of course, any comments that were removed during
+crunching will not magically be restored (they\(aqre gone).
+.sp
+The decrunched program will always be unLOCKed.
+.sp
+This option must be used with an \fBoutput\-file\fP, since seeking is done.
+None of the other options have any effect with \fB\-D\fP\&.
+.TP
+.B \fB\-U\fP
+UnLOCK or LOCK the the program. Locked programs are created with
+\fISAVE "filename" LOCK\fP\&. The "encryption" is a reciprocal cipher: locking and
+unlocking are the same operation (similar to ROT13). The output will
+be the locked or unlocked tokenized program (rather than a listing).
+.sp
+This option must be used with an \fBoutput\-file\fP, a pipe, or
+redirection: \fBlistamsb\fP will not write tokenized BASIC to a
+terminal. None of the other options have any effect with \fB\-U\fP\&.
+.UNINDENT
+.SS Options for \fB\-L\fP (list) Mode
+.sp
+None of these options have any effect when used with \fB\-C\fP, \fB\-D\fP,
+or \fB\-U\fP\&.
+.INDENT 0.0
+.TP
+.B \fB\-a\fP
+Output raw ATASCII. This option must be used with an
+\fBoutput\-file\fP, a pipe, or redirection: \fBlistamsb\fP will not write
+ATASCII to a terminal. \fBcolorize\-amsb\fP is not used, with this option.
+.TP
+.B \fB\-c\fP
+Check only. No output on \fBstdout\fP\&. Diagnostics are still printed on stderr,
+and the exit status is unchanged. It\(aqs an error to give an \fBoutput\-file\fP with
+this option.
+.TP
+.B \fB\-i\fP
+Input uses Atari XL/XE International Character Set encoding, rather than
+ATASCII graphics.
+.TP
+.B \fB\-u\fP
+Use underlining for inverse video (see \fBa8cat\fP(1) for more detail).
+.TP
+.B \fB\-t\fP
+Text mode (see \fBa8cat\fP(1) for more detail).
+.TP
+.B \fB\-m\fP
+Magazine listing mode (see \fBa8cat\fP(1) for more detail).
+.TP
+.B \fB\-s\fP
+Strip bit 7 (inverse video bit; see \fBa8cat\fP(1) for more detail).
+.TP
+.B \fB\-M\fP
+Monochrome listing: disable color syntax highlighting, meaning \fBcolorize\-amsb\fP
+is not used.
+.TP
+.B \fB\-r\fP \fIline\-range\fP
+Show only part of the listing. \fIline\-range\fP can be a single line, or
+a comma\- or hyphen\-separated pair of starting and ending line numbers (e.g. \fB100,200\fP, or
+\fB1000\-2000\fP).
+.sp
+If the start line number is omitted (e.g. \fB,100\fP), it will be treated as
+\fB0\fP (meaning, list from the beginning of the program). If the ending line
+number is omitted (e.g. \fB100,\fP), it means "list until the end of the program".
+\fB\-r,\fP or \fB\-r\-\fP is equivalent to not using the \fB\-r\fP option at all.
+.TP
+.B \fB\-n\fP
+No empty line. By default, \fBlistamsb\fP prints an empty line at the
+start of the output, to match AMSB\(aqs LIST command.
+.UNINDENT
+.SS Options for \fB\-C\fP (crunch) Mode
+.INDENT 0.0
+.TP
+.B \fB\-k\fP
+Keep comment\-only lines. Normally these are removed. If the program
+gives UNDEF\(aqD LINE ERROR, it means the target line was a comment\-only
+line that got removed. With \fB\-k\fP, these lines will be kept, although
+the actual comments won\(aqt (\fI10 REM HELLO\fP will become \fI10 REM\fP).
+.UNINDENT
+.SS Utility Options
+.INDENT 0.0
+.TP
+.B \fB\-v\fP
+Verbose output, on \fBstderr\fP\&. May be given twice for extra verbosity,
+which shows each line number, its offset, length, and end\-of\-line pointer.
+Can be used with any of the mode options (\fB\-C\fP, \fB\-D\fP, \fB\-L\fP, \fB\-U\fP).
+.TP
+.B \fB\-h\fP, \fB\-\-help\fP
+Print built\-in help and exit.
+.TP
+.B \fB\-\-version\fP
+Print version number and exit.
+.UNINDENT
+.SH DIAGNOSTICS
+.sp
+All error and warning messages are written to the standard error output.
+.SS Fatal errors
+.sp
+These are errors in the program header at the start of the file. They
+generally mean the input isn\(aqt actually an tokenized Atari Microsoft
+BASIC file.
+.INDENT 0.0
+.IP \(bu 2
+not an AMSB file: first byte not $00 or $01
+.sp
+Pretty self\-explanatory: if the file doesn\(aqt begin with a \fI$00\fP or
+\fI$01\fP byte, it\(aqs not a tokenized AMSB file.
+.IP \(bu 2
+not an AMSB file: too big (\fIN\fP bytes), won\(aqt fit in Atari memory
+.sp
+The file can\(aqt be a tokenized AMSB file because there was no way
+for it to be created. It must be some other kind of file that begins
+with a \fI$00\fP byte.
+.IP \(bu 2
+not an AMSB file: program size too small (\fIN\fP). Atari BASIC file?
+.sp
+The program header claims the file is 0, 1, 3, or 4 bytes long. This
+is impossible, so this isn\(aqt an AMSB file. A lot of Atari BASIC
+programs begin with three \fI$00\fP bytes, so that might be what this is.
+.IP \(bu 2
+program length is 2, no code in file (SAVE after NEW)
+.sp
+Probably, someone did a SAVE when there was no program in memory. It
+could also mean this isn\(aqt an AMSB file at all.
+.UNINDENT
+.SS Warnings
+.sp
+These are non\-fatal: \fBlistamsb\fP logs the warning to stderr, then
+continues processing.
+.INDENT 0.0
+.IP \(bu 2
+unexpected EOF, file truncated?
+.sp
+A tokenized AMSB file always ends with three null bytes (\fI$00\fP).
+This file doesn\(aqt. Probably the rest of the file is missing.
+.IP \(bu 2
+line \fIL\fP: EOL address \fIA\fP too (low|high)
+.sp
+Each line begins with the address of the next line. If the address
+is below \fI$0700\fP, it\(aqs below the minimum value of \fIMEMLO\fP, which
+is impossible. If it\(aqs above \fI$bc1f\fP, it would be in the display
+list, screen memory, or OS ROM (also impossible). File is
+corrupt, or not an AMSB file.
+.IP \(bu 2
+line \fIL\fP: EOL address \fIA\fP <= previous \fIB\fP
+.sp
+Corrupt file, or not an AMSB file.
+.IP \(bu 2
+line \fIL\fP is suspiciously long
+.sp
+The line is >128 bytes long, but less than 256. AMSB can execute
+lines of this length, but it\(aqs impossible to actually enter them
+in the editor, because a logical line can\(aqt be longer than 3
+screen lines. Possibly corrupted file.
+.IP \(bu 2
+line \fIL\fP is impossibly long
+.sp
+The line is >= 256 bytes long. AMSB will crash, if you try to
+LOAD the file. Corrupted file.
+.IP \(bu 2
+line \fIL\fP EOL address doesn\(aqt match actual line length \fIN\fP
+.sp
+Corrupt file, or not an AMSB file.
+.IP \(bu 2
+line number out of order
+.sp
+Corrupt file, or not an AMSB file.
+.IP \(bu 2
+line number out range
+.sp
+The program contains a line number that\(aqs greater than \fI63999\fP\&. How
+did that happen?
+.IP \(bu 2
+line \fIL\fP has character \fIC\fP outside of a string. maybe Atari BASIC?
+.sp
+This happens when ATASCII codes 0 to 31 (\fI$1f\fP) appear in the program.
+AMSB can create files like this, but at runtime, it\(aqs a syntax error.
+More likely, it means this is an Atari BASIC file.
+.IP \(bu 2
+program size doesn\(aqt match size in header
+.sp
+Might mean this isn\(aqt an AMSB file. If you\(aqre sure it is, it might
+be truncated, or part of the file might have been overwritten with
+\fI$00\fP bytes. It could also mean the length in the header has somehow
+gotten corrupted.
+.IP \(bu 2
+trailing garbage at end of file
+.sp
+Might mean this isn\(aqt an AMSB file. If you\(aqre sure it is, garbage
+data has somehow gotten appended to the file, after the three \fI$00\fP
+bytes that end the program. Maybe it was downloaded with a crappy
+version of XMODEM that pads the last block. The good news is,
+AMSB will just ignore the garbage when you LOAD the file, so it
+won\(aqt hurt anything.
+.IP \(bu 2
+file has \fIN\fP unknown tokens
+.sp
+Either the file is corrupt, or this is a file from some \fIother\fP variant
+of Microsoft BASIC (e.g. Commodore, AppleSoft, GW\-BASIC, TRS\-80). If
+you see this warning, you\(aqll also see \fIN\fP <unknown token \fIXX\fP>
+messages in the actual listing.
+.UNINDENT
+.SH ENVIRONMENT
+.INDENT 0.0
+.TP
+.B \fBCOLORIZE_AMSB\fP
+Path to the \fBcolorize\-amsb\fP executable. Can be the absolute path
+or just the executable (searched for in \fBPATH\fP). If not set,
+defaults to \fIcolorize\-amsb\fP\&.
+.UNINDENT
+.SH LIMITATIONS
+.sp
+\fBlistamsb\fP may behave strangely when fed something other than a
+tokenized AMSB program, at least if the first byte in the file
+is \fB$00\fP or \fB$01\fP\&. Unfortunately, tokenized Atari BASIC (and
+variants like Turbo and BASIC XL) begin with \fB$00\fP\&. Usually
+you\(aqll get this error:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+not an AMSB file: program size too small (0). Atari BASIC file?
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\&...but occasionally you may get a bunch of warnings and gibberish
+output instead.
+.SH EXIT STATUS
+.sp
+0 for success, 1 if there was an error reading the input (e.g. file
+not found), or 2 if the input file had errors or warnings (see
+\fBDIAGNOSTICS\fP).
+.SH COPYRIGHT
+.sp
+WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
+.SH AUTHOR
+.INDENT 0.0
+.IP B. 3
+Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fBa8cat\fP(1),
+\fBa8eol\fP(1),
+\fBa8xd\fP(1),
+\fBatr2xfd\fP(1),
+\fBatrsize\fP(1),
+\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
+\fBblob2c\fP(1),
+\fBblob2xex\fP(1),
+\fBcart2xex\fP(1),
+\fBcxrefbas\fP(1),
+\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
+\fBdumpbas\fP(1),
+\fBf2toxex\fP(1),
+\fBfenders\fP(1),
+\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
+\fBprotbas\fP(1),
+\fBrenumbas\fP(1),
+\fBrom2cart\fP(1),
+\fBunmac65\fP(1),
+\fBunprotbas\fP(1),
+\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
+\fBxex1to2\fP(1),
+\fBxexamine\fP(1),
+\fBxexcat\fP(1),
+\fBxexsplit\fP(1),
+\fBxfd2atr\fP(1),
+\fBxex\fP(5),
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
+.sp
+Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
+Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
+.\" Generated by docutils manpage writer.
+.
diff --git a/listamsb.c b/listamsb.c
new file mode 100644
index 0000000..3815db2
--- /dev/null
+++ b/listamsb.c
@@ -0,0 +1,1010 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <stdarg.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#include "atascii.h"
+#include "amsbtok.h"
+
+/* this should always be defined in <stdio.h>, but just in case... */
+#ifndef BUFSIZ
+#define BUFSIZ 4096
+#endif
+
+/* range for one-byte tokens */
+#define MIN_STD_TOK 0x80 /* END */
+#define MAX_STD_TOK 0xf8 /* < */
+
+/* range for 2nd byte of two-byte tokens (1st is always 0xff) */
+#define MIN_EXT_TOK 0xa3 /* SGN */
+#define MAX_EXT_TOK 0xc5 /* STACK */
+
+/* AMSB's tokens for "!", "'", REM. used to introduce comments */
+#define TOK_REM 0x98
+#define TOK_SQUOTE 0x9a
+#define TOK_BANG 0x9b
+
+/* various other AMSB tokens */
+#define TOK_ELSE 0x9c
+#define TOK_IF 0x97
+#define TOK_THEN 0x9d
+#define TOK_AND 0xf3
+#define TOK_OR 0xf4
+#define TOK_NOT 0xf5
+
+/* good old Atari EOL character */
+#define EOL 0x9b
+
+/* every MS BASIC I ever saw had the same line number limit. it's
+ kind of arbitrary: why not allow the full range, up to 65535? */
+#define MAX_LINENO 63999
+
+/* a program bigger than this can't possibly fit into memory,
+ even with cart-based AMSB2 and no DOS loaded. */
+#define MAX_PROGLEN 30000
+
+/* there should never be a valid line of BASIC longer than MAX_LINE_LEN
+ bytes, since there would be no way to enter it in the editor. AMSB
+ uses the standard E: device, which limits you to 3 40-column screen
+ lines, or max 120 bytes (after POKE 82,0). there *cannot* be a line
+ longer than MAX_LINE_LEN_HARD, because AMSB would crash when you
+ try to LOAD such a program. */
+#define MAX_LINE_LEN 0x80
+#define MAX_LINE_LEN_HARD 0xff
+
+/* a program whose header has a length less than MIN_PROGLEN can't be
+ a real AMSB program. EMPTY_PROGLEN is what you get if you
+ SAVE when there's no program in memory (right after boot or
+ a NEW). The minimum size for a program that actually contains
+ code seems to be 5 (for 10 PRINT) */
+#define MIN_PROGLEN 5
+#define EMPTY_PROGLEN 2
+
+/* a file shorter than this can't be an AMSB program */
+#define MIN_BYTES 5
+
+/* an EOL address below this has to be an error, since
+ this is the lowest MEMLO can ever be. */
+#define MIN_PTR 0x0700
+
+/* an EOL address higher than this has to be an error, since
+ it would overlap the GR.0 display list or the ROMs at $c000 */
+#define MAX_PTR 0xbc1f
+
+/* SAVE "filename" LOCK does 'encryption' by subtracting every byte
+ from this (except the 3-byte header) */
+#define UNLOCK_KEY 0x54
+
+#define ENV_VAR "COLORIZE_AMSB"
+
+const char *self;
+
+atascii_ctx actx;
+
+int verbosity = 0; /* -v */
+int raw_output = 0; /* -a */
+int check_only = 0; /* -c */
+int startline = 0; /* -r */
+int endline = 65536; /* -r */
+int unlock_mode = 0; /* -l */
+int initial_eol = 1; /* -n */
+int crunch = 0; /* -C, -D */
+int decrunch = 0; /* -D */
+int keep_rems = 0; /* -k */
+int color = 1; /* -m */
+
+int locked = 0;
+int need_pclose = 0;
+int bytes_read = 0;
+int warnings = 0;
+int proglen = 0;
+int linecount = 0;
+int header_read = 0;
+int printing = 0;
+int spacecount = 0;
+
+FILE *infile;
+FILE *outfile;
+
+const char *outname = NULL;
+
+void verbose(int level, const char *fmt, ...) {
+ va_list ap;
+
+ if(verbosity < level) return;
+
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fputc('\n', stderr);
+}
+
+void finish(int rv);
+
+#define VA_FUNC(func, prefix, action) \
+ void func(const char *fmt, ...) { \
+ va_list ap; \
+ va_start(ap, fmt); \
+ fprintf(stderr, "%s: %s: ", self, prefix); \
+ vfprintf(stderr, fmt, ap); \
+ va_end(ap); \
+ fputc('\n', stderr); \
+ action; \
+ }
+
+VA_FUNC(die, "error", finish(2));
+VA_FUNC(os_err, "fatal", exit(1));
+VA_FUNC(warn, "warning", warnings++);
+
+void set_self(const char *argv0) {
+ char *p;
+
+ self = argv0;
+ p = strrchr(self, '/');
+ if(p) self = p + 1;
+}
+
+const char *plural(int count) {
+ return count == 1 ? "" : "s";
+}
+
+int is_comment_start(unsigned char tok) {
+ return (tok == TOK_REM || tok == TOK_SQUOTE || tok == TOK_BANG);
+}
+
+off_t get_file_len(const char *name) {
+ struct stat st;
+ if(stat(name, &st) != 0) return 0;
+ return st.st_size;
+}
+
+/* post-processing: print "summary", exit. called by either die()
+ or main() (on normal exit). */
+void finish(int rv) {
+ int progsize;
+
+ verbose(1, "read %d bytes", bytes_read);
+ verbose(1, "listed %d line%s", linecount, plural(linecount));
+
+ if(header_read) {
+ if(!linecount) warn("no lines of code in program");
+ progsize = bytes_read - 3;
+ if(proglen == progsize) {
+ verbose(1, "file size matches proglen");
+ } else {
+ warn("program size %d doesn't match size %d in header,",
+ progsize, proglen);
+ fputs(" ", stderr);
+ if(proglen > progsize) {
+ fputs("AMSB will give #136 ERROR and fail to LOAD this file\n", stderr);
+ } else {
+ fputs("AMSB will stop LOADing before the end of this file\n", stderr);
+ }
+ }
+ if(fgetc(infile) != EOF) warn("trailing garbage at end of file");
+ } else {
+ if(feof(infile))
+ warn("file is %d byte%s, too short to be an AMSB program", bytes_read, plural(bytes_read));
+ }
+
+ if(warnings) {
+ fprintf(stderr, "%s: file has %d warning%s\n",
+ self, warnings, plural(warnings));
+ rv = 2;
+ }
+
+ if(need_pclose) {
+ int got = pclose(outfile);
+ verbose(1, "return value from pipe is %d", got);
+ if(got != 0) {
+ os_err("colorize-amsb child process failed, do you have it on your PATH?");
+ }
+ } else {
+ fclose(outfile);
+ /* if we were writing to actual file and no data was written, rm it */
+ if(outname && get_file_len(outname) == 0)
+ unlink(outname);
+ }
+
+ verbose(2, "spaces outside strings/comments: %d (%.1f%%)",
+ spacecount,
+ (float)(spacecount) / (float)(bytes_read) * 100.0);
+
+ verbose(1, "exit status: %d (%s)", rv, (rv ? "ERROR" : "OK"));
+
+ exit(rv);
+}
+
+unsigned char read_byte(void) {
+ int c;
+
+ c = fgetc(infile);
+
+ if(c < 0) die("unexpected EOF in %s (byte %d), file truncated?",
+ (header_read ? "program" : "header"), bytes_read);
+
+ bytes_read++;
+ return (unsigned char)c;
+}
+
+/* "decrypt" a byte from a "SAVE x LOCK" program. */
+unsigned char unlock_byte(unsigned char b) {
+ return ((UNLOCK_KEY - b) & 0xff);
+}
+
+/* the "encryption" is the same (process is reciprocal) */
+#define lock_byte(x) unlock_byte(x)
+
+/* read and (if needed) decrypt a byte from the program. */
+unsigned char read_prog_byte(void) {
+ unsigned char b = read_byte();
+ return locked ? unlock_byte(b) : b;
+}
+
+/* read a word from the program, does not decrypt */
+int read_word(void) {
+ int w;
+
+ w = read_byte();
+ w |= (read_byte() << 8);
+
+ return w;
+}
+
+/* read and (if needed) decrypt a word from the program. */
+int read_prog_word(void) {
+ int w;
+
+ w = read_prog_byte();
+ w |= (read_prog_byte() << 8);
+
+ return w;
+}
+
+void read_header(void) {
+ /* $00 for plain, $01 for SAVE with LOCK */
+ locked = read_byte();
+ if(locked > 1) die("not an AMSB file: first byte is $%02x, not $00 or $01", locked);
+
+ if(locked)
+ verbose(1, "program is locked, decrypting");
+ else
+ verbose(1, "program is not locked");
+
+ proglen = read_word();
+
+ verbose(1, "proglen == %d (%04x)", proglen, proglen);
+
+ if(proglen > MAX_PROGLEN) {
+ die("not an AMSB file: too big (%d bytes), won't fit in Atari memory", proglen);
+ }
+
+ if(proglen == EMPTY_PROGLEN) {
+ warn("program length is 2, no code in file (SAVE after NEW)");
+ } else {
+ if(proglen < MIN_PROGLEN) {
+ die("not an AMSB file: program size too small (%d). Atari BASIC file?", proglen);
+ }
+ }
+
+ header_read = 1;
+}
+
+void unknown_token(int tok) {
+ int ext;
+ if(!printing) return;
+ ext = (tok > 0xff);
+ tok &= 0xff;
+ fprintf(outfile, "<unknown %stoken ", (ext ? "extended " : ""));
+ fprintf(outfile, "%s%02x>", (ext ? "$ff ": ""), tok);
+}
+
+void list_char(unsigned char c) {
+ if(!printing) return;
+ if(raw_output) {
+ fputc(c, outfile);
+ } else {
+ char buf[20];
+ fputs(atascii_a2utf(&actx, c, buf), outfile);
+ }
+}
+
+int expand_token(int t, unsigned char *buf);
+
+int list_token(int tok) {
+ unsigned char text[10];
+ if(!expand_token(tok, text)) {
+ unknown_token(tok);
+ return 0;
+ }
+ if(printing) fputs((char *)text, outfile);
+ return 1;
+}
+
+void list_lineno(int l) {
+ /* note that AMSB always puts a space after the line number in LIST */
+ if(printing) fprintf(outfile, "%d ", l);
+}
+
+void start_listing(void) {
+ /* AMSB always prints a blank line when it LISTs, so we do, too.
+ unless it's disabled with -n, of course. */
+ if(initial_eol) {
+ if(raw_output) {
+ fputc(0x9b, outfile);
+ } else {
+ fputc('\n', outfile);
+ }
+ }
+}
+
+int read_token(int literal);
+
+/* meat and potatoes. does the actual detokenizing. gets called once
+ per line of code. returns false when it hits the last line, or
+ true if there are more lines. */
+int next_line(void) {
+ static int last_lineno = -1;
+ static int last_ptr = -1;
+ int tok, ptr, lineno, was_colon = 0, in_string = 0, in_comment = 0, offset, len;
+
+ offset = bytes_read;
+
+ /* pointer to last token on the line, offset by whatever MEMLO
+ happened to be when the file was SAVEd. 0 means this is the
+ last line. */
+ ptr = read_prog_word();
+ if(!ptr) {
+ verbose(1, "end of program");
+ return 0;
+ }
+
+ lineno = read_prog_word();
+ verbose(2, "found line %d, offset %d, end-of-line %d", lineno, offset, ptr);
+
+ printing = (lineno >= startline) && (lineno <= endline);
+
+ if(ptr < MIN_PTR) {
+ warn("line %d: EOL address $%04x too low (<$%04x)", lineno, ptr, MIN_PTR);
+ } else if(ptr >= MAX_PTR) {
+ warn("line %d: EOL address $%04x too high (>$%04x)", lineno, ptr, MAX_PTR);
+ }
+
+ if(last_ptr != -1) {
+ if(ptr <= last_ptr) {
+ warn("line %d: EOL address $%04x <= previous $%04x", lineno, ptr, last_ptr);
+ }
+ }
+
+ if(lineno <= last_lineno) {
+ warn("line number out of order (%d <= %d)", lineno, last_lineno);
+ }
+
+ if(lineno > MAX_LINENO) {
+ warn("line number out range (%d > %d)", lineno, MAX_LINENO);
+ }
+
+ last_lineno = lineno;
+
+ list_lineno(lineno);
+
+ /* walk and print the tokens. when we hit a null byte, break out of the
+ loop, we're done with this line. */
+ while(1) {
+ tok = read_token(in_string || in_comment);
+
+ if(in_string) {
+ if(tok == 0x00) {
+ /* null byte ends both the string and the line of code.
+ don't print a closing quote because AMSB doesn't. */
+ break;
+ } else if(tok == '|') {
+ /* pipe is how AMSB stores the closing quote. end the string
+ but not the line of code, and print a " character. */
+ in_string = 0;
+ list_char('"');
+ } else {
+ /* normal string character. */
+ list_char(tok);
+ /* one " character embedded in a string gets printed as "" */
+ if(tok == '"') list_char(tok);
+ }
+ continue;
+ } else if(in_comment) {
+ /* null byte ends both the comment and the line of code. */
+ if(tok == 0x00) break;
+ list_char(tok);
+ continue;
+ }
+
+ if(was_colon) {
+ if(tok != TOK_SQUOTE && tok != TOK_BANG && tok != TOK_ELSE) {
+ list_char(':');
+ }
+ was_colon = 0;
+ }
+
+ if(tok == ':') {
+ /* statement separator. don't print the colon yet, the next token
+ might be ELSE or a ! or ' for a comment */
+ was_colon = 1;
+ } else if(tok == '"') {
+ /* begin string. strings start but *don't end* with a double-quote */
+ in_string = 1;
+ list_char(tok);
+ } else if(tok >= 0x80) {
+ if(!list_token(tok))
+ warn("unknown %stoken %s$%02x at line %d",
+ (tok > 0xff ? "extended " : ""),
+ (tok > 0xff ? "$ff " : ""),
+ tok & 0xff,
+ lineno);
+ if(is_comment_start(tok)) in_comment = 1;
+ } else {
+ /* null byte means the line of code is done */
+ if(!tok) break;
+ if(tok < 0x20) {
+ /* ATASCII graphics outside of a string */
+ warn("line %d has character %d outside of a string, maybe Atari BASIC?",
+ lineno, tok);
+ }
+ if(tok == ' ') spacecount++;
+ list_char(tok);
+ }
+ }
+
+ len = bytes_read - offset;
+
+ verbose(2, " line %d length: %d", lineno, len);
+
+ if(len > MAX_LINE_LEN) {
+ int hard = len > MAX_LINE_LEN_HARD;
+ warn("line %d is %s long (length %d > %d)",
+ lineno,
+ hard ? "impossibly" : "supiciously",
+ len,
+ hard ? MAX_LINE_LEN_HARD : MAX_LINE_LEN);
+ }
+
+ if(last_ptr != -1) {
+ int plen = ptr - last_ptr;
+ if(len != plen) {
+ warn("line %d: EOL address doesn't match actual line length %d (should be %d)", lineno, len, plen);
+ }
+ }
+
+ last_ptr = ptr;
+
+ list_char(EOL);
+
+ if(!raw_output && (actx.inv)) {
+ char buf[20];
+ fputs(atascii_a2utf(&actx, ATA_CHR_FINISH, buf), outfile);
+ }
+
+ return 1;
+}
+
+/* when this gets called, input and output are open, read_header()
+ has already run. "locking" and "unlocking" are the same
+ transform, so this function does both.
+ note that *no* checking of the program code is done here, so
+ there's no need to finish() afterwards. */
+void unlock_program(void) {
+ int c;
+
+ /* do not convert this to warn() (it ain't a warning) */
+ fprintf(stderr, "%s: program is %slocked, output will be %slocked\n",
+ self, locked ? "" : "un", locked ? "un" : "");
+
+ /* 3-byte header: 0 for unlocked, 1 for locked */
+ fputc(!locked, outfile);
+ /* LSB of program length (not encrypted) */
+ fputc(proglen & 0xff, outfile);
+ /* MSB */
+ fputc((proglen >> 8) & 0xff, outfile);
+
+ /* rest of file, including trailing nulls, is transformed */
+ while( (c = fgetc(infile)) >= 0)
+ fputc(unlock_byte(c & 0xff), outfile);
+
+ fclose(outfile);
+ exit(0);
+}
+
+void write_code(int addr, int lineno, const unsigned char *code) {
+ fputc(addr & 0xff, outfile);
+ fputc((addr >> 8) & 0xff, outfile);
+ fputc(lineno & 0xff, outfile);
+ fputc((lineno >> 8) & 0xff, outfile);
+ fputs((char *)code, outfile);
+ fputc(0x00, outfile);
+}
+
+int comment_only_line(const unsigned char *code) {
+ if(code[0] == TOK_REM) return 1;
+ if(code[0] == ':') {
+ if(code[1] == TOK_SQUOTE || code[1] == TOK_BANG)
+ return 1;
+ }
+ return 0;
+}
+
+int crunch_line(void) {
+ unsigned char code[MAX_LINE_LEN_HARD + 1], byte;
+ int lineno, ptr, codelen = 0, in_string = 0, in_comment = 0, commentstart = 0;
+ static int addr = 0x700; /* doesn't really matter where */
+
+ ptr = read_prog_word();
+ if(!ptr) return -1;
+ lineno = read_prog_word();
+
+ verbose(2, "crunching line %d", lineno);
+
+ while(1) {
+ if(codelen >= MAX_LINE_LEN_HARD)
+ die("line %d too long, crunching failed", lineno);
+ byte = read_prog_byte();
+
+ if(byte != 0) {
+ if(in_string) {
+ if(byte == '|')
+ in_string = 0;
+ } else if(in_comment) {
+ continue;
+ } else {
+ if(byte == '"')
+ in_string = 1;
+ else if(is_comment_start(byte)) {
+ in_comment = 1;
+ commentstart = codelen;
+ }
+ else if(byte == ' ')
+ continue;
+ }
+ }
+
+ code[codelen++] = byte;
+ if(byte == 0) break;
+ }
+
+ /* omit comment-only lines */
+ if(!keep_rems) {
+ if(comment_only_line(code)) {
+ verbose(1, "removing comment-only line %d", lineno);
+ return 0;
+ }
+ }
+
+ /* omit trailing comments */
+ if(commentstart > 1) {
+ code[commentstart - 1] = 0; /* null out the colon before the comment */
+ codelen = commentstart;
+
+ /* removing the comment from this: 10 PRINT :! BLAH
+ ...leaves a trailing colon. get rid of it if needed. */
+ if(codelen >= 2) {
+ if(code[codelen - 2] == ':') {
+ code[codelen - 2] = 0;
+ codelen--;
+ }
+ }
+ }
+
+ codelen += 4; /* account for ptr and lineno */
+ addr += codelen;
+
+ write_code(addr, lineno, code);
+
+ return codelen;
+}
+
+int expand_token(int t, unsigned char *buf) {
+ const char *result;
+
+ if(t < 0x80) {
+ buf[0] = t;
+ buf[1] = 0;
+ return 1;
+ }
+
+ if(t > 0xff) {
+ t &= 0xff;
+ if(t > MAX_EXT_TOK)
+ return 0;
+ result = ext_tokens[t - MIN_EXT_TOK];
+ } else {
+ if(t > MAX_STD_TOK)
+ return 0;
+ result = std_tokens[t - MIN_STD_TOK];
+ }
+
+ strcpy((char *)buf, result);
+ return 1;
+}
+
+int read_token(int literal) {
+ int tok = read_prog_byte();
+ if(literal) return tok;
+ if(tok == 0xff) {
+ tok <<= 8;
+ tok |= read_prog_byte();
+ }
+ return tok;
+}
+
+int token_is_extended(int tok) {
+ return tok > 0xff;
+}
+
+int append_token(int tok, unsigned char *buf, int len) {
+ if(token_is_extended(tok)) {
+ buf[len++] = 0xff;
+ buf[len++] = tok & 0xff;
+ } else {
+ buf[len++] = tok;
+ }
+ return len;
+}
+
+/* only called during decrunching.
+ the tokenizer in AMSB requires spaces to separate keywords
+ and variables/numbers. "IF A THEN 100" really needs the spaces
+ before and after the A, for example. */
+int need_space_between(int t1, int t2) {
+ unsigned char text1[10], text2[10];
+ unsigned char t1last, t2first;
+
+ if(!t1) return 0; /* start of line */
+ if(!t2) return 0; /* end of line */
+ if(t1 < 0x80 && t2 < 0x80) return 0; /* 2 ASCII chars */
+
+ if( !(expand_token(t1, text1) && expand_token(t2, text2)) )
+ die("invalid token in program, decrunching failed");
+
+ t1last = text1[strlen((char *)text1) - 1]; /* "PRINT" => "T" */
+ t2first = text2[0]; /* "PRINT" => "P" */
+
+ /* if we already have a space, don't need to add another */
+ if(t1last == ' ' || t2first == ' ') return 0;
+
+ /* IF, THEN, and operators like AND/OR/NOT always get a
+ space after them, for readability. */
+ switch(t1) {
+ case TOK_IF:
+ case TOK_THEN:
+ case TOK_ELSE:
+ case TOK_AND:
+ case TOK_OR:
+ case TOK_NOT:
+ return 1;
+ default: break;
+ }
+
+ /* these always get a space before them, for readability. */
+ switch(t2) {
+ case TOK_THEN:
+ case TOK_AND:
+ case TOK_OR:
+ case TOK_NOT:
+ return 1;
+ default: break;
+ }
+
+ if(t1 >= 0x80 && isalnum(t1last)) {
+ /* space not really required between OPEN/PRINT/CLOSE and #,
+ but put one there for neatness. */
+ if(t2first == '#') return 1;
+ /* same for POKE &52,0 or DATA &FF */
+ if(t2first == '&') return 1;
+ /* INPUT "PROMPT";A$ or DATA "FOO" */
+ if(t2first == '"') return 1;
+ }
+
+ /* space not really required between a closing quote and
+ a keyword, but put it in for neatness. examples:
+ OPEN #1,"D:X" INPUT
+ IF A$="FOO" THEN 10
+ PRINT "YOUR IQ IS" IQ
+ these look weird without the space after the " */
+ if(isalnum(t2first)) {
+ if(t1last == '|') return 1;
+ if(t1last == '$') return 1; /* OPEN #1,F$ OUTPUT */
+ }
+
+ return(isalnum(t1last) && isalnum(t2first));
+}
+
+int decrunch_line(void) {
+ unsigned char code[MAX_LINE_LEN_HARD + 10];
+ int lineno, tok = 0, prev, ptr, codelen = 0, in_string = 0, in_comment = 0;
+ static int addr = 0x700; /* doesn't really matter where */
+
+ ptr = read_prog_word();
+ if(!ptr) return -1;
+ lineno = read_prog_word();
+
+ verbose(2, "decrunching line %d", lineno);
+
+ while(1) {
+ if(codelen >= MAX_LINE_LEN_HARD)
+ die("line %d too long, decrunching failed", lineno);
+ prev = tok;
+ tok = read_token(in_string || in_comment);
+
+ if(tok != 0) {
+ if(in_string) {
+ if(tok == '|')
+ in_string = 0;
+ } else if(in_comment) {
+ /* NOP */
+ } else {
+ if(tok == ' ' || is_comment_start(tok)) {
+ verbose(1, "found space/comment at line %d", lineno);
+ spacecount++;
+ }
+ if(tok == '"') {
+ in_string = 1;
+ if(need_space_between(prev, tok))
+ code[codelen++] = ' ';
+ } else if(is_comment_start(tok)) {
+ in_comment = 1;
+ } else if(prev == ':' && tok == TOK_ELSE) {
+ /* special case, ELSE needs a space before the (invisible)
+ colon that comes before it. */
+ code[codelen - 1] = ' ';
+ code[codelen++] = prev;
+ } else if(need_space_between(prev, tok)) {
+ code[codelen++] = ' ';
+ }
+ }
+ }
+
+ codelen = append_token(tok, code, codelen);
+ if(tok == 0) break;
+ }
+
+ codelen += 4; /* account for ptr and lineno */
+ addr += codelen;
+
+ write_code(addr, lineno, code);
+
+ return codelen;
+}
+
+/* despite the name, this handles both crunching and decrunching */
+void crunch_program(void) {
+ int newproglen = 0, linelen = 0;
+ float percent;
+
+ fputc(0x00, outfile); /* signature (0 = not locked) */
+ fputc(0x00, outfile); /* length LSB (fill in later) */
+ fputc(0x00, outfile); /* length MSB " " */
+
+ while((linelen = decrunch ? decrunch_line() : crunch_line()) != -1)
+ newproglen += linelen;
+
+ /* trailing $00 $00 */
+ fputc(0x00, outfile);
+ fputc(0x00, outfile);
+
+ /* fill in length in header */
+ if(fseek(outfile, 1L, SEEK_SET) < 0) os_err("fseek() failed");
+ newproglen += 2; /* account for trailing $00 $00 */
+ fputc(newproglen & 0xff, outfile);
+ fputc((newproglen >> 8) & 0xff, outfile);
+ fclose(outfile);
+
+ /* show the user how the size changed */
+ newproglen += 3;
+ percent = 100.0 * (1.0 - (float)newproglen / (float)bytes_read);
+ verbose(1, "%scrunched %d byte program to %d bytes (%.1f%% %s)",
+ decrunch ? "de" : "",
+ bytes_read,
+ newproglen,
+ percent < 0 ? -percent : percent,
+ percent < 0 ? "larger" : "smaller");
+
+ if(decrunch && spacecount)
+ warn("%d spaces/comments, are you sure it was crunched?", spacecount);
+}
+
+void print_help(void) {
+ printf("%s v" VERSION " - detokenize Atari Microsoft BASIC files\n", self);
+ puts("By B. Watson <urchlay@slackware.uk>, released under the WTFPL");
+ printf("Usage: %s [[-[acCDUMnviutms] ...] [-r *start,end*]] <file> <outfile>\n", self);
+ puts(" -a: raw ATASCII output");
+ puts(" -c: check only (no listing)");
+ puts(" -C: crunch program");
+ puts(" -D: decrunch program");
+ puts(" -U: lock or unlock program");
+ puts(" -M: monochrome listing (no colorization)");
+ puts(" -n: no blank line at start of listing");
+ puts(" -v: verbosity");
+ puts(" -r: only list lines numbered from *start* to *end*");
+ puts(" --help, -h: print this help and exit");
+ puts(" --version: print version number and exit");
+ puts(" -i -u -t -m -s: same as a8cat (try 'a8cat -h')");
+ puts("file must be a tokenized (SAVEd) AMSB file. if not given, reads from stdin.");
+ puts("if outfile not given, writes to stdout");
+}
+
+void version(void) {
+ printf("%s " VERSION "\n", self);
+}
+
+void get_line_range(const char *arg) {
+ int val = 0, comma = 0;
+ const char *p = arg;
+
+ while(*p) {
+ if(*p >= '0' && *p <= '9') {
+ val *= 10;
+ val += *p - '0';
+ if(val > MAX_LINENO) {
+ os_err("invalid line number for -r (range is 0-%d)", MAX_LINENO);
+ }
+ } else if(*p == ',' || *p == '-') {
+ if(comma) os_err("invalid argument for -r (too many commas)");
+ comma++;
+ startline = val;
+ val = 0;
+ } else {
+ if(comma) os_err("invalid argument for -r (only digits and comma allowed)");
+ }
+ p++;
+ }
+
+ if(comma)
+ endline = val ? val : MAX_LINENO;
+ else
+ startline = endline = val;
+
+ if(endline < startline)
+ os_err("invalid argument for -r (start > end)");
+}
+
+void parse_args(int argc, char **argv) {
+ int opt, ropt = 0;
+ int ata_mode = ATA_MODE_UTF8, ata_flags = ATA_FLAG_NONE, a8catopt = 0;
+
+ if(argc >= 2) {
+ if(strcmp(argv[1], "--help") == 0) {
+ print_help();
+ exit(0);
+ } else if(strcmp(argv[1], "--version") == 0) {
+ version();
+ exit(0);
+ }
+ }
+
+ while( (opt = getopt(argc, argv, "MDCnLUlr:cvaiutmshk")) != -1) {
+ switch(opt) {
+ case 'L': crunch = decrunch = unlock_mode = 0; break;
+ case 'D': decrunch = 1; break;
+ case 'C': crunch = 1; break;
+ case 'l':
+ case 'U': unlock_mode = 1; break;
+ case 'k': keep_rems = 1; break;
+ case 'c': check_only = 1; break;
+ case 'a': raw_output = 1; break;
+ case 'v': verbosity++ ; break;
+ case 'n': initial_eol = 0; break;
+ case 'M': color = 0; break;
+ case 'h': print_help(); exit(0);
+ case 'r': get_line_range(optarg); ropt++; break;
+ case 'i': ata_flags |= ATA_FLAG_ICS; a8catopt++; break;
+ case 'u': ata_flags |= ATA_FLAG_UNDERLINE; a8catopt++; break;
+ case 't': ata_flags |= ATA_FLAG_ICS; a8catopt++; break;
+ case 'm': ata_mode = ATA_MODE_MAGAZINE; a8catopt++; break;
+ case 's': ata_flags |= ATA_FLAG_STRIP_INVERSE; a8catopt++; break;
+ default: print_help(); exit(1);
+ }
+ }
+
+ if((unlock_mode + crunch + decrunch) > 1) {
+ os_err("only one of -C, -D, -L, -U may be used");
+ }
+
+ if(keep_rems && !decrunch) {
+ warn("-k option ignored since -D not given");
+ }
+
+ if(unlock_mode || crunch || decrunch) {
+ if(!initial_eol || check_only || raw_output || ropt || a8catopt || !color) {
+ warn("-[acimMnrstu] options ignored with -U, -C, or -D");
+ }
+ } else if(!raw_output) {
+ atascii_context_init(&actx, ata_mode, ata_flags);
+ }
+
+ if(optind >= argc) {
+ if(isatty(fileno(stdin))) {
+ print_help();
+ os_err("can't read binary data from a terminal");
+ }
+ freopen(NULL, "rb", stdin);
+ infile = stdin;
+ } else {
+ infile = fopen(argv[optind], "rb");
+ if(!infile) {
+ os_err("%s: %s", argv[optind], strerror(errno));
+ }
+ }
+
+ optind++;
+ if(optind < argc) {
+ /* we were passed an output file */
+ outname = argv[optind];
+ if(check_only)
+ os_err("can't use output filename %s with -c", outname);
+ if(!freopen(outname, "wb", stdout))
+ os_err("%s: %s", outname, strerror(errno));
+ verbose(1, "redirected stdout to %s", outname);
+ } else if(crunch || decrunch) {
+ os_err("can't use stdout with -%c, must give an output filename",
+ crunch ? 'C' : 'D');
+ }
+}
+
+void open_output() {
+ if(check_only) {
+ outfile = freopen("/dev/null", "wb", stdout);
+ if(!outfile) {
+ os_err("/dev/null: %s", strerror(errno));
+ }
+ verbose(1, "using /dev/null for output (check_only)");
+ } else if(raw_output || unlock_mode || crunch || decrunch) {
+ if(isatty(fileno(stdout))) {
+ os_err("refusing to write %s to a terminal",
+ (raw_output ? "raw ATASCII" : "tokenized BASIC"));
+ }
+ outfile = stdout;
+ verbose(1, "using stdout for output");
+ } else {
+ if(color) {
+ char *exe = getenv(ENV_VAR);
+ if(!exe) exe = "colorize-amsb";
+ verbose(1, "using pipe for output: %s", exe);
+ outfile = popen(exe, "w"); /* "wb" not allowed! */
+ /* we probably never see this error. popen() fails only if
+ we feed it an invalid mode, or if fork() or pipe() fails,
+ or I suppose if some idjit has done a "rm -f /bin/sh"...
+ all other errors are caught at pclose(). */
+ if(!outfile) os_err("|%s: %s", exe, strerror(errno));
+ need_pclose = 1;
+ } else {
+ outfile = stdout;
+ }
+ }
+}
+
+int main(int argc, char **argv) {
+ set_self(argv[0]);
+
+ parse_args(argc, argv);
+
+ open_output();
+
+ read_header();
+
+ if(unlock_mode) {
+ unlock_program();
+ exit(0); /* don't need finish() here, no parsing done */
+ } else if(crunch || decrunch) {
+ crunch_program();
+ exit(0);
+ }
+
+ start_listing();
+
+ while(next_line())
+ linecount++;
+
+ finish(0);
+ return 0; /* never executes; shuts up gcc warning */
+}
diff --git a/listamsb.rst b/listamsb.rst
new file mode 100644
index 0000000..5bb5640
--- /dev/null
+++ b/listamsb.rst
@@ -0,0 +1,313 @@
+========
+listamsb
+========
+
+------------------------------------------------------------
+List the source of a tokenized Atari Microsoft BASIC program
+------------------------------------------------------------
+
+.. include:: manhdr.rst
+
+SYNOPSIS
+========
+
+listamsb [**-U**] | [**-C** [**-k**]] | [**-D**] | [[**-L**] [**-a**] [**-c**] [**-v**] [**-h**] [**-i**] [**-u**] [**-t**] [**-m**] [**-M**] [**-n**] [**-s**] [**-r** *line-range*] ...] [**input-file**] [**output-file**]
+
+DESCRIPTION
+===========
+
+**listamsb** acts like the *LIST* command in Atari Microsoft BASIC. It reads a
+tokenized (SAVEd) AMSB program and prints the code in human-readable
+format.
+
+**listamsb** supports both versions of Atari Microsoft BASIC: the
+disk-based version 1 and the cartridge-based version 2. The language
+is the same for both versions, so there's no need to specify it.
+
+**input-file** must be a tokenized AMSB program. If no **input-file** is given,
+input is read from **stdin**.
+
+Programs created with *SAVE "filename" LOCK* are autodetected,
+and will be listed normally. It's also possible to convert a LOCKed
+program to an unencrypted one, with the **-U** option.
+
+Programs can be "crunched" and "decrunched" with the **-C** and **-D**
+options.
+
+If no **output-file** is given, output is to **stdout**. When output
+is to a file, the file will be overwritten without prompting if it
+already exists.
+
+By default, output is modern UTF-8 equivalents of the ATASCII
+character set, with ANSI control sequences for inverse video and
+color. See the **-M**, **-a**, **-i**, **-u**, **-t**, **-m**, **-s**
+options to change the output style.
+
+When listing in color (when the **-M** option is not used),
+**listamsb**\'s output is piped through **colorize-amsb**, which must
+be available in your **PATH**\.
+
+**listamsb** will not write binary data (ATASCII or tokenized BASIC)
+directly to a terminal, under any circumstances.
+
+OPTIONS
+=======
+
+Operation Modes
+---------------
+
+**-L**
+ LIST program. This is the default, so there's no need to give this option
+ normally. See next section for options that control the listing.
+
+**-C**
+ "Crunch" program: remove comments and spaces that occur outside of a
+ string. The resulting program is tokenized, and is usually 5 to 10
+ percent smaller. It should RUN correctly, but will be difficult to
+ edit in AMSB because its parser requires the spaces.
+
+ The crunched program will always be unLOCKed.
+
+ If any comment-only lines are the target of GOTO or GOSUB, the
+ program won't RUN correctly because all comment-only lines are
+ removed. If this happens, you can use the **-k** option (see below).
+
+ This option must be used with an **output-file**, since seeking is done.
+ None of the other options have any effect with **-C**.
+
+**-D**
+ "Decrunch" a crunched program. Puts spaces where they're required for
+ AMSB's parser. The resulting program is tokenized, and will be
+ editable in AMSB. Of course, any comments that were removed during
+ crunching will not magically be restored (they're gone).
+
+ The decrunched program will always be unLOCKed.
+
+ This option must be used with an **output-file**, since seeking is done.
+ None of the other options have any effect with **-D**.
+
+**-U**
+ UnLOCK or LOCK the the program. Locked programs are created with
+ *SAVE "filename" LOCK*. The "encryption" is a reciprocal cipher: locking and
+ unlocking are the same operation (similar to ROT13). The output will
+ be the locked or unlocked tokenized program (rather than a listing).
+
+ This option must be used with an **output-file**, a pipe, or
+ redirection: **listamsb** will not write tokenized BASIC to a
+ terminal. None of the other options have any effect with **-U**.
+
+Options for **-L** (list) Mode
+------------------------------
+
+None of these options have any effect when used with **-C**, **-D**,
+or **-U**.
+
+**-a**
+ Output raw ATASCII. This option must be used with an
+ **output-file**, a pipe, or redirection: **listamsb** will not write
+ ATASCII to a terminal. **colorize-amsb** is not used, with this option.
+
+**-c**
+ Check only. No output on **stdout**. Diagnostics are still printed on stderr,
+ and the exit status is unchanged. It's an error to give an **output-file** with
+ this option.
+
+**-i**
+ Input uses Atari XL/XE International Character Set encoding, rather than
+ ATASCII graphics.
+
+**-u**
+ Use underlining for inverse video (see **a8cat**\(1) for more detail).
+
+**-t**
+ Text mode (see **a8cat**\(1) for more detail).
+
+**-m**
+ Magazine listing mode (see **a8cat**\(1) for more detail).
+
+**-s**
+ Strip bit 7 (inverse video bit; see **a8cat**\(1) for more detail).
+
+**-M**
+ Monochrome listing: disable color syntax highlighting, meaning **colorize-amsb**
+ is not used.
+
+**-r** *line-range*
+ Show only part of the listing. *line-range* can be a single line, or
+ a comma- or hyphen-separated pair of starting and ending line numbers (e.g. **100,200**, or
+ **1000-2000**).
+
+ If the start line number is omitted (e.g. **,100**), it will be treated as
+ **0** (meaning, list from the beginning of the program). If the ending line
+ number is omitted (e.g. **100,**), it means "list until the end of the program".
+ **-r,** or **-r-** is equivalent to not using the **-r** option at all.
+
+**-n**
+ No empty line. By default, **listamsb** prints an empty line at the
+ start of the output, to match AMSB's LIST command.
+
+Options for **-C** (crunch) Mode
+--------------------------------
+
+**-k**
+ Keep comment-only lines. Normally these are removed. If the program
+ gives UNDEF'D LINE ERROR, it means the target line was a comment-only
+ line that got removed. With **-k**, these lines will be kept, although
+ the actual comments won't (*10 REM HELLO* will become *10 REM*).
+
+Utility Options
+---------------
+
+**-v**
+ Verbose output, on **stderr**. May be given twice for extra verbosity,
+ which shows each line number, its offset, length, and end-of-line pointer.
+ Can be used with any of the mode options (**-C**, **-D**, **-L**, **-U**).
+
+**-h**\, **--help**
+ Print built-in help and exit.
+
+**--version**
+ Print version number and exit.
+
+DIAGNOSTICS
+===========
+
+All error and warning messages are written to the standard error output.
+
+Fatal errors
+------------
+
+These are errors in the program header at the start of the file. They
+generally mean the input isn't actually an tokenized Atari Microsoft
+BASIC file.
+
+- not an AMSB file: first byte not $00 or $01
+
+ Pretty self-explanatory: if the file doesn't begin with a *$00* or
+ *$01* byte, it's not a tokenized AMSB file.
+
+- not an AMSB file: too big (*N* bytes), won't fit in Atari memory
+
+ The file can't be a tokenized AMSB file because there was no way
+ for it to be created. It must be some other kind of file that begins
+ with a *$00* byte.
+
+- not an AMSB file: program size too small (*N*). Atari BASIC file?
+
+ The program header claims the file is 0, 1, 3, or 4 bytes long. This
+ is impossible, so this isn't an AMSB file. A lot of Atari BASIC
+ programs begin with three *$00* bytes, so that might be what this is.
+
+- program length is 2, no code in file (SAVE after NEW)
+
+ Probably, someone did a SAVE when there was no program in memory. It
+ could also mean this isn't an AMSB file at all.
+
+Warnings
+--------
+
+These are non-fatal: **listamsb** logs the warning to stderr, then
+continues processing.
+
+- unexpected EOF, file truncated?
+
+ A tokenized AMSB file always ends with three null bytes (*$00*\).
+ This file doesn't. Probably the rest of the file is missing.
+
+- line *L*: EOL address *A* too (low|high)
+
+ Each line begins with the address of the next line. If the address
+ is below *$0700*, it's below the minimum value of *MEMLO*, which
+ is impossible. If it's above *$bc1f*, it would be in the display
+ list, screen memory, or OS ROM (also impossible). File is
+ corrupt, or not an AMSB file.
+
+- line *L*: EOL address *A* <= previous *B*
+
+ Corrupt file, or not an AMSB file.
+
+- line *L* is suspiciously long
+
+ The line is >128 bytes long, but less than 256. AMSB can execute
+ lines of this length, but it's impossible to actually enter them
+ in the editor, because a logical line can't be longer than 3
+ screen lines. Possibly corrupted file.
+
+- line *L* is impossibly long
+
+ The line is >= 256 bytes long. AMSB will crash, if you try to
+ LOAD the file. Corrupted file.
+
+- line *L* EOL address doesn't match actual line length *N*
+
+ Corrupt file, or not an AMSB file.
+
+- line number out of order
+
+ Corrupt file, or not an AMSB file.
+
+- line number out range
+
+ The program contains a line number that's greater than *63999*. How
+ did that happen?
+
+- line *L* has character *C* outside of a string. maybe Atari BASIC?
+
+ This happens when ATASCII codes 0 to 31 (*$1f*\) appear in the program.
+ AMSB can create files like this, but at runtime, it's a syntax error.
+ More likely, it means this is an Atari BASIC file.
+
+- program size doesn't match size in header
+
+ Might mean this isn't an AMSB file. If you're sure it is, it might
+ be truncated, or part of the file might have been overwritten with
+ *$00* bytes. It could also mean the length in the header has somehow
+ gotten corrupted.
+
+- trailing garbage at end of file
+
+ Might mean this isn't an AMSB file. If you're sure it is, garbage
+ data has somehow gotten appended to the file, after the three *$00*
+ bytes that end the program. Maybe it was downloaded with a crappy
+ version of XMODEM that pads the last block. The good news is,
+ AMSB will just ignore the garbage when you LOAD the file, so it
+ won't hurt anything.
+
+- file has *N* unknown tokens
+
+ Either the file is corrupt, or this is a file from some *other* variant
+ of Microsoft BASIC (e.g. Commodore, AppleSoft, GW-BASIC, TRS-80). If
+ you see this warning, you'll also see *N* <unknown token *XX*>
+ messages in the actual listing.
+
+ENVIRONMENT
+===========
+
+**COLORIZE_AMSB**
+ Path to the **colorize-amsb** executable. Can be the absolute path
+ or just the executable (searched for in **PATH**). If not set,
+ defaults to *colorize-amsb*.
+
+
+LIMITATIONS
+===========
+
+**listamsb** may behave strangely when fed something other than a
+tokenized AMSB program, at least if the first byte in the file
+is **$00** or **$01**. Unfortunately, tokenized Atari BASIC (and
+variants like Turbo and BASIC XL) begin with **$00**. Usually
+you'll get this error::
+
+ not an AMSB file: program size too small (0). Atari BASIC file?
+
+\.\.\.but occasionally you may get a bunch of warnings and gibberish
+output instead.
+
+EXIT STATUS
+===========
+
+0 for success, 1 if there was an error reading the input (e.g. file
+not found), or 2 if the input file had errors or warnings (see
+**DIAGNOSTICS**).
+
+.. include:: manftr.rst
diff --git a/listbas.1 b/listbas.1
index 6170b6a..0278ed4 100644
--- a/listbas.1
+++ b/listbas.1
@@ -27,12 +27,12 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "LISTBAS" 1 "2024-07-05" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "LISTBAS" 1 "2025-03-26" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
listbas \- List the source of a tokenized Atari 8-bit BASIC program
.SH SYNOPSIS
.sp
-listbas [\fB\-v\fP] [\fB\-i\fP] [\fB\-a\fP | \fB\-m\fP ] \fBinput\-file\fP
+listbas [\fB\-a\fP | \fB\-d\fP | \fB\-m\fP | \fB\-x\fP | \fB\-U\fP] [\fB\-B\fP] [\fB\-u\fP] [\fB\-i\fP] [\fB\-l\fP] [\fB\-n\fP | \fB\-C\fP] [\fB\-v\fP] [\fB\-c\fP \fIcolors\fP] [\fB\-r\fP \fIline\-range\fP] \fBinput\-file\fP
.SH DESCRIPTION
.sp
\fBlistbas\fP acts like the \fILIST\fP command in BASIC. It reads a
@@ -41,27 +41,129 @@ format.
.sp
By default, output is Unicode in UTF\-8 encoding, with ANSI/VT220
escape sequences for inverse video and color syntax highlighting.
+.sp
+\fBlistbas\fP supports several BASIC dialects used on the Atari. By
+default, the BASIC dialect is autodetected by running \fBwhichbas\fP(1)
+as an external process. To override this, see the \fB\-b\fP option, below.
+.sp
+Note: OSS Integer BASIC is \fInot\fP to be confused with Apple II Integer BASIC!
.SH OPTIONS
-.SS List options
+.SS BASIC options
.INDENT 0.0
.TP
-.B \fB\-a\fP
-Output raw ATASCII; no translation to the host character set. Must be
-used with redirection; \fBlistbas\fP will not write ATASCII to the terminal.
-.TP
.B \fB\-b\fP
-Use bold, for color output. This may make it easier to read on
-some terminals. Or, it may hurt your eyes...
+Set the BASIC dialect the program will be treated as. This disables
+autodetection. Supported dialects are:
+.INDENT 7.0
+.TP
+.B \fB\-ba\fP
+Atari BASIC.
+.TP
+.B \fB\-ba+\fP
+OSS BASIC/A+.
+.TP
+.B \fB\-bic\fP
+OSS Integer BASIC, cartridge version.
+.TP
+.B \fB\-bid\fP
+OSS Integer BASIC, disk version (uses different tokens from the cart).
+.TP
+.B \fB\-bt\fP
+Turbo BASIC XL.
+.TP
+.B \fB\-bxl\fP
+OSS BASIC XL.
+.TP
+.B \fB\-bxe\fP
+OSS BASIC XE.
+.UNINDENT
+.sp
+See \fBBASIC DIALECTS\fP below for details.
+.TP
+.B \fB\-r\fP \fIline\-range\fP
+Show only part of the listing. \fIline\-range\fP can be a single line, or
+a comma\-separated pair of starting and ending line numbers (e.g. \fB100,200\fP).
+If the start line number is omitted (e.g. \fB,100\fP), it will be treated as
+\fB0\fP (meaning, list from the beginning of the program). If the ending line
+number is omitted (e.g. \fB100,\fP), it means "list until the end of the program".
+\fB\-r,\fP is equivalent to not using the \fB\-r\fP option at all.
.TP
.B \fB\-i\fP
-Include the immediate mode command (line 32768) in the output.
+Include the immediate mode command (line 32768) in the output. This option has no
+effect if the \fB\-r\fP option is used to stop listing before the end of the program.
+.TP
+.B \fB\-l\fP
+Do not print line numbers at the start of each line. \fBGOTO\fP, \fBGOSUB\fP,
+\fBTRAP\fP, and \fBTHEN\fP target line numbers are still printed.
+.TP
+.B \fB\-t\fP
+Do not indent, if the program is Turbo BASIC, BASIC/A+, BASIC XL, or BASIC XE.
+By default, indentation is enabled for everything but Atari BASIC.
+If you want to indent an Atari BASIC program, use \fB\-bt\fP or \fB\-bxe\fP\&.
+Integer BASIC indentation is not yet supported.
+.TP
+.B \fB\-k\fP
+Do not print keywords in mixed case (e.g. \fBPrint\fP, \fBGraphics\fP),
+for BASIC XL, BASIC XE, or Integer BASIC. Equivalent of \fBSET 5,0\fP\&.
+.UNINDENT
+.SS Output modes
+.sp
+The default output mode is Unicode/UTF\-8 representations of ATASCII
+characters.
+.INDENT 0.0
+.TP
+.B \fB\-U\fP
+Output Unicode/UTF\-8 representations of ATASCII characters. This is
+the default output mode; the \fB\-U\fP option is provided so you can
+override \fB\-a\fP, \fB\-d\fP, \fB\-m\fP, \fB\-x\fP in \fBLISTBAS_OPTS\fP (see
+\fBENVIRONMENT\fP, below).
+.TP
+.B \fB\-x\fP
+Output Unicode/UTF\-8 representations of the XL International Character
+Set, rather than ATASCII.
+.TP
+.B \fB\-a\fP
+Output raw ATASCII; no translation to the host character set. Must be
+used with redirection or a pipe; \fBlistbas\fP will not write ATASCII to the terminal.
+ATASCII output does not support color (because ATASCII doesn\(aqt).
.TP
.B \fB\-m\fP
-Output "magazine listing". See the \fB\-m\fP option for \fBa8cat\fP for details.
+Output "magazine listing". See the \fB\-m\fP option for \fBa8cat\fP(1) for details.
+Color is supported in this mode. No Unicode/UTF\-8 characters are printed in
+this mode.
+.TP
+.B \fB\-d\fP
+Print dots rather than Unicode/UTF\-8 characters. Color and inverse
+video are still supported in this mode, but no Unicode/UTF8 characters
+are printed. Use this only if your terminal \fIreally\fP doesn\(aqt support
+Unicode (e.g. \fBrxvt\fP(1))... but even then, \fB\-m\fP is preferred,
+because you can\(aqt tell what the dots are supposed to represent.
+.UNINDENT
+.SS Other display options
+.INDENT 0.0
+.TP
+.B \fB\-C\fP
+Enable color syntax highlighting. This option is enabled by default;
+the \fB\-C\fP option is provided so you can override \fB\-n\fP in
+\fBLISTBAS_OPTS\fP (see \fBENVIRONMENT\fP, below).
.TP
.B \fB\-n\fP
-No color. Has no effect if \fB\-a\fP or \fB\-m\fP are in effect, since these
-modes don\(aqt support color anyway.
+No color. Has no effect if \fB\-a\fP is in effect, since this
+mode doesn\(aqt support color anyway. Disabling color does not
+disable reverse video.
+.TP
+.B \fB\-B\fP
+Use bold for color output. This may make it easier to read on
+some terminals. Or, it may hurt your eyes...
+.TP
+.B \fB\-u\fP
+Use underlining for inverse video, rather than reverse video output.
+.TP
+.B \fB\-c\fP \fIcolors\fP
+Customize the color scheme. See \fBCOLORS\fP, below, for the format of the
+\fIcolors\fP argument. Once you\(aqve found a set of colors you like,
+you can place this option in the \fBLISTBAS_OPTS\fP environment variable
+to use your colors by default. See \fBENVIRONMENT\fP, below.
.UNINDENT
.SS General Options
.INDENT 0.0
@@ -76,48 +178,191 @@ Print version number and exit.
Verbose operation. When displaying a number in verbose mode, it will
be prefixed with \fI$\fP if it\(aqs in hex, or no prefix for decimal.
.UNINDENT
+.SH BASIC DIALECTS
+.sp
+Note that Turbo, BASIC XL, and BASIC XE are all proper supersets of
+Atari BASIC, so you can view an Atari BASIC program with any of
+\fB\-bt\fP, \fB\-bxl\fP, or \fB\-bxe\fP\&. Also, BASIC XE is a superset of BASIC XL
+(provided BASIC XL\(aqs disk\-based toolkit extended commands are not used),
+so you can usually use \fB\-bxe\fP on a BASIC XL program.
+.sp
+BASIC/A+ uses incompatible tokens, so its programs can\(aqt be viewed as
+any of the others. Trying to do this results in a very funny\-looking
+listing, with commands like \fBPOSITION\fP with no arguments (or with a
+string argument, or \fBPOSITION #6;"string"\fP; it so happens A+ uses the
+same token number for \fBPOSITION\fP that the other BASICs use for
+\fB?\fP). The same thing would happen if you booted BASIC/A+ on an Atari
+and tried to \fBLOAD\fP an Atari BASIC program. I can\(aqt help but think
+this is a major reason BASIC/A+ didn\(aqt sell that well (fortunately,
+OSS realized their mistake and fixed it in BASIC XL).
+.sp
+OSS Integer BASIC also uses incompatible tokens. However, it uses a
+different signature (first byte of file is \fB$77\fP), so it will be
+reliably autodetected. The disk and cartridge versions of Integer
+BASIC use different tokens; this is also autodetected pretty
+reliably. If the code doesn\(aqt make sense, try \fB\-bic\fP or \fB\-bid\fP
+to override the autodetection.
+.sp
+If you see lots of "bad token XX" messages, or if the code
+just doesn\(aqt make any sense, you\(aqre using the wrong BASIC
+option. \fBwhichbas\fP(1) can usually detect the BASIC a program was
+written in, but if the results are ambiguous, \fBlistbas\fP will assume
+Turbo BASIC XL. If this is wrong, use \fB\-bxl\fP or \fB\-bxe\fP to force
+the issue.
.SH COLORS
.sp
Color output only works on terminal emulators (or real terminals)
that support ANSI/VT220 style escape codes. This includes all modern
-terminal emulators, and most not\-so\-modern ones in the UNIX world.
+terminal emulators, and most not\-so\-modern ones in the UNIX world. See
+\fBNOTES\fP for a list of tested terminal emulators.
.sp
-The color scheme is:
+You can customize the colors by using the \fB\-c\fP \fIcolors\fP option, either
+on the command line, or in the \fBLISTBAS_OPTS\fP environment variable.
+\fIcolors\fP is a string of exactly 8 characters, each of which must be the
+digits \fI0\fP through \fI7\fP to specify a color, or the letter \fIn\fP to specify
+no color.
+.sp
+The colors are the standard ANSI ones, plus \fIn\fP:
.INDENT 0.0
.TP
-.B \fByellow\fP
-Commands. Also "command operators" such as the \fBGOTO\fP in \fBON/GOTO\fP and
-the \fBSTEP\fP in a \fBFOR\fP command. These are really operators as far as
-BASIC is concerned, but it makes more sense to colorize them as commands.
+.B \fI0\fP
+Black.
+.TP
+.B \fI1\fP
+Red.
+.TP
+.B \fI2\fP
+Green.
+.TP
+.B \fI3\fP
+Yellow (or brown/orange, on some terminals).
+.TP
+.B \fI4\fP
+Blue.
.TP
-.B \fBgreen\fP
-Operators (except functions and "command operators").
+.B \fI5\fP
+Purple (aka violet).
.TP
-.B \fBpurple\fP
-Functions.
+.B \fI6\fP
+Cyan.
.TP
-.B \fBred\fP
-Numbers (except line numbers at the start of a line) and string
-constants.
+.B \fI7\fP
+White.
.TP
-.B \fBcyan\fP
-Line numbers at the start of a line, comments (\fBREM\fP text) and \fBDATA\fP elements.
+.B \fIn\fP
+No custom color. Output will be in the terminal\(aqs default foreground color.
.UNINDENT
.sp
-Variable names and commas between \fBDATA\fP elements are not highlighted,
-so they\(aqll appear in the default foreground color (usually white if the
-terminal has a black background, or black if the background is white).
+The order they\(aqre used in the \fIcolors\fP argument is:
+.INDENT 0.0
+.TP
+.B \fB1\fP
+BASIC keywords. Default: \fI3\fP (yellow).
+.TP
+.B \fB2\fP
+Operators, including quotes around strings and commas between \fBDATA\fP items. Default: \fI2\fP (green).
+.TP
+.B \fB3\fP
+Functions. Default: \fI5\fP (purple).
+.TP
+.B \fB4\fP
+Constants (numeric or string). Default: \fI1\fP (red).
+.TP
+.B \fB5\fP
+Line numbers (at the start of a line only; \fBGOTO\fP and \fBGOSUB\fP line numbers
+are constants). Default: \fI6\fP (cyan).
+.TP
+.B \fB6\fP
+\fBREM\fP text. Default: \fI4\fP (blue).
+.TP
+.B \fB7\fP
+\fBDATA\fP items (but not the commas between them). Default: \fI6\fP (cyan).
+.TP
+.B \fB8\fP
+Variable names. Default: \fIn\fP (uncolorized).
+.UNINDENT
.sp
-Note that nothing is highlighted in blue. This is because it\(aqs
-difficult to read on many terminals. Also, black and white are not
-used because presumably, one or the other is the background color of
-the terminal.
+So, the default color scheme is equivalent to:
+.INDENT 0.0
+.INDENT 3.5
+\fB\-c\fP \fI3251646n\fP
+.UNINDENT
+.UNINDENT
+.sp
+Black and white are not used by default because presumably, one or the
+other is the background color of the terminal.
.SH NOTES
+.SS Indentation
+.sp
+The indentation isn\(aqt all that well\-tested yet, but so far it seems work
+correctly. The \fB\-t\fP option is the equivalent of \fB*L\-\fP for Turbo,
+or \fBSET 12,0\fP for BXL/BXE. The different BASICs have different
+indentation rules; try viewing the same Atari BASIC program with
+\fB\-bt\fP, \fB\-bxl\fP, and \fB\-bxe\fP to compare them.
+.sp
+\fBlistbas \-t\fP is also (as far as I know) the only way to \fBLIST\fP
+a BASIC/A+ program without indentation, since BASIC/A+ itself doesn\(aqt
+have a way to disable it.
+.sp
+Turbo BASIC, at least, will "max out" the indentation level at some
+point. Once there are 60 or so levels of indent, it stops adding
+more. \fBlistbas\fP doesn\(aqt emulate this behaviour (shouldn\(aqt be a
+problem, it\(aqs a pathological case).
+.sp
+BASIC XL actually does indentation within a line. If you write:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+10 IF A:IF B:IF C:REM
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\&...BXL lists it as:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+10 If A: If B: If C:Rem
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\fBlistbas\fP only indents at the start of a line, so this behaviour is
+not emulated.
+.sp
+One thing \fBlistbas\fP gets right: the \fBLIST\fP command in Turbo, A+,
+BXL, and BXE always starts out with 0 indent spaces, if you\(aqre only
+listing part of a program. BXE example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+10 While 1
+20 If Peek(764)<>255
+30 ? "SOMEONE PRESSED A KEY":Poke 764,255
+40 Endif
+50 Endwhile
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+\&...but if you give a \fBLIST 30\fP in BXE, you\(aqll get line 30 without any
+indentation. \fBlistbas\fP does this, too, if you use the \fB\-r\fP option.
+.SS Protected Programs
.sp
\fBlistbas\fP will refuse to operate on a LIST\-protected program with
scrambled variable names. For code\-protected programs, it will stop at
the line with the invalid offset. Use \fBunprotbas\fP(1) to remove the
protection.
+.SS Comparison to chkbas
.sp
\fBlistbas\fP is similar to Jindroush\(aqs \fBchkbas\fP(1). The main differences are:
.INDENT 0.0
@@ -127,13 +372,16 @@ looks very similar to how it would appear on the Atari.
.IP \(bu 2
\fBlistbas\fP does color syntax highlighting.
.IP \(bu 2
-\fBlistbas\fP only supports Atari BASIC, not Turbo BASIC or BASIC XL/XE.
+\fBlistbas\fP supports OSS BASIC/A+ and Integer BASIC in addition to Turbo and BXL/BXE.
+.IP \(bu 2
+\fBlistbas\fP indents BASIC/A+, Turbo, BXL, and BXE code, just like the
+actual BASICs do.
.IP \(bu 2
\fBlistbas\fP doesn\(aqt show information about the variables. Use \fBvxrefbas\fP(1)
for that.
.IP \(bu 2
-\fBlistbas\fP will not write ATASCII data to your terminal. By default, it uses
-\fBa8cat\fP(1) to convert the output to something human\-readable
+\fBlistbas\fP will not write ATASCII data to your terminal. By default, it
+converts ATASCII characters into Unicode/UTF\-8 characters
that won\(aqt confuse the terminal. When outputting raw ATASCII (\fB\-a\fP option),
it refuses to run if standard output is a terminal.
.IP \(bu 2
@@ -143,23 +391,79 @@ specifically asked to do so.
\fBlistbas\fP doesn\(aqt print a banner on startup.
.IP \(bu 2
\fBlistbas\fP tells you if the program is protected, and refuses to operate
-on variable\-protected programs.
+on variable\-protected programs. For code\-protected programs, it lists
+the program up to the "poisoned" line (normally the last line).
+.UNINDENT
+.SS Terminal Support
+.sp
+The color and inverse/bold/underline support assumes your terminal supports
+ANSI/VT220 escape codes... but it does \fInot\fP use \fBcurses\fP(3X) or
+\fBterminfo\fP(5), or even look at \fBTERM\fP in the environment. It just
+blindly emits the escape codes. Likewise, Unicode characters are printed
+in UTF\-8 encoding, without actually checking whether the terminal or the
+current locale supports UTF\-8.
+.sp
+\fBlistbas\fP has been tested and is known to work in at least these
+terminals:
+.INDENT 0.0
+.INDENT 3.5
+\fBrxvt\-unicode\fP, aka \fBurxvt\fP\&. This is the terminal the author uses.
+.sp
+\fBxterm\fP \- tested frequently. Requires the XTerm.locale resource
+to be set to \fBUTF\-8\fP (e.g. in \fB~/.Xdefaults\fP), or the \fB\-lc\fP
+and/or \fB\-en UTF\-8\fP command line options.
+.sp
+\fBLinux console\fP \- works fine, but good luck finding a font with
+all the Unicode graphics characters. Better use \fB\-m\fP\&.
+.sp
+\fBkitty\fP \- very fancy terminal emulator that supports both X11 and
+Wayland. \fBlistbas\fP was only tested on X11.
+.sp
+\fBxfce4\-terminal\fP \- version 0.8.10, with XFCE4 4.16.0.
+.sp
+\fBkonsole\fP \- the KDE terminal, from KDE 5.90.
+.sp
+\fBgnome\-terminal\fP \- version 3.43.90.
+.sp
+\fBst\fP \- minimal terminal from suckless.org, version 0.9.2.
+.sp
+\fBmlterm\fP \- version 3.9.3.
+.sp
+\fBkmscon\fP \- version 9.0.0. \fI\%https://github.com/Aetf/kmscon\fP
+.sp
+\fBfbterm\fP \- version 1.8. \fI\%https://github.com/sfzhi/fbterm\fP
.UNINDENT
+.UNINDENT
+.sp
+Also, \fBrxvt\fP and \fBaterm\fP don\(aqt support Unicode, but they will
+otherwise work (display color and inverse) with the \fB\-m\fP or \fB\-d\fP
+options to \fBlistbas\fP\&.
+.SS HTML Output
.sp
-I thought about adding an HTML output option, but there\(aqs no need: if you want
-a colorful listing of an Atari BASIC program, install \fBaha\fP(1) from
-\fI\%https://github.com/theZiz/aha\fP (or your distro\(aqs package repo) and run
-something like:
+See \fBabas2html\fP(1).
+.SH ENVIRONMENT
.INDENT 0.0
+.TP
+.B \fBLISTBAS_OPTS\fP
+If this environment variable is set, \fBlistbas\fP parses its value as though
+the contents were placed on the command line as options, preceding any actual
+option. Example:
+.INDENT 7.0
.INDENT 3.5
.sp
.nf
.ft C
-listbas PROGRAM.BAS | aha > program.html
+export LISTBAS_OPTS="\-c123456 \-d"
.ft P
.fi
.UNINDENT
.UNINDENT
+.sp
+If you place the above line in your shell\(aqs startup script, \fBlistbas\fP will
+use your custom color scheme, and will default to the "dots" output mode. If
+you then run \fBlistbas\fP the \fB\-c\fP and/or \fB\-x\fP, \fB\-m\fP options, the options
+on the command line will override the environment.
+.UNINDENT
.SH EXIT STATUS
.sp
0 for success, 1 if there was an error reading the input (e.g. file
@@ -181,28 +485,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/listbas.c b/listbas.c
index ef3f031..7e4b2e7 100644
--- a/listbas.c
+++ b/listbas.c
@@ -8,45 +8,239 @@
#include <math.h>
#include <errno.h>
+#include <sys/wait.h>
+
#include "bas.h"
#include "bcdfp.h"
#include "tokens.h"
+#include "turbo_tokens.h"
+#include "aplus_tokens.h"
+#include "bxl_tokens.h"
+#include "bxe_tokens.h"
+#include "int_tokens.h"
+#include "int_disk_tokens.h"
#include "atables.h"
+#include "whichbas.h"
+
+#define B_ATARI SRET_ATARI
+#define B_TURBO SRET_TURBO
+#define B_APLUS SRET_APLUS
+#define B_BXL SRET_BXL
+#define B_BXE SRET_BXE
+#define B_INT_C SRET_OSSINT_CART
+#define B_INT_D SRET_OSSINT_DISK
+
+#define COLOR_FMT "\x1b[%d;3%dm" /* 1st %d is 1 for bold, 2nd is color */
+
+#define COLOR_OFF "\x1b[0m" /* clears inverse, too! */
+#define INV_OFF "\x1b[0m" /* clears color, too! */
+
+/* These would be better to use, allow turning off color and inverse
+ independently, but are not as widely supported by various terminals. */
+/* #define COLOR_OFF "\x1b[39;49m" */
+/* #define INV_OFF "\x1b[27m"" */
+#define INV_ON "\x1b[7m" /* goes all the way back to the original VT100 */
+#define ULINE_ON "\x1b[4m"
+
+#define MAG_INV "{inv}"
+#define MAG_NORM "{norm}"
+
+/* colors. */
+#define NO_COLOR -1
#define C_RED 1
#define C_GREEN 2
#define C_YELLOW 3
+#define C_BLUE 4
#define C_PURPLE 5
#define C_CYAN 6
+#define C_WHITE 7
+
+#define ENV_OPTS "LISTBAS_OPTS"
+#define ENV_MAX_ARGS 64
+/* #define DEBUG_ENV */
+
+/* output modes */
+#define M_UTF8 0 /* default */
+#define M_UTF8_I 1 /* -x */
+#define M_ATASCII 2 /* -a */
+#define M_MAG 3 /* -m */
+#define M_DOTS 4 /* -d */
-int immediate = 0, utf8 = 1, magazine = 0, inv = 0,
- color = 1, bold = 0, badtok = 0;
+const char *cmd_tokens[256];
+const char *op_tokens[256];
-const char **table = ata2utf;
+int bas_type = B_ATARI; /* -b */
+
+int output_mode = M_UTF8;
+
+int bold = 0; /* 1 with -B */
+int color = 1; /* 0 with -n */
+int immediate = 0; /* 1 with -i */
+int underline = 0; /* 1 with -u */
+int skip_lineno = 0; /* 1 with -l */
+int dump_tables = 0; /* 1 with -D */
+int autodetect = 1; /* 0 with -b */
+int mixed_case = 1; /* 0 with -k, or if input is B_ATARI or B_APLUS */
+int indent = 1; /* 0 with -t, or if input is B_ATARI */
+int startline = 0; /* -r */
+int endline = 32767; /* -r */
+
+/* change these with -c */
+int color_cmd = C_YELLOW;
+int color_op = C_GREEN;
+int color_func = C_PURPLE;
+int color_const = C_RED;
+int color_lineno = C_CYAN;
+int color_rem = C_BLUE;
+int color_data = C_CYAN;
+int color_varnames = NO_COLOR;
+
+const char *input_filename;
+
+int indent_level = 0;
+int if_without_then = 0;
+int badtok = 0; /* set to 1 if we find a bad token */
+int inv = 0; /* set to 1 when we're printing inverse */
+int cur_color = -1; /* -1 = no color */
+
+int first_stmt = 1; /* true if cmd token comes right after lineno */
FILE *outfh;
+int parse_color(char c) {
+ if(c == 'n')
+ return NO_COLOR;
+
+ if(c >= '0' && c <= '7')
+ return c - '0';
+
+ fprintf(stderr, "%s: Invalid color '%c'.\n", self, c);
+ exit(1);
+}
+
+void parse_color_scheme(const char *arg) {
+ if(!arg) return;
+
+ if(strlen(arg) != 8)
+ die("Color scheme must be 8 characters.");
+
+ color_cmd = parse_color(arg[0]);
+ color_op = parse_color(arg[1]);
+ color_func = parse_color(arg[2]);
+ color_const = parse_color(arg[3]);
+ color_lineno = parse_color(arg[4]);
+ color_rem = parse_color(arg[5]);
+ color_data = parse_color(arg[6]);
+ color_varnames = parse_color(arg[7]);
+}
+
+int get_bas_type(char *arg) {
+ if(arg[0] == 't')
+ return B_TURBO;
+
+ if(arg[0] == 'i') {
+ if(arg[1] == 'd')
+ return B_INT_D;
+ else if(arg[1] == 'c')
+ return B_INT_C;
+ }
+
+ if(arg[0] == 'a') {
+ if(arg[1] == '+')
+ return B_APLUS;
+ else
+ return B_ATARI;
+ }
+
+ if(arg[0] == 'x') {
+ if(arg[1] == 'l')
+ return B_BXL;
+ else if(arg[1] == 'e')
+ return B_BXE;
+ }
+
+ fprintf(stderr, "%s: Invalid BASIC type for -b option: %s\n", self, arg);
+ exit(1);
+}
+
+void get_line_range(const char *arg) {
+ int val = 0, comma = 0;
+ const char *p = arg;
+
+ while(*p) {
+ if(*p >= '0' && *p <= '9') {
+ val *= 10;
+ val += *p - '0';
+ if(val > 32768) die("Invalid line number for -r (range is 0-32768).");
+ } else if(*p == ',' || *p == '-') {
+ if(comma) die("Invalid argument for -r (too many commas).");
+ comma++;
+ startline = val;
+ val = 0;
+ } else {
+ if(comma) die("Invalid argument for -r (only digits and comma allowed).");
+ }
+ p++;
+ }
+
+ if(comma)
+ endline = val ? val : 32767;
+ else
+ startline = endline = val;
+
+ if(endline < startline)
+ die("Invalid argument for -r (start > end).");
+}
+
void print_help(void) {
- printf("Usage: %s [-a] [-b] [-i] [-m] [-n] [-v] <inputfile>\n", self);
+ printf("Usage: %s [-a|-d|-m|-x|-U] [-B] [-i] [-l] [-u] [-n|-C] [-v] [-c *colors*] [-r *start,end* ] [-k] [-t] <inputfile>\n", self);
+ printf(" -b <XX>: set BASIC type. XX is:\n");
+ printf(" a = Atari 8K t = Turbo xl = Basic XL xe = Basic XE\n");
+ printf(" a+ = OSS A+ ic = OSS Integer (cart) id = OSS Int (disk)\n");
+ printf(" -U: output ATASCII as Unicode/UTF-8 (this is the default).\n");
printf(" -a: output raw ATASCII.\n");
- printf(" -b: use bold for color output.\n");
- printf(" -i: show immediate mode command (line 32768).\n");
+ printf(" -d: use dots instead of Unicode/UTF-8.\n");
printf(" -m: magazine style listing (see a8cat(1)).\n");
+ printf(" -x: XL international character set (UTF-8).\n");
+ printf(" -B: use bold for color output.\n");
+ printf(" -i: show immediate mode command (line 32768).\n");
+ printf(" -l: don't print line numbers.\n");
+ printf(" -C: enable color syntax highlighting (this is the default).\n");
printf(" -n: disable color syntax highlighting.\n");
+ printf(" -u: use underline for inverse video.\n");
+ printf(" -c: use custom colors (see man page).\n");
+ printf(" -k: disable mixed case keywords for BXL/BXE (e.g. Print).\n");
+ printf(" -t: disable Turbo/BXL/BXE indentation.\n");
+ printf(" -r: only list lines numbered from *start* to *end*.\n");
printf(" -v: verbose.\n");
}
-void parse_args(int argc, char **argv) {
+void parse_args(int argc, char **argv, int from_env) {
int opt;
- while( (opt = getopt(argc, argv, "viamnbh")) != -1) {
+ optind = 1;
+
+ while( (opt = getopt(argc, argv, "r:Db:UCviamnBdhxulc:kt")) != -1) {
switch(opt) {
- case 'v': verbose = 1; break;
- case 'i': immediate = 1; break;
- case 'a': utf8 = magazine = 0; color = 0; break;
- case 'm': utf8 = 0 ; magazine = 1; color = 0; table = ata2mag; break;
- case 'n': color = 0; break;
- case 'b': bold = 1; break;
+ case 'U': output_mode = M_UTF8; break;
+ case 'a': output_mode = M_ATASCII; break;
+ case 'm': output_mode = M_MAG; break;
+ case 'd': output_mode = M_DOTS; break;
+ case 'x': output_mode = M_UTF8_I; break;
+ case 'D': dump_tables = 1; break;
+ case 'v': verbose = 1; break;
+ case 'i': immediate = 1; break;
+ case 'B': bold = 1; break;
+ case 'u': underline = 1; break;
+ case 'C': color = 1; break;
+ case 'n': color = 0; break;
+ case 'l': skip_lineno = 1; break;
+ case 'k': mixed_case = 0; break;
+ case 't': indent = 0; break;
+ case 'b': autodetect = 0; bas_type = get_bas_type(optarg); break;
+ case 'r': get_line_range(optarg); break;
+ case 'c': parse_color_scheme(optarg); break;
case 'h': print_help(); exit(0);
default:
print_help();
@@ -54,19 +248,74 @@ void parse_args(int argc, char **argv) {
}
}
- if(optind >= argc)
- die("No input file given (use - for stdin).");
- else
- open_input(argv[optind]);
+ if(output_mode == M_ATASCII) color = 0;
+
+ if(!from_env) {
+ if(optind >= argc) {
+ die("No input file given (use - for stdin).");
+ } else {
+ input_filename = argv[optind];
+ open_input(input_filename);
+ }
+ }
+}
+
+/* make a fake argv and argc */
+void parse_env_args(void) {
+ int fargc;
+ char *fargv[ENV_MAX_ARGS + 1];
+ char *env, *p;
+
+ env = getenv(ENV_OPTS);
+ if(!env) return;
+
+#ifdef DEBUG_ENV
+ fprintf(stderr, "%s: " ENV_OPTS " is set in the env, using it.\n", self);
+#endif
+
+ fargv[0] = (char *)self;
+ fargv[1] = env;
+ fargc = 2;
+
+ for(p = env; *p; p++) {
+ if(*p == ' ' || *p == '\t') {
+ *p = '\0';
+ if(fargc == ENV_MAX_ARGS) {
+ /* not gonna bother with the man page for this, it's
+ long enough already. it's a pathological case. */
+ fprintf(stderr, "%s: Too many spaces in " ENV_OPTS " (max %d)\n", self, ENV_MAX_ARGS - 1);
+ break;
+ }
+ fargv[fargc++] = p + 1;
+ }
+ }
+
+ fargv[fargc] = NULL;
+
+#ifdef DEBUG_ENV
+ {
+ char **p;
+ fprintf(stderr, "%s: Read options from environment:\n", self);
+ for(p = fargv + 1; *p; p++) {
+ fprintf(stderr, "\t%s\n", *p);
+ }
+ }
+#endif
+
+ parse_args(fargc, fargv, 1);
}
void setup_outfh(void) {
- if(! (utf8 || magazine) ) {
+ if(output_mode == M_ATASCII) {
if(isatty(fileno(stdout))) {
die("Refusing to write ATASCII data to the terminal.");
}
}
- outfh = stdout;
+ outfh = freopen(NULL, "wb", stdout);
+ if(!outfh) {
+ perror("freopen()");
+ die("Can't reopen standard output in binary mode.");
+ }
return;
}
@@ -99,20 +348,49 @@ double bcd2double(const unsigned char *num) {
return result;
}
-void color_on(unsigned char c) {
- printf("\x1b[%d;3%dm", bold, c);
+void color_on(int c) {
+ cur_color = c;
+ if(c != NO_COLOR)
+ printf(COLOR_FMT, bold, c);
}
void color_off(void) {
- fputs("\x1b[0m", outfh);
+ cur_color = -1;
+ fputs(COLOR_OFF, outfh);
}
-void print_number(unsigned int pos) {
- if(color) color_on(C_RED);
- fprintf(outfh, "%G", bcd2double(program + pos));
+void print_int_number(unsigned int pos, int hex) {
+ unsigned int num = program[pos] | (program[pos + 1] << 8);
+ if(color) color_on(color_const);
+ if(hex) {
+ fprintf(outfh, (num > 0xff ? "%04x" : "%02x"), num);
+ } else {
+ fprintf(outfh, "%d", num);
+ }
+ if(color) color_off();
+}
+
+void print_bcd_number(unsigned int pos, int hex) {
+ double num = bcd2double(program + pos);
+ if(color) color_on(color_const);
+ if(hex) {
+ if(num < 0 || num > 0xffff) {
+ fprintf(stderr, "%s: invalid Turbo/BXL/BXE hex const %lf at pos $%04x\n", self, num, pos);
+ }
+ fprintf(outfh, (num > 0xff ? "%04x" : "%02x"), (unsigned int)num);
+ } else {
+ fprintf(outfh, "%G", num);
+ }
if(color) color_off();
}
+void print_number(unsigned int pos, int hex) {
+ if(bas_type == B_INT_C || bas_type == B_INT_D)
+ print_int_number(pos, hex);
+ else
+ print_bcd_number(pos, hex);
+}
+
/* only called in magazine mode. cursor control characters
like a bell in the middle of a non-inverse string
should not cause it to print {inv}{bell}{norm}. The {bell}
@@ -120,22 +398,22 @@ void print_number(unsigned int pos) {
need to be printed that way. */
int affects_inv(unsigned char c) {
switch(c) {
- case 0x1b:
- case 0x1c:
- case 0x1d:
- case 0x1e:
- case 0x1f:
- case 0x9b:
- case 0x9c:
- case 0x9d:
- case 0x9e:
- case 0x9f:
- case 0x7d:
- case 0x7e:
- case 0x7f:
- case 0xfd:
- case 0xfe:
- case 0xff:
+ case 0x1b: /* esc */
+ case 0x1c: /* up */
+ case 0x1d: /* down */
+ case 0x1e: /* left */
+ case 0x1f: /* right */
+ case 0x9b: /* EOL */
+ case 0x9c: /* del line */
+ case 0x9d: /* ins line */
+ case 0x9e: /* clear tab */
+ case 0x9f: /* set tab */
+ case 0x7d: /* cls */
+ case 0x7e: /* BS */
+ case 0x7f: /* tab */
+ case 0xfd: /* bell */
+ case 0xfe: /* del chr */
+ case 0xff: /* ins chr */
return 0;
default:
return 1;
@@ -143,26 +421,48 @@ int affects_inv(unsigned char c) {
}
void start_inv(unsigned char c) {
- if(utf8) {
- fputs("\x1b[7m", outfh);
- inv = 1;
- } else if(magazine) {
- if(affects_inv(c)) {
- fputs("{inv}", outfh);
+ switch(output_mode) {
+ case M_DOTS:
+ case M_UTF8:
+ case M_UTF8_I:
+ if(underline)
+ fputs(ULINE_ON, outfh);
+ else
+ fputs(INV_ON, outfh);
inv = 1;
- }
+ break;
+ case M_MAG:
+ if(affects_inv(c)) {
+ fputs(MAG_INV, outfh);
+ inv = 1;
+ }
+ break;
+ case M_ATASCII:
+ default:
+ break;
}
}
void end_inv(unsigned char c) {
- if(utf8) {
- fputs("\x1b[0m", outfh);
- inv = 0;
- } else if(magazine) {
- if(affects_inv(c)) {
- fputs("{norm}", outfh);
+ switch(output_mode) {
+ case M_DOTS:
+ case M_UTF8:
+ case M_UTF8_I:
+ fputs(INV_OFF, outfh);
inv = 0;
- }
+ /* work around INV_OFF also turning off color. */
+ if(cur_color > -1)
+ color_on(cur_color);
+ break;
+ case M_MAG:
+ if(affects_inv(c)) {
+ fputs(MAG_NORM, outfh);
+ inv = 0;
+ }
+ break;
+ case M_ATASCII:
+ default:
+ break;
}
}
@@ -176,119 +476,537 @@ void print_ata_chr(unsigned char c) {
end_inv(c);
}
}
- fputs(table[c & 0x7f], outfh);
+
+ switch(output_mode) {
+ case M_DOTS:
+ fputc(isprint(c & 0x7f) ? c & 0x7f : '.', outfh);
+ break;
+ case M_UTF8:
+ fputs(ata2utf[c & 0x7f], outfh);
+ break;
+ case M_UTF8_I:
+ fputs(ics2utf[c & 0x7f], outfh);
+ break;
+ case M_MAG:
+ fputs(ata2mag[c & 0x7f], outfh);
+ break;
+ case M_ATASCII:
+ default:
+ outchr(c);
+ break;
+ }
+}
+
+void print_mixed_case(const char *name) {
+ char c;
+
+ if(!*name) return;
+ if(*name == ' ')
+ outchr(*name++);
+ outchr(*name++);
+ while(( c = *name++)) {
+ if(c >= 'A' && c <= 'Z')
+ c |= 0x20;
+ if(color && c == '(' && cur_color != color_op) color_on(color_op);
+ outchr(c);
+ }
}
void print_string(unsigned int pos, unsigned int len) {
inv = 0;
- if(color) color_on(C_RED);
+ if(color) color_on(color_op);
outchr('"');
+ if(color) color_on(color_const);
while(len--) print_ata_chr(program[pos++]);
- if(inv) end_inv(0);
+ if(inv) {
+ end_inv(0);
+ }
+ if(color) color_on(color_op);
outchr('"');
if(color) color_off();
}
+const char *get_bxl_ext_name(unsigned char tok) {
+ switch(tok) {
+ case 0x10:
+ return "Local";
+ case 0x11:
+ return "Exit";
+ case 0x12:
+ return "Procedure";
+ case 0x13:
+ return "Call";
+ case 0x14:
+ return "Sortup";
+ case 0x15:
+ return "Sortdown";
+ default:
+ return "(bad BXL ext token)";
+ }
+}
+
+void clear_callbacks(void);
+void init_callbacks(void);
+
+int cmd_is_if;
+
+CALLBACK(find_cmd_if) {
+ cmd_is_if = 0;
+ if((bas_type == B_APLUS && tok == 0x06) || (bas_type != B_APLUS && tok == CMD_IF)) {
+ cmd_is_if = 1;
+ if_without_then++; /* find_then() decrements it, if there's a THEN */
+ }
+}
+
+CALLBACK(find_op_then) {
+ if(verbose)
+ fprintf(stderr, "find_op_then lineno %d, pos %04x, tok %02x\n", lineno, pos, tok);
+
+ if(cmd_is_if && tok == OP_THEN)
+ if_without_then--;
+}
+
+/* walk_code()'s API isn't really set up to be reentrant, but we
+ can do one level of sub-walk. */
+void find_then(int lineno, unsigned short pos) {
+ clear_callbacks();
+ on_exp_token = find_op_then;
+ on_cmd_token = find_cmd_if;
+ walk_code(lineno, lineno);
+ init_callbacks();
+}
+
CALLBACK(print_lineno) {
- if(color) color_on(C_CYAN);
+ unsigned char cmd_tok;
+
+ first_stmt = 1;
+
+ if(indent) {
+ cmd_tok = program[pos + 4];
+ if_without_then = 0;
+ if((bas_type == B_APLUS && cmd_tok == 0x06) || (bas_type != B_APLUS && cmd_tok == CMD_IF)) {
+ find_then(lineno, pos);
+ }
+ }
+
+ if(skip_lineno) return;
+ if(color) color_on(color_lineno);
fprintf(outfh, "%d ", lineno);
if(color) color_off();
}
+/* indentation is totally different between A+, BXL, and BXE.
+ Turbo and BXE use the same indent style, but Turbo has more
+ keywords that indent (e.g. REPEAT, DO).
+
+ A+ always indents on the lines after a WHILE or a FOR, unless there's
+ a matching ENDWHILE or NEXT on the same line. It indents the lines
+ after IF only if there's no THEN and no matching ENDIF on the
+ same line. ENDWHILE, NEXT, ENDIF all un-undent one level. The style
+ is that the the ending keyword (or ELSE) does NOT get unindented,
+ itself:
+
+ WHILE 1
+ PRINT "OK"
+ ENDWHILE
+ PRINT "HEY"
+
+ That looks *wrong* to me (the ENDWHILE should line up with the WHILE), but
+ that's how A+ works.
+
+ BXL's style is to indent the entire block to the same level:
+
+ While 1
+ Print "OK"
+ Endwhile
+ Print "HEY"
+
+ This applies even if the whole block's on one line:
+
+ ? "OK"
+ For I=1 To 10:Next I
+ ? "OK"
+
+BXE and Turbo work like modern style: the keywords that start and end the
+block are not indented, only the lines between them.
+
+ While 1
+ Print "OK"
+ Endwhile
+ Print "HEY"
+
+ */
+
+void print_indent(void) {
+ int i;
+ if(indent_level < 0) indent_level = 0;
+ for(i = 0; i < indent_level; i++) {
+ outchr(' ');
+ outchr(' ');
+ }
+}
+
+void aplus_indent_line(const unsigned char tok) {
+ if(first_stmt) print_indent();
+
+ switch(tok) {
+ case 0x07: /* FOR */
+ case 0x13: /* WHILE */
+ indent_level++;
+ return;
+ case 0x08: /* NEXT */
+ case 0x14: /* ENDWHILE */
+ case 0x18: /* ENDIF */
+ indent_level--;
+ return;
+ default: break;
+ }
+ if(if_without_then) {
+ indent_level++;
+ if_without_then = 0;
+ }
+}
+
+void turbo_indent_line(const unsigned char tok) {
+ switch(tok) {
+ case 0x40: /* ELSE */
+ if(first_stmt) {
+ /* gets "outdented" */
+ indent_level--;
+ print_indent();
+ indent_level++;
+ }
+ return;
+ case CMD_FOR: /* FOR */
+ case 0x3c: /* REPEAT */
+ case 0x3e: /* WHILE */
+ case 0x45: /* DO */
+ case 0x4f: /* PROC */
+ if(first_stmt) print_indent();
+ indent_level++;
+ return;
+ case CMD_NEXT: /* NEXT */
+ case 0x3d: /* UNTIL */
+ case 0x3f: /* WEND */
+ case 0x41: /* ENDIF */
+ case 0x46: /* LOOP */
+ case 0x51: /* ENDPROC */
+ indent_level--;
+ break;
+ default: break;
+ }
+ if(first_stmt) print_indent();
+ if(if_without_then) {
+ indent_level++;
+ if_without_then = 0;
+ }
+}
+
+/* Note: BXL's PROCEDURE/EXIT (from toolkit extensions) does
+ *not* get indented. */
+void bxl_indent_line(unsigned char tok) {
+ if(if_without_then) {
+ indent_level++;
+ if_without_then = 0;
+ }
+ switch(tok) {
+ case CMD_FOR: /* FOR */
+ case 0x38: /* WHILE */
+ indent_level++;
+ break;
+ case CMD_NEXT: /* NEXT */
+ case 0x39: /* ENDWHILE */
+ case 0x3d: /* ENDIF */
+ if(first_stmt) print_indent();
+ indent_level--;
+ return;
+ default: break;
+ }
+ if(first_stmt) print_indent();
+}
+
+void bxe_indent_line(const unsigned char tok) {
+ switch(tok) {
+ case 0x3c: /* ELSE */
+ if(first_stmt) {
+ /* gets "outdented" */
+ indent_level--;
+ print_indent();
+ indent_level++;
+ }
+ return;
+ case CMD_FOR: /* FOR */
+ case 0x38: /* WHILE */
+ case 0x59: /* PROCEDURE */
+ if(first_stmt) print_indent();
+ indent_level++;
+ return;
+ case CMD_NEXT: /* NEXT */
+ case 0x39: /* ENDWHILE */
+ case 0x5e: /* EXIT */
+ case 0x3d: /* ENDIF */
+ indent_level--;
+ break;
+ default: break;
+ }
+ if(first_stmt) print_indent();
+ if(if_without_then) {
+ if_without_then = 0;
+ indent_level++;
+ }
+}
+
+void indent_line(const unsigned char tok) {
+ if(!indent) return;
+
+ switch(bas_type) {
+ case B_APLUS: aplus_indent_line(tok); return;
+ case B_TURBO: turbo_indent_line(tok); return;
+ case B_BXL: bxl_indent_line(tok); return;
+ case B_BXE: bxe_indent_line(tok); return;
+ /* TODO: case B_INT_C: int_indent_line(tok); return; */
+ case B_ATARI:
+ default:
+ return;
+ }
+}
+
CALLBACK(print_cmd) {
const char *name;
- if(tok == CMD_ILET) return;
+ indent_line(tok);
+ if(first_stmt)
+ first_stmt = 0;
+
+ if(bas_type == B_APLUS) {
+ if(tok == 0x52) return;
+ } else if(bas_type == B_INT_C) {
+ if(tok == 0x37) return;
+ } else if(bas_type == B_INT_D) {
+ if(tok == 0x35) return;
+ } else {
+ if(tok == CMD_ILET) return;
+ }
+
+ if(color) color_on(color_cmd);
- if(color) color_on(C_YELLOW);
- if(tok > last_command || (!(name = commands[tok]))) {
+ if((!(name = cmd_tokens[tok]))) {
fprintf(outfh, "(bad cmd token $%02x) ", tok);
badtok = 1;
} else {
- fprintf(outfh, "%s ", name);
+ if(bas_type == B_BXL && tok == 0x5a)
+ name = get_bxl_ext_name(program[pos + 1]);
+
+ if(mixed_case /* && (bas_type == B_BXL || bas_type == B_BXE) */) {
+ print_mixed_case(name);
+ outchr(' ');
+ } else {
+ fprintf(outfh, "%s ", name);
+ }
}
+
if(color) color_off();
}
-CALLBACK(print_op) {
- const char *name;
+void aplus_op_color_on(unsigned char tok) {
+ int c = color_op;
+ if((tok >= 0x17 && tok <= 0x1c) || (tok >= 0x29 && tok <= 0x2b)) {
+ /* keywords */
+ c = color_cmd;
+ } else if(tok >= 0x40) {
+ /* functions */
+ c = color_func;
+ } else if(tok == 0x38 || tok == 0x39) {
+ /* unary +/- */
+ c = color_const;
+ }
+
+ color_on(c);
+}
+
+/* pseudo-funcs listed here are ones that don't take (), e.g.
+ X=RND or A$=INKEY$. right now they're colored the same as regular
+ functions, but it might make sense to color them as variables?
+ also, %0 %1 %2 %3 (tokens 0x66 to 0x69) are currently op-colored,
+ perhaps they should be constant-colored? */
+void turbo_op_color_on(unsigned char tok) {
switch(tok) {
- case OP_NUMCONST:
- print_number(pos + 1);
- return;
- case OP_STRCONST:
- print_string(pos + 2, program[pos + 1]);
- return;
- case OP_EOL:
- return;
- default: break;
+ case 0x55:
+ case 0x58:
+ case 0x59: /* pseudo-func */
+ case 0x5b:
+ case 0x5c:
+ case 0x5e:
+ case 0x5f: /* pseudo-func */
+ case 0x60: /* pseudo-func */
+ case 0x63: /* pseudo-func */
+ case 0x64:
+ case 0x65:
+ case 0x6b:
+ case 0x6c: /* pseudo-func */
+ case 0x6d: /* pseudo-func */
+ color_on(color_func);
+ break;
+ case 0x5a:
+ case 0x5d:
+ case 0x61:
+ case 0x62:
+ case 0x6a:
+ color_on(color_cmd);
+ break;
+ default:
+ color_on(color_op);
+ break;
+ }
+}
+
+/* BXL and BXE use the same operator tokens */
+void bxlxe_op_color_on(unsigned char tok) {
+ int c = color_op;
+
+ if(tok == 0x55) {
+ c = color_cmd;
+ } else if(tok >= 0x5a) {
+ c = color_func;
+ }
+
+ color_on(c);
+}
+
+void op_color_on(unsigned char tok) {
+ if(!color) return;
+
+ if(bas_type == B_APLUS) {
+ aplus_op_color_on(tok);
+ return;
}
- if(color) {
+ /* common ops for Atari, Turbo, BXL, BXE */
+ if(tok <= last_operator) {
if(tok > 0x3c)
- color_on(C_PURPLE);
- else if(tok == OP_UMINUS)
- color_on(C_RED); /* show leading - in same color as the number */
+ color_on(color_func);
+ else if(tok == OP_UMINUS || tok == OP_UPLUS)
+ color_on(color_const); /* show leading sign in same color as the number */
else if((tok >= 0x17 && tok <= 0x1b) || (tok >= 0x28 && tok <= 0x2a))
- color_on(C_YELLOW);
+ color_on(color_cmd);
else
- color_on(C_GREEN);
+ color_on(color_op);
+ return;
}
- if(tok > last_operator || (!(name = operators[tok]))) {
- fprintf(outfh, "(bad op token $%02x)", tok);
- badtok = 1;
- } else {
- fprintf(outfh, "%s", name);
- }
- if(color) color_off();
+
+ if(bas_type == B_TURBO)
+ turbo_op_color_on(tok);
+ else if(bas_type == B_BXL || bas_type == B_BXE)
+ bxlxe_op_color_on(tok);
+ else
+ color_on(color_op); /* in case of bad token when bas_type == B_BASIC */
}
-CALLBACK(print_varname) {
+void print_varname(unsigned char varnum) {
int i, count;
- unsigned char c, c_on = 0;;
+ unsigned char c;
+
+ if(color) color_on(color_varnames);
- tok &= 0x7f;
- for(i = vnstart, count = 0; count < tok; i++) {
+ for(i = vnstart, count = 0; count < varnum; i++) {
if(program[i] & 0x80) count++;
+ if(i == codestart) {
+ fprintf(outfh, "(bad var tok $%02x)", varnum | 0x80);
+ return;
+ }
}
+
do {
c = program[i++];
if(color && c == ('(' | 0x80)) {
- color_on(C_GREEN);
- c_on = 1;
+ if(color) color_on(color_op);
}
outchr(c & 0x7f);
} while (c < 0x80);
- if(c_on) color_off();
+ if(color) color_off();
+}
+
+CALLBACK(print_op) {
+ const char *name;
+
+ switch(tok) {
+ case 0: /* Turbo variables numbered >= $80 */
+ if(bas_type == B_TURBO) {
+ print_varname(program[pos + 1] | 0x80);
+ return;
+ } else {
+ fprintf(stderr, "%s: got Turbo ext var tok at line %d, in non-Turbo program!\n", self, lineno);
+ }
+ break;
+ case OP_HEXCONST:
+ if(color) color_on(color_op);
+ outchr('$');
+ print_number(pos + 1, 1);
+ return;
+ case OP_NUMCONST:
+ print_number(pos + 1, 0);
+ return;
+ case OP_STRCONST:
+ print_string(pos + 2, program[pos + 1]);
+ return;
+ case OP_EOL:
+ /* in Integer BASIC, this token is TO */
+ if((bas_type != B_INT_C) && (bas_type != B_INT_D)) return;
+ break;
+ case 0x13:
+ /* in Integer BASIC, this is the real end-of-line token */
+ if(bas_type == B_INT_D || bas_type == B_INT_C) return;
+ default: break;
+ }
+
+ if(color) op_color_on(tok);
+
+ if((!(name = op_tokens[tok]))) {
+ fprintf(outfh, "(bad op token $%02x)", tok);
+ badtok = 1;
+ } else {
+ if(bas_type == B_BXL || bas_type == B_BXE || bas_type == B_INT_C || bas_type == B_INT_D)
+ print_mixed_case(name);
+ else
+ fprintf(outfh, "%s", name);
+ }
+ if(color) color_off();
+}
+
+/* for normal BASIC/A+/XL/XE variable tokens, $80-$FF. Turbo uses
+ these, too, but it supports 256 variables, so it only uses $80-$FF
+ for the first 128 vars. */
+CALLBACK(print_std_varname) {
+ print_varname(tok & 0x7f);
}
CALLBACK(print_text) {
unsigned char c, is_data = program[pos - 1] == CMD_DATA, comma = 0;
inv = 0;
- if(color) color_on(C_CYAN);
+ if(color) color_on(is_data ? color_data : color_rem);
while(program[pos] != 0x9b) {
c = program[pos++];
if(color && is_data && c == ',') {
- color_off();
+ color_on(color_op);
comma = 1;
} else {
comma = 0;
}
print_ata_chr(c);
if(comma)
- color_on(C_CYAN);
+ color_on(is_data ? color_data : color_rem);
}
if(inv) end_inv(0);
if(color) color_off();
}
CALLBACK(print_newline) {
- if(utf8 || magazine)
- outchr('\n');
- else
+ if(output_mode == M_ATASCII)
outchr(0x9b);
+ else
+ outchr('\n');
}
CALLBACK(code_prot) {
@@ -296,21 +1014,207 @@ CALLBACK(code_prot) {
exit(0);
}
-void list(void) {
+void clear_callbacks(void) {
+ on_start_line = 0;
+ on_cmd_token = 0;
+ on_exp_token = 0;
+ on_var_token = 0;
+ on_end_line = 0;
+ on_text = 0;
+ on_bad_line_length = 0;
+}
+
+void init_callbacks(void) {
on_start_line = print_lineno;
on_cmd_token = print_cmd;
on_exp_token = print_op;
- on_var_token = print_varname;
+ on_var_token = print_std_varname; /* see also: print_turbo_varname() */
on_end_line = print_newline;
on_text = print_text;
on_bad_line_length = code_prot;
- walk_code(0, 32767 + immediate);
+}
+
+void list(void) {
+ init_callbacks();
+ if(endline == 32767 && immediate) endline++;
+ walk_code(startline, endline);
+}
+
+void init_bas_tables() {
+ memmove(cmd_tokens, commands, (last_command + 1) * sizeof(char *));
+ memmove(op_tokens, operators, (last_operator + 1) * sizeof(char *));
+}
+
+void init_aplus_tables() {
+ memmove(cmd_tokens, aplus_cmds, aplus_cmd_size);
+ memmove(op_tokens, aplus_ops, aplus_ops_size);
+}
+
+/* cartridge version */
+void init_int_tables() {
+ memmove(cmd_tokens, int_cmds, int_cmd_size);
+ memmove(op_tokens, int_ops, int_ops_size);
+}
+
+void init_int_disk_tables() {
+ memmove(cmd_tokens, int_disk_cmds, int_disk_cmd_size);
+ memmove(op_tokens, int_disk_ops, int_disk_ops_size);
+}
+
+void init_turbo_tables() {
+ memmove(cmd_tokens + last_command + 1, turbo_cmds, turbo_cmd_size);
+ memmove(op_tokens + last_operator + 1, turbo_ops, turbo_ops_size);
+}
+
+void init_bxl_tables() {
+ memmove(cmd_tokens + last_command + 1, bxl_cmds, bxl_cmd_size);
+ memmove(op_tokens + last_operator + 1, bxl_ops, bxl_ops_size);
+}
+
+/* BXE's token table is identical to BXL's, and the commands are the
+ same up to token 0x56 (FAST). */
+void init_bxe_tables() {
+ init_bxl_tables();
+ memmove(cmd_tokens + 0x57, bxe_cmds, bxe_cmd_size);
+}
+
+void init_token_tables() {
+ if(bas_type == B_APLUS) {
+ init_aplus_tables();
+ return;
+ } else if(bas_type == B_INT_C) {
+ init_int_tables();
+ return;
+ } else if(bas_type == B_INT_D) {
+ init_int_disk_tables();
+ return;
+ }
+
+ init_bas_tables();
+
+ if(bas_type == B_TURBO)
+ init_turbo_tables();
+ else if(bas_type == B_BXL)
+ init_bxl_tables();
+ else if(bas_type == B_BXE)
+ init_bxe_tables();
+
+ if(dump_tables) {
+ int i;
+ printf("commands:\n\n");
+ for(i = 0; i < 0x65; i++)
+ printf("%s $%02x\n", (cmd_tokens[i] ? cmd_tokens[i] : "(null)"), i);
+ printf("operators:\n\n");
+ for(i = 0x12; i < 0x69; i++)
+ printf("%s $%02x\n", (op_tokens[i] ? op_tokens[i] : "(null)"), i);
+ exit(0);
+ }
+}
+
+void set_bas_dialect(int d) {
+ if(verbose)
+ fprintf(stderr, "set_bas_dialect(%d)\n", d);
+
+ switch(d) {
+ case 0:
+ case 1:
+ die("whichbas child process failed");
+ break;
+ case SRET_ATARI:
+ case SRET_APLUS:
+ case SRET_TURBO:
+ case SRET_BXL:
+ case SRET_BXE:
+ case SRET_OSSINT_CART:
+ case SRET_OSSINT_DISK:
+ bas_type = d;
+ break;
+ case SRET_AMSB:
+ die("This is an Atari Microsoft BASIC program. Use listamsb.");
+ break;
+ case SRET_COMPILED_TURBO:
+ case SRET_NOT_BASIC:
+ die("This is not any kind of BASIC program I know about.");
+ break;
+ default:
+ fprintf(stderr, "whichbas results ambiguous; guessing Turbo BASIC\n");
+ bas_type = SRET_TURBO;
+ break;
+ }
+}
+
+void detect_bas_dialect() {
+ pid_t pid, status;
+ int wstatus;
+ const char *args[4];
+
+ args[0] = "whichbas";
+ args[1] = "-s";
+ args[2] = input_filename;
+ args[3] = 0;
+
+ pid = fork();
+ if(pid == -1) {
+ perror("fork()");
+ die("Can't spawn child process");
+ } else if(pid) {
+ /* we are the parent */
+ status = waitpid(pid, &wstatus, 0);
+ if(status < 0) {
+ perror("waitpid()");
+ die("Child process went south");
+ }
+ if(!WIFEXITED(wstatus)) {
+ die("Child process went south");
+ }
+ set_bas_dialect(WEXITSTATUS(wstatus));
+ } else {
+ /* we are the child */
+ if(execvp(args[0], (char * const *)args) < 0) {
+ perror("Can't execute whichbas");
+ exit(1);
+ }
+ }
+}
+
+void init_bas_dialect() {
+ if(autodetect)
+ detect_bas_dialect();
+
+ if(bas_type == B_INT_C || bas_type == B_INT_D) {
+ numconst_size = 2;
+ if(bas_type == B_INT_C)
+ error_token = 0x38;
+ else
+ error_token = 0x36;
+ allow_hex_const = 1;
+ mixed_case = 1;
+ }
+
+ if(bas_type == B_TURBO || bas_type == B_BXL || bas_type == B_BXE)
+ allow_hex_const = 1;
+
+ if(bas_type == B_APLUS)
+ error_token = 0x53;
+
+ if(bas_type == B_BXL)
+ bxl_exttok_hack = 1;
+
+ if(bas_type == B_ATARI || bas_type == B_APLUS || bas_type == B_TURBO)
+ mixed_case = 0;
+
+ if(bas_type == B_ATARI)
+ indent = 0;
}
int main(int argc, char **argv) {
set_self(*argv);
parse_general_args(argc, argv, print_help);
- parse_args(argc, argv);
+ parse_env_args();
+ parse_args(argc, argv, 0);
+
+ init_bas_dialect();
+ init_token_tables();
readfile();
parse_header();
@@ -322,7 +1226,7 @@ int main(int argc, char **argv) {
list();
if(badtok) {
- fprintf(stderr, "%s: program has unknown tokens; maybe Turbo BASIC or BASIC XL?", self);
+ fprintf(stderr, "%s: Program has unknown tokens; wrong BASIC dialect?\n", self);
return 2;
}
diff --git a/listbas.rst b/listbas.rst
index 881da5f..d15792b 100644
--- a/listbas.rst
+++ b/listbas.rst
@@ -11,7 +11,7 @@ List the source of a tokenized Atari 8-bit BASIC program
SYNOPSIS
========
-listbas [**-v**] [**-i**] [**-a** | **-m** ] **input-file**
+listbas [**-a** | **-d** | **-m** | **-x** | **-U**] [**-B**] [**-u**] [**-i**] [**-l**] [**-n** | **-C**] [**-v**] [**-c** *colors*] [**-r** *line-range*] **input-file**
DESCRIPTION
===========
@@ -23,76 +23,298 @@ format.
By default, output is Unicode in UTF-8 encoding, with ANSI/VT220
escape sequences for inverse video and color syntax highlighting.
+**listbas** supports several BASIC dialects used on the Atari. By
+default, the BASIC dialect is autodetected by running **whichbas**\(1)
+as an external process. To override this, see the **-b** option, below.
+
+Note: OSS Integer BASIC is *not* to be confused with Apple II Integer BASIC!
+
OPTIONS
=======
-List options
+BASIC options
+-------------
+
+**-b**
+ Set the BASIC dialect the program will be treated as. This disables
+ autodetection. Supported dialects are:
+
+ **-ba**
+ Atari BASIC.
+
+ **-ba+**
+ OSS BASIC/A+.
+
+ **-bic**
+ OSS Integer BASIC, cartridge version.
+
+ **-bid**
+ OSS Integer BASIC, disk version (uses different tokens from the cart).
+
+ **-bt**
+ Turbo BASIC XL.
+
+ **-bxl**
+ OSS BASIC XL.
+
+ **-bxe**
+ OSS BASIC XE.
+
+ See **BASIC DIALECTS** below for details.
+
+**-r** *line-range*
+ Show only part of the listing. *line-range* can be a single line, or
+ a comma-separated pair of starting and ending line numbers (e.g. **100,200**).
+ If the start line number is omitted (e.g. **,100**), it will be treated as
+ **0** (meaning, list from the beginning of the program). If the ending line
+ number is omitted (e.g. **100,**), it means "list until the end of the program".
+ **-r,** is equivalent to not using the **-r** option at all.
+
+**-i**
+ Include the immediate mode command (line 32768) in the output. This option has no
+ effect if the **-r** option is used to stop listing before the end of the program.
+
+**-l**
+ Do not print line numbers at the start of each line. **GOTO**, **GOSUB**,
+ **TRAP**, and **THEN** target line numbers are still printed.
+
+**-t**
+ Do not indent, if the program is Turbo BASIC, BASIC/A+, BASIC XL, or BASIC XE.
+ By default, indentation is enabled for everything but Atari BASIC.
+ If you want to indent an Atari BASIC program, use **-bt** or **-bxe**.
+ Integer BASIC indentation is not yet supported.
+
+**-k**
+ Do not print keywords in mixed case (e.g. **Print**, **Graphics**),
+ for BASIC XL, BASIC XE, or Integer BASIC. Equivalent of **SET 5,0**.
+
+Output modes
------------
+The default output mode is Unicode/UTF-8 representations of ATASCII
+characters.
+
+**-U**
+ Output Unicode/UTF-8 representations of ATASCII characters. This is
+ the default output mode; the **-U** option is provided so you can
+ override **-a**, **-d**, **-m**, **-x** in **LISTBAS_OPTS** (see
+ **ENVIRONMENT**, below).
+
+**-x**
+ Output Unicode/UTF-8 representations of the XL International Character
+ Set, rather than ATASCII.
+
**-a**
Output raw ATASCII; no translation to the host character set. Must be
- used with redirection; **listbas** will not write ATASCII to the terminal.
+ used with redirection or a pipe; **listbas** will not write ATASCII to the terminal.
+ ATASCII output does not support color (because ATASCII doesn't).
-**-b**
- Use bold, for color output. This may make it easier to read on
- some terminals. Or, it may hurt your eyes...
+**-m**
+ Output "magazine listing". See the **-m** option for **a8cat**\(1) for details.
+ Color is supported in this mode. No Unicode/UTF-8 characters are printed in
+ this mode.
-**-i**
- Include the immediate mode command (line 32768) in the output.
+**-d**
+ Print dots rather than Unicode/UTF-8 characters. Color and inverse
+ video are still supported in this mode, but no Unicode/UTF8 characters
+ are printed. Use this only if your terminal *really* doesn't support
+ Unicode (e.g. **rxvt**\(1))... but even then, **-m** is preferred,
+ because you can't tell what the dots are supposed to represent.
-**-m**
- Output "magazine listing". See the **-m** option for **a8cat** for details.
+Other display options
+---------------------
+
+**-C**
+ Enable color syntax highlighting. This option is enabled by default;
+ the **-C** option is provided so you can override **-n** in
+ **LISTBAS_OPTS** (see **ENVIRONMENT**, below).
**-n**
- No color. Has no effect if **-a** or **-m** are in effect, since these
- modes don't support color anyway.
+ No color. Has no effect if **-a** is in effect, since this
+ mode doesn't support color anyway. Disabling color does not
+ disable reverse video.
+
+**-B**
+ Use bold for color output. This may make it easier to read on
+ some terminals. Or, it may hurt your eyes...
+
+**-u**
+ Use underlining for inverse video, rather than reverse video output.
+
+**-c** *colors*
+ Customize the color scheme. See **COLORS**, below, for the format of the
+ *colors* argument. Once you've found a set of colors you like,
+ you can place this option in the **LISTBAS_OPTS** environment variable
+ to use your colors by default. See **ENVIRONMENT**, below.
.. include:: genopts.rst
+BASIC DIALECTS
+==============
+
+Note that Turbo, BASIC XL, and BASIC XE are all proper supersets of
+Atari BASIC, so you can view an Atari BASIC program with any of
+**-bt**, **-bxl**, or **-bxe**. Also, BASIC XE is a superset of BASIC XL
+(provided BASIC XL's disk-based toolkit extended commands are not used),
+so you can usually use **-bxe** on a BASIC XL program.
+
+BASIC/A+ uses incompatible tokens, so its programs can't be viewed as
+any of the others. Trying to do this results in a very funny-looking
+listing, with commands like **POSITION** with no arguments (or with a
+string argument, or **POSITION #6;"string"**; it so happens A+ uses the
+same token number for **POSITION** that the other BASICs use for
+**?**). The same thing would happen if you booted BASIC/A+ on an Atari
+and tried to **LOAD** an Atari BASIC program. I can't help but think
+this is a major reason BASIC/A+ didn't sell that well (fortunately,
+OSS realized their mistake and fixed it in BASIC XL).
+
+OSS Integer BASIC also uses incompatible tokens. However, it uses a
+different signature (first byte of file is **$77**), so it will be
+reliably autodetected. The disk and cartridge versions of Integer
+BASIC use different tokens; this is also autodetected pretty
+reliably. If the code doesn't make sense, try **-bic** or **-bid**
+to override the autodetection.
+
+If you see lots of "bad token XX" messages, or if the code
+just doesn't make any sense, you're using the wrong BASIC
+option. **whichbas**\(1) can usually detect the BASIC a program was
+written in, but if the results are ambiguous, **listbas** will assume
+Turbo BASIC XL. If this is wrong, use **-bxl** or **-bxe** to force
+the issue.
+
COLORS
======
Color output only works on terminal emulators (or real terminals)
that support ANSI/VT220 style escape codes. This includes all modern
-terminal emulators, and most not-so-modern ones in the UNIX world.
+terminal emulators, and most not-so-modern ones in the UNIX world. See
+**NOTES** for a list of tested terminal emulators.
+
+You can customize the colors by using the **-c** *colors* option, either
+on the command line, or in the **LISTBAS_OPTS** environment variable.
+*colors* is a string of exactly 8 characters, each of which must be the
+digits *0* through *7* to specify a color, or the letter *n* to specify
+no color.
+
+The colors are the standard ANSI ones, plus *n*:
+
+*0*
+ Black.
+
+*1*
+ Red.
+
+*2*
+ Green.
+
+*3*
+ Yellow (or brown/orange, on some terminals).
+
+*4*
+ Blue.
+
+*5*
+ Purple (aka violet).
+
+*6*
+ Cyan.
-The color scheme is:
+*7*
+ White.
-**yellow**
- Commands. Also "command operators" such as the **GOTO** in **ON/GOTO** and
- the **STEP** in a **FOR** command. These are really operators as far as
- BASIC is concerned, but it makes more sense to colorize them as commands.
+*n*
+ No custom color. Output will be in the terminal's default foreground color.
-**green**
- Operators (except functions and "command operators").
+The order they're used in the *colors* argument is:
-**purple**
- Functions.
+**1**
+ BASIC keywords. Default: *3* (yellow).
-**red**
- Numbers (except line numbers at the start of a line) and string
- constants.
+**2**
+ Operators, including quotes around strings and commas between **DATA** items. Default: *2* (green).
-**cyan**
- Line numbers at the start of a line, comments (**REM** text) and **DATA** elements.
+**3**
+ Functions. Default: *5* (purple).
-Variable names and commas between **DATA** elements are not highlighted,
-so they'll appear in the default foreground color (usually white if the
-terminal has a black background, or black if the background is white).
+**4**
+ Constants (numeric or string). Default: *1* (red).
-Note that nothing is highlighted in blue. This is because it's
-difficult to read on many terminals. Also, black and white are not
-used because presumably, one or the other is the background color of
-the terminal.
+**5**
+ Line numbers (at the start of a line only; **GOTO** and **GOSUB** line numbers
+ are constants). Default: *6* (cyan).
+
+**6**
+ **REM** text. Default: *4* (blue).
+
+**7**
+ **DATA** items (but not the commas between them). Default: *6* (cyan).
+
+**8**
+ Variable names. Default: *n* (uncolorized).
+
+So, the default color scheme is equivalent to:
+
+ **-c** *3251646n*
+
+Black and white are not used by default because presumably, one or the
+other is the background color of the terminal.
NOTES
=====
+Indentation
+-----------
+
+The indentation isn't all that well-tested yet, but so far it seems work
+correctly. The **-t** option is the equivalent of **\*L\ -** for Turbo,
+or **SET 12,0** for BXL/BXE. The different BASICs have different
+indentation rules; try viewing the same Atari BASIC program with
+**-bt**, **-bxl**, and **-bxe** to compare them.
+
+**listbas -t** is also (as far as I know) the only way to **LIST**
+a BASIC/A+ program without indentation, since BASIC/A+ itself doesn't
+have a way to disable it.
+
+Turbo BASIC, at least, will "max out" the indentation level at some
+point. Once there are 60 or so levels of indent, it stops adding
+more. **listbas** doesn't emulate this behaviour (shouldn't be a
+problem, it's a pathological case).
+
+BASIC XL actually does indentation within a line. If you write::
+
+ 10 IF A:IF B:IF C:REM
+
+...BXL lists it as::
+
+ 10 If A: If B: If C:Rem
+
+**listbas** only indents at the start of a line, so this behaviour is
+not emulated.
+
+One thing **listbas** gets right: the **LIST** command in Turbo, A+,
+BXL, and BXE always starts out with 0 indent spaces, if you're only
+listing part of a program. BXE example::
+
+ 10 While 1
+ 20 If Peek(764)<>255
+ 30 ? "SOMEONE PRESSED A KEY":Poke 764,255
+ 40 Endif
+ 50 Endwhile
+
+...but if you give a **LIST 30** in BXE, you'll get line 30 without any
+indentation. **listbas** does this, too, if you use the **-r** option.
+
+Protected Programs
+------------------
+
**listbas** will refuse to operate on a LIST-protected program with
scrambled variable names. For code-protected programs, it will stop at
the line with the invalid offset. Use **unprotbas**\(1) to remove the
protection.
+Comparison to chkbas
+--------------------
+
**listbas** is similar to Jindroush's **chkbas**\(1). The main differences are:
- **listbas** prints ATASCII graphics as Unicode equivalents, so the listing
@@ -100,13 +322,16 @@ protection.
- **listbas** does color syntax highlighting.
-- **listbas** only supports Atari BASIC, not Turbo BASIC or BASIC XL/XE.
+- **listbas** supports OSS BASIC/A+ and Integer BASIC in addition to Turbo and BXL/BXE.
+
+- **listbas** indents BASIC/A+, Turbo, BXL, and BXE code, just like the
+ actual BASICs do.
- **listbas** doesn't show information about the variables. Use **vxrefbas**\(1)
for that.
-- **listbas** will not write ATASCII data to your terminal. By default, it uses
- **a8cat**\(1) to convert the output to something human-readable
+- **listbas** will not write ATASCII data to your terminal. By default, it
+ converts ATASCII characters into Unicode/UTF-8 characters
that won't confuse the terminal. When outputting raw ATASCII (**-a** option),
it refuses to run if standard output is a terminal.
@@ -116,14 +341,71 @@ protection.
- **listbas** doesn't print a banner on startup.
- **listbas** tells you if the program is protected, and refuses to operate
- on variable-protected programs.
+ on variable-protected programs. For code-protected programs, it lists
+ the program up to the "poisoned" line (normally the last line).
+
+Terminal Support
+----------------
+
+The color and inverse/bold/underline support assumes your terminal supports
+ANSI/VT220 escape codes... but it does *not* use **curses**\(3X) or
+**terminfo**\(5), or even look at **TERM** in the environment. It just
+blindly emits the escape codes. Likewise, Unicode characters are printed
+in UTF-8 encoding, without actually checking whether the terminal or the
+current locale supports UTF-8.
+
+**listbas** has been tested and is known to work in at least these
+terminals:
+
+ **rxvt-unicode**, aka **urxvt**. This is the terminal the author uses.
+
+ **xterm** - tested frequently. Requires the XTerm.locale resource
+ to be set to **UTF-8** (e.g. in **~/.Xdefaults**\), or the **-lc**
+ and/or **-en UTF-8** command line options.
+
+ **Linux console** - works fine, but good luck finding a font with
+ all the Unicode graphics characters. Better use **-m**.
+
+ **kitty** - very fancy terminal emulator that supports both X11 and
+ Wayland. **listbas** was only tested on X11.
+
+ **xfce4-terminal** - version 0.8.10, with XFCE4 4.16.0.
+
+ **konsole** - the KDE terminal, from KDE 5.90.
+
+ **gnome-terminal** - version 3.43.90.
+
+ **st** - minimal terminal from suckless.org, version 0.9.2.
+
+ **mlterm** - version 3.9.3.
+
+ **kmscon** - version 9.0.0. https://github.com/Aetf/kmscon
+
+ **fbterm** - version 1.8. https://github.com/sfzhi/fbterm
+
+Also, **rxvt** and **aterm** don't support Unicode, but they will
+otherwise work (display color and inverse) with the **-m** or **-d**
+options to **listbas**.
+
+HTML Output
+-----------
+
+See **abas2html**\(1).
+
+ENVIRONMENT
+===========
+
+**LISTBAS_OPTS**
+ If this environment variable is set, **listbas** parses its value as though
+ the contents were placed on the command line as options, preceding any actual
+ option. Example::
-I thought about adding an HTML output option, but there's no need: if you want
-a colorful listing of an Atari BASIC program, install **aha**\(1) from
-https://github.com/theZiz/aha (or your distro's package repo) and run
-something like::
+ export LISTBAS_OPTS="-c123456 -d"
- listbas PROGRAM.BAS | aha > program.html
+ If you place the above line in your shell's startup script, **listbas** will
+ use your custom color scheme, and will default to the "dots" output mode. If
+ you then run **listbas** the **-c** and/or **-x**, **-m** options, the options
+ on the command line will override the environment.
EXIT STATUS
===========
diff --git a/manftr.rst b/manftr.rst
index 6ec4525..0d38695 100644
--- a/manftr.rst
+++ b/manftr.rst
@@ -17,28 +17,33 @@ SEE ALSO
**atr2xfd**\(1),
**atrsize**\(1),
**axe**\(1),
+**bas2aplus**\(1),
**blob2c**\(1),
**blob2xex**\(1),
**cart2xex**\(1),
**cxrefbas**\(1),
**dasm2atasm**\(1),
+**diffbas**\(1),
**dumpbas**\(1),
**f2toxex**\(1),
**fenders**\(1),
**listbas**\(1),
+**listamsb**\(1),
**protbas**\(1),
**renumbas**\(1),
**rom2cart**\(1),
**unmac65**\(1),
**unprotbas**\(1),
**vxrefbas**\(1),
+**whichbas**\(1),
**xex1to2**\(1),
**xexamine**\(1),
**xexcat**\(1),
**xexsplit**\(1),
**xfd2atr**\(1),
**xex**\(5),
-**atascii**\(7).
+**atascii**\(7),
+**fauxtari**\(7).
Any good Atari 8-bit book: *De Re Atari*, *The Atari BASIC Reference
Manual*, the *OS Users' Guide*, *Mapping the Atari*, etc.
diff --git a/ossintbas.7 b/ossintbas.7
new file mode 100644
index 0000000..dda00d3
--- /dev/null
+++ b/ossintbas.7
@@ -0,0 +1,582 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "OSSINTBAS" 7 "2025-03-25" "0.2.2" "Urchlay's Atari 8-bit Tools"
+.SH NAME
+ossintbas \- OSS Integer BASIC Notes
+.SH DESCRIPTION
+.sp
+OSS Integer BASIC is a BASIC interpreter from OSS, similar to BASIC XL
+and BASIC XE. It was never released as a commercial product, and was
+eventually released into the Public Domain.
+.sp
+It appears to be complete and free of major bugs. There is no manual
+for it, so I\(aqm documenting the differences between Integer BASIC and
+BASIC XL/XE here, as I discover them.
+.sp
+For more info on the release:
+.INDENT 0.0
+.INDENT 3.5
+\fI\%https://forums.atariage.com/topic/257029\-oss\-d\-day\-part\-3\-integer\-basic\-source\-code\-now\-in\-pd/\fP
+.UNINDENT
+.UNINDENT
+.SH NUMERICS
+.sp
+All numbers are signed 16\-bit integers. There is no floating point support
+at all.
+.sp
+Two\(aqs complement is used, so bit 15 is the sign bit, and \fI\-1\fP is
+represented as \fI$FFFF\fP\&.
+.sp
+The range is \fI\-32768\fP to \fI32767\fP\&. Somewhat confusingly (but also
+usefully), positive numbers in the range \fI32768\fP to \fI65535\fP can be
+entered in program code, or as response to \fBINPUT\fP, etc... but when
+they are \fBPRINT\fPed, they will appear as negative numbers. This
+is unlike Apple\(aqs Integer BASIC, for instance. It was probably done
+so that BASIC code could use the familiar memory locations. Example:
+\fBPEEK(53279)\fP to read the console keys. It would be very annoying if
+this had to be written as \fBPEEK(\-12257)\fP\&... although it does work
+if written that way (Apple\-style).
+.sp
+Although floating point is not supported, it\(aqs possible to enter
+numbers with a decimal point or even scientific notation. These will
+silently be converted to integers, with rounding. If the result is
+outside the range \fI\-32768\fP to \fI65535\fP, you\(aqll get an \fBERROR\- 3\fP\&.
+This applies to numbers entered as part of the program as well as
+those entered in response to \fBINPUT\fP, or \fBREAD\fP from \fBDATA\fP
+lines.
+.SH COMMANDS
+.sp
+\fBVBLANKWAIT\fP
+.INDENT 0.0
+.INDENT 3.5
+Pause and wait for a vertical blank interrupt to occur.
+.sp
+Abbreviation: \fBV.\fP
+.UNINDENT
+.UNINDENT
+.sp
+\fBVINC\fP \fI<var>\fP
+.INDENT 0.0
+.INDENT 3.5
+Increment (add 1 to) a variable. This is about 30% faster than
+\fBA=A+1\fP\&.
+.sp
+Abbreviation: \fBVI.\fP
+.UNINDENT
+.UNINDENT
+.sp
+\fBVDEC\fP \fI<var>\fP
+.INDENT 0.0
+.INDENT 3.5
+Decrement (subtract 1 from) a variable. Faster than \fBA=A\-1\fP\&.
+.sp
+Abbreviation: \fBVD.\fP
+.UNINDENT
+.UNINDENT
+.sp
+\fBVCONST\fP \fI<num>\fP, \fI<var>\fP
+.INDENT 0.0
+.INDENT 3.5
+Add a constant to \fIvar\fP\&. There are 8 constants, numbered 0 through
+7. They are set with the \fBSET\fP command, using arguments 16 to 23
+to set the constants. Example: \fBSET 16,10\fP sets constant 0 to 123,
+and \fBVCONST 0,A\fP adds 10 to A.
+.sp
+If \fI<num>\fP is greater than 7, the variable will be
+unchanged. \fBSET\fP won\(aqt accept a number higher than 23 for its first
+argument, so there\(aqd be no way to set any constants other than 0
+to 7 anyway.
+.sp
+When Integer BASIC first starts up, the constants are initialized
+to what amounts to garbage values. You can examine them with
+\fBSYS(16)\fP through \fBSYS(23)\fP, but it\(aqs a bad idea to depend on
+them because the values are different between the disk and cartridge
+versions of Integer BASIC.
+.sp
+Using VCONST is about 15% faster than just adding a number to a
+variable.
+.sp
+Abbreviation: \fBVC.\fP
+.UNINDENT
+.UNINDENT
+.SH FUNCTIONS
+.sp
+\fBRUN(0)\fP
+.INDENT 0.0
+.INDENT 3.5
+Returns the run (coldstart) address of the interpreter. \fB? USR(RUN(0))\fP
+restarts Integer BASIC. The \fI0\fP is a \(aqdummy\(aq argument (ignored, like \fBFRE(0)\fP).
+.UNINDENT
+.UNINDENT
+.SH OPERATORS
+.sp
+\fB!\fP
+.INDENT 0.0
+.INDENT 3.5
+Binary OR. Infix operator.
+.UNINDENT
+.UNINDENT
+.sp
+\fB&\fP
+.INDENT 0.0
+.INDENT 3.5
+Binary AND. Infix operator.
+.UNINDENT
+.UNINDENT
+.sp
+\fB%\fP
+.INDENT 0.0
+.INDENT 3.5
+Binary exclusive OR (XOR). Infix operator.
+.UNINDENT
+.UNINDENT
+.sp
+\fB<<\fP
+.INDENT 0.0
+.INDENT 3.5
+Left shift, like C. Infix operator. Result is the expression on the left,
+shifted left by the number of bits on the right. Examples: \fB1<<4\fP
+is 16, \fB255<<1\fP is 510.
+.sp
+Bits shifted off the left end of the number are lost. Zeroes are
+shifted in, for the low\-order bit(s). Shifting anything left 16 times
+results in zero. Since bit 15 is the sign bit, shifting a 1 into bit
+15 will result in a negative number.
+.UNINDENT
+.UNINDENT
+.sp
+\fB>>\fP
+.INDENT 0.0
+.INDENT 3.5
+Right shift, like C. Infix operator. Result is the expression
+on the left, shifted to the right, by the number of bits on the
+right. Examples: \fB16>>4\fP is 1, \fB255>>1\fP is 127.
+.sp
+Bits shifted off the right end of the number are lost. Zeroes are
+shifted in, for the high\-order bit(s). Shifting any negative number
+to the right will result in a positive numbers, since a zero will be
+shifted into the sigh bit.
+.UNINDENT
+.UNINDENT
+.sp
+\fB^&\fP
+.INDENT 0.0
+.INDENT 3.5
+Binary NAND. Like AND, but inverts the bits in the result. Infix operator.
+.UNINDENT
+.UNINDENT
+.sp
+\fB^!\fP
+.INDENT 0.0
+.INDENT 3.5
+Binary NOR. Infix operator.
+.UNINDENT
+.UNINDENT
+.sp
+\fB^%\fP
+.INDENT 0.0
+.INDENT 3.5
+Binary NXOR. Infix operator.
+.UNINDENT
+.UNINDENT
+.sp
+\fB\e\fP
+.INDENT 0.0
+.INDENT 3.5
+Modulus. Infix operator. Result of \fBX&Y\fP is the remainder of \fBX/Y\fP\&.
+.sp
+\fINOTE\fP that this is \fBbroken\fP in the cartridge version of Integer BASIC,
+though it works correctly in the disk version. See \fBBUGS\fP, below.
+.UNINDENT
+.UNINDENT
+.SH COMPATIBILITY
+.sp
+Integer BASIC can\(aqt LOAD programs that were SAVEd by any other BASIC,
+and programs SAVEd by Integer BASIC can\(aqt be LOADed in any other
+BASIC. Use LIST and ENTER instead.
+.sp
+Actually, the disk and cartridge versions of Integer BASIC can\(aqt even
+LOAD each others\(aq programs. They use a different set of token numbers.
+This is because the cartridge version includes the \fBHITCLR\fP command,
+but the disk version does not.
+.sp
+The \fBINT()\fP function exists in Integer BASIC, but it doesn\(aqt actually
+do anything. Seems to be provided for compatibility with other BASICs.
+.SS Missing Commands
+.sp
+Integer BASIC has the full command set of the BASIC XL cartridge,
+minus these commands:
+.sp
+\fBDEG\fP \fBRAD\fP \fBRGET\fP \fBRPUT\fP
+.sp
+The cartridge version of Integer BASIC has the \fBHITCLR\fP command
+(from BASIC XE), but the disk version does not.
+.sp
+The BASIC XL extension disk commands (\fBLOCAL\fP, \fBEXIT\fP,
+\fBPROCEDURE\fP, \fBCALL\fP, \fBSORTUP\fP, and \fBSORTDOWN\fP) don\(aqt exist in
+Integer BASIC. If there was ever an extensions disk for Integer BASIC,
+nobody\(aqs found it yet.
+.sp
+The extra commands in BASIC XE (\fBEXTEND\fP, \fBINVERSE\fP, \fBNORMAL\fP,
+\fBBLOAD\fP, and \fBBSAVE\fP) are not supported.
+.SS Missing Operators/Functions
+.INDENT 0.0
+.TP
+.B \fB^\fP
+There is no exponentiation operator; \fB2^2\fP is a syntax error.
+.TP
+.B \fBATN()\fP, \fBCLOG()\fP, \fBCOS()\fP, \fBEXP()\fP, \fBLOG()\fP, \fBSIN()\fP
+There are no trigonometric functions in Integer BASIC. These can
+be used as array variable names, if you wish.
+.TP
+.B \fBUSING\fP
+BASIC XL and XE\(aqs "PRINT USING" doesn\(aqt exist in Integer BASIC.
+.UNINDENT
+.SH PERFORMANCE
+.sp
+OSS Integer BASIC is \fIfast\fP, compared to other interpreted BASICs on
+the Atari. It even outperforms Turbo BASIC XL (though, not \fIcompiled\fP
+Turbo).
+.sp
+For testing, I used a modified version of the Sieve of Eratosthenes
+program, found in the source for \fBbas55\fP\&. The program finds and
+prints all the prime numbers between 2 and 1000. The code:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+10 POKE 18,0:POKE 19,0:POKE 20,0
+20 DIM A(1000)
+30 N=1000
+100 S=SQR(N)
+110 FOR I=2 TO S
+120 IF A(I)=1 THEN 170
+130 D=N/I
+140 FOR J=I TO D
+150 A(I*J)=1
+160 NEXT J
+170 NEXT I
+180 FOR I=2 TO N
+190 IF A(I)=1 THEN 210
+200 PRINT I
+210 NEXT I
+1000 PRINT PEEK(18)*256*256+PEEK(19)*256+PEEK(20)
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+Line 1000 prints how many jiffies the program took to run. I used
+Atari800 5.2.0 emulating an NTSC Atari 800XL, so one jiffy is 1/60 of
+a second. The "Fastchip" results use Charles Marslet\(aqs OS floating
+point replacement ROM. For Integer BASIC, BASIC XL and BASIC XE,
+separate runs were done with the line \fB5 FAST\fP at the start of the
+program. Results:
+.TS
+center;
+|l|l|l|.
+_
+T{
+BASIC
+T} T{
+Jiffies
+T} T{
+Speedup
+T}
+_
+T{
+Atari 8K
+T} T{
+1867
+T} T{
+\-\-
+T}
+_
+T{
+A+
+T} T{
+1671
+T} T{
+1.12
+T}
+_
+T{
+Atari 8K (Fastchip)
+T} T{
+1587
+T} T{
+1.18
+T}
+_
+T{
+A+ (Fastchip)
+T} T{
+1569
+T} T{
+1.19
+T}
+_
+T{
+XE
+T} T{
+1440
+T} T{
+1.3
+T}
+_
+T{
+AMSB2
+T} T{
+1518
+T} T{
+1.23
+T}
+_
+T{
+XL
+T} T{
+1270
+T} T{
+1.47
+T}
+_
+T{
+Altirra
+T} T{
+1166
+T} T{
+1.67
+T}
+_
+T{
+XL (FAST)
+T} T{
+1110
+T} T{
+1.68
+T}
+_
+T{
+XL (Fastchip)
+T} T{
+1049
+T} T{
+1.78
+T}
+_
+T{
+XL (Fastchip, FAST)
+T} T{
+887
+T} T{
+2.1
+T}
+_
+T{
+Turbo
+T} T{
+825
+T} T{
+2.3
+T}
+_
+T{
+XE (FAST)
+T} T{
+777
+T} T{
+2.4
+T}
+_
+T{
+XE (Fastchip, FAST)
+T} T{
+777
+T} T{
+2.4
+T}
+_
+T{
+Altirra (Fastchip)
+T} T{
+769
+T} T{
+2.43
+T}
+_
+T{
+Integer
+T} T{
+719
+T} T{
+2.6
+T}
+_
+T{
+Integer (FAST)
+T} T{
+575
+T} T{
+3.25
+T}
+_
+.TE
+.sp
+Turbo BASIC XL, Atari Microsoft BASIC, and OSS Integer BASIC run at
+the same speed with or without the Fastchip ROM, since they don\(aqt use
+the OS floating point routines.
+.sp
+For reference, I rewrote the program in C and compiled it with
+cc65. It runs in 349 jiffies, 5.35x as fast as BASIC, with or without
+the Fastchip ROM. Since cc65 only supports integer arithmetic, this
+probably represents the theoretical maximum speed the algorithm could
+run in on the Atari, without rewriting it in assembly. By comparison,
+Integer BASIC looks pretty good.
+.sp
+If you get rid of lines 180 to 210 (don\(aqt print the results), Integer
+BASIC with FAST runs it in 245 jiffies, and the equivalent C program
+runs in 61 jiffies. This shows that CIO and the E: device are the
+"bottleneck" for this program (and that compiled C is still faster
+than anything interpreted).
+.SH BUGS
+.SS Modulo Arithmetic
+.sp
+The \fB\e\fP (modulus) operator returns incorrect results in the
+cartridge version of Integer BASIC. This program demonstrates the
+bug:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+10 For I=1 To 10
+20 ? I,I\e3,I\-(I/3)*3
+30 Next I
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+When run with the disk version, the results are correct:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+1 1 1
+2 2 2
+3 0 0
+4 1 1
+5 2 2
+6 0 0
+7 1 1
+8 2 2
+9 0 0
+10 1 1
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+The same program run with the cartridge version gives:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+1 254 1
+2 255 2
+3 0 0
+4 1 1
+5 2 2
+6 253 0
+7 254 1
+8 255 2
+9 0 0
+10 1 1
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+This is obviously wrong.
+.sp
+If you\(aqre writing a real program in Integer BASIC, I recommend
+avoiding the \fB\e\fP operator entirely. Write something like \fBX\-X/Y*Y\fP
+instead.
+.SH COPYRIGHT
+.sp
+WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
+.SH AUTHOR
+.INDENT 0.0
+.IP B. 3
+Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fBa8cat\fP(1),
+\fBa8eol\fP(1),
+\fBa8xd\fP(1),
+\fBatr2xfd\fP(1),
+\fBatrsize\fP(1),
+\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
+\fBblob2c\fP(1),
+\fBblob2xex\fP(1),
+\fBcart2xex\fP(1),
+\fBcxrefbas\fP(1),
+\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
+\fBdumpbas\fP(1),
+\fBf2toxex\fP(1),
+\fBfenders\fP(1),
+\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
+\fBprotbas\fP(1),
+\fBrenumbas\fP(1),
+\fBrom2cart\fP(1),
+\fBunmac65\fP(1),
+\fBunprotbas\fP(1),
+\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
+\fBxex1to2\fP(1),
+\fBxexamine\fP(1),
+\fBxexcat\fP(1),
+\fBxexsplit\fP(1),
+\fBxfd2atr\fP(1),
+\fBxex\fP(5),
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
+.sp
+Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
+Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
+.\" Generated by docutils manpage writer.
+.
diff --git a/ossintbas.rst b/ossintbas.rst
new file mode 100644
index 0000000..38fe649
--- /dev/null
+++ b/ossintbas.rst
@@ -0,0 +1,14 @@
+=========
+ossintbas
+=========
+
+-----------------------
+OSS Integer BASIC Notes
+-----------------------
+
+.. include:: manhdr7.rst
+
+.. include:: ossintbas_content.rst
+
+.. include:: manftr.rst
+
diff --git a/ossintbas_content.rst b/ossintbas_content.rst
new file mode 100644
index 0000000..2289a84
--- /dev/null
+++ b/ossintbas_content.rst
@@ -0,0 +1,319 @@
+DESCRIPTION
+===========
+
+OSS Integer BASIC is a BASIC interpreter from OSS, similar to BASIC XL
+and BASIC XE. It was never released as a commercial product, and was
+eventually released into the Public Domain.
+
+It appears to be complete and free of major bugs. There is no manual
+for it, so I'm documenting the differences between Integer BASIC and
+BASIC XL/XE here, as I discover them.
+
+For more info on the release:
+
+ https://forums.atariage.com/topic/257029-oss-d-day-part-3-integer-basic-source-code-now-in-pd/
+
+NUMERICS
+========
+
+All numbers are signed 16-bit integers. There is no floating point support
+at all.
+
+Two's complement is used, so bit 15 is the sign bit, and *-1* is
+represented as *$FFFF*.
+
+The range is *-32768* to *32767*. Somewhat confusingly (but also
+usefully), positive numbers in the range *32768* to *65535* can be
+entered in program code, or as response to **INPUT**, etc... but when
+they are **PRINT**\ed, they will appear as negative numbers. This
+is unlike Apple's Integer BASIC, for instance. It was probably done
+so that BASIC code could use the familiar memory locations. Example:
+**PEEK(53279)** to read the console keys. It would be very annoying if
+this had to be written as **PEEK(-12257)**\... although it does work
+if written that way (Apple-style).
+
+Although floating point is not supported, it's possible to enter
+numbers with a decimal point or even scientific notation. These will
+silently be converted to integers, with rounding. If the result is
+outside the range *-32768* to *65535*, you'll get an **ERROR- 3**.
+This applies to numbers entered as part of the program as well as
+those entered in response to **INPUT**, or **READ** from **DATA**
+lines.
+
+COMMANDS
+========
+
+**VBLANKWAIT**
+
+ Pause and wait for a vertical blank interrupt to occur.
+
+ Abbreviation: **V.**
+
+**VINC** *<var>*
+
+ Increment (add 1 to) a variable. This is about 30% faster than
+ **A=A+1**.
+
+ Abbreviation: **VI.**
+
+**VDEC** *<var>*
+
+ Decrement (subtract 1 from) a variable. Faster than **A=A-1**.
+
+ Abbreviation: **VD.**
+
+**VCONST** *<num>*, *<var>*
+
+ Add a constant to *var*. There are 8 constants, numbered 0 through
+ 7. They are set with the **SET** command, using arguments 16 to 23
+ to set the constants. Example: **SET 16,10** sets constant 0 to 123,
+ and **VCONST 0,A** adds 10 to A.
+
+ If *<num>* is greater than 7, the variable will be
+ unchanged. **SET** won't accept a number higher than 23 for its first
+ argument, so there'd be no way to set any constants other than 0
+ to 7 anyway.
+
+ When Integer BASIC first starts up, the constants are initialized
+ to what amounts to garbage values. You can examine them with
+ **SYS(16)** through **SYS(23)**, but it's a bad idea to depend on
+ them because the values are different between the disk and cartridge
+ versions of Integer BASIC.
+
+ Using VCONST is about 15% faster than just adding a number to a
+ variable.
+
+ Abbreviation: **VC.**
+
+
+FUNCTIONS
+=========
+
+**RUN(0)**
+
+ Returns the run (coldstart) address of the interpreter. **? USR(RUN(0))**
+ restarts Integer BASIC. The *0* is a 'dummy' argument (ignored, like **FRE(0)**\).
+
+OPERATORS
+=========
+
+**!**
+
+ Binary OR. Infix operator.
+
+**&**
+
+ Binary AND. Infix operator.
+
+**%**
+
+ Binary exclusive OR (XOR). Infix operator.
+
+**<<**
+
+ Left shift, like C. Infix operator. Result is the expression on the left,
+ shifted left by the number of bits on the right. Examples: **1<<4**
+ is 16, **255<<1** is 510.
+
+ Bits shifted off the left end of the number are lost. Zeroes are
+ shifted in, for the low-order bit(s). Shifting anything left 16 times
+ results in zero. Since bit 15 is the sign bit, shifting a 1 into bit
+ 15 will result in a negative number.
+
+**>>**
+
+ Right shift, like C. Infix operator. Result is the expression
+ on the left, shifted to the right, by the number of bits on the
+ right. Examples: **16>>4** is 1, **255>>1** is 127.
+
+ Bits shifted off the right end of the number are lost. Zeroes are
+ shifted in, for the high-order bit(s). Shifting any negative number
+ to the right will result in a positive numbers, since a zero will be
+ shifted into the sigh bit.
+
+**^&**
+
+ Binary NAND. Like AND, but inverts the bits in the result. Infix operator.
+
+**^!**
+
+ Binary NOR. Infix operator.
+
+**^%**
+
+ Binary NXOR. Infix operator.
+
+**\\**
+
+ Modulus. Infix operator. Result of **X&Y** is the remainder of **X/Y**.
+
+ *NOTE* that this is **broken** in the cartridge version of Integer BASIC,
+ though it works correctly in the disk version. See **BUGS**, below.
+
+
+COMPATIBILITY
+=============
+
+Integer BASIC can't LOAD programs that were SAVEd by any other BASIC,
+and programs SAVEd by Integer BASIC can't be LOADed in any other
+BASIC. Use LIST and ENTER instead.
+
+Actually, the disk and cartridge versions of Integer BASIC can't even
+LOAD each others' programs. They use a different set of token numbers.
+This is because the cartridge version includes the **HITCLR** command,
+but the disk version does not.
+
+The **INT()** function exists in Integer BASIC, but it doesn't actually
+do anything. Seems to be provided for compatibility with other BASICs.
+
+Missing Commands
+----------------
+
+Integer BASIC has the full command set of the BASIC XL cartridge,
+minus these commands:
+
+**DEG** **RAD** **RGET** **RPUT**
+
+The cartridge version of Integer BASIC has the **HITCLR** command
+(from BASIC XE), but the disk version does not.
+
+The BASIC XL extension disk commands (**LOCAL**, **EXIT**,
+**PROCEDURE**, **CALL**, **SORTUP**, and **SORTDOWN**) don't exist in
+Integer BASIC. If there was ever an extensions disk for Integer BASIC,
+nobody's found it yet.
+
+The extra commands in BASIC XE (**EXTEND**, **INVERSE**, **NORMAL**,
+**BLOAD**, and **BSAVE**) are not supported.
+
+Missing Operators/Functions
+---------------------------
+
+**^**
+ There is no exponentiation operator; **2^2** is a syntax error.
+
+**ATN()**, **CLOG()**, **COS()**, **EXP()**, **LOG()**, **SIN()**
+ There are no trigonometric functions in Integer BASIC. These can
+ be used as array variable names, if you wish.
+
+**USING**
+ BASIC XL and XE's "PRINT USING" doesn't exist in Integer BASIC.
+
+PERFORMANCE
+===========
+
+OSS Integer BASIC is *fast*, compared to other interpreted BASICs on
+the Atari. It even outperforms Turbo BASIC XL (though, not *compiled*
+Turbo).
+
+For testing, I used a modified version of the Sieve of Eratosthenes
+program, found in the source for **bas55**. The program finds and
+prints all the prime numbers between 2 and 1000. The code::
+
+ 10 POKE 18,0:POKE 19,0:POKE 20,0
+ 20 DIM A(1000)
+ 30 N=1000
+ 100 S=SQR(N)
+ 110 FOR I=2 TO S
+ 120 IF A(I)=1 THEN 170
+ 130 D=N/I
+ 140 FOR J=I TO D
+ 150 A(I*J)=1
+ 160 NEXT J
+ 170 NEXT I
+ 180 FOR I=2 TO N
+ 190 IF A(I)=1 THEN 210
+ 200 PRINT I
+ 210 NEXT I
+ 1000 PRINT PEEK(18)*256*256+PEEK(19)*256+PEEK(20)
+
+Line 1000 prints how many jiffies the program took to run. I used
+Atari800 5.2.0 emulating an NTSC Atari 800XL, so one jiffy is 1/60 of
+a second. The "Fastchip" results use Charles Marslet's OS floating
+point replacement ROM. For Integer BASIC, BASIC XL and BASIC XE,
+separate runs were done with the line **5 FAST** at the start of the
+program. Results:
+
+.. csv-table::
+
+ "BASIC", "Jiffies", "Speedup"
+ "Atari 8K", "1867", "--"
+ "A+", "1671", "1.12"
+ "Atari 8K (Fastchip)", "1587", "1.18"
+ "A+ (Fastchip)", "1569", "1.19"
+ "XE", "1440", "1.3"
+ "AMSB2", "1518", "1.23"
+ "XL", "1270", "1.47"
+ "Altirra", "1166", "1.67"
+ "XL (FAST)", "1110", "1.68"
+ "XL (Fastchip)", "1049", "1.78"
+ "XL (Fastchip, FAST)", "887", "2.1"
+ "Turbo", "825", "2.3"
+ "XE (FAST)", "777", "2.4"
+ "XE (Fastchip, FAST)", "777", "2.4"
+ "Altirra (Fastchip)", "769", "2.43"
+ "Integer", "719", "2.6"
+ "Integer (FAST)", "575", "3.25"
+
+Turbo BASIC XL, Atari Microsoft BASIC, and OSS Integer BASIC run at
+the same speed with or without the Fastchip ROM, since they don't use
+the OS floating point routines.
+
+For reference, I rewrote the program in C and compiled it with
+cc65. It runs in 349 jiffies, 5.35x as fast as BASIC, with or without
+the Fastchip ROM. Since cc65 only supports integer arithmetic, this
+probably represents the theoretical maximum speed the algorithm could
+run in on the Atari, without rewriting it in assembly. By comparison,
+Integer BASIC looks pretty good.
+
+If you get rid of lines 180 to 210 (don't print the results), Integer
+BASIC with FAST runs it in 245 jiffies, and the equivalent C program
+runs in 61 jiffies. This shows that CIO and the E: device are the
+"bottleneck" for this program (and that compiled C is still faster
+than anything interpreted).
+
+
+BUGS
+====
+
+Modulo Arithmetic
+-----------------
+
+The **\\** (modulus) operator returns incorrect results in the
+cartridge version of Integer BASIC. This program demonstrates the
+bug::
+
+ 10 For I=1 To 10
+ 20 ? I,I\3,I-(I/3)*3
+ 30 Next I
+
+When run with the disk version, the results are correct::
+
+ 1 1 1
+ 2 2 2
+ 3 0 0
+ 4 1 1
+ 5 2 2
+ 6 0 0
+ 7 1 1
+ 8 2 2
+ 9 0 0
+ 10 1 1
+
+The same program run with the cartridge version gives::
+
+ 1 254 1
+ 2 255 2
+ 3 0 0
+ 4 1 1
+ 5 2 2
+ 6 253 0
+ 7 254 1
+ 8 255 2
+ 9 0 0
+ 10 1 1
+
+This is obviously wrong.
+
+If you're writing a real program in Integer BASIC, I recommend
+avoiding the **\\** operator entirely. Write something like **X-X/Y\*Y**
+instead.
diff --git a/protbas.1 b/protbas.1
index 6d60f3d..971cb8a 100644
--- a/protbas.1
+++ b/protbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "PROTBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "PROTBAS" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
protbas \- LIST-protect Atari 8-bit BASIC programs
.SH SYNOPSIS
@@ -117,28 +117,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/renumbas.1 b/renumbas.1
index 9252335..1d52523 100644
--- a/renumbas.1
+++ b/renumbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "RENUMBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "RENUMBAS" 1 "2025-03-27" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
renumbas \- Renumber Atari 8-bit BASIC programs
.SH SYNOPSIS
@@ -38,9 +38,10 @@ renumbas [\fB\-v\fP] [\fB\-s\fP \fIstart\-lineno\fP] [\fB\-i\fP \fIincrement\fP]
\fBrenumbas\fP reads a tokenized Atari 8\-bit BASIC program and writes a
renumbered copy of the program.
.sp
-\fBinput\-file\fP must be a tokenized (SAVEd) Atari BASIC program. Use
-\fI\-\fP to read from standard input, but \fBrenumbas\fP will refuse to
-read from standard input if it\(aqs a terminal.
+\fBinput\-file\fP must be a tokenized (SAVEd) Atari BASIC, BASIC XL,
+BASIC XE, or Turbo BASIC program. Use \fI\-\fP to read from standard input,
+but \fBrenumbas\fP will refuse to read from standard input if it\(aqs a
+terminal.
.sp
\fBoutput\-file\fP will be the renumbered BASIC program. If it already
exists, it will be overwritten. Use \fI\-\fP to write to standard output,
@@ -48,10 +49,12 @@ but \fBrenumbas\fP will refuse to write to standard output if it\(aqs a
terminal (since tokenized BASIC is binary data and may confuse the
terminal).
.sp
-Line number references are changed in every line where they occur, so
-e.g. if line 100 gets changed to 200, any other line that does a \fIGOTO\fP
-\fI100\fP (or \fIGOSUB\fP, \fIRESTORE\fP, \fITRAP\fP, etc) will be updated with the new line
-number.
+Line number references are changed in every line where they occur,
+so e.g. if line 100 gets changed to 200, any other line that does a
+\fIGOTO\fP \fI100\fP (or \fIGOSUB\fP, \fIRESTORE\fP, \fITRAP\fP, etc) will be updated with
+the new line number. If the input is BASIC/A+ or OSS Integer BASIC,
+the line numbers will be changed, but references to them \fIwill not\fP
+be updated (a warning will be printed to stderr, in that case).
.sp
Computed line numbers can\(aqt be updated (e.g. \fIGOTO A or GOSUB
1000+A*100\fP). These will cause warnings on stderr, so you can fix them
@@ -179,28 +182,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/renumbas.c b/renumbas.c
index 6f4f51e..963f7c1 100644
--- a/renumbas.c
+++ b/renumbas.c
@@ -122,6 +122,14 @@ void renumber(void) {
walk_all_code();
}
+void check_basic_type(void) {
+ if(lomem == 0x77) {
+ fprintf(stderr, "%s: Warning: OSS Integer BASIC not fully supported.\n", self);
+ } else if(save_command_tok == 0x1d || save_command_tok == 0x48) {
+ fprintf(stderr, "%s: Warning: BASIC/A+ not fully supported.\n", self);
+ }
+}
+
int main(int argc, char **argv) {
set_self(*argv);
parse_general_args(argc, argv, print_help);
@@ -129,6 +137,7 @@ int main(int argc, char **argv) {
readfile();
parse_header();
+ check_basic_type();
build_ref_table();
renumber();
diff --git a/renumbas.rst b/renumbas.rst
index a442ccb..bcfa996 100644
--- a/renumbas.rst
+++ b/renumbas.rst
@@ -14,12 +14,14 @@ renumbas [**-v**] [**-s** *start-lineno*] [**-i** *increment*] [**-f** *first-li
DESCRIPTION
===========
+
**renumbas** reads a tokenized Atari 8-bit BASIC program and writes a
renumbered copy of the program.
-**input-file** must be a tokenized (SAVEd) Atari BASIC program. Use
-*-* to read from standard input, but **renumbas** will refuse to
-read from standard input if it's a terminal.
+**input-file** must be a tokenized (SAVEd) Atari BASIC, BASIC XL,
+BASIC XE, or Turbo BASIC program. Use *-* to read from standard input,
+but **renumbas** will refuse to read from standard input if it's a
+terminal.
**output-file** will be the renumbered BASIC program. If it already
exists, it will be overwritten. Use *-* to write to standard output,
@@ -27,10 +29,13 @@ but **renumbas** will refuse to write to standard output if it's a
terminal (since tokenized BASIC is binary data and may confuse the
terminal).
-Line number references are changed in every line where they occur, so
-e.g. if line 100 gets changed to 200, any other line that does a *GOTO*
-*100* (or *GOSUB*, *RESTORE*, *TRAP*, etc) will be updated with the new line
-number.
+Line number references are changed in every line where they occur,
+so e.g. if line 100 gets changed to 200, any other line that does a
+*GOTO* *100* (or *GOSUB*, *RESTORE*, *TRAP*, etc) will be updated with
+the new line number. If the input is BASIC/A+ or OSS Integer BASIC,
+the line numbers will be changed, but references to them *will not*
+be updated (a warning will be printed to stderr, in that case).
+
Computed line numbers can't be updated (e.g. *GOTO A or GOSUB
1000+A*100*). These will cause warnings on stderr, so you can fix them
diff --git a/rom2cart.1 b/rom2cart.1
index bba640b..d8a8927 100644
--- a/rom2cart.1
+++ b/rom2cart.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "ROM2CART" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "ROM2CART" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
rom2cart \- Convert a raw ROM image to an Atari800 CART image, or vice versa
.\" RST source for rom2cart(1) man page. Convert with:
@@ -245,28 +245,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/tokens.c b/tokens.c
index 744fd51..675d220 100644
--- a/tokens.c
+++ b/tokens.c
@@ -54,7 +54,7 @@ const char *commands[] = {
"CSAVE", /* $34 */
"CLOAD",
"", /* $36, implied LET */
- "ERROR -" /* $37 */
+ "ERROR- " /* $37 */
};
const unsigned short last_command = (sizeof(commands) / sizeof(char *)) - 1;
diff --git a/turbo_tokens.c b/turbo_tokens.c
new file mode 100644
index 0000000..2278e21
--- /dev/null
+++ b/turbo_tokens.c
@@ -0,0 +1,82 @@
+/* these start at token 0x38 */
+const char *turbo_cmds[] = {
+ "DPOKE", /* $38 */
+ "MOVE",
+ "-MOVE",
+ "*F",
+ "REPEAT",
+ "UNTIL",
+ "WHILE",
+ "WEND",
+ "ELSE", /* $40 */
+ "ENDIF",
+ "BPUT",
+ "BGET",
+ "FILLTO",
+ "DO",
+ "LOOP",
+ "EXIT",
+ "DIR", /* $48 */
+ "LOCK",
+ "UNLOCK",
+ "RENAME",
+ "DELETE",
+ "PAUSE",
+ "TIME$=",
+ "PROC",
+ "EXEC", /* $50 */
+ "ENDPROC",
+ "FCOLOR",
+ "*L",
+ "------------------------------",
+ "RENUM",
+ "DEL",
+ "DUMP",
+ "TRACE", /* $58 */
+ "TEXT",
+ "BLOAD",
+ "BRUN",
+ "GO#",
+ "#",
+ "*B",
+ "PAINT",
+ "CLS", /* $58 */
+ "DSOUND",
+ "CIRCLE",
+ "%PUT",
+ "%GET" /* $64 */
+};
+
+const int turbo_cmd_size = sizeof(turbo_cmds);
+
+/* these start at token 0x55 */
+const char *turbo_ops[] = {
+ "DPEEK", /* $55 */
+ "&",
+ "!",
+ "INSTR", /* $58 */
+ "INKEY$",
+ " EXOR ",
+ "HEX$",
+ "DEC",
+ " DIV ",
+ "FRAC",
+ "TIME$",
+ "TIME", /* $60 */
+ " MOD ",
+ " EXEC ",
+ "RND",
+ "RAND",
+ "TRUNC",
+ "%0",
+ "%1",
+ "%2", /* $68 */
+ "%3",
+ " GO# ",
+ "UINSTR",
+ "ERR",
+ "ERL", /* $6D */
+};
+
+const int turbo_ops_size = sizeof(turbo_ops);
+
diff --git a/turbo_tokens.h b/turbo_tokens.h
new file mode 100644
index 0000000..3cb83ec
--- /dev/null
+++ b/turbo_tokens.h
@@ -0,0 +1,5 @@
+extern const char *turbo_cmds[];
+extern const int turbo_cmd_size;
+
+extern const char *turbo_ops[];
+extern const int turbo_ops_size;
diff --git a/unmac65.1 b/unmac65.1
index 6a1598e..d1bcfbe 100644
--- a/unmac65.1
+++ b/unmac65.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "UNMAC65" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "UNMAC65" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
unmac65 \- Detokenize Atari 8-bit Mac/65 SAVEd files.
.\" RST source for unmac65(1) man page. Convert with:
@@ -377,28 +377,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/unmac65.c b/unmac65.c
index 42875bb..69d4703 100644
--- a/unmac65.c
+++ b/unmac65.c
@@ -822,6 +822,7 @@ void atari8_get_opts() {
#endif
void usage() {
+ fputs(BANNER, stderr);
fprintf(stderr, "usage: " SELF " [options] inputfile\n\n");
fprintf(stderr, "options:\n");
#ifndef ATARI8
@@ -998,9 +999,8 @@ void handle_cli_opts(int argc, char **argv) {
}
int main(int argc, char **argv) {
- fputs(BANNER, stderr);
-
#ifdef ATARI8
+ fputs(BANNER, stderr);
while(1) {
if(argc < 2) {
atari8_get_opts();
diff --git a/unprotbas.1 b/unprotbas.1
index c521116..7521520 100644
--- a/unprotbas.1
+++ b/unprotbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "UNPROTBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "UNPROTBAS" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
unprotbas \- Unprotect LIST-protected Atari 8-bit BASIC programs
.SH SYNOPSIS
@@ -344,28 +344,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/ver.rst b/ver.rst
index 6f54bd4..20b1e02 100644
--- a/ver.rst
+++ b/ver.rst
@@ -1 +1 @@
-.. |version| replace:: 0.2.1
+.. |version| replace:: 0.2.2
diff --git a/vxrefbas.1 b/vxrefbas.1
index 5804aa5..1f641e6 100644
--- a/vxrefbas.1
+++ b/vxrefbas.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "VXREFBAS" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "VXREFBAS" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
vxrefbas \- Variable cross-reference for tokenized Atari 8-bit BASIC files
.SH SYNOPSIS
@@ -120,28 +120,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/whichbas.1 b/whichbas.1
new file mode 100644
index 0000000..6be299f
--- /dev/null
+++ b/whichbas.1
@@ -0,0 +1,299 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "WHICHBAS" 1 "2025-03-26" "0.2.2" "Urchlay's Atari 8-bit Tools"
+.SH NAME
+whichbas \- Determine BASIC variant of a tokenized Atari 8-bit program
+.SH SYNOPSIS
+.sp
+whichbas [\-v] \fIinput\-file\fP [\fIinput\-file\fP ...]
+.SH DESCRIPTION
+.sp
+\fBwhichbas\fP reads tokenized Atari 8\-bit BASIC, Turbo BASIC, BASIC
+XL, BASIC XE, BASIC/A+, OSS Integer BASIC, or Atari Microsoft BASIC
+programs and attempts to discover which BASIC is required to run each
+one.
+.sp
+Note: OSS Integer BASIC is \fInot\fP to be confused with Apple II Integer BASIC!
+.sp
+\fIinput\-file\fPs must be actual files. \fBwhichbas\fP can\(aqt read from
+standard input, because it seeks in the input file.
+.sp
+With multiple \fIinput\-file\fPs, the output is one line per file,
+with the filename, a tab, and the detected BASIC. With only one
+\fIinput\-file\fP, the filename and tab are not printed.
+.SH OPTIONS
+.sp
+\fINote\fP: none of the options \fB\-s\fP \fB\-k\fP \fB\-v\fP are allowed
+when checking multiple files; they only work if there\(aqs just one
+\fIinput\-file\fP argument.
+.SS Detection Options
+.INDENT 0.0
+.TP
+.B \fB\-s\fP
+Script (or silent) mode. Instead of printing a human\-readable
+name like "Turbo BASIC XL" or "OSS BASIC XE" to stdout, \fBwhichbas\fP
+will print nothing on standard output, but will exit with a status
+indicating what it detected. The caller can check the return status
+(e.g. the \fB$?\fP variable in Bourne/POSIX shells, or \fBERRORLEVEL\fP
+in MS\-DOS or Windows). See \fBEXIT STATUS\fP, below.
+.TP
+.B \fB\-k\fP
+Keep going. The default is to stop looking at the program if the
+BASIC type gets narrowed down to either Turbo BASIC or BASIC XE.
+This option also enables \fB\-v\fP (verbose). It\(aqs really only useful
+for testing, if you\(aqre hacking on \fBwhichbas\fP itself.
+.UNINDENT
+.SS General Options
+.INDENT 0.0
+.TP
+.B \fB\-\-help\fP
+Print usage message and exit.
+.TP
+.B \fB\-\-version\fP
+Print version number and exit.
+.TP
+.B \fB\-v\fP
+Verbose operation. When displaying a number in verbose mode, it will
+be prefixed with \fI$\fP if it\(aqs in hex, or no prefix for decimal.
+.UNINDENT
+.SH NOTES
+.sp
+Atari BASIC programs are detected \fIalmost\fP 100% reliably. See \fBBUGS\fP, below,
+for the gory details.
+.sp
+Turbo BASIC, BASIC XL, and BASIC XE are all supersets of Atari BASIC.
+If you wrote a program using one of them, but didn\(aqt use any of the
+extra commands or functions, the result is still an Atari BASIC program.
+Likewise, if you wrote a program using BASIC XE, but only used the
+commands/functions it has in common with BASIC XL, it would be
+detected as BASIC XL.
+.sp
+There are two types of BASIC XE programs: regular and \fIEXTEND\fPed. The
+extended type is detected 100% reliably, because the first byte of the
+file changes from \fB$00\fP to \fB$DD\fP\&. Non\-extended programs are only
+identified as BASIC XE if they use any of the extra commands BASIC XE
+adds to those found in BASIC XL.
+.sp
+Detection of Turbo vs. BXL/BXE isn\(aqt 100% reliable, and probably
+never will be. There\(aqs too much overlap between the sets of extra
+tokens added by each. Programs that don\(aqt use very many of the extra
+functions provided by Turbo/BXL/BXE may show up as "Either Turbo BASIC XL
+or OSS BASIC XL".
+.sp
+Atari Microsoft BASIC is detected by checking that:
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.IP \(bu 2
+the first byte of the file is \fB$00\fP\&.
+.IP \(bu 2
+the next 2 bytes (LSB/MSB) are the same as the actual file length minus 3.
+.IP \(bu 2
+the last 3 bytes of the file are zero.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+This may result in false positives (files that aren\(aqt BASIC programs at
+all might show up as Microsoft). Also, no distinction is made between
+Atari MS BASIC 1.0 and 2.0.
+.sp
+OSS BASIC/A+ is an extended form of Atari BASIC. It\(aqs source
+compatible with Atari BASIC, but not token\-compatible because it uses
+different token numbers for the regular BASIC commands and operators.
+Example: SAVE is token \fB$19\fP in Atari BASIC (also Turbo/BXL/BXE),
+but in A+ it\(aqs token \fB$1D\fP\&. Detection should be 100% reliable, but
+since there aren\(aqt many BASIC/A+ programs in the wild, it hasn\(aqt been
+thoroughly tested.
+.sp
+OSS Integer BASIC is a product that was developed by OSS, but never
+released until recently. It\(aqs similar to BASIC XL and XE, but uses
+16\-bit integers for all numeric operations, rather than 6\-byte BCD
+floating point. Integer BASIC\(aqs SAVEd programs are recognized by the
+first two bytes, which are always \fB$77\fP \fB$00\fP\&. There are two known
+versions of Integer BASIC (disk and cartridge), which use different
+command tokens; \fBwhichbas\fP detects which version by looking at the
+token SAVE or CSAVE command at the end of the file.
+.sp
+Various non\-BASIC files are detected (including Mac/65 source,
+ELF binaries, etc) as a convenience, but I wouldn\(aqt rely on
+\fBwhichbas\fP\(aqs non\-BASIC file type detection if I were you.
+If you need the \fBfile\fP(1) command, use it.
+.sp
+\fBwhichbas\fP knows nothing about other BASICs such as Frost BASIC or
+Altirra BASIC.
+.sp
+When using multiple \fIinput\-file\fP arguments, a separate instance of
+\fBwhichbas\fP is spawned for each file. This isn\(aqt the most efficient
+approach, but it shouldn\(aqt cause problems on reasonably modern
+systems.
+.SH BUGS
+.SS Misdetection
+.sp
+It\(aqs possible to get a BASIC XL/XE program to misdetect as Atari BASIC
+by writing a program that does these things:
+.INDENT 0.0
+.INDENT 3.5
+.INDENT 0.0
+.IP \(bu 2
+Dimension a string array with a number of elements that isn\(aqt just a
+numeric constant or numeric variable (e.g. \fIDIM A$(2+2,10)\fP or
+\fIDIM A$(I*2,10)\fP). The code that detects a string array \fIDIM\fP command
+can only handle simple cases like \fIDIM A$(10,10)\fP or \fIDIM A$(I,10)\fP\&.
+It doesn\(aqt actually matter if the 2nd argument is a fancy expression,
+though.
+.IP \(bu 2
+Does \fInot\fP actually \fIuse\fP the string array variable by assigning to
+it or reading a value from it. String array accesses in BASIC XL/XE
+are reliably detected because they require a semicolon after the
+first number, even if there isn\(aqt a 2nd number. Example: \fI? A$(2;)\fP
+prints the 2nd element of the \fIA$\fP string array. If it were written
+as \fI? A$(2)\fP, but \fIA$\fP is a string array (not a regular string),
+BASIC XL/XE would give an \fIError 40\fP (string type mismatch) at
+runtime.
+.UNINDENT
+.UNINDENT
+.UNINDENT
+.sp
+The good news is, such a program will still work fine in Atari BASIC.
+Atari BASIC will dimension it as a regular string variable and ignore
+the 2nd dimension. Since it\(aqs not actually used elsewhere in the program,
+it doesn\(aqt hurt anything.
+.SH EXIT STATUS
+.sp
+Without the \fB\-s\fP option, exit status is 0 for success, non\-zero for
+failure.
+.sp
+With the \fB\-s\fP option, the exit status is:
+.INDENT 0.0
+.TP
+.B \fB0\fP
+Not used with \fB\-s\fP\&.
+.TP
+.B \fB1\fP or \fB2\fP
+Error reading file. Error message will be printed on standard error.
+.TP
+.B \fB3\fP
+Atari BASIC detected.
+.TP
+.B \fB4\fP
+Turbo BASIC detected.
+.TP
+.B \fB5\fP
+OSS BASIC XL detected.
+.TP
+.B \fB6\fP
+Non\-EXTENDed OSS BASIC XE detected.
+.TP
+.B \fB7\fP
+Turbo BASIC or BASIC XL (undecided which).
+.TP
+.B \fB8\fP
+Turbo BASIC or non\-EXTENDed BASIC XE (undecided which).
+.TP
+.B \fB9\fP
+Turbo BASIC, BASIC XL, or non\-EXTENDed BASIC XE (undecided which).
+.TP
+.B \fB10\fP
+Unknown Atari BASIC derivative (not Atari BASIC, but not
+Turbo/BXL/BXE/A+ either).
+.TP
+.B \fB11\fP
+Atari Microsoft BASIC detected.
+.TP
+.B \fB12\fP
+EXTENDed OSS BASIC XE detected.
+.TP
+.B \fB13\fP
+Compiled Turbo BASIC detected.
+.TP
+.B \fB14\fP
+OSS BASIC/A+ detected.
+.TP
+.B \fB15\fP
+OSS Integer BASIC (cartridge version) detected.
+.TP
+.B \fB16\fP
+OSS Integer BASIC (disk version) detected.
+.TP
+.B \fB64\fP
+None of the above; not BASIC.
+.UNINDENT
+.sp
+In the future, more exit codes may be defined (in the range \fB15\fP to
+\fB63\fP), but the existing ones will not change.
+.SH COPYRIGHT
+.sp
+WTFPL. See \fI\%http://www.wtfpl.net/txt/copying/\fP for details.
+.SH AUTHOR
+.INDENT 0.0
+.IP B. 3
+Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+\fBa8cat\fP(1),
+\fBa8eol\fP(1),
+\fBa8xd\fP(1),
+\fBatr2xfd\fP(1),
+\fBatrsize\fP(1),
+\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
+\fBblob2c\fP(1),
+\fBblob2xex\fP(1),
+\fBcart2xex\fP(1),
+\fBcxrefbas\fP(1),
+\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
+\fBdumpbas\fP(1),
+\fBf2toxex\fP(1),
+\fBfenders\fP(1),
+\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
+\fBprotbas\fP(1),
+\fBrenumbas\fP(1),
+\fBrom2cart\fP(1),
+\fBunmac65\fP(1),
+\fBunprotbas\fP(1),
+\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
+\fBxex1to2\fP(1),
+\fBxexamine\fP(1),
+\fBxexcat\fP(1),
+\fBxexsplit\fP(1),
+\fBxfd2atr\fP(1),
+\fBxex\fP(5),
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
+.sp
+Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
+Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
+.\" Generated by docutils manpage writer.
+.
diff --git a/whichbas.c b/whichbas.c
new file mode 100644
index 0000000..001d8d8
--- /dev/null
+++ b/whichbas.c
@@ -0,0 +1,1271 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <time.h>
+#include <sys/wait.h>
+
+#include "bas.h"
+#include "whichbas.h"
+
+#define BT_INVALID 0
+#define BT_ATARI 1
+#define BT_TURBO 2
+#define BT_BXL 4
+#define BT_BXE 8
+
+#define BT_BXL_BXE (BT_BXL | BT_BXE)
+
+int bas_type = 0x0f; /* start out with all enabled */
+
+int script_mode = 0; /* -s flag */
+int script_ret; /* -s mode, exit with one of SRET_* from whichbas.h as status */
+
+int keep_going = 0; /* -k flag */
+
+int comma_count; /* count of regular commas (not string/array) in statement */
+unsigned char last_cmd;
+unsigned char last_op_tok;
+unsigned short last_cmd_pos;
+
+void print_help(void) {
+ printf("Usage: %s [-v] [-h] [-k] [-s] <inputfile> ...\n", self);
+}
+
+int child_errs = 0;
+
+/* return true if the child ran and returned 0 (success) */
+int spawn_child(const char **args) {
+ pid_t pid, status;
+ int wstatus;
+
+ pid = fork();
+ if(pid == -1) {
+ perror("fork()");
+ die("Can't spawn child process");
+ } else if(pid) {
+ /* we are the parent */
+ status = waitpid(pid, &wstatus, 0);
+ if(status < 0) {
+ perror("waitpid()");
+ die("Child process went south");
+ }
+ if(! (WIFEXITED(wstatus) && WEXITSTATUS(wstatus) == 0) ) {
+ child_errs++;
+ return 0;
+ }
+ } else {
+ /* we are the child */
+ if(execv(args[0], (char * const *)args) < 0) {
+ perror("exec()");
+ exit(1);
+ }
+ }
+
+ return 1;
+}
+
+/* this is not the ideal way to handle multiple files. it forks a new
+ process for each one. however, I embedded a bunch of die() calls
+ in bas.c, thinking I'd never use some of the functions more than once
+ in the same run. what I get for trying to KISS... */
+void multiple_files(const char *argv0, char **list) {
+ const char *args[5]; /* 5 because eventually we include -k and/or -v */
+ int kidstat;
+
+ /* this isn't needed for things to work, but if I write buggy code,
+ it avoids a forkbomb. */
+ setenv("WHICHBAS_MULTI_PARANOIA", "1", 1);
+
+ args[0] = argv0;
+ args[2] = NULL;
+
+ while(*list) {
+ args[1] = *list;
+ printf("%s:\t", *list);
+ fflush(stdout);
+ kidstat = spawn_child(args);
+ if(!kidstat) puts("(detection failed)");
+ fflush(stdout);
+ list++;
+ }
+
+ if(child_errs) {
+ fprintf(stderr, "%s: exiting with error status because some files failed.\n", self);
+ exit(1);
+ } else {
+ exit(0);
+ }
+}
+
+void parse_args(int argc, char **argv) {
+ int opt;
+
+ while( (opt = getopt(argc, argv, "vksh")) != -1) {
+ switch(opt) {
+ case 'v': verbose = 1; break;
+ case 'k': keep_going = verbose = 1; break;
+ case 's': script_mode = 1; break;
+ case 'h': print_help(); exit(0);
+ default:
+ print_help();
+ exit(1);
+ }
+ }
+
+ if(optind >= argc)
+ die("No input file given (and stdin not supported).");
+
+ if(optind == argc - 1) { /* got one filename only */
+ open_input(argv[optind]);
+ if(input_file == stdin)
+ die("Reading from standard input not supported.");
+ } else { /* got multiple filenames */
+ if(keep_going || verbose || script_mode)
+ die("-k, -v, -s not supported with multiple filenames (yet?)");
+ if(getenv("WHICHBAS_MULTI_PARANOIA"))
+ die("BUG: multiple_files() recursion!");
+ multiple_files(argv[0], argv + optind);
+ }
+}
+
+/* don't need this.
+void add_type(int type) {
+ bas_type |= type;
+}
+*/
+
+void print_result(void) {
+ const char *name;
+
+ if(verbose) fprintf(stderr, " final bas_type %02x\n", bas_type);
+
+ if(bas_type == BT_INVALID) {
+ name = "Unknown variant: Not Atari BASIC, Turbo, BXL, or BXE";
+ script_ret = SRET_UKNOWN_DERIV;
+ } else if(bas_type & BT_ATARI) {
+ name = "Atari BASIC";
+ script_ret = SRET_ATARI;
+ } else if(bas_type & BT_TURBO) {
+ if(bas_type & BT_BXL) {
+ name = "Either Turbo BASIC XL or OSS BASIC XL";
+ script_ret = SRET_TURBO_OR_BXL;
+ } else if(bas_type & BT_BXE) {
+ name = "Either Turbo BASIC XL or OSS BASIC XE";
+ script_ret = SRET_TURBO_OR_BXE;
+ } else { /* bas_type == BT_TURBO */
+ name = "Turbo BASIC XL";
+ script_ret = SRET_TURBO;
+ }
+ } else if(bas_type == BT_BXL || bas_type == (BT_BXL | BT_BXE)) {
+ name = "OSS BASIC XL";
+ script_ret = SRET_BXL;
+ } else if(bas_type == BT_BXE) {
+ name = "OSS BASIC XE";
+ script_ret = SRET_BXE;
+ } else {
+ /* this one should never happen: */
+ name = "Either Turbo BASIC XL, OSS BASIC XL, or OSS BASIC XE";
+ script_ret = SRET_TURBO_OR_BXL_OR_BXE;
+ }
+
+ if(script_mode) {
+ exit(script_ret);
+ } else {
+ puts(name);
+ exit(0);
+ }
+}
+
+/* return true if a token is numeric constant
+ (including TB/BXE/BXL hex) */
+int is_numconst_op(unsigned char tok) {
+ switch(tok) {
+ case OP_NUMCONST:
+ case OP_HEXCONST:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+/* return true if a token is a function that *returns*
+ a numeric value (says nothing about the argument types,
+ though!) */
+int is_numeric_func(unsigned char tok) {
+ switch(tok) {
+ case OP_FUNC_USR:
+ case OP_FUNC_ASC:
+ case OP_FUNC_VAL:
+ case OP_FUNC_LEN:
+ case OP_FUNC_ADR:
+ case OP_FUNC_ATN:
+ case OP_FUNC_COS:
+ case OP_FUNC_PEEK:
+ case OP_FUNC_SIN:
+ case OP_FUNC_RND:
+ case OP_FUNC_FRE:
+ case OP_FUNC_EXP:
+ case OP_FUNC_LOG:
+ case OP_FUNC_CLOG:
+ case OP_FUNC_SQR:
+ case OP_FUNC_SGN:
+ case OP_FUNC_ABS:
+ case OP_FUNC_INT:
+ case OP_FUNC_PADDLE:
+ case OP_FUNC_STICK:
+ case OP_FUNC_PTRIG:
+ case OP_FUNC_STRIG:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+/* return true if a token is an arithmetic operator */
+int is_arith_op(unsigned char tok) {
+ switch(tok) {
+ case OP_UPLUS: /* not sure these two... */
+ case OP_UMINUS: /* ...really belong here */
+ case OP_NUM_LE:
+ case OP_NUM_NE:
+ case OP_NUM_GE:
+ case OP_NUM_LT:
+ case OP_NUM_GT:
+ case OP_NUM_EQ:
+ case OP_POWER:
+ case OP_MULT:
+ case OP_PLUS:
+ case OP_MINUS:
+ case OP_DIVIDE:
+ case OP_NOT:
+ case OP_OR:
+ case OP_AND:
+ case OP_NUM_ASSIGN:
+ case OP_GRP_LPAR: /* yes, this belongs here, (((A$))) is a syntax error! */
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+int is_numeric_var(unsigned char tok) {
+ int vartype;
+
+ if(tok < 0x80)
+ return 0;
+
+ vartype = get_vartype(tok);
+ return (vartype == TYPE_SCALAR || vartype == TYPE_ARRAY);
+}
+
+/* return true if a token is:
+ - a numeric constant (including hex constants),
+ - a numeric variable (including arrays),
+ - a function that returns a numeric (e.g. ASC(), SIN()).
+ for now, only standard Atari BASIC tokens are considered.
+ unary minus and plus make sense here, but binary ops don't.
+ */
+int is_numeric_rval(unsigned char tok) {
+ return
+ (tok == OP_UMINUS) ||
+ (tok == OP_UPLUS) ||
+ is_numconst_op (tok) ||
+ is_numeric_func (tok) ||
+ is_numeric_var (tok) ;
+}
+
+/* return true if a token is:
+ - a numeric constant (including hex constants),
+ - a numeric variable (including arrays),
+ - a math operator (plus, minus, etc),
+ - a function that returns a numeric (e.g. ASC(), SIN()).
+ for now, only standard Atari BASIC tokens are considered.
+ */
+int is_numeric_op(unsigned char tok) {
+ return
+ is_numeric_rval (tok) ||
+ is_arith_op (tok) ;
+}
+
+int is_string_var(unsigned char tok) {
+ return (tok >= 0x80 && (get_vartype(tok) == TYPE_STRING));
+}
+
+int is_string_const(unsigned char tok) {
+ return (tok == OP_STRCONST);
+}
+
+int is_string_exp_op(unsigned char tok) {
+ switch(tok) {
+ case OP_STR_ASSIGN:
+ case OP_STR_LE:
+ case OP_STR_NE:
+ case OP_STR_GE:
+ case OP_STR_LT:
+ case OP_STR_GT:
+ case OP_STR_EQ:
+ case OP_STR_LPAR: /* the ( in: A$(1)="A" */
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+int is_string_func(unsigned char tok) {
+ switch(tok) {
+ case OP_FUNC_STR:
+ case OP_FUNC_CHR:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+/* return true if a token is:
+ - a string constant,
+ - a string variable,
+ - a function that returns a string.
+*/
+int is_string_rval(unsigned char tok) {
+ return
+ is_string_const (tok) ||
+ is_string_func (tok) ||
+ is_string_var (tok) ;
+}
+
+/* return true if a token is:
+ - a string constant,
+ - a string variable,
+ - a string expression operator, like OP_STR_LE,
+ - a function that returns a string.
+*/
+int is_string_op(unsigned char tok) {
+ return
+ is_string_rval (tok) ||
+ is_string_exp_op (tok) ;
+}
+
+/* true if an operator token is a string function in BASIC XL (or XE).
+ these tokens are all numeric functions in Turbo, so be sure you
+ know what you're doing! */
+int is_bxl_string_func(unsigned char tok) {
+ switch(tok) {
+ case 0x5c: /* BXL HEX$, Turbo DEC */
+ case 0x66: /* BXL LEFT$, Turbo %0 */
+ case 0x67: /* BXL RIGHT$, Turbo %1 */
+ case 0x68: /* BXL MID$, Turbo %2 */
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+void remove_type(int type) {
+ bas_type &= ((~type) & 0x0f);
+
+ if(keep_going) return;
+
+ /* without -k, stop if it gets narrowed down to one of these 4. */
+ if(bas_type == BT_ATARI || bas_type == BT_TURBO || bas_type == BT_BXE || bas_type == BT_BXL)
+ print_result();
+}
+
+void set_type(int type) {
+ bas_type = type;
+ if(!keep_going) print_result();
+}
+
+CALLBACK(handle_cmd) {
+ int has_args = 0, has_var_arg = 0, vartype = -1;
+ unsigned char nexttok;
+
+ last_cmd = tok;
+ last_cmd_pos = pos;
+ comma_count = 0;
+
+ if(verbose) fprintf(stderr, "handle_cmd: lineno %d, tok $%02x, bas_type was %02x\n", lineno, tok, bas_type);
+
+ nexttok = program[pos + 1];
+ has_args = !(nexttok == OP_EOS || nexttok == OP_EOL);
+ if(nexttok >= 0x80) {
+ has_var_arg = 1;
+ vartype = get_vartype(nexttok);
+ }
+
+ /* this switch is for tokens that are the same in Atari/Turbo/BXL/BXE, but with
+ different semantics. non-Atari-BASIC tokens go in the switch below, not
+ this one. */
+ switch(tok) {
+ /* TB uses the same token for CLOSE as Atari and BXL/BXE, but it allows
+ it to have no argument (meaning, close all IOCBs). SOUND is the same
+ (no args = silence all POKEY channels). */
+ case CMD_CLOSE:
+ case CMD_SOUND:
+ if(!has_args) {
+ set_type(BT_TURBO);
+ }
+ break;
+ case CMD_INPUT:
+ /* TB, BXL, BXE all support INPUT "Prompt",VAR with the same tokenized
+ form. Atari BASIC doesn't allow string constants in INPUT args. */
+ if(has_args) {
+ if(nexttok == OP_STRCONST) {
+ int pos_after_string;
+ remove_type(BT_ATARI);
+ /* TB only: INPUT "Prompt";VAR is also supported (not in BXL/BXE) */
+ pos_after_string = pos + 3 + program[pos + 2];
+ if(verbose)
+ fprintf(stderr,
+ "===> INPUT with string prompt at line %d, "
+ "pos %04x, pos_after_string %04x (token %02x)\n",
+ lineno, pos, pos_after_string, program[pos_after_string]);
+ if(program[pos_after_string] == OP_SEMICOLON) {
+ set_type(BT_TURBO);
+ }
+ }
+ } else { /* has_args is false, oh shit! */
+ fprintf(stderr, "*** INPUT without variable at line %d.\n*** Rev A BASIC bug, program will crash, better fix it!\n", lineno);
+ set_type(BT_ATARI);
+ }
+ break;
+ case CMD_GET:
+ case CMD_PUT:
+ /* TB uses the same tokens for GET and PUT as Atari/BXL/BXE, but it allows
+ the argument to be a variable without a # in front of it. */
+ if(nexttok != OP_HASH) {
+ set_type(BT_TURBO);
+ }
+ /* PARTIAL: we really should detect GET #1,A$. this is Turbo-only, but
+ probably nobody ever uses it because it doesn't seem to *work*,
+ at least not in TB 1.5. A$ always ends up empty with length 0. */
+ break;
+ case CMD_RESTORE:
+ case CMD_TRAP:
+ /* TB allows RESTORE #LABEL and TRAP #LABEL */
+ if(nexttok == OP_HASH) {
+ set_type(BT_TURBO);
+ }
+ break;
+ default: break;
+ }
+
+ if(tok <= CMD_ERROR) return; /* legal in BASIC, ignore */
+ remove_type(BT_ATARI);
+ if(tok >= 0x59) remove_type(BT_BXL);
+
+ if(tok >= 0x65) {
+ fprintf(stderr, "handle_cmd: invalid command %02x at line %d\n", tok, lineno);
+ keep_going = 0;
+ set_type(BT_INVALID);
+ }
+
+ /* we have tokens 0x3a to 0x68 in both TB and BXE, or 47 of them.
+
+ Some tokens can't be determined, because they take the
+ same argument (or lack of) in both Turbo and BXL/XE. These
+ are:
+
+ 0x3c: REPEAT or ELSE (no args either way)
+ 0x46: LOOP or CP (no args either way)
+ 0x49: LOCK or UNPROTECT (take the same args)
+ 0x4B: RENAME in both Turbo and BXL/XE (same token, same args)
+
+ 4 of them, this leaves 43 we can check.
+
+ Covered so far: 41 (95%).
+ However, some of these are marked PARTIAL because they're not detected
+ under all circumstances.
+
+ Unchecked tokens:
+
+ 0x5B: BRUN or CALL (both take a string, CALL allows "USING" though)
+ This isn't really important, as CALL requires a PROCEDURE to
+ exist, and we *do* catch the PROCEDURE token.
+ 0x5F: PAINT (req 2 args) or NUM (optional 2 args).
+ Again, not important, because it's highly unlikely any BXL/BXE
+ program will contain NUM... because when it executes, it stops the
+ program and goes back to the READY prompt (in auto-numbering mode).
+ */
+ switch(tok) {
+ case 0x39: /* MOVE <args> or ENDWHILE */
+ case 0x3a: /* -MOVE <args> or TRACEOFF */
+ case 0x3d: /* UNTIL <args> or ENDIF */
+ case 0x56: /* DEL <args> or FAST */
+ case 0x62: /* CIRCLE (3 or 4 num args) or NORMAL (no args) */
+ /* COMPLETE */
+ if(has_args) {
+ remove_type(BT_BXL_BXE);
+ } else {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x58: /* TRACE (optional + or -), EXTEND (BXE; no args) */
+ /* COMPLETE */
+ /* In BXL, this looks to be an extra END token, that behaves the same
+ as the regular one, but can't be entered in the editor. Assume
+ no BXL program contains this token. */
+ /* In BXE, EXTEND can't actually appear in a program (it's direct
+ mode only). The only way to get EXTEND into a BXE program is
+ to do a direct mode command like:
+ EXTEND:SAVE "D:PROG"
+ ...which of course puts it at line 32768. But this code will
+ never see that, because we'd already detect EXTENDed BXE
+ based on the first 2 bytes of the file.
+ */
+ /* So, if we see this token, it *has* to be Turbo's TRACE, whether
+ or not it has an argument. */
+ set_type(BT_TURBO);
+ break;
+
+ case 0x59: /* TEXT or PROCEDURE */
+ /* COMPLETE */
+ /* Turbo: TEXT (1st arg is number),
+ BXL: invalid token,
+ BXE: PROCEDURE (arg is string const (not var!)) */
+ if(nexttok == OP_STRCONST) {
+ /* this token doesn't seem to be valid in BXL at all */
+ set_type(BT_BXE);
+ } else {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ case 0x3f: /* WEND or LOMEM <args> */
+ case 0x40: /* ELSE or DEL <args> */
+ case 0x41: /* ENDIF or RPUT <args> */
+ case 0x45: /* DO or TAB <args> */
+ case 0x47: /* EXIT or ERASE <args> */
+ case 0x51: /* ENDPROC or PMMOVE <args> */
+ /* COMPLETE */
+ if(has_args) {
+ remove_type(BT_TURBO);
+ } else {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ case 0x48: /* DIR (optional arg) or PROTECT (req'd arg) */
+ /* PARTIAL: without args means TB, but with arg,
+ it could be either */
+ if(!has_args) {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ case 0x4a: /* UNLOCK (req'd arg) or DIR (optional arg) */
+ /* PARTIAL: without args means BXL/BXE, but with arg,
+ it could be either */
+ if(!has_args) {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x3b: /* *F (optional + or -), TRACE (no arg) */
+ case 0x5e: /* *B (optional + or -) or EXIT (no arg) */
+ /* PARTIAL: doesn't catch *F or *B by itself with no +/- */
+ if(has_args) {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ case 0x44: /* FILLTO or BGET (check for a # after the token) */
+ /* COMPLETE */
+ if(nexttok == OP_HASH) {
+ remove_type(BT_TURBO);
+ } else {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ case 0x4e: /* TIME$= (1 string arg) or PMCLR (1 num arg) */
+ /* PARTIAL: but almost complete. nothing happens if it's
+ TIME$= with a string function (probably rare) or PMCLR
+ with a complex expression. */
+ if(nexttok == OP_STRCONST) {
+ remove_type(BT_BXL_BXE);
+ } else if(has_var_arg && vartype == TYPE_STRING) {
+ remove_type(BT_BXL_BXE);
+ } else if(nexttok == OP_NUMCONST) {
+ remove_type(BT_TURBO);
+ } else if(has_var_arg && vartype == TYPE_SCALAR) {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x50: /* EXEC (1 arg, *must* be variable) or PMGRAPHICS (1 num arg, may be const) */
+ /* PARTIAL: PMGRAPHICS VAR won't be detected. but this usage is rare. */
+ /* This check is actually redundant, because EXEC requires Turbo's
+ label type (high bits in var name table both set to 1), which we already
+ detected in check_variables(). */
+ if(!has_var_arg) {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x54: /* -- in TB, LVAR in BXL/BXE */
+ /* COMPLETE */
+ /* We can tell these apart because:
+ 1. TB gives us a next-statement offset of 5 if -- is the first (or
+ actually only) statement on a line. Normally, the minimum offset
+ is 6, but there's no OP_EOL after this token for some reason.
+ 2. If -- is the 2nd or or later statement on a line (after a colon)
+ it *does* get a statement terminator, but it's 0x9b (ATASCII EOL,
+ like a REM or DATA gets).
+ Note that it's impossible to put more statements *after* the --,
+ they just get ignored if you type them. This doesn't help us
+ here, but it's interesting anyway.
+ Also, the -- is what you type to enter it into the program, but
+ it get LISTed as a line of 30 dashes.
+ The explanation is a lot longer than the code... */
+ if(program[pos - 1] == 0x05 || nexttok == 0x9b) {
+ set_type(BT_TURBO);
+ } else {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x57: /* DUMP (1 optional string arg) or LOCAL (1 *numeric* variable arg) */
+ /* BXL/BXE's LOCAL only works on scalars, not arrays or strings. so if there's
+ no arg, or one string arg... */
+ /* PARTIAL: almost complete, doesn't handle DUMP func$(arg), which I
+ doubt anyone uses anyway. */
+ if(!has_args) {
+ /* only Turbo allows no arg... */
+ remove_type(BT_BXL_BXE);
+ } else if(nexttok == OP_STRCONST) {
+ /* only Turbo allows a string constant arg... */
+ remove_type(BT_BXL_BXE);
+ } else if(has_var_arg && vartype == TYPE_STRING) {
+ /* only Turbo allows a string variable arg... */
+ remove_type(BT_BXL_BXE);
+ } else if(has_var_arg && vartype == TYPE_SCALAR) {
+ /* only BXL/BXL allows a scalar variable arg */
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x5a: /* TB: BLOAD; BXL: extension mechanism; BXE: invalid. */
+ /* COMPLETE */
+ /* This is the token used for the BXL EXTEND.COM added commands,
+ from the Toolkit disk. It's followed by a byte ranging 0x10
+ to 0x15 that specifies which extended command, e.g. 0x5a 0x11 means
+ EXIT, 0x5a 0x12 is PROCEDURE, 0x5a 0x13 is CALL. Although
+ these look like BXE's extra commands, they aren't the same tokens,
+ and BXE will choke on them (RUN causes "Error- 33", LIST causes
+ a lockup). */
+ if(nexttok >= 0x10 && nexttok <= 0x15) {
+ /* worth mentioning to the user... */
+ fprintf(stderr, "Note: program requires EXTEND.COM from BASIC XL Toolkit disk.\n");
+ set_type(BT_BXL);
+ } else {
+ /* it's BLOAD if followed by e.g. OP_STRCONST or a variable */
+ set_type(BT_TURBO);
+ }
+ break;
+
+ case 0x5c: /* GO# (1 arg only) or SORTUP (optional 2nd arg of USING, but no comma) */
+ case 0x5d: /* # (1 arg only) or SORTDOWN (optional 2nd arg of USING, but no comma) */
+ /* COMPLETE but no longer needed (check_variables() already found the
+ 11xxxxxx variables) */
+ /* Turbo BASIC labels have the high 2 bits set to 11, which is illegal
+ in Atari/BXL/BXE. */
+ if(vartype == 3) {
+ remove_type(BT_BXL_BXE);
+ } else {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x60: /* CLS (optional IOCB with #) or HITCLR (no args) */
+ /* PARTIAL: without args, can't tell them apart. */
+ /* I doubt CLS #IOCB is actually used in many Turbo BASIC
+ programs, because it's broken (at least in Turbo 1.5).
+ It's supposed to only clear the screen of output that
+ happened after the OPEN #IOCB, but it really clears the
+ whole screen. */
+ if(nexttok == OP_HASH) {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ default: break;
+ }
+ if(verbose) fprintf(stderr, " bas_type now %02x\n", bas_type);
+}
+
+CALLBACK(handle_op) {
+ unsigned char nexttok = program[pos + 1];
+ unsigned char nexttok2 = program[pos + 2];
+
+ if(tok == OP_COMMA) comma_count++;
+
+ if(verbose) fprintf(stderr, "handle_op: lineno %d, tok $%02x, comma_count %d, bas_type was %02x\n", lineno, tok, comma_count, bas_type);
+
+ if(tok == 0x00) {
+ /* Turbo allows 256 variables, tokenizes the first 128 normally ($80-$FF).
+ The extra ones above $FF are tokenized as $00, varnum - $80. None of
+ our other BASICs uses $00 as an operator token, so.. */
+ set_type(BT_TURBO);
+ }
+
+ /* attempt to detect BXL/BXE DIM for 2D string arrays.
+ DIM A$(10,10) is illegal in Atari/Turbo.
+ PARTIAL: this only works if the first dimension is either a
+ constant or a scalar variable (not an array element or an
+ expression). fortunately most programs use constants in DIM.
+ */
+ if(tok == OP_DIM_STR_LPAR) {
+ int str2d = 0;
+ if(nexttok >= 0x80 && nexttok2 == OP_ARR_COMMA) {
+ str2d = 1;
+ } else if(nexttok == OP_NUMCONST || nexttok == OP_HEXCONST) {
+ str2d = (program[pos + 8] == OP_ARR_COMMA);
+ }
+ if(str2d) {
+ if(verbose)
+ fprintf(stderr, "===> found 2d string array at line %d\n", lineno);
+ remove_type(BT_ATARI | BT_TURBO);
+ }
+ }
+
+ /* BXL/BXE allows string concatenation in assignment with the comma,
+ A$="FOO","BAR" or A$=C$,D$. */
+ if(last_cmd == CMD_LET || last_cmd == CMD_ILET) {
+ if(program[last_cmd_pos + 2] == OP_STR_ASSIGN) {
+ if(tok == OP_COMMA) {
+ if(is_string_rval(nexttok)) {
+ remove_type(BT_ATARI | BT_TURBO);
+ }
+ }
+ }
+ }
+
+ if(tok == OP_HEXCONST) remove_type(BT_ATARI); /* hex const (turbo *and* bxl/xe) */
+ if(tok <= OP_FUNC_STRIG) {
+ if(verbose) fprintf(stderr, " bas_type now %02x\n", bas_type);
+ return; /* legal in BASIC, ignore */
+ }
+ remove_type(BT_ATARI);
+
+ /* only Turbo has op tokens numbered 0x69 and up. */
+ if(tok >= 0x69) {
+ set_type(BT_TURBO);
+ }
+
+ if(tok >= 0x6E) {
+ fprintf(stderr, "handle_op: invalid operator %02x at line %d\n", tok, lineno);
+ keep_going = 0;
+ set_type(BT_INVALID);
+ }
+
+ /* There are 25 extra operators in Turbo, and 20 of them are shared with
+ BXL/BXE. Of the 20, 4 of them are undecidable, and the rest are
+ covered here, which means 80% coverage of the shared ops.
+ Undecidables are:
+ 0x56 & (logical AND) or % (XOR), both infix numeric ops; can't tell apart
+ 0x57 ! (logical OR) in both Turbo and BXL/BXE, can't tell apart
+ 0x64 RAND (func, 1 num arg) or TAB (func, 1 num arg), can't tell apart
+ 0x65 TRUNC (func, 1 num arg) or PEN (func, 1 num arg), can't tell apart
+ */
+ switch(tok) {
+ case 0x55: /* DPEEK (function) TB, USING (infix, not a function) in BXL/BXE */
+ case 0x58: /* INSTR (function) or & (infix numeric) in BXE. */
+ case 0x5b: /* HEX$ (func, takes 1 num arg) or FIND( (pseudo-func, 3 args */
+ /* COMPLETE */
+ if(nexttok == OP_FUNC_LPAR) {
+ remove_type(BT_BXL_BXE);
+ } else {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x59: /* INKEY$ (0 arg pseudo-func) in TB, string array separator semicolon in BXL/BXE */
+ /* PARTIAL: ...but pretty good. we *can't* check nexttok == OP_GRP_RPAR, because
+ VAL(INKEY$) or ASC(INKEY$) are legit Turbo code. */
+ if(nexttok == OP_EOS || nexttok == OP_EOL) {
+ /* the semicolon can't be the last token on the line (needs at least
+ a right-paren), but INKEY$ can. */
+ remove_type(BT_BXL_BXE);
+ } else if(pos == last_cmd_pos + 1) {
+ /* INKEY$ can be the first operator after the command, e.g if the command
+ is IF. The semicolon cannot. */
+ remove_type(BT_BXL_BXE);
+ } else if(is_string_exp_op(last_op_tok) || is_string_exp_op(nexttok)) {
+ /* A$=INKEY$, IF INKEY$=A$, A$(LEN(A$)+1)=INKEY$, INKEY$<>"A"... */
+ remove_type(BT_BXL_BXE);
+ } else if(is_numeric_op(last_op_tok) || is_numeric_op(nexttok)) {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x5a: /* EXOR (infix num op) or BUMP( (pseudo-function, no OP_FUNC_LPAR) */
+ case 0x5d: /* DIV (infix num op) or RANDOM( (pseudo-func, 1 or 2 num args) */
+ /* COMPLETE (I think, anyway) */
+ if(last_op_tok == OP_GRP_RPAR || last_op_tok == OP_NUMCONST || last_op_tok == OP_HEXCONST || last_op_tok >= 0x80) {
+ /* if the last token was a variable or a numeric, or a right paren,
+ this is infix (can't be a function, last token would have to have
+ been a command or a math/etc operator). */
+ remove_type(BT_BXL_BXE);
+ } else {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x5c: /* DEC (function, takes str) in TB, HEX$ (function, takes num) in BXL/BXE */
+ /* COMPLETE */
+ if(is_string_rval(nexttok2)) {
+ remove_type(BT_BXL_BXE);
+ } else if(is_numeric_op(nexttok2)) {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x5e: /* FRAC (num func, 1 arg) or DPEEK (num func, 1 arg) in BXL...
+ however BXE has an optional 2nd arg. */
+ {
+ /* PARTIAL: This detects the 2nd arg for simple cases where the
+ 1st arg is a constant or a numeric variable, but not if the
+ 1st arg is an expression or an array element. */
+ int has2 = 0;
+ if(nexttok2 == OP_NUMCONST || nexttok2 == OP_HEXCONST) {
+ if(program[pos + 9] == OP_ARR_COMMA)
+ has2 = 1;
+ } else if(nexttok2 >= 0x80 && program[pos + 3] == OP_ARR_COMMA) {
+ has2 = (get_vartype(nexttok2) == TYPE_SCALAR);
+ }
+ if(has2) {
+ set_type(BT_BXE);
+ }
+ }
+ break;
+
+ case 0x5f: /* TIME$ in TB, SYS (function) in BXL/BXE */
+ case 0x60: /* TIME in TB, VSTICK (function) in BXL/BXE */
+ case 0x61: /* MOD (infix op) in TB, HSTICK (function) in BXL/BXE */
+ case 0x62: /* EXEC (infix op, with ON) in TB, PMADR (function) in BXL/BXE */
+ /* COMPLETE */
+ if(nexttok == OP_FUNC_LPAR) {
+ remove_type(BT_TURBO);
+ } else {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ case 0x63: /* RND (pseudo-func, no arg) or ERR (func, 1 num arg) */
+ /* COMPLETE */
+ if(nexttok != OP_FUNC_LPAR) {
+ set_type(BT_TURBO);
+ }
+ break;
+
+ case 0x66: /* %0 in TB, LEFT$( (pseudo-func, takes string) in BXL/BXE */
+ case 0x67: /* %1 in TB, RIGHT$( (pseudo-func, takes string) in BXL/BXE */
+ case 0x68: /* %2 in TB, MID$( (pseudo-func, takes string) in BXL/BXE */
+ /* COMPLETE */
+ /* LEFT$/RIGHT$/MID$ do NOT get OP_FUNC_LPAR (the "(" is part of the
+ token name). They're always followed by a string operator... and
+ it works out that none of the tokens for BXL-only string funcs
+ are allowed to follow %0 %1 %2 in Turbo. */
+ if(is_string_op(nexttok) || is_bxl_string_func(nexttok)) {
+ remove_type(BT_TURBO);
+ } else {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ last_op_tok = tok;
+ if(verbose) fprintf(stderr, " bas_type now %02x\n", bas_type);
+}
+
+/* we can count commas, because both Turbo and BXE/BXL use the "array" comma
+ to separate function arguments, not the "regular" comma. */
+CALLBACK(handle_end_stmt) {
+ if(verbose) fprintf(stderr, "handle_end_stmt: lineno %d, tok $%02x, last_cmd $%02x, comma_count %d, bas_type was %02x\n", lineno, tok, last_cmd, comma_count, bas_type);
+ switch(last_cmd) {
+ case 0x38: /* DPOKE (2 args) or WHILE (1 arg) */
+ if(comma_count) {
+ remove_type(BT_BXL_BXE);
+ } else {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x3e: /* WHILE (1 arg) or DPOKE (2 or 3 args) */
+ case 0x4c: /* DELETE (1 arg) or MOVE (3 or 4 args) */
+ case 0x4d: /* PAUSE (1 arg) or MISSILE (3 args) */
+ case 0x52: /* FCOLOR (1 arg) or PMWIDTH (2 args) */
+ case 0x53: /* *L (optional + or - only) or SET (req 2 num args) */
+ case 0x4f: /* PROC (1 arg) or PMCOLOR (3 args) */
+ if(comma_count) { /* 1 arg means no commas */
+ remove_type(BT_TURBO);
+ } else {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ case 0x42: /* BPUT or RGET */
+ /* PARTIAL:
+ Turbo BGET always takes 3 args, BXL/BXE RGET takes 2 or more.
+ We can at least rule out Turbo if there aren't exactly 3 args. */
+ if(comma_count != 2) {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x43: /* BGET or BPUT */
+ /* PARTIAL:
+ Turbo BGET and BPUT always take 3 args. So does BXL BPUT.
+ BXE BPUT takes 3 args and an optional 4th. */
+ if(comma_count != 2) {
+ set_type(BT_BXE);
+ }
+ break;
+
+ case 0x55: /* RENUM in both (TB req 3 args, BXL up to two) */
+ if(comma_count == 2) {
+ remove_type(BT_BXL_BXE);
+ } else {
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x61: /* DSOUND (0 or 4 num args) or INVERSE (no args) */
+ /* PARTIAL: can't tell no-argument DSOUND from INVERSE. */
+ if(comma_count) {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ case 0x63: /* %PUT (usually seen with optional #; 1 or 2 args) or BLOAD (1 string arg) */
+ if(comma_count) {
+ /* multiple args */
+ remove_type(BT_BXL_BXE);
+ } else if(program[last_cmd_pos + 1] == OP_STRCONST) {
+ /* one arg, string const. XXX: check var type */
+ remove_type(BT_TURBO);
+ }
+ break;
+
+ case 0x64: /* %GET (usually seen with optional #; 1 or 2 args) or BSAVE (3 args) */
+ if(comma_count == 2) {
+ remove_type(BT_TURBO);
+ } else {
+ remove_type(BT_BXL_BXE);
+ }
+ break;
+
+ default: break;
+ }
+ if(verbose) fprintf(stderr, " bas_type now %02x\n", bas_type);
+
+ last_cmd = last_op_tok = 0;
+}
+
+/* return true if input_file is Atari MS BASIC.
+ AMSB files begin with a 3-byte header: 0x00 or 0x01, then 2 byte length
+ (LSB/MSB), which is actually 3 bytes less than the full length of
+ the file (or, it's the length of the file minus the 3-byte header).
+ Also, the files always end with 3 0x00 bytes.
+ We check that the header length is 3 bytes less than the file length,
+ then check for the 3 0x00's at the end... or, if the first byte was 1,
+ meaning "locked program", check for 3 "encrypted" 0x00's at the end.
+ */
+int detect_amsb(void) {
+ int trailing_byte_value = 0, len, c;
+
+ if(verbose) fprintf(stderr, "entering detect_amsb()\n");
+
+ rewind(input_file);
+ c = fgetc(input_file);
+ if(c > 1) return 0;
+ if(c) trailing_byte_value = 0x54;
+ c = fgetc(input_file);
+ if(c == EOF) return 0;
+ len = (fgetc(input_file) << 8) | c;
+
+ if(verbose) fprintf(stderr, "detect_amsb() header len==%d (file size should be %d)\n", len, len + 3);
+
+ fseek(input_file, 0, SEEK_END);
+ c = ftell(input_file);
+ if(verbose) fprintf(stderr, "detect_amsb() file size %d\n", c);
+ if(len != (c - 3)) {
+ if(verbose) fprintf(stderr, "detect_amsb() wrong file size!\n");
+ return 0;
+ }
+
+ if(verbose) fprintf(stderr, "detect_amsb() file size is correct, checking for 3 nulls\n");
+ fseek(input_file, -3, SEEK_END);
+ if(fgetc(input_file) != trailing_byte_value) return 0;
+ if(fgetc(input_file) != trailing_byte_value) return 0;
+ if(fgetc(input_file) != trailing_byte_value) return 0;
+
+ if(verbose) fprintf(stderr, "detect_amsb() found 3 nulls, return 1\n");
+
+ return 1;
+}
+
+void foreign(const char *name, int srval) {
+ if(input_file) fclose(input_file);
+ if(script_mode) {
+ exit(srval);
+ } else {
+ puts(name);
+ exit(0);
+ }
+}
+
+void detect_foreign(void) {
+ int c, d;
+
+ c = fgetc(input_file);
+ d = fgetc(input_file);
+
+ if(c == EOF || d == EOF)
+ die("File is too short to be a BASIC program of any kind.");
+
+ if((c == 0 || c == 0x77) && d == 0) {
+ /* This is why we can't read from stdin. */
+ rewind(input_file);
+ return;
+ }
+
+ if(c == 0xfb && d == 0xc2)
+ foreign("Compiled Turbo BASIC XL", SRET_COMPILED_TURBO);
+
+ if(c == 0xff && d == 0xff)
+ foreign("XEX executable (not BASIC at all!)", SRET_NOT_BASIC);
+
+ if(c == 0xfe && d == 0xfe)
+ foreign("Mac/65 tokenized source (not BASIC at all!)", SRET_NOT_BASIC);
+
+ if(c == 0xdd && d == 0x00)
+ foreign("EXTENDed OSS BASIC XE", SRET_EXTENDED_BXE);
+
+ if(c == 0x7f && d == 'E') {
+ c = fgetc(input_file);
+ d = fgetc(input_file);
+ if(c == 'L' && d == 'F')
+ foreign("ELF executable (not BASIC at all!)", SRET_NOT_BASIC);
+ }
+
+ if((c == 0 || c == 1) && detect_amsb()) {
+ foreign("Atari Microsoft BASIC", SRET_AMSB);
+ }
+
+ if(isdigit(c) && (d == 0x20 || isdigit(d)))
+ foreign("Text file, could be LISTed BASIC (or not)", SRET_NOT_BASIC);
+
+ if(isprint(c) && isprint(d))
+ foreign("Text file (not BASIC at all!)", SRET_NOT_BASIC);
+
+ foreign("Unknown file type (not BASIC at all!)", SRET_NOT_BASIC);
+}
+
+void check_variables(void) {
+ int pos;
+
+ if(vntp == vntd) return;
+
+ /* Unlike Atari BASIC, Turbo variables can have _ in the names.
+ So can BASIC XE, though it's not documented in the BASIC XE
+ Reference Manual that I have.
+ BXL can't have _ in variable names. */
+ for(pos = vnstart; pos < vvstart; pos++) {
+ if((program[pos] & 0x7f) == '_') {
+ remove_type(BT_ATARI | BT_BXL);
+ }
+ }
+
+ /* Also, Turbo line labels (for PROC/EXEC and #/GO#) are variables
+ with a type that's illegal in Atari/BXL/BXE. */
+ for(pos = vvstart; pos < codestart; pos += 8) {
+ if((program[pos] & 0xc0) == 0xc0) {
+ set_type(BT_TURBO);
+ }
+ }
+
+ /* I was hoping to check for BXL/BXE string arrays here. However,
+ looking at a SAVEd file, they look identical to regular string
+ variables (variable type $80, rest of the VVTP entry all $00).
+ When the program's actually in memory, BXL/BXE sets the
+ variable type byte to $91 for DIMed string array var and
+ $81 (same as Atari/Turbo) for a regular DIMed string var.
+ Unfortunately in the SAVE file, it's always $80. */
+
+ /* Another thing that can't be detected: BXL/BXE's FAST mode changes
+ the program in memory (line number targets become addresses),
+ but programs don't get SAVEd this way: SAVE turns off FAST and
+ restores the program to its original state before writing it
+ to disk. Too bad. */
+}
+
+/* BASIC/A+ support is *very* simple. It's similar to BASIC XL (no
+ surprise there)... but unlike Turbo, BXL, and BXE, it's *not*
+ token-compatible with original Atari BASIC. Rather than add
+ their new tokens to the end of the lists, they're mixed in with
+ the others. So A+ can't even LOAD or RUN Atari BASIC files.
+ Appendix J of the BASIC/A+ manual tells you to LIST in BASIC,
+ reboot, ENTER in A+, to "port" your BASIC programs to A+. I
+ suppose if you upgraded from A+ to BASIC XL or XE, you'd have
+ to do the same thing to use A+ programs in XL/XE.
+
+ While this was probably a PITA for BASIC/A+ users back in the day,
+ it makes it *really* easy to detect A+ here. The last line of
+ every SAVEed program is the direct-mode command, and contains either
+ a SAVE or CSAVE cmd token. Which is the same token in Atari, Turbo,
+ BXL, and BXE... but *different* in A+.
+
+ However... I've run into at least one BASIC program in the Holmes
+ Archive that was missing its line 32768 (wish I could remember which).
+ And it's possible for files to get truncated... so I'll check a few
+ other command tokens, to deal with cases like this.
+ */
+void found_aplus(void) {
+ foreign("OSS BASIC/A+", SRET_APLUS);
+}
+
+CALLBACK(check_aplus_cmd) {
+ int has_args;
+ unsigned char nexttok, nexttok2;
+
+ nexttok = program[pos + 1];
+ nexttok2 = program[pos + 2];
+ has_args = !(nexttok == OP_EOS || nexttok == OP_EOL);
+ if(verbose) fprintf(stderr, "check_aplus_cmd: line %d, pos $%04x, tok $%02x, nexttok $%02x, nexttok2 $%02x\n", lineno, pos, tok, nexttok, nexttok2);
+
+ switch(tok) {
+ case CMD_POP: /* A+ READ */
+ case CMD_DOS: /* A+ GET */
+ case CMD_DEG: /* A+ WHILE */
+ case CMD_CLR: /* A+ DIM */
+ case 0x46: /* A+ SOUND <args>, Turbo LOOP, BXL/XE CP */
+ case 0x3c: /* A+ DIR <req'd arg>, Turbo REPEAT, BXL/XE ELSE */
+ if(has_args)
+ found_aplus();
+ break;
+
+ case CMD_SAVE: /* A+ END */
+ case CMD_GRAPHICS: /* A+ STOP */
+ case CMD_DIM: /* A+ ENDWHILE */
+ /* case CMD_GET: */ /* A+ RETURN, but Turbo allows 0 args too! */
+ case 0x38: /* A+ DOS, Turbo DPOKE, BXL/XE WHILE */
+ if(!has_args)
+ found_aplus();
+ break;
+
+ case CMD_POSITION: /* A+ ? */
+ /* PARTIAL: does nothing if 1st arg is numeric. */
+ if(!has_args)
+ /* POSITION can't have 0 args. */
+ found_aplus();
+ else if(is_string_rval(nexttok))
+ /* ? "STRING" or ? A$, e.g., can't be POSITION */
+ found_aplus();
+ else if(nexttok == OP_NUM_LE) /* numeric <= in BASIC, # in A+ */
+ found_aplus();
+ break;
+
+ case CMD_RUN: /* A+ PRINT */
+ /* PARTIAL: only detects PRINT # or PRINT <num> ... */
+ /* A+'s # token is BASIC's OP_NUM_LE! */
+ if(nexttok == OP_NUM_LE)
+ found_aplus();
+ else if(is_numconst_op(nexttok) || is_numeric_var(nexttok))
+ found_aplus();
+ break;
+
+ case CMD_XIO: /* A+ SAVE */
+ /* most programs, this is enough, because they'll end with
+ 32768 SAVE "D:BLAH" */
+ if(is_string_rval(nexttok))
+ found_aplus();
+ break;
+
+ case CMD_OPEN: /* A+ ELSE */
+ /* case CMD_CLOSE: */ /* A+ DEG */ /* can't check, Turbo allows no args */
+ case CMD_STATUS: /* A+ NEW */
+ case CMD_POINT: /* A+ LOAD */
+ case 0x42: /* A+ POSITION, Turbo BPUT, BXL RGET */
+ case 0x43: /* A+ DRAWTO, Turbo BGET, BXL BPUT */
+ if(nexttok != OP_HASH) /* # in BASIC, USING in A+ */
+ found_aplus();
+ break;
+
+ /* case 0x48: */ /* A+ CSAVE, Turbo DIR, BXL/BXE PROTECT */
+ /* DIR without arg is OK, so we can't really check this. */
+ /* break; */
+
+ case CMD_DRAWTO: /* A+ PUT */
+ case CMD_SOUND: /* A+ RPUT */
+ case CMD_LPRINT: /* A+ RGET */
+ case CMD_CSAVE: /* A+ BPUT */
+ case CMD_CLOAD: /* A+ BGET */
+ case CMD_ON: /* A+ STATUS */
+ case CMD_NOTE: /* A+ OPEN */
+ case CMD_CONT: /* A+ CLOSE */
+ case CMD_RAD: /* A+ XIO */
+ if(nexttok == OP_NUM_LE) /* numeric <= in BASIC, # in A+ */
+ found_aplus();
+ break;
+
+ default: break;
+ }
+
+ last_cmd = tok;
+}
+
+void check_oss_int(void) {
+ if(lomem != 0x77) return;
+ switch(save_command_tok) {
+ case 0x19: /* SAVE */
+ case 0x33: /* CSAVE */
+ foreign("OSS Integer BASIC (disk)", SRET_OSSINT_DISK);
+ break;
+ default:
+ foreign("OSS Integer BASIC (cartridge)", SRET_OSSINT_CART);
+ break;
+ }
+}
+
+void check_aplus(void) {
+ allow_hex_const = 1;
+
+ on_cmd_token = check_aplus_cmd;
+ walk_all_code();
+}
+
+void check_atari_turbo_oss(void) {
+ allow_hex_const = 1;
+
+ on_cmd_token = handle_cmd;
+ on_exp_token = handle_op;
+ on_end_stmt = handle_end_stmt;
+
+ walk_all_code();
+}
+
+int main(int argc, char **argv) {
+ set_self(*argv);
+ parse_general_args(argc, argv, print_help);
+ parse_args(argc, argv);
+
+ detect_foreign();
+
+ readfile();
+ parse_header();
+ check_oss_int();
+
+ check_variables();
+ check_aplus();
+ check_atari_turbo_oss();
+
+ print_result(); /* always exits */
+ return 0; /* never happens, shuts up gcc's warning though */
+}
diff --git a/whichbas.h b/whichbas.h
new file mode 100644
index 0000000..0e6bb72
--- /dev/null
+++ b/whichbas.h
@@ -0,0 +1,19 @@
+/* this stuff is in a separate .h file so that eventually,
+ listbas.c can include it (it'll execute "whichbas -s" to detect
+ the BASIC type). */
+
+#define SRET_ATARI 3
+#define SRET_TURBO 4
+#define SRET_BXL 5
+#define SRET_BXE 6
+#define SRET_TURBO_OR_BXL 7
+#define SRET_TURBO_OR_BXE 8
+#define SRET_TURBO_OR_BXL_OR_BXE 9
+#define SRET_UKNOWN_DERIV 10
+#define SRET_AMSB 11
+#define SRET_EXTENDED_BXE 12
+#define SRET_COMPILED_TURBO 13
+#define SRET_APLUS 14
+#define SRET_OSSINT_CART 15
+#define SRET_OSSINT_DISK 16
+#define SRET_NOT_BASIC 64
diff --git a/whichbas.rst b/whichbas.rst
new file mode 100644
index 0000000..f886c76
--- /dev/null
+++ b/whichbas.rst
@@ -0,0 +1,215 @@
+========
+whichbas
+========
+
+----------------------------------------------------------
+Determine BASIC variant of a tokenized Atari 8-bit program
+----------------------------------------------------------
+
+.. include:: manhdr.rst
+
+SYNOPSIS
+========
+whichbas [-v] *input-file* [*input-file* ...]
+
+DESCRIPTION
+===========
+
+**whichbas** reads tokenized Atari 8-bit BASIC, Turbo BASIC, BASIC
+XL, BASIC XE, BASIC/A+, OSS Integer BASIC, or Atari Microsoft BASIC
+programs and attempts to discover which BASIC is required to run each
+one.
+
+Note: OSS Integer BASIC is *not* to be confused with Apple II Integer BASIC!
+
+*input-file*\s must be actual files. **whichbas** can't read from
+standard input, because it seeks in the input file.
+
+With multiple *input-file*\s, the output is one line per file,
+with the filename, a tab, and the detected BASIC. With only one
+*input-file*, the filename and tab are not printed.
+
+OPTIONS
+=======
+
+*Note*\: none of the options **-s** **-k** **-v** are allowed
+when checking multiple files; they only work if there's just one
+*input-file* argument.
+
+Detection Options
+-----------------
+
+**-s**
+ Script (or silent) mode. Instead of printing a human-readable
+ name like "Turbo BASIC XL" or "OSS BASIC XE" to stdout, **whichbas**
+ will print nothing on standard output, but will exit with a status
+ indicating what it detected. The caller can check the return status
+ (e.g. the **$?** variable in Bourne/POSIX shells, or **ERRORLEVEL**
+ in MS-DOS or Windows). See **EXIT STATUS**, below.
+
+**-k**
+ Keep going. The default is to stop looking at the program if the
+ BASIC type gets narrowed down to either Turbo BASIC or BASIC XE.
+ This option also enables **-v** (verbose). It's really only useful
+ for testing, if you're hacking on **whichbas** itself.
+
+.. include:: genopts.rst
+
+NOTES
+=====
+Atari BASIC programs are detected *almost* 100% reliably. See **BUGS**, below,
+for the gory details.
+
+Turbo BASIC, BASIC XL, and BASIC XE are all supersets of Atari BASIC.
+If you wrote a program using one of them, but didn't use any of the
+extra commands or functions, the result is still an Atari BASIC program.
+Likewise, if you wrote a program using BASIC XE, but only used the
+commands/functions it has in common with BASIC XL, it would be
+detected as BASIC XL.
+
+There are two types of BASIC XE programs: regular and *EXTEND*\ed. The
+extended type is detected 100% reliably, because the first byte of the
+file changes from **$00** to **$DD**. Non-extended programs are only
+identified as BASIC XE if they use any of the extra commands BASIC XE
+adds to those found in BASIC XL.
+
+Detection of Turbo vs. BXL/BXE isn't 100% reliable, and probably
+never will be. There's too much overlap between the sets of extra
+tokens added by each. Programs that don't use very many of the extra
+functions provided by Turbo/BXL/BXE may show up as "Either Turbo BASIC XL
+or OSS BASIC XL".
+
+Atari Microsoft BASIC is detected by checking that:
+
+ - the first byte of the file is **$00**\.
+
+ - the next 2 bytes (LSB/MSB) are the same as the actual file length minus 3.
+
+ - the last 3 bytes of the file are zero.
+
+This may result in false positives (files that aren't BASIC programs at
+all might show up as Microsoft). Also, no distinction is made between
+Atari MS BASIC 1.0 and 2.0.
+
+OSS BASIC/A+ is an extended form of Atari BASIC. It's source
+compatible with Atari BASIC, but not token-compatible because it uses
+different token numbers for the regular BASIC commands and operators.
+Example: SAVE is token **$19** in Atari BASIC (also Turbo/BXL/BXE),
+but in A+ it's token **$1D**. Detection should be 100% reliable, but
+since there aren't many BASIC/A+ programs in the wild, it hasn't been
+thoroughly tested.
+
+OSS Integer BASIC is a product that was developed by OSS, but never
+released until recently. It's similar to BASIC XL and XE, but uses
+16-bit integers for all numeric operations, rather than 6-byte BCD
+floating point. Integer BASIC's SAVEd programs are recognized by the
+first two bytes, which are always **$77** **$00**. There are two known
+versions of Integer BASIC (disk and cartridge), which use different
+command tokens; **whichbas** detects which version by looking at the
+token SAVE or CSAVE command at the end of the file.
+
+Various non-BASIC files are detected (including Mac/65 source,
+ELF binaries, etc) as a convenience, but I wouldn't rely on
+**whichbas**\'s non-BASIC file type detection if I were you.
+If you need the **file**\(1) command, use it.
+
+**whichbas** knows nothing about other BASICs such as Frost BASIC or
+Altirra BASIC.
+
+When using multiple *input-file* arguments, a separate instance of
+**whichbas** is spawned for each file. This isn't the most efficient
+approach, but it shouldn't cause problems on reasonably modern
+systems.
+
+BUGS
+====
+Misdetection
+------------
+It's possible to get a BASIC XL/XE program to misdetect as Atari BASIC
+by writing a program that does these things:
+
+ - Dimension a string array with a number of elements that isn't just a
+ numeric constant or numeric variable (e.g. *DIM A$(2+2,10)* or
+ *DIM A$(I*2,10)*). The code that detects a string array *DIM* command
+ can only handle simple cases like *DIM A$(10,10)* or *DIM A$(I,10)*.
+ It doesn't actually matter if the 2nd argument is a fancy expression,
+ though.
+
+ - Does *not* actually *use* the string array variable by assigning to
+ it or reading a value from it. String array accesses in BASIC XL/XE
+ are reliably detected because they require a semicolon after the
+ first number, even if there isn't a 2nd number. Example: *? A$(2;)*
+ prints the 2nd element of the *A$* string array. If it were written
+ as *? A$(2)*, but *A$* is a string array (not a regular string),
+ BASIC XL/XE would give an *Error 40* (string type mismatch) at
+ runtime.
+
+The good news is, such a program will still work fine in Atari BASIC.
+Atari BASIC will dimension it as a regular string variable and ignore
+the 2nd dimension. Since it's not actually used elsewhere in the program,
+it doesn't hurt anything.
+
+EXIT STATUS
+===========
+
+Without the **-s** option, exit status is 0 for success, non-zero for
+failure.
+
+With the **-s** option, the exit status is:
+
+**0**
+ Not used with **-s**.
+
+**1** or **2**
+ Error reading file. Error message will be printed on standard error.
+
+**3**
+ Atari BASIC detected.
+
+**4**
+ Turbo BASIC detected.
+
+**5**
+ OSS BASIC XL detected.
+
+**6**
+ Non-EXTENDed OSS BASIC XE detected.
+
+**7**
+ Turbo BASIC or BASIC XL (undecided which).
+
+**8**
+ Turbo BASIC or non-EXTENDed BASIC XE (undecided which).
+
+**9**
+ Turbo BASIC, BASIC XL, or non-EXTENDed BASIC XE (undecided which).
+
+**10**
+ Unknown Atari BASIC derivative (not Atari BASIC, but not
+ Turbo/BXL/BXE/A+ either).
+
+**11**
+ Atari Microsoft BASIC detected.
+
+**12**
+ EXTENDed OSS BASIC XE detected.
+
+**13**
+ Compiled Turbo BASIC detected.
+
+**14**
+ OSS BASIC/A+ detected.
+
+**15**
+ OSS Integer BASIC (cartridge version) detected.
+
+**16**
+ OSS Integer BASIC (disk version) detected.
+
+**64**
+ None of the above; not BASIC.
+
+In the future, more exit codes may be defined (in the range **15** to
+**63**), but the existing ones will not change.
+
+.. include:: manftr.rst
diff --git a/xex.5 b/xex.5
index b44a612..0457418 100644
--- a/xex.5
+++ b/xex.5
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XEX" 5 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XEX" 5 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
xex \- Atari 8-bit executable file format.
.\" RST source for xex(5) man page. Convert with:
@@ -304,28 +304,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/xex1to2.1 b/xex1to2.1
index 89d1698..06858b2 100644
--- a/xex1to2.1
+++ b/xex1to2.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XEX1TO2" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XEX1TO2" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
xex1to2 \- Convert an Atari DOS 1.0 executable to a standard Atari executable
.\" RST source for xex1to2(1) man page. Convert with:
@@ -78,28 +78,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/xexamine.1 b/xexamine.1
index 31f8283..5bb1586 100644
--- a/xexamine.1
+++ b/xexamine.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XEXAMINE" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XEXAMINE" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
xexamine \- Show information on Atari 8-bit executables (XEX)
.\" RST source for xexamine(1) man page. Convert with:
@@ -136,28 +136,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/xexcat.1 b/xexcat.1
index 9c9a441..c552867 100644
--- a/xexcat.1
+++ b/xexcat.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XEXCAT" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XEXCAT" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
xexcat \- Concatenate Atari 8-bit executables (XEX) into a single XEX file.
.\" RST source for xexcat(1) man page. Convert with:
@@ -196,28 +196,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/xexsplit.1 b/xexsplit.1
index e31ec48..6c78fc3 100644
--- a/xexsplit.1
+++ b/xexsplit.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XEXSPLIT" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XEXSPLIT" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
xexsplit \- Split a multi-segment Atari 8-bit executable (XEX) into multiple single-segment files.
.\" RST source for xexsplit(1) man page. Convert with:
@@ -189,28 +189,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.
diff --git a/xfd2atr.1 b/xfd2atr.1
index 9b23a6d..708144d 100644
--- a/xfd2atr.1
+++ b/xfd2atr.1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
-.TH "XFD2ATR" 1 "2024-07-02" "0.2.1" "Urchlay's Atari 8-bit Tools"
+.TH "XFD2ATR" 1 "2025-03-11" "0.2.2" "Urchlay's Atari 8-bit Tools"
.SH NAME
xfd2atr \- Convert an Atari 8-bit XFD (raw) disk image to an ATR image.
.\" RST source for xfd2atr(1) man page. Convert with:
@@ -117,28 +117,33 @@ Watson <\fI\%urchlay@slackware.uk\fP>; Urchlay on irc.libera.chat \fI##atari\fP\
\fBatr2xfd\fP(1),
\fBatrsize\fP(1),
\fBaxe\fP(1),
+\fBbas2aplus\fP(1),
\fBblob2c\fP(1),
\fBblob2xex\fP(1),
\fBcart2xex\fP(1),
\fBcxrefbas\fP(1),
\fBdasm2atasm\fP(1),
+\fBdiffbas\fP(1),
\fBdumpbas\fP(1),
\fBf2toxex\fP(1),
\fBfenders\fP(1),
\fBlistbas\fP(1),
+\fBlistamsb\fP(1),
\fBprotbas\fP(1),
\fBrenumbas\fP(1),
\fBrom2cart\fP(1),
\fBunmac65\fP(1),
\fBunprotbas\fP(1),
\fBvxrefbas\fP(1),
+\fBwhichbas\fP(1),
\fBxex1to2\fP(1),
\fBxexamine\fP(1),
\fBxexcat\fP(1),
\fBxexsplit\fP(1),
\fBxfd2atr\fP(1),
\fBxex\fP(5),
-\fBatascii\fP(7).
+\fBatascii\fP(7),
+\fBfauxtari\fP(7).
.sp
Any good Atari 8\-bit book: \fIDe Re Atari\fP, \fIThe Atari BASIC Reference
Manual\fP, the \fIOS Users\(aq Guide\fP, \fIMapping the Atari\fP, etc.