diff --git a/fontcharacter/.gitignore b/fontcharacter/.gitignore new file mode 100644 index 0000000..32ba708 --- /dev/null +++ b/fontcharacter/.gitignore @@ -0,0 +1,5 @@ +/Makefile.cfg +/sets + +.*.swp +__pycache__ diff --git a/fontcharacter/AUTHORS.md b/fontcharacter/AUTHORS.md new file mode 100644 index 0000000..52b6974 --- /dev/null +++ b/fontcharacter/AUTHORS.md @@ -0,0 +1,13 @@ +# FONTCHARACTER Reference authors +Copyright (C) 2016-2017 Thomas "Cakeisalie5" Touhey <> + +Thanks to the other contributors for making FONTCHARACTER great again: +* Lephenixnoir (Planète Casio); +* Zezombye (Planète Casio). + +Thanks to the following sources of information: +* Raw OS Data, extracted using a tool based on a technique found by + Simon Lothar; +* “La Casio Graph100”, by Olivier Coupelon (May, 2002); +* Casetta's CASIO Token List, by Florian Birée (May, 2007); +* Various manuals from CASIO. diff --git a/fontcharacter/CONTRIBUTING.md b/fontcharacter/CONTRIBUTING.md new file mode 100644 index 0000000..982b1d4 --- /dev/null +++ b/fontcharacter/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Contributing to FONTCHARACTER Reference +Start by reading all of the available documentation, from the `README.md` +to the formats description, `FORMATS.md` -- in order to know how to contribute +to the project, you have to know how to use it! + +## What is left to do +The main thing that is left to do is define the sets, and check which +characters appeared in each of the sets. +The FONTCHARACTER extensions do **not** have priority +(to be honest, the addition of C.Basic was not really planned +straight away...), so please try to concentrate on CASIO's sets first. + +To achieve this, you can use my [Opcode Table C Extracting Tool][extract], and +the OSes on [Planète Casio's Bible][oses]. + +## Any mistake? +You have tried using the reference, but it doesn't match the characters on +your calculator? Yes, it indeed could be a mistake, but it might as well be +a compatibility issue! + +You should check in the sets if your model/OS is supported. If you could try +to correct the reference while not breaking everything (even though the +maintainers will probably be careful), that would be great! + +Otherwise, you can try to contact the current project maintainer(s). +You can find their personal detail in `AUTHORS.md`. + +[extract]: http://www.casiopeia.net/forum/viewtopic.php?p=14742#p14742 +[oses]: http://bible.planet-casio.com/casio/os_boot_setup/ diff --git a/fontcharacter/FORMAT.md b/fontcharacter/FORMAT.md new file mode 100644 index 0000000..78e82bc --- /dev/null +++ b/fontcharacter/FORMAT.md @@ -0,0 +1,24 @@ +# FONTCHARACTER reference formats +To know more about the project itself, and what these formats are, +see `README.md`. + +There are a few formats used by the present FONTCHARACTER reference: + +- The source format: not meant to be used in other projects. + It is the format in which the humans write the reference. + It is not versioned itself, as it is linked to the same commits and + reference project versions; +- The binary formats: these are meant to be used in other projects. + They are versioned, and the version is present in the file so it can be + identified by the decoder, which then decides if it uses it or if it just + spits "Unknown version". + +To use files under the binary formats, the installed generated files will +probably be in a common folder such as `/usr/share/casio/fontcharacter/*.set` +on a Unix-like OS such as any GNU/Linux distribution or MacOS/OS X, or +`C:\Program Files\CASIO\FONTCHARACTER\*.set` under Microsoft Windows +(yet to be confirmed). + +The formats themselves are described under the `formats/` folder, +see `formats/SOURCE.md` for the source format, and `formats/BINARYx.md` for +binary formats, where `x` represents the version number. diff --git a/fontcharacter/LICENSE.md b/fontcharacter/LICENSE.md new file mode 100644 index 0000000..408c98d --- /dev/null +++ b/fontcharacter/LICENSE.md @@ -0,0 +1,157 @@ +### GNU LESSER GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This version of the GNU Lesser General Public License incorporates the +terms and conditions of version 3 of the GNU General Public License, +supplemented by the additional permissions listed below. + +#### 0. Additional Definitions. + +As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the +GNU General Public License. + +"The Library" refers to a covered work governed by this License, other +than an Application or a Combined Work as defined below. + +An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + +A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + +The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + +The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + +#### 1. Exception to Section 3 of the GNU GPL. + +You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + +#### 2. Conveying Modified Versions. + +If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + +- a) under this License, provided that you make a good faith effort + to ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or +- b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + +#### 3. Object Code Incorporating Material from Library Header Files. + +The object code form of an Application may incorporate material from a +header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + +- a) Give prominent notice with each copy of the object code that + the Library is used in it and that the Library and its use are + covered by this License. +- b) Accompany the object code with a copy of the GNU GPL and this + license document. + +#### 4. Combined Works. + +You may convey a Combined Work under terms of your choice that, taken +together, effectively do not restrict modification of the portions of +the Library contained in the Combined Work and reverse engineering for +debugging such modifications, if you also do each of the following: + +- a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. +- b) Accompany the Combined Work with a copy of the GNU GPL and this + license document. +- c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. +- d) Do one of the following: + - 0) Convey the Minimal Corresponding Source under the terms of + this License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + - 1) Use a suitable shared library mechanism for linking with + the Library. A suitable mechanism is one that (a) uses at run + time a copy of the Library already present on the user's + computer system, and (b) will operate properly with a modified + version of the Library that is interface-compatible with the + Linked Version. +- e) Provide Installation Information, but only if you would + otherwise be required to provide such information under section 6 + of the GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the Application + with a modified version of the Linked Version. (If you use option + 4d0, the Installation Information must accompany the Minimal + Corresponding Source and Corresponding Application Code. If you + use option 4d1, you must provide the Installation Information in + the manner specified by section 6 of the GNU GPL for conveying + Corresponding Source.) + +#### 5. Combined Libraries. + +You may place library facilities that are a work based on the Library +side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + +- a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities, conveyed under the terms of this License. +- b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + +#### 6. Revised Versions of the GNU Lesser General Public License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +as you received it specifies that a certain numbered version of the +GNU Lesser General Public License "or any later version" applies to +it, you have the option of following the terms and conditions either +of that published version or of any later version published by the +Free Software Foundation. If the Library as you received it does not +specify a version number of the GNU Lesser General Public License, you +may choose any version of the GNU Lesser General Public License ever +published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. \ No newline at end of file diff --git a/fontcharacter/Makefile b/fontcharacter/Makefile new file mode 100755 index 0000000..6490715 --- /dev/null +++ b/fontcharacter/Makefile @@ -0,0 +1,96 @@ +#!/usr/bin/make -f +#*****************************************************************************# +# Include variables and message subsystem # +#*****************************************************************************# +include Makefile.vars Makefile.msg +#*****************************************************************************# +# General targets # +#*****************************************************************************# +# Build everything. +all: all-sets + +# Mostly clean everything. +mostlyclean mclean: mostlyclean-sets + +# Clean everything. +fclean clean: clean-sets + +# Clean to original state. +mrproper: clean + $(call rmsg,Removing configuration.) + $(call qcmd,$(RM) Makefile.cfg) + +# Remake everything (clean and build). +re: clean all + +# Install everything. +install: install-sets + +# Make a distribution tarball. +dist: mrproper + $(call bcmd,mkdir,$(NAME)-$(VERSION), $(MD) .dist) + $(call bcmd,cp,* $(NAME)-$(VERSION), $(CP) -R * .dist) + $(call qcmd,$(MV) .dist $(NAME)-$(VERSION)) + $(call bcmd,tarball,$(NAME)-$(VERSION),\ + tar czf $(NAME)-$(VERSION).tar.gz --exclude .git $(NAME)-$(VERSION)) + $(call qcmd,$(RM) -r $(NAME)-$(VERSION)) + +.PHONY: all mostlyclean mclean clean fclean mrproper re +.PHONY: dist install +#*****************************************************************************# +# Configuration (version) checking dependencies # +#*****************************************************************************# +# Define the dependencies. + CHECKCFG := $(if $(shell test -f Makefile.cfg || echo y),check-config, \ + $(if $(shell [ "$(VERSION)" = "$(CONFIG_VERSION)" ] || echo y), \ + check-config-version)) + +# Define the rules. + check-config: + @echo -e "\033[1;31mNo configuration file found!" + @echo -e "You should configure before re-running this target.\033[0m" + @false + check-config-version: + @echo -e "\033[1;31mConfiguration version is incorrect!" + @echo -e "You should re-configure before re-running this target.\033[0m" + @false + +.PHONY: check-config check-config-version +#*****************************************************************************# +# Information getting from the Makefile variables # +#*****************************************************************************# +# Get the project name. + getname: + @echo $(NAME) + +# Get the project version. + getversion: + @echo $(VERSION) + +# Get the maintainer. + getmaintainer: + @echo "Thomas \"Cakeisalie5\" Touhey " + +.PHONY: getname getversion getmaintainer +#*****************************************************************************# +# Sets-related targets # +#*****************************************************************************# +# Make the sets. + all-sets: $(SET_FILES) + $(SET_FILES): $(CHECKCFG) $(REF) tools/makebin.py + $(call bcmd,makebin,$(SETDIR),\ + tools/makebin.py --output $(SETDIR) --refpath $(REFDIR)) + +# Clean all of the sets + clean-sets: + $(call rmsg,Cleaning the sets.) + $(call qcmd,rm -rf $(SETDIR)) + +# Install all of the sets. + install-sets: all-sets + $(call imsg,Installing the sets.) + $(call qcmd,$(MD) "$(ISETDIR)") + $(call qcmd,$(INSTALL) $(SETS) "$(ISETDIR)") + +.PHONY: all-sets clean-sets install-sets +# End of file. diff --git a/fontcharacter/Makefile.msg b/fontcharacter/Makefile.msg new file mode 100755 index 0000000..bb322ca --- /dev/null +++ b/fontcharacter/Makefile.msg @@ -0,0 +1,57 @@ +#!/usr/bin/make -f +# The Makefile message subsystem. +# For nice logs. 5 dollars per log only. +#*****************************************************************************# +# Colors and misc # +#*****************************************************************************# +# Used colors ANSI modifiers escape codes + color_green := 32 + color_red := 31 + color_yellow := 33 + +# Newline - comes handy in some situations +define \n + + +endef +#*****************************************************************************# +# General messages # +#*****************************************************************************# +# Command message - display basic info about the command, and run it. +define cmd +@$(if $(MAKE_FULL_LOG),,\ +printf "\033[1;""$4""m>\033[0m \033[1m%s\033[0m %s\n" "$1" "$2";) + $(if $(MAKE_FULL_LOG),,@)$3 +endef + +# Quiet command - make it non-quiet if full log is enabled. +define qcmd +$(if $(MAKE_FULL_LOG),,@)$1 +endef + +# Normal message - display it. +define msg +$(if $(MAKE_FULL_LOG),,\ +@printf "\033[1;""$2""m>\033[0m \033[1m%s\033[0m\n" "$1") +endef +#*****************************************************************************# +# Commands # +#*****************************************************************************# +# Build command +define bcmd +$(call cmd,$1,$2,$3,$(color_green)) +endef +#*****************************************************************************# +# Messages # +#*****************************************************************************# +# Remove message +define rmsg +$(call msg,$1,$(color_red)) +endef + +# Install message +define imsg +$(call msg,$1,$(color_yellow)) +endef + +# End of file diff --git a/fontcharacter/Makefile.vars b/fontcharacter/Makefile.vars new file mode 100755 index 0000000..4a8888a --- /dev/null +++ b/fontcharacter/Makefile.vars @@ -0,0 +1,62 @@ +#!/usr/bin/make -f +# Include the configuration. +-include Makefile.cfg +#*****************************************************************************# +# Project main information. # +#*****************************************************************************# +# Project name and description. + NAME := refc + DESC := The FONTCHARACTER reference. + +# Project version. + MAJOR := 0 + MINOR := 1 + INDEV := yes + +# Project version string. + VERSION := $(MAJOR).$(MINOR)$(if $(INDEV),-indev) +#*****************************************************************************# +# Project directories # +#*****************************************************************************# +# Reference directory. + REFDIR := ./reference + +# Sets (output) directory. + SETDIR := ./sets +#*****************************************************************************# +# Sets-related information # +#*****************************************************************************# +# List the sets. + SETS := $(shell tools/listsets.py --refpath $(REFDIR)) + +# List the set files. + SET_FILES := $(SETS:%=$(SETDIR)/%.set) +#*****************************************************************************# +# Binary utilities # +#*****************************************************************************# +# Make the binary file. + MAKEBIN := tools/makebin.py + +# Make a directory. + MD := mkdir -p + +# Install. + INSTALL := /usr/bin/install + +# Remove a file. + RM := rm -f +#*****************************************************************************# +# Check for DESTDIR (add as prefix to installation root) # +#*****************************************************************************# +# Save original sets dir. + OISETDIR := $(ISETDIR) + +# Make it. +define add-dest-dir + $1 = $(DESTDIR)$($1) +endef +$(if $(DESTDIR), $(foreach idir,\ +ISETDIR,\ +$(eval $(call add-dest-dir,$(idir))))) + +# End of file. diff --git a/fontcharacter/README.md b/fontcharacter/README.md new file mode 100644 index 0000000..2989152 --- /dev/null +++ b/fontcharacter/README.md @@ -0,0 +1,23 @@ +# FONTCHARACTER Reference +## Introduction +`FONTCHARACTER` is how, in the CASIO community, we call CASIO's encoding. +It is an encoding made up for CASIO calculators. It is partially +ASCII retrocompatible. + +It is a simple multi-byte encoding, where some characters are multi-byte +sequence leaders. Each character can occupy up to two bytes (leading character, +then whatever -- a leading character after another one isn't). +For example, if 0xE5 is a leading character, 0xE5 followed by 0xE5 forms +the 0xE5E5 character, and if 0x46 isn't, it forms the 0x46 character. + +This project is here to centralize all the info about it : existing characters, +their appearance in the standard fonts, their Unicode equivalents and defines. +The goal of this project is to give the ability to any project (thanks to +[LGPL3][lgpl3]) to be able to read, write, describe and convert from or to +CASIO's proprietary encoding. + +You can use this reference through its source format, through its binary +format (better), or through [libfontcharacter][libfc] (recommended!). + +[libfc]: https://github.com/PlaneteCasio/libfontcharacter +[lgpl3]: https://www.gnu.org/licenses/lgpl-3.0.en.html diff --git a/fontcharacter/TODO.md b/fontcharacter/TODO.md new file mode 100644 index 0000000..82f7872 --- /dev/null +++ b/fontcharacter/TODO.md @@ -0,0 +1,3 @@ +# TODO in FONTCHARACTER Reference +- Check out the unknown/undocumented characters (`UNKNOWN.md`); +- Develop the set systems, make them represent the encoding history; diff --git a/fontcharacter/UNKNOWN.md b/fontcharacter/UNKNOWN.md new file mode 100644 index 0000000..1c50492 --- /dev/null +++ b/fontcharacter/UNKNOWN.md @@ -0,0 +1,94 @@ +# Unknown/unused/undocumented characters (in default set) +People should investigate on these. Maybe they're used but I forgot to include +them. Maybe they're not used ('@' or 0xLL40 where 0xLL is the lead character), +yet. Oh, and I may have forgotten some. + + 0x90 + 0x9D + 0xD2 + + 0x7F03 + 0x7F07 + 0x7F13 + 0x7F17 + 0x7F1B-0x7F1C + 0x7F31-0x7F39 + 0x7F58-0x7F5F + 0x7F69 + 0x7F70-0x7F75 + 0x7F7E-0x7F83 + 0x7F8B + 0x7F99-0x7F9B + 0x7F9D-0x7F9F + 0x7FAF + 0x7FB2 + 0x7FB8 + 0x7FBF + 0x7FCF + 0x7FDF + 0x7FE5-0x7FE8 + 0x7FF5-0x7FFA + 0x7FFF + + 0xF70F + 0xF717 + 0xF737-0xF739 + 0xF73B + 0xF73D-0xF73E + 0xF754 + 0xF766 + 0xF772-0xF775 + 0xF77B-0xF77C + 0xF77F + 0xF781-0xF786 + 0xF78A-0xF78B + 0xF79B-0xF79D + 0xF7AE + 0xF7CF + 0xF7DE-0xF7FF + + 0xF900 + 0xF90D-0xF90F + 0xF91A + 0xF91F + 0xF923 + 0xF940-0xF949 + 0xF94C-0xF95A + 0xF95C-0xF95D + 0xF95F-0xF96C + 0xF96E-0xF97F + 0xF998-0xF99F + 0xF9BE-0xF9DF + 0xF9E4-0xF9E7 + 0xF9F3-0xF9FA + 0xF9FF + + 0xE500 + 0xE51F + 0xE536-0xE53F + 0xE559-0xE55F + 0xE57F + 0xE5A8-0xE5AF + 0xE5E0-0xE5FF + + 0xE600 + 0xE636-0xE63F + 0xE659-0xE65F + 0xE67F + 0xE6BA + 0xE6DF-0xE6FF + + 0xE700 + 0xE718 + 0xE730-0xE740 + 0xE77B-0xE7AF + 0xE7B1 + 0xE7BC + 0xE7BE + 0xE7C1 + 0xE7C6 + 0xE7D6 + 0xE7E0-0xE7E1 + 0xE7E5-0xE7E7 + 0xE7F6-0xE7FA + 0xE7FC-0xE7FF diff --git a/fontcharacter/configure b/fontcharacter/configure new file mode 100755 index 0000000..d732bc8 --- /dev/null +++ b/fontcharacter/configure @@ -0,0 +1,123 @@ +#!/bin/sh +cd "$(dirname $0)" +#*****************************************************************************# +# Defaults # +#*****************************************************************************# +# Project variables +[ -f Makefile.cfg ] && mv Makefile.cfg Makefile.cfg.tmp +name="$(make -s getname)" +version="$(make -s getversion)" +maintainer="$(make -s getmaintainer)" +[ -f Makefile.cfg.tmp ] && mv Makefile.cfg.tmp Makefile.cfg + +# Make options. +make_full_log= + +# Build options. +no_unicode= + +# Installation directories. +root='' +prefix='${root}/opt/p7-project' +setdir='${prefix}/share/casio-fontcharacter/' +#*****************************************************************************# +# Help message # +#*****************************************************************************# +usage() { +cat </dev/null 2>/dev/null + +# Do it! +exec 3>&1 1>Makefile.cfg +cat <&3 3>&- +chmod +x Makefile.cfg + +# Print the end message. +echo "Configuration loaded, you can make now." + +# End of file. diff --git a/fontcharacter/formats/BINARY1.md b/fontcharacter/formats/BINARY1.md new file mode 100644 index 0000000..bd60a7f --- /dev/null +++ b/fontcharacter/formats/BINARY1.md @@ -0,0 +1,113 @@ +# Binary format (Version 1) +**This format is a draft. It will be completed as the version 1.0 of the** +**reference is release.** + +The binary file is divided into four zones: + +- the overall header; +- the leading character pool; +- the character pool; +- the data pool. + +Multi-byte integer fields are encoded as **big endian**. + +## Overall header +The file starts with an overall header, describing the structure of the rest +of the file. As all of the files under any binary format representing +a FONTCHARACTER reference set, the file starts with: + +- Magic string (8 bytes): "CASIOFC\x7F"; +- Version byte (1 byte) -- in this version of the format, it is 0x01. + +If the magic string is not verified, the file is either corrupted or of an +other file. If the version byte isn't verified, then the file uses a different +version from the current one, and you should return that the user needs an +upgraded version of your utility (because you'll keep updating it... right?), +or a more recent utility. + +From there, the file is under this specific version of the format. +The overall header continues with the following fields: + +- Number of majors (1 byte): this is the number of entries in the leading + characters pool (second zone of the file); +- Number of characters (2 bytes): the total number of characters; +- Flags (1 byte): the flags: + + - 0x01: Unicode is enabled (see character entry); + - 0x02: CAT tokens are enabled (see character entry); + - 0x04: Newcat tokens are enabled (see character entry); + - 0x08: CTF tokens are enabled (see character entry); + - 0x10: Casemul tokens are enabled (see character entry); +- Picture height (1 byte): the picture width; +- Picture format (2 bytes): the picture format used to represent the + characters, taken from libcasio's [picture.h][picture.h]. + Allowed formats are: + + - 0x0100: monochrome with fill bits; +- Reserved (4 bytes): should be zero; +- Checksum (4 bytes): basic checksum for the leading character pool, + character pool, and data pool (if zero, do not check the checksum); +- File size (4 bytes): the file size; +- Data zone size (4 bytes): the data zone size. + +The checksumming technique is simple: you add all of the data, byte per byte, +in a 32-bit variable. For example, the checksum of \[0xFF, 0x02, 0x03\] is +0x00000104. Overflow is allowed (0xFFFFFFFF + 2 = 0x00000001). + +## Leading character pool +This pool provides quick access to the characters under a leading-character. +Each entry is made of the following: + +- Leading character byte (1 byte), e.g. 0x00 or 0xE5; +- Reserved (1 byte), always zero; +- Starting entry ID in the character pool (2 bytes); + +The offset is to be multiplied by the size of a character entry (which is +constant). + +## Character pool +This pool provides the character entries. For quick access, each entry is +the same size, the variable data being stored in the data pool. +Each entry has the following format: + +- Leading character (1 byte), e.g. 0x00 or 0xE5; +- Main character (1 byte), e.g. 0x45 for 0xE545; +- FONTCHARACTER sequence size (1 byte), 0 if not a FONTCHARACTER sequence; +- Unicode string size (1 byte), 0 if no unicode string; +- CAT token size (1 byte), 0 if no CAT token; +- Newcat token size (1 byte), 0 if no Newcat token; +- CTF token size (1 byte), 0 if no CTF token; +- Casemul token size (1 byte), 0 if no Casemul token; +- FONTCHARACTER sequence offset in data pool (4 bytes); +- (only if Unicode is enabled in the flags) + Unicode string offset in data pool (4 bytes); +- (only if CAT is enabled in the flags) + CAT token offset in data pool (4 bytes); +- (only if Newcat tokens are enabled in the flags) + Newcat token offset in data pool (4 bytes); +- (only if CTF tokens are enabled in the flags) + CTF token offset in data pool (4 bytes); +- (only if Casemul tokens are enabled in the flags) + Casemul token offset in data pool (4 bytes); + +The entry size is indeed different among all of the files, but constant for +one file, as the flags correspond to the overall header flags. + +## Data pool +Raw data is stored here. To get the size of this zone, take the file size +in the overall header and remove the size of the three previous zones. +This size is duplicated in the header, and the correlation between the +calculated and given sizes should be checked. + +Notice that bytes don't need to be in the same order than characters, and +can be indexed several times, which can lead to space optimizations. +For example, if a character points to [0x02, 0x03] and another +one points to [0x01, 0x02] (in any order), you can put [0x01, 0x02, 0x03] in +the data pool, then make the first character point to the offset + 1 of +this tab, and the second one point to the offset of this tab. +This system allows space optimizations to be done to this zone at build time, +although optimizing this depends on the [shortest superstring][superstr] +problem. + +[picture.h]: https://github.com/PlaneteCasio/libcasio/blob/master/include/libcasio/picture.h +[superstr]: https://en.wikipedia.org/wiki/Shortest_common_supersequence_problem diff --git a/fontcharacter/formats/SOURCE.md b/fontcharacter/formats/SOURCE.md new file mode 100644 index 0000000..4c9f901 --- /dev/null +++ b/fontcharacter/formats/SOURCE.md @@ -0,0 +1,176 @@ +# Source format +This format is yet to stabilize. If you just want to use the reference for +conversions between FONTCHARACTER and other character sets (which should +be managed by [libcasio][libcasio] anyway), check out the latest binary +format (`BINARYx.md`). + +YAML has been chosen to store the information, as it's a storage format that +a machine and a human can read and write quite easily. + +## Main file +`main.yml` is the file containing the main information about the source +reference. It only contains two fields for now: + +- `version` is the version of the source reference (`0.1` corresponds to this + version); +- `source` is the link to the FONTCHARACTER reference's source repository, + managed through a VCS (Git, for that matter). + +## Sets +A set is basically a pack of characters appeared at the same time on CASIO +calculators, or in an extension (alternative CASIO Basic +interpreters/compilers). + +`sets.yml` is the sets file. For each set: + +- the `description` field is the description of the set; +- if the `default` field is there, then it is the default set to use + (generally the most recent set made by CASIO); +- if the `leading` field is there, the list of leading characters is in it, + separated by commas; +- if the `parent` field is there, then the set inherits all of the characters + of its parents, and, if the child has no `leading` field, its parent's + leading characters. + +## Categories +`categories.yml` is the categories file. Each category has an `id` field, which +is the identification string, an optional `prefix` field and an optional `sub` +list, which is the subcategories with each an `id` and a `prefix` fields. +To access the subcategory "Latin Capital" in the category "Letter", the +`category` field in the character information will have to be +`Letter/Latin Capital/Mini`. The name of the character will then be prefixed by +`Mini Latin Capital Letter ` (with the spaces between prefixes and an ending +space); the subcategory prefix goes first. If there is a suffix, a space then +it are appended to the character name, for example, ` Digit`. + +There are some more fields -- see the _Embedded CASIO BASIC documentation_ +section. + +## Characters +There are two systems of characters on CASIO calculators: Simon Lothar calls +them the "characters" and the "opcodes". The "characters" are simple characters +with a display, and the "opcodes", which are defined by a set of characters +(e.g. "Locate "). The two are described in two different tables on the +calculator, but the two describe the same encoding, so that's why this +reference considers all "characters" and "opcodes" as characters ("opcodes" +are here called multi-characters). + +`characters.yml` is the file containing data about the characters. For each +character, the `code` field is its `FONTCHARACTER` code, the `name` field is +the complete description of the character, the `flags` are the character flags +and the `category` field is the category(/subcategory) ID (see in the last +paragraph). If there is no category field, the category is "Other", with no +prefix. + +Flags is a list of flag strings. Current flags are: + +* `nl`: the character should be followed by a newline; +* `esc`: the character's CTF token is escaped with a reverse solidus; +* `sep`: the character is a Basic separator; +* `base`: only accessible in BASE programs. + +Some characters have an ASCII token representation, mostly for the *cat*, +*newcat*, *ctf* and *casemul* formats. If the `tokens` field exists, then +it is a dictionary of the tokens in the different formats. +- If the `cat` field of the dictionary doesn't exist, its value is deduced + recursively using the `multi` field is there, or from the `unicode` field + (if all-`ASCII`), and prefixed by a reverse solidus '\\'; +- If the `newcat` field of the dictionary doesn't exist, it takes its + value from the `cat` field; +- If the `ctf` field of the dictionary doesn't exist, it takes its value from + the `cat` field if it was not deduced, otherwise, it is deduced the same way + as the `cat` field, but it is not prefixed with a reverse solidus '\\'; +- If the `casemul` field of the dictionary doesn't exist, it is deduced the + same way than the `ctf` field; +- If the `ref` field of the dictionary doesn't exist, it takes the + (first) value of the `ctf` field. + +There can be multiple tokens for one format; in this case, the value of the +format field is a list. + +It is possible to obtain an ASCII/HTML representation of most characters: +- If tokens exist, take the `ref` token; +- Otherwise, if the `multi` field is specified, then the representation can be + obtained recursively by querying this field's elements; +- Otherwise, no ASCII representation is available. + +The `id` field is an identifier for the character, composed of letters, +numbers and underscores. It can be used for C defines. +If there is no `id` field, it is the value in the `ascii` field if it can +be deduced (or the `name` field if it can't), with hyphens turned into +underscores, and other non-valid characters removed (spaces, parenthesis, ...). + +You have to distinguish multi-characters opcodes and simple opcodes. +Multi-character opcodes are characters that simply are a sequence of simple +characters. You can distinguish them from simple opcodes by checking the +presence of a `multi` field, which then is the `FONTCHARACTER` codes of the +characters in the sequence, separated with commas. + +Multi-characters are distinguishable from simple characters by checking the +presence of a `multi` field. The `multi` field is the `FONTCHARACTER` codes of +the characters composing it, separated by commas. Be careful: there can be +only one character for the multi-character, and Yaml won't interpret this as +a string, but as a number directly! + +If the character is simple, then if there is a unicode sequence equivalent of +the character, the Unicode codes of the sequences separated with commas will be +in the `unicode` field; otherwise, the field doesn't exist. + +If the character data has a `set` field, then the character is in a set; +otherwise, it should be considered as part of the default set. + +### Embedded CASIO BASIC documentation +Some characters will have the `type` field. This type means they have a special +meaning in CASIO Basic. There are two types: `function` and `object`. There is +an associated syntax, which is either `(arg1, arg2)` or +` arg1,arg2`, the first syntax is when `par` is `true` and the second one +is when it is `false`. +Note that for the first syntax, the ending parenthesis is not mandatory. + +If `par` is `false` (or non-existent), then the `fix` field can be +set to `infix`, which means the function will be used with either +`arg1 ` or `arg1 arg2`. + +If the function/object should receive arguments, it can be documented using the +`args` field, and if it has, after these arguments, optional arguments, it can +be documented with the `optn` field. These fields receives a list of argument +strings. An argument type can be imposed by add-in `:` at the end of the +argument string; for example, here are the `For` and `To` entries: + + - + code: 0xF704 + name: For + category: Statement + args: ["to:0xF705"] + action: ... + multi: [0x46, 0x6F, 0x72, 0x20] + - + code: 0xF705 + name: To + category: Operator + args: ["assign:0x0E"] + optn: ["step:0xF706"] + action: ... + multi: [0x20, 0x54, 0x6F, 0x20] + +If the function is supposed to make an action, this action can be documented +using the `action` field. If it is supposed to return something, it should can +be documented using the `return` field. + +## Fonts +`fonts.yml` is the file containing the fonts information. For each font, +`id` is the ID string, `name` is the complete name, `author` is the complete +author name, `width` and `height` are the dimensions of each character in +the font. + +For each font, there is a corresponding folder, named with the font ID. +This folder contains the characters images, organized by the leading multi-byte +character; if there is none, the file `0xXX.pbm` will be chosen, otherwise, +the file `0xLLXX.pbm` will be chosen, where `0xLL` is the leading character. +If the file doesn't exist, the character is to be considered as blank. + +Each existing file is a set of 256 tiles of `width * height` each. Each row is +the tiles going from `0xR0` to `0xRF`, where `0xR` is the row number +(0x0 to 0xF). + +[libcasio]: https://libcasio.planet-casio.com/ diff --git a/fontcharacter/reference/categories.yml b/fontcharacter/reference/categories.yml new file mode 100644 index 0000000..acbb5dc --- /dev/null +++ b/fontcharacter/reference/categories.yml @@ -0,0 +1,123 @@ +#******************************************************************************# +# Letters # +#******************************************************************************# +- + id: Letter + prefix: Letter + sub: + - + id: Latin Capital + prefix: Latin Capital + sub: + - + id: Squared + prefix: Squared + sub: + - + id: Negative + prefix: Negative + - + id: Mini + prefix: Mini + - + id: Latin Small + prefix: Latin Small + sub: + - + id: Mini + prefix: Mini + - + id: Greek Capital + prefix: Greek Capital + - + id: Greek Small + prefix: Greek Small + - + id: Cyrillic Capital + prefix: Cyrillic Capital + - + id: Cyrillic Small + prefix: Cyrillic Small +- + id: Ligature + prefix: Ligature + sub: + - + id: Latin Capital + prefix: Latin Capital + - + id: Latin Small + prefix: Latin Small + +#******************************************************************************# +# Other "normal" categories # +#******************************************************************************# +- + id: Digit + prefix: Digit +- + id: Superscript + prefix: Superscript + sub: + - + id: Sign + suffix: Sign + - + id: Small + prefix: Small +- + id: Subscript + prefix: Subscript + sub: + - + id: Small + prefix: Small + - + id: Sign + suffix: Sign +- + id: Sign + suffix: Sign +- + id: Symbol + suffix: Symbol + +#******************************************************************************# +# CASIO-related categories # +#******************************************************************************# +- + id: Statement + type: function + par: true + suffix: Statement +- + id: Operator + type: function + fix: infix + suffix: Operator + sub: + - id: Prefix + fix: prefix + suffix: Prefix +- + id: Register + type: function + args: [] + suffix: Register +- + id: Object + type: object + par: false + suffix: Statement + sub: + - + id: Infix + fix: infix +- + id: Function + type: function + par: true + suffix: Function +- + id: Unit + suffix: Unit diff --git a/fontcharacter/reference/characters.yml b/fontcharacter/reference/characters.yml new file mode 100644 index 0000000..7a49f0a --- /dev/null +++ b/fontcharacter/reference/characters.yml @@ -0,0 +1,7582 @@ +#******************************************************************************# +# Characters hardcoded in the ASCII table # +#******************************************************************************# +- + code: 0x00 + name: Null Character + id: "null" + ascii: (null) +- + code: 0x01 + name: Femto + category: Symbol + multi: [0x66] + tokens: {cat: "\\femto", newcat: "\\fempto", casemul: fempto} +- + code: 0x02 + name: Pico + category: Symbol + multi: [0x70] + tokens: {cat: "\\pico", casemul: "\\xc1"} +- + code: 0x03 + name: Nano + category: Symbol + multi: [0x6e] + tokens: {cat: "\\nano", casemul: "\\xc2"} +- + code: 0x04 + name: Micro + category: Symbol + multi: [0xE64B] + tokens: {cat: "\\micro", casemul: "\\xc3"} +- + code: 0x05 + name: Milli + category: Symbol + multi: [0x6D] + tokens: {cat: "\\milli", casemul: "\\xc4"} +- + code: 0x06 + name: Kilo + category: Symbol + multi: [0x6B] + tokens: {cat: "\\kilo", casemul: "\\xc5"} +- + code: 0x07 + name: Mega + category: Symbol + multi: [0x4D] + tokens: {cat: "\\Mega", casemul: "\\xc6"} +- + code: 0x08 + name: Giga + category: Symbol + multi: [0x47] + tokens: {cat: "\\Giga", casemul: "\\xc7"} +- + code: 0x09 + name: Tera + category: Symbol + multi: [0x54] + tokens: {cat: "\\Tera", casemul: "\\xc8"} +- + code: 0x0A + name: Peta + category: Symbol + multi: [0x50] + tokens: {cat: "\\Peta", casemul: "\\xc9"} +- + code: 0x0B + name: Exa + category: Symbol + multi: [0x45] + tokens: {cat: "\\Exa", casemul: "\\xca"} +- + code: 0x0C + name: Disp + category: Symbol + flags: [nl, sep] + unicode: [0x25E2] + tokens: {cat: "\\Disp", newcat: ["\\Disp\r", "\\Disp"], ctf: "_\n", + casemul: "\\xbb\r"} + id: disps +- + code: 0x0D + name: Newline + unicode: [0x0D] + flags: [nl, sep] + id: newline +- + code: 0x0E + name: Rightwards Arrow + multi: [0xE691] + tokens: {cat: "\\->", ctf: "->", casemul: "\\x87"} + id: assign +- + code: 0x0F + name: 10 to the power of + tokens: {cat: "\\EE", newcat: "\\E", ctf: "\\exp", casemul: "\\x94", + ref: "x10^"} +- + code: 0x10 + name: Less-Than or Equal To + unicode: [0x2264] + tokens: {cat: "\\<=", ctf: "<=", casemul: "\\xae"} + id: le +- + code: 0x11 + name: Not Equal To + unicode: [0x2260] + tokens: {cat: "\\<>", ctf: "<>", casemul: "\\xac"} + id: nequ +- + code: 0x12 + name: Greater-Than or Equal To + unicode: [0x2265] + tokens: {cat: "\\>=", ctf: ">=", casemul: "\\xaf"} + id: ge +- + code: 0x13 + name: Rightwards Double Arrow + unicode: [0x21D2] + tokens: {cat: "\\=>", ctf: "=>", casemul: "\\xee"} + id: implies +- + code: 0x14 + name: Function Memory 1 + multi: [0x66, 0xE5D1] + tokens: {cat: "\\f1", ctf: ["\\f1", "f1"], casemul: "f\\xf1"} +- + code: 0x15 + name: Function Memory 2 + multi: [0x66, 0xE5D2] + tokens: {cat: "\\f2", ctf: ["\\f2", "f2"], casemul: "f\\xf2"} +- + code: 0x16 + name: Function Memory 3 + multi: [0x66, 0xE5D3] + tokens: {cat: "\\f3", ctf: ["\\f3", "f3"], casemul: "f\\xf3"} +- + code: 0x17 + name: Function Memory 4 + multi: [0x66, 0xE5D4] + tokens: {cat: "\\f4", ctf: ["\\f4", "f4"], casemul: "f\\xf4"} +- + code: 0x18 + name: Function Memory 5 + multi: [0x66, 0xE5D5] + tokens: {cat: "\\f5", ctf: ["\\f5", "f5"], casemul: "f\\xf5"} +- + code: 0x19 + name: Function Memory 6 + multi: [0x66, 0xE5D6] + tokens: {cat: "\\f6", ctf: ["\\f6", "f6"], casemul: "f\\xf6"} +- + code: 0x1A + name: Hexadecimal A + tokens: {cat: "\\hA", ctf: "\\A", casemul: "hA"} + id: hex_a +- + code: 0x1B + name: Hexadecimal B + tokens: {cat: "\\hB", ctf: "\\B", casemul: "hB"} + id: hex_b +- + code: 0x1C + name: Hexadecimal C + tokens: {cat: "\\hC", ctf: "\\C", casemul: "hC"} + id: hex_c +- + code: 0x1D + name: Hexadecimal D + tokens: {cat: "\\hD", ctf: "\\D", casemul: "hD"} + id: hex_d +- + code: 0x1E + name: Hexadecimal E + tokens: {cat: "\\hE", ctf: "\\E", casemul: "hE"} + id: hex_e +- + code: 0x1F + name: Hexadecimal F + tokens: {cat: "\\hF", ctf: "\\F", casemul: "hF"} + id: hex_f +#******************************************************************************# +# ASCII retrocompatible part # +#******************************************************************************# +- + code: 0x20 + name: Space + unicode: [0x20] + id: space +- + code: 0x21 + name: Exclamation mark + flags: [esc] + unicode: [0x21] + id: bang +- + code: 0x22 + name: Quotation mark + unicode: [0x22] + id: quote +- + code: 0x23 + name: Number + category: Sign + unicode: [0x23] + id: sharp +- + code: 0x24 + name: Dollar + category: Sign + unicode: [0x24] + id: dollar +- + code: 0x25 + name: Percent + flags: [esc] + category: Sign + unicode: [0x25] + id: percent +- + code: 0x26 + name: Ampersand + unicode: [0x26] + id: ampersand +- + code: 0x27 + name: Apostrophe + unicode: [0x27] + id: apostrophe +- + code: 0x28 + name: Left Parenthesis + unicode: [0x28] + id: lpar +- + code: 0x29 + name: Right Parenthesis + unicode: [0x29] + id: rpar +- + code: 0x2A + name: Asterisk + flags: [esc] + unicode: [0x2A] + id: asterisk +- + code: 0x2B + name: Plus + flags: [esc] + category: Sign + unicode: [0x2B] + id: plus +- + code: 0x2C + name: Comma + unicode: [0x2C] + id: comma +- + code: 0x2D + name: Hyphen + flags: [esc] + unicode: [0x2010] + ascii: "-" + id: hyphen +- + code: 0x2E + name: Full Stop + unicode: [0x2E] + id: dot +- + code: 0x2F + name: Solidus + flags: [esc] + unicode: [0x2F] + id: slash +- + code: 0x30 + name: Zero + category: Digit + unicode: [0x30] + id: zero +- + code: 0x31 + name: One + category: Digit + unicode: [0x31] + id: one +- + code: 0x32 + name: Two + category: Digit + unicode: [0x32] + id: two +- + code: 0x33 + name: Three + category: Digit + unicode: [0x33] + id: three +- + code: 0x34 + name: Four + category: Digit + unicode: [0x34] + id: four +- + code: 0x35 + name: Five + category: Digit + unicode: [0x35] + id: five +- + code: 0x36 + name: Six + category: Digit + unicode: [0x36] + id: six +- + code: 0x37 + name: Seven + category: Digit + unicode: [0x37] + id: seven +- + code: 0x38 + name: Eight + category: Digit + unicode: [0x38] + id: eight +- + code: 0x39 + name: Nine + category: Digit + unicode: [0x39] + id: nine +- + code: 0x3A + name: Colon + unicode: [0x3A] + tokens: {ctf: "", casemul: "", ref: ":"} + id: colon +- + code: 0x3B + name: Semicolon + flags: [sep] + unicode: [0x3B] + id: semicolon +- + code: 0x3C + name: Less-Than + category: Sign + unicode: [0x3C] + id: lt +- + code: 0x3D + name: Equals + category: Sign + unicode: [0x3D] + id: equ +- + code: 0x3E + name: Greater-Than + category: Sign + unicode: [0x3E] + id: gt +- + code: 0x3F + name: Question Mark + unicode: [0x3F] + tokens: {ctf: "", casemul: "?", ref: "?"} + id: question_mark +- + code: 0x40 + name: Commercial At + unicode: [0x40] + id: at +- + code: 0x41 + name: A + category: Letter/Latin Capital + unicode: [0x41] +- + code: 0x42 + name: B + category: Letter/Latin Capital + unicode: [0x42] +- + code: 0x43 + name: C + category: Letter/Latin Capital + unicode: [0x43] +- + code: 0x44 + name: D + category: Letter/Latin Capital + unicode: [0x44] +- + code: 0x45 + name: E + category: Letter/Latin Capital + unicode: [0x45] +- + code: 0x46 + name: F + category: Letter/Latin Capital + unicode: [0x46] +- + code: 0x47 + name: G + category: Letter/Latin Capital + unicode: [0x47] +- + code: 0x48 + name: H + category: Letter/Latin Capital + unicode: [0x48] +- + code: 0x49 + name: I + category: Letter/Latin Capital + unicode: [0x49] +- + code: 0x4A + name: J + category: Letter/Latin Capital + unicode: [0x4A] +- + code: 0x4B + name: K + category: Letter/Latin Capital + unicode: [0x4B] +- + code: 0x4C + name: L + category: Letter/Latin Capital + unicode: [0x4C] +- + code: 0x4D + name: M + category: Letter/Latin Capital + unicode: [0x4D] +- + code: 0x4E + name: N + category: Letter/Latin Capital + unicode: [0x4E] +- + code: 0x4F + name: O + category: Letter/Latin Capital + unicode: [0x4F] +- + code: 0x50 + name: P + category: Letter/Latin Capital + unicode: [0x50] +- + code: 0x51 + name: Q + category: Letter/Latin Capital + unicode: [0x51] +- + code: 0x52 + name: R + category: Letter/Latin Capital + unicode: [0x52] +- + code: 0x53 + name: S + category: Letter/Latin Capital + unicode: [0x53] +- + code: 0x54 + name: T + category: Letter/Latin Capital + unicode: [0x54] +- + code: 0x55 + name: U + category: Letter/Latin Capital + unicode: [0x55] +- + code: 0x56 + name: V + category: Letter/Latin Capital + unicode: [0x56] +- + code: 0x57 + name: W + category: Letter/Latin Capital + unicode: [0x57] +- + code: 0x58 + name: X + category: Letter/Latin Capital + unicode: [0x58] +- + code: 0x59 + name: Y + category: Letter/Latin Capital + unicode: [0x59] +- + code: 0x5A + name: Z + category: Letter/Latin Capital + unicode: [0x5A] +- + code: 0x5B + name: Left Square Bracket + unicode: [0x5B] + id: lbrac +- + code: 0x5C + name: Reverse Solidus + flags: [esc] + unicode: [0x5C] + id: revslash +- + code: 0x5D + name: Right Square Bracket + unicode: [0x5D] + id: rbrac +- + code: 0x5E + name: Circumflex Accent + flags: [esc] + unicode: [0x5E] + ascii: "\\circum" +- + code: 0x5F + name: Low Line + flags: [esc] + unicode: [0x5F] + tokens: {cat: "", casemul: "", ctf: "\\_"} + id: underscore +- + code: 0x60 + name: Grave Accent + unicode: [0x60] + id: grave +- + code: 0x61 + name: A + category: Letter/Latin Small + unicode: [0x61] + id: a +- + code: 0x62 + name: B + category: Letter/Latin Small + unicode: [0x62] + id: b +- + code: 0x63 + name: C + category: Letter/Latin Small + unicode: [0x63] + id: c +- + code: 0x64 + name: D + category: Letter/Latin Small + unicode: [0x64] + id: d +- + code: 0x65 + name: E + category: Letter/Latin Small + unicode: [0x65] + id: e +- + code: 0x66 + name: F + category: Letter/Latin Small + unicode: [0x66] + id: f +- + code: 0x67 + name: G + category: Letter/Latin Small + unicode: [0x67] + id: g +- + code: 0x68 + name: H + category: Letter/Latin Small + unicode: [0x68] + id: h +- + code: 0x69 + name: I + category: Letter/Latin Small + unicode: [0x69] + id: i +- + code: 0x6A + name: J + category: Letter/Latin Small + unicode: [0x6A] + id: j +- + code: 0x6B + name: K + category: Letter/Latin Small + unicode: [0x6B] + id: k +- + code: 0x6C + name: L + category: Letter/Latin Small + unicode: [0x6C] + id: l +- + code: 0x6D + name: M + category: Letter/Latin Small + unicode: [0x6D] + id: m +- + code: 0x6E + name: N + category: Letter/Latin Small + unicode: [0x6E] + id: n +- + code: 0x6F + name: O + category: Letter/Latin Small + unicode: [0x6F] + id: o +- + code: 0x70 + name: P + category: Letter/Latin Small + unicode: [0x70] + id: p +- + code: 0x71 + name: Q + category: Letter/Latin Small + unicode: [0x71] + id: q +- + code: 0x72 + name: R + category: Letter/Latin Small + unicode: [0x72] + id: r +- + code: 0x73 + name: S + category: Letter/Latin Small + unicode: [0x73] + id: s +- + code: 0x74 + name: T + category: Letter/Latin Small + unicode: [0x74] + id: t +- + code: 0x75 + name: U + category: Letter/Latin Small + unicode: [0x75] + id: u +- + code: 0x76 + name: V + category: Letter/Latin Small + unicode: [0x76] + id: v +- + code: 0x77 + name: W + category: Letter/Latin Small + unicode: [0x77] + id: w +- + code: 0x78 + name: X + category: Letter/Latin Small + unicode: [0x78] + id: x +- + code: 0x79 + name: Y + category: Letter/Latin Small + unicode: [0x79] + id: y +- + code: 0x7A + name: Z + category: Letter/Latin Small + unicode: [0x7A] + id: z +- + code: 0x7B + name: Left Curly Bracket + unicode: [0x7B] + id: lcbrac +- + code: 0x7C + name: Vertical Line + unicode: [0x7C] + id: vline +- + code: 0x7D + name: Right Curly Bracket + unicode: [0x7D] + id: rcbrac +- + code: 0x7E + name: Tilde + unicode: [0x7E] + id: tilde +- + code: 0x7F + name: Multi-byte leader 0x7F + id: mblead_7F +#******************************************************************************# +# Hardcoded in extended ASCII # +#******************************************************************************# +- + code: 0x80 + name: Cartesian To Polar Coordinate Transformation + category: Function + tokens: {cat: "\\Pol(", ctf: "Pol(", casemul: "Pol("} + args: [x, y] + action: Stores the equivalent polar coordinates in theta and r. + multi: [0x50, 0x6F, 0x6C, 0x28] +- + code: 0x81 + name: Sine + category: Function + args: [angle] + return: The sine of the angle. + multi: [0x73, 0x69, 0x6E, 0x20] + id: sin +- + code: 0x82 + name: Cosine + category: Function + args: [angle] + return: The cosine of the angle. + multi: [0x63, 0x6F, 0x73, 0x20] + id: cos +- + code: 0x83 + name: Tangent + category: Function + args: [angle] + return: The tangeant of the angle. + multi: [0x74, 0x61, 0x6E, 0x20] + id: tan +- + code: 0x84 + name: Hexadecimal + flags: [base] + category: Operator/Prefix + args: [number] + return: The decimal equivalent of the hexadecimal value. + multi: [0x68] + id: hex +- # ln + code: 0x85 + name: Natural Logarithm + category: Function + args: [number] + return: The natural logarithm of the number. + multi: [0x6C, 0x6E, 0x20] +- + code: 0x86 + name: Square Root + unicode: [0x221A] + id: sqrt + ascii: "\\sqrt " +- + code: 0x87 + name: Hyphen-Minus + category: Operator/Prefix + args: [number] + return: The negative version of the number. + unicode: [0x2D] + id: hyphen_minus + ascii: "(-)" +- + code: 0x88 + name: Permutations + category: Operator + args: [n, k] + return: The number of k permutations of n. + multi: [0xE5B1] + ascii: + - " nPr " + - " \\perm " +- + code: 0x89 + name: Addition + category: Operator + args: [first number, second number] + return: The sum of the two numbers. + multi: [0x2B] +- + code: 0x8A + name: Exclusive NOR + category: Operator + args: [first number, second number] + return: The exclusive NOR of the two numbers. + multi: [0x78, 0x6E, 0x6F, 0x72] +- + code: 0x8B + name: Square + category: Operator + args: [number] + return: The number multiplied by itself. + multi: [0xE5C2] +- + code: 0x8C + name: Degrees Minutes Seconds + category: Operator + args: [angle] + action: Set the current display string to the degrees/minutes/seconds + description of the angle. + multi: [0xE69E, 0x44, 0x4D, 0x53] + ascii: + - "\\dms" + - "\\." +- + code: 0x8D + name: Integral + category: Function + args: [function, start, end] + return: The integral of the function with x between start and end. + multi: [0xE6BB, 0x28] + ascii: + - "\\Integrate(" + - "$dx(" +- + code: 0x8E + name: Mode + category: Register + return: The most represented variable in an object population. + multi: [0x4D, 0x6F, 0x64] +- + code: 0x8F + name: X Square Sum + category: Register + return: The sum of the squared element. + multi: [0xE551, 0x78, 0xE5C2] + +# TODO +- + code: 0x91 + name: Arcsine + category: Operator/Prefix + args: [number] + return: The arcsine of the number. + multi: [0x73, 0x69, 0x6E, 0xE5CA, 0x20] + ascii: "asin " +- + code: 0x92 + name: Arccosine + category: Function + args: [number] + return: The arccosine of the number. + multi: [0x63, 0x6F, 0x73, 0xE5CA, 0x20] + ascii: "acos " +- + code: 0x93 + name: Arctangent + category: Function + args: [number] + return: The arctangent of the number. + multi: [0x74, 0x61, 0x6E, 0xE5CA, 0x20] + ascii: "atan " +- + code: 0x94 + name: Decimal + flags: [base] + category: Operator/Prefix + args: [number] + return: The decimal equivalent of the decimal value (?). + multi: [0x64] +- + code: 0x95 + name: Base 10 Logarithm + multi: [0x6C, 0x6F, 0x67, 0x20] +- + code: 0x96 + name: Cubic Root + category: Operator/Prefix + args: [number] + return: The cubic root of the number. + unicode: [0x221B] + multi: [0xE5DF, 0x86] +- + code: 0x97 + name: Absolute Value + category: Statement + args: [number] + return: The absolute value of the number. + category: Function + multi: [0x41, 0x62, 0x73, 0x20] +- + code: 0x98 + name: R-subsets of an n-element set + category: Operator + args: [n, r] + return: The number of r-subsets of an n-element set. + multi: [0x1C] + ascii: + - " nCr " + - " \\comb " +- + code: 0x99 + name: Substraction + category: Operator + args: [first number, second number] + return: The substraction of the two numbers. + multi: [0x2D] + ascii: "-" +- + code: 0x9A + name: Exclusive OR + category: Operator + args: [first number, second number] + return: The exclusive OR of the two numbers. + multi: [0x78, 0x6F, 0x72] + ascii: " xor " +- + code: 0x9B + name: Reciprocal + category: Operator + args: [number] + return: Get the reciprocal number. + multi: [0xE5CA] + ascii: + - "\\rcp" + - "\\^-1" +- + code: 0x9C + name: Degree + category: Sign + unicode: [0xB0] + ascii: + - Deg + - (deg) + +# TODO +- + code: 0x9E + name: Median + category: Register + return: The median from the current list. + multi: [0x4D, 0x65, 0x64] +- + code: 0x9F + name: X Simple Sum + category: Register + return: The sum of all the values from the current list. + multi: [0xE551, 0x78] +- + code: 0xA0 + name: Polar To Cartesian Coordinate Transformation + category: Function + args: [r, theta] + action: Stores the equivalent cartesian coordinates in x and y. + multi: [0x52, 0x65, 0x63, 0x28] +- + code: 0xA1 + name: Hyperbolic Sine + category: Function + args: [number] + return: The hyperbolic sine of the number. + multi: [0x73, 0x69, 0x6E, 0x68, 0x20] +- + code: 0xA2 + name: Hyperbolic Cosine + category: Function + args: [number] + return: The hyperbolic cosine of the number. + multi: [0x63, 0x6F, 0x73, 0x68, 0x20] +- + code: 0xA3 + name: Hyperbolic Tangent + category: Function + args: [number] + return: The hyperbolic tangent of the number. + multi: [0x74, 0x61, 0x6E, 0x68, 0x20] +- + code: 0xA4 + name: Octal + flags: [base] + category: Operator/Prefix + args: [number] + return: The decimal equivalent of the octal value. + multi: [0x6F] +- + code: 0xA5 + name: Exponential + category: Function + args: [number] + return: The exponential of the number. + multi: [0x65, 0x5E] +- + code: 0xA6 + name: Floor + category: Function + args: [number] + return: The floor of the number. + multi: [0x49, 0x6E, 0x74, 0x20] +- + code: 0xA7 + name: Bitwise Not + category: Function + args: [number] + return: The bitwise not of the number. + multi: [0x4E, 0x6F, 0x74, 0x20] + id: not +- + code: 0xA8 + name: Power + category: Operator + args: [base, power] + return: The base to a power. + multi: [0x5E] + id: power +- + code: 0xA9 + name: Multiplication + category: Operator + args: [first number, second number] + return: The product of the two numbers. + unicode: [0xD7] + ascii: '*' +- + code: 0xAA + name: Bitwise Or + category: Operator + args: [first number, second number] + return: The bitwise or of the two numbers. + multi: [0x6F, 0x72] +- + code: 0xAB + name: Factorial + category: Operator + args: [number] + return: The factorial of the number. + multi: [0x21] +- + code: 0xAC + name: Radian + category: Sign + unicode: [0x2B3] + ascii: + - Rad + - "(rad)" +- + code: 0xAD + name: Minimum Y + category: Register + return: The minimum value on the Y-axis? + multi: [0x6D, 0x69, 0x6E, 0x59] + ascii: "MinY" +- + code: 0xAE + name: Minimum X + category: Register + return: The minimum value on the X-axis? + multi: [0x6D, 0x69, 0x6E, 0x58] + ascii: "MinX" +- + code: 0xAF + name: Number of entries + category: Register + category: Register + return: The number of entries. + multi: [0x6E] + ascii: "\num" +- + code: 0xB1 + name: Inverse Hyperbolic Sine + category: Function + multi: [0x73, 0x69, 0x6E, 0x68, 0xE5CA, 0x20] + ascii: "asinh " +- + code: 0xB2 + name: Inverse Hyperbolic Cosine + category: Function + multi: [0x63, 0x6F, 0x73, 0x68, 0xE5CA, 0x20] + ascii: "acosh " +- + code: 0xB3 + name: Inverse Hyperbolic Tangent + category: Function + multi: [0x74, 0x61, 0x6E, 0x68, 0xE5CA, 0x20] + ascii: "atanh " +- + code: 0xB4 + name: Binary + flags: [base] + category: Operator/Prefix + args: [number] + return: The decimal equivalent of the binary value. + multi: [0x62] +- + code: 0xB5 + name: Ten + category: Digit + unicode: [0x31, 0x30] +- + code: 0xB6 + name: Fractional Part + category: Statement + args: [number] + return: The fractional part of the number. + multi: [0x46, 0x72, 0x61, 0x63, 0x20] +- + code: 0xB7 + name: Negative + flags: [base] + category: Statement + args: [number] + return: The negative version of the number. + multi: [0x4E, 0x65, 0x67, 0x20] +- + code: 0xB8 + name: Parametric Graph Function X + category: Register + return: The parametric Graph Function X. + multi: [0xE5DD, 0x86] +- + code: 0xB9 + name: Division + category: Operator + args: [dividend, divider] + return: The result of the division of the dividend by the divider. + unicode: [0xF7] + ascii: "/" +- + code: 0xBA + name: and + multi: [0x61, 0x6E, 0x64] +- + code: 0xBB + name: Object/Infix + args: [top, bottom] + unicode: [0x231F] + ascii: "%" +- + code: 0xBC + name: Gradian + category: Sign + unicode: [0x1D4D] + ascii: + - Gra + - "(grad)" + - "(gra)" +- + code: 0xBD + name: Maximum Y + category: Register + return: Maximum on the Y-axis? + multi: [0x6D, 0x61, 0x78, 0x59] +- + code: 0xBE + name: Maximum X + category: Register + return: Maximum on the X-axis? + multi: [0x6D, 0x61, 0x78, 0x58] +- + code: 0xBF + name: Y Square Sum + category: Register + return: The Y Square Sum. + multi: [0xE551, 0x79, 0xE5C2] +- + code: 0xC0 + name: Ans + multi: [0x41, 0x6E, 0x73] +- + code: 0xC1 + name: Random Number Generation + category: Statement + args: [] + return: A random number in [0; 1[. + multi: [0x52, 0x61, 0x6E, 0x23, 0x20] +- + code: 0xC2 + name: x with overline + unicode: [0x78, 0x305] + ascii: (x-overline) +- + code: 0xC3 + name: y with overline + unicode: [0x79, 0x305] + ascii: (y-overline) +- + code: 0xC4 + name: x Rho n + multi: [0x78, 0xE651, 0x6E] +- + code: 0xC4 + name: Rho x + set: CASIOWIN_2.00 + multi: [0xE651, 0x78] +- + code: 0xC5 + name: x Rho n_-1 + multi: [0x78, 0xE651, 0x6E, 0xE5DA] +- + code: 0xC5 + name: sx + set: CASIOWIN_2.00 + multi: [0x73, 0x78] +- + code: 0xC6 + name: y rho ^ + multi: [0x79, 0xE651, 0x6E] +- + code: 0xC6 + name: Rho y + set: CASIOWIN_2.00 + multi: [0xE651, 0x79] +- + code: 0xC7 + name: y rho ^ _-1 + multi: [0x79, 0xE651, 0x6E, 0xE5DA] +- + code: 0xC7 + name: sy + set: CASIOWIN_2.00 + multi: [0x73, 0x79] +- + code: 0xC8 + name: a (Reg) + multi: [0x61] +- + code: 0xC9 + name: b (Reg) + multi: [0x62] +- + code: 0xCA + name: r (Reg) + multi: [0x72] +- + code: 0xCB + name: x with circumflex + unicode: [0x78, 0x302] + ascii: (x-circumflex) +- + code: 0xCC + name: y with circumflex + unicode: [0x79, 0x302] + ascii: (y-circumflex) +- + code: 0xCD + name: r (radius) + unicode: [0x1D69B] + ascii: "\\r" +- + code: 0xCE + name: theta (angle) + multi: [0xE647] + ascii: "\\th" +- + code: 0xCF + name: Y Simple Sum + category: Register + return: The Y Simple Sum. + multi: [0xE551, 0x79] +- + code: 0xD0 + name: Pi + category: Register + return: An approximation of Pi (3.14...). + multi: [0xE64F] +- + code: 0xD1 + name: Clear Screen + category: Statement + args: [] + action: Clear the screen. + multi: [0x43, 0x6C, 0x73] + +# TODO +- + code: 0xD3 + name: Rnd + multi: [0x52, 0x6E, 0x64] +- + code: 0xD4 + name: Decimal mode + multi: [0x44, 0x65, 0x63] +- + code: 0xD5 + name: Hexadecimal mode + multi: [0x48, 0x65, 0x78] +- + code: 0xD6 + name: Binary mode + multi: [0x42, 0x69, 0x6E] +- + code: 0xD7 + name: Octal mode + multi: [0x4F, 0x63, 0x74] +- + code: 0xD8 + name: White Box + ascii: (white box) +- + code: 0xD9 + name: Norm + multi: [0x4E, 0x6F, 0x72, 0x6D, 0x20] +- + code: 0xDA + name: Degree mode + multi: [0x44, 0x65, 0x67] +- + code: 0xDB + name: Radian mode + multi: [0x52, 0x61, 0x64] +- + code: 0xDC + name: Gradian mode + multi: [0x47, 0x72, 0x61] +- + code: 0xDD + name: Eng + multi: [0x45, 0x6E, 0x67] +- + code: 0xDE + name: Intg + multi: [0x49, 0x6E, 0x74, 0x67, 0x20] +- + code: 0xDF + name: Sigma x y + multi: [0xE551, 0x78, 0x79] +- + code: 0xE0 + name: Plot + multi: [0x50, 0x6C, 0x6F, 0x74, 0x20] +- + code: 0xE1 + name: Line + category: Statement + args: [] + action: Draw a line between the two previously defined plots. + multi: [0x4C, 0x69, 0x6E, 0x65] +- + code: 0xE2 + name: Lbl + category: Statement + args: [label] + action: Define a label at the current address. + multi: [0x4C, 0x62, 0x6C, 0x20] +- + code: 0xE3 + name: Fix Display + category: Statement + args: [decimals] + action: Set the number of decimals to display. + multi: [0x46, 0x69, 0x78, 0x20] +- + code: 0xE4 + name: Scientific Display + category: Statement + args: [significant] + action: Displays a result using a scientific form; the argument is the number + of significant digits to display. + multi: [0x53, 0x63, 0x69, 0x20] +#- +# code: 0xE5 +# name: Multi-byte leader 0xE5 +# id: mblead_E5 +#- +# code: 0xE6 +# name: Multi-byte leader 0xE6 +# id: mblead_E6 +#- +# code: 0xE7 +# name: Multi-byte leader 0xE7 +# id: mblead_E7 +- + code: 0xE8 + name: Decrement Skip Zero + category: Statement + args: [variable] + action: Decrement the variable; if after this operation, the variable is equal + to zero, skip the next instruction. + multi: [0x44, 0x73, 0x7A, 0x20] +- + code: 0xE9 + name: Increment Skip Zero + category: Statement + args: [variable] + action: Increment the variable; if after this operation, the variable is equal + to zero, skip the next instruction. + multi: [0x49, 0x73, 0x7A, 0x20] +- + code: 0xEA + name: Factor + multi: [0x46, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x20] +- + code: 0xEB + name: View Window + category: Statement + args: [Xmin, Xmax, Xscale, Ymin, Ymax, Yscale, Tmin, Tmax, Tpitch] + action: Set up the window. + multi: [0x56, 0x69, 0x65, 0x77, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x20] +- + code: 0xEC + name: Go To + category: Statement + args: [label] + action: Jump to a label. + multi: [0x47, 0x6F, 0x74, 0x6F, 0x20] +- + code: 0xED + name: Prog + category: Statement + args: [name] + action: Execute a subprogram. + multi: [0x50, 0x72, 0x6F, 0x67, 0x20] +- + code: 0xEE + name: Graph Y= + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x59, 0x3D] +- + code: 0xEF + name: Graph Intg + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0xE6BB] +- + code: 0xF0 + name: Graph Y> + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x59, 0x3E] +- + code: 0xF1 + name: Graph Y< + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x59, 0x3C] +- + code: 0xF2 + name: Graph Y>= + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x59, 0x12] +- + code: 0xF3 + name: Graph Y<= + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x59, 0x10] +- + code: 0xF4 + name: Graph r= + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x72, 0x3D] +- + code: 0xF5 + name: Graph(X,Y)=( + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x28, 0x58, 0x2C, 0x59, 0x29, 0x3D, 0x28] +- + code: 0xF6 + name: Comma (?) + multi: [0x2C] +- + code: 0xF7 + name: Multi-byte leader 0xF7 + id: mblead_F7 +#- +# code: 0xF8 +# name: Future multi-byte leader 0xF8? +# id: mblead_F8 +- + code: 0xF9 + name: Multi-byte leader 0xF9 + id: mblead_F9 +- + code: 0xFA + name: Gosub + multi: [0x47, 0x6F, 0x73, 0x75, 0x62, 0x20] + set: C.Basic +- + code: 0xFB + name: P( + multi: [0x50, 0x28] +- + code: 0xFC + name: Q( + multi: [0x51, 0x28] +- + code: 0xFD + name: R( + multi: [0x52, 0x28] +- + code: 0xFE + name: t( + multi: [0x74, 0x28] +- + code: 0xFF + name: Blank character (?) + id: blank + ascii: (blank) +#******************************************************************************# +# 0x7F characters # +#******************************************************************************# +- + code: 0x7F00 + name: View-Window X-min Parameter + category: Register + return: The View-Window minimal abscissa. + multi: [0x58, 0x6D, 0x69, 0x6E] +- + code: 0x7F01 + name: View-Window X-max Parameter + category: Register + return: The View-Window maximal abscissa + multi: [0x58, 0x6D, 0x61, 0x78] +- + code: 0x7F02 + name: View-Window X-scale Parameter + category: Register + return: The View-Window x-axis scale. + multi: [0x58, 0x73, 0x63, 0x6C] + +# TODO +- + code: 0x7F04 + name: View-Window Y-min Parameter + category: Register + return: The View-Window minimal ordinate. + multi: [0x59, 0x6D, 0x69, 0x6E] +- + code: 0x7F05 + name: View-Window Y-max Parameter + category: Register + return: The View-Window maximal ordinate. + multi: [0x59, 0x6D, 0x61, 0x78] +- + code: 0x7F06 + name: View-Window Y-scale Parameter + category: Register + return: The View-Window y-axis scale. + multi: [0x59, 0x73, 0x63, 0x6C] + +# TODO +- + code: 0x7F08 + name: View-Window T-Theta-min Parameter + category: Register + tokens: {ctf: ["Tmin", "\\tmin"], casemul: "T\\x96min"} + return: The T and Theta minimal values. + multi: [0x54, 0xE647, 0x6D, 0x69, 0x6E] +- + code: 0x7F09 + name: View-Window T-Theta-max Parameter + category: Register + tokens: {ctf: ["Tmax", "\\tmax"], casemul: "T\\x96max"} + return: The T and Theta maximal. + multi: [0x54, 0xE647, 0x6D, 0x61, 0x78] +- + code: 0x7F0A + name: View-Window T-Theta-pitch Parameter + category: Register + tokens: {ctf: ["Tptch", "\\tptch", "Tscl", "\\tscl"], casemul: "T\\x96ptch"} + return: The T and Theta step. + multi: [0x54, 0xE647, 0x70, 0x74, 0x63, 0x68] +- + code: 0x7F0B + name: X-Axis Zoom Factor + category: Register + return: The x-axis zoom factor. + multi: [0x58, 0x66, 0x63, 0x74] +- + code: 0x7F0C + name: Y-Axis Zoom Factor + category: Register + return: The y-axis zoom factor. + multi: [0x59, 0x66, 0x63, 0x74] +- + code: 0x7F0D + name: Dynamic Graph Data Coefficient Start Value + tokens: {ctf: ["D Start", "\\dstart"]} + multi: [0x44, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74] +- + code: 0x7F0E + name: Dynamic Graph Data Coefficient End Value + tokens: {ctf: ["D End", \\dend"]} + multi: [0x44, 0x20, 0x45, 0x6E, 0x64] +- + code: 0x7F0F + name: Dynamic Graph Data Coefficient Pitch + tokens: {ctf: ["D pitch", "\\dpitch"]} + multi: [0x44, 0x20, 0x70, 0x69, 0x74, 0x63, 0x68] +- + code: 0x7F10 + name: View-Window Right X-min Parameter + tokens: {ctf: ["RightXmin", "\\rxmin"]} + multi: [0x52, 0x69, 0x67, 0x68, 0x74, 0x58, 0x6D, 0x69, 0x6E] +- + code: 0x7F11 + name: View-Window Right X-max Parameter + tokens: {ctf: ["RightXmax", "\\rxmax"]} + multi: [0x52, 0x69, 0x67, 0x68, 0x74, 0x58, 0x6D, 0x61, 0x78] +- + code: 0x7F12 + name: View-Window Right X-scale Parameter + tokens: {ctf: ["RightXscl", "\\rxscl"]} + multi: [0x52, 0x69, 0x67, 0x68, 0x74, 0x58, 0x73, 0x63, 0x6C] + +# TODO +- + code: 0x7F14 + name: View-Window Right Y-min Parameter + tokens: {ctf: ["RightYmin", "\\rymin"]} + multi: [0x52, 0x69, 0x67, 0x68, 0x74, 0x59, 0x6D, 0x69, 0x6E] +- + code: 0x7F15 + name: View-Window Right Y-max Parameter + tokens: {ctf: ["RightYmax", "\\rymax"]} + multi: [0x52, 0x69, 0x67, 0x68, 0x74, 0x59, 0x6D, 0x61, 0x78] +- + code: 0x7F16 + name: View-Window Right Y-scale Parameter + tokens: {ctf: ["RightYscl", "\\ryscl"]} + multi: [0x52, 0x69, 0x67, 0x68, 0x74, 0x59, 0x73, 0x63, 0x6C] + +# TODO +- + code: 0x7F18 + name: View-Window Right T-Theta-min Parameter + tokens: {cat: "\\RightTmin", ctf: ["RightTmin", "\\rtmin"], + casemul: "RightT\\x96min"} + multi: [0x52, 0x69, 0x67, 0x68, 0x74, 0x54, 0xE647, 0x6D, 0x69, 0x6E] +- + code: 0x7F19 + name: View-Window Right T-Theta-max Parameter + tokens: {cat: "\\RightTmax", ctf: ["RightTmax", "\\rtmax"], + casemul: "RightT\\x96max"} + multi: [0x52, 0x69, 0x67, 0x68, 0x74, 0x54, 0xE647, 0x6D, 0x61, 0x78] +- + code: 0x7F1A + name: View-Window Right T-Theta-pitch Parameter + tokens: {cat: "\\RightTptch", ctf: ["RightTscl", "\\rtscl"], + casemul: "RightT\\x96ptch"} + multi: [0x52, 0x69, 0x67, 0x68, 0x74, 0x54, 0xE647, 0x70, 0x74, 0x63, 0x68] + +# TODO +- + code: 0x7F1D + name: Regression And Polynomial Coefficient C + tokens: {cat: "", newcat: '\{c}', ctf: ""} + multi: [0x63] +- + code: 0x7F1E + name: Regression And Polynomial Coefficient D + tokens: {cat: "", newcat: '\{d}', ctf: ""} + multi: [0x64] +- + code: 0x7F1F + name: Regression And Polynomial Coefficient E + tokens: {cat: "", newcat: '\{e}', ctf: ""} + multi: [0x65] +- + code: 0x7F20 + name: List Maximum + category: Function + multi: [0x4D, 0x61, 0x78, 0x28] +- + code: 0x7F21 + name: Matrix Determinant + category: Statement + multi: [0x44, 0x65, 0x74, 0x20] +- + code: 0x7F22 + name: Complex Argument + category: Statement + args: [complex] + return: The argument of the complex. + multi: [0x41, 0x72, 0x67, 0x20] +- + code: 0x7F23 + name: Complex Conjugate + category: Statement + tokens: {cat: "\\Conj ", ctf: "Conjg ", casemul: "Conj "} + args: [complex] + return: The conjugate of the complex. + multi: [0x43, 0x6F, 0x6E, 0x6A, 0x67, 0x20] +- + code: 0x7F24 + name: Real part + category: Statement + tokens: {ctf: ["ReP ", "Rep "]} + args: [complex] + return: The real part of the complex. + multi: [0x52, 0x65, 0x50, 0x20] +- + code: 0x7F25 + name: Imaginary Part + category: Statement + tokens: {ctf: ["ImP ", "Imp "]} + args: [complex] + return: The imaginary part of the complex. + multi: [0x49, 0x6D, 0x50, 0x20] +- + code: 0x7F26 + name: Derivative + category: Function + tokens: {ctf: ["$dx(", "\\Integrate("]} + multi: [0x64, 0x2F, 0x64, 0x78, 0x28] +- + code: 0x7F27 + name: Second Derivative + category: Function + tokens: {cat: "\\d2/dxc(", ctf: "d2/dx2(", casemul: "d2\xa4dxc("} + multi: [0x64, 0xE5C2, 0x2F, 0x64, 0x78, 0xE5C2, 0x28] + ascii: d2/dx2 +- + code: 0x7F28 + name: Solve Equation + category: Function + multi: [0x53, 0x6F, 0x6C, 0x76, 0x65, 0x28] +- + code: 0x7F29 + name: Sigma + category: Function + tokens: {cat: "\\Sum(", ctf: "Sum(", \x98("} + multi: [0xE551, 0x28] +- + code: 0x7F2A + name: Function Minimum Calculations + category: Function + tokens: {ctf: "Fmax("} + multi: [0x46, 0x4D, 0x69, 0x6E, 0x28] +- + code: 0x7F2B + name: Function Maximum Calculations + category: Function + multi: [0x46, 0x4D, 0x61, 0x78, 0x28] +- + code: 0x7F2C + name: List Sequence + category: Function + multi: [0x53, 0x65, 0x71, 0x28] +- + code: 0x7F2D + name: List Minimum + multi: [0x4D, 0x69, 0x6E, 0x28] + category: Function +- + code: 0x7F2E + name: List Mean + category: Function + multi: [0x4D, 0x65, 0x61, 0x6E, 0x28] +- + code: 0x7F2F + name: List Median + category: Function + multi: [0x4D, 0x65, 0x64, 0x69, 0x61, 0x6E, 0x28] +- + code: 0x7F30 + name: Numerical Solve Equation + category: Function + set: CASIOWIN_2.00 + multi: [0x53, 0x6F, 0x6C, 0x76, 0x65, 0x4E, 0x28] +#- +# code: 0x7F31 +# tokens: {cat: "\\P/L-Orange", ctf: ["P/L-Orange", "\\plorange"], +# casemul: "P/L-Orange"} +#- +# code: 0x7F32 +# tokens: {cat: "\\P/L-Blue", ctf: ["P/L-Blue", "\\plblue"], +# casemul: "P/L-Blue"} +#- +# code: 0x7F33 +# tokens: {cat: "\\P/L-Green", ctf: ["P/L-Green", "\\plgreen"], +# casemul: "P/L-Green"} +#- +# code: 0x7F34 +# tokens: {cat: "\\Orange ", ctf: "Orange ", casemul: "Orange "} +#- +# code: 0x7F35 +# tokens: {cat: "\\Blue ", ctf: "Blue ", casemul: "Blue "} +#- +# code: 0x7F36 +# tokens: {cat: "\\Green ", ctf: "Green ", casemul: "Green "} +#- +# code: 0x7F37 +# tokens: {cat: "\\OrangeG ", ctf: "OrangeG ", casemul: "OrangeG "} +#- +# code: 0x7F38 +# tokens: {cat: "\\BlueG ", ctf: "BlueG ", casemul: "BlueG "} +#- +# code: 0x7F39 +# tokens: {cat: "\\GreenG ", ctf: "GreenG ", casemul: "GreenG "} +- + code: 0x7F3A + name: Modulo + category: Sign + set: CASIOWIN_2.00 + multi: [0x4D, 0x4F, 0x44, 0x28] +- + code: 0x7F3B + name: Power-Division Remainder + category: Function + set: CASIOWIN_2.00 + multi: [0x4D, 0x4F, 0x44, 0x5F, 0x45, 0x78, 0x70, 0x28] +- + code: 0x7F3C + name: Greatest Common Divisor + category: Function + set: CASIOWIN_2.00 + multi: [0x47, 0x43, 0x44, 0x28] +- + code: 0x7F3D + name: Lowest Common Multiple + category: Function + set: CASIOWIN_2.00 + multi: [0x4C, 0x43, 0x4D, 0x28] +- + code: 0x7F3E + name: Standard Deviation + category: Function + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x64, 0x44, 0x65, 0x76, 0x28] +- + code: 0x7F3F + name: Variance + category: Function + set: CASIOWIN_2.00 + multi: [0x56, 0x61, 0x72, 0x69, 0x61, 0x6E, 0x63, 0x65, 0x28] +- + code: 0x7F40 + name: Matrix + category: Object + args: [id] + multi: [0x4D, 0x61, 0x74, 0x20] +- # Trn + code: 0x7F41 + name: Matricial Transpose + category: Statement + args: Mat + return: Transposes the matrix. + multi: [0x54, 0x72, 0x6E, 0x20] +- # *Row + code: 0x7F42 + name: Matrix Row Scalar Multiplication + category: Statement + tokens: {cat: "\\*Row(", ctf: "*Row"} + args: [multiplier, matrix code, row] + return: The product of the values on the selected row by the multiplier in + a matrix. + multi: [0x2A, 0x52, 0x6F, 0x77, 0x20] +- # *Row+ + code: 0x7F43 + name: Matrix Row Transvection + category: Statement + tokens: {cat: "\\*Row+(", ctf: "*Row+"} + args: Multiplier, Matrix Code, Row, To Row + action: Adds the product of the values on the selected row by the multiplier + to the values on the destination row in a matrix. + multi: [0x2A, 0x52, 0x6F, 0x77, 0x2B, 0x20] +- # Row+ + code: 0x7F44 + name: Matrix Row Addition + category: Statement + tokens: {cat: "\\Row+(", ctf: "Row+"} + args: Matrix Code, Line, To Line + action: Adds the values on the line to the destination line in a matrix. + multi: [0x52, 0x6F, 0x77, 0x2B, 0x20] +- # Swap + code: 0x7F45 + name: Matrix Row Switch + category: Statement + tokens: {cat: "\\Swap(", ctf: "Swap"} + args: Matrix Code, First Line, Second Line + action: Swaps two lines in a matrix. + multi: [0x53, 0x77, 0x61, 0x70, 0x20] +- # Dim + code: 0x7F46 + name: Dimension + category: Statement + args: Object + action: Get (or set) the dimension. + multi: [0x44, 0x69, 0x6D, 0x20] +- # Fill + code: 0x7F47 + name: Object Fill + category: Function + tokens: {ctf: "Fill "} + args: Value, Object + action: Fill the object with the value. + multi: [0x46, 0x69, 0x6C, 0x6C, 0x28] +- + code: 0x7F48 + name: Identity Matrix + category: Statement + multi: [0x49, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0x20] +- + code: 0x7F49 + name: List Append Or Matrix Append + category: Function + multi: [0x41, 0x75, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x28] +- + code: 0x7F4A + name: List To Matrix Conversion + category: Function + tokens: {casemul: "List\\x87Mat("} + multi: [0x4C, 0x69, 0x73, 0x74, 0xE691, 0x4D, 0x61, 0x74, 0x28] +- + code: 0x7F4B + name: Matrix To List Conversion + category: Function + tokens: {casemul: "Mat\x87List("} + multi: [0x4D, 0x61, 0x74, 0xE691, 0x4C, 0x69, 0x73, 0x74, 0x28] +- + code: 0x7F4C + name: List Sum + category: Statement + multi: [0x53, 0x75, 0x6D, 0x20] +- + code: 0x7F4D + name: List Product + category: Statement + multi: [0x50, 0x72, 0x6F, 0x64, 0x20] +- + code: 0x7F4E + name: List Percentage + category: Statement + multi: [0x50, 0x65, 0x72, 0x63, 0x65, 0x6E, 0x74, 0x20] +- + code: 0x7F4F + name: Cumulative List + category: Statement + multi: [0x43, 0x75, 0x6D, 0x6C, 0x20] +- + code: 0x7F50 + name: Imaginary Number + unicode: [0x2148] + tokens: {cat: '\{i}', ctf: ['\i', '\j'], casemul: '\xb8'} +- + code: 0x7F51 + name: List + category: Object + args: [id] + multi: [0x4C, 0x69, 0x73, 0x74, 0x20] +- + code: 0x7F52 + name: Delta List + tokens: {cat: "\\DeltaList "} + multi: [0xE543, 0x4C, 0x69, 0x73, 0x74, 0x20] +- + code: 0x7F53 + name: Infinity + ascii: "\\inf" +- + code: 0x7F54 + name: Less-Than (2nd) +- + code: 0x7F55 + name: Less-Than (3rd) + multi: [0x7F54] +- + code: 0x7F55 + name: Matrix Row Echelon Form + category: Statement + set: CASIOWIN_1.05 + multi: [0x52, 0x65, 0x66, 0x20] +- + code: 0x7F56 + name: Matrix Row Reduced Echelon Form + category: Statement + set: CASIOWIN_1.05 + multi: [0x52, 0x72, 0x65, 0x66, 0x20] +- + code: 0x7F57 + name: Arrow to the right (2) + set: CASIOWIN_2.00 + multi: [0xE69E] +- + code: 0x7F58 + name: ElemSize( + set: C.Basic + multi: [0x45, 0x6C, 0x65, 0x6D, 0x53, 0x69, 0x7A, 0x65, 0x28] +- + code: 0x7F59 + name: ColSize( + set: C.Basic + multi: [0x43, 0x6F, 0x6C, 0x53, 0x69, 0x7A, 0x65, 0x28] +- + code: 0x7F5A + name: RowSize( + set: C.Basic + multi: [0x52, 0x6F, 0x77, 0x53, 0x69, 0x7A, 0x65, 0x28] + +# TODO +- + code: 0x7F5F + name: Ticks + set: C.Basic + multi: [0x54, 0x69, 0x63, 0x6B, 0x73] +- + code: 0x7F60 + name: Simulation Equation Coefficients + multi: [0x53, 0x69, 0x6D, 0x20, 0x43, 0x6F, 0x65, 0x66] +- + code: 0x7F61 + name: Polynomial Equation Coefficients + multi: [0x50, 0x6C, 0x79, 0x20, 0x43, 0x6F, 0x65, 0x66] +- + code: 0x7F62 + name: Simulation Equation Solutions + multi: [0x53, 0x69, 0x6D, 0x20, 0x52, 0x65, 0x73, 0x75, 0x6C, 0x74] +- + code: 0x7F63 + name: Polynomial Equation Solutions + multi: [0x50, 0x6C, 0x79, 0x20, 0x52, 0x65, 0x73, 0x75, 0x6C, 0x74] +- + code: 0x7F64 + name: TVM Payment Periods + tokens: {cat: '\{n}'} + multi: [0x6E] +- + code: 0x7F65 + name: TMV Interest Rate + tokens: {cat: '\I%'} + multi: [0x49, 0x25] +- + code: 0x7F66 + name: TVM Principal + tokens: {cat: '\PV'} + multi: [0x50, 0x56] +- + code: 0x7F67 + name: TVM Payment Amount + tokens: {cat: \PMT'} + multi: [0x50, 0x4D, 0x54] +- + code: 0x7F68 + name: TVM Account Balance + tokens: {cat: '\FV'} + multi: [0x46, 0x56] + +# TODO +- + code: 0x7F6A + name: List 1 + category: Object + multi: [0x4C, 0x69, 0x73, 0x74, 0x31] +- + code: 0x7F6B + name: List 2 + category: Object + multi: [0x4C, 0x69, 0x73, 0x74, 0x32] +- + code: 0x7F6C + name: List 3 + category: Object + multi: [0x4C, 0x69, 0x73, 0x74, 0x33] +- + code: 0x7F6D + name: List 4 + category: Object + multi: [0x4C, 0x69, 0x73, 0x74, 0x34] +- + code: 0x7F6E + name: List 5 + category: Object + multi: [0x4C, 0x69, 0x73, 0x74, 0x35] +- + code: 0x7F6F + name: List 6 + category: Object + multi: [0x4C, 0x69, 0x73, 0x74, 0x36] + +# TODO +- + code: 0x7F76 + name: Statistical Data First Quartile + multi: [0x51, 0xE5D1] +- + code: 0x7F77 + name: Statistical Data Third Quartile + multi: [0x51, 0xE5D3] +- + code: 0x7F78 + name: Summary Point X-Coordinate 1 + multi: [0x78, 0xE5D1] +- + code: 0x7F79 + name: Summary Point Y-Coordinate 1 + multi: [0x79, 0xE5D1] +- + code: 0x7F7A + name: Summary Point X-Coordinate 2 + multi: [0x78, 0xE5D2] +- + code: 0x7F7B + name: Summary Point Y-Coordinate 2 + multi: [0x79, 0xE5D2] +- + code: 0x7F7C + name: Summary Point X-Coordinate 3 + multi: [0x78, 0xE5D3] +- + code: 0x7F7D + name: Summary Point Y-Coordinate 3 + multi: [0x79, 0xE5D3] + +# TODO +- + code: 0x7F84 + name: Vector + category: Object + multi: [0x56, 0x63, 0x74, 0x20] + set: CASIOWIN_2.04 +- + code: 0x7F85 + name: General Logarithm + category: Function + multi: [0x6C, 0x6F, 0x67, 0x61, 0x62, 0x28] +- + code: 0x7F86 + name: Round Value + category: Function + multi: [0x52, 0x6E, 0x64, 0x46, 0x69, 0x78, 0x28] +- + code: 0x7F87 + name: Random Integer Between Bounds + category: Function + set: CASIOWIN_2.00 + multi: [0x52, 0x61, 0x6E, 0x49, 0x6E, 0x74, 0x23, 0x28] +- + code: 0x7F88 + name: Random List Of Binary Digits + category: Function + set: CASIOWIN_2.00 + multi: [0x52, 0x61, 0x6E, 0x4C, 0x69, 0x73, 0x74, 0x23, 0x28] +- + code: 0x7F89 + name: Binomial Distribution Random Numbers + category: Function + set: CASIOWIN_2.00 + multi: [0x52, 0x61, 0x6E, 0x42, 0x69, 0x6E, 0x23, 0x28] +- + code: 0x7F8A + name: Normal Distribution 1O-Digit Random Number + category: Function + set: CASIOWIN_2.00 + multi: [0x52, 0x61, 0x6E, 0x4E, 0x6F, 0x72, 0x6D, 0x23, 0x28] + +# TODO +- + code: 0x7F8C + name: PlotPhase Function Setting Sigma an + set: CASIOWIN_2.00 + multi: [0xE551, 0x61, 0xE5DE] +- + code: 0x7F8D + name: PlotPhase Function Setting Sigma bn + set: CASIOWIN_2.00 + multi: [0xE551, 0x62, 0xE5DE] +- + code: 0x7F8E + name: PlotPhase Function Setting Sigma cn + set: CASIOWIN_2.00 + multi: [0xE551, 0x63, 0xE5DE] +- + code: 0x7F8F + name: Getkey + category: Statement + multi: [0x47, 0x65, 0x74, 0x6B, 0x65, 0x79] +- + code: 0x7F90 + name: F Result + multi: [0x46, 0x20, 0x52, 0x65, 0x73, 0x75, 0x6C, 0x74] +- + code: 0x7F91 + name: F Start + multi: [0x46, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74] +- + code: 0x7F92 + name: F End + multi: [0x46, 0x20, 0x45, 0x6E, 0x64] +- + code: 0x7F93 + name: F pitch + multi: [0x46, 0x20, 0x70, 0x69, 0x74, 0x63, 0x68] +- + code: 0x7F94 + name: R Result + multi: [0x52, 0x20, 0x52, 0x65, 0x73, 0x75, 0x6C, 0x74] +- + code: 0x7F95 + name: R Start + multi: [0x52, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74] +- + code: 0x7F96 + name: R End + multi: [0x52, 0x20, 0x45, 0x6E, 0x64] +- + code: 0x7F97 + name: H Start + multi: [0x48, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74] +- + code: 0x7F98 + name: H pitch + multi: [0x48, 0x20, 0x70, 0x69, 0x74, 0x63, 0x68] +#- +# code: 0x7F99 +# tokens: {cat: '\Min(', ctf: 'Min(', casemul: 'Min('} +- + code: 0x7F9C + name: Fraction Simplification + category: Operator + set: CASIOWIN_2.00 + multi: [0xE69E, 0x53, 0x69, 0x6D, 0x70, 0x20] + +# TODO +- + code: 0x7FA0 + name: Recursion Formula Variable an + multi: [0x61, 0xE5DE] +- + code: 0x7FA1 + name: Recursion Formula Variable an+1 + multi: [0x61, 0xE5DE, 0xE5DB, 0xE5CE] +- + code: 0x7FA2 + name: Recursion Formula Variable an+2 + multi: [0x61, 0xE5DE, 0xE5DB, 0xE5CF] +- + code: 0x7FA3 + name: Recursion Formula Variable n + multi: [0xE5DE] +- + code: 0x7FA4 + name: Recursion Formula Variable a0 + multi: [0x61, 0xE5CD] +- + code: 0x7FA5 + name: Recursion Formula Variable a1 + multi: [0x61, 0xE5CE] +- + code: 0x7FA6 + name: Recursion Formula Variable a2 + multi: [0x61, 0xE5CF] +- + code: 0x7FA7 + name: Recursion Formula Variable bn + multi: [0x62, 0xE5DE] +- + code: 0x7FA8 + name: Recursion Formula Variable bn+1 + multi: [0x62, 0xE5DE, 0xE5DB, 0xE5CE] +- + code: 0x7FA9 + name: Recursion Formula Variable bn+2 + multi: [0x62, 0xE5DE, 0xE5DB, 0xE5CF] +- + code: 0x7FAA + name: Recursion Formula Variable b0 + multi: [0x62, 0xE5CD] +- + code: 0x7FAB + name: Recursion Formula Variable b1 + multi: [0x62, 0xE5CE] +- + code: 0x7FAC + name: Recursion Formula Variable b2 + multi: [0x62, 0xE5CF] +- + code: 0x7FAD + name: Recursion Formula Origin Setting anStart + multi: [0x61, 0xE5DE, 0x53, 0x74, 0x61, 0x72, 0x74] +- + code: 0x7FAE + name: Recursion Formula Origin Setting bnStart + multi: [0x62, 0xE5DE, 0x53, 0x74, 0x61, 0x72, 0x74] + +# TODO +- + code: 0x7FB0 + name: Logical And + category: Statement + multi: [0x20, 0x41, 0x6E, 0x64, 0x20] +- + code: 0x7FB1 + name: Logical Or + category: Statement + multi: [0x20, 0x4F, 0x72, 0x20] + +# TODO +- + code: 0x7FB3 + name: Logical Not + category: Statement + multi: [0x4E, 0x6F, 0x74, 0x20] +- + code: 0x7FB4 + name: Logical Exclusive Or + category: Statement + set: CASIOWIN_2.00 + multi: [0x20, 0x58, 0x6F, 0x72, 0x20] +- + code: 0x7FB5 + name: PlotPhase Function Setting Sigma an+1 + set: CASIOWIN_2.00 + multi: [0xE551, 0x61, 0xE5DE, 0xE5DB, 0xE5CE] +- + code: 0x7FB6 + name: PlotPhase Function Setting Sigma bn+1 + set: CASIOWIN_2.00 + multi: [0xE551, 0x62, 0xE5DE, 0xE5DB, 0xE5CE] +- + code: 0x7FB7 + name: PlotPhase Function Setting Sigma cn+1 + set: CASIOWIN_2.00 + multi: [0xE551, 0x63, 0xE5DE, 0xE5DB, 0xE5CE] + +# TODO +- + code: 0x7FB9 + name: PlotPhase Function Setting Sigma an+2 + set: CASIOWIN_2.00 + multi: [0xE551, 0x61, 0xE5DE, 0xE5DB, 0xE5CF] +- + code: 0x7FBA + name: PlotPhase Function Setting Sigma bn+2 + set: CASIOWIN_2.00 + multi: [0xE551, 0x62, 0xE5DE, 0xE5DB, 0xE5CF] +- + code: 0x7FBB + name: PlotPhase Function Setting Sigma cn+2 + set: CASIOWIN_2.00 + multi: [0xE551, 0x63, 0xE5DE, 0xE5DB, 0xE5CF] +- + code: 0x7FBC + name: Integer Division Quotient + category: Statement + set: CASIOWIN_2.00 + multi: [0x20, 0x49, 0x6E, 0x74, 0xB9, 0x20] +- + code: 0x7FBD + name: Integer Division Remainder + category: Statement + set: CASIOWIN_2.00 + multi: [0x20, 0x52, 0x6D, 0x64, 0x72, 0x20] +- + code: 0x7FBE + name: Statistical Data Factor A F Value + set: CASIOWIN_2.00 + multi: [0x46, 0x61] + +# TODO +- + code: 0x7FC0 + name: Statistical Data Size Of Sample 1 + multi: [0x6E, 0x31] +- + code: 0x7FC1 + name: Statistical Data Size of Sample 2 + multi: [0x6E, 0x32] +- + code: 0x7FC2 + name: Statistical Data Mean Of Sample 1 + multi: [0xC2, 0x31] +- + code: 0x7FC3 + name: Statistical Data Mean Of Sample 2 + multi: [0xC2, 0x32] +- + code: 0x7FC4 + name: f1 rho n_-1 + multi: [0x78, 0x31, 0xE651, 0x6E, 0xE5DA] +- + code: 0x7FC4 + name: Statistical Data Standard Deviation Of Sample 1 + set: CASIOWIN_2.00 + multi: [0x73, 0x78, 0x31] +- + code: 0x7FC5 + name: f2 rho n_-1 + multi: [0x78, 0x32, 0xE651, 0x6E, 0xE5DA] +- + code: 0x7FC5 + name: Statistical Data Standard Deviation Of Sample 2 + set: CASIOWIN_2.00 + multi: [0x73, 0x78, 0x32] +- + code: 0x7FC6 + name: fp rho n_-1 + multi: [0x78, 0x70, 0xE651, 0x6E, 0xE5DA] +- + code: 0x7FC6 + name: Statistical Data Standard Deviation Of Sample p + set: CASIOWIN_2.00 + multi: [0x73, 0x70] +- + code: 0x7FC7 + name: Statistical Data Estimated Sample Proportion + unicode: [0x70, 0x302] + id: p_circumflex + ascii: (p-circumflex) +- + code: 0x7FC8 + name: Statistical Data Estimated Sample Proportion 1 + multi: [0x7FC7, 0x31] +- + code: 0x7FC9 + name: Statistical Data Estimated Sample Proportion 2 + multi: [0x7FC7, 0x32] +- + code: 0x7FCA + name: Statistical Data Confidence Interval Left Limit + multi: [0x4C, 0x65, 0x66, 0x74] +- + code: 0x7FCB + name: Statistical Data Confidence Interval Right Limit + multi: [0x52, 0x69, 0x67, 0x68, 0x74] +- + code: 0x7FCC + name: TVM Number Of Installment Periods Per Year + multi: [0x50, 0x2F, 0x59] +- + code: 0x7FCD + name: TVM Number of Compounding Periods Per Year + multi: [0x43, 0x2F, 0x59] +- + code: 0x7FCE + name: Statistical Data Factor B F value + set: CASIOWIN_2.00 + multi: [0x46, 0x62] + +# TODO +- + code: 0x7FD0 + name: Statistical Data F Value + multi: [0x46] +- + code: 0x7FD1 + name: Statistical Data z Score + multi: [0x7A] +- + code: 0x7FD2 + name: Statistical Data p Value + multi: [0x70] +- + code: 0x7FD3 + name: Statistical Data t Score + multi: [0x74] +- + code: 0x7FD4 + name: s + multi: [0x73] +- + code: 0x7FD4 + name: Statistical Data Standard Error + set: CASIOWIN_2.00 + multi: [0x73, 0x65] +- + code: 0x7FD5 + name: x² + multi: [0xE656, 0xE5C2] +- + code: 0x7FD6 + name: Statistical Data Coefficient Of Determination + multi: [0x72, 0xE5C2] +- + code: 0x7FD7 + name: Statistical Data Factor Degrees of Freedom + multi: [0x46, 0x64, 0x66] +- + code: 0x7FD7 + name: Statistical Data Factor A Degrees Of Freedom + set: CASIOWIN_2.00 + multi: [0x41, 0x64, 0x66] +- + code: 0x7FD8 + name: Statistical Data Factor E Degrees Of Freedom + multi: [0x45, 0x64, 0x66] +- + code: 0x7FD9 + name: Statistical Data Degrees Of Freedom + multi: [0x64, 0x66] +- + code: 0x7FDA + name: Statistical Data Sum Of Squares + multi: [0x53, 0x53] +- + code: 0x7FDA + name: Statistical Data Factor A Sum Of Squares + set: CASIOWIN_2.00 + multi: [0x53, 0x53, 0x61] +- + code: 0x7FDB + name: Statistical Data Mean Of Squares + multi: [0x4D, 0x53] +- + code: 0x7FDB + name: Statistical Data Factor A Mean Of Squares + set: CASIOWIN_2.00 + multi: [0x4D, 0x53, 0x61] +- + code: 0x7FDC + name: Statistical Data Error Sum Of Squares + multi: [0x53, 0x53, 0x65] +- + code: 0x7FDD + name: Statistical Data Error Mean Of Squares + multi: [0x4D, 0x53, 0x65] +- + code: 0x7FDE + name: Statistical Data Factor AB F Value + set: CASIOWIN_2.00 + multi: [0x46, 0x61, 0x62] + +# TODO +- + code: 0x7FE0 + name: Statistical Data Factor B Degrees Of Freedom + set: CASIOWIN_2.00 + multi: [0x42, 0x64, 0x66] +- + code: 0x7FE1 + name: Statistical Data Factor AB Degrees Of Freedom + set: CASIOWIN_2.00 + multi: [0x41, 0x42, 0x64, 0x66] +- + code: 0x7FE2 + name: Statistical Data Factor A p-Value + set: CASIOWIN_2.00 + multi: [0x70, 0x61] +- + code: 0x7FE3 + name: Statistical Data Factor B p-Value + set: CASIOWIN_2.00 + multi: [0x70, 0x62] +- + code: 0x7FE4 + name: Statistical Data Factor AB p-Value + set: CASIOWIN_2.00 + multi: [0x70, 0x61, 0x62] + +# TODO +- + code: 0x7FE9 + name: Spreadsheet Cell Sum + category: Function + args: [initial cell, end cell] + return: The sum of the values in the [initial cell; end cell] range. + multi: [0x43, 0x65, 0x6C, 0x6C, 0x53, 0x75, 0x6D, 0x28] +- + code: 0x7FEA + name: Spreadsheet Cell Product + category: Function + args: [initial cell, end cell] + return: The product of the values in the [initial cell; end cell] range. + multi: [0x43, 0x65, 0x6C, 0x6C, 0x50, 0x72, 0x6F, 0x64, 0x28] +- + code: 0x7FEB + name: Spreadsheet Cell Minimum + category: Function + args: [initial cell, end cell] + return: The minimum value in the [initial cell; end cell] range. + multi: [0x43, 0x65, 0x6C, 0x6C, 0x4D, 0x69, 0x6E, 0x28] +- + code: 0x7FEC + name: Spreadsheet Cell Maximum + category: Function + args: [initial cell, end cell] + return: The maximum value in the [initial cell; end cell] range. + multi: [0x43, 0x65, 0x6C, 0x6C, 0x4D, 0x61, 0x78, 0x28] +- + code: 0x7FED + name: Spreadsheet Cell Average + category: Function + args: [initial cell, end cell] + return: The average value in the [initial cell; end cell] range. + multi: [0x43, 0x65, 0x6C, 0x6C, 0x4D, 0x65, 0x61, 0x6E, 0x28] +- + code: 0x7FEE + name: Spreadsheet Cell Median + category: Function + args: [initial cell, end cell] + return: The median value in the [initial cell; end cell] range. + multi: [0x43, 0x65, 0x6C, 0x6C, 0x4D, 0x65, 0x64, 0x69, 0x61, 0x6E, 0x28] +- + code: 0x7FEF + name: Spreadsheet Cell Conditional + category: Function + args: [equation_inequation, expr1, expr2] + return: 1 if the (in)equation is true, 2 otherwise. + multi: [0x43, 0x65, 0x6C, 0x6C, 0x49, 0x66, 0x28] +- + code: 0x7FF0 + name: Rectangular Coordinates Graph Y Function Recall + multi: [0xE5B4] +- + code: 0x7FF1 + name: Polar Coordinates Graph r Function Recall + multi: [0xE5B2] +- + code: 0x7FF2 + name: Parametric Coordinates Graph X Function Recall + multi: [0xE5B3, 0x74] +- + code: 0x7FF3 + name: Parametric Coordinates Graph Y Function Recall + multi: [0xE5B4, 0x74] +- + code: 0x7FF4 + name: Rectangular Coordinates Graph X Function Recall + multi: [0xE5B3] +- + code: 0x7FF5 + name: IsExist( + set: C.Basic + multi: [0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x28] + +# TODO +- + code: 0x7FFB + name: Statistical Data Factor B Sum Of Squares + set: CASIOWIN_2.00 + multi: [0x53, 0x53, 0x62] +- + code: 0x7FFC + name: Statistical Data Factor AB Sum Of Squares + set: CASIOWIN_2.00 + multi: [0x53, 0x53, 0x61, 0x62] +- + code: 0x7FFD + name: Statistical Data Factor B Mean Of Squares + set: CASIOWIN_2.00 + multi: [0x4D, 0x53, 0x62] +- + code: 0x7FFE + name: Statistical Data Factor AB Mean Of Squares + set: CASIOWIN_2.00 + multi: [0x4D, 0x53, 0x61, 0x62] + +# TODO: finish here +#******************************************************************************# +# 0xF7 characters # +#******************************************************************************# +- + code: 0xF700 + name: If + category: Statement + args: [expression] + action: Jumps to the corresponding Then if the expression is evaluated true; + otherwise, jumps to the corresponding Else if it exists, or to the IfEnd. + multi: [0x49, 0x66, 0x20] +- + code: 0xF701 + name: Then + category: Statement + args: [expression] + action: If the last executed instruction was an If, evaluate the expression; + otherwise, jump to the corresponding IfEnd. The official CASIO Basic + interpreter doesn't accept Else statements before Then statements. + multi: [0x54, 0x68, 0x65, 0x6E, 0x20] +- + code: 0xF702 + name: Else + category: Statement + args: [expression] + action: If the last executed instruction was an If, evaluate the expression; + otherwise, jump to the corresponding IfEnd. + multi: [0x45, 0x6C, 0x73, 0x65, 0x20] +- + code: 0xF703 + name: IfEnd + category: Statement + args: [] + action: Does nothing; the most interesting thing about this instruction is + its offset. + multi: [0x49, 0x66, 0x45, 0x6E, 0x64] +- + code: 0xF704 + name: For + category: Statement + args: ["to:0xF705"] + action: If the last instruction wasn't a Next, call the To to initialize; + otherwise, iterate. If the final value is achieved or exceeded, jump to the + instruction right after the corresponding Next; otherwise, assign the + counter to the counter variable, and jump to the next instruction. + multi: [0x46, 0x6F, 0x72, 0x20] +- + code: 0xF705 + name: To + category: Operator + args: ["assign:0x0E"] + optn: ["step:0xF706"] + action: Fill the For's initial value, counter variable and step value. + multi: [0x20, 0x54, 0x6F, 0x20] +- + code: 0xF706 + name: Step + category: Object + args: ["step"] + multi: [0x20, 0x53, 0x74, 0x65, 0x70, 0x20] +- + code: 0xF707 + name: Next + category: Statement + args: [] + action: Jump to the corresponding For. + multi: [0x4E, 0x65, 0x78, 0x74] +- + code: 0xF708 + name: While + category: Statement + args: [expression] + action: If the expression is true, do nothing; otherwise, jump to the + instruction right after the corresponding WhileEnd. + multi: [0x57, 0x68, 0x69, 0x6C, 0x65, 0x20] +- + code: 0xF709 + name: WhileEnd + category: Statement + args: [] + action: Jump to the corresponding While. + multi: [0x57, 0x68, 0x69, 0x6C, 0x65, 0x45, 0x6E, 0x64] +- + code: 0xF70A + name: Do + category: Statement + args: [] + action: Jump to the corresponding LpWhile. + multi: [0x44, 0x6F] +- + code: 0xF70B + name: LpWhile + category: Statement + args: [expression] + action: If the expression is true, jump to the instruction right after the + corresponding Do; otherwise, do nothing. + multi: [0x4C, 0x70, 0x57, 0x68, 0x69, 0x6C, 0x65, 0x20] +- + code: 0xF70C + name: Return + category: Statement + multi: [0x52, 0x65, 0x74, 0x75, 0x72, 0x6E] +- + code: 0xF70D + name: Break + category: Statement + multi: [0x42, 0x72, 0x65, 0x61, 0x6B] +- + code: 0xF70E + name: Stop + category: Statement + multi: [0x53, 0x74, 0x6F, 0x70] +- + code: 0xF70F + name: ElseIf + set: C.Basic + multi: [0x45, 0x6C, 0x73, 0x65, 0x49, 0x66, 0x20] +- + code: 0xF710 + name: Locate + category: Statement + multi: [0x4C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x20] +- + code: 0xF711 + name: Send( + category: Function + multi: [0x53, 0x65, 0x6E, 0x64, 0x28] +- + code: 0xF712 + name: Receive( + category: Function + multi: [0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x28] +- + code: 0xF713 + name: OpenComport38k + category: Statement + multi: [0x4F, 0x70, 0x65, 0x6E, 0x43, 0x6F, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x33, + 0x38, 0x6B] +- + code: 0xF714 + name: CloseComport38k + category: Statement + multi: [0x43, 0x6C, 0x6F, 0x73, 0x65, 0x43, 0x6F, 0x6D, 0x70, 0x6F, 0x72, 0x74, + 0x33, 0x38, 0x6B] +- + code: 0xF715 + name: Send38k + category: Statement + multi: [0x53, 0x65, 0x6E, 0x64, 0x33, 0x38, 0x6B, 0x20] +- + code: 0xF716 + name: Receive38k + category: Statement + multi: [0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x33, 0x38, 0x6B, 0x20] +- + code: 0xF717 + name: ACBreak + set: C.Basic + multi: [0x41, 0x43, 0x42, 0x72, 0x65, 0x61, 0x6B] +- + code: 0xF718 + name: ClrText + category: Statement + multi: [0x43, 0x6C, 0x72, 0x54, 0x65, 0x78, 0x74] +- + code: 0xF719 + name: ClrGraph + category: Statement + multi: [0x43, 0x6C, 0x72, 0x47, 0x72, 0x61, 0x70, 0x68] +- + code: 0xF71A + name: ClrList + category: Statement + args: List + action: Delete the list's content. + multi: [0x43, 0x6C, 0x72, 0x4C, 0x69, 0x73, 0x74, 0x20] +- + code: 0xF71B + name: LinearReg(a+bx) + set: CASIOWIN_2.00 + multi: [0x4C, 0x69, 0x6E, 0x65, 0x61, 0x72, 0x52, 0x65, 0x67, 0x28, 0x61, 0x2B, + 0x62, 0x78, 0x29, 0x20] +- + code: 0xF71C + name: S-L-Normal + multi: [0x53, 0x2D, 0x4C, 0x2D, 0x4E, 0x6F, 0x72, 0x6D, 0x61, 0x6C] +- + code: 0xF71D + name: S-L-Thick + multi: [0x53, 0x2D, 0x4C, 0x2D, 0x54, 0x68, 0x69, 0x63, 0x6B] +- + code: 0xF71E + name: S-L-Broken + multi: [0x53, 0x2D, 0x4C, 0x2D, 0x42, 0x72, 0x6F, 0x6B, 0x65, 0x6E] +- + code: 0xF71F + name: S-L-Dot + multi: [0x53, 0x2D, 0x4C, 0x2D, 0x44, 0x6F, 0x74] +- + code: 0xF720 + name: DrawGraph + category: Statement + multi: [0x44, 0x72, 0x61, 0x77, 0x47, 0x72, 0x61, 0x70, 0x68] +- + code: 0xF721 + name: PlotPhase + set: CASIOWIN_2.00 + multi: [0x50, 0x6C, 0x6F, 0x74, 0x50, 0x68, 0x61, 0x73, 0x65, 0x20] +- + code: 0xF722 + name: DrawDyna + category: Statement + multi: [0x44, 0x72, 0x61, 0x77, 0x44, 0x79, 0x6E, 0x61] +- + code: 0xF723 + name: DrawStat + category: Statement + multi: [0x44, 0x72, 0x61, 0x77, 0x53, 0x74, 0x61, 0x74] +- + code: 0xF724 + name: DrawFTG-Con + category: Statement + multi: [0x44, 0x72, 0x61, 0x77, 0x46, 0x54, 0x47, 0x2D, 0x43, 0x6F, 0x6E] +- + code: 0xF725 + name: DrawFTG-Plt + category: Statement + multi: [0x44, 0x72, 0x61, 0x77, 0x46, 0x54, 0x47, 0x2D, 0x50, 0x6C, 0x74] +- + code: 0xF726 + name: DrawR-Con + category: Statement + multi: [0x44, 0x72, 0x61, 0x77, 0x52, 0x2D, 0x43, 0x6F, 0x6E] +- + code: 0xF727 + name: DrawR-Plt + category: Statement + multi: [0x44, 0x72, 0x61, 0x77, 0x52, 0x2D, 0x50, 0x6C, 0x74] +- + code: 0xF728 + name: DrawRSigma-Con + category: Statement + multi: [0x44, 0x72, 0x61, 0x77, 0x52, 0xE551, 0x2D, 0x43, 0x6F, 0x6E] +- + code: 0xF729 + name: DrawRSigma-Plt + category: Statement + multi: [0x44, 0x72, 0x61, 0x77, 0x52, 0xE551, 0x2D, 0x50, 0x6C, 0x74] +- + code: 0xF72A + name: DrawWeb + category: Statement + multi: [0x44, 0x72, 0x61, 0x77, 0x57, 0x65, 0x62, 0x20] +- + code: 0xF72B + name: NormalG + category: Statement + multi: [0x4E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x47, 0x20] +- + code: 0xF72C + name: ThickG + category: Statement + multi: [0x54, 0x68, 0x69, 0x63, 0x6B, 0x47, 0x20] +- + code: 0xF72D + name: BrokenThickG + category: Statement + multi: [0x42, 0x72, 0x6F, 0x6B, 0x65, 0x6E, 0x54, 0x68, 0x69, 0x63, 0x6B, + 0x47, 0x20] +- + code: 0xF72E + name: DispF-Tbl + category: Statement + multi: [0x44, 0x69, 0x73, 0x70, 0x46, 0x2D, 0x54, 0x62, 0x6C] +- + code: 0xF72F + name: DispR-Tbl + category: Statement + multi: [0x44, 0x69, 0x73, 0x70, 0x52, 0x2D, 0x54, 0x62, 0x6C] +- + code: 0xF730 + name: SimplifyAuto + set: CASIOWIN_2.00 + multi: [0x53, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x66, 0x79, 0x41, 0x75, 0x74, 0x6F] +- + code: 0xF731 + name: SimplifyMan + set: CASIOWIN_2.00 + multi: [0x53, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x66, 0x79, 0x4D, 0x61, 0x6E] +- + code: 0xF732 + name: NPPlot + multi: [0x4E, 0x50, 0x50, 0x6C, 0x6F, 0x74] +- + code: 0xF733 + name: Sinusoidal + multi: [0x53, 0x69, 0x6E, 0x75, 0x73, 0x6F, 0x69, 0x64, 0x61, 0x6C] +- + code: 0xF734 + name: SinReg + multi: [0x53, 0x69, 0x6E, 0x52, 0x65, 0x67, 0x20] +- + code: 0xF735 + name: Logistic + multi: [0x4C, 0x6F, 0x67, 0x69, 0x73, 0x74, 0x69, 0x63] +- + code: 0xF736 + name: LogisticReg + multi: [0x4C, 0x6F, 0x67, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x65, 0x67, 0x20] + +# TODO +- + code: 0xF73A + name: Pie chart + set: CASIOWIN_2.00 + multi: [0x50, 0x69, 0x65] + +# TODO +- + code: 0xF73C + name: Bar chart + set: CASIOWIN_2.00 + multi: [0x42, 0x61, 0x72] + +# TODO +- + code: 0xF73F + name: DotG + multi: [0x44, 0x6F, 0x74, 0x47, 0x20] +- + code: 0xF73F + name: DotGet( + set: C.Basic + multi: [0x44, 0x6F, 0x74, 0x47, 0x65, 0x74, 0x28] +- # 1-Variable + code: 0xF740 + name: 1-Variable Statistics + multi: [0x31, 0x2D, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20] +- + code: 0xF741 + name: 2-Variable Statistics + multi: [0x32, 0x2D, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20] +- + code: 0xF742 + name: Linear Regression ax + multi: [0x4C, 0x69, 0x6E, 0x65, 0x61, 0x72, 0x52, 0x65, 0x67, 0x20] +- + code: 0xF742 + name: Linear Regression ax+b + set: CASIOWIN_2.00 + multi: [0x4C, 0x69, 0x6E, 0x65, 0x61, 0x72, 0x52, 0x65, 0x67, 0x28, 0x61, 0x78, + 0x2B, 0x62, 0x29, 0x20] +- + code: 0xF743 + name: Med-MedLine + multi: [0x4D, 0x65, 0x64, 0x2D, 0x4D, 0x65, 0x64, 0x4C, 0x69, 0x6E, 0x65, 0x20] +- + code: 0xF744 + name: QuadReg + multi: [0x51, 0x75, 0x61, 0x64, 0x52, 0x65, 0x67, 0x20] +- + code: 0xF745 + name: CubicReg + multi: [0x43, 0x75, 0x62, 0x69, 0x63, 0x52, 0x65, 0x67, 0x20] +- + code: 0xF746 + name: QuartReg + multi: [0x51, 0x75, 0x61, 0x72, 0x74, 0x52, 0x65, 0x67, 0x20] +- + code: 0xF747 + name: LogReg + multi: [0x4C, 0x6F, 0x67, 0x52, 0x65, 0x67, 0x20] +- + code: 0xF748 + name: ExpReg( + multi: [0x45, 0x78, 0x70, 0x52, 0x65, 0x67, 0x20] +- + code: 0xF748 + name: ExpReg(a.e^bx) + set: CASIOWIN_2.00 + multi: [0x45, 0x78, 0x70, 0x52, 0x65, 0x67, 0x28, 0x61, 0xE6AA, 0x65, 0x5E, + 0x62, 0x78, 0x29, 0x20] +- + code: 0xF749 + name: PowerReg + multi: [0x50, 0x6F, 0x77, 0x65, 0x72, 0x52, 0x65, 0x67, 0x20] +- + code: 0xF74A + name: Stat Graph 1 + multi: [0x53, 0x2D, 0x47, 0x70, 0x68, 0x31, 0x20] +- + code: 0xF74B + name: Stat Graph 2 + multi: [0x53, 0x2D, 0x47, 0x70, 0x68, 0x32, 0x20] +- + code: 0xF74C + name: Stat Graph 3 + multi: [0x53, 0x2D, 0x47, 0x70, 0x68, 0x33, 0x20] +- + code: 0xF74D + name: Square-shaped Points + multi: [0x53, 0x71, 0x75, 0x61, 0x72, 0x65] +- + code: 0xF74E + name: Cross-shaped Points + multi: [0x43, 0x72, 0x6F, 0x73, 0x73] +- + code: 0xF74F + name: Dot-shaped Points + multi: [0x44, 0x6F, 0x74] +- + code: 0xF74F + name: DotTrim( + set: C.Basic + multi: [0x44, 0x6F, 0x74, 0x54, 0x72, 0x69, 0x6D, 0x28] +- + code: 0xF750 + name: Scatter + multi: [0x53, 0x63, 0x61, 0x74, 0x74, 0x65, 0x72] +- + code: 0xF751 + name: xyLine + multi: [0x78, 0x79, 0x4C, 0x69, 0x6E, 0x65] +- + code: 0xF752 + name: Hist + multi: [0x48, 0x69, 0x73, 0x74] +- + code: 0xF753 + name: MedBox + multi: [0x4D, 0x65, 0x64, 0x42, 0x6F, 0x78] +#- +# code: 0xF754 +# name: MeanBox +# token: {cat: '\MeanBox', ctf: 'MeanBox'} +- + code: 0xF755 + name: N-Dist + multi: [0x4E, 0x2D, 0x44, 0x69, 0x73, 0x74] +- + code: 0xF756 + name: Broken + multi: [0x42, 0x72, 0x6F, 0x6B, 0x65, 0x6E] +- + code: 0xF757 + name: Linear + multi: [0x4C, 0x69, 0x6E, 0x65, 0x61, 0x72] +- + code: 0xF758 + name: Med-Med + multi: [0x4D, 0x65, 0x64, 0x2D, 0x4D, 0x65, 0x64] +- + code: 0xF759 + name: Quad + multi: [0x51, 0x75, 0x61, 0x64] +- + code: 0xF75A + name: Cubic + multi: [0x43, 0x75, 0x62, 0x69, 0x63] +- + code: 0xF75B + name: Quart + multi: [0x51, 0x75, 0x61, 0x72, 0x74] +- + code: 0xF75C + name: Log + multi: [0x4C, 0x6F, 0x67] +- + code: 0xF75D + name: Exp( + multi: [0x45, 0x78, 0x70] +- + code: 0xF75D + name: Exp(a.e^bx) + set: CASIOWIN_2.00 + multi: [0x45, 0x78, 0x70, 0x28, 0x61, 0xE6AA, 0x65, 0x5E, 0x62, 0x78, 0x29] +- + code: 0xF75E + name: Power + multi: [0x50, 0x6F, 0x77, 0x65, 0x72] +- + code: 0xF75F + name: ExpReg(a.b^x) + set: CASIOWIN_2.00 + multi: [0x45, 0x78, 0x70, 0x52, 0x65, 0x67, 0x28, 0x61, 0xE6AA, 0x62, 0x5E, + 0x78, 0x29, 0x20] +- + code: 0xF760 + name: S-WindAuto + multi: [0x53, 0x2D, 0x57, 0x69, 0x6E, 0x64, 0x41, 0x75, 0x74, 0x6F] +- + code: 0xF761 + name: S-WindMan + multi: [0x53, 0x2D, 0x57, 0x69, 0x6E, 0x64, 0x4D, 0x61, 0x6E] +- + code: 0xF762 + name: Graph X= + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x58, 0x3D] +- + code: 0xF763 + name: Y=Type + multi: [0x59, 0x3D, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF764 + name: r=Type + multi: [0x72, 0x3D, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF765 + name: ParamType + multi: [0x50, 0x61, 0x72, 0x61, 0x6D, 0x54, 0x79, 0x70, 0x65] + +# TODO +- + code: 0xF767 + name: X=cType + multi: [0x58, 0x3D, 0x63, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF767 + name: X=Type + set: CASIOWIN_2.00 + multi: [0x58, 0x3D, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF768 + name: X>Type + set: CASIOWIN_2.00 + multi: [0x58, 0x3E, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF769 + name: XType + multi: [0x59, 0x3E, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF76B + name: Y=Type + multi: [0x59, 0x12, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF76D + name: Y<=Type + multi: [0x59, 0x10, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF76E + name: X>=Type + set: CASIOWIN_2.00 + multi: [0x58, 0x12, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF76F + name: X<=Type + set: CASIOWIN_2.00 + multi: [0x58, 0x10, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF770 + name: G-Connect + multi: [0x47, 0x2D, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74] +- + code: 0xF771 + name: G-Plot + multi: [0x47, 0x2D, 0x50, 0x6C, 0x6F, 0x74] + +# TODO +- + code: 0xF776 + name: Resid-None + multi: [0x52, 0x65, 0x73, 0x69, 0x64, 0x2D, 0x4E, 0x6F, 0x6E, 0x65] +- + code: 0xF777 + name: Resid-List + multi: [0x52, 0x65, 0x73, 0x69, 0x64, 0x2D, 0x4C, 0x69, 0x73, 0x74, 0x20] +- + code: 0xF778 + name: BG-None + multi: [0x42, 0x47, 0x2D, 0x4E, 0x6F, 0x6E, 0x65] +- + code: 0xF779 + name: BG-Pict + multi: [0x42, 0x47, 0x2D, 0x50, 0x69, 0x63, 0x74, 0x20] +- + code: 0xF77A + name: GridOff + multi: [0x47, 0x72, 0x69, 0x64, 0x4F, 0x66, 0x66] + +# TODO +- + code: 0xF77D + name: GridOn + multi: [0x47, 0x72, 0x69, 0x64, 0x4F, 0x6E] +- + code: 0xF77E + name: Exp(a.b^x) + set: CASIOWIN_2.00 + multi: [0x45, 0x78, 0x70, 0x28, 0x61, 0xE6AA, 0x62, 0x5E, 0x78, 0x29] + +# TODO +- + code: 0xF780 + name: D Var + multi: [0x44, 0x20, 0x56, 0x61, 0x72, 0x20] + +# TODO +- + code: 0xF787 + name: Q1Q3TypeStd + set: CASIOWIN_2.00 + multi: [0x51, 0x31, 0x51, 0x33, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x64] +- + code: 0xF788 + name: VarRange + multi: [0x56, 0x61, 0x72, 0x52, 0x61, 0x6E, 0x67, 0x65] +- + code: 0xF789 + name: Q1Q3TypeOnData + set: CASIOWIN_2.00 + multi: [0x51, 0x31, 0x51, 0x33, 0x54, 0x79, 0x70, 0x65, 0x4F, 0x6E, 0x44, 0x61, + 0x74, 0x61] + +# TODO +- + code: 0xF78C + name: SketchNormal + multi: [0x53, 0x6B, 0x65, 0x74, 0x63, 0x68, 0x4E, 0x6F, 0x72, 0x6D, 0x61, + 0x6C, 0x20] +- + code: 0xF78D + name: SketchThick + multi: [0x53, 0x6B, 0x65, 0x74, 0x63, 0x68, 0x54, 0x68, 0x69, 0x63, 0x6B, 0x20] +- + code: 0xF78E + name: SketchBroken + multi: [0x53, 0x6B, 0x65, 0x74, 0x63, 0x68, 0x42, 0x72, 0x6F, 0x6B, 0x65, 0x6E, + 0x20] +- + code: 0xF78F + name: SketchDot + multi: [0x53, 0x6B, 0x65, 0x74, 0x63, 0x68, 0x44, 0x6F, 0x74, 0x20] +- + code: 0xF790 + name: anType + multi: [0x61, 0xE5DE, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF791 + name: an+1Type + multi: [0x61, 0xE5DE, 0xE5DB, 0xE5CE, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF792 + name: an+2Type + multi: [0x61, 0xE5DE, 0xE5DB, 0xE5CF, 0x54, 0x79, 0x70, 0x65] +- + code: 0xF793 + name: StoPict + multi: [0x53, 0x74, 0x6F, 0x50, 0x69, 0x63, 0x74, 0x20] +- + code: 0xF794 + name: RclPict + multi: [0x52, 0x63, 0x6C, 0x50, 0x69, 0x63, 0x74, 0x20] +- + code: 0xF795 + name: StoGMEM + multi: [0x53, 0x74, 0x6F, 0x47, 0x4D, 0x45, 0x4D, 0x20] +- + code: 0xF796 + name: RclGMEM + multi: [0x52, 0x63, 0x6C, 0x47, 0x4D, 0x45, 0x4D, 0x20] +- + code: 0xF797 + name: StoV-Win + multi: [0x53, 0x74, 0x6F, 0x56, 0x2D, 0x57, 0x69, 0x6E, 0x20] +- + code: 0xF798 + name: RclV-Win + multi: [0x52, 0x63, 0x6C, 0x56, 0x2D, 0x57, 0x69, 0x6E, 0x20] +- + code: 0xF799 + name: "% (?)" + set: CASIOWIN_2.00 + multi: [0x25] +- + code: 0xF79A + name: Data + set: CASIOWIN_2.00 + multi: [0x44, 0x61, 0x74, 0x61] + +# TODO +- + code: 0xF79E + name: Menu + category: Statement + set: CASIOWIN_2.00 + multi: [0x4D, 0x65, 0x6E, 0x75, 0x20] +- + code: 0xF79F + name: Recall Capture + multi: [0x52, 0x63, 0x6C, 0x43, 0x61, 0x70, 0x74, 0x20] +- + code: 0xF7A0 + name: Tangent To Curve + multi: [0x54, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 0x20] +- + code: 0xF7A1 + name: Normal + multi: [0x4E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20] +- + code: 0xF7A2 + name: Inverse + multi: [0x49, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20] +- + code: 0xF7A3 + name: Vertical Line + multi: [0x56, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x20] +- + code: 0xF7A4 + name: Horizontal Line + multi: [0x48, 0x6F, 0x72, 0x69, 0x7A, 0x6F, 0x6E, 0x74, 0x61, 0x6C, 0x20] +- + code: 0xF7A5 + name: Render Small Text + multi: [0x54, 0x65, 0x78, 0x74, 0x20] +- + code: 0xF7A6 + name: Circle + multi: [0x43, 0x69, 0x72, 0x63, 0x6C, 0x65, 0x20] +- + code: 0xF7A7 + name: F-Line + multi: [0x46, 0x2D, 0x4C, 0x69, 0x6E, 0x65, 0x20] +- + code: 0xF7A8 + name: Draw Point On Graph + multi: [0x50, 0x6C, 0x6F, 0x74, 0x4F, 0x6E, 0x20] +- + code: 0xF7A9 + name: Clear Point On Graph + multi: [0x50, 0x6C, 0x6F, 0x74, 0x4F, 0x66, 0x66, 0x20] +- + code: 0xF7AA + name: Reverse Point On Graph + multi: [0x50, 0x6C, 0x6F, 0x74, 0x43, 0x68, 0x67, 0x20] +- + code: 0xF7AB + name: Put Pixel On Screen + multi: [0x50, 0x78, 0x6C, 0x4F, 0x6E, 0x20] +- + code: 0xF7AC + name: Clear Pixel On Screen + multi: [0x50, 0x78, 0x6C, 0x4F, 0x66, 0x66, 0x20] +- + code: 0xF7AD + name: Reverse Pixel On Screen + multi: [0x50, 0x78, 0x6C, 0x43, 0x68, 0x67, 0x20] + +# TODO +- + code: 0xF7AF + name: Query Pixel From Screen + multi: [0x50, 0x78, 0x6C, 0x54, 0x65, 0x73, 0x74, 0x28] +- + code: 0xF7B0 + name: Sort List (ascendant) + multi: [0x53, 0x6F, 0x72, 0x74, 0x41, 0x28] +- + code: 0xF7B1 + name: Sort List (descendant) + multi: [0x53, 0x6F, 0x72, 0x74, 0x44, 0x28] +- + code: 0xF7B2 + name: VarList1 + multi: [0x56, 0x61, 0x72, 0x4C, 0x69, 0x73, 0x74, 0x31] +- + code: 0xF7B3 + name: VarList2 + multi: [0x56, 0x61, 0x72, 0x4C, 0x69, 0x73, 0x74, 0x32] +- + code: 0xF7B4 + name: VarList3 + multi: [0x56, 0x61, 0x72, 0x4C, 0x69, 0x73, 0x74, 0x33] +- + code: 0xF7B5 + name: VarList4 + multi: [0x56, 0x61, 0x72, 0x4C, 0x69, 0x73, 0x74, 0x34] +- + code: 0xF7B6 + name: VarList5 + multi: [0x56, 0x61, 0x72, 0x4C, 0x69, 0x73, 0x74, 0x35] +- + code: 0xF7B7 + name: VarList6 + multi: [0x56, 0x61, 0x72, 0x4C, 0x69, 0x73, 0x74, 0x36] +- + code: 0xF7B8 + name: List File 1 + multi: [0x46, 0x69, 0x6C, 0x65, 0x31] +- + code: 0xF7B9 + name: List File 2 + multi: [0x46, 0x69, 0x6C, 0x65, 0x32] +- + code: 0xF7BA + name: List File 3 + multi: [0x46, 0x69, 0x6C, 0x65, 0x33] +- + code: 0xF7BB + name: List File 4 + multi: [0x46, 0x69, 0x6C, 0x65, 0x34] +- + code: 0xF7BC + name: List File 5 + multi: [0x46, 0x69, 0x6C, 0x65, 0x35] +- + code: 0xF7BD + name: List File 6 + multi: [0x46, 0x69, 0x6C, 0x65, 0x36] +- + code: 0xF7BE + name: Y=DrawSpeedNorm + multi: [0x59, 0x3D, 0x44, 0x72, 0x61, 0x77, 0x53, 0x70, 0x65, 0x65, 0x64, 0x4E, + 0x6F, 0x72, 0x6D] +- + code: 0xF7BF + name: Y=DrawSpeedHigh + multi: [0x59, 0x3D, 0x44, 0x72, 0x61, 0x77, 0x53, 0x70, 0x65, 0x65, 0x64, 0x48, + 0x69, 0x67, 0x68] +- + code: 0xF7C0 + name: FuncOn + multi: [0x46, 0x75, 0x6E, 0x63, 0x4F, 0x6E] +- + code: 0xF7C1 + name: SimulOn + multi: [0x53, 0x69, 0x6D, 0x75, 0x6C, 0x4F, 0x6E] +- + code: 0xF7C2 + name: AxesOn + multi: [0x41, 0x78, 0x65, 0x73, 0x4F, 0x6E] +- + code: 0xF7C3 + name: CoordOn + multi: [0x43, 0x6F, 0x6F, 0x72, 0x64, 0x4F, 0x6E] +- + code: 0xF7C4 + name: LabelOn + multi: [0x4C, 0x61, 0x62, 0x65, 0x6C, 0x4F, 0x6E] +- + code: 0xF7C5 + name: DerivOn + multi: [0x44, 0x65, 0x72, 0x69, 0x76, 0x4F, 0x6E] +- + code: 0xF7C6 + name: LocusOn + multi: [0x4C, 0x6F, 0x63, 0x75, 0x73, 0x4F, 0x6E] +- + code: 0xF7C7 + name: Sigma disp on + multi: [0xE551, 0x64, 0x69, 0x73, 0x70, 0x4F, 0x6E] +- + code: 0xF7C8 + name: G SelOn + multi: [0x47, 0x20, 0x53, 0x65, 0x6C, 0x4F, 0x6E, 0x20] +- + code: 0xF7C9 + name: T SelOn + multi: [0x54, 0x20, 0x53, 0x65, 0x6C, 0x4F, 0x6E, 0x20] +- + code: 0xF7CA + name: D SelOn + multi: [0x44, 0x20, 0x53, 0x65, 0x6C, 0x4F, 0x6E, 0x20] +- + code: 0xF7CB + name: R SelOn + multi: [0x52, 0x20, 0x53, 0x65, 0x6C, 0x4F, 0x6E, 0x20] +- + code: 0xF7CC + name: DrawOn + multi: [0x44, 0x72, 0x61, 0x77, 0x4F, 0x6E] +- + code: 0xF7CD + name: ab/c + multi: [0x61, 0x62, 0x2F, 0x63] +- + code: 0xF7CE + name: d/c + multi: [0x64, 0x2F, 0x63] + +# TODO +- + code: 0xF7D0 + name: FuncOff + multi: [0x46, 0x75, 0x6E, 0x63, 0x4F, 0x66, 0x66] +- + code: 0xF7D1 + name: SimulOff + multi: [0x53, 0x69, 0x6D, 0x75, 0x6C, 0x4F, 0x66, 0x66] +- + code: 0xF7D2 + name: AxesOff + multi: [0x41, 0x78, 0x65, 0x73, 0x4F, 0x66, 0x66] +- + code: 0xF7D3 + name: CoordOff + multi: [0x43, 0x6F, 0x6F, 0x72, 0x64, 0x4F, 0x66, 0x66] +- + code: 0xF7D4 + name: LabelOff + multi: [0x4C, 0x61, 0x62, 0x65, 0x6C, 0x4F, 0x66, 0x66] +- + code: 0xF7D5 + name: DerivOff + multi: [0x44, 0x65, 0x72, 0x69, 0x76, 0x4F, 0x66, 0x66] +- + code: 0xF7D6 + name: LocusOff + multi: [0x4C, 0x6F, 0x63, 0x75, 0x73, 0x4F, 0x66, 0x66] +- + code: 0xF7D7 + name: Sigma disp off + multi: [0xE551, 0x64, 0x69, 0x73, 0x70, 0x4F, 0x66, 0x66] +- + code: 0xF7D8 + name: G SelOff + multi: [0x47, 0x20, 0x53, 0x65, 0x6C, 0x4F, 0x66, 0x66, 0x20] +- + code: 0xF7D9 + name: T SelOff + multi: [0x54, 0x20, 0x53, 0x65, 0x6C, 0x4F, 0x66, 0x66, 0x20] +- + code: 0xF7DA + name: D SelOff + multi: [0x44, 0x20, 0x53, 0x65, 0x6C, 0x4F, 0x66, 0x66, 0x20] +- + code: 0xF7DB + name: R SelOff + multi: [0x52, 0x20, 0x53, 0x65, 0x6C, 0x4F, 0x66, 0x66, 0x20] +- + code: 0xF7DC + name: DrawOff + multi: [0x44, 0x72, 0x61, 0x77, 0x4F, 0x66, 0x66] + +# TODO +- + code: 0xF7E0 + name: DotLife( + set: C.Basic + multi: [0x44, 0x6F, 0x74, 0x4C, 0x69, 0x66, 0x65, 0x28] +- + code: 0xF7E1 + name: Rect + set: C.Basic + multi: [0x52, 0x65, 0x63, 0x74, 0x20] +- + code: 0xF7E2 + name: FillRect + set: C.Basic + multi: [0x46, 0x69, 0x6C, 0x6C, 0x52, 0x65, 0x63, 0x74, 0x20] +- + code: 0xF7E3 + name: LocateYX + set: C.Basic + multi: [0x4C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x59, 0x58, 0x20] + +# TODO +- + code: 0xF7E8 + name: ReadGraph( + set: C.Basic + multi: [0x52, 0x65, 0x61, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x28] +- + code: 0xF7E9 + name: WriteGraph + set: C.Basic + multi: [0x57, 0x72, 0x69, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x20] +- + code: 0xF7EA + name: Switch + set: C.Basic + multi: [0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x20] +- + code: 0xF7EB + name: Case + set: C.Basic + multi: [0x43, 0x61, 0x73, 0x65, 0x20] +- + code: 0xF7EC + name: Default + set: C.Basic + multi: [0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20] +- + code: 0xF7ED + name: SwitchEnd + set: C.Basic + multi: [0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6E, 0x64] +- + code: 0xF7EE + name: Save + set: C.Basic + multi: [0x53, 0x61, 0x76, 0x65, 0x20] +- + code: 0xF7EF + name: Load( + set: C.Basic + multi: [0x4C, 0x6F, 0x61, 0x64, 0x28] +- + code: 0xF7F0 + name: DotShape( + set: C.Basic + multi: [0x44, 0x6F, 0x74, 0x53, 0x68, 0x61, 0x70, 0x65, 0x28] +- + code: 0xF7F1 + name: Local + set: C.Basic + multi: [0x4C, 0x6F, 0x63, 0x61, 0x6C, 0x20] + +# TODO +- + code: 0xF7FE + name: BackLight + set: C.Basic + multi: [0x42, 0x61, 0x63, 0x6B, 0x4C, 0x69, 0x67, 0x68, 0x74, 0x20] + +# TODO: finish here +#******************************************************************************# +# 0xF9 characters # +#******************************************************************************# +# TODO +- + code: 0xF901 + name: ">Dec" + multi: [0xE69E, 0x44, 0x65, 0x63] +- + code: 0xF902 + name: ">Hex" + multi: [0xE69E, 0x48, 0x65, 0x78] +- + code: 0xF903 + name: ">Bin" + multi: [0xE69E, 0x42, 0x69, 0x6E] +- + code: 0xF904 + name: ">Oct" + multi: [0xE69E, 0x4F, 0x63, 0x74] +- + code: 0xF905 + name: ">DMS" + multi: [0xE69E, 0x44, 0x4D, 0x53] +- + code: 0xF906 + name: ">a+bi" + multi: [0xE69E, 0x61, 0x2B, 0x62, 0x7F50] +- + code: 0xF907 + name: "> r < theta" + multi: [0xE69E, 0x72, 0x7F54, 0xE647] +- + code: 0xF908 + name: Real + multi: [0x52, 0x65, 0x61, 0x6C] +- + code: 0xF909 + name: a+bi + multi: [0x61, 0x2B, 0x62, 0x7F50] +- + code: 0xF90A + name: r < theta + multi: [0x72, 0x7F54, 0xE647] +- + code: 0xF90B + name: EngOn + multi: [0x45, 0x6E, 0x67, 0x4F, 0x6E] +- + code: 0xF90C + name: EngOff + multi: [0x45, 0x6E, 0x67, 0x4F, 0x66, 0x66] + +# TODO +- + code: 0xF910 + name: Sel a0 + multi: [0x53, 0x65, 0x6C, 0x20, 0x61, 0xE5CD] +- + code: 0xF911 + name: Sel a1 + multi: [0x53, 0x65, 0x6C, 0x20, 0x61, 0xE5CE] +- + code: 0xF912 + name: cn + multi: [0x63, 0xE5DE] +- + code: 0xF913 + name: cn+1 + multi: [0x63, 0xE5DE, 0xE5DB, 0xE5CE] +- + code: 0xF914 + name: cn+2 + multi: [0x63, 0xE5DE, 0xE5DB, 0xE5CF] +- + code: 0xF915 + name: c0 + multi: [0x63, 0xE5CD] +- + code: 0xF916 + name: c1 + multi: [0x63, 0xE5CE] +- + code: 0xF917 + name: c2 + multi: [0x63, 0xE5CF] +- + code: 0xF918 + name: cnStart + multi: [0x63, 0xE5DE, 0x53, 0x74, 0x61, 0x72, 0x74] +- + code: 0xF919 + name: IneqTypeAnd + set: CASIOWIN_2.00 + multi: [0x49, 0x6E, 0x65, 0x71, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6E, 0x64] + +# TODO +- + code: 0xF91B + name: fn + multi: [0x66, 0xE5DE] +- + code: 0xF91C + name: File + multi: [0x46, 0x69, 0x6C, 0x65, 0x20] +- + code: 0xF91D + name: VarList + multi: [0x56, 0x61, 0x72, 0x4C, 0x69, 0x73, 0x74, 0x20] +- + code: 0xF91E + name: ClrMat + category: Statement + args: Mat + action: Delete the matrix. + multi: [0x43, 0x6C, 0x72, 0x4D, 0x61, 0x74, 0x20] + +# TODO +- + code: 0xF920 + name: ZoomAuto + multi: [0x5A, 0x6F, 0x6F, 0x6D, 0x41, 0x75, 0x74, 0x6F] +- + code: 0xF921 + name: Xdot + multi: [0x58, 0x64, 0x6F, 0x74] +- + code: 0xF922 + name: RightXdot + multi: [0x52, 0x69, 0x67, 0x68, 0x74, 0x58, 0x64, 0x6F, 0x74] + +# TODO +- + code: 0xF924 + name: DrawDistNorm + set: CASIOWIN_2.00 + multi: [0x44, 0x72, 0x61, 0x77, 0x44, 0x69, 0x73, 0x74, 0x4E, 0x6F, 0x72, 0x6D, + 0x20] +- + code: 0xF925 + name: DrawDistT + set: CASIOWIN_2.00 + multi: [0x44, 0x72, 0x61, 0x77, 0x44, 0x69, 0x73, 0x74, 0x54, 0x20] +- + code: 0xF926 + name: DrawDistChi + set: CASIOWIN_2.00 + multi: [0x44, 0x72, 0x61, 0x77, 0x44, 0x69, 0x73, 0x74, 0x43, 0x68, 0x69, 0x20] +- + code: 0xF927 + name: DrawDistF + set: CASIOWIN_2.00 + multi: [0x44, 0x72, 0x61, 0x77, 0x44, 0x69, 0x73, 0x74, 0x46, 0x20] +- + code: 0xF928 + name: None + set: CASIOWIN_2.00 + multi: [0x4E, 0x6F, 0x6E, 0x65] +- + code: 0xF929 + name: StickLength + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x69, 0x63, 0x6B, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68] +- + code: 0xF92A + name: StickHoriz + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x69, 0x63, 0x6B, 0x48, 0x6F, 0x72, 0x69, 0x7A] +- + code: 0xF92B + name: IneqTypeOr + set: CASIOWIN_2.00 + multi: [0x49, 0x6E, 0x65, 0x71, 0x54, 0x79, 0x70, 0x65, 0x4F, 0x72] +- + code: 0xF92C + name: Graph X> + set: CASIOWIN_2.00 + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x58, 0x3E] +- + code: 0xF92D + name: Graph X< + set: CASIOWIN_2.00 + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x58, 0x3C] +- + code: 0xF92E + name: Graph X>= + set: CASIOWIN_2.00 + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x58, 0x12] +- + code: 0xF92F + name: Graph X<= + set: CASIOWIN_2.00 + multi: [0x47, 0x72, 0x61, 0x70, 0x68, 0x20, 0x58, 0x10] +- + code: 0xF930 + name: StrJoin( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x4A, 0x6F, 0x69, 0x6E, 0x28] +- + code: 0xF931 + name: StrLen( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x4C, 0x65, 0x6E, 0x28] +- + code: 0xF932 + name: StrCmp( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x43, 0x6D, 0x70, 0x28] +- + code: 0xF933 + name: StrSrc( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x53, 0x72, 0x63, 0x28] +- + code: 0xF934 + name: StrLeft( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x4C, 0x65, 0x66, 0x74, 0x28] +- + code: 0xF935 + name: StrRight( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x52, 0x69, 0x67, 0x68, 0x74, 0x28] +- + code: 0xF936 + name: StrMid( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x4D, 0x69, 0x64, 0x28] +- + code: 0xF937 + name: ExpToStr( + set: CASIOWIN_2.00 + multi: [0x45, 0x78, 0x70, 0xE69E, 0x53, 0x74, 0x72, 0x28] +- + code: 0xF938 + name: Exp( + set: CASIOWIN_2.00 + multi: [0x45, 0x78, 0x70, 0x28] +- + code: 0xF939 + name: StrUpr( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x55, 0x70, 0x72, 0x28] +- + code: 0xF93A + name: StrLwr( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x4C, 0x77, 0x72, 0x28] +- + code: 0xF93B + name: StrInv( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x49, 0x6E, 0x76, 0x28] +- + code: 0xF93C + name: StrShift( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x53, 0x68, 0x69, 0x66, 0x74, 0x28] +- + code: 0xF93D + name: StrRotate( + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x52, 0x6F, 0x74, 0x61, 0x74, 0x65, 0x28] +- + code: 0xF93E + name: ClrVct + set: CASIOWIN_2.04 + multi: [0x43, 0x6C, 0x72, 0x56, 0x63, 0x74, 0x20] +- + code: 0xF93E + name: Sprintf( + set: C.Basic + multi: [0x53, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x28] +- + code: 0xF93F + name: Str + set: CASIOWIN_2.00 + multi: [0x53, 0x74, 0x72, 0x20] + +# TODO +- + code: 0xF94A + name: CrossP( + set: CASIOWIN_2.04 + multi: [0x43, 0x72, 0x6F, 0x73, 0x73, 0x50, 0x28] +- + code: 0xF94B + name: DotP( + set: CASIOWIN_2.04 + multi: [0x44, 0x6F, 0x74, 0x50, 0x28] +- + code: 0xF94B + name: DotPut( + set: C.Basic + multi: [0x44, 0x6F, 0x74, 0x50, 0x75, 0x74, 0x28] + +# TODO +- + code: 0xF95B + name: Norm( + set: CASIOWIN_2.04 + multi: [0x4E, 0x6F, 0x72, 0x6D, 0x28] + +# TODO +- + code: 0xF95E + name: UnitV( + set: CASIOWIN_2.04 + multi: [0x55, 0x6E, 0x69, 0x74, 0x56, 0x28] + +# TODO +- + code: 0xF96D + name: Angle( + set: CASIOWIN_2.04 + multi: [0x41, 0x6E, 0x67, 0x6C, 0x65, 0x28] + +# TODO +- + code: 0xF980 + name: NormPD( + set: CASIOWIN_2.00 + multi: [0x4E, 0x6F, 0x72, 0x6D, 0x50, 0x44, 0x28] +- + code: 0xF981 + name: NormCD( + set: CASIOWIN_2.00 + multi: [0x4E, 0x6F, 0x72, 0x6D, 0x43, 0x44, 0x28] +- + code: 0xF982 + name: InvNormCD + category: Function + set: CASIOWIN_2.00 + multi: [0x49, 0x6E, 0x76, 0x4E, 0x6F, 0x72, 0x6D, 0x43, 0x44, 0x28] +- + code: 0xF983 + name: tPD + category: Function + set: CASIOWIN_2.00 + multi: [0x74, 0x50, 0x44, 0x28] +- + code: 0xF984 + name: tCD + category: Function + set: CASIOWIN_2.00 + multi: [0x74, 0x43, 0x44, 0x28] +- + code: 0xF985 + name: InvTCD + category: Function + set: CASIOWIN_2.00 + multi: [0x49, 0x6E, 0x76, 0x54, 0x43, 0x44, 0x28] +- + code: 0xF986 + name: ChiPD + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x68, 0x69, 0x50, 0x44, 0x28] +- + code: 0xF987 + name: ChiCD + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x68, 0x69, 0x43, 0x44, 0x28] +- + code: 0xF988 + name: InvChiCD + category: Function + set: CASIOWIN_2.00 + multi: [0x49, 0x6E, 0x76, 0x43, 0x68, 0x69, 0x43, 0x44, 0x28] +- + code: 0xF989 + name: FPD + category: Function + set: CASIOWIN_2.00 + multi: [0x46, 0x50, 0x44, 0x28] +- + code: 0xF98A + name: FCD + category: Function + set: CASIOWIN_2.00 + multi: [0x46, 0x43, 0x44, 0x28] +- + code: 0xF98B + name: InvFCD + category: Function + set: CASIOWIN_2.00 + multi: [0x49, 0x6E, 0x76, 0x46, 0x43, 0x44, 0x28] +- + code: 0xF98C + name: BinominalPD + category: Function + set: CASIOWIN_2.00 + multi: [0x42, 0x69, 0x6E, 0x6F, 0x6D, 0x69, 0x6E, 0x61, 0x6C, 0x50, 0x44, 0x28] +- + code: 0xF98C + name: BinomialPD + category: Function + set: CASIOWIN_2.04 + multi: [0x42, 0x69, 0x6E, 0x6F, 0x6D, 0x69, 0x61, 0x6C, 0x50, 0x44, 0x28] +- + code: 0xF98D + name: BinominalCD + category: Function + set: CASIOWIN_2.00 + multi: [0x42, 0x69, 0x6E, 0x6F, 0x6D, 0x69, 0x6E, 0x61, 0x6C, 0x43, 0x44, 0x28] +- + code: 0xF98D + name: BinomialCD + category: Function + set: CASIOWIN_2.04 + multi: [0x42, 0x69, 0x6E, 0x6F, 0x6D, 0x69, 0x61, 0x6C, 0x43, 0x44, 0x28] +- + code: 0xF98E + name: InvBinominalCD + category: Function + set: CASIOWIN_2.00 + multi: [0x49, 0x6E, 0x76, 0x42, 0x69, 0x6E, 0x6F, 0x6D, 0x69, 0x6E, 0x61, 0x6C, + 0x43, 0x44, 0x28] +- + code: 0xF98E + name: InvBinomialCD + category: Function + set: CASIOWIN_2.04 + multi: [0x49, 0x6E, 0x76, 0x42, 0x69, 0x6E, 0x6F, 0x6D, 0x69, 0x61, 0x6C, 0x43, + 0x44, 0x28] +- + code: 0xF98F + name: PoissonPD + category: Function + set: CASIOWIN_2.00 + multi: [0x50, 0x6F, 0x69, 0x73, 0x73, 0x6F, 0x6E, 0x50, 0x44, 0x28] +- + code: 0xF990 + name: PoissonCD + category: Function + set: CASIOWIN_2.00 + multi: [0x50, 0x6F, 0x69, 0x73, 0x73, 0x6F, 0x6E, 0x43, 0x44, 0x28] +- + code: 0xF991 + name: InvPoissonCD + category: Function + set: CASIOWIN_2.00 + multi: [0x49, 0x6E, 0x76, 0x50, 0x6F, 0x69, 0x73, 0x73, 0x6F, 0x6E, 0x43, 0x44, + 0x28] +- + code: 0xF992 + name: GeoPD + category: Function + set: CASIOWIN_2.00 + multi: [0x47, 0x65, 0x6F, 0x50, 0x44, 0x28] +- + code: 0xF993 + name: GeoCD + category: Function + set: CASIOWIN_2.00 + multi: [0x47, 0x65, 0x6F, 0x43, 0x44, 0x28] +- + code: 0xF994 + name: InvGeoCD + category: Function + set: CASIOWIN_2.00 + multi: [0x49, 0x6E, 0x76, 0x47, 0x65, 0x6F, 0x43, 0x44, 0x28] +- + code: 0xF995 + name: HypergeoPD + category: Function + set: CASIOWIN_2.00 + multi: [0x48, 0x79, 0x70, 0x65, 0x72, 0x67, 0x65, 0x6F, 0x50, 0x44, 0x28] +- + code: 0xF996 + name: HypergeoCD + category: Function + set: CASIOWIN_2.00 + multi: [0x48, 0x79, 0x70, 0x65, 0x72, 0x67, 0x65, 0x6F, 0x43, 0x44, 0x28] +- + code: 0xF997 + name: InvHypergeoCD + category: Function + set: CASIOWIN_2.00 + multi: [0x49, 0x6E, 0x76, 0x48, 0x79, 0x70, 0x65, 0x72, 0x67, 0x65, 0x6F, 0x43, + 0x44, 0x28] + +# TODO +- + code: 0xF9A0 + name: Smpl_SI + category: Function + set: CASIOWIN_2.00 + multi: [0x53, 0x6D, 0x70, 0x6C, 0x5F, 0x53, 0x49, 0x28] +- + code: 0xF9A1 + name: Smpl_SFV + category: Function + set: CASIOWIN_2.00 + multi: [0x53, 0x6D, 0x70, 0x6C, 0x5F, 0x53, 0x46, 0x56, 0x28] +- + code: 0xF9A2 + name: Cmpd_n + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x6D, 0x70, 0x64, 0x5F, 0x6E, 0x28] +- + code: 0xF9A3 + name: Cmpd_I% + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x6D, 0x70, 0x64, 0x5F, 0x49, 0x25, 0x28] + id: Cmpd_Ipercent +- + code: 0xF9A4 + name: Cmpd_PV + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x6D, 0x70, 0x64, 0x5F, 0x50, 0x56, 0x28] +- + code: 0xF9A5 + name: Cmpd_PMT + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x6D, 0x70, 0x64, 0x5F, 0x50, 0x4D, 0x54, 0x28] +- + code: 0xF9A6 + name: Cmpd_FV + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x6D, 0x70, 0x64, 0x5F, 0x46, 0x56, 0x28] +- + code: 0xF9A7 + name: Cash_NPV + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x61, 0x73, 0x68, 0x5F, 0x4E, 0x50, 0x56, 0x28] +- + code: 0xF9A8 + name: Cash_IRR + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x61, 0x73, 0x68, 0x5F, 0x49, 0x52, 0x52, 0x28] +- + code: 0xF9A9 + name: Cash_PBP + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x61, 0x73, 0x68, 0x5F, 0x50, 0x42, 0x50, 0x28] +- + code: 0xF9AA + name: Cash_NFV + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x61, 0x73, 0x68, 0x5F, 0x4E, 0x46, 0x56, 0x28] +- + code: 0xF9AB + name: Amt_BAL + category: Function + set: CASIOWIN_2.00 + multi: [0x41, 0x6D, 0x74, 0x5F, 0x42, 0x41, 0x4C, 0x28] +- + code: 0xF9AC + name: Amt_INT + category: Function + set: CASIOWIN_2.00 + multi: [0x41, 0x6D, 0x74, 0x5F, 0x49, 0x4E, 0x54, 0x28] +- + code: 0xF9AD + name: Amt_PRN + category: Function + set: CASIOWIN_2.00 + multi: [0x41, 0x6D, 0x74, 0x5F, 0x50, 0x52, 0x4E, 0x28] +- + code: 0xF9AE + name: Amt_SigmaINT + category: Function + set: CASIOWIN_2.00 + multi: [0x41, 0x6D, 0x74, 0x5F, 0xE551, 0x49, 0x4E, 0x54, 0x28] +- + code: 0xF9AF + name: Amt_SigmaPRN + category: Function + set: CASIOWIN_2.00 + multi: [0x41, 0x6D, 0x74, 0x5F, 0xE551, 0x50, 0x52, 0x4E, 0x28] +- + code: 0xF9B0 + name: Cnvt_EFF + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x6E, 0x76, 0x74, 0x5F, 0x45, 0x46, 0x46, 0x28] +- + code: 0xF9B1 + name: Cnvt_APR + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x6E, 0x76, 0x74, 0x5F, 0x41, 0x50, 0x52, 0x28] +- + code: 0xF9B2 + name: Cost + args: Sell, Margin + return: The cost from a cost and a profit margin. + category: Function + set: CASIOWIN_2.00 + multi: [0x43, 0x6F, 0x73, 0x74, 0x28] +- + code: 0xF9B3 + name: Sell + args: Cost, Margin + return: The sell price out of a cost and a profit margin. + category: Function + set: CASIOWIN_2.00 + multi: [0x53, 0x65, 0x6C, 0x6C, 0x28] +- + code: 0xF9B4 + name: Margin + args: Cost, Sell + return: The profit margin out of a cost and a sell price. + category: Function + set: CASIOWIN_2.00 + multi: [0x4D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x28] +- + code: 0xF9B5 + name: PmtEnd + set: CASIOWIN_2.00 + multi: [0x50, 0x6D, 0x74, 0x45, 0x6E, 0x64] +- + code: 0xF9B6 + name: PmtBgn + set: CASIOWIN_2.00 + multi: [0x50, 0x6D, 0x74, 0x42, 0x67, 0x6E] +- + code: 0xF9B7 + name: Bond_PRC + category: Function + set: CASIOWIN_2.00 + multi: [0x42, 0x6F, 0x6E, 0x64, 0x5F, 0x50, 0x52, 0x43, 0x28] +- + code: 0xF9B8 + name: Bond_YLD + category: Function + set: CASIOWIN_2.00 + multi: [0x42, 0x6F, 0x6E, 0x64, 0x5F, 0x59, 0x4C, 0x44, 0x28] +- + code: 0xF9B9 + name: DateMode365 + set: CASIOWIN_2.00 + multi: [0x44, 0x61, 0x74, 0x65, 0x4D, 0x6F, 0x64, 0x65, 0x33, 0x36, 0x35] +- + code: 0xF9BA + name: DateMode360 + set: CASIOWIN_2.00 + multi: [0x44, 0x61, 0x74, 0x65, 0x4D, 0x6F, 0x64, 0x65, 0x33, 0x36, 0x30] +- + code: 0xF9BB + name: PeriodsAnnual + set: CASIOWIN_2.00 + multi: [0x50, 0x65, 0x72, 0x69, 0x6F, 0x64, 0x73, 0x41, 0x6E, 0x6E, 0x75, 0x61, + 0x6C] +- + code: 0xF9BC + name: PeriodsSemi + set: CASIOWIN_2.00 + multi: [0x50, 0x65, 0x72, 0x69, 0x6F, 0x64, 0x73, 0x53, 0x65, 0x6D, 0x69] +- + code: 0xF9BD + name: Days_Prd( + set: CASIOWIN_2.00 + multi: [0x44, 0x61, 0x79, 0x73, 0x5F, 0x50, 0x72, 0x64, 0x28] + +# TODO +- + code: 0xF9E0 + name: OneSampleZTest + set: CASIOWIN_2.00 + multi: [0x4F, 0x6E, 0x65, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5A, 0x54, 0x65, + 0x73, 0x74, 0x20] +- + code: 0xF9E1 + name: TwoSampleZTest + set: CASIOWIN_2.00 + multi: [0x54, 0x77, 0x6F, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x5A, 0x54, 0x65, + 0x73, 0x74, 0x20] +- + code: 0xF9E2 + name: OnePropZTest + set: CASIOWIN_2.00 + multi: [0x4F, 0x6E, 0x65, 0x50, 0x72, 0x6F, 0x70, 0x5A, 0x54, 0x65, 0x73, 0x74, + 0x20] +- + code: 0xF9E3 + name: TwoPropZTest + set: CASIOWIN_2.00 + multi: [0x54, 0x77, 0x6F, 0x50, 0x72, 0x6F, 0x70, 0x5A, 0x54, 0x65, 0x73, 0x74, + 0x20] + +# TODO +- + code: 0xF9E8 + name: OneSampleTTest + set: CASIOWIN_2.00 + multi: [0x4F, 0x6E, 0x65, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x54, 0x54, 0x65, + 0x73, 0x74, 0x20] +- + code: 0xF9E9 + name: TwoSampleTTest + set: CASIOWIN_2.00 + multi: [0x54, 0x77, 0x6F, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x54, 0x54, 0x65, + 0x73, 0x74, 0x20] +- + code: 0xF9EA + name: LinRegTTest + set: CASIOWIN_2.00 + multi: [0x4C, 0x69, 0x6E, 0x52, 0x65, 0x67, 0x54, 0x54, 0x65, 0x73, 0x74, 0x20] +- + code: 0xF9EB + name: Square Chi GOF Test + set: CASIOWIN_2.00 + multi: [0x43, 0x68, 0x69, 0x47, 0x4F, 0x46, 0x54, 0x65, 0x73, 0x74, 0x20] + ascii: "ChiGOFTest " +- + code: 0xF9EC + name: Square Chi Test + set: CASIOWIN_2.00 + multi: [0x43, 0x68, 0x69, 0x54, 0x65, 0x73, 0x74, 0x20] +- + code: 0xF9ED + name: Two-Sample F Test Calculation + set: CASIOWIN_2.00 + multi: [0x54, 0x77, 0x6F, 0x53, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x46, 0x54, 0x65, + 0x73, 0x74, 0x20] +- + code: 0xF9EE + name: One-factor Variance Analysis + set: CASIOWIN_2.00 + multi: [0x4F, 0x6E, 0x65, 0x57, 0x61, 0x79, 0x41, 0x4E, 0x4F, 0x56, 0x41, 0x20] +- + code: 0xF9EF + name: Two-factors Variance Analysis + set: CASIOWIN_2.00 + multi: [0x54, 0x77, 0x6F, 0x57, 0x61, 0x79, 0x41, 0x4E, 0x4F, 0x56, 0x41, 0x20] +- + code: 0xF9F0 + name: Reverse Cumulative Distribution Upper Limit + set: CASIOWIN_2.00 + multi: [0x78, 0x31, 0x49, 0x6E, 0x76, 0x4E] + ascii: xInvN +- + code: 0xF9F1 + name: Reverse Cumulative Distribution Lower Limit + set: CASIOWIN_2.00 + multi: [0x78, 0x32, 0x49, 0x6E, 0x76, 0x4E] + ascii: x2InvN +- + code: 0xF9F2 + name: Reverse Cumulative Distribution Result + set: CASIOWIN_2.00 + multi: [0x78, 0x49, 0x6E, 0x76] + ascii: xInv + +# TODO +- + code: 0xF9FB + name: Normal Cumulative Distribution Upper Limit (zLow) + set: CASIOWIN_2.00 + multi: [0x7A, 0x4C, 0x6F, 0x77] +- + code: 0xF9FC + name: Normal Cumulative Distribution Lower Limit (zUp) + set: CASIOWIN_2.00 + multi: [0x7A, 0x55, 0x70] +- + code: 0xF9FD + name: Student's Cumulative Distribution Upper Limit (tLow) + set: CASIOWIN_2.00 + multi: [0x74, 0x4C, 0x6F, 0x77] +- + code: 0xF9FE + name: Student's Cumulative Distribution Lower Limit (tUp) + set: CASIOWIN_2.00 + multi: [0x74, 0x55, 0x70] + +# TODO +#******************************************************************************# +# 0xE5 characters # +#******************************************************************************# +- + code: 0xE501 + name: A with grave + category: Letter/Latin Capital + unicode: [0xC0] + id: A_grave + ascii: 'À' +- + code: 0xE502 + name: A with acute + category: Letter/Latin Capital + unicode: [0xC1] + id: A_acute + ascii: 'Á' +- + code: 0xE503 + name: A with circumflex + category: Letter/Latin Capital + unicode: [0xC2] + id: A_circumflex + ascii: 'Â' +- + code: 0xE504 + name: A with tilde + category: Letter/Latin Capital + unicode: [0xC3] + id: A_tilde + ascii: 'Ã' +- + code: 0xE505 + name: A with diaeresis + category: Letter/Latin Capital + unicode: [0xC4] + id: A_diaeresis + ascii: 'Ä' +- + code: 0xE506 + name: A with ring above + category: Letter/Latin Capital + unicode: [0xC5] + id: A_ring + ascii: 'Å' +- + code: 0xE507 + name: A le + category: Ligature/Latin Capital + unicode: [0x4D4] + id: Ae + ascii: 'Æ' +- + code: 0xE508 + name: C with cedilla + category: Letter/Latin Capital + unicode: [0xC7] + id: C_cedilla + ascii: 'Ç' +- + code: 0xE509 + name: E with grave + category: Letter/Latin Capital + unicode: [0xC8] + id: E_grave + ascii: 'È' +- + code: 0xE50A + name: E with acute + category: Letter/Latin Capital + unicode: [0xC9] + id: E_acute + ascii: 'É' +- + code: 0xE50B + name: E with circumflex + category: Letter/Latin Capital + unicode: [0xCA] + id: E_circumflex + ascii: 'Ê' +- + code: 0xE50C + name: E with diaeresis + category: Letter/Latin Capital + unicode: [0xCB] + id: E_diaeresis + ascii: 'Ë' +- + code: 0xE50D + name: I with grave + category: Letter/Latin Capital + unicode: [0xCC] + id: I_grave + ascii: 'Ì' +- + code: 0xE50E + name: I with acute + category: Letter/Latin Capital + unicode: [0xCD] + id: I_acute + ascii: 'Í' +- + code: 0xE50F + name: I with circumflex + category: Letter/Latin Capital + unicode: [0xCE] + id: I_circumflex + ascii: 'Î' +- + code: 0xE510 + name: I with diaeresis + category: Letter/Latin Capital + unicode: [0xCF] + id: I_diaeresis + ascii: 'Ï' +- + code: 0xE511 + name: Eth + category: Letter/Latin Capital + unicode: [0xD0] + ascii: 'Ð' +- + code: 0xE512 + name: N with tilde + category: Letter/Latin Capital + unicode: [0xD1] + id: N_tilde + ascii: 'Ñ' +- + code: 0xE513 + name: O with grave + category: Letter/Latin Capital + unicode: [0xD2] + id: O_grave + ascii: 'Ò' +- + code: 0xE514 + name: O with acute + category: Letter/Latin Capital + unicode: [0xD3] + id: O_acute + ascii: 'Ó' +- + code: 0xE515 + name: O with circumflex + category: Letter/Latin Capital + unicode: [0xD4] + id: O_circumflex + ascii: 'Ô' +- + code: 0xE516 + name: O with tilde + category: Letter/Latin Capital + unicode: [0xD5] + id: O_tilde + ascii: 'Õ' +- + code: 0xE517 + name: O with diaeresis + category: Letter/Latin Capital + unicode: [0xD6] + id: O_diaeresis + ascii: 'Ö' +- + code: 0xE518 + name: O with stroke + category: Letter/Latin Capital + unicode: [0xD8] + id: O_stroke + ascii: 'Ø' +- + code: 0xE519 + name: U with grave + category: Letter/Latin Capital + unicode: [0xD9] + id: U_grave + ascii: 'Ù' +- + code: 0xE51A + name: U with acute + category: Letter/Latin Capital + unicode: [0xDA] + id: U_acute + ascii: 'Ú' +- + code: 0xE51B + name: U with circumflex + category: Letter/Latin Capital + unicode: [0xDB] + id: U_circumflex + ascii: 'Û' +- + code: 0xE51C + name: U with diaeresis + category: Letter/Latin Capital + unicode: [0xDC] + id: U_diaeresis + ascii: 'Ü' +- + code: 0xE51D + name: Y with acute + category: Letter/Latin Capital + unicode: [0xDD] + id: Y_acute + ascii: 'Ý' +- + code: 0xE51E + name: Thorn + category: Letter/Latin Capital + unicode: [0xDE] + ascii: 'Þ' + +# TODO +- + code: 0xE520 + name: Y with diaeresis + category: Letter/Latin Capital + unicode: [0x59, 0x308] + id: Y_diaeresis + ascii: 'Ÿ' +- + code: 0xE521 + name: A with breve + category: Letter/Latin Capital + unicode: [0x102] + id: A_breve +- + code: 0xE522 + name: A with cedilla + category: Letter/Latin Capital + unicode: [0x41, 0x327] + id: A_cedilla +- + code: 0xE523 + name: C with acute + category: Letter/Latin Capital + unicode: [0x106] + id: C_acute +- + code: 0xE524 + name: C with circumflex + category: Letter/Latin Capital + unicode: [0x108] + id: C_circumflex +- + code: 0xE525 + name: Oe + category: Ligature/Latin Capital + unicode: [0x152] + ascii: 'Œ' +- + code: 0xE526 + name: D with breve + category: Letter/Latin Capital + unicode: [0x44, 0x306] + id: D_breve +- + code: 0xE527 + name: E with cedilla + category: Letter/Latin Capital + unicode: [0x228] + id: E_cedilla +- + code: 0xE528 + name: E with breve + category: Letter/Latin Capital + unicode: [0x45, 0x306] + id: E_breve +- + code: 0xE529 + name: L with stroke + category: Letter/Latin Capital + unicode: [0x141] + id: L_stroke +- + code: 0xE52A + name: N with acute + category: Letter/Latin Capital + unicode: [0x143] + id: N_acute +- + code: 0xE52B + name: N with breve + category: Letter/Latin Capital + unicode: [0x4E, 0x306] + id: N_breve +- + code: 0xE52C + name: O with double acute + category: Letter/Latin Capital + unicode: [0x4F, 0x30B] + id: O_acute2 +- + code: 0xE52D + name: R with breve + category: Letter/Latin Capital + unicode: [0x52, 0x306] + id: R_breve +- + code: 0xE52E + name: S with acute + category: Letter/Latin Capital + unicode: [0x15A] + id: S_acute +- + code: 0xE52F + name: S with breve + category: Letter/Latin Capital + unicode: [0x53, 0x306] + id: S_breve +- + code: 0xE530 + name: T with breve + category: Letter/Latin Capital + unicode: [0x54, 0x306] + id: T_breve +- + code: 0xE531 + name: O with ring above + category: Letter/Latin Capital + unicode: [0x4F, 0x30A] + id: O_ring +- + code: 0xE532 + name: U with double acute + category: Letter/Latin Capital + unicode: [0x55, 0x30B] + id: U_acute2 +- + code: 0xE533 + name: Z with acute + category: Letter/Latin Capital + unicode: [0x51, 0x301] + id: Z_acute +- + code: 0xE534 + name: Z with dot above + category: Letter/Latin Capital + unicode: [0x5A, 0x307] + id: Z_dot +- + code: 0xE535 + name: Z with breve + category: Letter/Latin Capital + unicode: [0x5A, 0x306] + id: Z_breve + +# TODO +- + code: 0xE540 + name: Alpha + category: Letter/Greek Capital + unicode: [0x391] + ascii: "Α" +- + code: 0xE541 + name: Beta + category: Letter/Greek Capital + unicode: [0x392] + ascii: "Β" +- + code: 0xE542 + name: Gamma + category: Letter/Greek Capital + unicode: [0x393] + ascii: "Γ" +- + code: 0xE543 + name: Delta + category: Letter/Greek Capital + unicode: [0x394] + ascii: "Δ" +- + code: 0xE544 + name: Epsilon + category: Letter/Greek Capital + unicode: [0x395] + ascii: "Ε" +- + code: 0xE545 + name: Zeta + category: Letter/Greek Capital + unicode: [0x396] + ascii: "Ζ" +- + code: 0xE546 + name: Eta + category: Letter/Greek Capital + unicode: [0x397] + ascii: "Η" +- + code: 0xE547 + name: Theta + category: Letter/Greek Capital + unicode: [0x398] + ascii: "Θ" +- + code: 0xE548 + name: Iota + category: Letter/Greek Capital + unicode: [0x399] + ascii: "Ι" +- + code: 0xE549 + name: Kappa + category: Letter/Greek Capital + unicode: [0x39A] + ascii: "Κ" +- + code: 0xE54A + name: Lambda + category: Letter/Greek Capital + unicode: [0x39B] + ascii: "Λ" +- + code: 0xE54B + name: Mu + category: Letter/Greek Capital + unicode: [0x39C] + ascii: "Μ" +- + code: 0xE54C + name: Nu + category: Letter/Greek Capital + unicode: [0x39D] + ascii: "Ν" +- + code: 0xE54D + name: Xi + category: Letter/Greek Capital + unicode: [0x39E] + ascii: "Ξ" +- + code: 0xE54E + name: Omicron + category: Letter/Greek Capital + unicode: [0x39F] + ascii: "Ο" +- + code: 0xE54F + name: Pi + category: Letter/Greek Capital + unicode: [0x3A0] + ascii: "Π" +- + code: 0xE550 + name: Rho + category: Letter/Greek Capital + unicode: [0x3A1] + ascii: "Ρ" +- + code: 0xE551 + name: Sigma + category: Letter/Greek Capital + unicode: [0x3A3] + ascii: "Σ" +- + code: 0xE553 + name: Tau + category: Letter/Greek Capital + unicode: [0x3A4] + ascii: "Τ" +- + code: 0xE554 + name: Upsilon + category: Letter/Greek Capital + unicode: [0x3A5] + ascii: "Υ" +- + code: 0xE555 + name: Phi + category: Letter/Greek Capital + unicode: [0x3A6] + ascii: "Φ" +- + code: 0xE556 + name: Chi + category: Letter/Greek Capital + unicode: [0x3A7] + ascii: "Χ" +- + code: 0xE557 + name: Psi + category: Letter/Greek Capital + unicode: [0x3A8] + ascii: "Ψ" +- + code: 0xE558 + name: Omega + category: Letter/Greek Capital + unicode: [0x3A9] + ascii: "Ω" + +# TODO +- + code: 0xE560 + name: A + category: Letter/Cyrillic Capital + unicode: [0x410] +- + code: 0xE561 + name: Be + category: Letter/Cyrillic Capital + unicode: [0x411] +- + code: 0xE562 + name: Ve + category: Letter/Cyrillic Capital + unicode: [0x412] +- + code: 0xE563 + name: Ghe + category: Letter/Cyrillic Capital + unicode: [0x413] +- + code: 0xE564 + name: De + category: Letter/Cyrillic Capital + unicode: [0x414] +- + code: 0xE565 + name: Ie + category: Letter/Cyrillic Capital + unicode: [0x415] +- + code: 0xE566 + name: Io + category: Letter/Cyrillic Capital + unicode: [0x401] +- + code: 0xE567 + name: Zhe + category: Letter/Cyrillic Capital + unicode: [0x416] +- + code: 0xE568 + name: Ze + category: Letter/Cyrillic Capital + unicode: [0x417] +- + code: 0xE569 + name: I + category: Letter/Cyrillic Capital + unicode: [0x418] +- + code: 0xE56A + name: Short I + category: Letter/Cyrillic Capital + unicode: [0x419] +- + code: 0xE56B + name: Ka + category: Letter/Cyrillic Capital + unicode: [0x41A] +- + code: 0xE56C + name: El + category: Letter/Cyrillic Capital + unicode: [0x41B] +- + code: 0xE56D + name: Em + category: Letter/Cyrillic Capital + unicode: [0x41C] +- + code: 0xE56E + name: En + category: Letter/Cyrillic Capital + unicode: [0x41D] +- + code: 0xE56F + name: O + category: Letter/Cyrillic Capital + unicode: [0x41E] +- + code: 0xE570 + name: Pe + category: Letter/Cyrillic Capital + unicode: [0x41F] +- + code: 0xE571 + name: Er + category: Letter/Cyrillic Capital + unicode: [0x420] +- + code: 0xE572 + name: Es + category: Letter/Cyrillic Capital + unicode: [0x421] +- + code: 0xE573 + name: Te + category: Letter/Cyrillic Capital + unicode: [0x422] +- + code: 0xE574 + name: U + category: Letter/Cyrillic Capital + unicode: [0x423] +- + code: 0xE575 + name: Ef + category: Letter/Cyrillic Capital + unicode: [0x424] +- + code: 0xE576 + name: Ha + category: Letter/Cyrillic Capital + unicode: [0x425] +- + code: 0xE577 + name: Tse + category: Letter/Cyrillic Capital + unicode: [0x426] +- + code: 0xE578 + name: Che + category: Letter/Cyrillic Capital + unicode: [0x427] +- + code: 0xE579 + name: Sha + category: Letter/Cyrillic Capital + unicode: [0x428] +- + code: 0xE57A + name: Shcha + category: Letter/Cyrillic Capital + unicode: [0x429] +- + code: 0xE57B + name: Hard Sign + category: Letter/Cyrillic Capital + unicode: [0x42A] +- + code: 0xE57C + name: Yeru + category: Letter/Cyrillic Capital + unicode: [0x42B] +- + code: 0xE57D + name: Soft Sign + category: Letter/Cyrillic Capital + unicode: [0x42C] +- + code: 0xE57E + name: E + category: Letter/Cyrillic Capital + unicode: [0x42D] + +# TODO +- + code: 0xE580 + name: Yu + category: Letter/Cyrillic Capital + unicode: [0x42E] +- + code: 0xE581 + name: Ya + category: Letter/Cyrillic Capital + unicode: [0x42F] +- + code: 0xE582 + name: Ukrainian Ie + category: Letter/Cyrillic Capital + unicode: [0x404] +- + code: 0xE590 + name: Inverted Exclamation Mark + unicode: [0xA1] + ascii: '¡' +- + code: 0xE591 + name: Inverted Question Mark + unicode: [0xBF] + ascii: '¿' +- + code: 0xE592 + name: Euro + category: Sign + unicode: [0x20AC] + ascii: '€' +- + code: 0xE593 + name: F with hook + category: Letter/Latin Small + unicode: [0x192] + ascii: 'ƒ' +- + code: 0xE594 + name: Horizontal Ellipsis + unicode: [0x2026] + ascii: '…' +- + code: 0xE595 + name: Left Single Quotation Mark + unicode: [0x2018] + ascii: '‘' +- + code: 0xE596 + name: Right Single Quotation Mark + unicode: [0x2019] + ascii: '’' +- + code: 0xE597 + name: Left Double Quotation Mark + unicode: [0x201C] + ascii: '“' +- + code: 0xE598 + name: Right Double Quotation Mark + unicode: [0x201D] + ascii: '”' +- + code: 0xE599 + name: Cent + category: Sign + unicode: [0xA2] + ascii: '¢' +- + code: 0xE59A + name: Pound + category: Sign + unicode: [0xA3] + ascii: '£' +- + code: 0xE59B + name: Currency + category: Sign + unicode: [0xA4] + ascii: '¤t;' +- + code: 0xE59C + name: Yen + category: Sign + unicode: [0xA5] + ascii: '¥' +- + code: 0xE59D + name: Section + category: Sign + unicode: [0xA7] + ascii: '§' +- + code: 0xE59E + name: C + category: Letter/Latin Capital/Squared/Negative + unicode: [0x1F172] +- + code: 0xE59F + name: Continuous Underline + category: Symbol + unicode: [0x2381] +- + code: 0xE5A0 + name: Logical not + category: Sign + unicode: [0xAC] + ascii: '¬' +- + code: 0xE5A1 + name: R + category: Letter/Latin Capital/Squared/Negative + unicode: [0x1F181] +- + code: 0xE5A2 + name: Underline degree + unicode: [0xB0, 0x331] +- + code: 0xE5A3 + name: Left-Pointing Double Angle Quotation Mark + unicode: [0xAB] + ascii: '«' +- + code: 0xE5A4 + name: Right-Pointing Double Angle Quotation Mark + unicode: [0xBB] + ascii: '&lrquo;' +- + code: 0xE5A5 + name: While Small Square + unicode: [0x25AB] +- + code: 0xE5A6 + name: Cross Mark + unicode: [0x274C] +- + code: 0xE5A7 + name: Middle Dot + unicode: [0xB7] + ascii: '·' + +# TODO +- # FIXME: 'e'? + code: 0xE5B0 + name: Euler constant + unicode: [0x65] + id: euler +- + code: 0xE5B1 + name: Probability + unicode: [0x50] +- + code: 0xE5B2 + name: r (GRAPH) +- + code: 0xE5B3 + name: X (GRAPH) +- + code: 0xE5B4 + name: Y (GRAPH) +- + code: 0xE5B5 + name: B + category: Letter/Latin Capital/Squared/Negative + unicode: [0x1F171] +- + code: 0xE5B6 + name: A + category: Letter/Latin Capital/Squared/Negative + unicode: [0x1F170] +- + code: 0xE5B7 + name: L + category: Letter/Latin Capital/Squared/Negative + unicode: [0x1F17B] +- + code: 0xE5B8 + name: Negative Equals + category: Sign + unicode: [0x2338] + ascii: "(neg. =)" +- + code: 0xE5B9 + name: Negative Less-Than + category: Sign + unicode: [0x2343] + ascii: "(neg. <)" +- + code: 0xE5BA + name: Negative Greater-Than + category: Sign + unicode: [0x2344] + ascii: "(neg. >)" +- + code: 0xE5BB + name: Negative Less-Than or Equal-To + category: Sign + ascii: "(neg. <=)" +- + code: 0xE5BC + name: Negative Greater-Than or Equal-To + category: Sign + ascii: "(neg. >=)" +- + code: 0xE5BD + name: Bigger comma +- + code: 0xE5BE + name: More or less +- + code: 0xE5BF + name: Less or more +- + code: 0xE5C0 + name: Zero + category: Superscript + unicode: [0x2070] + ascii: '^0' +- + code: 0xE5C1 + name: One + category: Superscript + unicode: [0xB9] + ascii: '^1' +- + code: 0xE5C2 + name: Two + category: Superscript + unicode: [0xB2] + ascii: '^2' +- + code: 0xE5C3 + name: Three + category: Superscript + unicode: [0xB3] + ascii: '^3' +- + code: 0xE5C4 + name: Four + category: Superscript + unicode: [0x2074] + ascii: '^4' +- + code: 0xE5C5 + name: Five + category: Superscript + unicode: [0x2075] + ascii: '^5' +- + code: 0xE5C6 + name: Six + category: Superscript + unicode: [0x2076] + ascii: '^6' +- + code: 0xE5C7 + name: Seven + category: Superscript + unicode: [0x2077] + ascii: '^7' +- + code: 0xE5C8 + name: Eight + category: Superscript + unicode: [0x2078] + ascii: '^8' +- + code: 0xE5C9 + name: Nine + category: Superscript + unicode: [0x2079] + ascii: '^9' +- + code: 0xE5CA + name: Minus One + category: Superscript + unicode: [0x207B, 0xB9] + ascii: '^-1' +- + code: 0xE5CB + name: Plus + category: Superscript/Sign + unicode: [0x207A] + ascii: '^+' +- + code: 0xE5CC + name: Minus + category: Superscript/Sign + unicode: [0x207B] + ascii: '^-' +- + code: 0xE5CD + name: Zero + category: Subscript/Small + ascii: '_(small 0)' +- + code: 0xE5CE + name: One + category: Subscript/Small + ascii: '_(small 1)' +- + code: 0xE5CF + name: Two + category: Subscript/Small + ascii: '_(small 2)' +- + code: 0xE5D0 + name: Zero + category: Subscript + unicode: [0x2080] + ascii: '_0' +- + code: 0xE5D1 + name: One + category: Subscript + unicode: [0x2081] + ascii: '_1' +- + code: 0xE5D2 + name: Two + category: Subscript + unicode: [0x2082] + ascii: '_2' +- + code: 0xE5D3 + name: Three + category: Subscript + unicode: [0x2083] + ascii: '_3' +- + code: 0xE5D4 + name: Four + category: Subscript + unicode: [0x2084] + ascii: '_4' +- + code: 0xE5D5 + name: Five + category: Subscript + unicode: [0x2085] + ascii: '_5' +- + code: 0xE5D6 + name: Six + category: Subscript + unicode: [0x2086] + ascii: '_6' +- + code: 0xE5D7 + name: Seven + category: Subscript + unicode: [0x2087] + ascii: '_7' +- + code: 0xE5D8 + name: Eight + category: Subscript + unicode: [0x2088] + ascii: '_8' +- + code: 0xE5D9 + name: Nine + category: Subscript + unicode: [0x2089] + ascii: '_9' +- + code: 0xE5DA + name: Minus One + category: Subscript + unicode: [0x208B, 0x2081] + ascii: '_-1' +- + code: 0xE5DB + name: Plus + category: Subscript/Sign + unicode: [0x208A] + ascii: '_+' +- + code: 0xE5DC + name: Minus + category: Subscript/Sign + unicode: [0x208B] + ascii: '_-' +- + code: 0xE5DD + name: Little star +- + code: 0xE5DE + name: Little n +- + code: 0xE5DF + name: Special Superscript 3 Sign + +# TODO: finish here +#******************************************************************************# +# 0xE6 characters # +#******************************************************************************# +# TODO +- + code: 0xE601 + name: A with grave + category: Letter/Latin Small + unicode: [0xE0] + id: a_grave + ascii: 'à' +- + code: 0xE602 + name: A with acute + category: Letter/Latin Small + unicode: [0xE1] + id: a_acute + ascii: 'á' +- + code: 0xE603 + name: A with circumflex + category: Letter/Latin Small + unicode: [0xE2] + id: a_circumflex + ascii: 'â' +- + code: 0xE604 + name: A with tilde + category: Letter/Latin Small + unicode: [0xE3] + id: a_tilde + ascii: 'ã' +- + code: 0xE605 + name: A with diaeresis + category: Letter/Latin Small + unicode: [0xE4] + id: a_diaeresis + ascii: 'ä' +- + code: 0xE606 + name: A with ring above + category: Letter/Latin Small + unicode: [0xE5] + id: a_ring + ascii: 'å' +- + code: 0xE607 + name: A le + category: Ligature/Latin Small + unicode: [0xE6] + id: ae + ascii: 'æ' +- + code: 0xE608 + name: C with cedilla + category: Letter/Latin Small + unicode: [0xE7] + id: c_cedilla + ascii: 'ç' +- + code: 0xE609 + name: E with grave + category: Letter/Latin Small + unicode: [0xE8] + id: e_grave + ascii: 'è' +- + code: 0xE60A + name: E with acute + category: Letter/Latin Small + unicode: [0xE9] + id: e_acute + ascii: 'é' +- + code: 0xE60B + name: E with circumflex + category: Letter/Latin Small + unicode: [0xEA] + id: e_circumflex + ascii: 'ê' +- + code: 0xE60C + name: E with diaeresis + category: Letter/Latin Small + unicode: [0xEB] + id: e_diaeresis + ascii: 'ë' +- + code: 0xE60D + name: I with grave + category: Letter/Latin Small + unicode: [0xEC] + id: i_grave + ascii: 'ì' +- + code: 0xE60E + name: I with acute + category: Letter/Latin Small + unicode: [0xED] + id: i_acute + ascii: 'í' +- + code: 0xE60F + name: I with circumflex + category: Letter/Latin Small + unicode: [0xEE] + id: i_circumflex + ascii: 'î' +- + code: 0xE610 + name: I with diaeresis + category: Letter/Latin Small + unicode: [0xEF] + id: i_diaeresis + ascii: 'ï' +- + code: 0xE611 + name: Eth + category: Letter/Latin Small + unicode: [0xF0] + id: eth + ascii: 'ð' +- + code: 0xE612 + name: N with tilde + category: Letter/Latin Small + unicode: [0xF1] + id: n_tilde + ascii: 'ñ' +- + code: 0xE613 + name: O with grave + category: Letter/Latin Small + unicode: [0xF2] + id: o_grave + ascii: 'ò' +- + code: 0xE614 + name: O with acute + category: Letter/Latin Small + unicode: [0xF3] + id: o_acute + ascii: 'ó' +- + code: 0xE615 + name: O with circumflex + category: Letter/Latin Small + unicode: [0xF4] + id: o_circumflex + ascii: 'ô' +- + code: 0xE616 + name: O with tilde + category: Letter/Latin Small + unicode: [0xF5] + id: o_tilde + ascii: 'õ' +- + code: 0xE617 + name: O with diaeresis + category: Letter/Latin Small + unicode: [0xF6] + id: o_diaeresis + ascii: 'ö' +- + code: 0xE618 + name: O with stroke + category: Letter/Latin Small + unicode: [0xF7] + id: o_stroke + ascii: 'ø' +- + code: 0xE619 + name: U with grave + category: Letter/Latin Small + unicode: [0xF8] + id: u_grave + ascii: 'ù' +- + code: 0xE61A + name: U with acute + category: Letter/Latin Small + unicode: [0xF9] + id: u_acute + ascii: 'ú' +- + code: 0xE61B + name: U with circumflex + category: Letter/Latin Small + unicode: [0xFA] + id: u_circumflex + ascii: 'û' +- + code: 0xE61C + name: U with diaeresis + category: Letter/Latin Small + unicode: [0xFB] + id: u_diaeresis + ascii: 'ü' +- + code: 0xE61D + name: Y with acute + category: Letter/Latin Small + unicode: [0xFC] + id: y_acute + ascii: 'ý' +- + code: 0xE61E + name: Thorn + category: Letter/Latin Small + unicode: [0xFD] + id: thorn + ascii: 'þ' +- + code: 0xE61F + name: Sharp S + category: Letter/Latin Small + unicode: [0xDF] + id: sharp_s + ascii: 'š' +- + code: 0xE620 + name: Y with diaeresis + category: Letter/Latin Small + unicode: [0x79, 0x308] + id: y_diaeresis + ascii: 'ÿ' +- + code: 0xE621 + name: A with breve + category: Letter/Latin Small + unicode: [0x103] + id: a_breve +- + code: 0xE622 + name: A with cedilla + category: Letter/Latin Small + unicode: [0x61, 0x327] + id: a_cedilla +- + code: 0xE623 + name: C with acute + category: Letter/Latin Small + unicode: [0x107] + id: c_acute +- + code: 0xE624 + name: C with circumflex + category: Letter/Latin Small + unicode: [0x109] + id: c_circumflex +- + code: 0xE625 + name: Oe + category: Ligature/Latin Small + unicode: [0x153] + id: oe +- + code: 0xE626 + name: D with breve + category: Letter/Latin Small + unicode: [0x64, 0x306] + id: d_breve +- + code: 0xE627 + name: E with cedilla + category: Letter/Latin Small + unicode: [0x229] + id: e_cedilla +- + code: 0xE628 + name: E with breve + category: Letter/Latin Small + unicode: [0x65, 0x306] + id: e_breve +- + code: 0xE629 + name: L with stroke + category: Letter/Latin Small + unicode: [0x142] + id: l_stroke +- + code: 0xE62A + name: N with acute + category: Letter/Latin Small + unicode: [0x144] + id: n_acute +- + code: 0xE62B + name: N with breve + category: Letter/Latin Small + unicode: [0x6E, 0x306] + id: n_breve +- + code: 0xE62C + name: O with double acute + category: Letter/Latin Small + unicode: [0x6F, 0x30B] + id: o_acute2 +- + code: 0xE62D + name: R with breve + category: Letter/Latin Small + unicode: [0x72, 0x306] + id: r_breve +- + code: 0xE62E + name: S with acute + category: Letter/Latin Small + unicode: [0x15B] + id: s_acute +- + code: 0xE62F + name: S with breve + category: Letter/Latin Small + unicode: [0x73, 0x306] + id: s_breve +- + code: 0xE630 + name: T with breve + category: Letter/Latin Small + unicode: [0x74, 0x306] + id: t_breve +- + code: 0xE631 + name: O with ring above + category: Letter/Latin Small + unicode: [0x6F, 0x30A] + id: o_ring +- + code: 0xE632 + name: U with double acute + category: Letter/Latin Small + unicode: [0x75, 0x30B] + id: u_acute2 +- + code: 0xE633 + name: Z with acute + category: Letter/Latin Small + unicode: [0x7A, 0x301] + id: z_acute +- + code: 0xE634 + name: Z with dot above + category: Letter/Latin Small + unicode: [0x7A, 0x307] + id: z_dot +- + code: 0xE635 + name: Z with breve + category: Letter/Latin Small + unicode: [0x7A, 0x306] + id: z_breve + +# TODO +- + code: 0xE640 + name: Alpha + category: Letter/Greek Small + unicode: [0x251] + ascii: 'α' +- + code: 0xE641 + name: Beta + category: Letter/Greek Small + unicode: [0x3B2] + ascii: 'β' +- + code: 0xE642 + name: Gamma + category: Letter/Greek Small + unicode: [0x3B3] + ascii: 'γ' +- + code: 0xE643 + name: Delta + category: Letter/Greek Small + unicode: [0x3B4] + ascii: 'δ' +- + code: 0xE644 + name: Epsilon + category: Letter/Greek Small + unicode: [0x3B5] + ascii: 'ε' +- + code: 0xE645 + name: Zeta + category: Letter/Greek Small + unicode: [0x3B6] + ascii: 'ζ' +- + code: 0xE646 + name: Eta + category: Letter/Greek Small + unicode: [0x3B7] + ascii: 'η' +- + code: 0xE647 + name: Theta + category: Letter/Greek Small + unicode: [0x3B8] + ascii: 'θ' +- + code: 0xE648 + name: Iota + category: Letter/Greek Small + unicode: [0x3B9] + ascii: 'ι' +- + code: 0xE649 + name: Kappa + category: Letter/Greek Small + unicode: [0x3BA] + ascii: 'κ' +- + code: 0xE64A + name: Lambda + category: Letter/Greek Small + unicode: [0x3BB] + ascii: 'λ' +- + code: 0xE64B + name: Mu + category: Letter/Greek Small + unicode: [0x3BC] + ascii: 'μ' +- + code: 0xE64C + name: Nu + category: Letter/Greek Small + unicode: [0x3BD] + ascii: 'ν' +- + code: 0xE64D + name: Xi + category: Letter/Greek Small + unicode: [0x3BE] + ascii: 'ξ' +- + code: 0xE64E + name: Omicron + category: Letter/Greek Small + unicode: [0x3BF] + ascii: 'ο' +- + code: 0xE64F + name: Pi + category: Letter/Greek Small +- + code: 0xE650 + name: Pi + category: Letter/Greek Small + unicode: [0x3C0] + ascii: 'π' +- + code: 0xE651 + name: Rho + category: Letter/Greek Small + unicode: [0x3C1] + ascii: 'ρ' +- + code: 0xE652 + name: Sigma + category: Letter/Greek Small + unicode: [0x3C2] + ascii: 'σ' +- + code: 0xE653 + name: Tau + category: Letter/Greek Small + unicode: [0x3C4] + ascii: 'τ' +- + code: 0xE654 + name: Upsilon + category: Letter/Greek Small + unicode: [0x3C5] + ascii: 'υ' +- + code: 0xE655 + name: Phi + category: Letter/Greek Small + unicode: [0x3C6] + ascii: 'φ' +- + code: 0xE656 + name: Chi + category: Letter/Greek Small + unicode: [0x3C7] + ascii: 'χ' +- + code: 0xE657 + name: Psi + category: Letter/Greek Small + unicode: [0x3C8] + ascii: 'ψ' +- + code: 0xE658 + name: Omega + category: Letter/Greek Small + unicode: [0x3C9] + ascii: 'ω' + +# TODO +- + code: 0xE660 + name: A + category: Letter/Cyrillic Small + unicode: [0x430] +- + code: 0xE661 + name: Be + category: Letter/Cyrillic Small + unicode: [0x431] +- + code: 0xE662 + name: Ve + category: Letter/Cyrillic Small + unicode: [0x432] +- + code: 0xE663 + name: Ghe + category: Letter/Cyrillic Small + unicode: [0x433] +- + code: 0xE664 + name: De + category: Letter/Cyrillic Small + unicode: [0x434] +- + code: 0xE665 + name: Ie + category: Letter/Cyrillic Small + unicode: [0x435] +- + code: 0xE666 + name: Io + category: Letter/Cyrillic Small + unicode: [0x451] +- + code: 0xE667 + name: Zhe + category: Letter/Cyrillic Small + unicode: [0x436] +- + code: 0xE668 + name: Ze + category: Letter/Cyrillic Small + unicode: [0x437] +- + code: 0xE669 + name: I + category: Letter/Cyrillic Small + unicode: [0x438] +- + code: 0xE66A + name: Short I + category: Letter/Cyrillic Small + unicode: [0x439] +- + code: 0xE66B + name: Ka + category: Letter/Cyrillic Small + unicode: [0x43A] +- + code: 0xE66C + name: El + category: Letter/Cyrillic Small + unicode: [0x43B] +- + code: 0xE66D + name: Em + category: Letter/Cyrillic Small + unicode: [0x43C] +- + code: 0xE66E + name: En + category: Letter/Cyrillic Small + unicode: [0x43D] +- + code: 0xE66F + name: O + category: Letter/Cyrillic Small + unicode: [0x43E] +- + code: 0xE670 + name: Pe + category: Letter/Cyrillic Small + unicode: [0x43F] +- + code: 0xE671 + name: Er + category: Letter/Cyrillic Small + unicode: [0x440] +- + code: 0xE672 + name: Es + category: Letter/Cyrillic Small + unicode: [0x441] +- + code: 0xE673 + name: Te + category: Letter/Cyrillic Small + unicode: [0x442] +- + code: 0xE674 + name: U + category: Letter/Cyrillic Small + unicode: [0x443] +- + code: 0xE675 + name: Ef + category: Letter/Cyrillic Small + unicode: [0x444] +- + code: 0xE676 + name: Ha + category: Letter/Cyrillic Small + unicode: [0x445] +- + code: 0xE677 + name: Tse + category: Letter/Cyrillic Small + unicode: [0x446] +- + code: 0xE678 + name: Che + category: Letter/Cyrillic Small + unicode: [0x447] +- + code: 0xE679 + name: Sha + category: Letter/Cyrillic Small + unicode: [0x448] +- + code: 0xE67A + name: Shcha + category: Letter/Cyrillic Small + unicode: [0x449] +- + code: 0xE67B + name: Hard Sign + category: Letter/Cyrillic Small + unicode: [0x44A] +- + code: 0xE67C + name: Yeru + category: Letter/Cyrillic Small + unicode: [0x44B] +- + code: 0xE67D + name: Soft Sign + category: Letter/Cyrillic Small + unicode: [0x44C] +- + code: 0xE67E + name: E + category: Letter/Cyrillic Small + unicode: [0x44D] + +# TODO +- + code: 0xE680 + name: Yu + category: Letter/Cyrillic Small + unicode: [0x44E] +- + code: 0xE681 + name: Ya + category: Letter/Cyrillic Small + unicode: [0x44F] +- + code: 0xE682 + name: Ukrainian Ie + category: Letter/Cyrillic Small + unicode: [0x454] +- + code: 0xE690 + name: Leftwards Arrow + unicode: [0x2190] + ascii: '<-' +- + code: 0xE691 + name: Rightwards Arrow + unicode: [0x2192] + ascii: '->' +- + code: 0xE692 + name: Upwards Arrow + unicode: [0x2191] + ascii: (up-arrow) +- + code: 0xE693 + name: Downwards Arrow + unicode: [0x2193] + ascii: (down-arrow) +- + code: 0xE694 + name: Left Right Arrow + unicode: [0x2194] + ascii: '<->' +- + code: 0xE695 + name: Up Down Arrow + unicode: [0x2195] + ascii: (up-down-arrow) +- + code: 0xE696 + name: North West Arrow + unicode: [0x2196] + ascii: (nw-arrow) +- + code: 0xE697 + name: North East Arrow + unicode: [0x2197] + ascii: (ne-arrow) +- + code: 0xE698 + name: South East Arrow + unicode: [0x2198] + ascii: (se-arrow) +- + code: 0xE699 + name: South West Arrow + unicode: [0x2199] + ascii: (sw-arrow) +- + code: 0xE69A + name: Black Left-Pointing Triangle + unicode: [0x25C0] + ascii: (<) +- + code: 0xE69B + name: Black Right-Pointing Triangle + unicode: [0x25B6] + ascii: (>) +- + code: 0xE69C + name: Black Up-Pointing Triangle + unicode: [0x25B2] + ascii: (^) +- + code: 0xE69D + name: Black Down-Pointing Triangle + unicode: [0x25B] + ascii: (v) +- + code: 0xE69E + name: Rightwards Triangle Arrowhead + unicode: [0x1F892] +- + code: 0xE69F + name: White Right-Pointing Small Triangle + unicode: [0x25B7] +- + code: 0xE6A0 + name: Division Times + unicode: [0x22C7] +- + code: 0xE6A1 + name: Left Black Lenticular Bracket + unicode: [0x3010] +- + code: 0xE6A2 + name: Right Black Lenticular Bracket + unicode: [0x3011] +- + code: 0xE6A3 + name: White Circle + unicode: [0x25CB] +- + code: 0xE6A4 + name: Black Circle + unicode: [0x25CF] +- + code: 0xE6A5 + name: White Square + unicode: [0x25A1] +- + code: 0xE6A6 + name: Black Square + unicode: [0x25A0] +- + code: 0xE6A7 + name: White Diamond Suit + unicode: [0x2662] +- + code: 0xE6A8 + name: Black Diamond Suit + unicode: [0x2666] +- + code: 0xE6A9 + name: Squared Times + unicode: [0x22A0] +- + code: 0xE6AA + name: Bullet Operator + unicode: [0x2219] +#- +# code: 0xE6AB +# name: Short Left Tack +# unicode: [0x2ADE] +#- +# code: 0xE6AC +# name: White Up-Pointing Small Triangle +# unicode: [0x25B5] +#- +# code: 0xE6AD +# name: White Down-Pointing Small Triangle +# unicode: [0x25BF] +#- +# code: 0xE6AE +# name: White Right-Pointing Triangle +# unicode: [0x25B7] +#- +# code: 0xE6AF +# name: White Left-Pointing Triangle +# unicode: [0x25C1] +- + code: 0xE6B0 + name: Approximately Equal To or the Image Of + unicode: [0x2252] +- + code: 0xE6B1 + name: Almost Equal To + unicode: [0x2248] + ascii: '≈' +- + code: 0xE6B2 + name: Identical To + unicode: [0x2261] + ascii: '≡' +- + code: 0xE6B3 + name: Not Identical To + unicode: [0x2262] +- + code: 0xE6B4 + name: Approximately Equal To + unicode: [0x2245] + ascii: '≅' +- + code: 0xE6B5 + name: Reversed Tilde + unicode: [0x223D] +- + code: 0xE6B6 + name: Proportional To + unicode: [0x221D] + ascii: '∝' +- + code: 0xE6B7 + name: Double Integral + unicode: [0x222C] +- + code: 0xE6B8 + name: Contour Integral + unicode: [0x222E] +- + code: 0xE6B9 + name: Partial Differential + unicode: [0x2202] + ascii: '∂' + +# TODO +- + code: 0xE6BB + name: Integral + unicode: [0x222B] + ascii: '∫' +- + code: 0xE6BC + name: Measured Angle + unicode: [0x2221] +- + code: 0xE6BD + name: Element Of + unicode: [0x2208] + ascii: '∈' +- + code: 0xE6BE + name: Contains As Member + unicode: [0x220B] + ascii: '∋' +- + code: 0xE6BF + name: Subset of or Equal To + unicode: [0x2286] + ascii: '⊆' +- + code: 0xE6C0 + name: Superset of or Equal To + unicode: [0x2287] + ascii: '⊇' +- + code: 0xE6C1 + name: Subset Of + unicode: [0x2282] + ascii: '⊂' +- + code: 0xE6C2 + name: Superset Of + unicode: [0x2283] + ascii: '⊃' +- + code: 0xE6C3 + name: N-Ary Union + unicode: [0x22C3] +- + code: 0xE6C4 + name: N-Ary Intersection + unicode: [0x22C2] +- + code: 0xE6C5 + name: Not an Element Of + unicode: [0x2209] + ascii: '∉' +- + code: 0xE6C6 + name: Does Not Contain As Member + unicode: [0x220C] +- + code: 0xE6C7 + name: Neither a Subset of nor Equal To + unicode: [0x2288] +- + code: 0xE6C8 + name: Neither a Superset of nor Equal To + unicode: [0x2289] +- + code: 0xE6C9 + name: Not a Subset Of + unicode: [0x2284] + ascii: '⊄' +- + code: 0xE6CA + name: Not a Superset Of + unicode: [0x2285] +- + code: 0xE6CB + name: Empty Set + unicode: [0x2205] + ascii: '∅' +- + code: 0xE6CC + name: There Exists + unicode: [0x2203] + ascii: '&exists;' +- + code: 0xE6CD + name: Right Angle + unicode: [0x221F] +- + code: 0xE6CE + name: Logical Or + unicode: [0x2228] + ascii: '∨' +- + code: 0xE6CF + name: Logical And + unicode: [0x2227] + ascii: '∧' +- + code: 0xE6D0 + name: For All + unicode: [0x2200] + ascii: '∀' +- + code: 0xE6D1 + name: Circled Plus + unicode: [0x2295] + ascii: '⊕' +- + code: 0xE6D2 + name: Circled Minus + unicode: [0x2296] +- + code: 0xE6D3 + name: Circled Times + unicode: [0x2297] + ascii: '⊗' +- + code: 0xE6D4 + name: Circled Division Slash + unicode: [0x2298] +- + code: 0xE6D5 + name: Up Tack + unicode: [0x27C2] + ascii: '⊥' +- + code: 0xE6D6 + name: Between + unicode: [0x226C] +- + code: 0xE6D7 + name: Parallel To + unicode: [0x2225] +- + code: 0xE6D8 + name: Not Parallel To + unicode: [0x2226] +- + code: 0xE6D9 + name: Double Solidus Operator + unicode: [0x2AFD] +- + code: 0xE6DA + name: White Down-Pointing Triangle + unicode: [0x25BD] +- + code: 0xE6DB + name: Therefore + unicode: [0x2234] + ascii: '∴' +- + code: 0xE6DC + name: Because + unicode: [0x2235] +- + code: 0xE6DD + name: Prime + unicode: [0x2032] + ascii: '′' +- + code: 0xE6DE + name: Double Prime + unicode: [0x2033] + ascii: '″' + +# TODO: continue here +#******************************************************************************# +# 0xE7 characters # +#******************************************************************************# +# TODO +- + code: 0xE701 + name: Nanosecond + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6E, 0x73, 0x5D] +- + code: 0xE702 + name: Microsecond + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0xE64B, 0x73, 0x5D] +- + code: 0xE703 + name: Millisecond + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x73, 0x5D] +- + code: 0xE704 + name: Second + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x73, 0x5D] +- + code: 0xE705 + name: Minute + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x69, 0x6E, 0x5D] +- + code: 0xE706 + name: Hour + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x68, 0x5D] +- + code: 0xE707 + name: Day + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x64, 0x61, 0x79, 0x5D] +- + code: 0xE708 + name: Week + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x77, 0x65, 0x65, 0x6B, 0x5D] +- + code: 0xE709 + name: Year + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x79, 0x72, 0x5D] +- + code: 0xE70A + name: Sideral year + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x73, 0x2D, 0x79, 0x72, 0x5D] +- + code: 0xE70B + name: tropical year + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x74, 0x2D, 0x79, 0x72, 0x5D] +- + code: 0xE70C + name: Gradian + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x8C, 0x43, 0x5D] +- + code: 0xE70D + name: Kelvin Degree + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x4B, 0x5D] +- + code: 0xE70E + name: Fahrenheit Degree + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x8C, 0x46, 0x5D] +- + code: 0xE70F + name: Rankine Degree + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x8C, 0x52, 0x5D] +- + code: 0xE710 + name: Unified Atomic Mass + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x75, 0x5D] +- + code: 0xE711 + name: Gram + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x67, 0x5D] +- + code: 0xE712 + name: Kilogram + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x67, 0x5D] +- + code: 0xE713 + name: Pound + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6C, 0x62, 0x5D] +- + code: 0xE714 + name: Ounce + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6F, 0x7A, 0x5D] +- + code: 0xE715 + name: Slug + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x73, 0x6C, 0x75, 0x67, 0x5D] +- + code: 0xE716 + name: Short Ton + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x74, 0x6F, 0x6E, 0x28, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x29, 0x5D] +- + code: 0xE717 + name: Long Ton + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x74, 0x6F, 0x6E, 0x28, 0x6C, 0x6F, 0x6E, 0x67, 0x29, 0x5D] + +# TODO +- + code: 0xE719 + name: Measurement Ton + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x74, 0x6F, 0x6E, 0x5D] +- + code: 0xE71A + name: Atmosphere Litre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6C, 0x2D, 0x61, 0x74, 0x6D, 0x5D] +- + code: 0xE71B + name: Foot-pound + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x66, 0x74, 0xE6AA, 0x6C, 0x62, 0x66, 0x5D] +- + code: 0xE71C + name: International Steam Table Calorie + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x63, 0x61, 0x6C, 0xE749, 0xE754, 0x5D] +- + code: 0xE71D + name: Thermochemical calorie + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x63, 0x61, 0x6C, 0xE774, 0xE768, 0x5D] +- + code: 0xE71E + name: British Thermal + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x42, 0x74, 0x75, 0x5D] +- + code: 0xE71F + name: Kilowatt per Hour + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x57, 0xE6AA, 0x68, 0x5D] +- + code: 0xE720 + name: Kilogram-force meter + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x67, 0x66, 0xE6AA, 0x6D, 0x5D] +- + code: 0xE721 + name: Pascal + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x50, 0x61, 0x5D] +- + code: 0xE722 + name: Kilopascal + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x50, 0x61, 0x5D] +- + code: 0xE723 + name: Bar + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x62, 0x61, 0x72, 0x5D] +- + code: 0xE724 + name: Millimeter of Water + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x6D, 0x48, 0xE5D2, 0x4F, 0x5D] +- + code: 0xE725 + name: Millimeter of mercury + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x6D, 0x48, 0x67, 0x5D] +- + code: 0xE726 + name: Inch of Water + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x69, 0x6E, 0x48, 0xE5D2, 0x4F, 0x5D] +- + code: 0xE727 + name: Inch of Mercury + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x69, 0x6E, 0x48, 0x67, 0x5D] +- + code: 0xE728 + name: Pound per Square Inch + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6C, 0x62, 0x66, 0x2F, 0x69, 0x6E, 0xE5C2, 0x5D] +- + code: 0xE729 + name: Kilogram-force per Square Centimetre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x67, 0x66, 0x2F, 0x63, 0x6D, 0xE5C2, 0x5D] +- + code: 0xE72A + name: Atmosphere + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x61, 0x74, 0x6D, 0x5D] +- + code: 0xE72B + name: Dyne + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x64, 0x79, 0x6E, 0x65, 0x5D] +- + code: 0xE72C + name: Newton + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x4E, 0x5D] +- + code: 0xE72D + name: Kilogram-force + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x67, 0x66, 0x5D] +- + code: 0xE72E + name: Pound + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6C, 0x62, 0x66, 0x5D] +- + code: 0xE72F + name: Ton-force + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x74, 0x6F, 0x6E, 0x66, 0x5D] + +# TODO +- + code: 0xE741 + name: A + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_A + ascii: (mini A) +- + code: 0xE742 + name: B + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_B + ascii: (mini B) +- + code: 0xE743 + name: C + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_C + ascii: (mini C) +- + code: 0xE744 + name: D + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_D + ascii: (mini D) +- + code: 0xE745 + name: E + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_E + ascii: (mini E) +- + code: 0xE746 + name: F + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_F + ascii: (mini F) +- + code: 0xE747 + name: G + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_G + ascii: (mini G) +- + code: 0xE748 + name: H + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_H + ascii: (mini H) +- + code: 0xE749 + name: I + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_I + ascii: (mini I) +- + code: 0xE74A + name: J + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_J + ascii: (mini J) +- + code: 0xE74B + name: K + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_K + ascii: (mini K) +- + code: 0xE74C + name: L + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_L + ascii: (mini L) +- + code: 0xE74D + name: M + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_M + ascii: (mini M) +- + code: 0xE74E + name: N + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_N + ascii: (mini N) +- + code: 0xE74F + name: O + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_O + ascii: (mini O) +- + code: 0xE750 + name: P + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_P + ascii: (mini P) +- + code: 0xE751 + name: Q + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_Q + ascii: (mini Q) +- + code: 0xE752 + name: R + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_R + ascii: (mini R) +- + code: 0xE753 + name: S + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_S + ascii: (mini S) +- + code: 0xE754 + name: T + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_T + ascii: (mini T) +- + code: 0xE755 + name: U + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_U + ascii: (mini U) +- + code: 0xE756 + name: V + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_V + ascii: (mini V) +- + code: 0xE757 + name: W + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_W + ascii: (mini W) +- + code: 0xE758 + name: X + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_X + ascii: (mini X) +- + code: 0xE759 + name: Y + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_Y + ascii: (mini Y) +- + code: 0xE75A + name: Z + category: Letter/Latin Capital/Mini + set: CASIOWIN_2.00 + id: mini_Z + ascii: (mini Z) +#- +# code: 0xE75B +# name: Mini Left Square Bracket +# set: CASIOWIN_2.00 +# id: mini_lbrac +#- +# code: 0xE75C +# name: Mini Reverse Solidus +# set: CASIOWIN_2.00 +# id: mini_revslash +#- +# code: 0xE75D +# name: Mini Right Square Bracket +# set: CASIOWIN_2.00 +# id: mini_rbrac +#- +# code: 0xE75E +# name: Mini Circumflex Accent +# set: CASIOWIN_2.00 +# id: mini_circum +#- +# code: 0xE75F +# name: Mini Low Line +# set: CASIOWIN_2.00 +# id: mini_underscore +#- +# code: 0xE760 +# name: Mini Grave Accent +# set: CASIOWIN_2.00 +# id: mini_grave +- + code: 0xE761 + name: A + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_a + ascii: (mini a) +- + code: 0xE762 + name: B + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_b + ascii: (mini b) +- + code: 0xE763 + name: C + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_c + ascii: (mini c) +- + code: 0xE764 + name: D + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_d + ascii: (mini d) +- + code: 0xE765 + name: E + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_e + ascii: (mini e) +- + code: 0xE766 + name: F + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_f + ascii: (mini f) +- + code: 0xE767 + name: G + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_g + ascii: (mini g) +- + code: 0xE768 + name: H + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_h + ascii: (mini h) +- + code: 0xE769 + name: I + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_i + ascii: (mini i) +- + code: 0xE76A + name: J + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_j + ascii: (mini j) +- + code: 0xE76B + name: K + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_k + ascii: (mini k) +- + code: 0xE76C + name: L + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_l + ascii: (mini l) +- + code: 0xE76D + name: M + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_m + ascii: (mini m) +- + code: 0xE76E + name: N + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_n + ascii: (mini n) +- + code: 0xE76F + name: O + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_o + ascii: (mini o) +- + code: 0xE770 + name: P + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_p + ascii: (mini p) +- + code: 0xE771 + name: Q + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_q + ascii: (mini q) +- + code: 0xE772 + name: R + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_r + ascii: (mini r) +- + code: 0xE773 + name: S + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_s + ascii: (mini s) +- + code: 0xE774 + name: T + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_t + ascii: (mini t) +- + code: 0xE775 + name: U + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_u + ascii: (mini u) +- + code: 0xE776 + name: V + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_v + ascii: (mini v) +- + code: 0xE777 + name: W + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_w + ascii: (mini w) +- + code: 0xE778 + name: X + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_x + ascii: (mini x) +- + code: 0xE779 + name: Y + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_y + ascii: (mini y) +- + code: 0xE77A + name: Z + category: Letter/Latin Small/Mini + set: CASIOWIN_2.00 + id: mini_z + ascii: (mini z) + +# TODO +- + code: 0xE7B0 + name: Femtometre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x66, 0x6D, 0x5D] + +# TODO +- + code: 0xE7B2 + name: Millimetre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x6D, 0x5D] +- + code: 0xE7B3 + name: Centimetre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x63, 0x6D, 0x5D] +- + code: 0xE7B4 + name: Meter + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x5D] +- + code: 0xE7B5 + name: Kilometre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x6D, 0x5D] +- + code: 0xE7B6 + name: Thousandth of an Inch + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x4D, 0x69, 0x6C, 0x5D] +- + code: 0xE7B7 + name: Inch + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x69, 0x6E, 0x5D] +- + code: 0xE7B8 + name: Foot + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x66, 0x74, 0x5D] +- + code: 0xE7B9 + name: Yard + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x79, 0x64, 0x5D] +- + code: 0xE7BA + name: Fathom + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x66, 0x61, 0x74, 0x68, 0x5D] +- + code: 0xE7BB + name: Rutherford + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x72, 0x64, 0x5D] + +# TODO +- + code: 0xE7BD + name: Mile + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x69, 0x6C, 0x65, 0x5D] + +# TODO +- + code: 0xE7BF + name: Nautical Mile + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6E, 0x20, 0x6D, 0x69, 0x6C, 0x65, 0x5D] +- + code: 0xE7C0 + name: Acre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x61, 0x63, 0x72, 0x65, 0x5D] + +# TODO +- + code: 0xE7C2 + name: Hectare + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x68, 0x61, 0x5D] +- + code: 0xE7C3 + name: Square Metre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x63, 0x6D, 0xE5C2, 0x5D] +- + code: 0xE7C4 + name: Square Metre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0xE5C2, 0x5D] +- + code: 0xE7C5 + name: Square Kilometre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x6D, 0xE5C2, 0x5D] + +# TODO +- + code: 0xE7C7 + name: Square Inch + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x69, 0x6E, 0xE5C2, 0x5D] +- + code: 0xE7C8 + name: Square Foot + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x66, 0x74, 0xE5C2, 0x5D] +- + code: 0xE7C9 + name: Square Yard + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x79, 0x64, 0xE5C2, 0x5D] +- + code: 0xE7CA + name: Square Mile + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x69, 0x6C, 0x65, 0xE5C2, 0x5D] +- + code: 0xE7CB + name: Meter per Second + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x2F, 0x73, 0x5D] +- + code: 0xE7CC + name: Kilometer per Hour + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x6D, 0x2F, 0x68, 0x5D] +- + code: 0xE7CD + name: Foot per Second + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x66, 0x74, 0x2F, 0x73, 0x5D] +- + code: 0xE7CE + name: Mile per Hour + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x69, 0x6C, 0x65, 0x2F, 0x68, 0x5D] +- + code: 0xE7CF + name: Knot + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x6E, 0x6F, 0x74, 0x5D] +- + code: 0xE7D0 + name: Millilitre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x4C, 0x5D] +- + code: 0xE7D1 + name: Litre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x4C, 0x5D] +- + code: 0xE7D2 + name: Teaspoon + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x74, 0x73, 0x70, 0x5D] +- + code: 0xE7D3 + name: Cube Centimetre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x63, 0x6D, 0xE5C3, 0x5D] +- + code: 0xE7D4 + name: Cube metre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0xE5C3, 0x5D] +- + code: 0xE7D5 + name: Tablespoon + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x74, 0x62, 0x73, 0x70, 0x5D] + +# TODO +- + code: 0xE7D7 + name: Cube Inch + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x69, 0x6E, 0xE5C3, 0x5D] +- + code: 0xE7D8 + name: Cube Foot + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x66, 0x74, 0xE5C3, 0x5D] +- + code: 0xE7D9 + name: UK Fluid Ounce + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x66, 0x6C, 0x5F, 0x6F, 0x7A, 0x28, 0x55, 0x4B, 0x29, 0x5D] +- + code: 0xE7DA + name: US Fluid Ounce + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x66, 0x6C, 0x5F, 0x6F, 0x7A, 0x28, 0x55, 0x53, 0x29, 0x5D] +- + code: 0xE7DB + name: Cup + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x63, 0x75, 0x70, 0x5D] +- + code: 0xE7DC + name: Pint + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x70, 0x74, 0x5D] +- + code: 0xE7DD + name: Quart + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x71, 0x74, 0x5D] +- + code: 0xE7DE + name: US Gallon + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x67, 0x61, 0x6C, 0x28, 0x55, 0x53, 0x29, 0x5D] +- + code: 0xE7DF + name: UK Gallon + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x67, 0x61, 0x6C, 0x28, 0x55, 0x4B, 0x29, 0x5D] + +# TODO +- + code: 0xE7E2 + name: Micrometre + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0xE64B, 0x6D, 0x5D] +- + code: 0xE7E3 + name: Milligram + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6D, 0x67, 0x5D] +- + code: 0xE7E4 + name: "[Ang]" + set: CASIOWIN_2.00 + multi: [0x5B, 0xE506, 0x5D] + +# TODO +- + code: 0xE7E8 + name: Astronomical + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x41, 0x55, 0x5D] +- + code: 0xE7E9 + name: Light Year + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6C, 0x2E, 0x79, 0x2E, 0x5D] +- + code: 0xE7EA + name: Parsec + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x70, 0x63, 0x5D] +- + code: 0xE7EB + name: Foot pound per second + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x66, 0x74, 0xE6AA, 0x6C, 0x62, 0x66, 0x2F, 0x73, 0x5D] +- + code: 0xE7EC + name: Thermochemical Calorie per Second + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x63, 0x61, 0x6C, 0xE774, 0xE768, 0x2F, 0x73, 0x5D] +- + code: 0xE7ED + name: Horsepower + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x68, 0x70, 0x5D] +- + code: 0xE7EE + name: British termal unit per minute + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x42, 0x74, 0x75, 0x2F, 0x6D, 0x69, 0x6E, 0x5D] +- + code: 0xE7EF + name: Watt + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x57, 0x5D] +- + code: 0xE7F0 + name: Electronvolt + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x65, 0x56, 0x5D] +- + code: 0xE7F1 + name: Erg + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x65, 0x72, 0x67, 0x5D] +- + code: 0xE7F2 + name: Joule + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x4A, 0x5D] +- + code: 0xE7F3 + name: 15° Calorie + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x63, 0x61, 0x6C, 0xE5D1, 0xE5D5, 0x5D] +- + code: 0xE7F4 + name: 15° Kilocalorie + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x63, 0x61, 0x6C, 0xE5D1, 0xE5D5, 0x5D] +- + code: 0xE7F5 + name: Thermochemical Calorie + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x63, 0x61, 0x6C, 0xE774, 0xE768, 0x5D] + +# TODO +- + code: 0xE7FB + name: International Steam Table Calorie + category: Unit + set: CASIOWIN_2.00 + multi: [0x5B, 0x6B, 0x63, 0x61, 0x6C, 0xE749, 0xE754, 0x5D] + +# TODO: finish diff --git a/fontcharacter/reference/fonts.yml b/fontcharacter/reference/fonts.yml new file mode 100644 index 0000000..b372441 --- /dev/null +++ b/fontcharacter/reference/fonts.yml @@ -0,0 +1,12 @@ +- + id: normal + name: CASIO normal font + author: CASIO + width: 5 + height: 7 +- + id: mini + name: CASIO mini font + author: CASIO + width: 5 + height: 5 diff --git a/fontcharacter/reference/main.yml b/fontcharacter/reference/main.yml new file mode 100644 index 0000000..a939fc2 --- /dev/null +++ b/fontcharacter/reference/main.yml @@ -0,0 +1,2 @@ +version: "0.1" +source: https://github.com/planetecasio/fontcharacter_reference diff --git a/fontcharacter/reference/mini/0x7FXX.pbm b/fontcharacter/reference/mini/0x7FXX.pbm new file mode 100644 index 0000000..263c51f Binary files /dev/null and b/fontcharacter/reference/mini/0x7FXX.pbm differ diff --git a/fontcharacter/reference/mini/0xE5XX.pbm b/fontcharacter/reference/mini/0xE5XX.pbm new file mode 100644 index 0000000..1aa49c3 Binary files /dev/null and b/fontcharacter/reference/mini/0xE5XX.pbm differ diff --git a/fontcharacter/reference/mini/0xE6XX.pbm b/fontcharacter/reference/mini/0xE6XX.pbm new file mode 100644 index 0000000..f3c8aff Binary files /dev/null and b/fontcharacter/reference/mini/0xE6XX.pbm differ diff --git a/fontcharacter/reference/mini/0xXX.pbm b/fontcharacter/reference/mini/0xXX.pbm new file mode 100644 index 0000000..623e67e Binary files /dev/null and b/fontcharacter/reference/mini/0xXX.pbm differ diff --git a/fontcharacter/reference/normal/0x7FXX.pbm b/fontcharacter/reference/normal/0x7FXX.pbm new file mode 100644 index 0000000..b441b50 Binary files /dev/null and b/fontcharacter/reference/normal/0x7FXX.pbm differ diff --git a/fontcharacter/reference/normal/0xE5XX.pbm b/fontcharacter/reference/normal/0xE5XX.pbm new file mode 100644 index 0000000..47d849c Binary files /dev/null and b/fontcharacter/reference/normal/0xE5XX.pbm differ diff --git a/fontcharacter/reference/normal/0xE6XX.pbm b/fontcharacter/reference/normal/0xE6XX.pbm new file mode 100644 index 0000000..ef48f89 Binary files /dev/null and b/fontcharacter/reference/normal/0xE6XX.pbm differ diff --git a/fontcharacter/reference/normal/0xE7XX.pbm b/fontcharacter/reference/normal/0xE7XX.pbm new file mode 100644 index 0000000..d8962d4 Binary files /dev/null and b/fontcharacter/reference/normal/0xE7XX.pbm differ diff --git a/fontcharacter/reference/normal/0xXX.pbm b/fontcharacter/reference/normal/0xXX.pbm new file mode 100644 index 0000000..d5a8251 Binary files /dev/null and b/fontcharacter/reference/normal/0xXX.pbm differ diff --git a/fontcharacter/reference/sets.yml b/fontcharacter/reference/sets.yml new file mode 100644 index 0000000..0e07426 --- /dev/null +++ b/fontcharacter/reference/sets.yml @@ -0,0 +1,29 @@ +#******************************************************************************# +# CASIOWIN character sets # +#******************************************************************************# +- + id: CASIOWIN_1.00 + default: true + leading: 0x7F,0xF7,0xF9,0xE5,0xE6 + description: Original CASIOWIN (CASIO's SuperH custom OS) encoding. +- + id: CASIOWIN_1.05 + parent: CASIOWIN_1.00 + description: Added in OS 1.05 (or before, don't know yet). +- + id: CASIOWIN_2.00 + parent: CASIOWIN_1.05 + leading: 0x7F,0xF7,0xF9,0xE5,0xE6,0xE7 + description: Added in OS 2.00. +- + id: CASIOWIN_2.04 + parent: CASIOWIN_2.00 + description: Added in OS 2.04. + +#******************************************************************************# +# Extensions # +#******************************************************************************# +- + id: C.Basic + description: Added with C.Basic, an alternative interpreter made by Sentaro21. + parent: CASIOWIN_2.00 diff --git a/fontcharacter/tools/__pycache__/fontcharacter.cpython-36.pyc b/fontcharacter/tools/__pycache__/fontcharacter.cpython-36.pyc new file mode 100644 index 0000000..705e416 Binary files /dev/null and b/fontcharacter/tools/__pycache__/fontcharacter.cpython-36.pyc differ diff --git a/fontcharacter/tools/dumpbin.py b/fontcharacter/tools/dumpbin.py new file mode 100755 index 0000000..1204fcd --- /dev/null +++ b/fontcharacter/tools/dumpbin.py @@ -0,0 +1,216 @@ +#!/usr/bin/env python3 +""" Utility to dump data from a set binary file. + Mainly here to check that the format is correct for now. +""" + +import os, unicodedata +from functools import cmp_to_key +from argparse import ArgumentParser + +# --- +# Decoding function. +# --- + +def frombytes(bnum): + if type(bnum) == int: return bnum + return int.from_bytes(bnum, byteorder='big', signed=False) + +leaders = {} +def decode_set1(braw, only_check=True): + # Get the rest of the header, check the sum and filesize + cmajors = frombytes(braw[9]) + cchars = frombytes(braw[10:12]) + flags = frombytes(braw[12]) + pic_h = frombytes(braw[13]) + pic_fmt = frombytes(braw[14:16]) + checksum = frombytes(braw[20:24]) + filesize = frombytes(braw[24:28]) + datasize = frombytes(braw[28:32]) + + # Get the flags. + with_unicode = flags & 0x01 != 0 + with_cat = flags & 0x02 != 0 + with_newcat = flags & 0x04 != 0 + with_ctf = flags & 0x08 != 0 + with_casemul = flags & 0x10 != 0 + + # Make the entry size. + centsize = 8 + 4 + 4 * \ + (with_unicode + with_cat + with_newcat + with_ctf + with_casemul) + + # Check the sizes and the checksum. + if filesize != len(braw): + print("ERROR: Invalid filesize!", + "Declared %dB, calculated %dB"%(filesize, len(braw))) + return 1 + calc_datasize = filesize - 32 - 4 * cmajors - centsize * cchars + if datasize != calc_datasize: + print("ERROR: Invalid datasize!", + "Declared %dB, calculated %dB"%(datasize, calc_datasize)) + return 1 + calc_checksum = sum(braw[32:]) + if checksum != calc_checksum: + print("ERROR: Invalid checksum!", + "Declared 0x%08X, calculated 0x%08X"%(checksum, calc_checksum)) + return 1 + + # Get the binary data. + data_off = filesize - datasize + bdata = braw[data_off:] + + # Get leaders. + braw = braw[32:data_off] + leads = [] + for id_major in range(cmajors): + bmajor = braw[id_major * 4:id_major * 4 + 4] + code = frombytes(bmajor[0]) + if code in leads: + print("ERROR: Duplicate major 0x%02X."%code) + return 1 + + leads += [code] + leaders[code] = { + 'start': frombytes(bmajor[2:]), + 'count': 0, + 'chars': {}, + 'pos': id_major + } + + # Sort leaders. + def cmp_lead(x, y): + global leaders + if leaders[x]['start'] == leaders[y]['start']: + return x if leaders[x]['pos'] < leaders[y]['pos'] else y + return x if leaders[x]['start'] < leaders[y]['start'] else y + leads.sort(key=cmp_to_key(cmp_lead)) + + # Get counts. + for id in range(len(leads) - 1): + leaders[leads[id]]['count'] = \ + leaders[leads[id + 1]]['start'] - leaders[leads[id]]['start'] + leaders[leads[-1]]['count'] = cchars - leaders[leads[-1]]['start'] + + # Get characters according to their leader. + braw = braw[cmajors * 4:] + for lead in leaders: + for id_char in range(leaders[lead]['start'], \ + leaders[lead]['start'] + leaders[lead]['count']): + bchar = braw[id_char * centsize:id_char * centsize + centsize] + code = frombytes(bchar[:2]) + if code >> 8 != lead: + print("ERROR: character 0x%04X at position %d"%(code, id_char), + "should have leader 0x%02X but"%lead, + "has leader 0x%02X!"%(code >> 8)) + return 1 + if code in leaders[lead]['chars']: + print("ERROR: duplicate character 0x%04X"%code, + "at position %d"%id_char, + "(prev. %d)"%leaders[lead]['chars']['pos']) + return 1 + + # Get the FONTCHARACTER sequence. + mul_off = frombytes(bchar[8:12]) + mul_sz = frombytes(bchar[2]) + mul = None + if mul_sz: + rmul = bdata[mul_off:mul_off + mul_sz] + mul = [] + while rmul: + if rmul[0] in leaders: + mul += [(rmul[0] << 8) | rmul[1]] + rmul = rmul[2:] + continue + mul += [rmul[0]] + rmul = rmul[1:] + + # Get the Unicode string. + uni = None + off = 12 + if with_unicode: + uni_sz = frombytes(bchar[3]) + uni_off = frombytes(bchar[off:off + 4]) + off += 4 + if uni_sz: + runi = bdata[uni_off:uni_off + uni_sz] + uni = runi.decode('utf-8') + + # TODO: get the rest + leaders[lead]['chars'][code] = { + 'uni': uni, + 'mul': mul, + 'pos': id_char + } + + if only_check: + return 0 + print("OVERALL HEADER") + print("%d bytes (data zone is %dB)"%(filesize, datasize)) + print("%d leader characters, %d characters"%(cmajors, cchars)) + print("") + print("Tokens and sequences in this file:") + print("- FONTCHARACTER sequences") + if with_unicode: print("- Unicode equivalents") + if with_cat: print("- CAT tokens") + if with_newcat: print("- Newcat tokens") + if with_ctf: print("- CTF tokens") + if with_casemul: print("- Casemul tokens") + print("") + + for lead, data in leaders.items(): + print("0x%02X LEADER"%lead) + print("Starts at character 0x%04X, stops at 0x%04X (count: %d)" + %(data['start'], data['start'] + data['count'] - 1, + data['count'])) + if data['chars']: + print("") + for code, char in data['chars'].items(): + print("- 0x%0*X"%(4 if code > 0xFF else 2, code), end='') + mul = char['mul'] + if mul: + m = ', '.join(map(lambda x:"0x%0*X"%(4 if x > 0xFF else 2, x), + mul)) + print(" - seq: %s"%m, end='') + + uni = char['uni'] + if uni: + if any(map(lambda c:unicodedata.category(c).startswith('C'), \ + uni)): + uni = ''.join(map(lambda x:'\\x%02X'%ord(x), uni)) + print(" - unicode: \"%s\""%uni, end='') + print("") + print("") + return 0 + +def decode_set(braw, only_check=True): + global leaders + # Check the magic. + bmagic = braw[:9] + if bmagic[:8] != b"CASIOFC\x7f": + print("ERROR: Invalid magic string!") + return 1 + if bmagic[8] == 0x01: + return decode_set1(braw, only_check) + else: + print("ERROR: Unmanaged version 0x%02X!"%bmagic[8]) + return 1 + +# --- +# Main function. +# --- + +if __name__ == '__main__': + # Parse the arguments. + ap = ArgumentParser(description='FONTCHARACTER binary file dumper') + + ap.add_argument('--only-check', help='Should only check if the file is valid', + action="store_true") + ap.add_argument('input', help='The file which to dump the content.') + args = ap.parse_args() + + # Obtain the file. + braw = open(args.input, "rb").read() + + # Decode it. + exit(decode_set(braw, args.only_check)) + +# End of file. diff --git a/fontcharacter/tools/fontcharacter/__init__.py b/fontcharacter/tools/fontcharacter/__init__.py new file mode 100755 index 0000000..ca92206 --- /dev/null +++ b/fontcharacter/tools/fontcharacter/__init__.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python3 +""" The FONTCHARACTER Python module is used for manipulating the source + and binary formats. See <../../formats/SOURCE.md> for more information. +""" + +import os, sys, string, yaml + +# Sainitize for the `id` field +def sanitize_id(s): + return ''.join(ch for ch in s \ + if ch in string.ascii_letters + string.digits) + +class Reference: + """ The FONTCHARACTER source object. + Loads the characters and corrects the data. """ + + def __init__(self, path, sets_only=False): + # Load sets + self.__load_sets(yaml.load(open(\ + os.path.join(path, 'sets.yml')).read())) + if sets_only: return + + # Load categories + self.categories = {} + for c in yaml.load(open(os.path.join(path, 'categories.yml')).read()): + self.__explore_category(c, '', '', '') + + # Load all of the YAML files + self.__load_characters(yaml.load(open(\ + os.path.join(path, 'characters.yml')).read())) + + # Gather leaders [TODO: `leading` field?] + for st in self.sets.keys(): + lead = [] + for code in self.sets[st]['characters'].keys(): + lead += [code >> 8] + self.sets[st]['leading'] = set(lead) + + def __explore_category(self, c, id, prefix, suffix): + """ Explore a category. """ + + # Iterate on things + id += c['id'] + try: prefix = c['prefix'] + ' ' + prefix + except: True + try: suffix = suffix + ' ' + c['suffix'] + except: True + + # Add current (sub)category + self.categories[id] = {'prefix': prefix, 'suffix': suffix} + + # Explore subcategories + if c.get('sub'): + for s in c['sub']: + self.__explore_category(s, id + '/', prefix, suffix) + + def __load_sets(self, raw): + """ Explore sets. """ + + self.default_set = '' + self.sets = {} + + # Initialize kids + kids = {} + + # Read raw entries + for s in raw: + self.sets[s['id']] = { + 'description': s['description'], + 'characters': {}, + 'parent': s.get('parent'), + 'kids': []} + if s.get('default'): self.default_set = s['id'] + if s.get('parent'): + if not kids.get(s['parent']): kids[s['parent']] = [] + kids[s['parent']] += [s['id']] + + # Add kids to real elements + for parent, k in kids.items(): + self.sets[parent]['kids'] += kids[parent] + + def __inherit_character(self, id, code, inherit, pr): + """ Inherit character. + + `id`: id of the set, code: code of the character, + `inherit`: the set to inherit it from, + `pr`: priority (starting from 0, the more the further). """ + + if not self.sets[id]['characters'].get(code) \ + or self.sets[id]['characters'][code]['_pr'] > pr: + self.sets[id]['characters'][code] = {'inherit': inherit, '_pr': pr} + for k in self.sets[id]['kids']: + self.__inherit_character(k, code, inherit, pr + 1) + + def __load_characters(self, raw): + """ Load characters. """ + + # Main loop + for c in raw: + # Get the complete name + n = c['name'] + if c.get('category'): + ct = self.categories[c['category']] + n = ct['prefix'] + n + ct['suffix'] + + # Get the character set, and the priority + try: st = c['set'] + except: st = self.default_set + + # Make the character + code = c['code'] + char = {'name': n, '_pr': 0} + + # Check the multi thingy + m = c.get('multi') + if type(m) == list and m: + char['multi'] = \ + list(map(lambda x:int(x, 16) if type(x) == str else x, m)) + elif type(m) == int: + char['multi'] = [m] + + # Check the unicode thingy + u = c.get('unicode') + if type(u) == list and u: + char['unicode'] = \ + list(map(lambda x:int(x, 16) if type(x) == str else x, u)) + elif type(u) == int: + char['unicode'] = [u] + + # Check the ascii thingy + if c.get('ascii'): + char['ascii'] = c['ascii'] + elif char.get('unicode') \ + and all(0x00 <= c <= 0xFF for c in char['unicode']): + char['ascii'] = ''.join(map(chr,char['unicode'])) + + # Check the id thingy + if c.get('id'): + char['id'] = c['id'] + elif char.get('ascii'): + char['id'] = sanitize_id(char['ascii']) + if not char.get('id') and not char.get('multi'): + char['id'] = sanitize_id(char['name']) + + # Add it to the set + self.sets[st]['characters'][code] = char + for k in self.sets[st]['kids']: + self.__inherit_character(k, code, st, 1) + + # Get ascii/unicode equivalents + for id, st in self.sets.items(): + for code in st['characters'].keys(): + self.__deduce_character_id(id, code) + + def __deduce_character_id(self, id, code): + """ Calculate a multi-character's ID. """ + + char = self.sets[id]['characters'][code] + if char['_pr'] > 0 or char.get('id'): return + m = "" + if not char.get('multi'): m = sanitize_id(char.get('name')) + else: + for num, c in map(lambda x:(x, self.sets[id]['characters'][x]), \ + char['multi']): + parent = id + if c['_pr'] > 0: + parent = c['inherit'] + c = self.sets[parent]['characters'][num] + if c.get('multi'): + self.__deduce_character_id(parent, num) + m += c['id'] + char['id'] = m + + def list(self): + """ Get the list of sets. """ + + l = list(self.sets.keys()) + l.remove(self.default_set) + return [self.default_set] + l + + def get(self, id = None): + """ Get a set. """ + + if type(id) != str: + id = self.default_set + st = self.sets[id] + st['id'] = id + return st + +# End of file. diff --git a/fontcharacter/tools/listsets.py b/fontcharacter/tools/listsets.py new file mode 100755 index 0000000..9e2cb47 --- /dev/null +++ b/fontcharacter/tools/listsets.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +""" Utility to list the available sets. + Mainly there for the Makefile to use it. """ + +import os +from argparse import ArgumentParser +from fontcharacter import Reference + +# --- +# Main function. +# --- + +if __name__ == '__main__': + # Parse the arguments. + ap = ArgumentParser(description="FONTCHARACTER reference sets lister") + + ap.add_argument('--refpath', help='The reference path.', default=os.getcwd()) + args = ap.parse_args() + + # Obtain the reference. + ref = Reference(args.refpath, True) + + # List the sets. + print('\n'.join(ref.list())) + +# End of file. diff --git a/fontcharacter/tools/makebin.py b/fontcharacter/tools/makebin.py new file mode 100755 index 0000000..a962f92 --- /dev/null +++ b/fontcharacter/tools/makebin.py @@ -0,0 +1,183 @@ +#!/usr/bin/env python3 +""" Utility to make the set binary files. """ + +import os, shutil +from argparse import ArgumentParser +from fontcharacter import Reference + +# --- +# Function for encoding. +# --- + +def tobytes(num, length): + return num.to_bytes(length, byteorder='big', signed=False) +def charbytes(char): + return tobytes(char, 2) if char > 0xFF else tobytes(char, 1) + +def make_pool(pool): + # TODO: make this function optimize space, some day? + + bdata = b'' + offsets = [] + for data in pool: + offsets += [len(bdata)] + bdata += bytes(data) + return bdata, offsets + +def encode_set(ref, fset): + global args + bheader = bytes() + blead = bytes() + bchars = bytes() + bdata = bytes() + + # Prepare characters data + leading = {} + char_count = 0 + dchars = [] + pool = [] + for char_id, (code, char) in enumerate(fset['characters'].items()): + char_count = char_id + 1 + + # Check if we should inherit. + if char['_pr'] > 0: + char = ref.get(char['inherit'])['characters'][code] + + # Check the leader. + lead = code >> 8 + if not lead in leading: + leading[lead] = char_id + + # Get the multi size, feed the pool if needed. + mul_sz = 0 + if char.get('multi') and char['multi']: + mul = b''.join(map(charbytes, char['multi'])) + pool += [mul] + mul_sz = len(mul) + + # Get the unicode size, feed the pool if needed. + uni_sz = 0 + if not args.no_unicode and char.get('unicode') and char['unicode']: + uni = ''.join(map(chr, char['unicode'])).encode('utf-8') + pool += [uni] + uni_sz = len(uni) + + # Get the CAT token size, feed the pool if needed. + cat_sz = 0 + + # Get the Newcat token size + newcat_sz = 0 + + # Get the CTF token size + ctf_sz = 0 + + # Get the Casemul token size + casemul_sz = 0 + + # Add all of these elements to the chars data tab. + dchars += [{ + 'code': code, + 'mul_sz': mul_sz, + 'uni_sz': uni_sz, + 'cat_sz': cat_sz, + 'newcat_sz': newcat_sz, + 'ctf_sz': ctf_sz, + 'casemul_sz': casemul_sz + }] + + # Make the pool. + bdata, offsets = make_pool(pool) + + # Prepare pool. + offsets = iter(offsets) + for char in dchars: + ent = tobytes(char['code'], 2) + tobytes(char['mul_sz'], 1) \ + + tobytes(char['uni_sz'], 1) + tobytes(char['cat_sz'], 1) \ + + tobytes(char['newcat_sz'], 1) + tobytes(char['ctf_sz'], 1) \ + + tobytes(char['casemul_sz'], 1) + + # Offsets + ent += tobytes(next(offsets) if char['mul_sz'] > 0 else 0, 4) + if not args.no_unicode: + ent += tobytes(next(offsets) if char['uni_sz'] > 0 else 0, 4) + if not args.no_cat: + ent += tobytes(next(offsets) if char['cat_sz'] > 0 else 0, 4) + if not args.no_newcat: + ent += tobytes(next(offsets) if char['newcat_sz'] > 0 else 0, 4) + if not args.no_ctf: + ent += tobytes(next(offsets) if char['ctf_sz'] > 0 else 0, 4) + if not args.no_casemul: + ent += tobytes(next(offsets) if char['casemul_sz'] > 0 else 0, 4) + + bchars += ent + + # Correct the leading. + for lead in fset['leading']: + if not lead in leading: + leading[lead] = char_count + + # Make the leading tab. + for lead, off in leading.items(): + ent = bytes([lead, 0]) + tobytes(off, 2) + blead += bytes(ent) + + # Make the flags. + flags = 0x1F + if args.no_unicode: flags &= ~0x01 + if args.no_cat: flags &= ~0x02 + if args.no_newcat: flags &= ~0x04 + if args.no_ctf: flags &= ~0x08 + if args.no_casemul: flags &= ~0x10 + + # Make the checksum. + csum = (sum(blead) + sum(bchars) + sum(bdata)) & 0xFFFFFFFF + + # Make the lengths. + datalen = len(bdata) + filesize = 32 + len(blead) + len(bchars) + datalen + + # Finish making the main header. + bheader = bytes(list(map(ord, "CASIOFC\x7F")) + [0x01]) \ + + tobytes(len(leading), 1) + tobytes(char_count, 2) \ + + tobytes(flags, 1) + tobytes(0, 1) + tobytes(0, 2) + tobytes(0, 4) \ + + tobytes(csum, 4) + tobytes(filesize, 4) + tobytes(datalen, 4) + + return bheader + blead + bchars + bdata + +# --- +# Main function. +# --- + +if __name__ == '__main__': + ap = ArgumentParser(description="FONTCHARACTER reference binary generator") + + ap.add_argument('--no-unicode', help='No Unicode equivalents?', + action="store_true") + ap.add_argument('--no-cat', help='No CAT tokens?', action="store_true") + ap.add_argument('--no-newcat', help='No Newcat tokens?', + action="store_true") + ap.add_argument('--no-ctf', help='No CTF tokens?', action="store_true") + ap.add_argument('--no-casemul', help="No Casemul tokens?", + action="store_true") + ap.add_argument('--output', '-o', help='The output directory path.', + default=os.path.join(os.getcwd(), 'generated_sets')) + ap.add_argument('--refpath', help='The reference path.', + default=os.getcwd()) + args = ap.parse_args() + + # Obtain the reference. + ref = Reference(args.refpath) + + # Make the directory. + if os.path.isdir(args.output): + shutil.rmtree(args.output) + elif os.path.exists(args.output): + os.remove(args.output) + os.makedirs(args.output) + + # For each set, make the file. + for set_name, set_val in map(lambda x: (x, ref.get(x)), ref.list()): + with open(os.path.join(args.output, set_name + '.set'), 'wb') as f: + f.write(encode_set(ref, set_val)) + +# End of file.