Import Upstream version 6.04~git20190206.bf6db5b4+dfsg1

This commit is contained in:
openKylinBot 2022-05-14 02:55:54 +08:00
commit d3dd949632
1531 changed files with 374304 additions and 0 deletions

340
COPYING Normal file
View File

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

417
Makefile Normal file
View File

@ -0,0 +1,417 @@
## -----------------------------------------------------------------------
##
## Copyright 1998-2009 H. Peter Anvin - All Rights Reserved
## Copyright 2009-2014 Intel Corporation; author: H. Peter Anvin
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, Inc., 53 Temple Place Ste 330,
## Boston MA 02111-1307, USA; either version 2 of the License, or
## (at your option) any later version; incorporated herein by reference.
##
## -----------------------------------------------------------------------
#
# Main Makefile for SYSLINUX
#
all_firmware := bios efi32 efi64
#
# topdir is only set when we are doing a recursive make. Do a bunch of
# initialisation if it's unset since this is the first invocation.
#
ifeq ($(topdir),)
topdir = $(CURDIR)
#
# Because we need to build modules multiple times, e.g. for BIOS,
# efi32, efi64, we output all object and executable files to a
# separate object directory for each firmware.
#
# The output directory can be customised by setting the O=/obj/path/
# variable when invoking make. If no value is specified the default
# directory is the top-level of the Syslinux source.
#
ifeq ("$(origin O)", "command line")
OBJDIR := $(O)
else
OBJDIR = $(topdir)
endif
# If the output directory does not exist we bail because that is the
# least surprising thing to do.
cd-output := $(shell cd $(OBJDIR) && /bin/pwd)
$(if $(cd-output),, \
$(error output directory "$(OBJDIR)" does not exist))
#
# These environment variables are exported to every invocation of
# make,
#
# 'topdir' - the top-level directory containing the Syslinux source
# 'objdir' - the top-level directory of output files for this firmware
# 'MAKEDIR' - contains Makefile fragments
# 'OBJDIR' - the top-level directory of output files
#
# There are also a handful of variables that are passed to each
# sub-make,
#
# SRC - source tree location of the module being compiled
# OBJ - output tree location of the module being compiled
#
# A couple of rules for writing Makefiles,
#
# - Do not use relative paths, use the above variables
# - You can write $(SRC) a lot less if you add it to VPATH
#
MAKEDIR = $(topdir)/mk
export MAKEDIR topdir OBJDIR
include $(MAKEDIR)/syslinux.mk
-include $(OBJDIR)/version.mk
private-targets = prerel unprerel official release burn isolinux.iso \
preupload upload test unittest regression spotless
ifeq ($(MAKECMDGOALS),)
MAKECMDGOALS += all
endif
#
# The 'bios', 'efi32' and 'efi64' are dummy targets. Their only
# purpose is to instruct us which output directories need
# creating. Which means that we always need a *real* target, such as
# 'all', appended to the make goals.
#
real-target := $(filter-out $(all_firmware), $(MAKECMDGOALS))
real-firmware := $(filter $(all_firmware), $(MAKECMDGOALS))
ifeq ($(real-target),)
real-target = all
endif
ifeq ($(real-firmware),)
real-firmware = $(firmware)
endif
.PHONY: $(filter-out $(private-targets), $(MAKECMDGOALS))
$(filter-out $(private-targets), $(MAKECMDGOALS)):
$(MAKE) -C $(OBJDIR) -f $(CURDIR)/Makefile SRC="$(topdir)" \
OBJ=$(OBJDIR) objdir=$(OBJDIR) $(BUILDOPTS) \
$(MAKECMDGOALS)
unittest:
printf "Executing unit tests\n"
$(MAKE) -C core/mem/tests all
$(MAKE) -C com32/lib/syslinux/tests all
regression:
$(MAKE) -C tests SRC="$(topdir)/tests" OBJ="$(topdir)/tests" \
objdir=$(OBJDIR) $(BUILDOPTS) \
-f $(topdir)/tests/Makefile all
test: unittest regression
# Hook to add private Makefile targets for the maintainer.
-include $(topdir)/Makefile.private
else # ifeq ($(topdir),)
include $(MAKEDIR)/syslinux.mk
# Hook to add private Makefile targets for the maintainer.
-include $(topdir)/Makefile.private
#
# The BTARGET refers to objects that are derived from ldlinux.asm; we
# like to keep those uniform for debugging reasons; however, distributors
# want to recompile the installers (ITARGET).
#
# BOBJECTS and IOBJECTS are the same thing, except used for
# installation, so they include objects that may be in subdirectories
# with their own Makefiles. Finally, there is a list of those
# directories.
#
ifeq ($(FWCLASS),BIOS)
MODULES = memdisk/memdisk \
com32/menu/*.c32 com32/modules/*.c32 com32/mboot/*.c32 \
com32/hdt/*.c32 com32/rosh/*.c32 com32/gfxboot/*.c32 \
com32/sysdump/*.c32 com32/lua/src/*.c32 com32/chain/*.c32 \
com32/lib/*.c32 com32/libutil/*.c32 com32/gpllib/*.c32 \
com32/elflink/ldlinux/*.c32 com32/cmenu/libmenu/*.c32
else
# FIXME: Prune other BIOS-centric modules
MODULES = com32/menu/*.c32 com32/modules/*.c32 com32/mboot/*.c32 \
com32/hdt/*.c32 com32/rosh/*.c32 com32/gfxboot/*.c32 \
com32/sysdump/*.c32 com32/lua/src/*.c32 com32/chain/*.c32 \
com32/lib/*.c32 com32/libutil/*.c32 com32/gpllib/*.c32 \
com32/cmenu/libmenu/*.c32 com32/elflink/ldlinux/$(LDLINUX)
endif
export FIRMWARE FWCLASS ARCH BITS
# List of module objects that should be installed for all derivatives
INSTALLABLE_MODULES = $(MODULES)
# syslinux.exe is BTARGET so as to not require everyone to have the
# mingw suite installed
BTARGET = version.gen version.h $(OBJDIR)/version.mk
BOBJECTS = $(BTARGET) \
mbr/*.bin \
core/pxelinux.0 core/lpxelinux.0 \
core/isolinux.bin core/isolinux-debug.bin \
dos/syslinux.com \
win32/syslinux.exe win64/syslinux64.exe \
dosutil/*.com dosutil/*.sys \
$(MODULES)
# BSUBDIRs build the on-target binary components.
# ISUBDIRs build the installer (host) components.
#
# Note: libinstaller is both a BSUBDIR and an ISUBDIR. It contains
# files that depend only on the B phase, but may have to be regenerated
# for "make installer".
ifeq ($(FWCLASS),EFI)
BSUBDIRS = codepage com32 lzo core mbr sample efi txt
ISUBDIRS =
INSTALLSUBDIRS = efi
NETINSTALLABLE = efi/syslinux.efi $(INSTALLABLE_MODULES)
else
BSUBDIRS = codepage com32 lzo core memdisk mbr sample \
diag libinstaller dos win32 win64 dosutil txt
ITARGET =
IOBJECTS = $(ITARGET) \
utils/gethostip utils/isohybrid utils/mkdiskimage \
mtools/syslinux linux/syslinux extlinux/extlinux
ISUBDIRS = libinstaller mtools linux extlinux utils
# Things to install in /usr/bin
INSTALL_BIN = mtools/syslinux
# Things to install in /sbin
INSTALL_SBIN = extlinux/extlinux
# Things to install in /usr/lib/syslinux
INSTALL_AUX = core/pxelinux.0 \
core/isolinux.bin core/isolinux-debug.bin \
dos/syslinux.com core/lpxelinux.0 \
mbr/*.bin $(INSTALLABLE_MODULES)
INSTALL_AUX_OPT = win32/syslinux.exe win64/syslinux64.exe
INSTALL_DIAG = diag/mbr/handoff.bin \
diag/geodsp/geodsp1s.img.xz diag/geodsp/geodspms.img.xz
# These directories manage their own installables
INSTALLSUBDIRS = com32 utils dosutil
# Things to install in /boot/extlinux
EXTBOOTINSTALL = $(INSTALLABLE_MODULES)
# Things to install in /tftpboot
NETINSTALLABLE = core/pxelinux.0 core/lpxelinux.0 \
$(INSTALLABLE_MODULES)
endif # ifeq ($(FWCLASS),EFI)
.PHONY: subdirs $(BSUBDIRS) $(ISUBDIRS) test
ifeq ($(FIRMWARE),)
firmware = $(all_firmware)
# If no firmware was specified the rest of MAKECMDGOALS applies to all
# firmware.
ifeq ($(filter $(firmware),$(MAKECMDGOALS)),)
all strip tidy clean dist install installer netinstall: $(all_firmware)
else
# Don't do anything for the rest of MAKECMDGOALS at this level. It
# will be handled for each of $(firmware).
strip tidy clean dist install installer netinstall:
endif
# Convert 'make bios strip' to 'make strip', etc for rest of the Makefiles.
MAKECMDGOALS := $(filter-out $(firmware),$(MAKECMDGOALS))
ifeq ($(MAKECMDGOALS),)
MAKECMDGOALS += all
endif
#
# You'd think that we'd be able to use the 'define' directive to
# abstract the code for invoking make(1) in the output directory, but
# by using 'define' we lose the ability to build in parallel.
#
.PHONY: $(firmware)
bios:
@mkdir -p $(OBJ)/bios
$(MAKE) -C $(OBJ)/bios -f $(SRC)/Makefile SRC="$(SRC)" \
objdir=$(OBJ)/bios OBJ=$(OBJ)/bios \
FIRMWARE=BIOS FWCLASS=BIOS \
ARCH=i386 LDLINUX=ldlinux.c32 $(MAKECMDGOALS)
efi32:
@mkdir -p $(OBJ)/efi32
$(MAKE) -C $(OBJ)/efi32 -f $(SRC)/Makefile SRC="$(SRC)" \
objdir=$(OBJ)/efi32 OBJ=$(OBJ)/efi32 \
ARCH=i386 BITS=32 LDLINUX=ldlinux.e32 \
FIRMWARE=EFI32 FWCLASS=EFI \
$(MAKECMDGOALS)
efi64:
@mkdir -p $(OBJ)/efi64
$(MAKE) -C $(OBJ)/efi64 -f $(SRC)/Makefile SRC="$(SRC)" \
objdir=$(OBJ)/efi64 OBJ=$(OBJ)/efi64 \
ARCH=x86_64 BITS=64 LDLINUX=ldlinux.e64 \
FIRMWARE=EFI64 FWCLASS=EFI \
$(MAKECMDGOALS)
else # FIRMWARE
all: all-local subdirs
all-local: $(BTARGET) $(ITARGET)
-ls -l $(BOBJECTS) $(IOBJECTS)
subdirs: $(BSUBDIRS) $(ISUBDIRS)
$(sort $(ISUBDIRS) $(BSUBDIRS)):
@mkdir -p $@
$(MAKE) -C $@ SRC="$(SRC)/$@" OBJ="$(OBJ)/$@" \
-f $(SRC)/$@/Makefile $(MAKECMDGOALS)
$(ITARGET):
@mkdir -p $@
$(MAKE) -C $@ SRC="$(SRC)/$@" OBJ="$(OBJ)/$@" \
-f $(SRC)/$@/Makefile $(MAKECMDGOALS)
$(BINFILES):
@mkdir -p $@
$(MAKE) -C $@ SRC="$(SRC)/$@" OBJ="$(OBJ)/$@" \
-f $(SRC)/$@/Makefile $(MAKECMDGOALS)
#
# List the dependencies to help out parallel builds.
dos extlinux linux mtools win32 win64: libinstaller
libinstaller: core
utils: mbr
core: com32
efi: core
installer: installer-local
set -e; for i in $(ISUBDIRS); \
do $(MAKE) -C $$i SRC="$(SRC)/$$i" OBJ="$(OBJ)/$$i" \
-f $(SRC)/$$i/Makefile all; done
installer-local: $(ITARGET) $(BINFILES)
strip: strip-local
set -e; for i in $(ISUBDIRS); \
do $(MAKE) -C $$i SRC="$(SRC)/$$i" OBJ="$(OBJ)/$$i" \
-f $(SRC)/$$i/Makefile strip; done
-ls -l $(BOBJECTS) $(IOBJECTS)
strip-local:
version.gen: $(topdir)/version $(topdir)/version.pl
$(PERL) $(topdir)/version.pl $< $@ '%define < @'
version.h: $(topdir)/version $(topdir)/version.pl
$(PERL) $(topdir)/version.pl $< $@ '#define < @'
local-install: installer
mkdir -m 755 -p $(INSTALLROOT)$(BINDIR)
install -m 755 -c $(INSTALL_BIN) $(INSTALLROOT)$(BINDIR)
mkdir -m 755 -p $(INSTALLROOT)$(SBINDIR)
install -m 755 -c $(INSTALL_SBIN) $(INSTALLROOT)$(SBINDIR)
mkdir -m 755 -p $(INSTALLROOT)$(AUXDIR)
install -m 644 -c $(INSTALL_AUX) $(INSTALLROOT)$(AUXDIR)
-install -m 644 -c $(INSTALL_AUX_OPT) $(INSTALLROOT)$(AUXDIR)
mkdir -m 755 -p $(INSTALLROOT)$(DIAGDIR)
install -m 644 -c $(INSTALL_DIAG) $(INSTALLROOT)$(DIAGDIR)
mkdir -m 755 -p $(INSTALLROOT)$(MANDIR)/man1
install -m 644 -c $(topdir)/man/*.1 $(INSTALLROOT)$(MANDIR)/man1
: mkdir -m 755 -p $(INSTALLROOT)$(MANDIR)/man8
: install -m 644 -c man/*.8 $(INSTALLROOT)$(MANDIR)/man8
ifneq ($(FWCLASS),EFI)
install: local-install
set -e ; for i in $(INSTALLSUBDIRS) ; \
do $(MAKE) -C $$i SRC="$(SRC)/$$i" OBJ="$(OBJ)/$$i" \
-f $(SRC)/$$i/Makefile $@; done
else
install:
mkdir -m 755 -p $(INSTALLROOT)$(AUXDIR)/efi$(BITS)
set -e ; for i in $(INSTALLSUBDIRS) ; \
do $(MAKE) -C $$i SRC="$(SRC)/$$i" OBJ="$(OBJ)/$$i" \
BITS="$(BITS)" AUXDIR="$(AUXDIR)/efi$(BITS)" \
-f $(SRC)/$$i/Makefile $@; done
-install -m 644 $(INSTALLABLE_MODULES) $(INSTALLROOT)$(AUXDIR)/efi$(BITS)
install -m 644 com32/elflink/ldlinux/$(LDLINUX) $(INSTALLROOT)$(AUXDIR)/efi$(BITS)
endif
ifeq ($(FWCLASS),EFI)
netinstall:
mkdir -p $(INSTALLROOT)$(TFTPBOOT)/efi$(BITS)
install -m 644 $(NETINSTALLABLE) $(INSTALLROOT)$(TFTPBOOT)/efi$(BITS)
else
netinstall: installer
mkdir -p $(INSTALLROOT)$(TFTPBOOT)
install -m 644 $(NETINSTALLABLE) $(INSTALLROOT)$(TFTPBOOT)
endif
extbootinstall: installer
mkdir -m 755 -p $(INSTALLROOT)$(EXTLINUXDIR)
install -m 644 $(EXTBOOTINSTALL) $(INSTALLROOT)$(EXTLINUXDIR)
install-all: install netinstall extbootinstall
local-tidy:
rm -f *.o *.elf *_bin.c stupid.* patch.offset
rm -f *.lsr *.lst *.map *.sec *.tmp
rm -f $(OBSOLETE)
tidy: local-tidy $(BESUBDIRS) $(IESUBDIRS) $(BSUBDIRS) $(ISUBDIRS)
local-clean:
rm -f $(ITARGET)
clean: local-tidy local-clean $(BESUBDIRS) $(IESUBDIRS) $(BSUBDIRS) $(ISUBDIRS)
local-dist:
find . \( -name '*~' -o -name '#*' -o -name core \
-o -name '.*.d' -o -name .depend \) -type f -print0 \
| xargs -0rt rm -f
dist: local-dist local-tidy $(BESUBDIRS) $(IESUBDIRS) $(BSUBDIRS) $(ISUBDIRS)
# Shortcut to build linux/syslinux using klibc
klibc:
$(MAKE) clean
$(MAKE) CC=klcc ITARGET= ISUBDIRS='linux extlinux' BSUBDIRS=
endif # ifeq ($(FIRMWARE),)
endif # ifeq ($(topdir),)
local-spotless:
find . \( -name '*~' -o -name '#*' -o -name core \
-o -name '.*.d' -o -name .depend -o -name '*.so.*' \) \
-type f -print0 \
| xargs -0rt rm -f
spotless: local-spotless
rm -rf $(all_firmware)
#
# Common rules that are needed by every invocation of make.
#
$(OBJDIR)/version.mk: $(topdir)/version $(topdir)/version.pl
$(PERL) $(topdir)/version.pl $< $@ '< := @'

1745
NEWS Normal file

File diff suppressed because it is too large Load Diff

40
README Normal file
View File

@ -0,0 +1,40 @@
See the files in the doc directory for documentation about SYSLINUX:
syslinux.txt - Usage instructions; manual.
distrib.txt - For creators of Linux distributions.
pxelinux.txt - Documentation specific to PXELINUX.
isolinux.txt - Documentation specific to ISOLINUX.
extlinux.txt - Documentation specific to EXTLINUX.
menu.txt - About the menu systems.
usbkey.txt - About using SYSLINUX on USB keys.
memdisk.txt - Documentation about MEMDISK.
Also see the files:
NEWS - List of changes from previous releases.
TODO - About features planned for future releases.
COPYING - For the license terms of this software.
SYSLINUX now builds in a Linux environment, using nasm. You need nasm
version 2.03 or later (2.07 or later recommended) to build SYSLINUX
from source. See http://www.nasm.us/ for information about nasm.
"utils/isohybrid" needs the UUID library and following header file,
/usr/include/uuid/uuid.h
You can get them from the "uuid-dev" package on Debian based systems
or from the "libuuid-devel" package on RPM based distributions.
There is now a mailing list for SYSLINUX. See the end of syslinux.txt
for details.
SYSLINUX is:
Copyright 1994-2011 H. Peter Anvin et al - All Rights Reserved
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, Inc., 53 Temple Place Ste 330,
Boston MA 02111-1307, USA; either version 2 of the License, or
(at your option) any later version; incorporated herein by reference.

23
codepage/Makefile Normal file
View File

@ -0,0 +1,23 @@
VPATH = $(SRC)
PERL = perl
CPSRC = $(sort $(wildcard $(SRC)/*.txt))
CPOBJ = $(notdir $(CPSRC))
GENFILES = $(patsubst %.txt,%.cp,$(CPOBJ))
.SUFFIXES: .txt .cp
all: $(GENFILES)
# This generates codepage files where the display and filesystem
# codepages are both the same.
%.cp: %.txt cptable.pl UnicodeData
$(PERL) $(SRC)/cptable.pl $(SRC)/UnicodeData $< $< $@
tidy:
rm -f *.cp *.bin
clean: tidy
dist: tidy
spotless: clean

952
codepage/UnicodeData Normal file
View File

@ -0,0 +1,952 @@
0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
0020;SPACE;Zs;0;WS;;;;;N;;;;;
0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
002A;ASTERISK;Po;0;ON;;;;;N;;;;;
002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;;
002C;COMMA;Po;0;CS;;;;;N;;;;;
002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;
002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;;
0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
003A;COLON;Po;0;CS;;;;;N;;;;;
003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
007E;TILDE;Sm;0;ON;;;;;N;;;;;
007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
0080;<control>;Cc;0;BN;;;;;N;;;;;
0081;<control>;Cc;0;BN;;;;;N;;;;;
0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
0084;<control>;Cc;0;BN;;;;;N;;;;;
0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
0099;<control>;Cc;0;BN;;;;;N;;;;;
009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;;
00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;;
0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;;
05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
2013;EN DASH;Pd;0;ON;;;;;N;;;;;
2014;EM DASH;Pd;0;ON;;;;;N;;;;;
2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
2020;DAGGER;Po;0;ON;;;;;N;;;;;
2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
2022;BULLET;Po;0;ON;;;;;N;;;;;
2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
221E;INFINITY;Sm;0;ON;;;;;N;;;;;
2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
2593;DARK SHADE;So;0;ON;;;;;N;;;;;
25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;

274
codepage/cp1250.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp1250 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1250 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1250 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 #UNDEFINED
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 #UNDEFINED
0x89 0x2030 #PER MILLE SIGN
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
0x8D 0x0164 #LATIN CAPITAL LETTER T WITH CARON
0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
0x8F 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 #UNDEFINED
0x99 0x2122 #TRADE MARK SIGN
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C 0x015B #LATIN SMALL LETTER S WITH ACUTE
0x9D 0x0165 #LATIN SMALL LETTER T WITH CARON
0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
0x9F 0x017A #LATIN SMALL LETTER Z WITH ACUTE
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x02C7 #CARON
0xA2 0x02D8 #BREVE
0xA3 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00A8 #DIAERESIS
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x015E #LATIN CAPITAL LETTER S WITH CEDILLA
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x02DB #OGONEK
0xB3 0x0142 #LATIN SMALL LETTER L WITH STROKE
0xB4 0x00B4 #ACUTE ACCENT
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x00B8 #CEDILLA
0xB9 0x0105 #LATIN SMALL LETTER A WITH OGONEK
0xBA 0x015F #LATIN SMALL LETTER S WITH CEDILLA
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x013D #LATIN CAPITAL LETTER L WITH CARON
0xBD 0x02DD #DOUBLE ACUTE ACCENT
0xBE 0x013E #LATIN SMALL LETTER L WITH CARON
0xBF 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
0xC0 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
0xC6 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x011A #LATIN CAPITAL LETTER E WITH CARON
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x010E #LATIN CAPITAL LETTER D WITH CARON
0xD0 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
0xD2 0x0147 #LATIN CAPITAL LETTER N WITH CARON
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 #MULTIPLICATION SIGN
0xD8 0x0158 #LATIN CAPITAL LETTER R WITH CARON
0xD9 0x016E #LATIN CAPITAL LETTER U WITH RING ABOVE
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
0xE0 0x0155 #LATIN SMALL LETTER R WITH ACUTE
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x0103 #LATIN SMALL LETTER A WITH BREVE
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x013A #LATIN SMALL LETTER L WITH ACUTE
0xE6 0x0107 #LATIN SMALL LETTER C WITH ACUTE
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
0xEA 0x0119 #LATIN SMALL LETTER E WITH OGONEK
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x011B #LATIN SMALL LETTER E WITH CARON
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x010F #LATIN SMALL LETTER D WITH CARON
0xF0 0x0111 #LATIN SMALL LETTER D WITH STROKE
0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
0xF2 0x0148 #LATIN SMALL LETTER N WITH CARON
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 #DIVISION SIGN
0xF8 0x0159 #LATIN SMALL LETTER R WITH CARON
0xF9 0x016F #LATIN SMALL LETTER U WITH RING ABOVE
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
0xFB 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
0xFF 0x02D9 #DOT ABOVE

274
codepage/cp1251.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp1251 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1251 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1251 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x0402 #CYRILLIC CAPITAL LETTER DJE
0x81 0x0403 #CYRILLIC CAPITAL LETTER GJE
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 0x0453 #CYRILLIC SMALL LETTER GJE
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 0x20AC #EURO SIGN
0x89 0x2030 #PER MILLE SIGN
0x8A 0x0409 #CYRILLIC CAPITAL LETTER LJE
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C 0x040A #CYRILLIC CAPITAL LETTER NJE
0x8D 0x040C #CYRILLIC CAPITAL LETTER KJE
0x8E 0x040B #CYRILLIC CAPITAL LETTER TSHE
0x8F 0x040F #CYRILLIC CAPITAL LETTER DZHE
0x90 0x0452 #CYRILLIC SMALL LETTER DJE
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 #UNDEFINED
0x99 0x2122 #TRADE MARK SIGN
0x9A 0x0459 #CYRILLIC SMALL LETTER LJE
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C 0x045A #CYRILLIC SMALL LETTER NJE
0x9D 0x045C #CYRILLIC SMALL LETTER KJE
0x9E 0x045B #CYRILLIC SMALL LETTER TSHE
0x9F 0x045F #CYRILLIC SMALL LETTER DZHE
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x040E #CYRILLIC CAPITAL LETTER SHORT U
0xA2 0x045E #CYRILLIC SMALL LETTER SHORT U
0xA3 0x0408 #CYRILLIC CAPITAL LETTER JE
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x0490 #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x0401 #CYRILLIC CAPITAL LETTER IO
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x0407 #CYRILLIC CAPITAL LETTER YI
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x0406 #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
0xB3 0x0456 #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
0xB4 0x0491 #CYRILLIC SMALL LETTER GHE WITH UPTURN
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x0451 #CYRILLIC SMALL LETTER IO
0xB9 0x2116 #NUMERO SIGN
0xBA 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x0458 #CYRILLIC SMALL LETTER JE
0xBD 0x0405 #CYRILLIC CAPITAL LETTER DZE
0xBE 0x0455 #CYRILLIC SMALL LETTER DZE
0xBF 0x0457 #CYRILLIC SMALL LETTER YI
0xC0 0x0410 #CYRILLIC CAPITAL LETTER A
0xC1 0x0411 #CYRILLIC CAPITAL LETTER BE
0xC2 0x0412 #CYRILLIC CAPITAL LETTER VE
0xC3 0x0413 #CYRILLIC CAPITAL LETTER GHE
0xC4 0x0414 #CYRILLIC CAPITAL LETTER DE
0xC5 0x0415 #CYRILLIC CAPITAL LETTER IE
0xC6 0x0416 #CYRILLIC CAPITAL LETTER ZHE
0xC7 0x0417 #CYRILLIC CAPITAL LETTER ZE
0xC8 0x0418 #CYRILLIC CAPITAL LETTER I
0xC9 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
0xCA 0x041A #CYRILLIC CAPITAL LETTER KA
0xCB 0x041B #CYRILLIC CAPITAL LETTER EL
0xCC 0x041C #CYRILLIC CAPITAL LETTER EM
0xCD 0x041D #CYRILLIC CAPITAL LETTER EN
0xCE 0x041E #CYRILLIC CAPITAL LETTER O
0xCF 0x041F #CYRILLIC CAPITAL LETTER PE
0xD0 0x0420 #CYRILLIC CAPITAL LETTER ER
0xD1 0x0421 #CYRILLIC CAPITAL LETTER ES
0xD2 0x0422 #CYRILLIC CAPITAL LETTER TE
0xD3 0x0423 #CYRILLIC CAPITAL LETTER U
0xD4 0x0424 #CYRILLIC CAPITAL LETTER EF
0xD5 0x0425 #CYRILLIC CAPITAL LETTER HA
0xD6 0x0426 #CYRILLIC CAPITAL LETTER TSE
0xD7 0x0427 #CYRILLIC CAPITAL LETTER CHE
0xD8 0x0428 #CYRILLIC CAPITAL LETTER SHA
0xD9 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
0xDA 0x042A #CYRILLIC CAPITAL LETTER HARD SIGN
0xDB 0x042B #CYRILLIC CAPITAL LETTER YERU
0xDC 0x042C #CYRILLIC CAPITAL LETTER SOFT SIGN
0xDD 0x042D #CYRILLIC CAPITAL LETTER E
0xDE 0x042E #CYRILLIC CAPITAL LETTER YU
0xDF 0x042F #CYRILLIC CAPITAL LETTER YA
0xE0 0x0430 #CYRILLIC SMALL LETTER A
0xE1 0x0431 #CYRILLIC SMALL LETTER BE
0xE2 0x0432 #CYRILLIC SMALL LETTER VE
0xE3 0x0433 #CYRILLIC SMALL LETTER GHE
0xE4 0x0434 #CYRILLIC SMALL LETTER DE
0xE5 0x0435 #CYRILLIC SMALL LETTER IE
0xE6 0x0436 #CYRILLIC SMALL LETTER ZHE
0xE7 0x0437 #CYRILLIC SMALL LETTER ZE
0xE8 0x0438 #CYRILLIC SMALL LETTER I
0xE9 0x0439 #CYRILLIC SMALL LETTER SHORT I
0xEA 0x043A #CYRILLIC SMALL LETTER KA
0xEB 0x043B #CYRILLIC SMALL LETTER EL
0xEC 0x043C #CYRILLIC SMALL LETTER EM
0xED 0x043D #CYRILLIC SMALL LETTER EN
0xEE 0x043E #CYRILLIC SMALL LETTER O
0xEF 0x043F #CYRILLIC SMALL LETTER PE
0xF0 0x0440 #CYRILLIC SMALL LETTER ER
0xF1 0x0441 #CYRILLIC SMALL LETTER ES
0xF2 0x0442 #CYRILLIC SMALL LETTER TE
0xF3 0x0443 #CYRILLIC SMALL LETTER U
0xF4 0x0444 #CYRILLIC SMALL LETTER EF
0xF5 0x0445 #CYRILLIC SMALL LETTER HA
0xF6 0x0446 #CYRILLIC SMALL LETTER TSE
0xF7 0x0447 #CYRILLIC SMALL LETTER CHE
0xF8 0x0448 #CYRILLIC SMALL LETTER SHA
0xF9 0x0449 #CYRILLIC SMALL LETTER SHCHA
0xFA 0x044A #CYRILLIC SMALL LETTER HARD SIGN
0xFB 0x044B #CYRILLIC SMALL LETTER YERU
0xFC 0x044C #CYRILLIC SMALL LETTER SOFT SIGN
0xFD 0x044D #CYRILLIC SMALL LETTER E
0xFE 0x044E #CYRILLIC SMALL LETTER YU
0xFF 0x044F #CYRILLIC SMALL LETTER YA

274
codepage/cp1252.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp1252 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1252 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1252 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
0x89 0x2030 #PER MILLE SIGN
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
0x8D #UNDEFINED
0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
0x8F #UNDEFINED
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 0x02DC #SMALL TILDE
0x99 0x2122 #TRADE MARK SIGN
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C 0x0153 #LATIN SMALL LIGATURE OE
0x9D #UNDEFINED
0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
0xA2 0x00A2 #CENT SIGN
0xA3 0x00A3 #POUND SIGN
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x00A5 #YEN SIGN
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00A8 #DIAERESIS
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x00AA #FEMININE ORDINAL INDICATOR
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x00AF #MACRON
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x00B2 #SUPERSCRIPT TWO
0xB3 0x00B3 #SUPERSCRIPT THREE
0xB4 0x00B4 #ACUTE ACCENT
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x00B8 #CEDILLA
0xB9 0x00B9 #SUPERSCRIPT ONE
0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
0xBD 0x00BD #VULGAR FRACTION ONE HALF
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
0xBF 0x00BF #INVERTED QUESTION MARK
0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 #LATIN CAPITAL LETTER AE
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x00D0 #LATIN CAPITAL LETTER ETH
0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 #MULTIPLICATION SIGN
0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x00DE #LATIN CAPITAL LETTER THORN
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 #LATIN SMALL LETTER AE
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC #LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x00F0 #LATIN SMALL LETTER ETH
0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 #DIVISION SIGN
0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE #LATIN SMALL LETTER THORN
0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS

274
codepage/cp1253.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp1253 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1253 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1253 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 #UNDEFINED
0x89 0x2030 #PER MILLE SIGN
0x8A #UNDEFINED
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C #UNDEFINED
0x8D #UNDEFINED
0x8E #UNDEFINED
0x8F #UNDEFINED
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 #UNDEFINED
0x99 0x2122 #TRADE MARK SIGN
0x9A #UNDEFINED
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C #UNDEFINED
0x9D #UNDEFINED
0x9E #UNDEFINED
0x9F #UNDEFINED
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x0385 #GREEK DIALYTIKA TONOS
0xA2 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
0xA3 0x00A3 #POUND SIGN
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x00A5 #YEN SIGN
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00A8 #DIAERESIS
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA #UNDEFINED
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x2015 #HORIZONTAL BAR
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x00B2 #SUPERSCRIPT TWO
0xB3 0x00B3 #SUPERSCRIPT THREE
0xB4 0x0384 #GREEK TONOS
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
0xB9 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
0xBA 0x038A #GREEK CAPITAL LETTER IOTA WITH TONOS
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x038C #GREEK CAPITAL LETTER OMICRON WITH TONOS
0xBD 0x00BD #VULGAR FRACTION ONE HALF
0xBE 0x038E #GREEK CAPITAL LETTER UPSILON WITH TONOS
0xBF 0x038F #GREEK CAPITAL LETTER OMEGA WITH TONOS
0xC0 0x0390 #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
0xC1 0x0391 #GREEK CAPITAL LETTER ALPHA
0xC2 0x0392 #GREEK CAPITAL LETTER BETA
0xC3 0x0393 #GREEK CAPITAL LETTER GAMMA
0xC4 0x0394 #GREEK CAPITAL LETTER DELTA
0xC5 0x0395 #GREEK CAPITAL LETTER EPSILON
0xC6 0x0396 #GREEK CAPITAL LETTER ZETA
0xC7 0x0397 #GREEK CAPITAL LETTER ETA
0xC8 0x0398 #GREEK CAPITAL LETTER THETA
0xC9 0x0399 #GREEK CAPITAL LETTER IOTA
0xCA 0x039A #GREEK CAPITAL LETTER KAPPA
0xCB 0x039B #GREEK CAPITAL LETTER LAMDA
0xCC 0x039C #GREEK CAPITAL LETTER MU
0xCD 0x039D #GREEK CAPITAL LETTER NU
0xCE 0x039E #GREEK CAPITAL LETTER XI
0xCF 0x039F #GREEK CAPITAL LETTER OMICRON
0xD0 0x03A0 #GREEK CAPITAL LETTER PI
0xD1 0x03A1 #GREEK CAPITAL LETTER RHO
0xD2 #UNDEFINED
0xD3 0x03A3 #GREEK CAPITAL LETTER SIGMA
0xD4 0x03A4 #GREEK CAPITAL LETTER TAU
0xD5 0x03A5 #GREEK CAPITAL LETTER UPSILON
0xD6 0x03A6 #GREEK CAPITAL LETTER PHI
0xD7 0x03A7 #GREEK CAPITAL LETTER CHI
0xD8 0x03A8 #GREEK CAPITAL LETTER PSI
0xD9 0x03A9 #GREEK CAPITAL LETTER OMEGA
0xDA 0x03AA #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
0xDB 0x03AB #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
0xDC 0x03AC #GREEK SMALL LETTER ALPHA WITH TONOS
0xDD 0x03AD #GREEK SMALL LETTER EPSILON WITH TONOS
0xDE 0x03AE #GREEK SMALL LETTER ETA WITH TONOS
0xDF 0x03AF #GREEK SMALL LETTER IOTA WITH TONOS
0xE0 0x03B0 #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
0xE1 0x03B1 #GREEK SMALL LETTER ALPHA
0xE2 0x03B2 #GREEK SMALL LETTER BETA
0xE3 0x03B3 #GREEK SMALL LETTER GAMMA
0xE4 0x03B4 #GREEK SMALL LETTER DELTA
0xE5 0x03B5 #GREEK SMALL LETTER EPSILON
0xE6 0x03B6 #GREEK SMALL LETTER ZETA
0xE7 0x03B7 #GREEK SMALL LETTER ETA
0xE8 0x03B8 #GREEK SMALL LETTER THETA
0xE9 0x03B9 #GREEK SMALL LETTER IOTA
0xEA 0x03BA #GREEK SMALL LETTER KAPPA
0xEB 0x03BB #GREEK SMALL LETTER LAMDA
0xEC 0x03BC #GREEK SMALL LETTER MU
0xED 0x03BD #GREEK SMALL LETTER NU
0xEE 0x03BE #GREEK SMALL LETTER XI
0xEF 0x03BF #GREEK SMALL LETTER OMICRON
0xF0 0x03C0 #GREEK SMALL LETTER PI
0xF1 0x03C1 #GREEK SMALL LETTER RHO
0xF2 0x03C2 #GREEK SMALL LETTER FINAL SIGMA
0xF3 0x03C3 #GREEK SMALL LETTER SIGMA
0xF4 0x03C4 #GREEK SMALL LETTER TAU
0xF5 0x03C5 #GREEK SMALL LETTER UPSILON
0xF6 0x03C6 #GREEK SMALL LETTER PHI
0xF7 0x03C7 #GREEK SMALL LETTER CHI
0xF8 0x03C8 #GREEK SMALL LETTER PSI
0xF9 0x03C9 #GREEK SMALL LETTER OMEGA
0xFA 0x03CA #GREEK SMALL LETTER IOTA WITH DIALYTIKA
0xFB 0x03CB #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0xFC 0x03CC #GREEK SMALL LETTER OMICRON WITH TONOS
0xFD 0x03CD #GREEK SMALL LETTER UPSILON WITH TONOS
0xFE 0x03CE #GREEK SMALL LETTER OMEGA WITH TONOS
0xFF #UNDEFINED

274
codepage/cp1254.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp1254 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1254 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1254 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
0x89 0x2030 #PER MILLE SIGN
0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
0x8D #UNDEFINED
0x8E #UNDEFINED
0x8F #UNDEFINED
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 0x02DC #SMALL TILDE
0x99 0x2122 #TRADE MARK SIGN
0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C 0x0153 #LATIN SMALL LIGATURE OE
0x9D #UNDEFINED
0x9E #UNDEFINED
0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
0xA2 0x00A2 #CENT SIGN
0xA3 0x00A3 #POUND SIGN
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x00A5 #YEN SIGN
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00A8 #DIAERESIS
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x00AA #FEMININE ORDINAL INDICATOR
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x00AF #MACRON
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x00B2 #SUPERSCRIPT TWO
0xB3 0x00B3 #SUPERSCRIPT THREE
0xB4 0x00B4 #ACUTE ACCENT
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x00B8 #CEDILLA
0xB9 0x00B9 #SUPERSCRIPT ONE
0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
0xBD 0x00BD #VULGAR FRACTION ONE HALF
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
0xBF 0x00BF #INVERTED QUESTION MARK
0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 #LATIN CAPITAL LETTER AE
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x011E #LATIN CAPITAL LETTER G WITH BREVE
0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 #MULTIPLICATION SIGN
0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x0130 #LATIN CAPITAL LETTER I WITH DOT ABOVE
0xDE 0x015E #LATIN CAPITAL LETTER S WITH CEDILLA
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 #LATIN SMALL LETTER AE
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC #LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x011F #LATIN SMALL LETTER G WITH BREVE
0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 #DIVISION SIGN
0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x0131 #LATIN SMALL LETTER DOTLESS I
0xFE 0x015F #LATIN SMALL LETTER S WITH CEDILLA
0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS

274
codepage/cp1255.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp1255 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 1/7/2000
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1255 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1255 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
0x89 0x2030 #PER MILLE SIGN
0x8A #UNDEFINED
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C #UNDEFINED
0x8D #UNDEFINED
0x8E #UNDEFINED
0x8F #UNDEFINED
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 0x02DC #SMALL TILDE
0x99 0x2122 #TRADE MARK SIGN
0x9A #UNDEFINED
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C #UNDEFINED
0x9D #UNDEFINED
0x9E #UNDEFINED
0x9F #UNDEFINED
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
0xA2 0x00A2 #CENT SIGN
0xA3 0x00A3 #POUND SIGN
0xA4 0x20AA #NEW SHEQEL SIGN
0xA5 0x00A5 #YEN SIGN
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00A8 #DIAERESIS
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x00D7 #MULTIPLICATION SIGN
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x00AF #MACRON
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x00B2 #SUPERSCRIPT TWO
0xB3 0x00B3 #SUPERSCRIPT THREE
0xB4 0x00B4 #ACUTE ACCENT
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x00B8 #CEDILLA
0xB9 0x00B9 #SUPERSCRIPT ONE
0xBA 0x00F7 #DIVISION SIGN
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
0xBD 0x00BD #VULGAR FRACTION ONE HALF
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
0xBF 0x00BF #INVERTED QUESTION MARK
0xC0 0x05B0 #HEBREW POINT SHEVA
0xC1 0x05B1 #HEBREW POINT HATAF SEGOL
0xC2 0x05B2 #HEBREW POINT HATAF PATAH
0xC3 0x05B3 #HEBREW POINT HATAF QAMATS
0xC4 0x05B4 #HEBREW POINT HIRIQ
0xC5 0x05B5 #HEBREW POINT TSERE
0xC6 0x05B6 #HEBREW POINT SEGOL
0xC7 0x05B7 #HEBREW POINT PATAH
0xC8 0x05B8 #HEBREW POINT QAMATS
0xC9 0x05B9 #HEBREW POINT HOLAM
0xCA #UNDEFINED
0xCB 0x05BB #HEBREW POINT QUBUTS
0xCC 0x05BC #HEBREW POINT DAGESH OR MAPIQ
0xCD 0x05BD #HEBREW POINT METEG
0xCE 0x05BE #HEBREW PUNCTUATION MAQAF
0xCF 0x05BF #HEBREW POINT RAFE
0xD0 0x05C0 #HEBREW PUNCTUATION PASEQ
0xD1 0x05C1 #HEBREW POINT SHIN DOT
0xD2 0x05C2 #HEBREW POINT SIN DOT
0xD3 0x05C3 #HEBREW PUNCTUATION SOF PASUQ
0xD4 0x05F0 #HEBREW LIGATURE YIDDISH DOUBLE VAV
0xD5 0x05F1 #HEBREW LIGATURE YIDDISH VAV YOD
0xD6 0x05F2 #HEBREW LIGATURE YIDDISH DOUBLE YOD
0xD7 0x05F3 #HEBREW PUNCTUATION GERESH
0xD8 0x05F4 #HEBREW PUNCTUATION GERSHAYIM
0xD9 #UNDEFINED
0xDA #UNDEFINED
0xDB #UNDEFINED
0xDC #UNDEFINED
0xDD #UNDEFINED
0xDE #UNDEFINED
0xDF #UNDEFINED
0xE0 0x05D0 #HEBREW LETTER ALEF
0xE1 0x05D1 #HEBREW LETTER BET
0xE2 0x05D2 #HEBREW LETTER GIMEL
0xE3 0x05D3 #HEBREW LETTER DALET
0xE4 0x05D4 #HEBREW LETTER HE
0xE5 0x05D5 #HEBREW LETTER VAV
0xE6 0x05D6 #HEBREW LETTER ZAYIN
0xE7 0x05D7 #HEBREW LETTER HET
0xE8 0x05D8 #HEBREW LETTER TET
0xE9 0x05D9 #HEBREW LETTER YOD
0xEA 0x05DA #HEBREW LETTER FINAL KAF
0xEB 0x05DB #HEBREW LETTER KAF
0xEC 0x05DC #HEBREW LETTER LAMED
0xED 0x05DD #HEBREW LETTER FINAL MEM
0xEE 0x05DE #HEBREW LETTER MEM
0xEF 0x05DF #HEBREW LETTER FINAL NUN
0xF0 0x05E0 #HEBREW LETTER NUN
0xF1 0x05E1 #HEBREW LETTER SAMEKH
0xF2 0x05E2 #HEBREW LETTER AYIN
0xF3 0x05E3 #HEBREW LETTER FINAL PE
0xF4 0x05E4 #HEBREW LETTER PE
0xF5 0x05E5 #HEBREW LETTER FINAL TSADI
0xF6 0x05E6 #HEBREW LETTER TSADI
0xF7 0x05E7 #HEBREW LETTER QOF
0xF8 0x05E8 #HEBREW LETTER RESH
0xF9 0x05E9 #HEBREW LETTER SHIN
0xFA 0x05EA #HEBREW LETTER TAV
0xFB #UNDEFINED
0xFC #UNDEFINED
0xFD 0x200E #LEFT-TO-RIGHT MARK
0xFE 0x200F #RIGHT-TO-LEFT MARK
0xFF #UNDEFINED

274
codepage/cp1256.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp1256 to Unicode table
# Unicode version: 2.1
# Table version: 2.01
# Table format: Format A
# Date: 01/5/99
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1256 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1256 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 0x067E #ARABIC LETTER PEH
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
0x89 0x2030 #PER MILLE SIGN
0x8A 0x0679 #ARABIC LETTER TTEH
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
0x8D 0x0686 #ARABIC LETTER TCHEH
0x8E 0x0698 #ARABIC LETTER JEH
0x8F 0x0688 #ARABIC LETTER DDAL
0x90 0x06AF #ARABIC LETTER GAF
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 0x06A9 #ARABIC LETTER KEHEH
0x99 0x2122 #TRADE MARK SIGN
0x9A 0x0691 #ARABIC LETTER RREH
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C 0x0153 #LATIN SMALL LIGATURE OE
0x9D 0x200C #ZERO WIDTH NON-JOINER
0x9E 0x200D #ZERO WIDTH JOINER
0x9F 0x06BA #ARABIC LETTER NOON GHUNNA
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x060C #ARABIC COMMA
0xA2 0x00A2 #CENT SIGN
0xA3 0x00A3 #POUND SIGN
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x00A5 #YEN SIGN
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00A8 #DIAERESIS
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x06BE #ARABIC LETTER HEH DOACHASHMEE
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x00AF #MACRON
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x00B2 #SUPERSCRIPT TWO
0xB3 0x00B3 #SUPERSCRIPT THREE
0xB4 0x00B4 #ACUTE ACCENT
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x00B8 #CEDILLA
0xB9 0x00B9 #SUPERSCRIPT ONE
0xBA 0x061B #ARABIC SEMICOLON
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
0xBD 0x00BD #VULGAR FRACTION ONE HALF
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
0xBF 0x061F #ARABIC QUESTION MARK
0xC0 0x06C1 #ARABIC LETTER HEH GOAL
0xC1 0x0621 #ARABIC LETTER HAMZA
0xC2 0x0622 #ARABIC LETTER ALEF WITH MADDA ABOVE
0xC3 0x0623 #ARABIC LETTER ALEF WITH HAMZA ABOVE
0xC4 0x0624 #ARABIC LETTER WAW WITH HAMZA ABOVE
0xC5 0x0625 #ARABIC LETTER ALEF WITH HAMZA BELOW
0xC6 0x0626 #ARABIC LETTER YEH WITH HAMZA ABOVE
0xC7 0x0627 #ARABIC LETTER ALEF
0xC8 0x0628 #ARABIC LETTER BEH
0xC9 0x0629 #ARABIC LETTER TEH MARBUTA
0xCA 0x062A #ARABIC LETTER TEH
0xCB 0x062B #ARABIC LETTER THEH
0xCC 0x062C #ARABIC LETTER JEEM
0xCD 0x062D #ARABIC LETTER HAH
0xCE 0x062E #ARABIC LETTER KHAH
0xCF 0x062F #ARABIC LETTER DAL
0xD0 0x0630 #ARABIC LETTER THAL
0xD1 0x0631 #ARABIC LETTER REH
0xD2 0x0632 #ARABIC LETTER ZAIN
0xD3 0x0633 #ARABIC LETTER SEEN
0xD4 0x0634 #ARABIC LETTER SHEEN
0xD5 0x0635 #ARABIC LETTER SAD
0xD6 0x0636 #ARABIC LETTER DAD
0xD7 0x00D7 #MULTIPLICATION SIGN
0xD8 0x0637 #ARABIC LETTER TAH
0xD9 0x0638 #ARABIC LETTER ZAH
0xDA 0x0639 #ARABIC LETTER AIN
0xDB 0x063A #ARABIC LETTER GHAIN
0xDC 0x0640 #ARABIC TATWEEL
0xDD 0x0641 #ARABIC LETTER FEH
0xDE 0x0642 #ARABIC LETTER QAF
0xDF 0x0643 #ARABIC LETTER KAF
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
0xE1 0x0644 #ARABIC LETTER LAM
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x0645 #ARABIC LETTER MEEM
0xE4 0x0646 #ARABIC LETTER NOON
0xE5 0x0647 #ARABIC LETTER HEH
0xE6 0x0648 #ARABIC LETTER WAW
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x0649 #ARABIC LETTER ALEF MAKSURA
0xED 0x064A #ARABIC LETTER YEH
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x064B #ARABIC FATHATAN
0xF1 0x064C #ARABIC DAMMATAN
0xF2 0x064D #ARABIC KASRATAN
0xF3 0x064E #ARABIC FATHA
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x064F #ARABIC DAMMA
0xF6 0x0650 #ARABIC KASRA
0xF7 0x00F7 #DIVISION SIGN
0xF8 0x0651 #ARABIC SHADDA
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
0xFA 0x0652 #ARABIC SUKUN
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x200E #LEFT-TO-RIGHT MARK
0xFE 0x200F #RIGHT-TO-LEFT MARK
0xFF 0x06D2 #ARABIC LETTER YEH BARREE

274
codepage/cp1257.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp1257 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1257 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1257 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 #UNDEFINED
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 #UNDEFINED
0x89 0x2030 #PER MILLE SIGN
0x8A #UNDEFINED
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C #UNDEFINED
0x8D 0x00A8 #DIAERESIS
0x8E 0x02C7 #CARON
0x8F 0x00B8 #CEDILLA
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 #UNDEFINED
0x99 0x2122 #TRADE MARK SIGN
0x9A #UNDEFINED
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C #UNDEFINED
0x9D 0x00AF #MACRON
0x9E 0x02DB #OGONEK
0x9F #UNDEFINED
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 #UNDEFINED
0xA2 0x00A2 #CENT SIGN
0xA3 0x00A3 #POUND SIGN
0xA4 0x00A4 #CURRENCY SIGN
0xA5 #UNDEFINED
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x00C6 #LATIN CAPITAL LETTER AE
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x00B2 #SUPERSCRIPT TWO
0xB3 0x00B3 #SUPERSCRIPT THREE
0xB4 0x00B4 #ACUTE ACCENT
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
0xB9 0x00B9 #SUPERSCRIPT ONE
0xBA 0x0157 #LATIN SMALL LETTER R WITH CEDILLA
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
0xBD 0x00BD #VULGAR FRACTION ONE HALF
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
0xBF 0x00E6 #LATIN SMALL LETTER AE
0xC0 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
0xC1 0x012E #LATIN CAPITAL LETTER I WITH OGONEK
0xC2 0x0100 #LATIN CAPITAL LETTER A WITH MACRON
0xC3 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
0xC7 0x0112 #LATIN CAPITAL LETTER E WITH MACRON
0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
0xCB 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE
0xCC 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA
0xCD 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA
0xCE 0x012A #LATIN CAPITAL LETTER I WITH MACRON
0xCF 0x013B #LATIN CAPITAL LETTER L WITH CEDILLA
0xD0 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
0xD2 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x014C #LATIN CAPITAL LETTER O WITH MACRON
0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 #MULTIPLICATION SIGN
0xD8 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK
0xD9 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
0xDA 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
0xDB 0x016A #LATIN CAPITAL LETTER U WITH MACRON
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xDE 0x017D #LATIN CAPITAL LETTER Z WITH CARON
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
0xE0 0x0105 #LATIN SMALL LETTER A WITH OGONEK
0xE1 0x012F #LATIN SMALL LETTER I WITH OGONEK
0xE2 0x0101 #LATIN SMALL LETTER A WITH MACRON
0xE3 0x0107 #LATIN SMALL LETTER C WITH ACUTE
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x0119 #LATIN SMALL LETTER E WITH OGONEK
0xE7 0x0113 #LATIN SMALL LETTER E WITH MACRON
0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
0xEA 0x017A #LATIN SMALL LETTER Z WITH ACUTE
0xEB 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE
0xEC 0x0123 #LATIN SMALL LETTER G WITH CEDILLA
0xED 0x0137 #LATIN SMALL LETTER K WITH CEDILLA
0xEE 0x012B #LATIN SMALL LETTER I WITH MACRON
0xEF 0x013C #LATIN SMALL LETTER L WITH CEDILLA
0xF0 0x0161 #LATIN SMALL LETTER S WITH CARON
0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
0xF2 0x0146 #LATIN SMALL LETTER N WITH CEDILLA
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
0xF4 0x014D #LATIN SMALL LETTER O WITH MACRON
0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 #DIVISION SIGN
0xF8 0x0173 #LATIN SMALL LETTER U WITH OGONEK
0xF9 0x0142 #LATIN SMALL LETTER L WITH STROKE
0xFA 0x015B #LATIN SMALL LETTER S WITH ACUTE
0xFB 0x016B #LATIN SMALL LETTER U WITH MACRON
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
0xFE 0x017E #LATIN SMALL LETTER Z WITH CARON
0xFF 0x02D9 #DOT ABOVE

274
codepage/cp1258.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp1258 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 04/15/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp1258 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp1258 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
0x89 0x2030 #PER MILLE SIGN
0x8A #UNDEFINED
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
0x8D #UNDEFINED
0x8E #UNDEFINED
0x8F #UNDEFINED
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 0x02DC #SMALL TILDE
0x99 0x2122 #TRADE MARK SIGN
0x9A #UNDEFINED
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C 0x0153 #LATIN SMALL LIGATURE OE
0x9D #UNDEFINED
0x9E #UNDEFINED
0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x00A1 #INVERTED EXCLAMATION MARK
0xA2 0x00A2 #CENT SIGN
0xA3 0x00A3 #POUND SIGN
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x00A5 #YEN SIGN
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00A8 #DIAERESIS
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA 0x00AA #FEMININE ORDINAL INDICATOR
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x00AF #MACRON
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x00B2 #SUPERSCRIPT TWO
0xB3 0x00B3 #SUPERSCRIPT THREE
0xB4 0x00B4 #ACUTE ACCENT
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x00B8 #CEDILLA
0xB9 0x00B9 #SUPERSCRIPT ONE
0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
0xBD 0x00BD #VULGAR FRACTION ONE HALF
0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
0xBF 0x00BF #INVERTED QUESTION MARK
0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 #LATIN CAPITAL LETTER AE
0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x0300 #COMBINING GRAVE ACCENT
0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x0309 #COMBINING HOOK ABOVE
0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x01A0 #LATIN CAPITAL LETTER O WITH HORN
0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 #MULTIPLICATION SIGN
0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x01AF #LATIN CAPITAL LETTER U WITH HORN
0xDE 0x0303 #COMBINING TILDE
0xDF 0x00DF #LATIN SMALL LETTER SHARP S
0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x0103 #LATIN SMALL LETTER A WITH BREVE
0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 #LATIN SMALL LETTER AE
0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x0301 #COMBINING ACUTE ACCENT
0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x0111 #LATIN SMALL LETTER D WITH STROKE
0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
0xF2 0x0323 #COMBINING DOT BELOW
0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x01A1 #LATIN SMALL LETTER O WITH HORN
0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 #DIVISION SIGN
0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x01B0 #LATIN SMALL LETTER U WITH HORN
0xFE 0x20AB #DONG SIGN
0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS

274
codepage/cp437.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp437_DOSLatinUS to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp437_DOSLatinUS code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp437_DOSLatinUS order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00a2 #CENT SIGN
0x9c 0x00a3 #POUND SIGN
0x9d 0x00a5 #YEN SIGN
0x9e 0x20a7 #PESETA SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


274
codepage/cp737.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp737_DOSGreek to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp737_DOSGreek code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp737_DOSGreek order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x0391 #GREEK CAPITAL LETTER ALPHA
0x81 0x0392 #GREEK CAPITAL LETTER BETA
0x82 0x0393 #GREEK CAPITAL LETTER GAMMA
0x83 0x0394 #GREEK CAPITAL LETTER DELTA
0x84 0x0395 #GREEK CAPITAL LETTER EPSILON
0x85 0x0396 #GREEK CAPITAL LETTER ZETA
0x86 0x0397 #GREEK CAPITAL LETTER ETA
0x87 0x0398 #GREEK CAPITAL LETTER THETA
0x88 0x0399 #GREEK CAPITAL LETTER IOTA
0x89 0x039a #GREEK CAPITAL LETTER KAPPA
0x8a 0x039b #GREEK CAPITAL LETTER LAMDA
0x8b 0x039c #GREEK CAPITAL LETTER MU
0x8c 0x039d #GREEK CAPITAL LETTER NU
0x8d 0x039e #GREEK CAPITAL LETTER XI
0x8e 0x039f #GREEK CAPITAL LETTER OMICRON
0x8f 0x03a0 #GREEK CAPITAL LETTER PI
0x90 0x03a1 #GREEK CAPITAL LETTER RHO
0x91 0x03a3 #GREEK CAPITAL LETTER SIGMA
0x92 0x03a4 #GREEK CAPITAL LETTER TAU
0x93 0x03a5 #GREEK CAPITAL LETTER UPSILON
0x94 0x03a6 #GREEK CAPITAL LETTER PHI
0x95 0x03a7 #GREEK CAPITAL LETTER CHI
0x96 0x03a8 #GREEK CAPITAL LETTER PSI
0x97 0x03a9 #GREEK CAPITAL LETTER OMEGA
0x98 0x03b1 #GREEK SMALL LETTER ALPHA
0x99 0x03b2 #GREEK SMALL LETTER BETA
0x9a 0x03b3 #GREEK SMALL LETTER GAMMA
0x9b 0x03b4 #GREEK SMALL LETTER DELTA
0x9c 0x03b5 #GREEK SMALL LETTER EPSILON
0x9d 0x03b6 #GREEK SMALL LETTER ZETA
0x9e 0x03b7 #GREEK SMALL LETTER ETA
0x9f 0x03b8 #GREEK SMALL LETTER THETA
0xa0 0x03b9 #GREEK SMALL LETTER IOTA
0xa1 0x03ba #GREEK SMALL LETTER KAPPA
0xa2 0x03bb #GREEK SMALL LETTER LAMDA
0xa3 0x03bc #GREEK SMALL LETTER MU
0xa4 0x03bd #GREEK SMALL LETTER NU
0xa5 0x03be #GREEK SMALL LETTER XI
0xa6 0x03bf #GREEK SMALL LETTER OMICRON
0xa7 0x03c0 #GREEK SMALL LETTER PI
0xa8 0x03c1 #GREEK SMALL LETTER RHO
0xa9 0x03c3 #GREEK SMALL LETTER SIGMA
0xaa 0x03c2 #GREEK SMALL LETTER FINAL SIGMA
0xab 0x03c4 #GREEK SMALL LETTER TAU
0xac 0x03c5 #GREEK SMALL LETTER UPSILON
0xad 0x03c6 #GREEK SMALL LETTER PHI
0xae 0x03c7 #GREEK SMALL LETTER CHI
0xaf 0x03c8 #GREEK SMALL LETTER PSI
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03c9 #GREEK SMALL LETTER OMEGA
0xe1 0x03ac #GREEK SMALL LETTER ALPHA WITH TONOS
0xe2 0x03ad #GREEK SMALL LETTER EPSILON WITH TONOS
0xe3 0x03ae #GREEK SMALL LETTER ETA WITH TONOS
0xe4 0x03ca #GREEK SMALL LETTER IOTA WITH DIALYTIKA
0xe5 0x03af #GREEK SMALL LETTER IOTA WITH TONOS
0xe6 0x03cc #GREEK SMALL LETTER OMICRON WITH TONOS
0xe7 0x03cd #GREEK SMALL LETTER UPSILON WITH TONOS
0xe8 0x03cb #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0xe9 0x03ce #GREEK SMALL LETTER OMEGA WITH TONOS
0xea 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
0xeb 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
0xec 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
0xed 0x038a #GREEK CAPITAL LETTER IOTA WITH TONOS
0xee 0x038c #GREEK CAPITAL LETTER OMICRON WITH TONOS
0xef 0x038e #GREEK CAPITAL LETTER UPSILON WITH TONOS
0xf0 0x038f #GREEK CAPITAL LETTER OMEGA WITH TONOS
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x03aa #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
0xf5 0x03ab #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


275
codepage/cp775.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp775_DOSBaltRim to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp775_DOSBaltRim code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp775_DOSBaltRim order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x0101 #LATIN SMALL LETTER A WITH MACRON
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x0123 #LATIN SMALL LETTER G WITH CEDILLA
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x0107 #LATIN SMALL LETTER C WITH ACUTE
0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE
0x89 0x0113 #LATIN SMALL LETTER E WITH MACRON
0x8a 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA
0x8b 0x0157 #LATIN SMALL LETTER R WITH CEDILLA
0x8c 0x012b #LATIN SMALL LETTER I WITH MACRON
0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x014d #LATIN SMALL LETTER O WITH MACRON
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA
0x96 0x00a2 #CENT SIGN
0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE
0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x00d7 #MULTIPLICATION SIGN
0x9f 0x00a4 #CURRENCY SIGN
0xa0 0x0100 #LATIN CAPITAL LETTER A WITH MACRON
0xa1 0x012a #LATIN CAPITAL LETTER I WITH MACRON
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xa4 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE
0xa5 0x017a #LATIN SMALL LETTER Z WITH ACUTE
0xa6 0x201d #RIGHT DOUBLE QUOTATION MARK
0xa7 0x00a6 #BROKEN BAR
0xa8 0x00a9 #COPYRIGHT SIGN
0xa9 0x00ae #REGISTERED SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
0xb6 0x010c #LATIN CAPITAL LETTER C WITH CARON
0xb7 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
0xb8 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x012e #LATIN CAPITAL LETTER I WITH OGONEK
0xbe 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK
0xc7 0x016a #LATIN CAPITAL LETTER U WITH MACRON
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x017d #LATIN CAPITAL LETTER Z WITH CARON
0xd0 0x0105 #LATIN SMALL LETTER A WITH OGONEK
0xd1 0x010d #LATIN SMALL LETTER C WITH CARON
0xd2 0x0119 #LATIN SMALL LETTER E WITH OGONEK
0xd3 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE
0xd4 0x012f #LATIN SMALL LETTER I WITH OGONEK
0xd5 0x0161 #LATIN SMALL LETTER S WITH CARON
0xd6 0x0173 #LATIN SMALL LETTER U WITH OGONEK
0xd7 0x016b #LATIN SMALL LETTER U WITH MACRON
0xd8 0x017e #LATIN SMALL LETTER Z WITH CARON
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xe1 0x00df #LATIN SMALL LETTER SHARP S (GERMAN)
0xe2 0x014c #LATIN CAPITAL LETTER O WITH MACRON
0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
0xe6 0x00b5 #MICRO SIGN
0xe7 0x0144 #LATIN SMALL LETTER N WITH ACUTE
0xe8 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA
0xe9 0x0137 #LATIN SMALL LETTER K WITH CEDILLA
0xea 0x013b #LATIN CAPITAL LETTER L WITH CEDILLA
0xeb 0x013c #LATIN SMALL LETTER L WITH CEDILLA
0xec 0x0146 #LATIN SMALL LETTER N WITH CEDILLA
0xed 0x0112 #LATIN CAPITAL LETTER E WITH MACRON
0xee 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA
0xef 0x2019 #RIGHT SINGLE QUOTATION MARK
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x201c #LEFT DOUBLE QUOTATION MARK
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
0xf4 0x00b6 #PILCROW SIGN
0xf5 0x00a7 #SECTION SIGN
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x201e #DOUBLE LOW-9 QUOTATION MARK
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x00b9 #SUPERSCRIPT ONE
0xfc 0x00b3 #SUPERSCRIPT THREE
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


274
codepage/cp850.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp850_DOSLatin1 to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp850_DOSLatin1 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp850_DOSLatin1 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x00d7 #MULTIPLICATION SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x00ae #REGISTERED SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xb7 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
0xb8 0x00a9 #COPYRIGHT SIGN
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x00a2 #CENT SIGN
0xbe 0x00a5 #YEN SIGN
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x00e3 #LATIN SMALL LETTER A WITH TILDE
0xc7 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x00a4 #CURRENCY SIGN
0xd0 0x00f0 #LATIN SMALL LETTER ETH
0xd1 0x00d0 #LATIN CAPITAL LETTER ETH
0xd2 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
0xd4 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
0xd5 0x0131 #LATIN SMALL LETTER DOTLESS I
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xd8 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x00a6 #BROKEN BAR
0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xe3 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
0xe6 0x00b5 #MICRO SIGN
0xe7 0x00fe #LATIN SMALL LETTER THORN
0xe8 0x00de #LATIN CAPITAL LETTER THORN
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0xea 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xeb 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
0xee 0x00af #MACRON
0xef 0x00b4 #ACUTE ACCENT
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2017 #DOUBLE LOW LINE
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
0xf4 0x00b6 #PILCROW SIGN
0xf5 0x00a7 #SECTION SIGN
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x00b8 #CEDILLA
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x00b9 #SUPERSCRIPT ONE
0xfc 0x00b3 #SUPERSCRIPT THREE
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


274
codepage/cp852.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp852_DOSLatin2 to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp852_DOSLatin2 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp852_DOSLatin2 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x016f #LATIN SMALL LETTER U WITH RING ABOVE
0x86 0x0107 #LATIN SMALL LETTER C WITH ACUTE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0x8b 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
0x92 0x013a #LATIN SMALL LETTER L WITH ACUTE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x013d #LATIN CAPITAL LETTER L WITH CARON
0x96 0x013e #LATIN SMALL LETTER L WITH CARON
0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE
0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x0164 #LATIN CAPITAL LETTER T WITH CARON
0x9c 0x0165 #LATIN SMALL LETTER T WITH CARON
0x9d 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
0x9e 0x00d7 #MULTIPLICATION SIGN
0x9f 0x010d #LATIN SMALL LETTER C WITH CARON
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
0xa5 0x0105 #LATIN SMALL LETTER A WITH OGONEK
0xa6 0x017d #LATIN CAPITAL LETTER Z WITH CARON
0xa7 0x017e #LATIN SMALL LETTER Z WITH CARON
0xa8 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
0xa9 0x0119 #LATIN SMALL LETTER E WITH OGONEK
0xaa 0x00ac #NOT SIGN
0xab 0x017a #LATIN SMALL LETTER Z WITH ACUTE
0xac 0x010c #LATIN CAPITAL LETTER C WITH CARON
0xad 0x015f #LATIN SMALL LETTER S WITH CEDILLA
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xb7 0x011a #LATIN CAPITAL LETTER E WITH CARON
0xb8 0x015e #LATIN CAPITAL LETTER S WITH CEDILLA
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xbe 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
0xc7 0x0103 #LATIN SMALL LETTER A WITH BREVE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x00a4 #CURRENCY SIGN
0xd0 0x0111 #LATIN SMALL LETTER D WITH STROKE
0xd1 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
0xd2 0x010e #LATIN CAPITAL LETTER D WITH CARON
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
0xd4 0x010f #LATIN SMALL LETTER D WITH CARON
0xd5 0x0147 #LATIN CAPITAL LETTER N WITH CARON
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xd8 0x011b #LATIN SMALL LETTER E WITH CARON
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
0xde 0x016e #LATIN CAPITAL LETTER U WITH RING ABOVE
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
0xe4 0x0144 #LATIN SMALL LETTER N WITH ACUTE
0xe5 0x0148 #LATIN SMALL LETTER N WITH CARON
0xe6 0x0160 #LATIN CAPITAL LETTER S WITH CARON
0xe7 0x0161 #LATIN SMALL LETTER S WITH CARON
0xe8 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0xea 0x0155 #LATIN SMALL LETTER R WITH ACUTE
0xeb 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
0xee 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
0xef 0x00b4 #ACUTE ACCENT
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x02dd #DOUBLE ACUTE ACCENT
0xf2 0x02db #OGONEK
0xf3 0x02c7 #CARON
0xf4 0x02d8 #BREVE
0xf5 0x00a7 #SECTION SIGN
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x00b8 #CEDILLA
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xfa 0x02d9 #DOT ABOVE
0xfb 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
0xfc 0x0158 #LATIN CAPITAL LETTER R WITH CARON
0xfd 0x0159 #LATIN SMALL LETTER R WITH CARON
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


275
codepage/cp855.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp855_DOSCyrillic to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp855_DOSCyrillic code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp855_DOSCyrillic order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x0452 #CYRILLIC SMALL LETTER DJE
0x81 0x0402 #CYRILLIC CAPITAL LETTER DJE
0x82 0x0453 #CYRILLIC SMALL LETTER GJE
0x83 0x0403 #CYRILLIC CAPITAL LETTER GJE
0x84 0x0451 #CYRILLIC SMALL LETTER IO
0x85 0x0401 #CYRILLIC CAPITAL LETTER IO
0x86 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
0x87 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
0x88 0x0455 #CYRILLIC SMALL LETTER DZE
0x89 0x0405 #CYRILLIC CAPITAL LETTER DZE
0x8a 0x0456 #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
0x8b 0x0406 #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
0x8c 0x0457 #CYRILLIC SMALL LETTER YI
0x8d 0x0407 #CYRILLIC CAPITAL LETTER YI
0x8e 0x0458 #CYRILLIC SMALL LETTER JE
0x8f 0x0408 #CYRILLIC CAPITAL LETTER JE
0x90 0x0459 #CYRILLIC SMALL LETTER LJE
0x91 0x0409 #CYRILLIC CAPITAL LETTER LJE
0x92 0x045a #CYRILLIC SMALL LETTER NJE
0x93 0x040a #CYRILLIC CAPITAL LETTER NJE
0x94 0x045b #CYRILLIC SMALL LETTER TSHE
0x95 0x040b #CYRILLIC CAPITAL LETTER TSHE
0x96 0x045c #CYRILLIC SMALL LETTER KJE
0x97 0x040c #CYRILLIC CAPITAL LETTER KJE
0x98 0x045e #CYRILLIC SMALL LETTER SHORT U
0x99 0x040e #CYRILLIC CAPITAL LETTER SHORT U
0x9a 0x045f #CYRILLIC SMALL LETTER DZHE
0x9b 0x040f #CYRILLIC CAPITAL LETTER DZHE
0x9c 0x044e #CYRILLIC SMALL LETTER YU
0x9d 0x042e #CYRILLIC CAPITAL LETTER YU
0x9e 0x044a #CYRILLIC SMALL LETTER HARD SIGN
0x9f 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN
0xa0 0x0430 #CYRILLIC SMALL LETTER A
0xa1 0x0410 #CYRILLIC CAPITAL LETTER A
0xa2 0x0431 #CYRILLIC SMALL LETTER BE
0xa3 0x0411 #CYRILLIC CAPITAL LETTER BE
0xa4 0x0446 #CYRILLIC SMALL LETTER TSE
0xa5 0x0426 #CYRILLIC CAPITAL LETTER TSE
0xa6 0x0434 #CYRILLIC SMALL LETTER DE
0xa7 0x0414 #CYRILLIC CAPITAL LETTER DE
0xa8 0x0435 #CYRILLIC SMALL LETTER IE
0xa9 0x0415 #CYRILLIC CAPITAL LETTER IE
0xaa 0x0444 #CYRILLIC SMALL LETTER EF
0xab 0x0424 #CYRILLIC CAPITAL LETTER EF
0xac 0x0433 #CYRILLIC SMALL LETTER GHE
0xad 0x0413 #CYRILLIC CAPITAL LETTER GHE
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x0445 #CYRILLIC SMALL LETTER HA
0xb6 0x0425 #CYRILLIC CAPITAL LETTER HA
0xb7 0x0438 #CYRILLIC SMALL LETTER I
0xb8 0x0418 #CYRILLIC CAPITAL LETTER I
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x0439 #CYRILLIC SMALL LETTER SHORT I
0xbe 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x043a #CYRILLIC SMALL LETTER KA
0xc7 0x041a #CYRILLIC CAPITAL LETTER KA
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x00a4 #CURRENCY SIGN
0xd0 0x043b #CYRILLIC SMALL LETTER EL
0xd1 0x041b #CYRILLIC CAPITAL LETTER EL
0xd2 0x043c #CYRILLIC SMALL LETTER EM
0xd3 0x041c #CYRILLIC CAPITAL LETTER EM
0xd4 0x043d #CYRILLIC SMALL LETTER EN
0xd5 0x041d #CYRILLIC CAPITAL LETTER EN
0xd6 0x043e #CYRILLIC SMALL LETTER O
0xd7 0x041e #CYRILLIC CAPITAL LETTER O
0xd8 0x043f #CYRILLIC SMALL LETTER PE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x041f #CYRILLIC CAPITAL LETTER PE
0xde 0x044f #CYRILLIC SMALL LETTER YA
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x042f #CYRILLIC CAPITAL LETTER YA
0xe1 0x0440 #CYRILLIC SMALL LETTER ER
0xe2 0x0420 #CYRILLIC CAPITAL LETTER ER
0xe3 0x0441 #CYRILLIC SMALL LETTER ES
0xe4 0x0421 #CYRILLIC CAPITAL LETTER ES
0xe5 0x0442 #CYRILLIC SMALL LETTER TE
0xe6 0x0422 #CYRILLIC CAPITAL LETTER TE
0xe7 0x0443 #CYRILLIC SMALL LETTER U
0xe8 0x0423 #CYRILLIC CAPITAL LETTER U
0xe9 0x0436 #CYRILLIC SMALL LETTER ZHE
0xea 0x0416 #CYRILLIC CAPITAL LETTER ZHE
0xeb 0x0432 #CYRILLIC SMALL LETTER VE
0xec 0x0412 #CYRILLIC CAPITAL LETTER VE
0xed 0x044c #CYRILLIC SMALL LETTER SOFT SIGN
0xee 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN
0xef 0x2116 #NUMERO SIGN
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x044b #CYRILLIC SMALL LETTER YERU
0xf2 0x042b #CYRILLIC CAPITAL LETTER YERU
0xf3 0x0437 #CYRILLIC SMALL LETTER ZE
0xf4 0x0417 #CYRILLIC CAPITAL LETTER ZE
0xf5 0x0448 #CYRILLIC SMALL LETTER SHA
0xf6 0x0428 #CYRILLIC CAPITAL LETTER SHA
0xf7 0x044d #CYRILLIC SMALL LETTER E
0xf8 0x042d #CYRILLIC CAPITAL LETTER E
0xf9 0x0449 #CYRILLIC SMALL LETTER SHCHA
0xfa 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
0xfb 0x0447 #CYRILLIC SMALL LETTER CHE
0xfc 0x0427 #CYRILLIC CAPITAL LETTER CHE
0xfd 0x00a7 #SECTION SIGN
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


275
codepage/cp857.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp857_DOSTurkish to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp857_DOSTurkish code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp857_DOSTurkish order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x0131 #LATIN SMALL LETTER DOTLESS I
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x0130 #LATIN CAPITAL LETTER I WITH DOT ABOVE
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x015e #LATIN CAPITAL LETTER S WITH CEDILLA
0x9f 0x015f #LATIN SMALL LETTER S WITH CEDILLA
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x011e #LATIN CAPITAL LETTER G WITH BREVE
0xa7 0x011f #LATIN SMALL LETTER G WITH BREVE
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x00ae #REGISTERED SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xb7 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
0xb8 0x00a9 #COPYRIGHT SIGN
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x00a2 #CENT SIGN
0xbe 0x00a5 #YEN SIGN
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x00e3 #LATIN SMALL LETTER A WITH TILDE
0xc7 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x00a4 #CURRENCY SIGN
0xd0 0x00ba #MASCULINE ORDINAL INDICATOR
0xd1 0x00aa #FEMININE ORDINAL INDICATOR
0xd2 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
0xd4 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
0xd5 #UNDEFINED
0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xd8 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x00a6 #BROKEN BAR
0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xe3 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE
0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
0xe6 0x00b5 #MICRO SIGN
0xe7 #UNDEFINED
0xe8 0x00d7 #MULTIPLICATION SIGN
0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0xea 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xeb 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
0xec 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0xed 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
0xee 0x00af #MACRON
0xef 0x00b4 #ACUTE ACCENT
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 #UNDEFINED
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
0xf4 0x00b6 #PILCROW SIGN
0xf5 0x00a7 #SECTION SIGN
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x00b8 #CEDILLA
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x00b9 #SUPERSCRIPT ONE
0xfc 0x00b3 #SUPERSCRIPT THREE
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


275
codepage/cp860.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp860_DOSPortuguese to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp860_DOSPortuguese code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp860_DOSPortuguese order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e3 #LATIN SMALL LETTER A WITH TILDE
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0x8c 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0x8e 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE
0x8f 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
0x92 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f5 #LATIN SMALL LETTER O WITH TILDE
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
0x99 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00a2 #CENT SIGN
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
0x9e 0x20a7 #PESETA SIGN
0x9f 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


275
codepage/cp861.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp861_DOSIcelandic to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp861_DOSIcelandic code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp861_DOSIcelandic order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00d0 #LATIN CAPITAL LETTER ETH
0x8c 0x00f0 #LATIN SMALL LETTER ETH
0x8d 0x00de #LATIN CAPITAL LETTER THORN
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00fe #LATIN SMALL LETTER THORN
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE
0x98 0x00fd #LATIN SMALL LETTER Y WITH ACUTE
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x20a7 #PESETA SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE
0xa5 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE
0xa6 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE
0xa7 0x00da #LATIN CAPITAL LETTER U WITH ACUTE
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


275
codepage/cp862.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp862_DOSHebrew to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp862_DOSHebrew code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp862_DOSHebrew order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x05d0 #HEBREW LETTER ALEF
0x81 0x05d1 #HEBREW LETTER BET
0x82 0x05d2 #HEBREW LETTER GIMEL
0x83 0x05d3 #HEBREW LETTER DALET
0x84 0x05d4 #HEBREW LETTER HE
0x85 0x05d5 #HEBREW LETTER VAV
0x86 0x05d6 #HEBREW LETTER ZAYIN
0x87 0x05d7 #HEBREW LETTER HET
0x88 0x05d8 #HEBREW LETTER TET
0x89 0x05d9 #HEBREW LETTER YOD
0x8a 0x05da #HEBREW LETTER FINAL KAF
0x8b 0x05db #HEBREW LETTER KAF
0x8c 0x05dc #HEBREW LETTER LAMED
0x8d 0x05dd #HEBREW LETTER FINAL MEM
0x8e 0x05de #HEBREW LETTER MEM
0x8f 0x05df #HEBREW LETTER FINAL NUN
0x90 0x05e0 #HEBREW LETTER NUN
0x91 0x05e1 #HEBREW LETTER SAMEKH
0x92 0x05e2 #HEBREW LETTER AYIN
0x93 0x05e3 #HEBREW LETTER FINAL PE
0x94 0x05e4 #HEBREW LETTER PE
0x95 0x05e5 #HEBREW LETTER FINAL TSADI
0x96 0x05e6 #HEBREW LETTER TSADI
0x97 0x05e7 #HEBREW LETTER QOF
0x98 0x05e8 #HEBREW LETTER RESH
0x99 0x05e9 #HEBREW LETTER SHIN
0x9a 0x05ea #HEBREW LETTER TAV
0x9b 0x00a2 #CENT SIGN
0x9c 0x00a3 #POUND SIGN
0x9d 0x00a5 #YEN SIGN
0x9e 0x20a7 #PESETA SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S (GERMAN)
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


275
codepage/cp863.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp863_DOSCanadaF to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp863_DOSCanadaF code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp863_DOSCanadaF order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00b6 #PILCROW SIGN
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x2017 #DOUBLE LOW LINE
0x8e 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE
0x8f 0x00a7 #SECTION SIGN
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE
0x92 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS
0x95 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00a4 #CURRENCY SIGN
0x99 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00a2 #CENT SIGN
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE
0x9e 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00a6 #BROKEN BAR
0xa1 0x00b4 #ACUTE ACCENT
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00a8 #DIAERESIS
0xa5 0x00b8 #CEDILLA
0xa6 0x00b3 #SUPERSCRIPT THREE
0xa7 0x00af #MACRON
0xa8 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00be #VULGAR FRACTION THREE QUARTERS
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


275
codepage/cp864.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp864_DOSArabic to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp864_DOSArabic code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp864_DOSArabic order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x066a #ARABIC PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00b0 #DEGREE SIGN
0x81 0x00b7 #MIDDLE DOT
0x82 0x2219 #BULLET OPERATOR
0x83 0x221a #SQUARE ROOT
0x84 0x2592 #MEDIUM SHADE
0x85 0x2500 #FORMS LIGHT HORIZONTAL
0x86 0x2502 #FORMS LIGHT VERTICAL
0x87 0x253c #FORMS LIGHT VERTICAL AND HORIZONTAL
0x88 0x2524 #FORMS LIGHT VERTICAL AND LEFT
0x89 0x252c #FORMS LIGHT DOWN AND HORIZONTAL
0x8a 0x251c #FORMS LIGHT VERTICAL AND RIGHT
0x8b 0x2534 #FORMS LIGHT UP AND HORIZONTAL
0x8c 0x2510 #FORMS LIGHT DOWN AND LEFT
0x8d 0x250c #FORMS LIGHT DOWN AND RIGHT
0x8e 0x2514 #FORMS LIGHT UP AND RIGHT
0x8f 0x2518 #FORMS LIGHT UP AND LEFT
0x90 0x03b2 #GREEK SMALL BETA
0x91 0x221e #INFINITY
0x92 0x03c6 #GREEK SMALL PHI
0x93 0x00b1 #PLUS-OR-MINUS SIGN
0x94 0x00bd #FRACTION 1/2
0x95 0x00bc #FRACTION 1/4
0x96 0x2248 #ALMOST EQUAL TO
0x97 0x00ab #LEFT POINTING GUILLEMET
0x98 0x00bb #RIGHT POINTING GUILLEMET
0x99 0xfef7 #ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
0x9a 0xfef8 #ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
0x9b #UNDEFINED
0x9c #UNDEFINED
0x9d 0xfefb #ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
0x9e 0xfefc #ARABIC LIGATURE LAM WITH ALEF FINAL FORM
0x9f #UNDEFINED
0xa0 0x00a0 #NON-BREAKING SPACE
0xa1 0x00ad #SOFT HYPHEN
0xa2 0xfe82 #ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
0xa3 0x00a3 #POUND SIGN
0xa4 0x00a4 #CURRENCY SIGN
0xa5 0xfe84 #ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
0xa6 #UNDEFINED
0xa7 #UNDEFINED
0xa8 0xfe8e #ARABIC LETTER ALEF FINAL FORM
0xa9 0xfe8f #ARABIC LETTER BEH ISOLATED FORM
0xaa 0xfe95 #ARABIC LETTER TEH ISOLATED FORM
0xab 0xfe99 #ARABIC LETTER THEH ISOLATED FORM
0xac 0x060c #ARABIC COMMA
0xad 0xfe9d #ARABIC LETTER JEEM ISOLATED FORM
0xae 0xfea1 #ARABIC LETTER HAH ISOLATED FORM
0xaf 0xfea5 #ARABIC LETTER KHAH ISOLATED FORM
0xb0 0x0660 #ARABIC-INDIC DIGIT ZERO
0xb1 0x0661 #ARABIC-INDIC DIGIT ONE
0xb2 0x0662 #ARABIC-INDIC DIGIT TWO
0xb3 0x0663 #ARABIC-INDIC DIGIT THREE
0xb4 0x0664 #ARABIC-INDIC DIGIT FOUR
0xb5 0x0665 #ARABIC-INDIC DIGIT FIVE
0xb6 0x0666 #ARABIC-INDIC DIGIT SIX
0xb7 0x0667 #ARABIC-INDIC DIGIT SEVEN
0xb8 0x0668 #ARABIC-INDIC DIGIT EIGHT
0xb9 0x0669 #ARABIC-INDIC DIGIT NINE
0xba 0xfed1 #ARABIC LETTER FEH ISOLATED FORM
0xbb 0x061b #ARABIC SEMICOLON
0xbc 0xfeb1 #ARABIC LETTER SEEN ISOLATED FORM
0xbd 0xfeb5 #ARABIC LETTER SHEEN ISOLATED FORM
0xbe 0xfeb9 #ARABIC LETTER SAD ISOLATED FORM
0xbf 0x061f #ARABIC QUESTION MARK
0xc0 0x00a2 #CENT SIGN
0xc1 0xfe80 #ARABIC LETTER HAMZA ISOLATED FORM
0xc2 0xfe81 #ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
0xc3 0xfe83 #ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
0xc4 0xfe85 #ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
0xc5 0xfeca #ARABIC LETTER AIN FINAL FORM
0xc6 0xfe8b #ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
0xc7 0xfe8d #ARABIC LETTER ALEF ISOLATED FORM
0xc8 0xfe91 #ARABIC LETTER BEH INITIAL FORM
0xc9 0xfe93 #ARABIC LETTER TEH MARBUTA ISOLATED FORM
0xca 0xfe97 #ARABIC LETTER TEH INITIAL FORM
0xcb 0xfe9b #ARABIC LETTER THEH INITIAL FORM
0xcc 0xfe9f #ARABIC LETTER JEEM INITIAL FORM
0xcd 0xfea3 #ARABIC LETTER HAH INITIAL FORM
0xce 0xfea7 #ARABIC LETTER KHAH INITIAL FORM
0xcf 0xfea9 #ARABIC LETTER DAL ISOLATED FORM
0xd0 0xfeab #ARABIC LETTER THAL ISOLATED FORM
0xd1 0xfead #ARABIC LETTER REH ISOLATED FORM
0xd2 0xfeaf #ARABIC LETTER ZAIN ISOLATED FORM
0xd3 0xfeb3 #ARABIC LETTER SEEN INITIAL FORM
0xd4 0xfeb7 #ARABIC LETTER SHEEN INITIAL FORM
0xd5 0xfebb #ARABIC LETTER SAD INITIAL FORM
0xd6 0xfebf #ARABIC LETTER DAD INITIAL FORM
0xd7 0xfec1 #ARABIC LETTER TAH ISOLATED FORM
0xd8 0xfec5 #ARABIC LETTER ZAH ISOLATED FORM
0xd9 0xfecb #ARABIC LETTER AIN INITIAL FORM
0xda 0xfecf #ARABIC LETTER GHAIN INITIAL FORM
0xdb 0x00a6 #BROKEN VERTICAL BAR
0xdc 0x00ac #NOT SIGN
0xdd 0x00f7 #DIVISION SIGN
0xde 0x00d7 #MULTIPLICATION SIGN
0xdf 0xfec9 #ARABIC LETTER AIN ISOLATED FORM
0xe0 0x0640 #ARABIC TATWEEL
0xe1 0xfed3 #ARABIC LETTER FEH INITIAL FORM
0xe2 0xfed7 #ARABIC LETTER QAF INITIAL FORM
0xe3 0xfedb #ARABIC LETTER KAF INITIAL FORM
0xe4 0xfedf #ARABIC LETTER LAM INITIAL FORM
0xe5 0xfee3 #ARABIC LETTER MEEM INITIAL FORM
0xe6 0xfee7 #ARABIC LETTER NOON INITIAL FORM
0xe7 0xfeeb #ARABIC LETTER HEH INITIAL FORM
0xe8 0xfeed #ARABIC LETTER WAW ISOLATED FORM
0xe9 0xfeef #ARABIC LETTER ALEF MAKSURA ISOLATED FORM
0xea 0xfef3 #ARABIC LETTER YEH INITIAL FORM
0xeb 0xfebd #ARABIC LETTER DAD ISOLATED FORM
0xec 0xfecc #ARABIC LETTER AIN MEDIAL FORM
0xed 0xfece #ARABIC LETTER GHAIN FINAL FORM
0xee 0xfecd #ARABIC LETTER GHAIN ISOLATED FORM
0xef 0xfee1 #ARABIC LETTER MEEM ISOLATED FORM
0xf0 0xfe7d #ARABIC SHADDA MEDIAL FORM
0xf1 0x0651 #ARABIC SHADDAH
0xf2 0xfee5 #ARABIC LETTER NOON ISOLATED FORM
0xf3 0xfee9 #ARABIC LETTER HEH ISOLATED FORM
0xf4 0xfeec #ARABIC LETTER HEH MEDIAL FORM
0xf5 0xfef0 #ARABIC LETTER ALEF MAKSURA FINAL FORM
0xf6 0xfef2 #ARABIC LETTER YEH FINAL FORM
0xf7 0xfed0 #ARABIC LETTER GHAIN MEDIAL FORM
0xf8 0xfed5 #ARABIC LETTER QAF ISOLATED FORM
0xf9 0xfef5 #ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
0xfa 0xfef6 #ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
0xfb 0xfedd #ARABIC LETTER LAM ISOLATED FORM
0xfc 0xfed9 #ARABIC LETTER KAF ISOLATED FORM
0xfd 0xfef1 #ARABIC LETTER YEH ISOLATED FORM
0xfe 0x25a0 #BLACK SQUARE
0xff #UNDEFINED


275
codepage/cp865.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp865_DOSNordic to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp865_DOSNordic code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp865_DOSNordic order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS
0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE
0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS
0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE
0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE
0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA
0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS
0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE
0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS
0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE
0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS
0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE
0x91 0x00e6 #LATIN SMALL LIGATURE AE
0x92 0x00c6 #LATIN CAPITAL LIGATURE AE
0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS
0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE
0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE
0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS
0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS
0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS
0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE
0x9c 0x00a3 #POUND SIGN
0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x20a7 #PESETA SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE
0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE
0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x2310 #REVERSED NOT SIGN
0xaa 0x00ac #NOT SIGN
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x00bc #VULGAR FRACTION ONE QUARTER
0xad 0x00a1 #INVERTED EXCLAMATION MARK
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00a4 #CURRENCY SIGN
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b1 #GREEK SMALL LETTER ALPHA
0xe1 0x00df #LATIN SMALL LETTER SHARP S
0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA
0xe3 0x03c0 #GREEK SMALL LETTER PI
0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xe5 0x03c3 #GREEK SMALL LETTER SIGMA
0xe6 0x00b5 #MICRO SIGN
0xe7 0x03c4 #GREEK SMALL LETTER TAU
0xe8 0x03a6 #GREEK CAPITAL LETTER PHI
0xe9 0x0398 #GREEK CAPITAL LETTER THETA
0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xeb 0x03b4 #GREEK SMALL LETTER DELTA
0xec 0x221e #INFINITY
0xed 0x03c6 #GREEK SMALL LETTER PHI
0xee 0x03b5 #GREEK SMALL LETTER EPSILON
0xef 0x2229 #INTERSECTION
0xf0 0x2261 #IDENTICAL TO
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x2265 #GREATER-THAN OR EQUAL TO
0xf3 0x2264 #LESS-THAN OR EQUAL TO
0xf4 0x2320 #TOP HALF INTEGRAL
0xf5 0x2321 #BOTTOM HALF INTEGRAL
0xf6 0x00f7 #DIVISION SIGN
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


275
codepage/cp866.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp866_DOSCyrillicRussian to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp866_DOSCyrillicRussian code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp866_DOSCyrillicRussian order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 0x0410 #CYRILLIC CAPITAL LETTER A
0x81 0x0411 #CYRILLIC CAPITAL LETTER BE
0x82 0x0412 #CYRILLIC CAPITAL LETTER VE
0x83 0x0413 #CYRILLIC CAPITAL LETTER GHE
0x84 0x0414 #CYRILLIC CAPITAL LETTER DE
0x85 0x0415 #CYRILLIC CAPITAL LETTER IE
0x86 0x0416 #CYRILLIC CAPITAL LETTER ZHE
0x87 0x0417 #CYRILLIC CAPITAL LETTER ZE
0x88 0x0418 #CYRILLIC CAPITAL LETTER I
0x89 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
0x8a 0x041a #CYRILLIC CAPITAL LETTER KA
0x8b 0x041b #CYRILLIC CAPITAL LETTER EL
0x8c 0x041c #CYRILLIC CAPITAL LETTER EM
0x8d 0x041d #CYRILLIC CAPITAL LETTER EN
0x8e 0x041e #CYRILLIC CAPITAL LETTER O
0x8f 0x041f #CYRILLIC CAPITAL LETTER PE
0x90 0x0420 #CYRILLIC CAPITAL LETTER ER
0x91 0x0421 #CYRILLIC CAPITAL LETTER ES
0x92 0x0422 #CYRILLIC CAPITAL LETTER TE
0x93 0x0423 #CYRILLIC CAPITAL LETTER U
0x94 0x0424 #CYRILLIC CAPITAL LETTER EF
0x95 0x0425 #CYRILLIC CAPITAL LETTER HA
0x96 0x0426 #CYRILLIC CAPITAL LETTER TSE
0x97 0x0427 #CYRILLIC CAPITAL LETTER CHE
0x98 0x0428 #CYRILLIC CAPITAL LETTER SHA
0x99 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
0x9a 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN
0x9b 0x042b #CYRILLIC CAPITAL LETTER YERU
0x9c 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN
0x9d 0x042d #CYRILLIC CAPITAL LETTER E
0x9e 0x042e #CYRILLIC CAPITAL LETTER YU
0x9f 0x042f #CYRILLIC CAPITAL LETTER YA
0xa0 0x0430 #CYRILLIC SMALL LETTER A
0xa1 0x0431 #CYRILLIC SMALL LETTER BE
0xa2 0x0432 #CYRILLIC SMALL LETTER VE
0xa3 0x0433 #CYRILLIC SMALL LETTER GHE
0xa4 0x0434 #CYRILLIC SMALL LETTER DE
0xa5 0x0435 #CYRILLIC SMALL LETTER IE
0xa6 0x0436 #CYRILLIC SMALL LETTER ZHE
0xa7 0x0437 #CYRILLIC SMALL LETTER ZE
0xa8 0x0438 #CYRILLIC SMALL LETTER I
0xa9 0x0439 #CYRILLIC SMALL LETTER SHORT I
0xaa 0x043a #CYRILLIC SMALL LETTER KA
0xab 0x043b #CYRILLIC SMALL LETTER EL
0xac 0x043c #CYRILLIC SMALL LETTER EM
0xad 0x043d #CYRILLIC SMALL LETTER EN
0xae 0x043e #CYRILLIC SMALL LETTER O
0xaf 0x043f #CYRILLIC SMALL LETTER PE
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x258c #LEFT HALF BLOCK
0xde 0x2590 #RIGHT HALF BLOCK
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x0440 #CYRILLIC SMALL LETTER ER
0xe1 0x0441 #CYRILLIC SMALL LETTER ES
0xe2 0x0442 #CYRILLIC SMALL LETTER TE
0xe3 0x0443 #CYRILLIC SMALL LETTER U
0xe4 0x0444 #CYRILLIC SMALL LETTER EF
0xe5 0x0445 #CYRILLIC SMALL LETTER HA
0xe6 0x0446 #CYRILLIC SMALL LETTER TSE
0xe7 0x0447 #CYRILLIC SMALL LETTER CHE
0xe8 0x0448 #CYRILLIC SMALL LETTER SHA
0xe9 0x0449 #CYRILLIC SMALL LETTER SHCHA
0xea 0x044a #CYRILLIC SMALL LETTER HARD SIGN
0xeb 0x044b #CYRILLIC SMALL LETTER YERU
0xec 0x044c #CYRILLIC SMALL LETTER SOFT SIGN
0xed 0x044d #CYRILLIC SMALL LETTER E
0xee 0x044e #CYRILLIC SMALL LETTER YU
0xef 0x044f #CYRILLIC SMALL LETTER YA
0xf0 0x0401 #CYRILLIC CAPITAL LETTER IO
0xf1 0x0451 #CYRILLIC SMALL LETTER IO
0xf2 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
0xf3 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
0xf4 0x0407 #CYRILLIC CAPITAL LETTER YI
0xf5 0x0457 #CYRILLIC SMALL LETTER YI
0xf6 0x040e #CYRILLIC CAPITAL LETTER SHORT U
0xf7 0x045e #CYRILLIC SMALL LETTER SHORT U
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x221a #SQUARE ROOT
0xfc 0x2116 #NUMERO SIGN
0xfd 0x00a4 #CURRENCY SIGN
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


275
codepage/cp869.txt Normal file
View File

@ -0,0 +1,275 @@
#
# Name: cp869_DOSGreek2 to Unicode table
# Unicode version: 2.0
# Table version: 2.00
# Table format: Format A
# Date: 04/24/96
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp869_DOSGreek2 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp869_DOSGreek2 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0a 0x000a #LINE FEED
0x0b 0x000b #VERTICAL TABULATION
0x0c 0x000c #FORM FEED
0x0d 0x000d #CARRIAGE RETURN
0x0e 0x000e #SHIFT OUT
0x0f 0x000f #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1a 0x001a #SUBSTITUTE
0x1b 0x001b #ESCAPE
0x1c 0x001c #FILE SEPARATOR
0x1d 0x001d #GROUP SEPARATOR
0x1e 0x001e #RECORD SEPARATOR
0x1f 0x001f #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2a 0x002a #ASTERISK
0x2b 0x002b #PLUS SIGN
0x2c 0x002c #COMMA
0x2d 0x002d #HYPHEN-MINUS
0x2e 0x002e #FULL STOP
0x2f 0x002f #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3a 0x003a #COLON
0x3b 0x003b #SEMICOLON
0x3c 0x003c #LESS-THAN SIGN
0x3d 0x003d #EQUALS SIGN
0x3e 0x003e #GREATER-THAN SIGN
0x3f 0x003f #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4a 0x004a #LATIN CAPITAL LETTER J
0x4b 0x004b #LATIN CAPITAL LETTER K
0x4c 0x004c #LATIN CAPITAL LETTER L
0x4d 0x004d #LATIN CAPITAL LETTER M
0x4e 0x004e #LATIN CAPITAL LETTER N
0x4f 0x004f #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5a 0x005a #LATIN CAPITAL LETTER Z
0x5b 0x005b #LEFT SQUARE BRACKET
0x5c 0x005c #REVERSE SOLIDUS
0x5d 0x005d #RIGHT SQUARE BRACKET
0x5e 0x005e #CIRCUMFLEX ACCENT
0x5f 0x005f #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6a 0x006a #LATIN SMALL LETTER J
0x6b 0x006b #LATIN SMALL LETTER K
0x6c 0x006c #LATIN SMALL LETTER L
0x6d 0x006d #LATIN SMALL LETTER M
0x6e 0x006e #LATIN SMALL LETTER N
0x6f 0x006f #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7a 0x007a #LATIN SMALL LETTER Z
0x7b 0x007b #LEFT CURLY BRACKET
0x7c 0x007c #VERTICAL LINE
0x7d 0x007d #RIGHT CURLY BRACKET
0x7e 0x007e #TILDE
0x7f 0x007f #DELETE
0x80 #UNDEFINED
0x81 #UNDEFINED
0x82 #UNDEFINED
0x83 #UNDEFINED
0x84 #UNDEFINED
0x85 #UNDEFINED
0x86 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
0x87 #UNDEFINED
0x88 0x00b7 #MIDDLE DOT
0x89 0x00ac #NOT SIGN
0x8a 0x00a6 #BROKEN BAR
0x8b 0x2018 #LEFT SINGLE QUOTATION MARK
0x8c 0x2019 #RIGHT SINGLE QUOTATION MARK
0x8d 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
0x8e 0x2015 #HORIZONTAL BAR
0x8f 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
0x90 0x038a #GREEK CAPITAL LETTER IOTA WITH TONOS
0x91 0x03aa #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
0x92 0x038c #GREEK CAPITAL LETTER OMICRON WITH TONOS
0x93 #UNDEFINED
0x94 #UNDEFINED
0x95 0x038e #GREEK CAPITAL LETTER UPSILON WITH TONOS
0x96 0x03ab #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
0x97 0x00a9 #COPYRIGHT SIGN
0x98 0x038f #GREEK CAPITAL LETTER OMEGA WITH TONOS
0x99 0x00b2 #SUPERSCRIPT TWO
0x9a 0x00b3 #SUPERSCRIPT THREE
0x9b 0x03ac #GREEK SMALL LETTER ALPHA WITH TONOS
0x9c 0x00a3 #POUND SIGN
0x9d 0x03ad #GREEK SMALL LETTER EPSILON WITH TONOS
0x9e 0x03ae #GREEK SMALL LETTER ETA WITH TONOS
0x9f 0x03af #GREEK SMALL LETTER IOTA WITH TONOS
0xa0 0x03ca #GREEK SMALL LETTER IOTA WITH DIALYTIKA
0xa1 0x0390 #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
0xa2 0x03cc #GREEK SMALL LETTER OMICRON WITH TONOS
0xa3 0x03cd #GREEK SMALL LETTER UPSILON WITH TONOS
0xa4 0x0391 #GREEK CAPITAL LETTER ALPHA
0xa5 0x0392 #GREEK CAPITAL LETTER BETA
0xa6 0x0393 #GREEK CAPITAL LETTER GAMMA
0xa7 0x0394 #GREEK CAPITAL LETTER DELTA
0xa8 0x0395 #GREEK CAPITAL LETTER EPSILON
0xa9 0x0396 #GREEK CAPITAL LETTER ZETA
0xaa 0x0397 #GREEK CAPITAL LETTER ETA
0xab 0x00bd #VULGAR FRACTION ONE HALF
0xac 0x0398 #GREEK CAPITAL LETTER THETA
0xad 0x0399 #GREEK CAPITAL LETTER IOTA
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
0xb1 0x2592 #MEDIUM SHADE
0xb2 0x2593 #DARK SHADE
0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL
0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xb5 0x039a #GREEK CAPITAL LETTER KAPPA
0xb6 0x039b #GREEK CAPITAL LETTER LAMDA
0xb7 0x039c #GREEK CAPITAL LETTER MU
0xb8 0x039d #GREEK CAPITAL LETTER NU
0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL
0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT
0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT
0xbd 0x039e #GREEK CAPITAL LETTER XI
0xbe 0x039f #GREEK CAPITAL LETTER OMICRON
0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT
0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT
0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL
0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xc6 0x03a0 #GREEK CAPITAL LETTER PI
0xc7 0x03a1 #GREEK CAPITAL LETTER RHO
0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT
0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL
0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xcf 0x03a3 #GREEK CAPITAL LETTER SIGMA
0xd0 0x03a4 #GREEK CAPITAL LETTER TAU
0xd1 0x03a5 #GREEK CAPITAL LETTER UPSILON
0xd2 0x03a6 #GREEK CAPITAL LETTER PHI
0xd3 0x03a7 #GREEK CAPITAL LETTER CHI
0xd4 0x03a8 #GREEK CAPITAL LETTER PSI
0xd5 0x03a9 #GREEK CAPITAL LETTER OMEGA
0xd6 0x03b1 #GREEK SMALL LETTER ALPHA
0xd7 0x03b2 #GREEK SMALL LETTER BETA
0xd8 0x03b3 #GREEK SMALL LETTER GAMMA
0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT
0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT
0xdb 0x2588 #FULL BLOCK
0xdc 0x2584 #LOWER HALF BLOCK
0xdd 0x03b4 #GREEK SMALL LETTER DELTA
0xde 0x03b5 #GREEK SMALL LETTER EPSILON
0xdf 0x2580 #UPPER HALF BLOCK
0xe0 0x03b6 #GREEK SMALL LETTER ZETA
0xe1 0x03b7 #GREEK SMALL LETTER ETA
0xe2 0x03b8 #GREEK SMALL LETTER THETA
0xe3 0x03b9 #GREEK SMALL LETTER IOTA
0xe4 0x03ba #GREEK SMALL LETTER KAPPA
0xe5 0x03bb #GREEK SMALL LETTER LAMDA
0xe6 0x03bc #GREEK SMALL LETTER MU
0xe7 0x03bd #GREEK SMALL LETTER NU
0xe8 0x03be #GREEK SMALL LETTER XI
0xe9 0x03bf #GREEK SMALL LETTER OMICRON
0xea 0x03c0 #GREEK SMALL LETTER PI
0xeb 0x03c1 #GREEK SMALL LETTER RHO
0xec 0x03c3 #GREEK SMALL LETTER SIGMA
0xed 0x03c2 #GREEK SMALL LETTER FINAL SIGMA
0xee 0x03c4 #GREEK SMALL LETTER TAU
0xef 0x0384 #GREEK TONOS
0xf0 0x00ad #SOFT HYPHEN
0xf1 0x00b1 #PLUS-MINUS SIGN
0xf2 0x03c5 #GREEK SMALL LETTER UPSILON
0xf3 0x03c6 #GREEK SMALL LETTER PHI
0xf4 0x03c7 #GREEK SMALL LETTER CHI
0xf5 0x00a7 #SECTION SIGN
0xf6 0x03c8 #GREEK SMALL LETTER PSI
0xf7 0x0385 #GREEK DIALYTIKA TONOS
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xfa 0x03c9 #GREEK SMALL LETTER OMEGA
0xfb 0x03cb #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0xfc 0x03b0 #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
0xfd 0x03ce #GREEK SMALL LETTER OMEGA WITH TONOS
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE


274
codepage/cp874.txt Normal file
View File

@ -0,0 +1,274 @@
#
# Name: cp874 to Unicode table
# Unicode version: 2.0
# Table version: 2.01
# Table format: Format A
# Date: 02/28/98
#
# Contact: Shawn.Steele@microsoft.com
#
# General notes: none
#
# Format: Three tab-separated columns
# Column #1 is the cp874 code (in hex)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 is the Unicode name (follows a comment sign, '#')
#
# The entries are in cp874 order
#
0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 #UNDEFINED
0x83 #UNDEFINED
0x84 #UNDEFINED
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 #UNDEFINED
0x87 #UNDEFINED
0x88 #UNDEFINED
0x89 #UNDEFINED
0x8A #UNDEFINED
0x8B #UNDEFINED
0x8C #UNDEFINED
0x8D #UNDEFINED
0x8E #UNDEFINED
0x8F #UNDEFINED
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 #UNDEFINED
0x99 #UNDEFINED
0x9A #UNDEFINED
0x9B #UNDEFINED
0x9C #UNDEFINED
0x9D #UNDEFINED
0x9E #UNDEFINED
0x9F #UNDEFINED
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x0E01 #THAI CHARACTER KO KAI
0xA2 0x0E02 #THAI CHARACTER KHO KHAI
0xA3 0x0E03 #THAI CHARACTER KHO KHUAT
0xA4 0x0E04 #THAI CHARACTER KHO KHWAI
0xA5 0x0E05 #THAI CHARACTER KHO KHON
0xA6 0x0E06 #THAI CHARACTER KHO RAKHANG
0xA7 0x0E07 #THAI CHARACTER NGO NGU
0xA8 0x0E08 #THAI CHARACTER CHO CHAN
0xA9 0x0E09 #THAI CHARACTER CHO CHING
0xAA 0x0E0A #THAI CHARACTER CHO CHANG
0xAB 0x0E0B #THAI CHARACTER SO SO
0xAC 0x0E0C #THAI CHARACTER CHO CHOE
0xAD 0x0E0D #THAI CHARACTER YO YING
0xAE 0x0E0E #THAI CHARACTER DO CHADA
0xAF 0x0E0F #THAI CHARACTER TO PATAK
0xB0 0x0E10 #THAI CHARACTER THO THAN
0xB1 0x0E11 #THAI CHARACTER THO NANGMONTHO
0xB2 0x0E12 #THAI CHARACTER THO PHUTHAO
0xB3 0x0E13 #THAI CHARACTER NO NEN
0xB4 0x0E14 #THAI CHARACTER DO DEK
0xB5 0x0E15 #THAI CHARACTER TO TAO
0xB6 0x0E16 #THAI CHARACTER THO THUNG
0xB7 0x0E17 #THAI CHARACTER THO THAHAN
0xB8 0x0E18 #THAI CHARACTER THO THONG
0xB9 0x0E19 #THAI CHARACTER NO NU
0xBA 0x0E1A #THAI CHARACTER BO BAIMAI
0xBB 0x0E1B #THAI CHARACTER PO PLA
0xBC 0x0E1C #THAI CHARACTER PHO PHUNG
0xBD 0x0E1D #THAI CHARACTER FO FA
0xBE 0x0E1E #THAI CHARACTER PHO PHAN
0xBF 0x0E1F #THAI CHARACTER FO FAN
0xC0 0x0E20 #THAI CHARACTER PHO SAMPHAO
0xC1 0x0E21 #THAI CHARACTER MO MA
0xC2 0x0E22 #THAI CHARACTER YO YAK
0xC3 0x0E23 #THAI CHARACTER RO RUA
0xC4 0x0E24 #THAI CHARACTER RU
0xC5 0x0E25 #THAI CHARACTER LO LING
0xC6 0x0E26 #THAI CHARACTER LU
0xC7 0x0E27 #THAI CHARACTER WO WAEN
0xC8 0x0E28 #THAI CHARACTER SO SALA
0xC9 0x0E29 #THAI CHARACTER SO RUSI
0xCA 0x0E2A #THAI CHARACTER SO SUA
0xCB 0x0E2B #THAI CHARACTER HO HIP
0xCC 0x0E2C #THAI CHARACTER LO CHULA
0xCD 0x0E2D #THAI CHARACTER O ANG
0xCE 0x0E2E #THAI CHARACTER HO NOKHUK
0xCF 0x0E2F #THAI CHARACTER PAIYANNOI
0xD0 0x0E30 #THAI CHARACTER SARA A
0xD1 0x0E31 #THAI CHARACTER MAI HAN-AKAT
0xD2 0x0E32 #THAI CHARACTER SARA AA
0xD3 0x0E33 #THAI CHARACTER SARA AM
0xD4 0x0E34 #THAI CHARACTER SARA I
0xD5 0x0E35 #THAI CHARACTER SARA II
0xD6 0x0E36 #THAI CHARACTER SARA UE
0xD7 0x0E37 #THAI CHARACTER SARA UEE
0xD8 0x0E38 #THAI CHARACTER SARA U
0xD9 0x0E39 #THAI CHARACTER SARA UU
0xDA 0x0E3A #THAI CHARACTER PHINTHU
0xDB #UNDEFINED
0xDC #UNDEFINED
0xDD #UNDEFINED
0xDE #UNDEFINED
0xDF 0x0E3F #THAI CURRENCY SYMBOL BAHT
0xE0 0x0E40 #THAI CHARACTER SARA E
0xE1 0x0E41 #THAI CHARACTER SARA AE
0xE2 0x0E42 #THAI CHARACTER SARA O
0xE3 0x0E43 #THAI CHARACTER SARA AI MAIMUAN
0xE4 0x0E44 #THAI CHARACTER SARA AI MAIMALAI
0xE5 0x0E45 #THAI CHARACTER LAKKHANGYAO
0xE6 0x0E46 #THAI CHARACTER MAIYAMOK
0xE7 0x0E47 #THAI CHARACTER MAITAIKHU
0xE8 0x0E48 #THAI CHARACTER MAI EK
0xE9 0x0E49 #THAI CHARACTER MAI THO
0xEA 0x0E4A #THAI CHARACTER MAI TRI
0xEB 0x0E4B #THAI CHARACTER MAI CHATTAWA
0xEC 0x0E4C #THAI CHARACTER THANTHAKHAT
0xED 0x0E4D #THAI CHARACTER NIKHAHIT
0xEE 0x0E4E #THAI CHARACTER YAMAKKAN
0xEF 0x0E4F #THAI CHARACTER FONGMAN
0xF0 0x0E50 #THAI DIGIT ZERO
0xF1 0x0E51 #THAI DIGIT ONE
0xF2 0x0E52 #THAI DIGIT TWO
0xF3 0x0E53 #THAI DIGIT THREE
0xF4 0x0E54 #THAI DIGIT FOUR
0xF5 0x0E55 #THAI DIGIT FIVE
0xF6 0x0E56 #THAI DIGIT SIX
0xF7 0x0E57 #THAI DIGIT SEVEN
0xF8 0x0E58 #THAI DIGIT EIGHT
0xF9 0x0E59 #THAI DIGIT NINE
0xFA 0x0E5A #THAI CHARACTER ANGKHANKHU
0xFB 0x0E5B #THAI CHARACTER KHOMUT
0xFC #UNDEFINED
0xFD #UNDEFINED
0xFE #UNDEFINED
0xFF #UNDEFINED

176
codepage/cptable.pl Executable file
View File

@ -0,0 +1,176 @@
#!/usr/bin/perl
#
# Produce a codepage matching table. For each 8-bit character, list
# a primary and an alternate match (the latter used for case-insensitive
# matching.)
#
# Usage:
# cptable.pl UnicodeData console-cp.txt filesystem-cp.txt output.cp
#
# Note: for the format of the UnicodeData file, see:
# http://www.unicode.org/Public/UNIDATA/UCD.html
#
($ucd, $cpco, $cpfs, $cpout) = @ARGV;
if (!defined($cpout)) {
die "Usage: $0 UnicodeData console-cp.txt fs-cp.txt output.cp\n";
}
%ucase = ();
%lcase = ();
%tcase = ();
%decomp = ();
open(UCD, '<', $ucd)
or die "$0: could not open unicode data: $ucd: $!\n";
while (defined($line = <UCD>)) {
chomp $line;
@f = split(/;/, $line);
$n = hex $f[0];
$ucase{$n} = ($f[12] ne '') ? hex $f[12] : $n;
$lcase{$n} = ($f[13] ne '') ? hex $f[13] : $n;
$tcase{$n} = ($f[14] ne '') ? hex $f[14] : $n;
if ($f[5] =~ /^[0-9A-F\s]+$/) {
# This character has a canonical decomposition.
# The regular expression rejects angle brackets, so other
# decompositions aren't permitted.
$decomp{$n} = [];
foreach my $dch (split(' ', $f[5])) {
push(@{$decomp{$n}}, hex $dch);
}
}
}
close(UCD);
#
# Filesystem and console codepages. The filesystem codepage is used
# for FAT shortnames, whereas the console codepage is whatever is used
# on the screen and keyboard.
#
@xtab = (undef) x 256;
%tabx = ();
open(CPFS, '<', $cpfs)
or die "$0: could not open fs codepage: $cpfs: $!\n";
while (defined($line = <CPFS>)) {
$line =~ s/\s*(\#.*|)$//;
@f = split(/\s+/, $line);
next if (scalar @f != 2);
next if (hex $f[0] > 255);
$xtab[hex $f[0]] = hex $f[1]; # Codepage -> Unicode
$tabx{hex $f[1]} = hex $f[0]; # Unicode -> Codepage
}
close(CPFS);
@ytab = (undef) x 256;
%taby = ();
open(CPCO, '<', $cpco)
or die "$0: could not open console codepage: $cpco: $!\n";
while (defined($line = <CPCO>)) {
$line =~ s/\s*(\#.*|)$//;
@f = split(/\s+/, $line);
next if (scalar @f != 2);
next if (hex $f[0] > 255);
$ytab[hex $f[0]] = hex $f[1]; # Codepage -> Unicode
$taby{hex $f[1]} = hex $f[0]; # Unicode -> Codepage
}
close(CPCO);
open(CPOUT, '>', $cpout)
or die "$0: could not open output file: $cpout: $!\n";
#
# Magic number, in anticipation of being able to load these
# files dynamically...
#
print CPOUT pack("VV", 0x58a8b3d4, 0x51d21eb1);
# Header fields available for future use...
print CPOUT pack("VVVVVV", 0, 0, 0, 0, 0, 0);
#
# Self (shortname) uppercase table.
# This depends both on the console codepage and the filesystem codepage;
# the logical transcoding operation is:
#
# $tabx{$ucase{$ytab[$i]}}
#
# ... where @ytab is console codepage -> Unicode and
# %tabx is Unicode -> filesystem codepage.
#
@uctab = (undef) x 256;
for ($i = 0; $i < 256; $i++) {
$uuc = $ucase{$ytab[$i]}; # Unicode upper case
if (defined($tabx{$uuc})) {
# Straight-forward conversion
$u = $tabx{$uuc};
} elsif (defined($tabx{${$decomp{$uuc}}[0]})) {
# Upper case equivalent stripped of accents
$u = $tabx{${$decomp{$uuc}}[0]};
} else {
# No equivalent at all found. Assume it is a lower-case-only
# character, like greek alpha in CP437.
$u = $i;
}
$uctab[$i] = $u;
print CPOUT pack("C", $u);
}
#
# Self (shortname) lowercase table.
# This depends both on the console codepage and the filesystem codepage;
# the logical transcoding operation is:
#
# $taby{$lcase{$xtab[$i]}}
#
# ... where @ytab is console codepage -> Unicode and
# %tabx is Unicode -> filesystem codepage.
#
@lctab = (undef) x 256;
for ($i = 0; $i < 256; $i++) {
$llc = $lcase{$xtab[$i]}; # Unicode lower case
if (defined($l = $taby{$llc}) && $uctab[$l] == $i) {
# Straight-forward conversion
} elsif (defined($l = $tabx{${$decomp{$llc}}[0]}) && $uctab[$l] == $i) {
# Lower case equivalent stripped of accents
} else {
# No equivalent at all found. Find *anything* that matches the
# bijection criterion...
for ($l = 0; $l < 256; $l++) {
last if ($uctab[$l] == $i);
}
$l = $i if ($l == 256); # If nothing, we're screwed anyway...
}
$lctab[$i] = $l;
print CPOUT pack("C", $l);
}
#
# Unicode (longname) matching table.
# This only depends on the console codepage.
#
$pp0 = ''; $pp1 = '';
for ($i = 0; $i < 256; $i++) {
if (!defined($ytab[$i])) {
$p0 = $p1 = 0xffff;
} else {
$p0 = $ytab[$i];
if ($ucase{$p0} != $p0) {
$p1 = $ucase{$p0};
} elsif ($lcase{$p0} != $p0) {
$p1 = $lcase{$p0};
} elsif ($tcase{$p0} != $p0) {
$p1 = $tcase{$p0};
} else {
$p1 = $p0;
}
}
# Only the BMP is supported...
$p0 = 0xffff if ($p0 > 0xffff);
$p1 = 0xffff if ($p1 > 0xffff);
$pp0 .= pack("v", $p0);
$pp1 .= pack("v", $p1);
}
print CPOUT $pp0, $pp1;
close (CPOUT);

57
codepage/gensubset.pl Executable file
View File

@ -0,0 +1,57 @@
#!/usr/bin/perl
#
# Generate a subset of the UnicodeData.txt file, available from
# ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt
#
# Usage:
# gensubset.pl [subset files] < UnicodeData.txt > MiniUCD.txt
#
%need_these = ();
# Mark as needed all the characters mentioned in the relevant files
foreach $file (@ARGV) {
open(F, '<', $file) or die;
while (defined($line = <F>)) {
$line =~ s/\s*(\#.*|)$//; # Remove comments and final blanks
@f = split(/\s+/, $line);
next if (scalar @f != 2);
$need_these{hex $f[1]}++;
}
close(F);
}
# Also mark as needed any case variants of those
# (Note: this doesn't necessarily provide the full transitive closure,
# but we shouldn't need it.)
while (defined($line = <STDIN>)) {
@f = split(/;/, $line);
if ($f[0] =~ /^([0-9a-f]+)$/i) {
$r = hex $f[0];
if ($need_these{$r}) {
$need_these{hex $f[12]}++ if ($f[12] ne '');
$need_these{hex $f[13]}++ if ($f[13] ne '');
$need_these{hex $f[14]}++ if ($f[14] ne '');
}
}
}
# Finally, write out the subset
seek(STDIN, 0, 0);
while (defined($line = <STDIN>)) {
($v, $l) = split(/;/, $line, 2);
if ($v =~ /^([0-9a-f]+)\-([0-9a-f]+)$/i) {
# This isn't actually the format... fix that if it ever matters
$r1 = hex $1;
$r2 = hex $2;
} elsif ($v =~ /^([0-9a-f]+)$/i) {
$r1 = $r2 = hex $1;
} else {
next;
}
for ($r = $r1; $r <= $r2; $r++) {
printf "%04X;%s", $r, $l if ($need_these{$r});
}
}

303
codepage/iso8859-1.txt Normal file
View File

@ -0,0 +1,303 @@
#
# Name: ISO/IEC 8859-1:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-1:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-1 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-1 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x00A5 # YEN SIGN
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00B8 # CEDILLA
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
0xBF 0x00BF # INVERTED QUESTION MARK
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

303
codepage/iso8859-10.txt Normal file
View File

@ -0,0 +1,303 @@
#
# Name: ISO/IEC 8859-10:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.1
# Table format: Format A
# Date: 1999 October 11
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-10:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-10 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-10 order.
#
# Version history
# 1.0 version new.
# 1.1 corrected mistake in mapping of 0xA4
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
0xA2 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
0xA3 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
0xA4 0x012A # LATIN CAPITAL LETTER I WITH MACRON
0xA5 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
0xA6 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
0xA7 0x00A7 # SECTION SIGN
0xA8 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
0xA9 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
0xAA 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xAB 0x0166 # LATIN CAPITAL LETTER T WITH STROKE
0xAC 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x016A # LATIN CAPITAL LETTER U WITH MACRON
0xAF 0x014A # LATIN CAPITAL LETTER ENG
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
0xB2 0x0113 # LATIN SMALL LETTER E WITH MACRON
0xB3 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
0xB4 0x012B # LATIN SMALL LETTER I WITH MACRON
0xB5 0x0129 # LATIN SMALL LETTER I WITH TILDE
0xB6 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x013C # LATIN SMALL LETTER L WITH CEDILLA
0xB9 0x0111 # LATIN SMALL LETTER D WITH STROKE
0xBA 0x0161 # LATIN SMALL LETTER S WITH CARON
0xBB 0x0167 # LATIN SMALL LETTER T WITH STROKE
0xBC 0x017E # LATIN SMALL LETTER Z WITH CARON
0xBD 0x2015 # HORIZONTAL BAR
0xBE 0x016B # LATIN SMALL LETTER U WITH MACRON
0xBF 0x014B # LATIN SMALL LETTER ENG
0xC0 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
0xD1 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
0xD2 0x014C # LATIN CAPITAL LETTER O WITH MACRON
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
0xE0 0x0101 # LATIN SMALL LETTER A WITH MACRON
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x012F # LATIN SMALL LETTER I WITH OGONEK
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
0xF1 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
0xF2 0x014D # LATIN SMALL LETTER O WITH MACRON
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x0169 # LATIN SMALL LETTER U WITH TILDE
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x0173 # LATIN SMALL LETTER U WITH OGONEK
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
0xFF 0x0138 # LATIN SMALL LETTER KRA

297
codepage/iso8859-11.txt Normal file
View File

@ -0,0 +1,297 @@
#
# Name: ISO/IEC 8859-11:2001 to Unicode
# Unicode version: 3.2
# Table version: 1.0
# Table format: Format A
# Date: 2002 October 7
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 2002 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-11:2001 characters map into Unicode.
#
# ISO/IEC 8859-11:2001 is equivalent to TIS 620-2533 (1990) with
# the addition of 0xA0 NO-BREAK SPACE.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-11 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-11 order.
#
# Version history:
# 2002 October 7 Created
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# For any comments or problems, please use the Unicode
# web contact form at:
# http://www.unicode.org/unicode/reporting.html
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0E01 # THAI CHARACTER KO KAI
0xA2 0x0E02 # THAI CHARACTER KHO KHAI
0xA3 0x0E03 # THAI CHARACTER KHO KHUAT
0xA4 0x0E04 # THAI CHARACTER KHO KHWAI
0xA5 0x0E05 # THAI CHARACTER KHO KHON
0xA6 0x0E06 # THAI CHARACTER KHO RAKHANG
0xA7 0x0E07 # THAI CHARACTER NGO NGU
0xA8 0x0E08 # THAI CHARACTER CHO CHAN
0xA9 0x0E09 # THAI CHARACTER CHO CHING
0xAA 0x0E0A # THAI CHARACTER CHO CHANG
0xAB 0x0E0B # THAI CHARACTER SO SO
0xAC 0x0E0C # THAI CHARACTER CHO CHOE
0xAD 0x0E0D # THAI CHARACTER YO YING
0xAE 0x0E0E # THAI CHARACTER DO CHADA
0xAF 0x0E0F # THAI CHARACTER TO PATAK
0xB0 0x0E10 # THAI CHARACTER THO THAN
0xB1 0x0E11 # THAI CHARACTER THO NANGMONTHO
0xB2 0x0E12 # THAI CHARACTER THO PHUTHAO
0xB3 0x0E13 # THAI CHARACTER NO NEN
0xB4 0x0E14 # THAI CHARACTER DO DEK
0xB5 0x0E15 # THAI CHARACTER TO TAO
0xB6 0x0E16 # THAI CHARACTER THO THUNG
0xB7 0x0E17 # THAI CHARACTER THO THAHAN
0xB8 0x0E18 # THAI CHARACTER THO THONG
0xB9 0x0E19 # THAI CHARACTER NO NU
0xBA 0x0E1A # THAI CHARACTER BO BAIMAI
0xBB 0x0E1B # THAI CHARACTER PO PLA
0xBC 0x0E1C # THAI CHARACTER PHO PHUNG
0xBD 0x0E1D # THAI CHARACTER FO FA
0xBE 0x0E1E # THAI CHARACTER PHO PHAN
0xBF 0x0E1F # THAI CHARACTER FO FAN
0xC0 0x0E20 # THAI CHARACTER PHO SAMPHAO
0xC1 0x0E21 # THAI CHARACTER MO MA
0xC2 0x0E22 # THAI CHARACTER YO YAK
0xC3 0x0E23 # THAI CHARACTER RO RUA
0xC4 0x0E24 # THAI CHARACTER RU
0xC5 0x0E25 # THAI CHARACTER LO LING
0xC6 0x0E26 # THAI CHARACTER LU
0xC7 0x0E27 # THAI CHARACTER WO WAEN
0xC8 0x0E28 # THAI CHARACTER SO SALA
0xC9 0x0E29 # THAI CHARACTER SO RUSI
0xCA 0x0E2A # THAI CHARACTER SO SUA
0xCB 0x0E2B # THAI CHARACTER HO HIP
0xCC 0x0E2C # THAI CHARACTER LO CHULA
0xCD 0x0E2D # THAI CHARACTER O ANG
0xCE 0x0E2E # THAI CHARACTER HO NOKHUK
0xCF 0x0E2F # THAI CHARACTER PAIYANNOI
0xD0 0x0E30 # THAI CHARACTER SARA A
0xD1 0x0E31 # THAI CHARACTER MAI HAN-AKAT
0xD2 0x0E32 # THAI CHARACTER SARA AA
0xD3 0x0E33 # THAI CHARACTER SARA AM
0xD4 0x0E34 # THAI CHARACTER SARA I
0xD5 0x0E35 # THAI CHARACTER SARA II
0xD6 0x0E36 # THAI CHARACTER SARA UE
0xD7 0x0E37 # THAI CHARACTER SARA UEE
0xD8 0x0E38 # THAI CHARACTER SARA U
0xD9 0x0E39 # THAI CHARACTER SARA UU
0xDA 0x0E3A # THAI CHARACTER PHINTHU
0xDF 0x0E3F # THAI CURRENCY SYMBOL BAHT
0xE0 0x0E40 # THAI CHARACTER SARA E
0xE1 0x0E41 # THAI CHARACTER SARA AE
0xE2 0x0E42 # THAI CHARACTER SARA O
0xE3 0x0E43 # THAI CHARACTER SARA AI MAIMUAN
0xE4 0x0E44 # THAI CHARACTER SARA AI MAIMALAI
0xE5 0x0E45 # THAI CHARACTER LAKKHANGYAO
0xE6 0x0E46 # THAI CHARACTER MAIYAMOK
0xE7 0x0E47 # THAI CHARACTER MAITAIKHU
0xE8 0x0E48 # THAI CHARACTER MAI EK
0xE9 0x0E49 # THAI CHARACTER MAI THO
0xEA 0x0E4A # THAI CHARACTER MAI TRI
0xEB 0x0E4B # THAI CHARACTER MAI CHATTAWA
0xEC 0x0E4C # THAI CHARACTER THANTHAKHAT
0xED 0x0E4D # THAI CHARACTER NIKHAHIT
0xEE 0x0E4E # THAI CHARACTER YAMAKKAN
0xEF 0x0E4F # THAI CHARACTER FONGMAN
0xF0 0x0E50 # THAI DIGIT ZERO
0xF1 0x0E51 # THAI DIGIT ONE
0xF2 0x0E52 # THAI DIGIT TWO
0xF3 0x0E53 # THAI DIGIT THREE
0xF4 0x0E54 # THAI DIGIT FOUR
0xF5 0x0E55 # THAI DIGIT FIVE
0xF6 0x0E56 # THAI DIGIT SIX
0xF7 0x0E57 # THAI DIGIT SEVEN
0xF8 0x0E58 # THAI DIGIT EIGHT
0xF9 0x0E59 # THAI DIGIT NINE
0xFA 0x0E5A # THAI CHARACTER ANGKHANKHU
0xFB 0x0E5B # THAI CHARACTER KHOMUT

299
codepage/iso8859-13.txt Normal file
View File

@ -0,0 +1,299 @@
#
# Name: ISO/IEC 8859-13:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-13:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-13 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-13 order.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x201D # RIGHT DOUBLE QUOTATION MARK
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x201E # DOUBLE LOW-9 QUOTATION MARK
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x0156 # LATIN CAPITAL LETTER R WITH CEDILLA
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00C6 # LATIN CAPITAL LETTER AE
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x201C # LEFT DOUBLE QUOTATION MARK
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x0157 # LATIN SMALL LETTER R WITH CEDILLA
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
0xBF 0x00E6 # LATIN SMALL LETTER AE
0xC0 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
0xC1 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
0xC2 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
0xC3 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
0xC7 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
0xCB 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
0xCC 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
0xCD 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
0xCE 0x012A # LATIN CAPITAL LETTER I WITH MACRON
0xCF 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
0xD0 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
0xD2 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x014C # LATIN CAPITAL LETTER O WITH MACRON
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
0xD9 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
0xDA 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
0xDB 0x016A # LATIN CAPITAL LETTER U WITH MACRON
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xDE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
0xE0 0x0105 # LATIN SMALL LETTER A WITH OGONEK
0xE1 0x012F # LATIN SMALL LETTER I WITH OGONEK
0xE2 0x0101 # LATIN SMALL LETTER A WITH MACRON
0xE3 0x0107 # LATIN SMALL LETTER C WITH ACUTE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xE7 0x0113 # LATIN SMALL LETTER E WITH MACRON
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x017A # LATIN SMALL LETTER Z WITH ACUTE
0xEB 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
0xEC 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
0xED 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
0xEE 0x012B # LATIN SMALL LETTER I WITH MACRON
0xEF 0x013C # LATIN SMALL LETTER L WITH CEDILLA
0xF0 0x0161 # LATIN SMALL LETTER S WITH CARON
0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
0xF2 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x014D # LATIN SMALL LETTER O WITH MACRON
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x0173 # LATIN SMALL LETTER U WITH OGONEK
0xF9 0x0142 # LATIN SMALL LETTER L WITH STROKE
0xFA 0x015B # LATIN SMALL LETTER S WITH ACUTE
0xFB 0x016B # LATIN SMALL LETTER U WITH MACRON
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
0xFE 0x017E # LATIN SMALL LETTER Z WITH CARON
0xFF 0x2019 # RIGHT SINGLE QUOTATION MARK

301
codepage/iso8859-14.txt Normal file
View File

@ -0,0 +1,301 @@
#
# Name: ISO/IEC 8859-14:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
# Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-14:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-14 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-14 order.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE
0xA2 0x1E03 # LATIN SMALL LETTER B WITH DOT ABOVE
0xA3 0x00A3 # POUND SIGN
0xA4 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
0xA5 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
0xA6 0x1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE
0xA7 0x00A7 # SECTION SIGN
0xA8 0x1E80 # LATIN CAPITAL LETTER W WITH GRAVE
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x1E82 # LATIN CAPITAL LETTER W WITH ACUTE
0xAB 0x1E0B # LATIN SMALL LETTER D WITH DOT ABOVE
0xAC 0x1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
0xB0 0x1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE
0xB1 0x1E1F # LATIN SMALL LETTER F WITH DOT ABOVE
0xB2 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
0xB3 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
0xB4 0x1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE
0xB5 0x1E41 # LATIN SMALL LETTER M WITH DOT ABOVE
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE
0xB8 0x1E81 # LATIN SMALL LETTER W WITH GRAVE
0xB9 0x1E57 # LATIN SMALL LETTER P WITH DOT ABOVE
0xBA 0x1E83 # LATIN SMALL LETTER W WITH ACUTE
0xBB 0x1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE
0xBC 0x1EF3 # LATIN SMALL LETTER Y WITH GRAVE
0xBD 0x1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
0xBE 0x1E85 # LATIN SMALL LETTER W WITH DIAERESIS
0xBF 0x1E61 # LATIN SMALL LETTER S WITH DOT ABOVE
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x1E6B # LATIN SMALL LETTER T WITH DOT ABOVE
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

303
codepage/iso8859-15.txt Normal file
View File

@ -0,0 +1,303 @@
#
# Name: ISO/IEC 8859-15:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
# Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-15:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-15 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-15 order.
#
# Version history
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x20AC # EURO SIGN
0xA5 0x00A5 # YEN SIGN
0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xA7 0x00A7 # SECTION SIGN
0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
0xBD 0x0153 # LATIN SMALL LIGATURE OE
0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
0xBF 0x00BF # INVERTED QUESTION MARK
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x00D0 # LATIN CAPITAL LETTER ETH
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x00DE # LATIN CAPITAL LETTER THORN
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x00F0 # LATIN SMALL LETTER ETH
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x00FE # LATIN SMALL LETTER THORN
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

299
codepage/iso8859-16.txt Normal file
View File

@ -0,0 +1,299 @@
#
# Name: ISO/IEC 8859-16:2001 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 2001 July 26
# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
#
# Copyright (c) 1999-2001 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-16:2001 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-16 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-16 order.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
0xA2 0x0105 # LATIN SMALL LETTER A WITH OGONEK
0xA3 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
0xA4 0x20AC # EURO SIGN
0xA5 0x201E # DOUBLE LOW-9 QUOTATION MARK
0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xA7 0x00A7 # SECTION SIGN
0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x017A # LATIN SMALL LETTER Z WITH ACUTE
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x010C # LATIN CAPITAL LETTER C WITH CARON
0xB3 0x0142 # LATIN SMALL LETTER L WITH STROKE
0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xB5 0x201D # RIGHT DOUBLE QUOTATION MARK
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
0xB9 0x010D # LATIN SMALL LETTER C WITH CARON
0xBA 0x0219 # LATIN SMALL LETTER S WITH COMMA BELOW
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
0xBD 0x0153 # LATIN SMALL LIGATURE OE
0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
0xD8 0x0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
0xDE 0x021A # LATIN CAPITAL LETTER T WITH COMMA BELOW
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x0103 # LATIN SMALL LETTER A WITH BREVE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x0107 # LATIN SMALL LETTER C WITH ACUTE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x015B # LATIN SMALL LETTER S WITH ACUTE
0xF8 0x0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xFE 0x021B # LATIN SMALL LETTER T WITH COMMA BELOW
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

303
codepage/iso8859-2.txt Normal file
View File

@ -0,0 +1,303 @@
#
# Name: ISO 8859-2:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-2:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-2 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-2 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
0xA2 0x02D8 # BREVE
0xA3 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x013D # LATIN CAPITAL LETTER L WITH CARON
0xA6 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xAA 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
0xAB 0x0164 # LATIN CAPITAL LETTER T WITH CARON
0xAC 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
0xB2 0x02DB # OGONEK
0xB3 0x0142 # LATIN SMALL LETTER L WITH STROKE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x013E # LATIN SMALL LETTER L WITH CARON
0xB6 0x015B # LATIN SMALL LETTER S WITH ACUTE
0xB7 0x02C7 # CARON
0xB8 0x00B8 # CEDILLA
0xB9 0x0161 # LATIN SMALL LETTER S WITH CARON
0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
0xBB 0x0165 # LATIN SMALL LETTER T WITH CARON
0xBC 0x017A # LATIN SMALL LETTER Z WITH ACUTE
0xBD 0x02DD # DOUBLE ACUTE ACCENT
0xBE 0x017E # LATIN SMALL LETTER Z WITH CARON
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
0xC0 0x0154 # LATIN CAPITAL LETTER R WITH ACUTE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x0139 # LATIN CAPITAL LETTER L WITH ACUTE
0xC6 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x011A # LATIN CAPITAL LETTER E WITH CARON
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x010E # LATIN CAPITAL LETTER D WITH CARON
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
0xD2 0x0147 # LATIN CAPITAL LETTER N WITH CARON
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x0158 # LATIN CAPITAL LETTER R WITH CARON
0xD9 0x016E # LATIN CAPITAL LETTER U WITH RING ABOVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
0xDE 0x0162 # LATIN CAPITAL LETTER T WITH CEDILLA
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x0155 # LATIN SMALL LETTER R WITH ACUTE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x0103 # LATIN SMALL LETTER A WITH BREVE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x013A # LATIN SMALL LETTER L WITH ACUTE
0xE6 0x0107 # LATIN SMALL LETTER C WITH ACUTE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x011B # LATIN SMALL LETTER E WITH CARON
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x010F # LATIN SMALL LETTER D WITH CARON
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
0xF2 0x0148 # LATIN SMALL LETTER N WITH CARON
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x0159 # LATIN SMALL LETTER R WITH CARON
0xF9 0x016F # LATIN SMALL LETTER U WITH RING ABOVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
0xFE 0x0163 # LATIN SMALL LETTER T WITH CEDILLA
0xFF 0x02D9 # DOT ABOVE

296
codepage/iso8859-3.txt Normal file
View File

@ -0,0 +1,296 @@
#
# Name: ISO/IEC 8859-3:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-3:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-3 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-3 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0126 # LATIN CAPITAL LETTER H WITH STROKE
0xA2 0x02D8 # BREVE
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA6 0x0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
0xAA 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
0xAB 0x011E # LATIN CAPITAL LETTER G WITH BREVE
0xAC 0x0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
0xAD 0x00AD # SOFT HYPHEN
0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x0127 # LATIN SMALL LETTER H WITH STROKE
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x00B5 # MICRO SIGN
0xB6 0x0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00B8 # CEDILLA
0xB9 0x0131 # LATIN SMALL LETTER DOTLESS I
0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
0xBB 0x011F # LATIN SMALL LETTER G WITH BREVE
0xBC 0x0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
0xC6 0x0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x016C # LATIN CAPITAL LETTER U WITH BREVE
0xDE 0x015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
0xE6 0x0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x011D # LATIN SMALL LETTER G WITH CIRCUMFLEX
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x016D # LATIN SMALL LETTER U WITH BREVE
0xFE 0x015D # LATIN SMALL LETTER S WITH CIRCUMFLEX
0xFF 0x02D9 # DOT ABOVE

303
codepage/iso8859-4.txt Normal file
View File

@ -0,0 +1,303 @@
#
# Name: ISO/IEC 8859-4:1998 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-4:1998 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-4 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-4 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
0xA2 0x0138 # LATIN SMALL LETTER KRA
0xA3 0x0156 # LATIN CAPITAL LETTER R WITH CEDILLA
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
0xA6 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x0160 # LATIN CAPITAL LETTER S WITH CARON
0xAA 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
0xAB 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
0xAC 0x0166 # LATIN CAPITAL LETTER T WITH STROKE
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
0xB2 0x02DB # OGONEK
0xB3 0x0157 # LATIN SMALL LETTER R WITH CEDILLA
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x0129 # LATIN SMALL LETTER I WITH TILDE
0xB6 0x013C # LATIN SMALL LETTER L WITH CEDILLA
0xB7 0x02C7 # CARON
0xB8 0x00B8 # CEDILLA
0xB9 0x0161 # LATIN SMALL LETTER S WITH CARON
0xBA 0x0113 # LATIN SMALL LETTER E WITH MACRON
0xBB 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
0xBC 0x0167 # LATIN SMALL LETTER T WITH STROKE
0xBD 0x014A # LATIN CAPITAL LETTER ENG
0xBE 0x017E # LATIN SMALL LETTER Z WITH CARON
0xBF 0x014B # LATIN SMALL LETTER ENG
0xC0 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x012A # LATIN CAPITAL LETTER I WITH MACRON
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
0xD1 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
0xD2 0x014C # LATIN CAPITAL LETTER O WITH MACRON
0xD3 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
0xDE 0x016A # LATIN CAPITAL LETTER U WITH MACRON
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x0101 # LATIN SMALL LETTER A WITH MACRON
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x012F # LATIN SMALL LETTER I WITH OGONEK
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x012B # LATIN SMALL LETTER I WITH MACRON
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
0xF1 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
0xF2 0x014D # LATIN SMALL LETTER O WITH MACRON
0xF3 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x0173 # LATIN SMALL LETTER U WITH OGONEK
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x0169 # LATIN SMALL LETTER U WITH TILDE
0xFE 0x016B # LATIN SMALL LETTER U WITH MACRON
0xFF 0x02D9 # DOT ABOVE

303
codepage/iso8859-5.txt Normal file
View File

@ -0,0 +1,303 @@
#
# Name: ISO 8859-5:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-5:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-5 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-5 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x0401 # CYRILLIC CAPITAL LETTER IO
0xA2 0x0402 # CYRILLIC CAPITAL LETTER DJE
0xA3 0x0403 # CYRILLIC CAPITAL LETTER GJE
0xA4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
0xA5 0x0405 # CYRILLIC CAPITAL LETTER DZE
0xA6 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
0xA7 0x0407 # CYRILLIC CAPITAL LETTER YI
0xA8 0x0408 # CYRILLIC CAPITAL LETTER JE
0xA9 0x0409 # CYRILLIC CAPITAL LETTER LJE
0xAA 0x040A # CYRILLIC CAPITAL LETTER NJE
0xAB 0x040B # CYRILLIC CAPITAL LETTER TSHE
0xAC 0x040C # CYRILLIC CAPITAL LETTER KJE
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x040E # CYRILLIC CAPITAL LETTER SHORT U
0xAF 0x040F # CYRILLIC CAPITAL LETTER DZHE
0xB0 0x0410 # CYRILLIC CAPITAL LETTER A
0xB1 0x0411 # CYRILLIC CAPITAL LETTER BE
0xB2 0x0412 # CYRILLIC CAPITAL LETTER VE
0xB3 0x0413 # CYRILLIC CAPITAL LETTER GHE
0xB4 0x0414 # CYRILLIC CAPITAL LETTER DE
0xB5 0x0415 # CYRILLIC CAPITAL LETTER IE
0xB6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
0xB7 0x0417 # CYRILLIC CAPITAL LETTER ZE
0xB8 0x0418 # CYRILLIC CAPITAL LETTER I
0xB9 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
0xBA 0x041A # CYRILLIC CAPITAL LETTER KA
0xBB 0x041B # CYRILLIC CAPITAL LETTER EL
0xBC 0x041C # CYRILLIC CAPITAL LETTER EM
0xBD 0x041D # CYRILLIC CAPITAL LETTER EN
0xBE 0x041E # CYRILLIC CAPITAL LETTER O
0xBF 0x041F # CYRILLIC CAPITAL LETTER PE
0xC0 0x0420 # CYRILLIC CAPITAL LETTER ER
0xC1 0x0421 # CYRILLIC CAPITAL LETTER ES
0xC2 0x0422 # CYRILLIC CAPITAL LETTER TE
0xC3 0x0423 # CYRILLIC CAPITAL LETTER U
0xC4 0x0424 # CYRILLIC CAPITAL LETTER EF
0xC5 0x0425 # CYRILLIC CAPITAL LETTER HA
0xC6 0x0426 # CYRILLIC CAPITAL LETTER TSE
0xC7 0x0427 # CYRILLIC CAPITAL LETTER CHE
0xC8 0x0428 # CYRILLIC CAPITAL LETTER SHA
0xC9 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
0xCA 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
0xCB 0x042B # CYRILLIC CAPITAL LETTER YERU
0xCC 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
0xCD 0x042D # CYRILLIC CAPITAL LETTER E
0xCE 0x042E # CYRILLIC CAPITAL LETTER YU
0xCF 0x042F # CYRILLIC CAPITAL LETTER YA
0xD0 0x0430 # CYRILLIC SMALL LETTER A
0xD1 0x0431 # CYRILLIC SMALL LETTER BE
0xD2 0x0432 # CYRILLIC SMALL LETTER VE
0xD3 0x0433 # CYRILLIC SMALL LETTER GHE
0xD4 0x0434 # CYRILLIC SMALL LETTER DE
0xD5 0x0435 # CYRILLIC SMALL LETTER IE
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
0xD7 0x0437 # CYRILLIC SMALL LETTER ZE
0xD8 0x0438 # CYRILLIC SMALL LETTER I
0xD9 0x0439 # CYRILLIC SMALL LETTER SHORT I
0xDA 0x043A # CYRILLIC SMALL LETTER KA
0xDB 0x043B # CYRILLIC SMALL LETTER EL
0xDC 0x043C # CYRILLIC SMALL LETTER EM
0xDD 0x043D # CYRILLIC SMALL LETTER EN
0xDE 0x043E # CYRILLIC SMALL LETTER O
0xDF 0x043F # CYRILLIC SMALL LETTER PE
0xE0 0x0440 # CYRILLIC SMALL LETTER ER
0xE1 0x0441 # CYRILLIC SMALL LETTER ES
0xE2 0x0442 # CYRILLIC SMALL LETTER TE
0xE3 0x0443 # CYRILLIC SMALL LETTER U
0xE4 0x0444 # CYRILLIC SMALL LETTER EF
0xE5 0x0445 # CYRILLIC SMALL LETTER HA
0xE6 0x0446 # CYRILLIC SMALL LETTER TSE
0xE7 0x0447 # CYRILLIC SMALL LETTER CHE
0xE8 0x0448 # CYRILLIC SMALL LETTER SHA
0xE9 0x0449 # CYRILLIC SMALL LETTER SHCHA
0xEA 0x044A # CYRILLIC SMALL LETTER HARD SIGN
0xEB 0x044B # CYRILLIC SMALL LETTER YERU
0xEC 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
0xED 0x044D # CYRILLIC SMALL LETTER E
0xEE 0x044E # CYRILLIC SMALL LETTER YU
0xEF 0x044F # CYRILLIC SMALL LETTER YA
0xF0 0x2116 # NUMERO SIGN
0xF1 0x0451 # CYRILLIC SMALL LETTER IO
0xF2 0x0452 # CYRILLIC SMALL LETTER DJE
0xF3 0x0453 # CYRILLIC SMALL LETTER GJE
0xF4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
0xF5 0x0455 # CYRILLIC SMALL LETTER DZE
0xF6 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
0xF7 0x0457 # CYRILLIC SMALL LETTER YI
0xF8 0x0458 # CYRILLIC SMALL LETTER JE
0xF9 0x0459 # CYRILLIC SMALL LETTER LJE
0xFA 0x045A # CYRILLIC SMALL LETTER NJE
0xFB 0x045B # CYRILLIC SMALL LETTER TSHE
0xFC 0x045C # CYRILLIC SMALL LETTER KJE
0xFD 0x00A7 # SECTION SIGN
0xFE 0x045E # CYRILLIC SMALL LETTER SHORT U
0xFF 0x045F # CYRILLIC SMALL LETTER DZHE

260
codepage/iso8859-6.txt Normal file
View File

@ -0,0 +1,260 @@
#
# Name: ISO 8859-6:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-6:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-6 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-6 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
# 0x30..0x39 remapped to the ASCII digits (U+0030..U+0039) instead
# of the Arabic digits (U+0660..U+0669).
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA4 0x00A4 # CURRENCY SIGN
0xAC 0x060C # ARABIC COMMA
0xAD 0x00AD # SOFT HYPHEN
0xBB 0x061B # ARABIC SEMICOLON
0xBF 0x061F # ARABIC QUESTION MARK
0xC1 0x0621 # ARABIC LETTER HAMZA
0xC2 0x0622 # ARABIC LETTER ALEF WITH MADDA ABOVE
0xC3 0x0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE
0xC4 0x0624 # ARABIC LETTER WAW WITH HAMZA ABOVE
0xC5 0x0625 # ARABIC LETTER ALEF WITH HAMZA BELOW
0xC6 0x0626 # ARABIC LETTER YEH WITH HAMZA ABOVE
0xC7 0x0627 # ARABIC LETTER ALEF
0xC8 0x0628 # ARABIC LETTER BEH
0xC9 0x0629 # ARABIC LETTER TEH MARBUTA
0xCA 0x062A # ARABIC LETTER TEH
0xCB 0x062B # ARABIC LETTER THEH
0xCC 0x062C # ARABIC LETTER JEEM
0xCD 0x062D # ARABIC LETTER HAH
0xCE 0x062E # ARABIC LETTER KHAH
0xCF 0x062F # ARABIC LETTER DAL
0xD0 0x0630 # ARABIC LETTER THAL
0xD1 0x0631 # ARABIC LETTER REH
0xD2 0x0632 # ARABIC LETTER ZAIN
0xD3 0x0633 # ARABIC LETTER SEEN
0xD4 0x0634 # ARABIC LETTER SHEEN
0xD5 0x0635 # ARABIC LETTER SAD
0xD6 0x0636 # ARABIC LETTER DAD
0xD7 0x0637 # ARABIC LETTER TAH
0xD8 0x0638 # ARABIC LETTER ZAH
0xD9 0x0639 # ARABIC LETTER AIN
0xDA 0x063A # ARABIC LETTER GHAIN
0xE0 0x0640 # ARABIC TATWEEL
0xE1 0x0641 # ARABIC LETTER FEH
0xE2 0x0642 # ARABIC LETTER QAF
0xE3 0x0643 # ARABIC LETTER KAF
0xE4 0x0644 # ARABIC LETTER LAM
0xE5 0x0645 # ARABIC LETTER MEEM
0xE6 0x0646 # ARABIC LETTER NOON
0xE7 0x0647 # ARABIC LETTER HEH
0xE8 0x0648 # ARABIC LETTER WAW
0xE9 0x0649 # ARABIC LETTER ALEF MAKSURA
0xEA 0x064A # ARABIC LETTER YEH
0xEB 0x064B # ARABIC FATHATAN
0xEC 0x064C # ARABIC DAMMATAN
0xED 0x064D # ARABIC KASRATAN
0xEE 0x064E # ARABIC FATHA
0xEF 0x064F # ARABIC DAMMA
0xF0 0x0650 # ARABIC KASRA
0xF1 0x0651 # ARABIC SHADDA
0xF2 0x0652 # ARABIC SUKUN

308
codepage/iso8859-7.txt Normal file
View File

@ -0,0 +1,308 @@
#
# Name: ISO 8859-7:2003 to Unicode
# Unicode version: 4.0
# Table version: 2.0
# Table format: Format A
# Date: 2003-Nov-12
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-2003 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO 8859-7:2003 characters map into Unicode.
#
# ISO 8859-7:1987 is equivalent to ISO-IR-126, ELOT 928,
# and ECMA 118. ISO 8859-7:2003 adds two currency signs
# and one other character not in the earlier standard.
#
# Format: Three tab-separated columns
# Column #1 is the ISO 8859-7 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO 8859-7 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
# Remap 0xA1 to U+2018 (instead of 0x02BD) to match text of 8859-7
# Remap 0xA2 to U+2019 (instead of 0x02BC) to match text of 8859-7
#
# 2.0 version updates 1.0 version by adding mappings for the
# three newly added characters 0xA4, 0xA5, 0xAA.
#
# Updated versions of this file may be found in:
# <http://www.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact the Unicode Consortium at:
# <http://www.unicode.org/reporting.html>
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x2018 # LEFT SINGLE QUOTATION MARK
0xA2 0x2019 # RIGHT SINGLE QUOTATION MARK
0xA3 0x00A3 # POUND SIGN
0xA4 0x20AC # EURO SIGN
0xA5 0x20AF # DRACHMA SIGN
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x037A # GREEK YPOGEGRAMMENI
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAF 0x2015 # HORIZONTAL BAR
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x0384 # GREEK TONOS
0xB5 0x0385 # GREEK DIALYTIKA TONOS
0xB6 0x0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
0xB9 0x0389 # GREEK CAPITAL LETTER ETA WITH TONOS
0xBA 0x038A # GREEK CAPITAL LETTER IOTA WITH TONOS
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
0xBF 0x038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
0xC0 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
0xC1 0x0391 # GREEK CAPITAL LETTER ALPHA
0xC2 0x0392 # GREEK CAPITAL LETTER BETA
0xC3 0x0393 # GREEK CAPITAL LETTER GAMMA
0xC4 0x0394 # GREEK CAPITAL LETTER DELTA
0xC5 0x0395 # GREEK CAPITAL LETTER EPSILON
0xC6 0x0396 # GREEK CAPITAL LETTER ZETA
0xC7 0x0397 # GREEK CAPITAL LETTER ETA
0xC8 0x0398 # GREEK CAPITAL LETTER THETA
0xC9 0x0399 # GREEK CAPITAL LETTER IOTA
0xCA 0x039A # GREEK CAPITAL LETTER KAPPA
0xCB 0x039B # GREEK CAPITAL LETTER LAMDA
0xCC 0x039C # GREEK CAPITAL LETTER MU
0xCD 0x039D # GREEK CAPITAL LETTER NU
0xCE 0x039E # GREEK CAPITAL LETTER XI
0xCF 0x039F # GREEK CAPITAL LETTER OMICRON
0xD0 0x03A0 # GREEK CAPITAL LETTER PI
0xD1 0x03A1 # GREEK CAPITAL LETTER RHO
0xD3 0x03A3 # GREEK CAPITAL LETTER SIGMA
0xD4 0x03A4 # GREEK CAPITAL LETTER TAU
0xD5 0x03A5 # GREEK CAPITAL LETTER UPSILON
0xD6 0x03A6 # GREEK CAPITAL LETTER PHI
0xD7 0x03A7 # GREEK CAPITAL LETTER CHI
0xD8 0x03A8 # GREEK CAPITAL LETTER PSI
0xD9 0x03A9 # GREEK CAPITAL LETTER OMEGA
0xDA 0x03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
0xDB 0x03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
0xDC 0x03AC # GREEK SMALL LETTER ALPHA WITH TONOS
0xDD 0x03AD # GREEK SMALL LETTER EPSILON WITH TONOS
0xDE 0x03AE # GREEK SMALL LETTER ETA WITH TONOS
0xDF 0x03AF # GREEK SMALL LETTER IOTA WITH TONOS
0xE0 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
0xE1 0x03B1 # GREEK SMALL LETTER ALPHA
0xE2 0x03B2 # GREEK SMALL LETTER BETA
0xE3 0x03B3 # GREEK SMALL LETTER GAMMA
0xE4 0x03B4 # GREEK SMALL LETTER DELTA
0xE5 0x03B5 # GREEK SMALL LETTER EPSILON
0xE6 0x03B6 # GREEK SMALL LETTER ZETA
0xE7 0x03B7 # GREEK SMALL LETTER ETA
0xE8 0x03B8 # GREEK SMALL LETTER THETA
0xE9 0x03B9 # GREEK SMALL LETTER IOTA
0xEA 0x03BA # GREEK SMALL LETTER KAPPA
0xEB 0x03BB # GREEK SMALL LETTER LAMDA
0xEC 0x03BC # GREEK SMALL LETTER MU
0xED 0x03BD # GREEK SMALL LETTER NU
0xEE 0x03BE # GREEK SMALL LETTER XI
0xEF 0x03BF # GREEK SMALL LETTER OMICRON
0xF0 0x03C0 # GREEK SMALL LETTER PI
0xF1 0x03C1 # GREEK SMALL LETTER RHO
0xF2 0x03C2 # GREEK SMALL LETTER FINAL SIGMA
0xF3 0x03C3 # GREEK SMALL LETTER SIGMA
0xF4 0x03C4 # GREEK SMALL LETTER TAU
0xF5 0x03C5 # GREEK SMALL LETTER UPSILON
0xF6 0x03C6 # GREEK SMALL LETTER PHI
0xF7 0x03C7 # GREEK SMALL LETTER CHI
0xF8 0x03C8 # GREEK SMALL LETTER PSI
0xF9 0x03C9 # GREEK SMALL LETTER OMEGA
0xFA 0x03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA
0xFB 0x03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0xFC 0x03CC # GREEK SMALL LETTER OMICRON WITH TONOS
0xFD 0x03CD # GREEK SMALL LETTER UPSILON WITH TONOS
0xFE 0x03CE # GREEK SMALL LETTER OMEGA WITH TONOS

270
codepage/iso8859-8.txt Normal file
View File

@ -0,0 +1,270 @@
#
# Name: ISO/IEC 8859-8:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.1
# Table format: Format A
# Date: 2000-Jan-03
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on optical media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-8:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-8 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-8 order.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
# 1.1 version updates to the published 8859-8:1999, correcting
# the mapping of 0xAF and adding mappings for LRM and RLM.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x00A5 # YEN SIGN
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x00D7 # MULTIPLICATION SIGN
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00B8 # CEDILLA
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x00F7 # DIVISION SIGN
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
0xDF 0x2017 # DOUBLE LOW LINE
0xE0 0x05D0 # HEBREW LETTER ALEF
0xE1 0x05D1 # HEBREW LETTER BET
0xE2 0x05D2 # HEBREW LETTER GIMEL
0xE3 0x05D3 # HEBREW LETTER DALET
0xE4 0x05D4 # HEBREW LETTER HE
0xE5 0x05D5 # HEBREW LETTER VAV
0xE6 0x05D6 # HEBREW LETTER ZAYIN
0xE7 0x05D7 # HEBREW LETTER HET
0xE8 0x05D8 # HEBREW LETTER TET
0xE9 0x05D9 # HEBREW LETTER YOD
0xEA 0x05DA # HEBREW LETTER FINAL KAF
0xEB 0x05DB # HEBREW LETTER KAF
0xEC 0x05DC # HEBREW LETTER LAMED
0xED 0x05DD # HEBREW LETTER FINAL MEM
0xEE 0x05DE # HEBREW LETTER MEM
0xEF 0x05DF # HEBREW LETTER FINAL NUN
0xF0 0x05E0 # HEBREW LETTER NUN
0xF1 0x05E1 # HEBREW LETTER SAMEKH
0xF2 0x05E2 # HEBREW LETTER AYIN
0xF3 0x05E3 # HEBREW LETTER FINAL PE
0xF4 0x05E4 # HEBREW LETTER PE
0xF5 0x05E5 # HEBREW LETTER FINAL TSADI
0xF6 0x05E6 # HEBREW LETTER TSADI
0xF7 0x05E7 # HEBREW LETTER QOF
0xF8 0x05E8 # HEBREW LETTER RESH
0xF9 0x05E9 # HEBREW LETTER SHIN
0xFA 0x05EA # HEBREW LETTER TAV
0xFD 0x200E # LEFT-TO-RIGHT MARK
0xFE 0x200F # RIGHT-TO-LEFT MARK

307
codepage/iso8859-9.txt Normal file
View File

@ -0,0 +1,307 @@
#
# Name: ISO/IEC 8859-9:1999 to Unicode
# Unicode version: 3.0
# Table version: 1.0
# Table format: Format A
# Date: 1999 July 27
# Authors: Ken Whistler <kenw@sybase.com>
#
# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
#
# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
# No claims are made as to fitness for any particular purpose. No
# warranties of any kind are expressed or implied. The recipient
# agrees to determine applicability of information provided. If this
# file has been provided on magnetic media by Unicode, Inc., the sole
# remedy for any claim will be exchange of defective media within 90
# days of receipt.
#
# Unicode, Inc. hereby grants the right to freely use the information
# supplied in this file in the creation of products supporting the
# Unicode Standard, and to make copies of this file in any form for
# internal or external distribution as long as this notice remains
# attached.
#
# General notes:
#
# This table contains the data the Unicode Consortium has on how
# ISO/IEC 8859-9:1999 characters map into Unicode.
#
# Format: Three tab-separated columns
# Column #1 is the ISO/IEC 8859-9 code (in hex as 0xXX)
# Column #2 is the Unicode (in hex as 0xXXXX)
# Column #3 the Unicode name (follows a comment sign, '#')
#
# The entries are in ISO/IEC 8859-9 order.
#
# ISO/IEC 8859-9 is also equivalent to ISO-IR-148.
#
# Version history
# 1.0 version updates 0.1 version by adding mappings for all
# control characters.
#
# Updated versions of this file may be found in:
# <ftp://ftp.unicode.org/Public/MAPPINGS/>
#
# Any comments or problems, contact <errata@unicode.org>
# Please note that <errata@unicode.org> is an archival address;
# notices will be checked, but do not expect an immediate response.
#
0x00 0x0000 # NULL
0x01 0x0001 # START OF HEADING
0x02 0x0002 # START OF TEXT
0x03 0x0003 # END OF TEXT
0x04 0x0004 # END OF TRANSMISSION
0x05 0x0005 # ENQUIRY
0x06 0x0006 # ACKNOWLEDGE
0x07 0x0007 # BELL
0x08 0x0008 # BACKSPACE
0x09 0x0009 # HORIZONTAL TABULATION
0x0A 0x000A # LINE FEED
0x0B 0x000B # VERTICAL TABULATION
0x0C 0x000C # FORM FEED
0x0D 0x000D # CARRIAGE RETURN
0x0E 0x000E # SHIFT OUT
0x0F 0x000F # SHIFT IN
0x10 0x0010 # DATA LINK ESCAPE
0x11 0x0011 # DEVICE CONTROL ONE
0x12 0x0012 # DEVICE CONTROL TWO
0x13 0x0013 # DEVICE CONTROL THREE
0x14 0x0014 # DEVICE CONTROL FOUR
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
0x16 0x0016 # SYNCHRONOUS IDLE
0x17 0x0017 # END OF TRANSMISSION BLOCK
0x18 0x0018 # CANCEL
0x19 0x0019 # END OF MEDIUM
0x1A 0x001A # SUBSTITUTE
0x1B 0x001B # ESCAPE
0x1C 0x001C # FILE SEPARATOR
0x1D 0x001D # GROUP SEPARATOR
0x1E 0x001E # RECORD SEPARATOR
0x1F 0x001F # UNIT SEPARATOR
0x20 0x0020 # SPACE
0x21 0x0021 # EXCLAMATION MARK
0x22 0x0022 # QUOTATION MARK
0x23 0x0023 # NUMBER SIGN
0x24 0x0024 # DOLLAR SIGN
0x25 0x0025 # PERCENT SIGN
0x26 0x0026 # AMPERSAND
0x27 0x0027 # APOSTROPHE
0x28 0x0028 # LEFT PARENTHESIS
0x29 0x0029 # RIGHT PARENTHESIS
0x2A 0x002A # ASTERISK
0x2B 0x002B # PLUS SIGN
0x2C 0x002C # COMMA
0x2D 0x002D # HYPHEN-MINUS
0x2E 0x002E # FULL STOP
0x2F 0x002F # SOLIDUS
0x30 0x0030 # DIGIT ZERO
0x31 0x0031 # DIGIT ONE
0x32 0x0032 # DIGIT TWO
0x33 0x0033 # DIGIT THREE
0x34 0x0034 # DIGIT FOUR
0x35 0x0035 # DIGIT FIVE
0x36 0x0036 # DIGIT SIX
0x37 0x0037 # DIGIT SEVEN
0x38 0x0038 # DIGIT EIGHT
0x39 0x0039 # DIGIT NINE
0x3A 0x003A # COLON
0x3B 0x003B # SEMICOLON
0x3C 0x003C # LESS-THAN SIGN
0x3D 0x003D # EQUALS SIGN
0x3E 0x003E # GREATER-THAN SIGN
0x3F 0x003F # QUESTION MARK
0x40 0x0040 # COMMERCIAL AT
0x41 0x0041 # LATIN CAPITAL LETTER A
0x42 0x0042 # LATIN CAPITAL LETTER B
0x43 0x0043 # LATIN CAPITAL LETTER C
0x44 0x0044 # LATIN CAPITAL LETTER D
0x45 0x0045 # LATIN CAPITAL LETTER E
0x46 0x0046 # LATIN CAPITAL LETTER F
0x47 0x0047 # LATIN CAPITAL LETTER G
0x48 0x0048 # LATIN CAPITAL LETTER H
0x49 0x0049 # LATIN CAPITAL LETTER I
0x4A 0x004A # LATIN CAPITAL LETTER J
0x4B 0x004B # LATIN CAPITAL LETTER K
0x4C 0x004C # LATIN CAPITAL LETTER L
0x4D 0x004D # LATIN CAPITAL LETTER M
0x4E 0x004E # LATIN CAPITAL LETTER N
0x4F 0x004F # LATIN CAPITAL LETTER O
0x50 0x0050 # LATIN CAPITAL LETTER P
0x51 0x0051 # LATIN CAPITAL LETTER Q
0x52 0x0052 # LATIN CAPITAL LETTER R
0x53 0x0053 # LATIN CAPITAL LETTER S
0x54 0x0054 # LATIN CAPITAL LETTER T
0x55 0x0055 # LATIN CAPITAL LETTER U
0x56 0x0056 # LATIN CAPITAL LETTER V
0x57 0x0057 # LATIN CAPITAL LETTER W
0x58 0x0058 # LATIN CAPITAL LETTER X
0x59 0x0059 # LATIN CAPITAL LETTER Y
0x5A 0x005A # LATIN CAPITAL LETTER Z
0x5B 0x005B # LEFT SQUARE BRACKET
0x5C 0x005C # REVERSE SOLIDUS
0x5D 0x005D # RIGHT SQUARE BRACKET
0x5E 0x005E # CIRCUMFLEX ACCENT
0x5F 0x005F # LOW LINE
0x60 0x0060 # GRAVE ACCENT
0x61 0x0061 # LATIN SMALL LETTER A
0x62 0x0062 # LATIN SMALL LETTER B
0x63 0x0063 # LATIN SMALL LETTER C
0x64 0x0064 # LATIN SMALL LETTER D
0x65 0x0065 # LATIN SMALL LETTER E
0x66 0x0066 # LATIN SMALL LETTER F
0x67 0x0067 # LATIN SMALL LETTER G
0x68 0x0068 # LATIN SMALL LETTER H
0x69 0x0069 # LATIN SMALL LETTER I
0x6A 0x006A # LATIN SMALL LETTER J
0x6B 0x006B # LATIN SMALL LETTER K
0x6C 0x006C # LATIN SMALL LETTER L
0x6D 0x006D # LATIN SMALL LETTER M
0x6E 0x006E # LATIN SMALL LETTER N
0x6F 0x006F # LATIN SMALL LETTER O
0x70 0x0070 # LATIN SMALL LETTER P
0x71 0x0071 # LATIN SMALL LETTER Q
0x72 0x0072 # LATIN SMALL LETTER R
0x73 0x0073 # LATIN SMALL LETTER S
0x74 0x0074 # LATIN SMALL LETTER T
0x75 0x0075 # LATIN SMALL LETTER U
0x76 0x0076 # LATIN SMALL LETTER V
0x77 0x0077 # LATIN SMALL LETTER W
0x78 0x0078 # LATIN SMALL LETTER X
0x79 0x0079 # LATIN SMALL LETTER Y
0x7A 0x007A # LATIN SMALL LETTER Z
0x7B 0x007B # LEFT CURLY BRACKET
0x7C 0x007C # VERTICAL LINE
0x7D 0x007D # RIGHT CURLY BRACKET
0x7E 0x007E # TILDE
0x7F 0x007F # DELETE
0x80 0x0080 # <control>
0x81 0x0081 # <control>
0x82 0x0082 # <control>
0x83 0x0083 # <control>
0x84 0x0084 # <control>
0x85 0x0085 # <control>
0x86 0x0086 # <control>
0x87 0x0087 # <control>
0x88 0x0088 # <control>
0x89 0x0089 # <control>
0x8A 0x008A # <control>
0x8B 0x008B # <control>
0x8C 0x008C # <control>
0x8D 0x008D # <control>
0x8E 0x008E # <control>
0x8F 0x008F # <control>
0x90 0x0090 # <control>
0x91 0x0091 # <control>
0x92 0x0092 # <control>
0x93 0x0093 # <control>
0x94 0x0094 # <control>
0x95 0x0095 # <control>
0x96 0x0096 # <control>
0x97 0x0097 # <control>
0x98 0x0098 # <control>
0x99 0x0099 # <control>
0x9A 0x009A # <control>
0x9B 0x009B # <control>
0x9C 0x009C # <control>
0x9D 0x009D # <control>
0x9E 0x009E # <control>
0x9F 0x009F # <control>
0xA0 0x00A0 # NO-BREAK SPACE
0xA1 0x00A1 # INVERTED EXCLAMATION MARK
0xA2 0x00A2 # CENT SIGN
0xA3 0x00A3 # POUND SIGN
0xA4 0x00A4 # CURRENCY SIGN
0xA5 0x00A5 # YEN SIGN
0xA6 0x00A6 # BROKEN BAR
0xA7 0x00A7 # SECTION SIGN
0xA8 0x00A8 # DIAERESIS
0xA9 0x00A9 # COPYRIGHT SIGN
0xAA 0x00AA # FEMININE ORDINAL INDICATOR
0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC # NOT SIGN
0xAD 0x00AD # SOFT HYPHEN
0xAE 0x00AE # REGISTERED SIGN
0xAF 0x00AF # MACRON
0xB0 0x00B0 # DEGREE SIGN
0xB1 0x00B1 # PLUS-MINUS SIGN
0xB2 0x00B2 # SUPERSCRIPT TWO
0xB3 0x00B3 # SUPERSCRIPT THREE
0xB4 0x00B4 # ACUTE ACCENT
0xB5 0x00B5 # MICRO SIGN
0xB6 0x00B6 # PILCROW SIGN
0xB7 0x00B7 # MIDDLE DOT
0xB8 0x00B8 # CEDILLA
0xB9 0x00B9 # SUPERSCRIPT ONE
0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
0xBD 0x00BD # VULGAR FRACTION ONE HALF
0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
0xBF 0x00BF # INVERTED QUESTION MARK
0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0xC6 0x00C6 # LATIN CAPITAL LETTER AE
0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
0xD0 0x011E # LATIN CAPITAL LETTER G WITH BREVE
0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0xD7 0x00D7 # MULTIPLICATION SIGN
0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
0xDD 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
0xDE 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
0xDF 0x00DF # LATIN SMALL LETTER SHARP S
0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
0xE6 0x00E6 # LATIN SMALL LETTER AE
0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
0xF0 0x011F # LATIN SMALL LETTER G WITH BREVE
0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
0xF7 0x00F7 # DIVISION SIGN
0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
0xFD 0x0131 # LATIN SMALL LETTER DOTLESS I
0xFE 0x015F # LATIN SMALL LETTER S WITH CEDILLA
0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS

32
com32/LICENCE Normal file
View File

@ -0,0 +1,32 @@
libcom32 and libutil are licensed under the MIT license:
## -----------------------------------------------------------------------
##
## Copyright 2004-2009 H. Peter Anvin - All Rights Reserved
## Portions Copyright 2009 Intel Corporation; author: H. Peter Anvin
##
## Permission is hereby granted, free of charge, to any person
## obtaining a copy of this software and associated documentation
## files (the "Software"), to deal in the Software without
## restriction, including without limitation the rights to use,
## copy, modify, merge, publish, distribute, sublicense, and/or
## sell copies of the Software, and to permit persons to whom
## the Software is furnished to do so, subject to the following
## conditions:
##
## The above copyright notice and this permission notice shall
## be included in all copies or substantial portions of the Software.
##
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
## EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
## OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
## NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
## HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
## WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
## FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
## OTHER DEALINGS IN THE SOFTWARE.
##
## -----------------------------------------------------------------------
The files in the sample, modules and libgpl directories are mostly under the
GNU GPL (see the file COPYING in the directory above.)

21
com32/Makefile Normal file
View File

@ -0,0 +1,21 @@
SUBDIRS = tools lib libutil gpllib libupload elflink/ldlinux modules mboot \
menu samples elflink rosh cmenu hdt gfxboot sysdump lua/src chain
.PHONY: subdirs $(SUBDIRS)
subdirs: $(SUBDIRS)
$(SUBDIRS):
@mkdir -p $(OBJ)/$@
$(MAKE) -C $(OBJ)/$@ SRC="$(SRC)"/$@ OBJ="$(OBJ)"/$@/ \
-f $(SRC)/$@/Makefile $(MAKECMDGOALS)
all tidy dist clean spotless install: subdirs
# Parallel dependencies
elflink/ldlinux gpllib libupload libutil: lib
cmenu: lib libutil
chain gfxboot mboot menu modules rosh: lib libutil gpllib
hdt: lib libutil gpllib libupload cmenu
lua/src: lib libutil gpllib cmenu
samples: lib libutil gpllib elflink/ldlinux
sysdump: lib libutil gpllib libupload

43
com32/chain/Makefile Normal file
View File

@ -0,0 +1,43 @@
## -----------------------------------------------------------------------
##
## Copyright 2001-2009 H. Peter Anvin - All Rights Reserved
## Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
## Copyright 2010 Shao Miller
## Copyright 2010-2015 Michal Soltys
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, Inc., 53 Temple Place Ste 330,
## Boston MA 02111-1307, USA; either version 2 of the License, or
## (at your option) any later version; incorporated herein by reference.
##
## -----------------------------------------------------------------------
VPATH = $(SRC)
include $(MAKEDIR)/elf.mk
OBJS = chain.o partiter.o utility.o options.o mangle.o
CFLAGS += -fno-strict-aliasing
all: chain.c32
chain.elf: $(OBJS) $(C_LIBS)
$(LD) $(LDFLAGS) -o $@ $^
%.o: %.c
$(CC) $(MAKEDEPS) $(CFLAGS) $(CHAINEXTOPT) -c -o $@ $<
tidy dist:
rm -f *.o *.lo *.a *.lst *.elf .*.d *.tmp
clean: tidy
rm -f *.lnx
spotless: clean
rm -f *.lss *.c32 *.com
rm -f *~ \#*
install:
-include .*.d

643
com32/chain/chain.c Normal file
View File

@ -0,0 +1,643 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
* Copyright 2010 Shao Miller
* Copyright 2010-2015 Michal Soltys
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
/*
* Please see doc/chain.txt for the detailed documentation.
*/
#include <com32.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <console.h>
#include <consoles.h>
#include <minmax.h>
#include <stdbool.h>
#include <dprintf.h>
#include <errno.h>
#include <unistd.h>
#include <syslinux/loadfile.h>
#include <syslinux/bootrm.h>
#include <syslinux/config.h>
#include <syslinux/disk.h>
#include <syslinux/video.h>
#include "chain.h"
#include "utility.h"
#include "options.h"
#include "partiter.h"
#include "mangle.h"
static int fixed_cnt = 128; /* see comments in main() */
static int overlap(const struct data_area *a, const struct data_area *b)
{
return
a->base + a->size > b->base &&
b->base + b->size > a->base;
}
static int is_phys(uint8_t sdifs)
{
return
sdifs == SYSLINUX_FS_SYSLINUX ||
sdifs == SYSLINUX_FS_EXTLINUX ||
sdifs == SYSLINUX_FS_ISOLINUX;
}
/*
* Search for a specific drive, based on the MBR signature.
* Return drive and iterator at 0th position.
*/
static int find_by_sig(uint32_t mbr_sig,
struct part_iter **_boot_part)
{
struct part_iter *iter = NULL;
struct disk_info diskinfo;
int drive;
for (drive = 0x80; drive < 0x80 + fixed_cnt; drive++) {
if (disk_get_params(drive, &diskinfo))
continue; /* Drive doesn't exist */
if (!(iter = pi_begin(&diskinfo, opt.piflags)))
continue;
/* Check for a matching MBR disk */
if (iter->type == typedos && iter->dos.disk_sig == mbr_sig)
goto ok;
pi_del(&iter);
}
drive = -1;
ok:
*_boot_part = iter;
return drive;
}
/*
* Search for a specific drive/partition, based on the GPT GUID.
* Return drive and iterator at proper position.
*/
static int find_by_guid(const struct guid *gpt_guid,
struct part_iter **_boot_part)
{
struct part_iter *iter = NULL;
struct disk_info diskinfo;
int drive;
for (drive = 0x80; drive < 0x80 + fixed_cnt; drive++) {
if (disk_get_params(drive, &diskinfo))
continue; /* Drive doesn't exist */
if (!(iter = pi_begin(&diskinfo, opt.piflags)))
continue;
/* Check for a matching GPT disk/partition guid */
if (iter->type == typegpt)
do {
if (!memcmp(&iter->gpt.part_guid, gpt_guid, sizeof *gpt_guid))
goto ok;
} while (!pi_next(iter));
pi_del(&iter);
}
drive = -1;
ok:
*_boot_part = iter;
return drive;
}
/*
* Search for a specific drive/partition, based on the GPT label.
* Return drive and iterator at proper position.
*/
static int find_by_label(const char *label, struct part_iter **_boot_part)
{
struct part_iter *iter = NULL;
struct disk_info diskinfo;
int drive;
for (drive = 0x80; drive < 0x80 + fixed_cnt; drive++) {
if (disk_get_params(drive, &diskinfo))
continue; /* Drive doesn't exist */
if (!(iter = pi_begin(&diskinfo, opt.piflags)))
continue;
/* Check for a matching GPT partition label */
if (iter->type == typegpt)
while (!pi_next(iter)) {
if (!strcmp(label, iter->gpt.part_label))
goto ok;
}
pi_del(&iter);
}
drive = -1;
ok:
*_boot_part = iter;
return drive;
}
static void do_boot(struct data_area *data, int ndata)
{
struct syslinux_memmap *mmap;
struct syslinux_movelist *mlist = NULL;
addr_t endimage;
uint8_t driveno = opt.regs.edx.b[0];
uint8_t swapdrive = driveno & 0x80;
int i;
mmap = syslinux_memory_map();
if (!mmap) {
error("Cannot read system memory map.");
return;
}
endimage = 0;
for (i = 0; i < ndata; i++) {
if (data[i].base + data[i].size > endimage)
endimage = data[i].base + data[i].size;
}
if (endimage > dosmax)
goto too_big;
for (i = 0; i < ndata; i++) {
if (syslinux_add_movelist(&mlist, data[i].base,
(addr_t) data[i].data, data[i].size))
goto enomem;
}
if (opt.swap && driveno != swapdrive) {
static const uint8_t swapstub_master[] = {
/* The actual swap code */
0x53, /* 00: push bx */
0x0f, 0xb6, 0xda, /* 01: movzx bx,dl */
0x2e, 0x8a, 0x57, 0x60, /* 04: mov dl,[cs:bx+0x60] */
0x5b, /* 08: pop bx */
0xea, 0, 0, 0, 0, /* 09: jmp far 0:0 */
0x90, 0x90, /* 0E: nop; nop */
/* Code to install this in the right location */
/* Entry with DS = CS; ES = SI = 0; CX = 256 */
0x26, 0x66, 0x8b, 0x7c, 0x4c, /* 10: mov edi,[es:si+4*0x13] */
0x66, 0x89, 0x3e, 0x0a, 0x00, /* 15: mov [0x0A],edi */
0x26, 0x8b, 0x3e, 0x13, 0x04, /* 1A: mov di,[es:0x413] */
0x4f, /* 1F: dec di */
0x26, 0x89, 0x3e, 0x13, 0x04, /* 20: mov [es:0x413],di */
0x66, 0xc1, 0xe7, 0x16, /* 25: shl edi,16+6 */
0x26, 0x66, 0x89, 0x7c, 0x4c, /* 29: mov [es:si+4*0x13],edi */
0x66, 0xc1, 0xef, 0x10, /* 2E: shr edi,16 */
0x8e, 0xc7, /* 32: mov es,di */
0x31, 0xff, /* 34: xor di,di */
0xf3, 0x66, 0xa5, /* 36: rep movsd */
0xbe, 0, 0, /* 39: mov si,0 */
0xbf, 0, 0, /* 3C: mov di,0 */
0x8e, 0xde, /* 3F: mov ds,si */
0x8e, 0xc7, /* 41: mov es,di */
0x66, 0xb9, 0, 0, 0, 0, /* 43: mov ecx,0 */
0x66, 0xbe, 0, 0, 0, 0, /* 49: mov esi,0 */
0x66, 0xbf, 0, 0, 0, 0, /* 4F: mov edi,0 */
0xea, 0, 0, 0, 0, /* 55: jmp 0:0 */
/* pad out to segment boundary */
0x90, 0x90, /* 5A: ... */
0x90, 0x90, 0x90, 0x90, /* 5C: ... */
};
static uint8_t swapstub[1024];
uint8_t *p;
/* Note: we can't rely on either INT 13h nor the dosmax
vector to be correct at this stage, so we have to use an
installer stub to put things in the right place.
Round the installer location to a 1K boundary so the only
possible overlap is the identity mapping. */
endimage = (endimage + 1023u) & ~1023u;
/* Create swap stub */
memcpy(swapstub, swapstub_master, sizeof swapstub_master);
*(uint16_t *) & swapstub[0x3a] = opt.regs.ds;
*(uint16_t *) & swapstub[0x3d] = opt.regs.es;
*(uint32_t *) & swapstub[0x45] = opt.regs.ecx.l;
*(uint32_t *) & swapstub[0x4b] = opt.regs.esi.l;
*(uint32_t *) & swapstub[0x51] = opt.regs.edi.l;
*(uint16_t *) & swapstub[0x56] = opt.regs.ip;
*(uint16_t *) & swapstub[0x58] = opt.regs.cs;
p = &swapstub[sizeof swapstub_master];
/* Mapping table; start out with identity mapping everything */
for (i = 0; i < 256; i++)
p[i] = i;
/* And the actual swap */
p[driveno] = swapdrive;
p[swapdrive] = driveno;
/* Adjust registers */
opt.regs.ds = opt.regs.cs = endimage >> 4;
opt.regs.esi.l = opt.regs.es = 0;
opt.regs.ecx.l = sizeof swapstub >> 2;
opt.regs.ip = 0x10; /* Installer offset */
opt.regs.ebx.b[0] = opt.regs.edx.b[0] = swapdrive;
if (syslinux_add_movelist(&mlist, endimage, (addr_t) swapstub,
sizeof swapstub))
goto enomem;
endimage += sizeof swapstub;
}
/* Tell the shuffler not to muck with this area... */
syslinux_add_memmap(&mmap, endimage, 0xa0000 - endimage, SMT_RESERVED);
/* Force text mode */
syslinux_force_text_mode();
puts("Booting...");
syslinux_shuffle_boot_rm(mlist, mmap, opt.keeppxe, &opt.regs);
error("Chainboot failed !");
return;
too_big:
error("Loader file too large.");
return;
enomem:
error("Out of memory.");
return;
}
int find_dp(struct part_iter **_iter)
{
struct part_iter *iter = NULL;
struct disk_info diskinfo;
struct guid gpt_guid;
uint64_t fs_lba;
int drive, hd, partition;
const union syslinux_derivative_info *sdi;
sdi = syslinux_derivative_info();
if (!strncmp(opt.drivename, "mbr", 3)) {
if (find_by_sig(strtoul(opt.drivename + 4, NULL, 0), &iter) < 0) {
error("Unable to find requested MBR signature.");
goto bail;
}
} else if (!strncmp(opt.drivename, "guid", 4)) {
if (str_to_guid(opt.drivename + 5, &gpt_guid))
goto bail;
if (find_by_guid(&gpt_guid, &iter) < 0) {
error("Unable to find requested GPT disk or partition by guid.");
goto bail;
}
} else if (!strncmp(opt.drivename, "label", 5)) {
if (!opt.drivename[6]) {
error("No label specified.");
goto bail;
}
if (find_by_label(opt.drivename + 6, &iter) < 0) {
error("Unable to find requested GPT partition by label.");
goto bail;
}
} else if ((opt.drivename[0] == 'h' || opt.drivename[0] == 'f') &&
opt.drivename[1] == 'd') {
hd = opt.drivename[0] == 'h' ? 0x80 : 0;
opt.drivename += 2;
drive = hd | strtol(opt.drivename, NULL, 0);
if (disk_get_params(drive, &diskinfo))
goto bail;
/* this will start iteration over FDD, possibly raw */
if (!(iter = pi_begin(&diskinfo, opt.piflags)))
goto bail;
} else if (!strcmp(opt.drivename, "boot") || !strcmp(opt.drivename, "fs")) {
if (!is_phys(sdi->c.filesystem)) {
error("When syslinux is not booted from physical disk (or its emulation),\n"
"'boot' and 'fs' are meaningless.");
goto bail;
}
/* offsets match, but in case it changes in the future */
if (sdi->c.filesystem == SYSLINUX_FS_ISOLINUX) {
drive = sdi->iso.drive_number;
fs_lba = *sdi->iso.partoffset;
} else {
drive = sdi->disk.drive_number;
fs_lba = *sdi->disk.partoffset;
}
if (disk_get_params(drive, &diskinfo))
goto bail;
/* this will start iteration over disk emulation, possibly raw */
if (!(iter = pi_begin(&diskinfo, opt.piflags)))
goto bail;
/* 'fs' => we should lookup the syslinux partition number and use it */
if (!strcmp(opt.drivename, "fs")) {
do {
if (iter->abs_lba == fs_lba)
break;
} while (!pi_next(iter));
/* broken part structure or other problems */
if (iter->status) {
error("Unable to find partition with syslinux (fs).");
goto bail;
}
}
} else {
error("Unparsable drive specification.");
goto bail;
}
/* main options done - only thing left is explicit partition specification,
* if we're still at the disk stage with the iterator AND user supplied
* partition number (including disk pseudo-partition).
*/
if (!iter->index && opt.partition) {
partition = strtol(opt.partition, NULL, 0);
/* search for matching part#, including disk */
do {
if (iter->index == partition)
break;
} while (!pi_next(iter));
if (iter->status) {
error("Unable to find requested disk / partition combination.");
goto bail;
}
}
if (!(iter->di.disk & 0x80) && iter->index) {
warn("Partitions on floppy devices may not work.");
}
*_iter = iter;
return 0;
bail:
pi_del(&iter);
return -1;
}
static int setup_handover(const struct part_iter *iter,
struct data_area *data)
{
struct disk_dos_part_entry *ha;
uint32_t synth_size = sizeof *ha;
/*
* we have to cover both non-iterated but otherwise properly detected
* gpt/dos schemes as well as raw disks; checking index for 0 covers both
*/
if (iter->index == 0) {
uint32_t len;
/* RAW handover protocol */
ha = malloc(synth_size);
if (!ha) {
critm();
goto bail;
}
len = ~0u;
if (iter->length < len)
len = iter->length;
lba2chs(&ha->start, &iter->di, 0, L2C_CADD);
lba2chs(&ha->end, &iter->di, len - 1, L2C_CADD);
ha->active_flag = 0x80;
ha->ostype = 0xDA; /* "Non-FS Data", anything is good here though ... */
ha->start_lba = 0;
ha->length = len;
} else if (iter->type == typegpt) {
uint32_t *plen;
/* GPT handover protocol */
synth_size += sizeof *plen + iter->gpt.pe_size;
ha = malloc(synth_size);
if (!ha) {
critm();
goto bail;
}
lba2chs(&ha->start, &iter->di, iter->abs_lba, L2C_CADD);
lba2chs(&ha->end, &iter->di, iter->abs_lba + iter->length - 1, L2C_CADD);
ha->active_flag = 0x80;
ha->ostype = 0xED;
/* All bits set by default */
ha->start_lba = ~0u;
ha->length = ~0u;
/* If these fit the precision, pass them on */
if (iter->abs_lba < ha->start_lba)
ha->start_lba = iter->abs_lba;
if (iter->length < ha->length)
ha->length = iter->length;
/* Next comes the GPT partition record length */
plen = (uint32_t *)(ha + 1);
plen[0] = iter->gpt.pe_size;
/* Next comes the GPT partition record copy */
memcpy(plen + 1, iter->record, plen[0]);
#ifdef DEBUG
dprintf("GPT handover:\n");
disk_dos_part_dump(ha);
disk_gpt_part_dump((struct disk_gpt_part_entry *)(plen + 1));
#endif
/* the only possible case left is dos scheme */
} else if (iter->type == typedos) {
/* MBR handover protocol */
ha = malloc(synth_size);
if (!ha) {
critm();
goto bail;
}
memcpy(ha, iter->record, synth_size);
/* make sure these match bios imaginations and are ebr agnostic */
lba2chs(&ha->start, &iter->di, iter->abs_lba, L2C_CADD);
lba2chs(&ha->end, &iter->di, iter->abs_lba + iter->length - 1, L2C_CADD);
ha->start_lba = iter->abs_lba;
ha->length = iter->length;
#ifdef DEBUG
dprintf("MBR handover:\n");
disk_dos_part_dump(ha);
#endif
} else {
/* shouldn't ever happen */
goto bail;
}
data->base = 0x7be;
data->size = synth_size;
data->data = (void *)ha;
return 0;
bail:
return -1;
}
int main(int argc, char *argv[])
{
struct part_iter *iter = NULL;
void *sbck = NULL;
struct data_area fdat, hdat, sdat, data[3];
int ndata = 0;
console_ansi_raw();
memset(&fdat, 0, sizeof fdat);
memset(&hdat, 0, sizeof hdat);
memset(&sdat, 0, sizeof sdat);
opt_set_defs();
if (opt_parse_args(argc, argv))
goto bail;
#if 0
/* Get max fixed disk number */
fixed_cnt = *(uint8_t *)(0x475);
/*
* hmm, looks like we can't do that -
* some bioses/vms just set it to 1
* and go on living happily
* any better options than hardcoded 0x80 - 0xFF ?
*/
#endif
/* Get disk/part iterator matching user supplied options */
if (find_dp(&iter))
goto bail;
/* Perform initial partition entry mangling */
if (manglepe_fixchs(iter))
goto bail;
if (manglepe_hide(iter))
goto bail;
/* Load the boot file */
if (opt.file) {
fdat.base = (opt.fseg << 4) + opt.foff;
if (loadfile(opt.file, &fdat.data, &fdat.size)) {
error("Couldn't read the boot file.");
goto bail;
}
if (fdat.base + fdat.size > dosmax) {
error("The boot file is too big to load at this address.");
goto bail;
}
}
/* Load the sector */
if (opt.sect) {
sdat.base = (opt.sseg << 4) + opt.soff;
sdat.size = iter->di.bps;
if (sdat.base + sdat.size > dosmax) {
error("The sector cannot be loaded at such high address.");
goto bail;
}
if (!(sdat.data = disk_read_sectors(&iter->di, iter->abs_lba, 1))) {
error("Couldn't read the sector.");
goto bail;
}
if (opt.save) {
if (!(sbck = malloc(sdat.size))) {
critm();
goto bail;
}
memcpy(sbck, sdat.data, sdat.size);
}
if (opt.file && opt.maps && overlap(&fdat, &sdat)) {
warn("The sector won't be mmapped, as it would conflict with the boot file.");
opt.maps = false;
}
}
/* Prep the handover */
if (opt.hand) {
if (setup_handover(iter, &hdat))
goto bail;
/* Verify possible conflicts */
if ( ( opt.file && overlap(&fdat, &hdat)) ||
( opt.maps && overlap(&sdat, &hdat)) ) {
warn("Handover area won't be prepared,\n"
"as it would conflict with the boot file and/or the sector.");
opt.hand = false;
}
}
/* Adjust registers */
mangler_init(iter);
mangler_handover(iter, &hdat);
mangler_grldr(iter);
/* Patching functions */
if (manglef_isolinux(&fdat))
goto bail;
if (manglef_grub(iter, &fdat))
goto bail;
#if 0
if (manglef_drmk(&fdat))
goto bail;
#endif
if (manglef_bpb(iter, &fdat))
goto bail;
if (mangles_bpb(iter, &sdat))
goto bail;
if (mangles_save(iter, &sdat, sbck))
goto bail;
if (manglesf_bss(&sdat, &fdat))
goto bail;
/* This *must* be after BPB saving or copying */
if (mangles_cmldr(&sdat))
goto bail;
/*
* Prepare boot-time mmap data. We should to it here, as manglers could
* potentially alter some of the data.
*/
if (opt.file)
memcpy(data + ndata++, &fdat, sizeof fdat);
if (opt.maps)
memcpy(data + ndata++, &sdat, sizeof sdat);
if (opt.hand)
memcpy(data + ndata++, &hdat, sizeof hdat);
#ifdef DEBUG
dprintf("iter->di dsk, bps: %X, %u\niter->di lbacnt, C*H*S: %"PRIu64", %u\n"
"iter->di C, H, S: %u, %u, %u\n",
iter->di.disk, iter->di.bps,
iter->di.lbacnt, iter->di.cyl * iter->di.head * iter->di.spt,
iter->di.cyl, iter->di.head, iter->di.spt);
dprintf("iter idx: %d\n", iter->index);
dprintf("iter lba: %"PRIu64"\n", iter->abs_lba);
if (opt.hand)
dprintf("hand lba: %u\n",
((struct disk_dos_part_entry *)hdat.data)->start_lba);
#endif
if (opt.warn) {
puts("Press any key to continue booting...");
wait_key();
}
if (ndata && !opt.brkchain) /* boot only if we actually chainload */
do_boot(data, ndata);
else
puts("Service-only run completed, exiting.");
bail:
pi_del(&iter);
/* Free allocated areas */
free(fdat.data);
free(sdat.data);
free(hdat.data);
free(sbck);
return 255;
}
/* vim: set ts=8 sts=4 sw=4 noet: */

29
com32/chain/chain.h Normal file
View File

@ -0,0 +1,29 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
* Copyright 2010 Shao Miller
* Copyright 2010-2015 Michal Soltys
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#ifndef COM32_CHAIN_CHAIN_H
#define COM32_CHAIN_CHAIN_H
#include <syslinux/movebits.h>
struct data_area {
void *data;
addr_t base;
addr_t size;
};
#endif
/* vim: set ts=8 sts=4 sw=4 noet: */

682
com32/chain/mangle.c Normal file
View File

@ -0,0 +1,682 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
* Copyright 2010 Shao Miller
* Copyright 2010-2015 Michal Soltys
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
#include <com32.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <dprintf.h>
#include <syslinux/config.h>
#include "chain.h"
#include "options.h"
#include "utility.h"
#include "partiter.h"
#include "mangle.h"
static const char cmldr_signature[8] = "cmdcons";
/* Create boot info table: needed when you want to chainload
* another version of ISOLINUX (or another bootlaoder that needs
* the -boot-info-table switch of mkisofs)
* (will only work when run from ISOLINUX)
*/
int manglef_isolinux(struct data_area *data)
{
const union syslinux_derivative_info *sdi;
unsigned char *isolinux_bin;
uint32_t *checksum, *chkhead, *chktail;
uint32_t file_lba = 0;
if (!(opt.file && opt.isolinux))
return 0;
sdi = syslinux_derivative_info();
if (sdi->c.filesystem != SYSLINUX_FS_ISOLINUX) {
error("The isolinux= option is only valid when run from ISOLINUX.");
goto bail;
}
/* Boot info table info (integers in little endian format)
Offset Name Size Meaning
8 bi_pvd 4 bytes LBA of primary volume descriptor
12 bi_file 4 bytes LBA of boot file
16 bi_length 4 bytes Boot file length in bytes
20 bi_csum 4 bytes 32-bit checksum
24 bi_reserved 40 bytes Reserved
The 32-bit checksum is the sum of all the 32-bit words in the
boot file starting at byte offset 64. All linear block
addresses (LBAs) are given in CD sectors (normally 2048 bytes).
LBA of primary volume descriptor should already be set to 16.
*/
isolinux_bin = (unsigned char *)data->data;
/* Get LBA address of bootfile */
file_lba = get_file_lba(opt.file);
if (file_lba == 0) {
error("Failed to find LBA offset of the boot file.");
goto bail;
}
/* Set it */
*((uint32_t *) & isolinux_bin[12]) = file_lba;
/* Set boot file length */
*((uint32_t *) & isolinux_bin[16]) = data->size;
/* Calculate checksum */
checksum = (uint32_t *) & isolinux_bin[20];
chkhead = (uint32_t *) & isolinux_bin[64];
chktail = (uint32_t *) & isolinux_bin[data->size & ~3u];
*checksum = 0;
while (chkhead < chktail)
*checksum += *chkhead++;
/*
* Deal with possible fractional dword at the end;
* this *should* never happen...
*/
if (data->size & 3) {
uint32_t xword = 0;
memcpy(&xword, chkhead, data->size & 3);
*checksum += xword;
}
return 0;
bail:
return -1;
}
/*
* Legacy grub's stage2 chainloading
*/
int manglef_grub(const struct part_iter *iter, struct data_area *data)
{
/* Layout of stage2 file (from byte 0x0 to 0x270) */
struct grub_stage2_patch_area {
/* 0x0 to 0x205 */
char unknown[0x206];
/* 0x206: compatibility version number major */
uint8_t compat_version_major;
/* 0x207: compatibility version number minor */
uint8_t compat_version_minor;
/* 0x208: install_partition variable */
struct {
/* 0x208: sub-partition in sub-partition part2 */
uint8_t part3;
/* 0x209: sub-partition in top-level partition */
uint8_t part2;
/* 0x20a: top-level partiton number */
uint8_t part1;
/* 0x20b: BIOS drive number (must be 0) */
uint8_t drive;
} __attribute__ ((packed)) install_partition;
/* 0x20c: deprecated (historical reason only) */
uint32_t saved_entryno;
/* 0x210: stage2_ID: will always be STAGE2_ID_STAGE2 = 0 in stage2 */
uint8_t stage2_id;
/* 0x211: force LBA */
uint8_t force_lba;
/* 0x212: version string (will probably be 0.97) */
char version_string[5];
/* 0x217: config filename */
char config_file[89];
/* 0x270: start of code (after jump from 0x200) */
char codestart[1];
} __attribute__ ((packed)) *stage2;
if (!(opt.file && opt.grub))
return 0;
if (data->size < sizeof *stage2) {
error("The file specified by grub=<loader> is too small to be stage2 of GRUB Legacy.");
goto bail;
}
stage2 = data->data;
/*
* Check the compatibility version number to see if we loaded a real
* stage2 file or a stage2 file that we support.
*/
if (stage2->compat_version_major != 3
|| stage2->compat_version_minor != 2) {
error("The file specified by grub=<loader> is not a supported stage2 GRUB Legacy binary.");
goto bail;
}
/*
* GRUB Legacy wants the partition number in the install_partition
* variable, located at offset 0x208 of stage2.
* When GRUB Legacy is loaded, it is located at memory address 0x8208.
*
* It looks very similar to the "boot information format" of the
* Multiboot specification:
* http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Boot-information-format
*
* 0x208 = part3: sub-partition in sub-partition part2
* 0x209 = part2: sub-partition in top-level partition
* 0x20a = part1: top-level partition number
* 0x20b = drive: BIOS drive number (must be 0)
*
* GRUB Legacy doesn't store the BIOS drive number at 0x20b, but at
* another location.
*
* Partition numbers always start from zero.
* Unused partition bytes must be set to 0xFF.
*
* We only care about top-level partition, so we only need to change
* "part1" to the appropriate value:
* -1: whole drive (default) (-1 = 0xFF)
* 0-3: primary partitions
* 4-*: logical partitions
*/
stage2->install_partition.part1 = iter->index - 1;
/*
* Grub Legacy reserves 89 bytes (from 0x8217 to 0x826f) for the
* config filename. The filename passed via grubcfg= will overwrite
* the default config filename "/boot/grub/menu.lst".
*/
if (opt.grubcfg) {
if (strlen(opt.grubcfg) >= sizeof stage2->config_file) {
error("The config filename length can't exceed 88 characters.");
goto bail;
}
strcpy((char *)stage2->config_file, opt.grubcfg);
}
return 0;
bail:
return -1;
}
#if 0
/*
* Dell's DRMK chainloading.
*/
int manglef_drmk(struct data_area *data)
{
/*
* DRMK entry is different than MS-DOS/PC-DOS
* A new size, aligned to 16 bytes to ease use of ds:[bp+28].
* We only really need 4 new, usable bytes at the end.
*/
if (!(opt.file && opt.drmk))
return 0;
uint32_t tsize = (data->size + 19) & 0xfffffff0;
const union syslinux_derivative_info *sdi;
uint64_t fs_lba;
sdi = syslinux_derivative_info();
/* We should lookup the Syslinux partition offset and use it */
fs_lba = *sdi->disk.partoffset;
/*
* fs_lba should be verified against the disk as some DRMK
* variants will check and fail if it does not match
*/
dprintf(" fs_lba offset is %d\n", fs_lba);
/* DRMK only uses a DWORD */
if (fs_lba > 0xffffffff) {
error("LBA very large; Only using lower 32 bits; DRMK will probably fail.");
}
opt.regs.ss = opt.regs.fs = opt.regs.gs = 0; /* Used before initialized */
if (!realloc(data->data, tsize)) {
error("Failed to realloc for DRMK.");
goto bail;
}
data->size = tsize;
/* ds:bp is assumed by DRMK to be the boot sector */
/* offset 28 is the FAT HiddenSectors value */
opt.regs.ds = (tsize >> 4) + (opt.fseg - 2);
/* "Patch" into tail of the new space */
*(uint32_t *)((char*)data->data + tsize - 4) = fs_lba;
return 0;
bail:
return -1;
}
#endif
/* Adjust BPB common function */
static int mangle_bpb(const struct part_iter *iter, struct data_area *data, const char *tag)
{
int type = bpb_detect(data->data, tag);
int off = drvoff_detect(type);
/* BPB: hidden sectors 64bit - exFAT only for now */
if (type == bpbEXF)
*(uint64_t *) ((char *)data->data + 0x40) = iter->abs_lba;
/* BPB: hidden sectors 32bit*/
else if (bpbV34 <= type && type <= bpbV70) {
if (iter->abs_lba < ~0u)
*(uint32_t *) ((char *)data->data + 0x1c) = iter->abs_lba;
else
/* won't really help much, but ... */
*(uint32_t *) ((char *)data->data + 0x1c) = ~0u;
/* BPB: hidden sectors 16bit*/
} else if (bpbV30 <= type && type <= bpbV32) {
if (iter->abs_lba < 0xFFFF)
*(uint16_t *) ((char *)data->data + 0x1c) = iter->abs_lba;
else
/* won't really help much, but ... */
*(uint16_t *) ((char *)data->data + 0x1c) = (uint16_t)~0u;
}
/* BPB: legacy geometry */
if (bpbV30 <= type && type <= bpbV70) {
if (iter->di.cbios)
*(uint32_t *)((char *)data->data + 0x18) = (iter->di.head << 16) | iter->di.spt;
else {
if (iter->di.disk & 0x80)
*(uint32_t *)((char *)data->data + 0x18) = 0x00FF003F;
else
*(uint32_t *)((char *)data->data + 0x18) = 0x00020012;
}
}
/* BPB: drive */
if (off >= 0) {
*(uint8_t *)((char *)data->data + off) = (opt.swap ? iter->di.disk & 0x80 : iter->di.disk);
}
return 0;
}
/*
* Adjust BPB of a BPB-compatible file
*/
int manglef_bpb(const struct part_iter *iter, struct data_area *data)
{
if (!(opt.file && opt.filebpb))
return 0;
return mangle_bpb(iter, data, "file");
}
/*
* Adjust BPB of a sector
*/
int mangles_bpb(const struct part_iter *iter, struct data_area *data)
{
if (!(opt.sect && opt.setbpb))
return 0;
return mangle_bpb(iter, data, "sect");
}
/*
* This function performs full BPB patching, analogously to syslinux's
* native BSS.
*/
int manglesf_bss(struct data_area *sec, struct data_area *fil)
{
int type1, type2;
size_t cnt = 0;
if (!(opt.sect && opt.file && opt.bss))
return 0;
type1 = bpb_detect(fil->data, "bss/file");
type2 = bpb_detect(sec->data, "bss/sect");
if (!type1 || !type2) {
error("Couldn't determine the BPB type for option 'bss'.");
goto bail;
}
if (type1 != type2) {
error("Option 'bss' can't be used,\n"
"when a sector and a file have incompatible BPBs.");
goto bail;
}
/* Copy common 2.0 data */
memcpy((char *)fil->data + 0x0B, (char *)sec->data + 0x0B, 0x0D);
/* Copy 3.0+ data */
if (type1 <= bpbV30) {
cnt = 0x06;
} else if (type1 <= bpbV32) {
cnt = 0x08;
} else if (type1 <= bpbV34) {
cnt = 0x0C;
} else if (type1 <= bpbV40) {
cnt = 0x2E;
} else if (type1 <= bpbVNT) {
cnt = 0x3C;
} else if (type1 <= bpbV70) {
cnt = 0x42;
} else if (type1 <= bpbEXF) {
cnt = 0x60;
}
memcpy((char *)fil->data + 0x18, (char *)sec->data + 0x18, cnt);
return 0;
bail:
return -1;
}
/*
* Save sector.
*/
int mangles_save(const struct part_iter *iter, const struct data_area *data, void *org)
{
if (!(opt.sect && opt.save))
return 0;
if (memcmp(org, data->data, data->size)) {
if (disk_write_sectors(&iter->di, iter->abs_lba, data->data, 1)) {
error("Cannot write the updated sector.");
goto bail;
}
/* function can be called again */
memcpy(org, data->data, data->size);
}
return 0;
bail:
return -1;
}
/*
* To boot the Recovery Console of Windows NT/2K/XP we need to write
* the string "cmdcons\0" to memory location 0000:7C03.
* Memory location 0000:7C00 contains the bootsector of the partition.
*/
int mangles_cmldr(struct data_area *data)
{
if (!(opt.sect && opt.cmldr))
return 0;
memcpy((char *)data->data + 3, cmldr_signature, sizeof cmldr_signature);
return 0;
}
/* Set common registers */
int mangler_init(const struct part_iter *iter)
{
/* Set initial registry values */
if (opt.file) {
opt.regs.cs = opt.regs.ds = opt.regs.ss = opt.fseg;
opt.regs.ip = opt.fip;
} else {
opt.regs.cs = opt.regs.ds = opt.regs.ss = opt.sseg;
opt.regs.ip = opt.sip;
}
if (opt.regs.ip == 0x7C00 && !opt.regs.cs)
opt.regs.esp.l = 0x7C00;
/* DOS kernels want the drive number in BL instead of DL. Indulge them. */
opt.regs.ebx.b[0] = opt.regs.edx.b[0] = iter->di.disk;
return 0;
}
/* ds:si & ds:bp */
int mangler_handover(const struct part_iter *iter, const struct data_area *data)
{
if (opt.file && opt.maps && !opt.hptr) {
opt.regs.esi.l = opt.regs.ebp.l = opt.soff;
opt.regs.ds = opt.sseg;
opt.regs.eax.l = 0;
} else if (opt.hand) {
/* base is really 0x7be */
opt.regs.esi.l = opt.regs.ebp.l = data->base;
opt.regs.ds = 0;
if (iter->index && iter->type == typegpt) /* must be iterated and GPT */
opt.regs.eax.l = 0x54504721; /* '!GPT' */
else
opt.regs.eax.l = 0;
}
return 0;
}
/*
* GRLDR of GRUB4DOS wants the partition number in DH:
* -1: whole drive (default)
* 0-3: primary partitions
* 4-*: logical partitions
*/
int mangler_grldr(const struct part_iter *iter)
{
if (opt.grldr)
opt.regs.edx.b[1] = iter->index - 1;
return 0;
}
/*
* try to copy values from temporary iterator, if positions match
*/
static void mbrcpy(struct part_iter *diter, struct part_iter *siter)
{
if (diter->dos.cebr_lba == siter->dos.cebr_lba &&
diter->di.disk == siter->di.disk) {
memcpy(diter->data, siter->data, sizeof(struct disk_dos_mbr));
}
}
static int fliphide(struct part_iter *iter, struct part_iter *miter)
{
struct disk_dos_part_entry *dp;
static const uint16_t mask =
(1 << 0x01) | (1 << 0x04) | (1 << 0x06) |
(1 << 0x07) | (1 << 0x0b) | (1 << 0x0c) | (1 << 0x0e);
uint8_t t;
dp = (struct disk_dos_part_entry *)iter->record;
t = dp->ostype;
if ((t <= 0x1f) && ((mask >> (t & ~0x10u)) & 1)) {
/* It's a hideable partition type */
if (miter->index == iter->index || opt.hide & HIDE_REV)
t &= ~0x10u; /* unhide */
else
t |= 0x10u; /* hide */
}
if (dp->ostype != t) {
dp->ostype = t;
return -1;
}
return 0;
}
/*
* miter - iterator we match against
* hide bits meaning:
* ..| - enable (1) / disable (0)
* .|. - all (1) / pri (0)
* |.. - unhide (1) / hide (0)
*/
int manglepe_hide(struct part_iter *miter)
{
int wb = 0, werr = 0;
struct part_iter *iter = NULL;
int ridx;
if (!(opt.hide & HIDE_ON))
return 0;
if (miter->type != typedos) {
error("Option '[un]hide[all]' works only for legacy (DOS) partition scheme.");
return -1;
}
if (miter->index > 4 && !(opt.hide & HIDE_EXT))
warn("Specified partition is logical, so it can't be unhidden without 'unhideall'.");
if (!(iter = pi_begin(&miter->di, PIF_STEPALL | opt.piflags)))
return -1;
while (!pi_next(iter) && !werr) {
ridx = iter->index0;
if (!(opt.hide & HIDE_EXT) && ridx > 3)
break; /* skip when we're constrained to pri only */
if (iter->index != -1)
wb |= fliphide(iter, miter);
/*
* we have to update mbr and each extended partition, but only if
* changes (wb) were detected and there was no prior write error (werr)
*/
if (ridx >= 3 && wb && !werr) {
mbrcpy(miter, iter);
werr |= disk_write_sectors(&iter->di, iter->dos.cebr_lba, iter->data, 1);
wb = 0;
}
}
if (iter->status < 0)
goto bail;
/* last update */
if (wb && !werr) {
mbrcpy(miter, iter);
werr |= disk_write_sectors(&iter->di, iter->dos.cebr_lba, iter->data, 1);
}
if (werr)
warn("Failed to write E/MBR during '[un]hide[all]'.");
bail:
pi_del(&iter);
return 0;
}
static int updchs(struct part_iter *iter, int ext)
{
struct disk_dos_part_entry *dp;
uint32_t ochs1, ochs2, lba;
dp = (struct disk_dos_part_entry *)iter->record;
if (!ext) {
/* primary or logical */
lba = (uint32_t)iter->abs_lba;
} else {
/* extended */
dp += 1;
lba = iter->dos.nebr_lba;
}
ochs1 = *(uint32_t *)dp->start;
ochs2 = *(uint32_t *)dp->end;
/*
* We have to be a bit more careful here in case of 0 start and/or length;
* start = 0 would be converted to the beginning of the disk (C/H/S =
* 0/0/1) or the [B]EBR, length = 0 would actually set the end CHS to be
* lower than the start CHS.
*
* Both are harmless in case of a hole (and in non-hole case will make
* partiter complain about corrupt layout if PIF_STRICT is set), but it
* makes everything look silly and not really correct.
*
* Thus the approach as seen below.
*/
if (dp->start_lba || iter->index != -1) {
lba2chs(&dp->start, &iter->di, lba, L2C_CADD);
} else {
memset(&dp->start, 0, sizeof dp->start);
}
if ((dp->start_lba || iter->index != -1) && dp->length) {
lba2chs(&dp->end, &iter->di, lba + dp->length - 1, L2C_CADD);
} else {
memset(&dp->end, 0, sizeof dp->end);
}
return
*(uint32_t *)dp->start != ochs1 ||
*(uint32_t *)dp->end != ochs2;
}
/*
* miter - iterator we match against
*/
int manglepe_fixchs(struct part_iter *miter)
{
int wb = 0, werr = 0;
struct part_iter *iter = NULL;
int ridx;
if (!opt.fixchs)
return 0;
if (miter->type != typedos) {
error("Option 'fixchs' works only for legacy (DOS) partition scheme.");
return -1;
}
if (!(iter = pi_begin(&miter->di, PIF_STEPALL | opt.piflags)))
return -1;
while (!pi_next(iter) && !werr) {
ridx = iter->index0;
wb |= updchs(iter, 0);
if (ridx > 3)
wb |= updchs(iter, 1);
/*
* we have to update mbr and each extended partition, but only if
* changes (wb) were detected and there was no prior write error (werr)
*/
if (ridx >= 3 && wb && !werr) {
mbrcpy(miter, iter);
werr |= disk_write_sectors(&iter->di, iter->dos.cebr_lba, iter->data, 1);
wb = 0;
}
}
if (iter->status < 0)
goto bail;
/* last update */
if (wb && !werr) {
mbrcpy(miter, iter);
werr |= disk_write_sectors(&iter->di, iter->dos.cebr_lba, iter->data, 1);
}
if (werr)
warn("Failed to write E/MBR during 'fixchs'.");
bail:
pi_del(&iter);
return 0;
}
/* vim: set ts=8 sts=4 sw=4 noet: */

62
com32/chain/mangle.h Normal file
View File

@ -0,0 +1,62 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
* Copyright 2010 Shao Miller
* Copyright 2010-2015 Michal Soltys
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
#ifndef COM32_CHAIN_MANGLE_H
#define COM32_CHAIN_MANGLE_H
#include "chain.h"
#include "partiter.h"
/* file's manglers */
int manglef_isolinux(struct data_area *data);
int manglef_grub(const struct part_iter *iter, struct data_area *data);
int manglef_bpb(const struct part_iter *iter, struct data_area *data);
/* int manglef_drmk(struct data_area *data);*/
/* sector's manglers */
int mangles_bpb(const struct part_iter *iter, struct data_area *data);
int mangles_save(const struct part_iter *iter, const struct data_area *data, void *org);
int mangles_cmldr(struct data_area *data);
/* sector + file's manglers */
int manglesf_bss(struct data_area *sec, struct data_area *fil);
/* registers' manglers */
int mangler_init(const struct part_iter *iter);
int mangler_handover(const struct part_iter *iter, const struct data_area *data);
int mangler_grldr(const struct part_iter *iter);
/* partition layout's manglers */
int manglepe_fixchs(struct part_iter *miter);
int manglepe_hide(struct part_iter *miter);
#endif
/* vim: set ts=8 sts=4 sw=4 noet: */

444
com32/chain/options.c Normal file
View File

@ -0,0 +1,444 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
* Copyright 2010 Shao Miller
* Copyright 2010-2015 Michal Soltys
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
#include <syslinux/movebits.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "chain.h"
#include "partiter.h"
#include "utility.h"
#include "options.h"
struct options opt;
static int soi_s2n(char *ptr,
addr_t *seg,
addr_t *off,
addr_t *ip,
addr_t def)
{
addr_t segval, offval, ipval, val;
char *p;
/* defaults */
segval = 0;
offval = def;
ipval = def;
segval = strtoul(ptr, &p, 0);
if (p[0] == ':' && p[1] && p[1] != ':')
offval = strtoul(p+1, &p, 0);
if (p[0] == ':' && p[1] && p[1] != ':')
ipval = strtoul(p+1, NULL, 0);
/* verify if load address is within [dosmin, dosmax) */
val = (segval << 4) + offval;
if (val < dosmin || val >= dosmax) {
error("Invalid seg:off:* address specified.");
goto bail;
}
/*
* verify if jump address is within [dosmin, dosmax) and offset is 16bit
* sane
*/
val = (segval << 4) + ipval;
if (ipval > 0xFFFE || val < dosmin || val >= dosmax) {
error("Invalid seg:*:ip address specified.");
goto bail;
}
if (seg)
*seg = segval;
if (off)
*off = offval;
if (ip)
*ip = ipval;
return 0;
bail:
return -1;
}
static void usage(void)
{
size_t i;
static const char *const usage[] = {
"Usage:",
"",
" disk + partition selection:",
" chain.c32 [options]",
" chain.c32 hd#[,#] [options]",
" chain.c32 fd#[,#] [options]",
" chain.c32 mbr=<id>[,#] [options]",
" chain.c32 guid=<guid>[,#] [options]",
" chain.c32 boot[,#] [options]",
"",
" direct partition selection:",
" chain.c32 guid=<guid> [options]",
" chain.c32 label=<label> [options]",
" chain.c32 fs [options]",
"",
"You can use ':' instead of '=' and ' ' instead of ','.",
"The default is 'boot,0'.",
"",
"Options:",
" sect[=<s[:o[:i]]>] Load sector at <s:o>, jump to <s:i>",
" - defaults to 0:0x7C00:0x7C00",
" - omitted o/i values default to 0",
" maps Map loaded sector into real memory",
" setbpb Fix BPB fields in loaded sector",
" filebpb Apply 'setbpb' to loaded file",
" save Write adjusted sector back to disk",
" hand Prepare handover area",
" hptr Force ds:si and ds:bp to point to handover area",
" swap Swap drive numbers, if bootdisk is not fd0/hd0",
" nohide Disable all hide variations (default)",
" hide Hide primary partitions, unhide selected partition",
" hideall Hide *all* partitions, unhide selected partition",
" unhide Unhide primary partitions",
" unhideall Unhide *all* partitions",
" fixchs Walk *all* partitions and fix E/MBRs' CHS values",
" keeppxe Keep the PXE and UNDI stacks in memory (PXELINUX)",
" warn Wait for a keypress to continue chainloading",
" break Don't chainload",
" gpthcrc Perform gpt header crc check",
" gptlcrc Perform gpt list crc check",
" strict[=<0|1|2>] Set the level of strictness in sanity checks",
" - strict w/o any value is the same as strict=2",
" relax The same as strict=0",
" prefmbr On hybrid MBR/GPT disks, prefer legacy layout",
" exit Don't read anything after this keyword",
"",
" file=<file> Load and execute <file>",
" seg=<s[:o[:i]]> Load file at <s:o>, jump to <s:i>",
" - defaults to 0:0x7C00:0x7C00",
" - omitted o/i values default to 0",
" isolinux=<loader> Load another version of ISOLINUX",
" ntldr=<loader> Load Windows NTLDR, SETUPLDR.BIN or BOOTMGR",
" reactos=<loader> Load ReactOS's loader",
" cmldr=<loader> Load Recovery Console of Windows NT/2K/XP/2003",
" freedos=<loader> Load FreeDOS KERNEL.SYS",
" msdos=<loader> Load MS-DOS 2.xx - 6.xx IO.SYS",
" msdos7=<loader> Load MS-DOS 7+ IO.SYS",
" pcdos=<loader> Load PC-DOS IBMBIO.COM",
" drmk=<loader> Load DRMK DELLBIO.BIN",
" grub=<loader> Load GRUB Legacy stage2",
" grubcfg=<config> Set alternative config filename for GRUB Legacy",
" grldr=<loader> Load GRUB4DOS grldr",
" bss=<sectimage> Emulate syslinux's BSS",
" bs=<sectimage> Emulate syslinux's BS",
"",
"Please see doc/chain.txt for the detailed documentation."
};
for (i = 0; i < sizeof(usage)/sizeof(usage[0]); i++) {
if (i % 20 == 19) {
puts("Press any key...");
wait_key();
}
puts(usage[i]);
}
}
void opt_set_defs(void)
{
memset(&opt, 0, sizeof opt);
opt.sect = true; /* by def. load sector */
opt.maps = true; /* by def. map sector */
opt.hand = true; /* by def. prepare handover */
opt.brkchain = false; /* by def. do chainload */
/* strict but ignore disk size, do all gpt crc checks */
opt.piflags = PIF_STRICT | PIF_GPTHCRC | PIF_GPTLCRC;
opt.foff = opt.soff = opt.fip = opt.sip = 0x7C00;
opt.drivename = "boot";
#ifdef DEBUG
opt.warn = true;
#endif
}
int opt_parse_args(int argc, char *argv[])
{
int i;
size_t v;
char *p;
for (i = 1; i < argc; i++) {
if (!strncmp(argv[i], "file=", 5)) {
opt.file = argv[i] + 5;
} else if (!strncmp(argv[i], "exit", 4)) {
break;
} else if (!strcmp(argv[i], "nofile")) {
opt.file = NULL;
} else if (!strncmp(argv[i], "seg=", 4)) {
if (soi_s2n(argv[i] + 4, &opt.fseg, &opt.foff, &opt.fip, 0))
goto bail;
} else if (!strncmp(argv[i], "bss=", 4)) {
opt.file = argv[i] + 4;
opt.bss = true;
opt.maps = false;
opt.setbpb = true;
} else if (!strncmp(argv[i], "bs=", 3)) {
opt.file = argv[i] + 3;
opt.sect = false;
opt.filebpb = true;
} else if (!strncmp(argv[i], "isolinux=", 9)) {
opt.file = argv[i] + 9;
opt.isolinux = true;
opt.hand = false;
opt.sect = false;
} else if (!strncmp(argv[i], "ntldr=", 6)) {
opt.fseg = 0x2000; /* NTLDR wants this address */
opt.foff = 0;
opt.fip = 0;
opt.file = argv[i] + 6;
opt.setbpb = true;
opt.hand = false;
} else if (!strncmp(argv[i], "reactos=", 8)) {
opt.fseg = 0x0F80;
opt.foff = 0;
opt.fip = 0;
opt.file = argv[i] + 8;
opt.setbpb = true;
opt.hand = false;
} else if (!strncmp(argv[i], "cmldr=", 6)) {
opt.fseg = 0x2000; /* CMLDR wants this address */
opt.foff = 0;
opt.fip = 0;
opt.file = argv[i] + 6;
opt.cmldr = true;
opt.setbpb = true;
opt.hand = false;
} else if (!strncmp(argv[i], "freedos=", 8)) {
opt.fseg = 0x60; /* FREEDOS wants this address */
opt.foff = 0;
opt.fip = 0;
opt.sseg = 0x1FE0;
opt.file = argv[i] + 8;
opt.setbpb = true;
opt.hand = false;
} else if ( (v = 6, !strncmp(argv[i], "msdos=", v) ||
!strncmp(argv[i], "pcdos=", v)) ||
(v = 7, !strncmp(argv[i], "msdos7=", v)) ) {
opt.fseg = 0x70; /* MS-DOS 2.00 .. 6.xx wants this address */
opt.foff = 0;
opt.fip = v == 7 ? 0x200 : 0; /* MS-DOS 7.0+ wants this ip */
opt.sseg = 0x8000;
opt.file = argv[i] + v;
opt.setbpb = true;
opt.hand = false;
} else if (!strncmp(argv[i], "drmk=", 5)) {
opt.fseg = 0x70; /* DRMK wants this address */
opt.foff = 0;
opt.fip = 0;
opt.sseg = 0x2000;
opt.soff = 0;
opt.sip = 0;
opt.file = argv[i] + 5;
/* opt.drmk = true; */
opt.setbpb = true;
opt.hand = false;
} else if (!strncmp(argv[i], "grub=", 5)) {
opt.fseg = 0x800; /* stage2 wants this address */
opt.foff = 0;
opt.fip = 0x200;
opt.file = argv[i] + 5;
opt.grub = true;
opt.hand = false;
opt.sect = false;
} else if (!strncmp(argv[i], "grubcfg=", 8)) {
opt.grubcfg = argv[i] + 8;
} else if (!strncmp(argv[i], "grldr=", 6)) {
opt.file = argv[i] + 6;
opt.grldr = true;
opt.hand = false;
opt.sect = false;
} else if (!strcmp(argv[i], "keeppxe")) {
opt.keeppxe = 3;
} else if (!strcmp(argv[i], "nokeeppxe")) {
opt.keeppxe = 0;
} else if (!strcmp(argv[i], "maps")) {
opt.maps = true;
} else if (!strcmp(argv[i], "nomaps")) {
opt.maps = false;
} else if (!strcmp(argv[i], "hand")) {
opt.hand = true;
} else if (!strcmp(argv[i], "nohand")) {
opt.hand = false;
} else if (!strcmp(argv[i], "hptr")) {
opt.hptr = true;
} else if (!strcmp(argv[i], "nohptr")) {
opt.hptr = false;
} else if (!strcmp(argv[i], "swap")) {
opt.swap = true;
} else if (!strcmp(argv[i], "noswap")) {
opt.swap = false;
} else if (!strcmp(argv[i], "nohide")) {
opt.hide = HIDE_OFF;
} else if (!strcmp(argv[i], "hide")) {
opt.hide = HIDE_ON;
opt.piflags |= PIF_STRICT | PIF_STRICTER;
} else if (!strcmp(argv[i], "hideall")) {
opt.hide = HIDE_ON | HIDE_EXT;
opt.piflags |= PIF_STRICT | PIF_STRICTER;
} else if (!strcmp(argv[i], "unhide")) {
opt.hide = HIDE_ON | HIDE_REV;
opt.piflags |= PIF_STRICT | PIF_STRICTER;
} else if (!strcmp(argv[i], "unhideall")) {
opt.hide = HIDE_ON | HIDE_EXT | HIDE_REV;
opt.piflags |= PIF_STRICT | PIF_STRICTER;
} else if (!strcmp(argv[i], "setbpb")) {
opt.setbpb = true;
} else if (!strcmp(argv[i], "nosetbpb")) {
opt.setbpb = false;
} else if (!strcmp(argv[i], "filebpb")) {
opt.filebpb = true;
} else if (!strcmp(argv[i], "nofilebpb")) {
opt.filebpb = false;
} else if (!strncmp(argv[i], "sect=", 5) ||
!strcmp(argv[i], "sect")) {
if (argv[i][4]) {
if (soi_s2n(argv[i] + 5, &opt.sseg, &opt.soff, &opt.sip, 0))
goto bail;
}
opt.sect = true;
} else if (!strcmp(argv[i], "nosect")) {
opt.sect = false;
opt.maps = false;
} else if (!strcmp(argv[i], "save")) {
opt.save = true;
opt.piflags |= PIF_STRICT | PIF_STRICTER;
} else if (!strcmp(argv[i], "nosave")) {
opt.save = false;
} else if (!strcmp(argv[i], "fixchs")) {
opt.fixchs = true;
opt.piflags |= PIF_STRICT | PIF_STRICTER;
} else if (!strcmp(argv[i], "nofixchs")) {
opt.fixchs = false;
} else if (!strcmp(argv[i], "relax") || !strcmp(argv[i], "nostrict")) {
opt.piflags &= ~(PIF_STRICT | PIF_STRICTER);
} else if (!strcmp(argv[i], "norelax") || !strcmp(argv[i], "strict")) {
opt.piflags |= PIF_STRICT | PIF_STRICTER;
} else if (!strncmp(argv[i], "strict=", 7)) {
if (argv[i][7] < '0' || argv[i][7] > '2' || !argv[i][8]) {
error("Strict level must be 0, 1 or 2.");
goto bail;
}
opt.piflags &= ~(PIF_STRICT | PIF_STRICTER);
switch (argv[i][7]) {
case '2': opt.piflags |= PIF_STRICTER;
case '1': opt.piflags |= PIF_STRICT; break;
default:;
}
} else if (!strcmp(argv[i], "gpthcrc")) {
opt.piflags |= PIF_GPTHCRC;
} else if (!strcmp(argv[i], "nogpthcrc")) {
opt.piflags &= ~PIF_GPTHCRC;
} else if (!strcmp(argv[i], "gptlcrc")) {
opt.piflags |= PIF_GPTLCRC;
} else if (!strcmp(argv[i], "nogptlcrc")) {
opt.piflags &= ~PIF_GPTLCRC;
} else if (!strcmp(argv[i], "warn")) {
opt.warn = true;
} else if (!strcmp(argv[i], "nowarn")) {
opt.warn = false;
} else if (!strcmp(argv[i], "prefmbr")) {
opt.piflags |= PIF_PREFMBR;
} else if (!strcmp(argv[i], "noprefmbr")) {
opt.piflags &= ~PIF_PREFMBR;
} else if (!strcmp(argv[i], "nobreak")) {
opt.brkchain = false;
} else if (!strcmp(argv[i], "break")) {
opt.brkchain = true;
opt.file = NULL;
opt.maps = false;
opt.hand = false;
} else if (((argv[i][0] == 'h' || argv[i][0] == 'f')
&& argv[i][1] == 'd')
|| !strncmp(argv[i], "mbr:", 4)
|| !strncmp(argv[i], "mbr=", 4)
|| !strncmp(argv[i], "guid:", 5)
|| !strncmp(argv[i], "guid=", 5)
|| !strncmp(argv[i], "label:", 6)
|| !strncmp(argv[i], "label=", 6)
|| !strcmp(argv[i], "boot")
|| !strncmp(argv[i], "boot,", 5)
|| !strcmp(argv[i], "fs")) {
opt.drivename = argv[i];
if (strncmp(argv[i], "label", 5))
p = strchr(opt.drivename, ',');
else
p = NULL;
if (p) {
*p = '\0';
opt.partition = p + 1;
} else if (argv[i + 1] && argv[i + 1][0] >= '0'
&& argv[i + 1][0] <= '9') {
opt.partition = argv[++i];
}
} else {
usage();
goto bail;
}
}
if (opt.grubcfg && !opt.grub) {
error("grubcfg=<filename> must be used together with grub=<loader>.");
goto bail;
}
if (opt.filebpb && !opt.file) {
error("Option 'filebpb' requires a file.");
goto bail;
}
if (opt.save && !opt.sect) {
error("Option 'save' requires a sector.");
goto bail;
}
if (opt.setbpb && !opt.sect) {
error("Option 'setbpb' requires a sector.");
goto bail;
}
if (opt.maps && !opt.sect) {
error("Option 'maps' requires a sector.");
goto bail;
}
return 0;
bail:
return -1;
}
/* vim: set ts=8 sts=4 sw=4 noet: */

81
com32/chain/options.h Normal file
View File

@ -0,0 +1,81 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
* Copyright 2010 Shao Miller
* Copyright 2010-2015 Michal Soltys
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
#ifndef COM32_CHAIN_OPTIONS_H
#define COM32_CHAIN_OPTIONS_H
#include <stdint.h>
#include <syslinux/bootrm.h>
#include <syslinux/movebits.h>
enum {HIDE_OFF = 0, HIDE_ON = 1, HIDE_EXT = 2, HIDE_REV = 4};
struct options {
const char *drivename;
const char *partition;
const char *file;
const char *grubcfg;
addr_t fseg;
addr_t foff;
addr_t fip;
addr_t sseg;
addr_t soff;
addr_t sip;
int hide;
int piflags;
uint16_t keeppxe;
bool isolinux;
bool cmldr;
bool drmk;
bool grub;
bool grldr;
bool maps;
bool hand;
bool hptr;
bool swap;
bool sect;
bool save;
bool bss;
bool setbpb;
bool filebpb;
bool fixchs;
bool warn;
bool brkchain;
struct syslinux_rm_regs regs;
};
extern struct options opt;
void opt_set_defs(void);
int opt_parse_args(int argc, char *argv[]);
#endif
/* vim: set ts=8 sts=4 sw=4 noet: */

726
com32/chain/partiter.c Normal file
View File

@ -0,0 +1,726 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
* Copyright 2010 Shao Miller
* Copyright 2010-2015 Michal Soltys
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
/*
* partiter.c
*
* Provides disk / partition iteration.
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <zlib.h>
#include <syslinux/disk.h>
#include "partiter.h"
#include "utility.h"
#define ost_is_ext(type) ((type) == 0x05 || (type) == 0x0F || (type) == 0x85)
#define ost_is_nondata(type) (ost_is_ext(type) || (type) == 0x00)
#define sane(s,l) ((s)+(l) > (s))
/* virtual forwards */
static void pi_dtor_(struct part_iter *);
static int pi_next_(struct part_iter *);
static int pi_dos_next(struct part_iter *);
static int pi_gpt_next(struct part_iter *);
/* vtab and types */
static struct itertype types[] = {
[0] = {
.dtor = &pi_dtor_,
.next = &pi_dos_next,
}, [1] = {
.dtor = &pi_dtor_,
.next = &pi_gpt_next,
}, [2] = {
.dtor = &pi_dtor_,
.next = &pi_next_,
}};
const struct itertype * const typedos = types;
const struct itertype * const typegpt = types+1;
const struct itertype * const typeraw = types+2;
/* pi_dtor_() - common/raw iterator cleanup */
static void pi_dtor_(struct part_iter *iter)
{
/* syslinux's free is null resilient */
free(iter->data);
}
/* pi_ctor() - common/raw iterator initialization */
static int pi_ctor(struct part_iter *iter,
const struct disk_info *di, int flags
)
{
memcpy(&iter->di, di, sizeof *di);
iter->flags = flags;
iter->index0 = -1;
iter->length = di->lbacnt;
iter->type = typeraw;
return 0;
}
/* pi_dos_ctor() - MBR/EBR iterator specific initialization */
static int pi_dos_ctor(struct part_iter *iter,
const struct disk_info *di, int flags,
const struct disk_dos_mbr *mbr
)
{
if (pi_ctor(iter, di, flags))
return -1;
if (!(iter->data = malloc(sizeof *mbr))) {
critm();
goto bail;
}
memcpy(iter->data, mbr, sizeof *mbr);
iter->dos.bebr_index0 = -1;
iter->dos.disk_sig = mbr->disk_sig;
iter->type = typedos;
return 0;
bail:
pi_dtor_(iter);
return -1;
}
/* pi_gpt_ctor() - GPT iterator specific initialization */
static int pi_gpt_ctor(struct part_iter *iter,
const struct disk_info *di, int flags,
const struct disk_gpt_header *gpth, const struct disk_gpt_part_entry *gptl
)
{
uint64_t siz;
if (pi_ctor(iter, di, flags))
return -1;
siz = (uint64_t)gpth->part_count * gpth->part_size;
if (!(iter->data = malloc((size_t)siz))) {
critm();
goto bail;
}
memcpy(iter->data, gptl, (size_t)siz);
iter->gpt.pe_count = (int)gpth->part_count;
iter->gpt.pe_size = (int)gpth->part_size;
iter->gpt.ufirst = gpth->lba_first_usable;
iter->gpt.ulast = gpth->lba_last_usable;
memcpy(&iter->gpt.disk_guid, &gpth->disk_guid, sizeof gpth->disk_guid);
memcpy(&iter->gpt.part_guid, &gpth->disk_guid, sizeof gpth->disk_guid);
iter->type = typegpt;
return 0;
bail:
pi_dtor_(iter);
return -1;
}
/* Logical partition must be sane, meaning:
* - must be data or empty
* - must have non-0 start and length
* - values must not wrap around 32bit
* - must be inside current EBR frame
*/
static int notsane_logical(const struct part_iter *iter)
{
const struct disk_dos_part_entry *dp;
uint32_t end_log;
dp = ((struct disk_dos_mbr *)iter->data)->table;
if (!dp[0].ostype)
return 0;
if (ost_is_ext(dp[0].ostype)) {
error("The 1st EBR entry must be data or empty.");
return -1;
}
if (!(iter->flags & PIF_STRICT))
return 0;
end_log = dp[0].start_lba + dp[0].length;
if (!dp[0].start_lba ||
!dp[0].length ||
!sane(dp[0].start_lba, dp[0].length) ||
end_log > iter->dos.nebr_siz) {
error("Logical partition (in EBR) with invalid offset and/or length.");
return -1;
}
return 0;
}
/* Extended partition must be sane, meaning:
* - must be extended or empty
* - must have non-0 start and length
* - values must not wrap around 32bit
* - must be inside base EBR frame
*/
static int notsane_extended(const struct part_iter *iter)
{
const struct disk_dos_part_entry *dp;
uint32_t end_ebr;
dp = ((struct disk_dos_mbr *)iter->data)->table;
if (!dp[1].ostype)
return 0;
if (!ost_is_nondata(dp[1].ostype)) {
error("The 2nd EBR entry must be extended or empty.");
return -1;
}
if (!(iter->flags & PIF_STRICT))
return 0;
end_ebr = dp[1].start_lba + dp[1].length;
if (!dp[1].start_lba ||
!dp[1].length ||
!sane(dp[1].start_lba, dp[1].length) ||
end_ebr > iter->dos.bebr_siz) {
error("Extended partition (EBR) with invalid offset and/or length.");
return -1;
}
return 0;
}
/* Primary partition must be sane, meaning:
* - must have non-0 start and length
* - values must not wrap around 32bit
*/
static int notsane_primary(const struct part_iter *iter)
{
const struct disk_dos_part_entry *dp;
dp = ((struct disk_dos_mbr *)iter->data)->table + iter->index0;
if (!dp->ostype)
return 0;
if (!(iter->flags & PIF_STRICT))
return 0;
if (!dp->start_lba ||
!dp->length ||
!sane(dp->start_lba, dp->length) ||
((iter->flags & PIF_STRICTER) && (dp->start_lba + dp->length > iter->di.lbacnt))) {
error("Primary partition (in MBR) with invalid offset and/or length.");
return -1;
}
return 0;
}
static int notsane_gpt(const struct part_iter *iter)
{
const struct disk_gpt_part_entry *gp;
gp = (const struct disk_gpt_part_entry *)
(iter->data + iter->index0 * iter->gpt.pe_size);
if (guid_is0(&gp->type))
return 0;
if (!(iter->flags & PIF_STRICT))
return 0;
if (gp->lba_first < iter->gpt.ufirst ||
gp->lba_last > iter->gpt.ulast) {
error("LBA sectors of GPT partition are beyond the range allowed in GPT header.");
return -1;
}
return 0;
}
static int dos_next_mbr(struct part_iter *iter, uint32_t *lba,
struct disk_dos_part_entry **_dp)
{
struct disk_dos_part_entry *dp;
while (++iter->index0 < 4) {
dp = ((struct disk_dos_mbr *)iter->data)->table + iter->index0;
if (notsane_primary(iter)) {
iter->status = PI_INSANE;
return -1;
}
if (ost_is_ext(dp->ostype)) {
if (iter->dos.bebr_index0 >= 0) {
error("More than 1 extended partition.");
iter->status = PI_INSANE;
return -1;
}
/* record base EBR index */
iter->dos.bebr_index0 = iter->index0;
}
if (!ost_is_nondata(dp->ostype) || (iter->flags & PIF_STEPALL)) {
*lba = dp->start_lba;
*_dp = dp;
break;
}
}
return 0;
}
static int prep_base_ebr(struct part_iter *iter)
{
struct disk_dos_part_entry *dp;
if (iter->dos.bebr_index0 < 0) /* if we don't have base extended partition at all */
return -1;
else if (!iter->dos.bebr_lba) { /* if not initialized yet */
dp = ((struct disk_dos_mbr *)iter->data)->table + iter->dos.bebr_index0;
iter->dos.bebr_lba = dp->start_lba;
iter->dos.bebr_siz = dp->length;
iter->dos.nebr_lba = dp->start_lba;
iter->dos.nebr_siz = dp->length;
iter->index0--;
}
return 0;
}
static int dos_next_ebr(struct part_iter *iter, uint32_t *lba,
struct disk_dos_part_entry **_dp)
{
struct disk_dos_part_entry *dp;
if (prep_base_ebr(iter) < 0) {
iter->status = PI_DONE;
return -1;
}
while (++iter->index0 < 1024 && iter->dos.nebr_lba) {
free(iter->data);
if (!(iter->data =
disk_read_sectors(&iter->di, iter->dos.nebr_lba, 1))) {
error("Couldn't load EBR.");
iter->status = PI_ERRLOAD;
return -1;
}
/* check sanity of loaded data */
if (notsane_logical(iter) || notsane_extended(iter)) {
iter->status = PI_INSANE;
return -1;
}
dp = ((struct disk_dos_mbr *)iter->data)->table;
iter->dos.cebr_lba = iter->dos.nebr_lba;
iter->dos.cebr_siz = iter->dos.nebr_siz;
/* setup next frame values */
if (dp[1].ostype) {
iter->dos.nebr_lba = iter->dos.bebr_lba + dp[1].start_lba;
iter->dos.nebr_siz = dp[1].length;
} else {
iter->dos.nebr_lba = 0;
iter->dos.nebr_siz = 0;
}
if (!dp[0].ostype)
iter->dos.logskipcnt++;
if (dp[0].ostype || (iter->flags & PIF_STEPALL)) {
*lba = dp[0].start_lba ? iter->dos.cebr_lba + dp[0].start_lba : 0;
*_dp = dp;
return 0;
}
/*
* This way it's possible to continue, if some crazy soft left a "hole"
* - EBR with a valid extended partition without a logical one. In
* such case, linux will not reserve a number for such hole - so we
* don't increase index0. If PIF_STEPALL flag is set, we will never
* reach this place.
*/
}
iter->status = PI_DONE;
return -1;
}
static void gpt_conv_label(struct part_iter *iter)
{
const struct disk_gpt_part_entry *gp;
const int16_t *orig_lab;
gp = (const struct disk_gpt_part_entry *)
(iter->data + iter->index0 * iter->gpt.pe_size);
orig_lab = (const int16_t *)gp->name;
/* caveat: this is very crude conversion */
for (int i = 0; i < PI_GPTLABSIZE/2; i++) {
iter->gpt.part_label[i] = (char)orig_lab[i];
}
iter->gpt.part_label[PI_GPTLABSIZE/2] = 0;
}
static inline int valid_crc(uint32_t crc, const uint8_t *buf, unsigned int siz)
{
return crc == crc32(crc32(0, NULL, 0), buf, siz);
}
static int valid_crc_gpth(struct disk_gpt_header *gh, int flags)
{
uint32_t crc, crcc;
if (!(flags & PIF_GPTHCRC))
return 1;
crc = gh->chksum;
gh->chksum = 0;
crcc = crc32(crc32(0, NULL, 0), (const uint8_t *)gh, gh->hdr_size);
gh->chksum = crc;
return crc == crcc;
}
static int valid_crc_gptl(const struct disk_gpt_header *gh, const struct disk_gpt_part_entry *gl, int flags)
{
uint32_t crcc;
if (!(flags & PIF_GPTLCRC))
return 1;
crcc = crc32(crc32(0, NULL, 0), (const uint8_t *)gl, gh->part_size * gh->part_count);
return gh->table_chksum == crcc;
}
static int pi_next_(struct part_iter *iter)
{
iter->status = PI_DONE;
return iter->status;
}
static int pi_dos_next(struct part_iter *iter)
{
uint32_t abs_lba = 0;
struct disk_dos_part_entry *dos_part = NULL;
if (iter->status)
return iter->status;
/* look for primary partitions */
if (iter->index0 < 4 &&
dos_next_mbr(iter, &abs_lba, &dos_part) < 0)
return iter->status;
/* look for logical partitions */
if (iter->index0 >= 4 &&
dos_next_ebr(iter, &abs_lba, &dos_part) < 0)
return iter->status;
/*
* note special index handling:
* in case PIF_STEPALL is set - this makes the index consistent with
* non-PIF_STEPALL iterators
*/
if (!dos_part->ostype)
iter->index = -1;
else
iter->index = iter->index0 + 1 - iter->dos.logskipcnt;
iter->abs_lba = abs_lba;
iter->length = dos_part->length;
iter->record = (char *)dos_part;
#ifdef DEBUG
disk_dos_part_dump(dos_part);
#endif
return iter->status;
}
static int pi_gpt_next(struct part_iter *iter)
{
const struct disk_gpt_part_entry *gpt_part = NULL;
if (iter->status)
return iter->status;
while (++iter->index0 < iter->gpt.pe_count) {
gpt_part = (const struct disk_gpt_part_entry *)
(iter->data + iter->index0 * iter->gpt.pe_size);
if (notsane_gpt(iter)) {
iter->status = PI_INSANE;
return iter->status;
}
if (!guid_is0(&gpt_part->type) || (iter->flags & PIF_STEPALL))
break;
}
/* no more partitions ? */
if (iter->index0 == iter->gpt.pe_count) {
iter->status = PI_DONE;
return iter->status;
}
/* gpt_part is guaranteed to be valid here */
iter->index = iter->index0 + 1;
iter->abs_lba = gpt_part->lba_first;
iter->length = gpt_part->lba_last - gpt_part->lba_first + 1;
iter->record = (char *)gpt_part;
memcpy(&iter->gpt.part_guid, &gpt_part->uid, sizeof(struct guid));
gpt_conv_label(iter);
#ifdef DEBUG
disk_gpt_part_dump(gpt_part);
#endif
return iter->status;
}
static struct part_iter *pi_alloc(void)
{
struct part_iter *iter;
if (!(iter = malloc(sizeof *iter)))
critm();
else
memset(iter, 0, sizeof *iter);
return iter;
}
/* pi_del() - delete iterator */
void pi_del(struct part_iter **_iter)
{
if(!_iter || !*_iter)
return;
pi_dtor(*_iter);
free(*_iter);
*_iter = NULL;
}
static int notsane_gpt_hdr(const struct disk_info *di, const struct disk_gpt_header *gpth, int flags)
{
uint64_t gpt_loff; /* offset to GPT partition list in sectors */
uint64_t gpt_lsiz; /* size of GPT partition list in bytes */
uint64_t gpt_lcnt; /* size of GPT partition in sectors */
uint64_t gpt_sec; /* secondary gpt header */
if (!(flags & PIF_STRICT))
return 0;
if (gpth->lba_alt < gpth->lba_cur)
gpt_sec = gpth->lba_cur;
else
gpt_sec = gpth->lba_alt;
gpt_loff = gpth->lba_table;
gpt_lsiz = (uint64_t)gpth->part_size * gpth->part_count;
gpt_lcnt = (gpt_lsiz + di->bps - 1) / di->bps;
/*
* disk_read_sectors allows reading of max 255 sectors, so we use
* it as a sanity check base. EFI doesn't specify max (AFAIK).
*/
if (gpt_loff < 2 || !gpt_lsiz || gpt_lcnt > 255u ||
gpth->lba_first_usable > gpth->lba_last_usable ||
!sane(gpt_loff, gpt_lcnt) ||
(gpt_loff + gpt_lcnt > gpth->lba_first_usable && gpt_loff <= gpth->lba_last_usable) ||
gpt_loff + gpt_lcnt > gpt_sec ||
((flags & PIF_STRICTER) && (gpt_sec >= di->lbacnt)) ||
gpth->part_size < sizeof(struct disk_gpt_part_entry))
return -1;
return 0;
}
static void try_gpt_we(const char *str, int sec)
{
if (sec)
error(str);
else
warn(str);
}
static struct disk_gpt_header *try_gpt_hdr(const struct disk_info *di, int sec, int flags)
{
const char *desc = sec ? "backup" : "primary";
uint64_t gpt_cur = sec ? di->lbacnt - 1 : 1;
struct disk_gpt_header *gpth;
char errbuf[96];
gpth = disk_read_sectors(di, gpt_cur, 1);
if (!gpth) {
sprintf(errbuf, "Unable to read %s GPT header.", desc);
goto out;
}
if(!valid_crc_gpth(gpth, flags)) {
sprintf(errbuf, "Invalid checksum of %s GPT header.", desc);
goto out;
}
if(notsane_gpt_hdr(di, gpth, flags)) {
sprintf(errbuf, "Checksum of %s GPT header is valid, but values fail sanity checks.", desc);
goto out;
}
return gpth;
out:
try_gpt_we(errbuf, sec);
free(gpth);
return NULL;
}
static struct disk_gpt_part_entry *try_gpt_list(const struct disk_info *di, const struct disk_gpt_header *gpth, int alt, int flags)
{
int pri = gpth->lba_cur < gpth->lba_alt;
const char *desc = alt ? "alternative" : "main";
struct disk_gpt_part_entry *gptl;
char errbuf[64];
uint32_t gpt_lcnt; /* size of GPT partition in sectors */
uint64_t gpt_loff; /* offset to GPT partition list in sectors */
gpt_lcnt = (gpth->part_size * gpth->part_count + di->bps - 1) / di->bps;
if (!alt) {
/* prefer header value for partition table if not asking for alternative */
gpt_loff = gpth->lba_table;
} else {
/* try to read alternative, we have to calculate its position */
if (!pri)
gpt_loff = gpth->lba_alt + 1;
else
gpt_loff = gpth->lba_alt - gpt_lcnt;
}
gptl = disk_read_sectors(di, gpt_loff, gpt_lcnt);
if (!gptl) {
sprintf(errbuf, "Unable to read %s GPT partition list.", desc);
goto out;
}
if (!valid_crc_gptl(gpth, gptl, flags)) {
sprintf(errbuf, "Invalid checksum of %s GPT partition list.", desc);
goto out;
}
return gptl;
out:
try_gpt_we(errbuf, alt);
free(gptl);
return NULL;
}
/* pi_begin() - validate and and get proper iterator for a disk described by di */
struct part_iter *pi_begin(const struct disk_info *di, int flags)
{
int isgpt = 0, ret = -1;
struct part_iter *iter;
struct disk_dos_mbr *mbr = NULL;
struct disk_gpt_header *gpth = NULL;
struct disk_gpt_part_entry *gptl = NULL;
/* Preallocate iterator */
if (!(iter = pi_alloc()))
goto out;
/* Read MBR */
if (!(mbr = disk_read_sectors(di, 0, 1))) {
error("Unable to read the first disk sector.");
goto out;
}
/* Check for MBR magic */
if (mbr->sig != disk_mbr_sig_magic) {
warn("No MBR magic, treating disk as raw.");
/* looks like RAW */
ret = pi_ctor(iter, di, flags);
goto out;
}
/* Check for GPT protective MBR */
for (size_t i = 0; i < 4; i++)
isgpt |= (mbr->table[i].ostype == 0xEE);
isgpt = isgpt && !(flags & PIF_PREFMBR);
/* Try to read GPT header */
if (isgpt) {
gpth = try_gpt_hdr(di, 0, flags);
if (!gpth)
/*
* this read might fail if bios reports different disk size (different vm/pc)
* not much we can do here to avoid it
*/
gpth = try_gpt_hdr(di, 1, flags);
if (!gpth)
goto out;
}
if (gpth && gpth->rev.uint32 == 0x00010000 &&
!memcmp(gpth->sig, disk_gpt_sig_magic, sizeof gpth->sig)) {
/* looks like GPT v1.0 */
#ifdef DEBUG
dprintf("Looks like a GPT v1.0 disk.\n");
disk_gpt_header_dump(gpth);
#endif
gptl = try_gpt_list(di, gpth, 0, flags);
if (!gptl)
gptl = try_gpt_list(di, gpth, 1, flags);
if (!gptl)
goto out;
/* looks like GPT */
ret = pi_gpt_ctor(iter, di, flags, gpth, gptl);
} else {
/* looks like MBR */
ret = pi_dos_ctor(iter, di, flags, mbr);
}
out:
if (ret < 0) {
free(iter);
iter = NULL;
}
free(mbr);
free(gpth);
free(gptl);
return iter;
}
/* vim: set ts=8 sts=4 sw=4 noet: */

119
com32/chain/partiter.h Normal file
View File

@ -0,0 +1,119 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
* Copyright 2010 Shao Miller
* Copyright 2010-2015 Michal Soltys
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
/*
* partiter.h
*
* Provides disk / partition iteration.
*/
#ifndef COM32_CHAIN_PARTITER_H
#define COM32_CHAIN_PARTITER_H
#include <stdint.h>
#include <syslinux/disk.h>
/* status */
enum {PI_ERRLOAD = -31, PI_INSANE, PI_OK = 0, PI_DONE};
/* flags */
enum {PIF_STEPALL = 1, PIF_PREFMBR = 2, PIF_STRICT = 4, PIF_STRICTER = 8, PIF_GPTHCRC = 16, PIF_GPTLCRC = 32};
struct itertype;
struct part_iter;
struct itertype {
void (*dtor)(struct part_iter *);
int (*next)(struct part_iter *);
};
#define PI_GPTLABSIZE ((int)sizeof(((struct disk_gpt_part_entry *)0)->name))
struct part_iter {
const struct itertype *type;
char *data;
char *record;
uint64_t abs_lba;
uint64_t length;
int index0; /* including holes, from -1 (disk, then parts from 0) */
int index; /* excluding holes, from 0 (disk, then parts from 1), -1 means hole, if PIF_STEPALL is set */
int flags; /* flags, see #defines above */
int status; /* current status, see enums above */
struct disk_info di;
union {
struct {
uint32_t disk_sig; /* 32bit disk signature as stored in MBR */
uint32_t bebr_lba; /* absolute lba of base extended partition */
uint32_t bebr_siz; /* size of base extended partition */
uint32_t cebr_lba; /* absolute lba of curr ext. partition */
uint32_t cebr_siz; /* size of curr ext. partition */
uint32_t nebr_lba; /* absolute lba of next ext. partition */
uint32_t nebr_siz; /* size of next ext. partition */
int bebr_index0; /* index of (0-3) of base ext. part., -1 if not present in MBR */
int logskipcnt; /* how many logical holes were skipped */
} dos;
struct {
struct guid disk_guid;
struct guid part_guid;
char part_label[PI_GPTLABSIZE/2+1];
int pe_count;
int pe_size;
uint64_t ufirst;
uint64_t ulast;
} gpt;
};
};
extern const struct itertype * const typedos;
extern const struct itertype * const typegpt;
extern const struct itertype * const typeraw;
struct part_iter *pi_begin(const struct disk_info *, int flags);
void pi_del(struct part_iter **);
/* inline virtuals */
static inline int pi_next(struct part_iter *iter)
{
return iter->type->next(iter);
}
static inline void pi_dtor(struct part_iter *iter)
{
iter->type->dtor(iter);
}
#endif
/* vim: set ts=8 sts=4 sw=4 noet: */

256
com32/chain/utility.c Normal file
View File

@ -0,0 +1,256 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
* Copyright 2010 Shao Miller
* Copyright 2010-2015 Michal Soltys
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
#include <com32.h>
#include <fcntl.h>
#include <stdint.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <fs.h>
#include <syslinux/disk.h>
#include <syslinux/pmapi.h>
#include "utility.h"
static const char *bpbtypes[] = {
[0] = "unknown",
[1] = "2.0",
[2] = "3.0",
[3] = "3.2",
[4] = "3.4",
[5] = "4.0",
[6] = "8.0 (NT+)",
[7] = "7.0",
[8] = "exFAT",
};
void wait_key(void)
{
int cnt;
char junk;
/* drain */
do {
errno = 0;
cnt = read(0, &junk, 1);
} while (cnt > 0 || (cnt < 0 && errno == EAGAIN));
/* wait */
do {
errno = 0;
cnt = read(0, &junk, 1);
} while (!cnt || (cnt < 0 && errno == EAGAIN));
}
int guid_is0(const struct guid *guid)
{
return
!(guid->data1 ||
guid->data2 ||
guid->data3 ||
guid->data4);
}
/*
* mode explanation:
*
* cnul - "strict" mode, never returning higher value than obtained from cbios
* cadd - if the disk is larger than reported geometry /and/ if the geometry has
* less cylinders than 1024 - it means that the total size is somewhere
* between cs and cs+1; in this particular case, we bump the cs to be able
* to return matching chs triplet
* cmax - assume we can use any cylinder value
*
* by default cadd seems most reasonable, giving consistent results with e.g.
* sfdisk's behavior
*/
void lba2chs(disk_chs *dst, const struct disk_info *di, uint64_t lba, int mode)
{
uint32_t c, h, s, t;
uint32_t cs, hs, ss;
/*
* Not much reason here, but if we have no valid CHS geometry, we assume
* "typical" ones to have something to return.
*/
if (di->cbios) {
cs = di->cyl;
hs = di->head;
ss = di->spt;
if (mode == L2C_CADD) {
if (cs < 1024 && di->lbacnt > cs*hs*ss)
cs++;
} else if (mode == L2C_CMAX)
cs = 1024;
} else {
if (di->disk & 0x80) {
cs = 1024;
hs = 255;
ss = 63;
} else {
cs = 80;
hs = 2;
ss = 18;
}
}
if (lba >= cs*hs*ss) {
s = ss;
h = hs - 1;
c = cs - 1;
} else {
s = (lba % ss) + 1;
t = lba / ss;
h = t % hs;
c = t / hs;
}
(*dst)[0] = h;
(*dst)[1] = s | ((c & 0x300) >> 2);
(*dst)[2] = c;
}
uint32_t get_file_lba(const char *filename)
{
struct com32_filedata fd;
uint32_t lba = 0;
int size = 65536;
char *buf;
buf = lmalloc(size);
if (!buf)
return 0;
/* Put the filename in the bounce buffer */
strlcpy(buf, filename, size);
if (open_file(buf, O_RDONLY, &fd) <= 0) {
goto fail; /* Filename not found */
}
/* Since the first member is the LBA, we simply cast */
lba = *((uint32_t *) MK_PTR(0, fd.handle));
/* Call comapi_close() to free the structure */
close_file(fd.handle);
fail:
lfree(buf);
return lba;
}
/* drive offset detection */
int drvoff_detect(int type)
{
if (bpbV40 <= type && type <= bpbVNT) {
return 0x24;
} else if (type == bpbV70) {
return 0x40;
} else if (type == bpbEXF) {
return 0x6F;
}
return -1;
}
/*
* heuristics could certainly be improved
*/
int bpb_detect(const uint8_t *sec, const char *tag)
{
int a, b, c, jmp = -1, rev = 0;
/* exFAT mess first (media descriptor is 0 here) */
if (!memcmp(sec + 0x03, "EXFAT ", 8)) {
rev = bpbEXF;
goto out;
}
/* media descriptor check */
if ((sec[0x15] & 0xF0) != 0xF0)
goto out;
if (sec[0] == 0xEB) /* jump short */
jmp = 2 + *(int8_t *)(sec + 1);
else if (sec[0] == 0xE9) /* jump near */
jmp = 3 + *(int16_t *)(sec + 1);
if (jmp < 0) /* no boot code at all ? */
goto nocode;
/* sanity */
if (jmp < 0x18 || jmp > 0x1F0)
goto out;
/* detect by jump */
if (jmp >= 0x18 && jmp < 0x1E)
rev = bpbV20;
else if (jmp >= 0x1E && jmp < 0x20)
rev = bpbV30;
else if (jmp >= 0x20 && jmp < 0x24)
rev = bpbV32;
else if (jmp >= 0x24 && jmp < 0x46)
rev = bpbV34;
/* TODO: some better V2 - V3.4 checks ? */
if (rev)
goto out;
/*
* BPB info:
* 2.0 == 0x0B - 0x17
* 3.0 == 2.0 + 0x18 - 0x1D
* 3.2 == 3.0 + 0x1E - 0x1F
* 3.4 ==!2.0 + 0x18 - 0x23
* 4.0 == 3.4 + 0x24 - 0x45
* NT ==~3.4 + 0x24 - 0x53
* 7.0 == 3.4 + 0x24 - 0x59
*/
nocode:
a = memcmp(sec + 0x03, "NTFS", 4);
b = memcmp(sec + 0x36, "FAT", 3);
c = memcmp(sec + 0x52, "FAT", 3); /* ext. DOS 7+ bs */
if ((sec[0x26] & 0xFE) == 0x28 && !b) {
rev = bpbV40;
} else if (sec[0x26] == 0x80 && !a) {
rev = bpbVNT;
} else if ((sec[0x42] & 0xFE) == 0x28 && !c) {
rev = bpbV70;
}
out:
printf("BPB detection (%s): %s\n", tag, bpbtypes[rev]);
return rev;
}
/* vim: set ts=8 sts=4 sw=4 noet: */

75
com32/chain/utility.h Normal file
View File

@ -0,0 +1,75 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2003-2009 H. Peter Anvin - All Rights Reserved
* Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
* Copyright 2010 Shao Miller
* Copyright 2010-2015 Michal Soltys
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
#ifndef COM32_CHAIN_UTILITY_H
#define COM32_CHAIN_UTILITY_H
#include <stdint.h>
#include <stdio.h>
#include <syslinux/disk.h>
#include <syslinux/movebits.h>
/* most (all ?) bpb "types" known to humankind as of 2012 */
enum {bpbUNK, bpbV20, bpbV30, bpbV32, bpbV34, bpbV40, bpbVNT, bpbV70, bpbEXF};
/* see utility.c for details */
enum {L2C_CNUL, L2C_CADD, L2C_CMAX};
/* first usable and first unusable offsets */
#define dosmin ((addr_t)0x500u)
#define dosmax ((addr_t)(*(uint16_t *) 0x413 << 10))
void wait_key(void);
void lba2chs(disk_chs *dst, const struct disk_info *di, uint64_t lba, int mode);
uint32_t get_file_lba(const char *filename);
int drvoff_detect(int type);
int bpb_detect(const uint8_t *bpb, const char *tag);
int guid_is0(const struct guid *guid);
static inline int warn(const char *x)
{
return fprintf(stderr, "WARN: %s\n", x);
}
static inline int error(const char *x)
{
return fprintf(stderr, "ERR: %s\n", x);
}
static inline int crit(const char *x)
{
return fprintf(stderr, "CRIT: %s @%s:%d\n", x, __FILE__, __LINE__);
}
#define critm() crit("Malloc failure.")
#endif
/* vim: set ts=8 sts=4 sw=4 noet: */

32
com32/cmenu/CHANGES Normal file
View File

@ -0,0 +1,32 @@
Changes in v1.2
---------------
* Allowed menu's to have names. Submenu's can be referred to by names
instead of their index in the menu system. This allows user to refer
to submenus which are not yet part of the menusystem.
* help pages can be longer than one screen
* menugen.py: Python script for converting .menu files to C source code
.menu files can be used to descibe most static uses of menu system,
including SubMenus, Checkboxes, RadioButtons, User Authentication and
Context sensitive help. You can also restrict use of certain items
to users with certain credentials.
See MENU_FORMAT for the format of .menu files
* display.c32: Takes the name of the text file to display and displays it
allowing user to scroll through the text.
USAGE: display.c32 <filename>
<filename> must be an absolute filename (including the /isolinux part)
Changes in v1.1
---------------
* Additional handler type: Keys handler
* Menuitem handlers now have a return value of type t_handler_return.
For all simple cases, you just return ACTION_VALID or ACTION_INVALID
(For some types of menu items, handlers are ignored, and for
others the return value is ignored)
* add_menu takes an extra argument (to better control memory footprint)
You can just set it to -1 to choose the default value
* Now the menu system support long menu's using scroll bars.
* Support for passwords and context sensitive help is added.

20
com32/cmenu/HISTORY Normal file
View File

@ -0,0 +1,20 @@
GCC & 32-bit code
-----------------
Due to the limitations of the COM file format,
(64KB limit on memory footprint) the code has been changed
so that the code compiles to a 32-bit COMBOOT program.
Since the code makes use of BIOS calls, this code cannot be
compiled into a format which can execute under Linux. As a
side effect, there is no nice way to debug this code. In order
to debug this code, you will have to run the code under syslinux.
GCC & 16-bit code
-----------------
The code was ported to GCC by Peter Anvin.
OpenWatcom & 16-bit code
------------------------
Originally this code was written for the Openwatcom compiler
and generated .COM files, which could execute under DOS as well as
SYSLINUX.

348
com32/cmenu/MANUAL Normal file
View File

@ -0,0 +1,348 @@
Overview of writing code using the menu system
----------------------------------------------
This file contains implementation and developer documentation.
For simple cases, you should start by using simple.c as a template.
complex.c illustrates most of the features available in the menu system.
Menu Features currently supported are:
* menu items,
* submenus,
* disabled items,
* checkboxes,
* invisible items (useful for dynamic menus), and
* Radio menus,
* Context sensitive help
* Authenticated users
The keys used are:
* Arrow Keys, PgUp, PgDn, Home, End Keys
* Space to switch state of a checkbox
* Enter to choose the item
* Escape to exit from it
* Shortcut keys
1. Overview
-----------
The code usually consists of many stages.
* Configuring the menusytem
* Installing global handlers [optional]
* Populating the menusystem
* Executing the menusystem
* Processing the result
1.1 Configuring the menusystem
------------------------------
This includes setting the window the menu system should use,
the choice of colors, the title of the menu etc. In most functions
calls, a value of -1 indicates that the default value be used.
For details about what the arguments are look at function
declarations in menu.h
<code>
// Choose the default title and setup default values for all attributes....
init_menusystem(NULL);
set_window_size(1,1,23,78); // Leave one row/col border all around
// Choose the default values for all attributes and char's
// -1 means choose defaults (Actually the next 4 lines are not needed)
set_normal_attr (-1,-1,-1,-1);
set_status_info (-1,-1);
set_title_info (-1,-1);
set_misc_info(-1,-1,-1,-1);
</code>
1.2 Populating the menusystem
-----------------------------
This involves adding a menu to the system, and the options which
should appear in the menu. An example is given below.
<code>
MAINMENU = add_menu(" Menu Title ",-1);
CHECKED = 1;
add_item("option1","Status 1",OPT_RUN,"kernel1 arg1=val1",0);
add_item("selfloop","Status 2",OPT_SUBMENU,NULL,MAINMENU);
add_item("othermenu","Status 3",OPT_SUBMENU,"menuname",0);
add_sep();
add_item("checkbox,"Checkbox Info",OPT_CHECKBOX,NULL,CHECKED);
add_item("Exit ","Status String",OPT_EXITMENU,NULL,0);
</code>
The call to add_menu has two arguments, the first being the title of
the menu and the second an upper bound on the number of items in the menu.
Putting a -1, will use the default (see MENUSIZE in menu.h). If you try
to add more items than specified, the extra items will not appear in
the menu. The accuracy of this number affects the memory required
to run the system.
If you do not want to keep track of the return values, you can also use
the following variant of add_menu
<code>
add_named_menu("main"," Menu Title ",-1)
</code>
This creates a new menu as before and gives it a name "main". When using named
menus, you get an alternate way for adding submenu's. See below for details.
The call to add_item has five arguments.
The first argument is the text which appears in the menu itself.
The second argument is the text displayed in the status line.
The third argument indicates the type of this menuitem. It is one of
the following
* OPT_RUN : executable content
* OPT_EXITMENU : exits menu to parent
* OPT_SUBMENU : if selected, displays a submenu
* OPT_CHECKBOX : associates a boolean with this item which can be toggled
* OPT_RADIOMENU: associates this with a radio menu.
After execution, the data field of this item will point
to the option selected.
* OPT_SEP : A menu seperator (visually divide menu into parts)
* OPT_RADIOITEM: this item is one of the options in a RADIOMENU
* OPT_INACTIVE : A disabled item (user cannot select this)
* OPT_INVISIBLE: This item will not be displayed.
The fourth argument is the value of the data field always a string.
Usually this string is just copied and nothing is done with it. Two
cases, where it is used.
In case of a radiomenu the input string is ignored and the "data" field
points to the menuitem chosen (Dont forget to typecast this pointer to
(t_menuitem *) when reading this info).
In case of a submenu, this string if non-trivial is interpreted as the
name of the submenu which should be linked there. This interpretation
happens when the menu is first run and not when the menu system is being
created. This allows the user to create the menusystem in an arbitrary
order.
The fifth argument is a number whose meaning depends on the type of the
item. For a CHECKBOX it should be 0/1 setting the initial state of the
checkbox. For a SUBMENU it should be the index of the menu which should
be displayed if this option is chosen. Incase the data field is non-trivial,
this number is ignored and computed later. For a RADIOMENU it should be the
index of the menu which contains all the options (All items in that menu
not of type RADIOITEM are ignored). For all other types, this
argument has no meaning at all.
A call to add_sep is a convenient shorthand for calling add_item
with the type set to OPT_SEP.
1.3 Executing the menusystem
----------------------------
This is the simplest of all. Just call showmenus, with the index
of the main menu as its argument. It returns a pointer to the menu
item which was selected by the user.
<code>
choice = showmenus(MAIN); // Initial menu is the one with index MAIN
// or choice = showmenus(find_menu_num("main")); // Initial menu is the one named "main"
</code>
1.4 Processing the result
-------------------------
This pointer will either be NULL (user hit Escape) or always point
to a menuitem which can be "executed", i.e. it will be of type OPT_RUN.
Usually at this point, all we need to do is to ask syslinux to run
the command associated with this menuitem. The following code executes
the command stored in choice->data (there is no other use for the data
field, except for radiomenu's)
<code>
if (choice)
{
if (choice->action == OPT_RUN)
{
if (syslinux) runcommand(choice->data);
else csprint(choice->data,0x07);
return 1;
}
csprint("Error in programming!",0x07);
}
</code>
2. Advanced features
--------------------
Everycall to add_item actually returns a pointer to the menuitem
created. This can be useful when using any of the advanced features.
2.1 extra_data
--------------
For example, every menuitem has an "extra_data" field (a pointer)
which the user can use to point any data he/she pleases. The menusystem
itself does not use this field in anyway.
2.2 helpid
----------
Every item also has a field called "helpid". It is meant to hold some
kind of identifier which can be referenced and used to generate
a context sensitive help system. This can be set after a call to
add_item as follows
<code>
add_item("selfloop","Status 2",OPT_SUBMENU,NULL,MAINMENU);
set_item_options('A',4516);
</code>
The first is the shortcut key for this entry. You can put -1 to ensure
that the shortcut key is not reset. The second is some unsigned integer.
If this value is 0xFFFF, then the helpid is not changed.
2.3 Installing global handlers
------------------------------
It is possible to register handlers for the menu system. These are
user functions which are called by the menusystem in certain
situations. Usually the handlers get a pointer to the menusystem
datastructure as well as a pointer to the current item selected.
Some handlers may get additional information. Some handlers are
required to return values while others are not required to do so.
Currently the menusystem support three types of global handlers
* timeout handler
* screen handler
* keys handler
2.3.1 timeout handler
---------------------
This is installed using a call to "reg_ontimeout(fn,numsteps,stepsize)"
function. fn is a pointer to a function which takes no arguments and
returns one of CODE_WAIT, CODE_ENTER, CODE_ESCAPE. This function is
called when numsteps*stepsize Centiseconds have gone by without any
user input. If the function returns CODE_WAIT then the menusystem
waits for user input (for another numsteps*stepsize Centiseconds). If
CODE_ENTER or CODE_ESCAPE is returned, then the system pretends that
the user hit ENTER or ESCAPE on the keyboard and acts accordingly.
2.3.2 Screen handler
--------------------
This is installed using a call to "reg_handler(HDLR_SCREEN,fn)". fn is
a pointer to a function which takes a pointer to the menusystem
datastructure and the current item selected and returns nothing.
This is called everytime a menu is drawn (i.e. everytime user changes
the current selection). This is meant for displaying any additional
information which reflects the current state of the system.
2.3.3 Keys handler
------------------
This is installed using a call to "reg_handler(HDLR_KEYS,fn)". fn is
a pointer to a function which takes a pointer to the menusystem
datastructure, the current item and the scan code of a key and returns
nothing. This function is called when the user presses a key which
the menusystem does not know to dealwith. In any case, when this call
returns the screen should not have changed in any way. Usually,
one can change the active page and display any output needed and
reset the active page when you return from this call.
complex.c implements a key_handler, which implements a simple
context sensitive help system, by displaying the contents of a
file whose name is based on the helpid of the active item.
Also, complex.c's handler allows certain users to make changes
to edit the commands associated with a menu item.
2.4 Installing item level handlers
----------------------------------
In addition to global handlers, one can also install handlers for each
individual item. A handler for an individual item is a function which
takes a pointer to the menusystem datastructure and a pointer to the
current item and return a structure of type t_handler_return. Currently
it has two bit fields "valid" and "refresh".
This handler is called when the user hits "enter" on a RUN item, or
changes the status of a CHECKBOX, or called *after* a radio menu choice
has been set. In all other cases, installing a handler has no effect.
The handler can change any of the internal datastructures it pleases.
For e.g. in a radiomenu handler, one can change the text displayed
on the menuitem depending on which choice was selected (see complex.c
for an example). The return values are ignored for RADIOMENU's.
In case of RUN items: the return values are used as follows. If the
return value of "valid" was false, then this user choice is ignored.
This is useful if the handler has useful side effects. For e.g.
complex.c has a Login item, whose handler always return INVALID. It
sets a global variable to the name of the user logged in, and enables
some menu items, and makes some invisible items visible.
* If the handler does not change the visibility status of any items,
the handler should set "refresh" to 0.
* If the handler changes the visibility status of items in the current
menu set "refresh" to 1.
* If you are changing the visibility status of items in menu's currently
not displayed, then you can set "refresh" to 0.
* Changing the visibility status of items in another menu
which is currently displayed, is not supported. If you do it,
the screen contents may not reflect the change until you get to the
menu which was changed. When you do get to that menu, you may notice
pieces of the old menu still on the screen.
In case of CHECKBOXES: the return value of "valid" is ignored. Because,
the handler can change the value of checkbox if the user selected value
is not appropriate. only the value of "refresh" is honored. In this case
all the caveats in the previous paragraph apply.
menu.h defines two instances of t_handler_return
ACTION_VALID and ACTION_INVALID for common use. These set the valid flag
to 1 and 0 respectively and the refresh flag to 0.
3. Things to look out for
-------------------------
When you define the menu system, always declare it in the opposite
order, i.e. all lower level menu's should be defined before the higher
level menus. This is because in order to define the MAINMENU, you need
to know the index assigned to all its submenus.
4. Additional Modules
---------------------
You can make use of the following additional modules, in writing your
handlers.
* Passwords
* Help
4.1 Passwords
-------------
This module was written by Th. Gebhardt. This is basically a modification
of the DES crypt function obtained by removing the dependence of the
original crypt function on C libraries. The following functions are
defined
init_passwords(PWDFILE)
// Read in the password database from the file
authenticate_user(user,pwd)
// Checks if user,pwd is valid
isallowed(user,perm)
// Checks if the user has a specified permission
close_passwords()
// Unloads password database from memory
See the sample password file for more details about the file format
and the implementation of permissions.
See complex.c for a example of how to use this.
4.2 Help
--------
This can be used to set up a context sensitive help system. The following
functions are defined
init_help(HELPBASEDIR)
// Initialises the help system. All help files will be loaded
// from the directory specified.
runhelpsystem(context)
// Displays the contents of HELPBASEDIR/hlp<context>.txt
In order to have a functioning help system, you just need to create
the hlp<NNNNN>.txt files and initialize the help system by specifying
the base directory.
The first line of this file assumed to be the title of the help screen.
You can use ^N and ^O to change attributes absolutely and relatively,
i.e. [^O]46 (i.e. Ctrl-O followed by chars 4 and 6) will set the
attribute to 46, while [^N]08 will XOR the current attribute with
specified number, thus in this case the first [^N]08 will turn on
highlighting and the second one will turn it off.

262
com32/cmenu/MENU_FORMAT Normal file
View File

@ -0,0 +1,262 @@
A .menu file can be used to describe basic menu structures which can be converted
into C code which can then be compiled into a .c32 file for use with SYSLINUX.
The format of a .menu file is similar to an ini file, but with important
differences.
Lines starting with # and ; are treated as comments. Blank lines are used to
separate the attributes of one menu item from another. Multiple blank lines are
equivalent to a single one. In other contexts Blank lines are not significant.
Menus
-----
Each menu declaration starts with a line containing the name of menu in [ ].
This is the "nickname" of the menu and should be different for different menus.
This is not visible to the user of the menu system. The initial menu must
be called "main"
The menu declaration is followed by lines which set the attributes of the menu.
This is followed by a blank line and followed by declaration of menu items in
that menu.
All lines which occur before the first menu declaration is considered as
a global declaration.
Abstract Format
---------------
The overall format should look like this
--------------------------------------------------------
<GLOBAL SETTINGS>
[menuname1]
<MENU SETTINGS>
<ITEM 1>
...
<ITEM N>
[menuname2]
<MENU SETTINGS>
<ITEM A>
<ITEM B>
----------------------------------------------------------
GLOBAL SETTINGS
---------------
The following global settings are now supported. Many of the keywords
accept what we call a "DOT COMMAND" as argument. Simply put they are
instructions to the menu system to perform certain actions.
The syntax and semantics of DOT COMMANDS are given later in the section
titled "DOT COMMANDS".
videomode: (default 0xFF) [Use with care]
The textmode in which the whole menu system should operate.
Must be a number (use 0x notation for hexadecimal).
Lookup Ralph Brown Interrupt List and search for Video Mode
to find a number to put here.
setting to 0xFF will mean, menu system will use the current
video mode.
title:
The title of the whole menu system
top, left, bot, right: (default 0,0,21,79)
The area of the screen used by the menu system. The remaining
part of the screen can be used by the user for anything.
helpdir: (default /isolinux/help)
Location of the directory where help information is stored. The
help files must be called "hlpNNNNN.txt" where NNNNN is the helpid.
pwdfile: (default /isolinux/passwd)
The name of the password file which contains user, password and permissions
See "passwd" file for details regarding format of this file
editrow: (default 23)
the row on the screen where one can edit the command line. This must
be outside the menu area. Set this to a negative number to disable
editing the command line. In case of authenticated users, the current
user must have "editcmd" permissions to edit the command line
pwdrow: (default 23)
The row on the screen used for user authentication. Must be outside
menu area (can be same as editrow). Set to negative to disable
user authentication
skipif: (default 0)
The OR of the bits in the Shift-flags any of which can cause the menu system
to be skipped all together (0 means menu system always runs). It can also
be a combination of "Alt","Ctrl","Shift","Caps","Ins","Scroll".
When menu system starts it checks if any of the specified keys are On/pressed.
If true, the system exits immediately and executes the skipcmd.
e.g. setting it to "shift-alt-caps" means menu will be skipped if alt OR shift
is pressed OR caps is on. setting to "0" means menu will always run.
skipcmd: (default .exit)
valid terminal commands: .exit .ignore or any syslinux command
command to execute if menu system is skipped. This must be a non-trivial
syslinux command if skipcondn is not "0". ".exit" means menu system
quits back to the boot prompt.
startfile: (default "")
if non-empty the system will display the contents of this file before launching
the menusystem. This happens only if the menusystem is not skipped. Can be used
to display licensing, usage or welcome messages. A file with given name
is expected to be found in the helpdir directory.
exitcmd: (default .exit)
valid terminal commands: .exit .repeat or any syslinux command
The default command to execute when user quits the menu system.
exitcmdroot: (default =exitcmd)
Same as exitcmd except applies when current user has "root" privileges. If not
specified, it is assumed to be the same as exitcmd
timeout: (default 3000)
The amount of time (in multiple of 0.1 seconds) to wait for user keypress. If no
key pressed for specified duration then the timeoutcmd is executed.
totaltimeout: (default 0)
The total amount of time (in multiples of 0.1 seconds) the system will wait for
user to make a decision. If no decision has been made in the specified duration
totaltimeoutcmd will be executed
NOTE: This does not include the time spent browsing the help system or
the time taken for the user to enter his/her authentication credentials.
timeoutcmd: (default .beep)
valid terminal commands: .wait .enter .escape or any syslinux command
command to execute when we timeout waiting for user input. The commands
.enter and .escape tell the menu system to pretend the user typed ENTER or
ESCAPE on the keyboard, while .wait tells the menusystem to wait for one
more time period
totaltimeoutcmd: (default .wait)
choices are the same as for timeoutcmd
MENU SETTINGS
-------------
title: (must be specified)
Title of this menu
row,col: [Usage not recomended]
position in screen where this menu should be placed. By default the
system will choose an appropriate location.
ITEM ATTRIBUTES
---------------
item:
The string displayed to the user. Characters enclosed in < > are highlighted.
shortcut: (default -1) valid values A-Za-z0-9 or -1 [Usage not recommended]
Sets the shortcut key for this item. If set to -1, the system scans for the first
highlighted letter in the given range and sets that as the shortcut key.
info: (default same as data)
Additional textual information displayed in the status bar
type:
the type of entry this item represents. This is one of the following:
run: choosing this will run something in SYSLINUX
use data to specify the actual command to execute
exitmenu: exit to parent menu
submenu: choosing will open up submenu
use data to specify the "nickname" of the menu
which should come here
sep: Position a separator here
inactive: menu item is disabled
checkbox: this is a checkbox
use state to set initial state
invisible: User does not see this item
radioitem: One choice in a radiomenu
radiomenu: Allow user to choose one of many choices
(initial choice is always NULL)
login: Selecting this will allow user to login to system
data:
for run items, the syslinux command to execute
for submenus and radiomenus, nickname of menu
for checkboxes, string to be added to kernel command line (if set)
for radioitems, string to be added to kernel command line (if chosen)
ipappend:
ipappend flag to pass to PXELINUX (harmless for other variants of SYSLINUX)
See syslinux documentation for meaning of the FLAGS
helpid: (default 65535 which is not a valid id)
associates a context for the help system.
state: (default 0)
Initial state of a checkbox (for other items this has no meaning)
perms: (default "")
string containing the name of the permission which user must
have to activate this item. For eg. if this item is a submenu
then user needs the permission in order to open the submenu
argsmenu: (default "")
Name of the menu to be scanned for setting additional arguments to
pass to command line when this item is chosen for execution. Submenus
of specified menu are also scanned. Only checkboxes and radiomenu's
are scanned. Items of other type in this menu is silently ignored.
DOT COMMANDS
------------
Dot commands are basically instructions to the menu system to do certain things.
A "single command" is one of the following
[NT] A syslinux command (any DOT command not starting with a "." is assumed to be this)
[NT] .beep [n]
[NT] .help <file>
[NT] .nop
[T] .exit or .quit (equivalent)
[T] .repeat or .wait or .ignore (all three are equivalent)
A dot command is a sequence of "single commands" separated by a "%". When a dot command
is executed the system executes all the given "single commands" in the specified order.
All the commands marked "[T]" are terminal commands, i.e. when the system encounters
such a command it stops processing the dot command and returns the terminal command
which caused the termination to the caller (who usually interprets the command
appropriately).
All commands marked with [NT] are non-terminal commands, i.e. once these commands are
processed the system continues to process the remaining "single commands" specified in
the "DOT COMMAND".
Note: The case of a syslinux command is tricky. When executed, the command should never return
(if the specified kernel exists) so the fact that we consider it a [NT] should be taken with
a pinch of salt. However, if the syslinux command does return (in case of no kernel), then
remaining "single commands" are processed. In particular "ker1 arg1 % ker2 arg2 % ker3 args"
has the effect of executing the first kernel which exists
.nop:
Does nothing.
.beep:
.beep [n] produces a beep n times. n must be between 0 and 9. If not specified n=1.
(hence .beep 0 is equivalent to .nop)
.help:
.help <file>
Displays the help file <file> which is assumed to be in the "help" directory. Its name
does not have to be in the form "hlpNNNNN.txt" (as required by the context sensitive help).
Executing this command will mean the appropriate help screen is displayed till the user hits
ESCAPE
The meaning of the Terminal commands can vary with the context in which it is used. For example,
a ".enter" or ".escape" does not have any meaning in the "onerrorcmd" context but it has a meaning
in the "ontimeout" context. In case the user gives a Terminal command which does not make sense, it
is upto the code (in this case adv_menu.tpl) to do what it pleases.

74
com32/cmenu/Makefile Normal file
View File

@ -0,0 +1,74 @@
## -----------------------------------------------------------------------
##
## Copyright 2001-2009 H. Peter Anvin - All Rights Reserved
## Copyright 2009 Intel Corporation; author: H. Peter Anvin
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, Inc., 53 Temple Place Ste 330,
## Boston MA 02111-1307, USA; either version 2 of the License, or
## (at your option) any later version; incorporated herein by reference.
##
## -----------------------------------------------------------------------
##
## Makefile for the complex menu system
##
NOGPL := 1
LIBS = libmenu/libmenu.c32 \
$(objdir)/com32/libutil/libutil.c32 \
$(objdir)/com32/lib/libcom32.c32
C_LIBS = libmenu/libmenu.c32
VPATH = $(SRC)
include $(MAKEDIR)/elf.mk
CFLAGS += -I$(SRC)/libmenu
LIBMENU = libmenu/syslnx.o libmenu/com32io.o libmenu/tui.o \
libmenu/menu.o libmenu/passwords.o libmenu/des.o libmenu/help.o \
$(objdir)/com32/libutil/libutil.c32 $(objdir)/com32/lib/libcom32.c32
CMENUS = $(patsubst %.c,%.c32,$(sort $(wildcard $(SRC)/*.c)))
IMENUS = $(patsubst %.menu,%.c32,$(sort $(wildcard $(SRC)/*.menu)))
MENUS = $(LIBS) $(subst $(SRC)/,,$(CMENUS) $(IMENUS))
.SUFFIXES: .S .c .o .elf .c32 .menu
.PRECIOUS: %.c
%.c: %.menu adv_menu.tpl
$(PYTHON) $(SRC)/menugen.py --input=$< --output=$@ --template=$(SRC)/adv_menu.tpl
all: makeoutputdirs menus
makeoutputdirs:
@mkdir -p $(OBJ)/libmenu
libmenu/libmenu.elf: $(LIBMENU)
$(LD) -shared $(LDFLAGS) -soname $(patsubst %.elf,%.c32,$(@F)) \
-o $@ $^
tidy dist:
rm -f *.o *.lo *.lst *.elf */*.o */*.elf .*.d */.*.d
libclean:
rm -f libmenu/*.c32
clean: tidy menuclean
rm -f *.lss *.com
menuclean:
rm -f $(patsubst %.menu,%.c,$(sort $(wildcard *.menu)))
spotless: clean libclean menuclean
rm -f *~ \#* *.c32
menus: $(MENUS)
install: # Don't install samples
-include .*.d */.*.d

95
com32/cmenu/README Normal file
View File

@ -0,0 +1,95 @@
Text User Interface using comboot
---------------------------------
This is a menu system written by Murali Krishnan Ganapathy and ported
from OpenWatcom to gcc by HPA. It is currently being maintained by the
original author.
To configure the menus, you need to set up a menu configuration file
to have the menu items you desire, then build the menu system using
make. You can use either simple.c or complex.c as a starting point
for your own menu configuration file; If your menu system is only going
to have entries corresponding to things which can be executed directly,
then you can create a file in ".menu" format instead of the C code.
See MENU_FORMAT for the syntax of .menu files
The resulting code is a 32-bit COMBOOT code, and hence can be executed
only under syslinux. You can use tools like bochs to help debug your
code.
Menu Features currently supported are:
* menu items,
* submenus,
* disabled items,
* checkboxes,
* invisible items (useful for dynamic menus), and
* Radio menus,
* Context sensitive help
* Authenticated users
* Editing commands associated with items
The keys used are:
* Arrow Keys, PgUp, PgDn, Home, End Keys
* Space to switch state of a checkbox
* Enter to choose the item
* Escape to exit from it
* Shortcut keys
Features
--------
This is a general purpose menu system implemented using only BIOS calls,
so it can be executed in a COMBOOT environment as well. It is highly
customizable. Some features include:
* Status line
Display any help information associated with each menu item.
* Window
Specify a window within which the menu system draws all its menu's.
It is upto the user to ensure that the menu's fit within the window.
* Positioning submenus
By default, each submenu is positioned just below the corresponding
entry of the parent menu. However, the user may position each menu
at a specific location of his choice. This is useful, when the menu's
have lots of options.
* Registering handlers for each menu item
This is mainly used for checkboxes and radiomenu's, where a selection may
result in disabling other menu items/checkboxes
* Global Screen Handler
This is called every time the menu is redrawn. The user can display
additional information (usually outside the window where the menu is
being displayed). See the complex.c for an example, where the global
handler is used to display the choices made so far.
* Global Keys Handler
This is called every time the user presses a key which the menu
system does not understand. This can be used to display context
sensitive help. See complex.c for how to use this hook to implement
a context sensitive help system as well as "On the fly" editing
of commands associated with menus.
* Shortcut Keys
With each item one can register a shortcut key from [A-Za-z0-9].
Pressing a key within that range, will take you to the next item
with that shortcut key (so you can have multiple items with the
same shortcut key). The default shortcut key for each item, is
the lower case version of the first char of the item in the range
[A-Za-z0-9].
* Escape Keys
Each item entry can have a substring enclosed in < and >. This part
is highlighted. Can be used to highlight the shortcut keys. By default
if an item has a <, then the first char inside < and > in the range
[A-Za-z0-9] is converted to lower case and set as the shortcut key.
* Ontimeout handler
The user can register an ontimeout handler, which gets called if
no key has been pressed for a user specific amount of time (default 5 min).
For an example see the complex.c file.
Credits
-------
* The Watcom developers and Peter Anvin for figuring out an OS
independent startup code.
* Thomas for porting the crypt function and removing all C library
dependencies
* Peter Anvin for porting the code to GCC
- Murali (gmurali+guicd@cs.uchicago.edu)

2
com32/cmenu/TODO Normal file
View File

@ -0,0 +1,2 @@
* Write COMBOOT code to read .menu files and parse them directly
- take the name of menu file to parse from commandline

465
com32/cmenu/adv_menu.tpl Normal file
View File

@ -0,0 +1,465 @@
All the lines in this file not in between --something BEGINS-- and --something ENDS--
is ignored completely and will not make it into the generated C file
This file has sections of C code each section delimited by --secname BEGINS--
and --secname ENDS--. In the generated C code certain section may be used multiple
times. Currently the different section which must be defined are
header, system, item, login and footer
Any additional sections you define will be processed but will probably not make it
to the C code if you do not modify menugen.py to use it.
header and footer go through unmolested. The remaining are % substituted using
python rules. Basically it means %(var)s gets replaced by the value of the variable
"var" which is a processed form of what is read from the .menu file
NOTE: There is absolutely no C code in the python script, so you are free to
modify this template to suit your needs
--header BEGINS--
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2006 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#ifndef NULL
#define NULL ((void *) 0)
#endif
#include "cmenu.h"
#include "help.h"
#include "passwords.h"
#include "com32io.h"
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#define MAX_CMD_LINE_LENGTH 514
typedef struct s_xtra {
long ipappend; // Stores the ipappend flag to send (useful for PXELINUX only)
char *argsmenu; // Stores the name of menu which contains options for the given RUN item
char *perms; // stores the permissions required to activate the item
} t_xtra;
typedef t_xtra *pt_xtra; // Pointer to extra datastructure
// Types of dot commands for which caller takes responsibility of handling
// In some case some commands may not make sense, it is up to the caller
// to handle cases which do not make sense
typedef enum {QUIT_CMD, REPEAT_CMD, ENTER_CMD, ESCAPE_CMD} t_dotcmd;
/*----------------- Global Variables */
// default user
#define GUEST_USER "guest"
// for local commands. return value of execdotcmd
#define QUIT_CMD 0
#define RPT_CMD 1
char username[12]; // Name of user currently using the system
int PWD_ROW; // Line number where user authentication happens
int EDIT_ROW; // row where User Tab
char loginstr[] = "<L>ogin ";
char logoutstr[30];
int vmode; // The video mode we want to be in
char timeoutcmd[MAX_CMD_LINE_LENGTH]; // Command to execute on timeout
char totaltimeoutcmd[MAX_CMD_LINE_LENGTH]; // Command to execute on totaltimeout
char QUITSTR[] = ".quit"; // same as exit
char IGNORESTR[]=".ignore"; // same as repeat, wait
/*---------------- End globals */
// returns pointer to first non-space char
// and advances end of str by removing trailing spaces
char * strip(char *str)
{
char *p,*s,*e;
if (!str) return NULL;
p = str;
s = NULL;
e = NULL;
while (*p) {
if (*p != ' ') {
// mark start of string or record the last visited non-space char
if (!s) s=p; else e=p;
}
p++;
}
*(++e)='\0'; // kill string earlier
return s;
}
// executes a list of % separated commands
// non-dot commands are assumed to be syslinux commands
// All syslinux commands are appended with the contents of kerargs
// If it fails (kernel not found) then the next one is tried in the
// list
// returns QUIT_CMD or RPT_CMD
t_dotcmd execdotcmd(const char *cmd, char *defcmd, const char *kerargs)
{
char cmdline[MAX_CMD_LINE_LENGTH];
char dotcmd[MAX_CMD_LINE_LENGTH];
char *curr,*next,*p,*args;
char ctr;
strcpy(dotcmd,cmd);
next = dotcmd;
cmdline[0] = '\0';
while (*next) { // if something to do
curr = next;
p = strchr(next,'%');
if (p) {
*p--='\0'; next=p+2;
while (*p == ' ') p--;
*(++p)='\0'; // remove trailing spaces
} else {
if (*defcmd) { // execute defcmd next
next=defcmd;
defcmd=NULL; // exec def cmd only once
} else next=NULL;
}
// now we just need to execute the command "curr"
curr = strip(curr);
if (curr[0] != '.') { // just run the kernel
strcpy(cmdline,curr);
if (kerargs) strcat(cmdline,kerargs);
runsyslinuximage(cmdline,0); // No IPAppend
} else { // We have a DOT command
// split command into command and args (may be empty)
args = curr;
while ( (*args != ' ') && (*args != '\0') ) args++;
if (*args) { // found a space
*args++ = '\0';
while (*args == ' ') args++; // skip over spaces
}
if ( (strcmp(curr,".exit")==0) ||
(strcmp(curr,".quit")==0)
)
return QUIT_CMD;
if ( (strcmp(curr,".repeat")==0) ||
(strcmp(curr,".ignore")==0) ||
(strcmp(curr,".wait")==0)
)
return RPT_CMD;
if (strcmp(curr,".beep")==0) {
if ((args) && ('0' <= args[0]) && (args[0] <= '9'))
ctr = args[0]-'0';
else ctr=1;
for (;ctr>0; ctr--) beep();
}
if (strcmp(curr,".help")==0) runhelp(args);
}
}
return RPT_CMD; // by default we do not quit
}
TIMEOUTCODE timeout(const char *cmd)
{
t_dotcmd c;
c = execdotcmd(cmd,".wait",NULL);
switch(c) {
case ENTER_CMD:
return CODE_ENTER;
case ESCAPE_CMD:
return CODE_ESCAPE;
default:
return CODE_WAIT;
}
}
TIMEOUTCODE ontimeout(void)
{
return timeout(timeoutcmd);
}
TIMEOUTCODE ontotaltimeout(void)
{
return timeout(totaltimeoutcmd);
}
void keys_handler(t_menusystem * ms __attribute__ (( unused )), t_menuitem * mi, int scancode)
{
int nc, nr;
if (getscreensize(1, &nr, &nc)) {
/* Unknown screen size? */
nc = 80;
nr = 24;
}
if ( (scancode == KEY_F1) && (mi->helpid != 0xFFFF) ) { // If scancode of F1 and non-trivial helpid
runhelpsystem(mi->helpid);
}
// If user hit TAB, and item is an "executable" item
// and user has privileges to edit it, edit it in place.
if ((scancode == KEY_TAB) && (mi->action == OPT_RUN) &&
(EDIT_ROW < nr) && (EDIT_ROW > 0) &&
(isallowed(username,"editcmd") || isallowed(username,"root"))) {
// User typed TAB and has permissions to edit command line
gotoxy(EDIT_ROW,1);
csprint("Command line:",0x07);
editstring(mi->data,ACTIONLEN);
gotoxy(EDIT_ROW,1);
cprint(' ',0x07,nc-1);
}
}
t_handler_return login_handler(t_menusystem *ms, t_menuitem *mi)
{
(void)mi; // Unused
char pwd[40];
char login[40];
int nc, nr;
t_handler_return rv;
(void)ms;
rv = ACTION_INVALID;
if (PWD_ROW < 0) return rv; // No need to authenticate
if (mi->item == loginstr) { /* User wants to login */
if (getscreensize(1, &nr, &nc)) {
/* Unknown screen size? */
nc = 80;
nr = 24;
}
gotoxy(PWD_ROW,1);
csprint("Enter Username: ",0x07);
getstring(login, sizeof username);
gotoxy(PWD_ROW,1);
cprint(' ',0x07,nc);
csprint("Enter Password: ",0x07);
getpwd(pwd, sizeof pwd);
gotoxy(PWD_ROW,1);
cprint(' ',0x07,nc);
if (authenticate_user(login,pwd))
{
strcpy(username,login);
strcpy(logoutstr,"<L>ogout ");
strcat(logoutstr,username);
mi->item = logoutstr; // Change item to read "Logout"
rv.refresh = 1; // refresh the screen (as item contents changed)
}
else strcpy(username,GUEST_USER);
}
else // User needs to logout
{
strcpy(username,GUEST_USER);
strcpy(logoutstr,"");
mi->item = loginstr;
}
return rv;
}
t_handler_return check_perms(t_menusystem *ms, t_menuitem *mi)
{
char *perms;
pt_xtra x;
(void) ms; // To keep compiler happy
x = (pt_xtra) mi->extra_data;
perms = ( x ? x->perms : NULL);
if (!perms) return ACTION_VALID;
if (isallowed(username,"root") || isallowed(username,perms)) // If allowed
return ACTION_VALID;
else return ACTION_INVALID;
}
// Compute the full command line to add and if non-trivial
// prepend the string prepend to final command line
// Assume cmdline points to buffer long enough to hold answer
void gencommand(pt_menuitem mi, char *cmdline)
{
pt_xtra x;
cmdline[0] = '\0';
strcat(cmdline,mi->data);
x = (pt_xtra) mi->extra_data;
if ( (x) && (x->argsmenu)) gen_append_line(x->argsmenu,cmdline);
}
// run the given command together with additional options which may need passing
void runcommand(pt_menuitem mi)
{
char *line;
pt_xtra x;
long ipappend;
line = (char *)malloc(sizeof(char)*MAX_CMD_LINE_LENGTH);
gencommand(mi,line);
x = (pt_xtra) mi->extra_data;
ipappend = (x ? x->ipappend : 0);
runsyslinuximage(line,ipappend);
free(line);
}
// set the extra info for the specified menu item.
void set_xtra(pt_menuitem mi, const char *argsmenu, const char *perms, unsigned int helpid, long ipappend)
{
pt_xtra xtra;
int bad_argsmenu, bad_perms, bad_ipappend;
mi->extra_data = NULL; // initalize
mi->helpid = helpid; // set help id
if (mi->action != OPT_RUN) return;
bad_argsmenu = bad_perms = bad_ipappend = 0;
if ( (argsmenu==NULL) || (strlen(argsmenu)==0)) bad_argsmenu = 1;
if ( (perms==NULL) || (strlen(perms)==0)) bad_perms = 1;
if ( ipappend==0) bad_ipappend = 1;
if (bad_argsmenu && bad_perms && bad_ipappend) return;
xtra = (pt_xtra) malloc(sizeof(t_xtra));
mi->extra_data = (void *) xtra;
xtra->argsmenu = xtra->perms = NULL;
xtra->ipappend = ipappend;
if (!bad_argsmenu) {
xtra->argsmenu = (char *) malloc(sizeof(char)*(strlen(argsmenu)+1));
strcpy(xtra->argsmenu,argsmenu);
}
if (!bad_perms) {
xtra->perms = (char *) malloc(sizeof(char)*(strlen(perms)+1));
strcpy(xtra->perms,perms);
mi->handler = &check_perms;
}
}
int main(void)
{
pt_menuitem curr;
char quit;
char exitcmd[MAX_CMD_LINE_LENGTH];
char exitcmdroot[MAX_CMD_LINE_LENGTH];
char onerrcmd[MAX_CMD_LINE_LENGTH];
char startfile[MAX_CMD_LINE_LENGTH];
char *ecmd; // effective exit command or onerrorcmd
char skipbits;
char skipcmd[MAX_CMD_LINE_LENGTH];
int timeout; // time in multiples of 0.1 seconds
int totaltimeout; // time in multiples of 0.1 seconds
t_dotcmd dotrv; // to store the return value of execdotcmd
int temp;
strcpy(username,GUEST_USER);
--header ENDS--
--system BEGINS--
/* ---- Initializing menu system parameters --- */
vmode = %(videomode)s;
skipbits = %(skipcondn)s;
PWD_ROW = %(pwdrow)s;
EDIT_ROW = %(editrow)s;
strcpy(onerrcmd,"%(onerrorcmd)s");
strcpy(exitcmd,"%(exitcmd)s");
strcpy(exitcmdroot,"%(exitcmdroot)s");
// If not specified exitcmdroot = exitcmd
if (exitcmdroot[0] == '\0') strcpy(exitcmdroot,exitcmd);
// Timeout stuff
timeout = %(timeout)s;
strcpy(timeoutcmd,"%(timeoutcmd)s");
totaltimeout = %(totaltimeout)s;
strcpy(totaltimeoutcmd,"%(totaltimeoutcmd)s");
strcpy(startfile,"%(startfile)s");
init_help("%(helpdir)s");
init_passwords("%(pwdfile)s");
init_menusystem("%(title)s");
set_window_size(%(top)s,%(left)s,%(bot)s,%(right)s);
// Register the ontimeout handler, with a time out of 10 seconds
reg_ontimeout(ontimeout,timeout*10,0);
reg_ontotaltimeout(ontotaltimeout,totaltimeout*10);
// Register menusystem handlers
reg_handler(HDLR_KEYS,&keys_handler);
/* ---- End of initialization --- */
--system ENDS--
--item BEGINS--
curr = add_item("%(item)s","%(info)s",%(type)s,"%(data)s",%(state)d);
set_xtra(curr,"%(argsmenu)s","%(perms)s",%(helpid)d,%(ipappend)d); // Set associated extra info
set_shortcut(%(shortcut)s);
--item ENDS--
--login BEGINS--
curr = add_item(loginstr,"Login/Logout of authentication system",OPT_RUN,NULL,0);
curr->helpid = %(helpid)d;
curr->handler = &login_handler;
--login ENDS--
--menu BEGINS--
/* ------- MENU %(name)s ----- */
add_named_menu("%(name)s","%(title)s",-1);
--menu ENDS--
--footer BEGINS--
/* ------- END OF MENU declarations ----- */
// Check if we should skip the menu altogether
quit = 0; // Dont skip the menu
if (getshiftflags() & skipbits) { // we must skip the menu altogther and execute skipcmd
dotrv = execdotcmd(skipcmd,".beep%.exit",NULL); // Worst case we beep and exit
if (dotrv == QUIT_CMD) quit = 1;
}
// Switch vide mode if required
if (vmode != 0xFF) setvideomode(vmode);
// Do we have a startfile to display?
if (startfile[0] != '\0') runhelp(startfile);
// The main loop
while (quit == 0) { // As long as quit is zero repeat
curr = showmenus(find_menu_num("main")); // Initial menu is the one called "main"
if (curr) {
if (curr->action == OPT_RUN) {
ecmd = (char *)malloc(sizeof(char)*MAX_CMD_LINE_LENGTH);
gencommand(curr,ecmd);
temp = (curr->extra_data ? ((pt_xtra)curr->extra_data)->ipappend : 0);
runsyslinuximage(ecmd,temp);
// kernel not found so execute the appropriate dot command
dotrv = execdotcmd(onerrcmd,".quit",ecmd); // pass bad cmdline as arg
if (dotrv== QUIT_CMD) quit = 1;
free(ecmd); ecmd = NULL;
}
else csprint("Error in programming!",0x07);
} else {
// find effective exit command
ecmd = ( isallowed(username,"root") ? exitcmdroot : exitcmd);
dotrv = execdotcmd(ecmd,".repeat",NULL);
quit = (dotrv == QUIT_CMD ? 1 : 0); // should we exit now
}
}
// Deallocate space used and quit
close_passwords();
close_help();
close_menusystem();
return 0;
}
--footer ENDS--

450
com32/cmenu/complex.c Normal file
View File

@ -0,0 +1,450 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#ifndef NULL
#define NULL ((void *) 0)
#endif
#include "cmenu.h"
#include "com32io.h"
#include "help.h"
#include "passwords.h"
#include "des.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <getkey.h>
/* Global variables */
char infoline[160];
char buffer[80];
// Different network options
static char nonet[] = "<n>etwork [none]";
static char dhcpnet[] = "<n>etwork [dhcp]";
static char statnet[] = "<n>etwork [static]";
static char loginstr[] = "<L>ogin ";
static char logoutstr[] = "<L>ogout ";
struct {
unsigned int baseurl:1; // Do we need to specify by url
unsigned int mountcd:1; // Should we mount the cd
unsigned int winrep:1; // Want to repair windows?
unsigned int linrep:1; // Want to repair linux?
} flags;
// Some menu options
t_menuitem *baseurl, *mountcd, *network, *runprep, *winrep, *linrep;
t_menuitem *stat, *dhcp, *none, *prepopt, *secret;
// all the menus we are going to declare
unsigned char TESTING, RESCUE, MAIN, PREPMENU, NETMENU, LONGMENU, SECRETMENU;
char username[12]; // Name of user currently using the system
/* End globals */
TIMEOUTCODE ontimeout(void)
{
beep();
return CODE_WAIT;
}
#define INFLINE 22
#define PWDLINE 3
#define PWDPROMPT 21
#define PWDCOLUMN 60
#define PWDATTR 0x74
#define EDITPROMPT 21
void keys_handler(t_menusystem * ms __attribute__ (( unused )), t_menuitem * mi, int scancode)
{
int nc, nr;
if ((scancode) == KEY_F1 && mi->helpid != 0xFFFF) { // If scancode of F1
runhelpsystem(mi->helpid);
}
// If user hit TAB, and item is an "executable" item
// and user has privileges to edit it, edit it in place.
if ((scancode == KEY_TAB) && (mi->action == OPT_RUN) &&
(isallowed(username, "editcmd") || isallowed(username, "root"))) {
if (getscreensize(1, &nr, &nc)) {
/* Unknown screen size? */
nc = 80;
nr = 24;
}
// User typed TAB and has permissions to edit command line
gotoxy(EDITPROMPT, 1);
csprint("Command line:", 0x07);
editstring(mi->data, ACTIONLEN);
gotoxy(EDITPROMPT, 1);
clear_line();
}
}
t_handler_return login_handler(t_menusystem * ms, t_menuitem * mi)
{
(void)mi; // Unused
char pwd[40];
char login[40];
int nc, nr;
t_handler_return rv;
(void)ms;
if (mi->item == loginstr) { /* User wants to login */
if (getscreensize(1, &nr, &nc)) {
/* Unknown screen size? */
nc = 80;
nr = 24;
}
gotoxy(PWDPROMPT, 1);
csprint("Enter Username: ", 0x07);
getstring(login, sizeof username);
gotoxy(PWDPROMPT, 1);
clear_line();
csprint("Enter Password: ", 0x07);
getpwd(pwd, sizeof pwd);
gotoxy(PWDPROMPT, 1);
clear_line();
if (authenticate_user(login, pwd)) {
strcpy(username, login);
mi->item = logoutstr; // Change item to read "Logout"
} else
strcpy(username, GUEST_USER);
} else // User needs to logout
{
strcpy(username, GUEST_USER);
mi->item = loginstr;
}
if (strcmp(username, GUEST_USER) == 0) {
prepopt->action = OPT_INACTIVE;
secret->action = OPT_INVISIBLE;
} else {
prepopt->action = OPT_SUBMENU;
prepopt->itemdata.radiomenunum = PREPMENU;
secret->action = OPT_SUBMENU;
secret->itemdata.submenunum = SECRETMENU;
}
rv.valid = 0;
rv.refresh = 1;
rv.reserved = 0;
return rv;
}
void msys_handler(t_menusystem * ms, t_menuitem * mi)
{
int nc, nr;
void *v;
if (getscreensize(1, &nr, &nc)) {
/* Unknown screen size? */
nc = 80;
nr = 24;
}
gotoxy(PWDLINE, PWDCOLUMN);
csprint("User: ", PWDATTR);
cprint(ms->fillchar, ms->fillattr, sizeof username);
gotoxy(PWDLINE, PWDCOLUMN + 6);
csprint(username, PWDATTR);
if (mi->parindex != PREPMENU) // If we are not in the PREP MENU
{
gotoxy(INFLINE, 0);
reset_colors();
clear_line();
gotoxy(INFLINE + 1, 0);
clear_line();
return;
}
strcpy(infoline, " ");
if (flags.baseurl)
strcat(infoline, "baseurl=http://192.168.11.12/gui ");
if (flags.mountcd)
strcat(infoline, "mountcd=yes ");
v = (void *)network->data;
if (v != NULL) // Some network option specified
{
strcat(infoline, "network=");
strcat(infoline, (char *)(((t_menuitem *) v)->data));
}
if (flags.winrep)
strcat(infoline, "repair=win ");
if (flags.linrep)
strcat(infoline, "repair=lin ");
gotoxy(INFLINE, 0);
reset_colors();
clear_line();
gotoxy(INFLINE + 1, 0);
clear_line();
gotoxy(INFLINE, 0);
csprint("Kernel Arguments:", 0x07);
gotoxy(INFLINE, 17);
csprint(infoline, 0x07);
}
t_handler_return network_handler(t_menusystem * ms, t_menuitem * mi)
{
// mi=network since this is handler only for that.
(void)ms; // Unused
if (mi->data == (void *)none)
mi->item = nonet;
if (mi->data == (void *)stat)
mi->item = statnet;
if (mi->data == (void *)dhcp)
mi->item = dhcpnet;
return ACTION_INVALID; // VALID or INVALID does not matter
}
t_handler_return checkbox_handler(t_menusystem * ms, t_menuitem * mi)
{
(void)ms; /* Unused */
t_handler_return rv;
if (mi->action != OPT_CHECKBOX)
return ACTION_INVALID;
if (strcmp(mi->data, "baseurl") == 0)
flags.baseurl = (mi->itemdata.checked ? 1 : 0);
if (strcmp(mi->data, "winrepair") == 0) {
if (mi->itemdata.checked) {
flags.winrep = 1;
linrep->action = OPT_INACTIVE;
} else {
flags.winrep = 0;
linrep->action = OPT_CHECKBOX;
}
}
if (strcmp(mi->data, "linrepair") == 0) {
if (mi->itemdata.checked) {
flags.linrep = 1;
winrep->action = OPT_INACTIVE;
} else {
flags.winrep = 0;
winrep->action = OPT_CHECKBOX;
}
}
if (strcmp(mi->data, "mountcd") == 0)
flags.mountcd = (mi->itemdata.checked ? 1 : 0);
rv.valid = 0;
rv.refresh = 1;
rv.reserved = 0;
return rv;
}
int main(void)
{
t_menuitem *curr;
char cmd[160];
char ip[30];
// Set default username as guest
strcpy(username, GUEST_USER);
// Switch video mode here
// setvideomode(0x18); // or whatever mode you want
// Choose the default title and setup default values for all attributes....
init_passwords("/isolinux/password");
init_help("/isolinux/help");
init_menusystem(NULL);
set_window_size(1, 1, 20, 78); // Leave some space around
// Choose the default values for all attributes and char's
// -1 means choose defaults (Actually the next 4 lines are not needed)
//set_normal_attr (-1,-1,-1,-1);
//set_status_info (-1,-1); // Display status on the last line
//set_title_info (-1,-1);
//set_misc_info(-1,-1,-1,-1);
// Register the menusystem handler
reg_handler(HDLR_SCREEN, &msys_handler);
reg_handler(HDLR_KEYS, &keys_handler);
// Register the ontimeout handler, with a time out of 10 seconds
reg_ontimeout(ontimeout, 10, 0);
NETMENU = add_menu(" Init Network ", -1);
none = add_item("<N>one", "Dont start network", OPT_RADIOITEM, "no ", 0);
dhcp = add_item("<d>hcp", "Use DHCP", OPT_RADIOITEM, "dhcp ", 0);
stat =
add_item("<s>tatic", "Use static IP I will specify later",
OPT_RADIOITEM, "static ", 0);
TESTING = add_menu(" Testing ", -1);
set_menu_pos(5, 55);
add_item("<M>emory Test", "Perform extensive memory testing", OPT_RUN,
"memtest", 0);
add_item("<I>nvisible", "You dont see this", OPT_INVISIBLE, "junk", 0);
add_item("<E>xit this menu", "Go one level up", OPT_EXITMENU, "exit", 0);
RESCUE = add_menu(" Rescue Options ", -1);
add_item("<L>inux Rescue", "linresc", OPT_RUN, "linresc", 0);
add_item("<D>os Rescue", "dosresc", OPT_RUN, "dosresc", 0);
add_item("<W>indows Rescue", "winresc", OPT_RUN, "winresc", 0);
add_item("<E>xit this menu", "Go one level up", OPT_EXITMENU, "exit", 0);
PREPMENU = add_menu(" Prep options ", -1);
baseurl =
add_item("<b>aseurl by IP?", "Specify gui baseurl by IP address",
OPT_CHECKBOX, "baseurl", 0);
mountcd =
add_item("<m>ountcd?", "Mount the cdrom drive?", OPT_CHECKBOX,
"mountcd", 0);
network =
add_item(dhcpnet, "How to initialise network device?", OPT_RADIOMENU,
NULL, NETMENU);
add_sep();
winrep =
add_item("Reinstall <w>indows",
"Re-install the windows side of a dual boot setup",
OPT_CHECKBOX, "winrepair", 0);
linrep =
add_item("Reinstall <l>inux",
"Re-install the linux side of a dual boot setup", OPT_CHECKBOX,
"linrepair", 0);
add_sep();
runprep =
add_item("<R>un prep now", "Execute prep with the above options",
OPT_RUN, "prep", 0);
add_item("<E>xit this menu", "Go up one level", OPT_EXITMENU, "exitmenu",
0);
baseurl->handler = &checkbox_handler;
mountcd->handler = &checkbox_handler;
winrep->handler = &checkbox_handler;
linrep->handler = &checkbox_handler;
network->handler = &network_handler;
flags.baseurl = 0;
flags.mountcd = 0;
flags.winrep = 0;
flags.linrep = 0;
SECRETMENU = add_menu(" Secret Menu ", -1);
add_item("secret 1", "Secret", OPT_RUN, "A", 0);
add_item("secret 2", "Secret", OPT_RUN, "A", 0);
LONGMENU = add_menu(" Long Menu ", 40); // Override default here
add_item("<A>a", "Aa", OPT_RUN, "A", 0);
add_item("<B>b", "Ab", OPT_RUN, "A", 0);
add_item("<C>", "A", OPT_RUN, "A", 0);
add_item("<D>", "A", OPT_RUN, "A", 0);
add_item("<E>", "A", OPT_RUN, "A", 0);
add_item("<F>", "A", OPT_RUN, "A", 0);
add_item("<G>", "A", OPT_RUN, "A", 0);
add_item("<H>", "A", OPT_RUN, "A", 0);
add_item("<I>", "A", OPT_RUN, "A", 0);
add_item("<J>", "A", OPT_RUN, "A", 0);
add_item("<K>", "A", OPT_RUN, "A", 0);
add_item("<L>", "A", OPT_RUN, "A", 0);
add_item("<J>", "A", OPT_RUN, "A", 0);
add_item("<K>", "A", OPT_RUN, "A", 0);
add_item("<L>", "A", OPT_RUN, "A", 0);
add_item("<M>", "A", OPT_RUN, "A", 0);
add_item("<N>", "A", OPT_RUN, "A", 0);
add_item("<O>", "A", OPT_RUN, "A", 0);
add_item("<P>", "A", OPT_RUN, "A", 0);
add_item("<Q>", "A", OPT_RUN, "A", 0);
add_item("<R>", "A", OPT_RUN, "A", 0);
add_item("<S>", "A", OPT_RUN, "A", 0);
add_item("<T>", "A", OPT_RUN, "A", 0);
add_item("<U>", "A", OPT_RUN, "A", 0);
add_item("<V>", "A", OPT_RUN, "A", 0);
add_item("<W>", "A", OPT_RUN, "A", 0);
add_item("<X>", "A", OPT_RUN, "A", 0);
add_item("<Y>", "A", OPT_RUN, "A", 0);
add_item("<Z>", "A", OPT_RUN, "A", 0);
add_item("<1>", "A", OPT_RUN, "A", 0);
add_item("<2>", "A", OPT_RUN, "A", 0);
add_item("<3>", "A", OPT_RUN, "A", 0);
add_item("<4>", "A", OPT_RUN, "A", 0);
add_item("<5>", "A", OPT_RUN, "A", 0);
add_item("<6>", "A", OPT_RUN, "A", 0);
add_item("<7>", "A", OPT_RUN, "A", 0);
add_item("<8>", "A", OPT_RUN, "A", 0);
add_item("<9>", "A", OPT_RUN, "A", 0);
MAIN = add_menu(" Main Menu ", 8);
curr = add_item(loginstr, "Login as a privileged user", OPT_RUN, NULL, 0);
set_item_options(-1, 23);
curr->handler = &login_handler;
add_item("<P>repare", "prep", OPT_RUN, "prep", 0);
set_item_options(-1, 24);
prepopt =
add_item("<P>rep options...",
"Options for prep image: Requires authenticated user",
OPT_INACTIVE, NULL, PREPMENU);
set_item_options(-1, 25);
add_item("<R>escue options...", "Troubleshoot a system", OPT_SUBMENU, NULL,
RESCUE);
set_item_options(-1, 26);
add_item("<T>esting...", "Options to test hardware", OPT_SUBMENU, NULL,
TESTING);
set_item_options(-1, 27);
add_item("<L>ong Menu...", "test menu system", OPT_SUBMENU, NULL, LONGMENU);
set_item_options(-1, 28);
secret =
add_item("<S>ecret Menu...", "Secret menu", OPT_INVISIBLE, NULL,
SECRETMENU);
set_item_options(-1, 29);
add_item("<E>xit to prompt", "Exit the menu system", OPT_EXITMENU, "exit",
0);
set_item_options(-1, 30);
csprint("Press any key within 5 seconds to show menu...", 0x07);
if (get_key(stdin, 50) == KEY_NONE) // Granularity of 100 milliseconds
{
csprint("Sorry! Time's up.\r\n", 0x07);
return 1;
}
curr = showmenus(MAIN);
if (curr) {
if (curr->action == OPT_RUN) {
strcpy(cmd, curr->data);
if (curr == runprep) {
strcat(cmd, infoline);
if (network->data == (void *)stat) // We want static
{
csprint("Enter IP address (last two octets only): ", 0x07);
strcpy(ip, "Junk");
editstring(ip, sizeof ip);
strcat(cmd, "ipaddr=192.168.");
strcat(cmd, ip);
}
}
if (issyslinux())
runsyslinuxcmd(cmd);
else
csprint(cmd, 0x07);
return 1; // Should not happen when run from SYSLINUX
}
}
// If user quits the menu system, control comes here
// If you want to execute some specific command uncomment the next two lines
// if (syslinux) runcommand(YOUR_COMMAND_HERE);
// else csprint(YOUR_COMMAND_HERE,0x07);
// Deallocate space used for these data structures
close_passwords();
close_help();
close_menusystem();
// Return to prompt
return 0;
}

36
com32/cmenu/display.c Normal file
View File

@ -0,0 +1,36 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2006 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#ifndef NULL
#define NULL ((void *) 0)
#endif
#include "help.h"
#include "com32io.h"
#include "cmenu.h"
#include "tui.h"
#include <stdlib.h>
#include <com32.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
if (argc < 2) {
csprint("Usage: display.c32 <textfile>\n", 0x07);
exit(1);
}
init_help(NULL); // No base dir, so all filenames must be absolute
runhelp(argv[1]);
close_help();
return 0;
}

294
com32/cmenu/libmenu/cmenu.h Normal file
View File

@ -0,0 +1,294 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
/* This program can be compiled for DOS with the OpenWatcom compiler
* (http://www.openwatcom.org/):
*
* wcl -3 -osx -mt <filename>.c
*/
#ifndef __MENU_H__
#define __MENU_H__
#include "com32io.h"
#include "tui.h"
#include "syslnx.h"
#include <string.h>
#include <unistd.h>
// TIMEOUT PARAMETERS
/* If no key is pressed within TIMEOUTNUMSTEPS * TIMEOUTSTEPSIZE milliseconds
and if a timeout handler is registered, then that will be called.
The handler should either either take control from there on, or return without
producing any change in the current video settings.
For e.g. the handler could
* Could just quit the menu program
* beep and return.
TIMEOUTSTEPSIZE is the interval for which the program sleeps without checking for
any keystroke. So increasing this will make the response of the system slow.
Decreasing this will make a lot of interrupt calls using up your CPU. Default
value of TIMEOUTSTEPSIZE of 0.1 seconds should be right in most cases.
TIMEOUTNUMSTEPS of 3000 corresponds to a wait time of 300 seconds or 5 minutes
*/
#define TIMEOUTSTEPSIZE 10
#define TIMEOUTNUMSTEPS 30000L
// Attributes
#define NORMALATTR 0x17
#define NORMALHLITE 0x1F // Normal Highlight attribute
#define REVERSEATTR 0x70
#define REVERSEHLITE 0x78 // Reverse Hightlight attribute
#define INACTATTR 0x18
#define INACTHLITE 0x10 // Inactive Highlight attribute
#define REVINACTATTR 0x78
#define REVINACTHLITE 0x70 // Reverse Inactive Highlight attr
#define STATUSATTR 0x74
#define STATUSHLITE 0x7B // Status highlight
#define FILLCHAR ' '
#define FILLATTR NORMALATTR
#define SHADOWATTR 0x00
#define SPACECHAR ' '
#define TFILLCHAR ' '
#define TITLEATTR 0x70
#define ENABLEHLITE '<' // Char which turns on highlight
#define DISABLEHLITE '>' // Char which turns off highlight
#define NOHLITE 0 // The offset into attrib array for non-hilite
#define HLITE 1 // The offset for Hlite attrib
#define MOREABOVE '^' // char to print when more menu items available above
#define MOREBELOW 'v' // more items available below
// Attributes of the menu system
#define MAXMENUS 250 // Maximum number of menu's allowed
#define MAXMENUSIZE 100 // Default value for max num of entries in each menu
#define MAXMENUHEIGHT 20 // Maximum number of entries displayed
#define MENUBOXTYPE BOX_SINSIN // Default box type Look at tui.h for other values
// Upper bounds on lengths
// We copy the given string, so user can reuse the space used to store incoming arguments.
#define MENULEN 78 // Each menu entry is atmost MENULEN chars
#define STATLEN 78 // Maximum length of status string
#define TITLELEN 78 // Maximum length of title string
#define ACTIONLEN 255 // Maximum length of an action string
// Layout of menu
#define MENUROW 3 // Row where menu is displayed (relative to window)
#define MENUCOL 4 // Col where menu is displayed (relative to window)
#define MENUPAGE 1 // show in display page 1
#define STATLINE 24 // Line number where status line starts (relative to window)
// Used for printing debugging messages
#define DEBUGLINE 23 // debugging info goes here
// Other Chars
#define RADIOMENUCHAR '>' // > symbol for radio menu?
#define CHECKED '\140' // Check mark
#define UNCHECKED '\146' // Light bullet
#define RADIOSEL '.' // Current Radio Selection
#define RADIOUNSEL ' ' // Radio option not selected
typedef unsigned char uchar;
// Types of menu's
#define NORMALMENU 1
#define RADIOMENU 2
typedef enum { OPT_INACTIVE, OPT_SUBMENU, OPT_RUN, OPT_EXITMENU, OPT_CHECKBOX,
OPT_RADIOMENU, OPT_SEP, OPT_INVISIBLE,
OPT_RADIOITEM
} t_action;
typedef union {
uchar submenunum; // For submenu's
uchar checked; // For check boxes
uchar radiomenunum; // Item mapping to a radio menu
} t_itemdata;
struct s_menuitem;
struct s_menu;
struct s_menusystem;
typedef struct {
unsigned int valid:1; // Is action valid?
unsigned int refresh:1; // Should we recompute menu stuff?
unsigned int reserved:6; // For future expansion
} t_handler_return;
t_handler_return ACTION_VALID, ACTION_INVALID; // Specific values
typedef t_handler_return(*t_item_handler) (struct s_menusystem *,
struct s_menuitem *);
typedef void (*t_menusystem_handler) (struct s_menusystem *,
struct s_menuitem *);
typedef void (*t_keys_handler) (struct s_menusystem *, struct s_menuitem *,
unsigned int scancode);
// Last parameter = HIGH BYTE = scan code , LOW BYTE = ASCII CODE
typedef enum { HDLR_SCREEN, HDLR_KEYS } t_handler;
// Types of handlers for menu system
// TIMEOUT is the list of possible values which can be returned by the handler
// instructing the menusystem what to do. The default is CODE_WAIT
typedef enum { CODE_WAIT, CODE_ENTER, CODE_ESCAPE } TIMEOUTCODE;
typedef TIMEOUTCODE(*t_timeout_handler) (void);
typedef struct s_menuitem {
char *item;
char *status;
char *data; // string containing kernel to run.. but...
// for radio menu's this is a pointer to the item selected or NULL (initially)
// for submenu's this string could be name of menu
void *extra_data; // Any other data user can point to
unsigned int helpid; // Used for Context sensitive help
t_item_handler handler; // Pointer to function of type menufn
t_action action;
t_itemdata itemdata; // Data depends on action value
uchar shortcut; // one of [A-Za-z0-9] shortcut for this menu item
uchar index; // Index within the menu array
uchar parindex; // Index of the menu in which this item appears.
} t_menuitem;
typedef t_menuitem *pt_menuitem; // Pointer to type menuitem
typedef struct s_menu {
pt_menuitem *items; // pointer to array of pointer to menuitems
char *title; // Title string for menu
char *name; // menu can be referred to by this string
int maxmenusize; // the size of array allocated
uchar numitems; // how many items do we actually have
uchar menuwidth;
uchar row, col; // Position where this menu should be displayed
uchar menuheight; // Maximum number of items to be displayed
} t_menu;
typedef t_menu *pt_menu; // Pointer to type menu
typedef struct s_menusystem {
pt_menu menus[MAXMENUS];
char *title;
t_menusystem_handler handler; // Menu system handler
t_keys_handler keys_handler; // Handler for unknown keys
t_timeout_handler ontimeout; // Timeout handler
unsigned long tm_numsteps;
// Time to wait for key press=numsteps * stepsize milliseconds
unsigned int tm_stepsize; // Timeout step size (in milliseconds)
// Total timeout max time spent idle before we call handler
unsigned long tm_total_timeout; // (in milli seconds)
unsigned long tm_sofar_timeout; // All accumulated timeout
// total timeout handler
t_timeout_handler ontotaltimeout; // Total timeout handler
int maxmenuheight;
uchar nummenus;
uchar normalattr[2]; // [0] is non-hlite attr, [1] is hlite attr
uchar reverseattr[2];
uchar inactattr[2];
uchar revinactattr[2];
uchar statusattr[2];
uchar fillchar;
uchar fillattr;
uchar spacechar;
uchar tfillchar;
uchar titleattr;
uchar shadowattr;
uchar statline;
uchar menupage;
int maxrow, minrow, numrows; // Number of rows in the window
int maxcol, mincol, numcols; // Number of columns in the window
// Menu box look
char box_horiz, box_ltrt, box_rtlt; // Some chars of the box, for redrawing portions of the box
} t_menusystem;
typedef t_menusystem *pt_menusystem; // Pointer to type menusystem
pt_menuitem showmenus(uchar startmenu);
pt_menusystem init_menusystem(const char *title);
void close_menusystem(void); // Deallocate memory used
void set_normal_attr(uchar normal, uchar selected, uchar inactivenormal,
uchar inactiveselected);
void set_normal_hlite(uchar normal, uchar selected, uchar inactivenormal,
uchar inactiveselected);
void set_status_info(uchar statusattr, uchar statushlite, uchar statline);
void set_title_info(uchar tfillchar, uchar titleattr);
void set_misc_info(uchar fillchar, uchar fillattr, uchar spacechar,
uchar shadowattr);
void set_window_size(uchar top, uchar left, uchar bot, uchar right); // Set the window which menusystem should use
void set_menu_options(uchar maxmenuheight);
// maximum height of a menu
void reg_handler(t_handler htype, void *handler); // Register handler
void unreg_handler(t_handler htype);
void reg_ontimeout(t_timeout_handler, unsigned int numsteps,
unsigned int stepsize);
// Set timeout handler, set 0 for default values.
// So stepsize=0 means numsteps is measured in centiseconds.
void unreg_ontimeout(void);
void reg_ontotaltimeout(t_timeout_handler, unsigned long numcentiseconds);
void unreg_ontotaltimeout(void);
// Find the number of the menu given the name
// Returns -1 if not found
uchar find_menu_num(const char *name);
// Create a new menu and return its position
uchar add_menu(const char *title, int maxmenusize);
// Create a named menu and return its position
uchar add_named_menu(const char *name, const char *title, int maxmenusize);
void set_menu_pos(uchar row, uchar col); // Set the position of this menu.
// Add item to the "current" menu
pt_menuitem add_item(const char *item, const char *status, t_action action,
const char *data, uchar itemdata);
// Set shortcut key and help id
void set_item_options(uchar shortcut, int helpid);
// Set the shortcut key for the current item
static inline void set_shortcut(uchar shortcut)
{
set_item_options(shortcut, 0xFFFF);
}
// Add a separator to the "current" menu
pt_menuitem add_sep(void);
// Generate string based on state of checkboxes and radioitem in given menu
// and append string to existing contents of "line"
// line must have enough space allocated
void gen_append_line(const char *menu_name, char *line);
#endif

View File

@ -0,0 +1,78 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#include <string.h>
#include <com32.h>
#include "com32io.h"
#include "tui.h"
#include "syslnx.h"
com32sys_t inreg, outreg; // Global register sets for use
void getpos(char *row, char *col, char page)
{
memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x03;
REG_BH(inreg) = page;
__intcall(0x10, &inreg, &outreg);
*row = REG_DH(outreg);
*col = REG_DL(outreg);
}
char inputc(char *scancode)
{
syslinux_idle(); /* So syslinux can perform periodic activity */
memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x10;
__intcall(0x16, &inreg, &outreg);
if (scancode)
*scancode = REG_AH(outreg);
return REG_AL(outreg);
}
void getcursorshape(char *start, char *end)
{
char page = 0; // XXX TODO
memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x03;
REG_BH(inreg) = page;
__intcall(0x10, &inreg, &outreg);
*start = REG_CH(outreg);
*end = REG_CL(outreg);
}
void setcursorshape(char start, char end)
{
memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x01;
REG_CH(inreg) = start;
REG_CL(inreg) = end;
__intcall(0x10, &inreg, &outreg);
}
void setvideomode(char mode)
{
memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x00;
REG_AL(inreg) = mode;
__intcall(0x10, &inreg, &outreg);
}
// Get char displayed at current position
unsigned char getcharat(char page)
{
memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x08;
REG_BH(inreg) = page;
__intcall(0x16, &inreg, &outreg);
return REG_AL(outreg);
}

View File

@ -0,0 +1,66 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#ifndef __COM32IO_H__
#define __COM32IO_H__
#include <com32.h>
#include <stdio.h>
#include <libansi.h>
#ifndef NULL
#define NULL ((void *)0)
#endif
/* Bits representing ShiftFlags, See Int16/Function 2 or Mem[0x417] to get this info */
#define INSERT_ON (1<<7)
#define CAPSLOCK_ON (1<<6)
#define NUMLOCK_ON (1<<5)
#define SCRLLOCK_ON (1<<4)
#define ALT_PRESSED (1<<3)
#define CTRL_PRESSED (1<<2)
// actually 1<<1 is Left Shift, 1<<0 is right shift
#define SHIFT_PRESSED (1<<1 | 1 <<0)
/* BIOS Assisted output routines */
void getpos(char *row, char *col, char page);
char inputc(char *scancode); // Return ASCII char by val, and scancode by reference
void setcursorshape(char start, char end); // Set cursor shape
void getcursorshape(char *start, char *end); // Get shape for current page
// Get char displayed at current position in specified page
unsigned char getcharat(char page);
static inline unsigned char readbiosb(unsigned int ofs)
{
return *((unsigned char *)MK_PTR(0, ofs));
}
static inline char getshiftflags(void)
{
return readbiosb(0x417);
}
void scrollupwindow(char top, char left, char bot, char right, char attr, char numlines); //Scroll up given window
void setvideomode(char mode); // Set the video mode.
static inline char getvideomode(void) // Get the current video mode
{
return readbiosb(0x449);
}
#endif

1064
com32/cmenu/libmenu/des.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
#ifndef _DES_H_
#define _DES_H_
// des crypt
extern char *crypt(const char *key, const char *salt);
#endif

231
com32/cmenu/libmenu/help.c Normal file
View File

@ -0,0 +1,231 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#include "help.h"
#include <stdio.h>
#include "string.h"
#include "com32io.h"
#include <syslinux/loadfile.h> // to read entire file into memory
int nc, nr; // Number of columns/rows of the screen
char helpbasedir[HELPDIRLEN]; // name of help directory limited to HELPDIRLEN
// Find the occurence of the count'th \n in buffer (or NULL) if not found
static char *findline(char *buffer, int count)
{
int ctr;
char *p = buffer - 1;
if (count < 1)
return buffer;
for (ctr = 0; ctr < count; ctr++) {
p = strchr(p + 1, '\n');
if (p == NULL)
return NULL;
}
return p;
}
// return the number of lines in buffer
static int countlines(char *buffer)
{
int ans;
const char *p;
p = buffer - 1;
ans = 1;
while (p) {
p = strchr(p + 1, '\n');
ans++;
}
return ans;
}
// Print numlines of text starting from buf
static void printtext(char *buf, int from)
{
char *f, *t;
int nlines, i;
// clear window to print
nlines = nr - HELP_BODY_ROW - HELP_BOTTOM_MARGIN - 1;
f = findline(buf, from);
if (!f)
return; // nothing to print
if (*f == '\n')
f++; // start of from+1st line
t = f;
for (i = 0; i < nlines; i++) {
gotoxy(HELP_BODY_ROW + i, HELP_LEFT_MARGIN);
clear_end_of_line();
putchar(SO);
gotoxy(HELP_BODY_ROW + i, nc - 1);
putch(LEFT_BORDER, 0x07);
putchar(SI);
gotoxy(HELP_BODY_ROW + i, HELP_LEFT_MARGIN);
while (*t != '\n') {
if (*t == '\0')
return;
putchar(*t);
t++;
}
putchar('\n');
t++;
}
}
void showhelp(const char *filename)
{
char ph;
char *title, *text;
union {
char *buffer;
void *vbuf;
} buf; // This is to avoild type-punning issues
char line[512];
size_t size;
int scan;
int rv, numlines, curr_line;
if (getscreensize(1, &nr, &nc)) {
/* Unknown screen size? */
nc = 80;
nr = 24;
}
ph = nr - HELP_BODY_ROW;
cls();
/* Turn autowrap off, to avoid scrolling the menu */
printf(CSI "?7l");
if (filename == NULL) { // print file contents
strcpy(line, "Filename not given");
goto puke;
}
rv = loadfile(filename, (void **)&buf.vbuf, &size); // load entire file into memory
if (rv < 0) { // Error reading file or no such file
sprintf(line, "Error reading file or file not found\n file=%s", filename);
goto puke;
}
title = buf.buffer;
text = findline(title, 1); // end of first line
*text++ = '\0'; // end the title string and increment text
// Now we have a file just print it.
numlines = countlines(text);
curr_line = 0;
scan = KEY_ESC + 1; // anything except ESCAPE
/* top, left, bottom, right, attr */
drawbox(0, 0, nr - 1, nc - 1, 0x07);
while (scan != KEY_ESC) {
/* Title */
gotoxy(1, (nc - strlen(title)) / 2);
fputs(title, stdout);
drawhorizline(2, HELP_LEFT_MARGIN - 1, nc - HELP_RIGHT_MARGIN, 0x07, 0); // dumb==0
/* Text */
printtext(text, curr_line);
gotoxy(HELP_BODY_ROW - 1, nc - HELP_RIGHT_MARGIN);
if (curr_line > 0)
putchar(HELP_MORE_ABOVE);
else
putchar(' ');
gotoxy(nr - HELP_BOTTOM_MARGIN - 1, nc - HELP_RIGHT_MARGIN);
if (curr_line < numlines - ph)
putchar(HELP_MORE_BELOW);
else
putchar(' ');
scan = get_key(stdout, 0); // wait for user keypress
switch (scan) {
case KEY_HOME:
curr_line = 0;
break;
case KEY_END:
curr_line = numlines;
break;
case KEY_UP:
curr_line--;
break;
case KEY_DOWN:
curr_line++;
break;
case KEY_PGUP:
curr_line -= ph;
break;
case KEY_PGDN:
curr_line += ph;
break;
default:
break;
}
if (curr_line > numlines - ph)
curr_line = numlines - ph;
if (curr_line < 0)
curr_line = 0;
}
out:
cls();
return;
puke:
gotoxy(HELP_BODY_ROW, HELP_LEFT_MARGIN);
fputs(line, stdout);
while (1) {
scan = get_key(stdin, 0);
if (scan == KEY_ESC)
break;
}
goto out;
}
void runhelp(const char *filename)
{
char fullname[HELPDIRLEN + 16];
cls();
cursoroff();
if (helpbasedir[0] != 0) {
strcpy(fullname, helpbasedir);
strcat(fullname, "/");
strcat(fullname, filename);
showhelp(fullname);
} else
showhelp(filename); // Assume filename is absolute
}
void runhelpsystem(unsigned int helpid)
{
char filename[15];
sprintf(filename, "hlp%05d.txt", helpid);
runhelp(filename);
}
void init_help(const char *helpdir)
{
if (helpdir != NULL)
strcpy(helpbasedir, helpdir);
else
helpbasedir[0] = 0;
}
void close_help(void)
{
}

View File

@ -0,0 +1,49 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#ifndef __HELP_H_
#define __HELP_H_
#include "cmenu.h"
#include "com32io.h"
#include "tui.h"
#include <string.h>
// How many rows for the title
#define HELP_TITLE_HEIGHT 1
#define HELP_BODY_ROW (HELP_TITLE_HEIGHT+3)
#define HELP_LEFT_MARGIN 2
#define HELP_RIGHT_MARGIN 2 // Assume all lines dont cross this
#define HELP_BOTTOM_MARGIN 1 // Number of lines not use from bottom of screen
#define HELPBOX BOX_SINSIN
#define HELPDIRLEN 64
#define HELPPAGE 2
#define HELP_MORE_ABOVE '^' // to print when more is available above
#define HELP_MORE_BELOW 'v' // same as above but for below
// Display one screen of help information
void showhelp(const char *filename);
// Start the help system using id helpid
void runhelpsystem(unsigned int helpid);
// Start help system with specified file
void runhelp(const char *filename);
// Directory where help files are located
void init_help(const char *helpdir);
// Free internal datastructures
void close_help(void);
#endif

1273
com32/cmenu/libmenu/menu.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,159 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Bostom MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#include "passwords.h"
#include "des.h"
#include "string.h"
#include <stdlib.h>
#include <stdio.h>
#include "tui.h"
#define MAX_LINE 512
// Max line length in a pwdfile
p_pwdentry userdb[MAX_USERS]; // Array of pointers
int numusers; // Actual number of users
// returns true or false, i.e. 1 or 0
char authenticate_user(const char *username, const char *pwd)
{
char salt[12];
int i;
for (i = 0; i < numusers; i++) {
if (userdb[i] == NULL)
continue;
if (strcmp(username, userdb[i]->username) == 0) {
strcpy(salt, userdb[i]->pwdhash);
salt[2] = '\0';
if (strcmp(userdb[i]->pwdhash, crypt(pwd, salt)) == 0)
return 1;
}
}
return 0;
}
// Does user USERNAME have permission PERM
char isallowed(const char *username, const char *perm)
{
int i;
char *dperm;
char *tmp;
// If no users, then everybody is allowed to do everything
if (numusers == 0)
return 1;
if (strcmp(username, GUEST_USER) == 0)
return 0;
dperm = (char *)malloc(strlen(perm) + 3);
strcpy(dperm + 1, perm);
dperm[0] = ':';
dperm[strlen(perm) + 1] = ':';
dperm[strlen(perm) + 2] = 0;
// Now dperm = ":perm:"
for (i = 0; i < numusers; i++) {
if (strcmp(userdb[i]->username, username) == 0) // Found the user
{
if (userdb[i]->perms == NULL)
return 0; // No permission
tmp = strstr(userdb[i]->perms, dperm); // Search for permission
free(dperm); // Release memory
if (tmp == NULL)
return 0;
else
return 1;
}
}
// User not found return 0
free(dperm);
return 0;
}
// Initialise the list of of user passwords permissions from file
void init_passwords(const char *filename)
{
int i;
char line[MAX_LINE], *p, *user, *pwdhash, *perms;
FILE *f;
for (i = 0; i < MAX_USERS; i++)
userdb[i] = NULL;
numusers = 0;
if (!filename)
return; // No filename specified
f = fopen(filename, "r");
if (!f)
return; // File does not exist
// Process each line
while (fgets(line, sizeof line, f)) {
// Replace EOLN with \0
p = strchr(line, '\r');
if (p)
*p = '\0';
p = strchr(line, '\n');
if (p)
*p = '\0';
// If comment line or empty ignore line
p = line;
while (*p == ' ')
p++; // skip initial spaces
if ((*p == '#') || (*p == '\0'))
continue; // Skip comment lines
user = p; // This is where username starts
p = strchr(user, ':');
if (p == NULL)
continue; // Malformed line skip
*p = '\0';
pwdhash = p + 1;
if (*pwdhash == 0)
continue; // Malformed line (no password specified)
p = strchr(pwdhash, ':');
if (p == NULL) { // No perms specified
perms = NULL;
} else {
*p = '\0';
perms = p + 1;
if (*perms == 0)
perms = NULL;
}
// At this point we have user,pwdhash and perms setup
userdb[numusers] = (p_pwdentry) malloc(sizeof(pwdentry));
strcpy(userdb[numusers]->username, user);
strcpy(userdb[numusers]->pwdhash, pwdhash);
if (perms == NULL)
userdb[numusers]->perms = NULL;
else {
userdb[numusers]->perms = (char *)malloc(strlen(perms) + 3);
(userdb[numusers]->perms)[0] = ':';
strcpy(userdb[numusers]->perms + 1, perms);
(userdb[numusers]->perms)[strlen(perms) + 1] = ':';
(userdb[numusers]->perms)[strlen(perms) + 2] = 0;
// Now perms field points to ":perms:"
}
numusers++;
}
fclose(f);
}
void close_passwords(void)
{
int i;
for (i = 0; i < numusers; i++)
if (userdb[i] != NULL)
free(userdb[i]);
numusers = 0;
}

View File

@ -0,0 +1,27 @@
#ifndef _PASSWORDS_H_
#define _PASSWORDS_H_
char authenticate_user(const char *username, const char *pwd);
char isallowed(const char *username, const char *perm);
// Initialise the list of of user passwords permissions from file
void init_passwords(const char *filename);
// Free all space used for internal data structures
void close_passwords(void);
#define MAX_USERS 128 // Maximum number of users
#define USERNAME_LENGTH 12 // Max length of user name
#define PWDHASH_LENGTH 40 // Max lenght of pwd hash
typedef struct {
char username[USERNAME_LENGTH + 1];
char pwdhash[PWDHASH_LENGTH + 1];
char *perms; // pointer to string containing ":" delimited permissions
} pwdentry;
typedef pwdentry *p_pwdentry;
#define GUEST_USER "guest"
#endif

View File

@ -0,0 +1,65 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#include <string.h>
#include <com32.h>
#include <core.h>
#include <graphics.h>
#include "syslnx.h"
#include <syslinux/config.h>
#include <syslinux/video.h>
com32sys_t inreg, outreg; // Global registers for this module
void runsyslinuxcmd(const char *cmd)
{
char *bounce;
bounce = lmalloc(strlen(cmd) + 1);
if (!bounce)
return;
strcpy(bounce, cmd);
load_kernel(bounce);
}
void gototxtmode(void)
{
syslinux_force_text_mode();
}
void syslinux_idle(void)
{
__idle();
}
unsigned int getversion(char *deriv, unsigned int *numfun)
{
if (deriv)
*deriv = __syslinux_version.filesystem;
if (numfun)
*numfun = __syslinux_version.max_api;
return __syslinux_version.version;
}
char issyslinux(void)
{
return !!getversion(NULL, NULL);
}
void runsyslinuximage(const char *cmd, long ipappend)
{
(void)ipappend; // XXX: Unused?!
getversion(NULL, NULL);
runsyslinuxcmd(cmd);
}

View File

@ -0,0 +1,64 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#ifndef __SYSLNX_H__
#define __SYSLNX_H__
#include <com32.h>
//Macros which help user not have to remember the structure of register
// Data structure
#define REG_AH(x) ((x).eax.b[1])
#define REG_AL(x) ((x).eax.b[0])
#define REG_AX(x) ((x).eax.w[0])
#define REG_EAX(x) ((x).eax.l)
#define REG_BH(x) ((x).ebx.b[1])
#define REG_BL(x) ((x).ebx.b[0])
#define REG_BX(x) ((x).ebx.w[0])
#define REG_EBX(x) ((x).ebx.l)
#define REG_CH(x) ((x).ecx.b[1])
#define REG_CL(x) ((x).ecx.b[0])
#define REG_CX(x) ((x).ecx.w[0])
#define REG_ECX(x) ((x).ecx.l)
#define REG_DH(x) ((x).edx.b[1])
#define REG_DL(x) ((x).edx.b[0])
#define REG_DX(x) ((x).edx.w[0])
#define REG_EDX(x) ((x).edx.l)
#define REG_DS(x) ((x).ds)
#define REG_ES(x) ((x).es)
#define REG_FS(x) ((x).fs)
#define REG_GS(x) ((x).gs)
#define REG_SI(x) ((x).esi.w[0])
#define REG_ESI(x) ((x).esi.l)
#define REG_DI(x) ((x).edi.w[0])
#define REG_EDI(x) ((x).edi.l)
char issyslinux(void); /* Check if syslinux is running */
void runsyslinuxcmd(const char *cmd); /* Run specified command */
void gototxtmode(void); /* Change mode to text mode */
void syslinux_idle(void); /* Call syslinux idle loop */
/* Run command line with ipappend, returns if kernel image not found
If syslinux version too old, then defaults to runsyslinuxcmd */
void runsyslinuximage(const char *cmd, long ipappend);
#endif

258
com32/cmenu/libmenu/tui.c Normal file
View File

@ -0,0 +1,258 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2006 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#include "tui.h"
#include <string.h>
#include <com32.h>
#include <stdlib.h>
#include "com32io.h"
com32sys_t inreg, outreg; // Global register sets for use
char bkspstr[] = " \b$";
char eolstr[] = "\n$";
// Reads a line of input from stdin. Replace CR with NUL byte
// password <> 0 implies not echoed on screen
// showoldvalue <> 0 implies currentvalue displayed first
// If showoldvalue <> 0 then caller responsibility to ensure that
// str is NULL terminated.
void getuserinput(char *stra, unsigned int size, unsigned int password,
unsigned int showoldvalue)
{
unsigned int c;
char *p, *q; // p = current char of string, q = tmp
char *last; // The current last char of string
char *str; // pointer to string which is going to be allocated
char row, col;
char start, end; // Cursor shape
char fudge; // How many chars should be removed from output
char insmode; // Are we in insert or overwrite
getpos(&row, &col, 0); // Get current position
getcursorshape(&start, &end);
insmode = 1;
str = (char *)malloc(size + 1); // Allocate memory to store user input
memset(str, 0, size + 1); // Zero it out
if (password != 0)
showoldvalue = 0; // Password's never displayed
if (showoldvalue != 0)
strcpy(str, stra); // If show old value copy current value
last = str;
while (*last) {
last++;
} // Find the terminating null byte
p = str + strlen(str);
if (insmode == 0)
setcursorshape(1, 7); // Block cursor
else
setcursorshape(6, 7); // Normal cursor
// Invariants: p is the current char
// col is the corresponding column on the screen
if (password == 0) // Not a password, print initial value
{
gotoxy(row, col);
csprint(str, GETSTRATTR);
}
while (1) { // Do forever
c = get_key(stdin, 0);
if (c == KEY_ENTER)
break; // User hit Enter getout of loop
if (c == KEY_ESC) // User hit escape getout and nullify string
{
*str = 0;
break;
}
fudge = 0;
// if scan code is regognized do something
// else if char code is recognized do something
// else ignore
switch (c) {
case KEY_HOME:
p = str;
break;
case KEY_END:
p = last;
break;
case KEY_LEFT:
if (p > str)
p--;
break;
case KEY_CTRL(KEY_LEFT):
if (p == str)
break;
if (*p == ' ')
while ((p > str) && (*p == ' '))
p--;
else {
if (*(p - 1) == ' ') {
p--;
while ((p > str) && (*p == ' '))
p--;
}
}
while ((p > str) && ((*p == ' ') || (*(p - 1) != ' ')))
p--;
break;
case KEY_RIGHT:
if (p < last)
p++;
break;
case KEY_CTRL(KEY_RIGHT):
if (*p == 0)
break; // At end of string
if (*p != ' ')
while ((*p != 0) && (*p != ' '))
p++;
while ((*p != 0) && ((*p == ' ') && (*(p + 1) != ' ')))
p++;
if (*p == ' ')
p++;
break;
case KEY_DEL:
case KEY_DELETE:
q = p;
while (*(q + 1)) {
*q = *(q + 1);
q++;
}
if (last > str)
last--;
fudge = 1;
break;
case KEY_INSERT:
insmode = 1 - insmode; // Switch mode
if (insmode == 0)
setcursorshape(1, 7); // Block cursor
else
setcursorshape(6, 7); // Normal cursor
break;
case KEY_BACKSPACE: // Move over by one
q = p;
while (q <= last) {
*(q - 1) = *q;
q++;
}
if (last > str)
last--;
if (p > str)
p--;
fudge = 1;
break;
case KEY_CTRL('U'): /* Ctrl-U: kill input */
fudge = last - str;
while (p > str)
*p-- = 0;
p = str;
*p = 0;
last = str;
break;
default: // Handle insert and overwrite mode
if ((c >= ' ') && (c < 128) &&
((unsigned int)(p - str) < size - 1)) {
if (insmode == 0) { // Overwrite mode
if (p == last)
last++;
*last = 0;
*p++ = c;
} else { // Insert mode
if (p == last) { // last char
last++;
*last = 0;
*p++ = c;
} else { // Non-last char
q = last++;
while (q >= p) {
*q = *(q - 1);
q--;
}
*p++ = c;
}
}
} else
beep();
break;
}
// Now the string has been modified, print it
if (password == 0) {
gotoxy(row, col);
csprint(str, GETSTRATTR);
if (fudge > 0)
cprint(' ', GETSTRATTR, fudge);
gotoxy(row, col + (p - str));
}
} /* while */
*p = '\0';
if (password == 0)
csprint("\r\n", GETSTRATTR);
setcursorshape(start, end); // Block cursor
// If user hit ESCAPE so return without any changes
if (c != KEY_ESC)
strcpy(stra, str);
free(str);
}
//////////////////////////////Box Stuff
// Draw box and lines
void drawbox(const char top, const char left, const char bot,
const char right, const char attr)
{
unsigned char x;
putchar(SO);
// Top border
gotoxy(top, left);
putch(TOP_LEFT_CORNER_BORDER, attr);
cprint(TOP_BORDER, attr, right - left - 1);
putch(TOP_RIGHT_CORNER_BORDER, attr);
// Bottom border
gotoxy(bot, left);
putch(BOTTOM_LEFT_CORNER_BORDER, attr);
cprint(BOTTOM_BORDER, attr, right - left - 1);
putch(BOTTOM_RIGHT_CORNER_BORDER, attr);
// Left & right borders
for (x = top + 1; x < bot; x++) {
gotoxy(x, left);
putch(LEFT_BORDER, attr);
gotoxy(x, right);
putch(RIGHT_BORDER, attr);
}
putchar(SI);
}
void drawhorizline(const char top, const char left, const char right,
const char attr, char dumb)
{
unsigned char start, end;
if (dumb == 0) {
start = left + 1;
end = right - 1;
} else {
start = left;
end = right;
}
gotoxy(top, start);
putchar(SO);
cprint(MIDDLE_BORDER, attr, end - start + 1);
if (dumb == 0) {
gotoxy(top, left);
putch(MIDDLE_BORDER, attr);
gotoxy(top, right);
putch(MIDDLE_BORDER, attr);
}
putchar(SI);
}

75
com32/cmenu/libmenu/tui.h Normal file
View File

@ -0,0 +1,75 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#ifndef __TUI_H__
#define __TUI_H__
#include <com32.h>
#include <getkey.h>
#include <consoles.h>
#include "syslnx.h"
#include "com32io.h"
#ifndef NULL
#define NULL ((void *)0)
#endif
#define SO '\016'
#define SI '\017'
#define TOP_LEFT_CORNER_BORDER '\154'
#define TOP_BORDER '\161'
#define TOP_RIGHT_CORNER_BORDER '\153'
#define BOTTOM_LEFT_CORNER_BORDER '\155'
#define BOTTOM_BORDER '\161'
#define BOTTOM_RIGHT_CORNER_BORDER '\152'
#define LEFT_BORDER '\170'
#define RIGHT_BORDER '\170'
#define LEFT_MIDDLE_BORDER '\164'
#define MIDDLE_BORDER '\161'
#define RIGHT_MIDDLE_BORDER '\165'
#define BELL 0x07
#define GETSTRATTR 0x07
// Generic user input,
// password = 0 iff chars echoed on screen
// showoldvalue <> 0 iff current displayed for editing
void getuserinput(char *str, unsigned int size,
unsigned int password, unsigned int showoldvalue);
static inline void getstring(char *str, unsigned int size)
{
getuserinput(str, size, 0, 0);
}
static inline void editstring(char *str, unsigned int size)
{
getuserinput(str, size, 0, 1);
}
static inline void getpwd(char *str, unsigned int size)
{
getuserinput(str, size, 1, 0);
}
void drawbox(const char, const char, const char, const char,
const char);
// Draw a horizontal line
// dumb == 1, means just draw the line
// dumb == 0 means check the first and last positions and depending on what is
// currently on the screen make it a LTRT and/or RTLT appropriately.
void drawhorizline(const char, const char, const char, const char,
const char dumb);
#endif

307
com32/cmenu/menugen.py Normal file
View File

@ -0,0 +1,307 @@
#!/usr/bin/env python
import sys, re, getopt
class Menusystem:
types = {"run" : "OPT_RUN",
"inactive" : "OPT_INACTIVE",
"checkbox" : "OPT_CHECKBOX",
"radiomenu": "OPT_RADIOMENU",
"sep" : "OPT_SEP",
"invisible": "OPT_INVISIBLE",
"radioitem": "OPT_RADIOITEM",
"exitmenu" : "OPT_EXITMENU",
"login" : "login", # special type
"submenu" : "OPT_SUBMENU"}
entry_init = { "item" : "",
"info" : "",
"data" : "",
"ipappend" : 0, # flag to send in case of PXELINUX
"helpid" : 65535, # 0xFFFF
"shortcut":"-1",
"state" : 0, # initial state of checkboxes
"argsmenu": "", # name of menu containing arguments
"perms" : "", # permission required to execute this entry
"_updated" : None, # has this dictionary been updated
"type" : "run" }
menu_init = { "title" : "",
"row" : "0xFF", # let system decide position
"col" : "0xFF",
"_updated" : None,
"name" : "" }
system_init ={ "videomode" : "0xFF",
"title" : "Menu System",
"top" : "1",
"left" : "1" ,
"bot" : "21",
"right":"79",
"helpdir" : "/isolinux/help",
"pwdfile" : "",
"pwdrow" : "23",
"editrow" : "23",
"skipcondn" : "0",
"skipcmd" : ".exit",
"startfile": "",
"onerrorcmd":".repeat",
"exitcmd" : ".exit",
"exitcmdroot" : "",
"timeout" : "600",
"timeoutcmd":".beep",
"totaltimeout" : "0",
"totaltimeoutcmd" : ".wait"
}
shift_flags = { "alt" : "ALT_PRESSED",
"ctrl" : "CTRL_PRESSED",
"shift": "SHIFT_PRESSED",
"caps" : "CAPSLOCK_ON",
"num" : "NUMLOCK_ON",
"ins" : "INSERT_ON"
}
reqd_templates = ["item","login","menu","system"]
def __init__(self,template):
self.state = "system"
self.code_template_filename = template
self.menus = []
self.init_entry()
self.init_menu()
self.init_system()
self.vtypes = " OR ".join(list(self.types.keys()))
self.vattrs = " OR ".join([x for x in list(self.entry.keys()) if x[0] != "_"])
self.mattrs = " OR ".join([x for x in list(self.menu.keys()) if x[0] != "_"])
def init_entry(self):
self.entry = self.entry_init.copy()
def init_menu(self):
self.menu = self.menu_init.copy()
def init_system(self):
self.system = self.system_init.copy()
def add_menu(self,name):
self.add_item()
self.init_menu()
self.menu["name"] = name
self.menu["_updated"] = 1
self.menus.append( (self.menu,[]) )
def add_item(self):
if self.menu["_updated"]: # menu details have changed
self.menus[-1][0].update(self.menu)
self.init_menu()
if self.entry["_updated"]:
if not self.entry["info"]:
self.entry["info"] = self.entry["data"]
if not self.menus:
print("Error before line %d" % self.lineno)
print("REASON: menu must be declared before a menu item is declared")
sys.exit(1)
self.menus[-1][1].append(self.entry)
self.init_entry()
def set_item(self,name,value):
if name not in self.entry:
msg = ["Unknown attribute %s in line %d" % (name,self.lineno)]
msg.append("REASON: Attribute must be one of %s" % self.vattrs)
return "\n".join(msg)
if name=="type" and value not in self.types:
msg = [ "Unrecognized type %s in line %d" % (value,self.lineno)]
msg.append("REASON: Valid types are %s" % self.vtypes)
return "\n".join(msg)
if name=="shortcut":
if (value != "-1") and not re.match("^[A-Za-z0-9]$",value):
msg = [ "Invalid shortcut char '%s' in line %d" % (value,self.lineno) ]
msg.append("REASON: Valid values are [A-Za-z0-9]")
return "\n".join(msg)
elif value != "-1": value = "'%s'" % value
elif name in ["state","helpid","ipappend"]:
try:
value = int(value)
except:
return "Value of %s in line %d must be an integer" % (name,self.lineno)
self.entry[name] = value
self.entry["_updated"] = 1
return ""
def set_menu(self,name,value):
if name not in self.menu:
return "Error: Unknown keyword %s" % name
self.menu[name] = value
self.menu["_updated"] = 1
return ""
def set_system(self,name,value):
if name not in self.system:
return "Error: Unknown keyword %s" % name
if name == "skipcondn":
try: # is skipcondn a number?
a = int(value)
except: # it is a "-" delimited sequence
value = value.lower()
parts = [ self.shift_flags.get(x.strip(),None) for x in value.split("-") ]
self.system["skipcondn"] = " | ".join([_f for _f in parts if _f])
else:
self.system[name] = value
def set(self,name,value):
# remove quotes if given
if (value[0] == value[-1]) and (value[0] in ['"',"'"]): # remove quotes
value = value[1:-1]
if self.state == "system":
err = self.set_system(name,value)
if not err: return
if self.state == "menu":
err = self.set_menu(name,value)
# change state to entry it menu returns error
if err:
err = None
self.state = "item"
if self.state == "item":
err = self.set_item(name,value)
if not err: return
# all errors so return item's error message
print(err)
sys.exit(1)
def print_entry(self,entry,fd):
entry["type"] = self.types[entry["type"]]
if entry["type"] == "login": #special type
fd.write(self.templates["login"] % entry)
else:
fd.write(self.templates["item"] % entry)
def print_menu(self,menu,fd):
if menu["name"] == "main": self.foundmain = 1
fd.write(self.templates["menu"] % menu)
if (menu["row"] != "0xFF") or (menu["col"] != "0xFF"):
fd.write(' set_menu_pos(%(row)s,%(col)s);\n' % menu)
def output(self,filename):
curr_template = None
contents = []
self.templates = {}
regbeg = re.compile(r"^--(?P<name>[a-z]+) BEGINS?--\n$")
regend = re.compile(r"^--[a-z]+ ENDS?--\n$")
ifd = open(self.code_template_filename,"r")
for line in ifd.readlines():
b = regbeg.match(line)
e = regend.match(line)
if e: # end of template
if curr_template:
self.templates[curr_template] = "".join(contents)
curr_template = None
continue
if b:
curr_template = b.group("name")
contents = []
continue
if not curr_template: continue # lines between templates are ignored
contents.append(line)
ifd.close()
missing = None
for x in self.reqd_templates:
if x not in self.templates: missing = x
if missing:
print("Template %s required but not defined in %s" % (missing,self.code_template_filename))
if filename == "-":
fd = sys.stdout
else: fd = open(filename,"w")
self.foundmain = None
fd.write(self.templates["header"])
fd.write(self.templates["system"] % self.system)
for (menu,items) in self.menus:
self.print_menu(menu,fd)
for entry in items: self.print_entry(entry,fd)
fd.write(self.templates["footer"])
fd.close()
if not self.foundmain:
print("main menu not found")
print(self.menus)
sys.exit(1)
def input(self,filename):
if filename == "-":
fd = sys.stdin
else: fd = open(filename,"r")
self.lineno = 0
self.state = "system"
for line in fd.readlines():
self.lineno = self.lineno + 1
if line and line[-1] in ["\r","\n"]: line = line[:-1]
if line and line[-1] in ["\r","\n"]: line = line[:-1]
line = line.strip()
if line and line[0] in ["#",";"]: continue
try:
# blank line -> starting a new entry
if not line:
if self.state == "item": self.add_item()
continue
# starting a new section?
if line[0] == "[" and line[-1] == "]":
self.state = "menu"
self.add_menu(line[1:-1])
continue
# add property of current entry
pos = line.find("=") # find the first = in string
if pos < 0:
print("Syntax error in line %d" % self.lineno)
print("REASON: non-section lines must be of the form ATTRIBUTE=VALUE")
sys.exit(1)
attr = line[:pos].strip().lower()
value = line[pos+1:].strip()
self.set(attr,value)
except:
print("Error while parsing line %d: %s" % (self.lineno,line))
raise
fd.close()
self.add_item()
def usage():
print(sys.argv[0]," [options]")
print("--input=<file> is the name of the .menu file declaring the menu structure")
print("--output=<file> is the name of generated C source")
print("--template=<file> is the name of template to be used")
print()
print("input and output default to - (stdin and stdout respectively)")
print("template defaults to adv_menu.tpl")
sys.exit(1)
def main():
tfile = "adv_menu.tpl"
ifile = "-"
ofile = "-"
opts,args = getopt.getopt(sys.argv[1:], "hi:o:t:",["input=","output=","template=","help"])
if args:
print("Unknown options %s" % args)
usage()
for o,a in opts:
if o in ["-i","--input"]:
ifile = a
elif o in ["-o", "--output"]:
ofile = a
elif o in ["-t","--template"]:
tfile = a
elif o in ["-h","--help"]:
usage()
inst = Menusystem(tfile)
inst.input(ifile)
inst.output(ofile)
if __name__ == "__main__":
main()

18
com32/cmenu/password Normal file
View File

@ -0,0 +1,18 @@
# This file should be available as /isolinux/password
# for complex.c to use.
#
# All lines starting with # and empty lines are ignored
#
# All non-comment lines here are of the form
# USERNAME:PWDHASH:PERM1:PERM2:...:
#
# where USERNAME is maximum of 12 chars,
# PWDHASH is maximum of 40 chars (DES ENCRYPTED)
# PERM1,... are arbitrary strings
#
# The current lines correspond to
# user1:secret1, user2:secret2, user3:secret3
user1:LcMRo3YZGtP0c:editcmd
user2:FqewzyxP78a7A:
user3:MKjmc.IHoXBNU:root

82
com32/cmenu/simple.c Normal file
View File

@ -0,0 +1,82 @@
/* -*- c -*- ------------------------------------------------------------- *
*
* Copyright 2004-2005 Murali Krishnan Ganapathy - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 53 Temple Place Ste 330,
* Boston MA 02111-1307, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#ifndef NULL
#define NULL ((void *) 0)
#endif
#include "cmenu.h"
#include "com32io.h"
#include <string.h>
int main(void)
{
t_menuitem *curr;
// Change the video mode here
// setvideomode(0)
// Choose the default title and setup default values for all attributes....
init_menusystem(NULL);
set_window_size(1, 1, 23, 78); // Leave one row/col border all around
// Choose the default values for all attributes and char's
// -1 means choose defaults (Actually the next 4 lines are not needed)
//set_normal_attr (-1,-1,-1,-1);
//set_status_info (-1,-1);
//set_title_info (-1,-1);
//set_misc_info(-1,-1,-1,-1);
// menuindex = add_named_menu("name"," Menu Title ",-1);
// add_item("Item string","Status String",TYPE,"any string",NUM)
// TYPE = OPT_RUN | OPT_EXITMENU | OPT_SUBMENU | OPT_CHECKBOX | OPT_INACTIVE
// "any string" useful for storing kernel names
// In case of OPT_SUBMENU, "any string" can be set to "name" of menu to be linked
// in which case value NUM is ignored
// NUM = index of submenu if OPT_SUBMENU,
// 0/1 default checked state if OPT_CHECKBOX
// unused otherwise.
add_named_menu("testing", " Testing ", -1);
add_item("Self Loop", "Go to testing", OPT_SUBMENU, "testing", 0);
add_item("Memory Test", "Perform extensive memory testing", OPT_RUN,
"memtest", 0);
add_item("Exit this menu", "Go one level up", OPT_EXITMENU, "exit", 0);
add_named_menu("rescue", " Rescue Options ", -1);
add_item("Linux Rescue", "linresc", OPT_RUN, "linresc", 0);
add_item("Dos Rescue", "dosresc", OPT_RUN, "dosresc", 0);
add_item("Windows Rescue", "winresc", OPT_RUN, "winresc", 0);
add_item("Exit this menu", "Go one level up", OPT_EXITMENU, "exit", 0);
add_named_menu("main", " Main Menu ", -1);
add_item("Prepare", "prep", OPT_RUN, "prep", 0);
add_item("Rescue options...", "Troubleshoot a system", OPT_SUBMENU,
"rescue", 0);
add_item("Testing...", "Options to test hardware", OPT_SUBMENU, "testing",
0);
add_item("Exit to prompt", "Exit the menu system", OPT_EXITMENU, "exit", 0);
curr = showmenus(find_menu_num("main")); // Initial menu is the one called "main"
if (curr) {
if (curr->action == OPT_RUN) {
if (issyslinux())
runsyslinuxcmd(curr->data);
else
csprint(curr->data, 0x07);
return 1;
}
csprint("Error in programming!", 0x07);
}
return 0;
}

60
com32/cmenu/test.menu Normal file
View File

@ -0,0 +1,60 @@
# choose default title
title = "A test of the test.menu file"
top = 1
left = 1
bot = 23
right = 78
[testing]
title = " Testing "
item="Self Loop"
info="Go to Testing"
type=submenu
data=testing
item="Memory Test"
info="Perform extensive memory testing"
data="memtest"
item="Exit this menu"
info="Go one level up"
type=exitmenu
[rescue]
title = " Rescue Options "
row = 10
col = 10
item="Linux Rescue"
data="linresc"
item="Dos Rescue"
data="dosresc"
item="Windows Rescue"
data="winresc"
item="Exit this menu"
info="Go one level up"
type=exitmenu
[main]
title = " Main Menu "
item="Prepare"
data="prep"
item="Rescue options..."
info="Troubleshoot a system"
type=submenu
data="rescue"
item="Testing..."
info="Options to test hardware"
type=submenu
data="testing"
item="Exit this menu"
info="Go one level up"
type=exitmenu

142
com32/cmenu/test2.menu Normal file
View File

@ -0,0 +1,142 @@
title=" COMBOOT Menu System "
# location of help directory
helpdir="/isolinux/help"
pwdfile="/isolinux/password"
# skip the menu if shift is pressed or Caps is on
# if the menu is skipped run "skipcmd"
# in our case we run the OS on the first harddisk
skipcondn=shift-caps
skipcmd="chain.c32 hd 0"
# person with root privileges can exit menu
# others just repeat
exitcmd=".exit"
onerrorcmd=".beep 2 % % .help hlp00025.txt % .exit"
startfile="hlp00026.txt"
timeoutcmd=".wait"
totaltimeoutcmd="chain.c32 hd 0"
[netmenu]
title=" Init Network "
item="<N>one"
info="Dont start network"
type=radioitem
data="network=no"
item="<d>hcp"
info="Use DHCP"
type=radioitem
data="network=dhcp"
[testing]
title=" Testing "
item="<M>emory Test"
info="Perform extensive memory testing"
data="memtest"
helpid=25
ipappend=3
item="<I>nvisible"
info="You dont see this"
type=invisible
item="<E>xit menu"
info="Go one level up"
type=exitmenu
[rescue]
title=" Rescue Options "
item="<L>inux Rescue"
info="Run linresc"
data="linresc"
item="<D>os Rescue"
info="dosresc"
data="dosresc"
item="<W>indows Rescue"
info="winresc"
data="winresc"
item="<E>xit this menu"
info="Go one level up"
type=exitmenu
[prep]
title=" Prep options "
item="<b>aseurl by IP?"
info="Specify gui baseurl by IP address"
type=checkbox
data="baseurl=http://192.168.0.1"
item="<m>ountcd?"
info="Mount the cdrom drive?"
type=checkbox
data="mountcd"
item="Network Initialization"
info="How to initialise network device?"
type=radiomenu
data="netmenu"
type=sep
item="Reinstall <w>indows"
info="Re-install the windows side of a dual boot setup"
type=checkbox
data="repair=win"
item="Reinstall <l>inux"
info="Re-install the linux side of a dual boot setup"
type=checkbox
data="repair=lin"
type=sep
item="<R>un prep now"
info="Execute prep with the above options"
data="prep"
argsmenu="prep"
item="<E>xit this menu"
info="Go up one level"
type=exitmenu
[main]
title=" Main Menu "
type=login
item="<P>repare"
info="prep"
data="prep"
item="<P>rep options..."
info="Options for prep"
type=submenu
data="prep"
item="<R>escue options..."
info="Troubleshoot a system"
type=submenu
data="rescue"
helpid=26
item="<T>esting..."
info="Options to test hardware"
type=submenu
data="testing"
item="<E>xit to prompt"
info="Exit the menu system"
type=exitmenu

36
com32/elflink/Makefile Normal file
View File

@ -0,0 +1,36 @@
## -----------------------------------------------------------------------
##
## Copyright 2001-2008 H. Peter Anvin - All Rights Reserved
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, Inc., 53 Temple Place Ste 330,
## Boston MA 02111-1307, USA; either version 2 of the License, or
## (at your option) any later version; incorporated herein by reference.
##
## -----------------------------------------------------------------------
MODULES =
TESTFILES =
all: $(MODULES) $(TESTFILES)
test_memalign.elf : test_memalign.o $(LIBS) $(C_LIBS)
$(LD) $(LDFLAGS) -o $@ $^
test_com32.elf: CFLAGS += -DELF_DEBUG
test_com32.elf: test_com32.o ../lib/libcom32min.a $(LIBGCC)
$(LD) -n $(LDFLAGS) -o $@ test_com32.o $(LIBGCC) --whole-archive ../lib/libcom32min.a -Map test_com32.map
tidy dist:
rm -f *.o *.lo *.a *.lst *.elf .*.d *.map
clean: tidy
rm -f *.lss *.c32 *.lnx *.com
spotless: clean
rm -f *~ \#*
install:
-include .*.d

View File

@ -0,0 +1,59 @@
## -----------------------------------------------------------------------
##
## Copyright 2011-2013 Intel Corporation - All Rights Reserved
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, Inc., 53 Temple Place Ste 330,
## Boston MA 02111-1307, USA; either version 2 of the License, or
## (at your option) any later version; incorporated herein by reference.
##
## -----------------------------------------------------------------------
VPATH = $(SRC)
include $(MAKEDIR)/elf.mk
CFLAGS += -I$(topdir)/core/elflink -I$(topdir)/core/include -I$(topdir)/com32/lib -fvisibility=hidden
LIBS = --whole-archive $(objdir)/com32/lib/libcom32min.a
OBJS = ldlinux.o cli.o readconfig.o refstr.o colors.o getadv.o adv.o \
execute.o chainboot.o kernel.o get_key.o advwrite.o setadv.o \
loadhigh.o msg.o
BTARGET = $(LDLINUX)
ifeq ($(FWCLASS),EFI)
%.e$(BITS): %.elf
$(OBJCOPY) --strip-debug --strip-unneeded $< $@
SONAME = $(patsubst %.elf,%.e$(BITS),$(@F))
else
SONAME = $(patsubst %.elf,%.c32,$(@F))
endif
all: $(BTARGET) ldlinux_lnx.a
ldlinux.elf : $(OBJS)
$(LD) $(LDFLAGS) -soname $(SONAME) -o $@ $^ $(LIBS)
LNXCFLAGS += -D__export='__attribute__((visibility("default")))'
LNXLIBOBJS = get_key.lo
ldlinux_lnx.a: $(LNXLIBOBJS)
rm -f $@
$(AR) cq $@ $(LNXLIBOBJS)
$(RANLIB) $@
tidy dist:
rm -f *.o *.lo *.a *.lst .*.d
clean: tidy
rm -f *.lss *.lnx *.com
spotless: clean
rm -f *~ \#* $(BTARGET)
install: all
mkdir -m 755 -p $(INSTALLROOT)$(AUXDIR)
install -m 644 $(BTARGET) $(INSTALLROOT)$(AUXDIR)
-include .*.d

View File

@ -0,0 +1,42 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2007-2008 H. Peter Anvin - All Rights Reserved
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
/*
* syslinux/adv.c
*
* Access the syslinux auxiliary data vector
*/
#include <syslinux/adv.h>
#include <syslinux/firmware.h>
#include <klibc/compiler.h>
#include <syslinux/adv.h>
void __constructor __syslinux_init(void)
{
firmware->adv_ops->init();
}

View File

@ -0,0 +1,41 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2007-2008 H. Peter Anvin - All Rights Reserved
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
/*
* syslinux/advwrite.c
*
* Write back the ADV
*/
#include <klibc/compiler.h>
#include <syslinux/adv.h>
#include <syslinux/firmware.h>
__export int syslinux_adv_write(void)
{
return firmware->adv_ops->write();
}

View File

@ -0,0 +1,156 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2012 Intel Corporation, author: H. Peter Anvin
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston MA 02110-1301, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
/*
* chainbooting - replace the current bootloader completely. This
* is BIOS-specific.
*/
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <dprintf.h>
#include <com32.h>
#include <sys/exec.h>
#include <sys/io.h>
#include "core.h"
#include "menu.h"
#include "fs.h"
#include "config.h"
#include "localboot.h"
#include "bios.h"
#include <syslinux/boot.h>
#include <syslinux/bootrm.h>
#include <syslinux/movebits.h>
#include <syslinux/config.h>
void chainboot_file(const char *file, uint32_t type)
{
uint8_t keeppxe = 0;
const union syslinux_derivative_info *sdi;
struct syslinux_rm_regs regs;
struct syslinux_movelist *fraglist = NULL;
struct syslinux_memmap *mmap = NULL;
struct com32_filedata fd;
com32sys_t reg;
char *stack;
void *buf;
int rv, max, size;
max = 0xA0000; /* Maximum load */
buf = malloc(max);
if (!buf)
goto bail;
rv = open_file(file, O_RDONLY, &fd);
if (rv == -1)
goto bail;
reg.eax.l = max;
reg.ebx.l = 0;
reg.edx.w[0] = 0;
reg.edi.l = (uint32_t)buf;
reg.ebp.l = -1; /* XXX: limit? */
reg.esi.w[0] = rv;
pm_load_high(&reg);
size = reg.edi.l - (unsigned long)buf;
if (size > 0xA0000 - 0x7C00) {
printf("Too large for a boostrap (need LINUX instead of KERNEL?)\n");
goto bail;
}
mmap = syslinux_memory_map();
if (!mmap)
goto bail;
sdi = syslinux_derivative_info();
memset(&regs, 0, sizeof(regs));
regs.ip = 0x7c00;
if (sdi->c.filesystem == SYSLINUX_FS_SYSLINUX ||
sdi->c.filesystem == SYSLINUX_FS_EXTLINUX) {
if (syslinux_add_movelist(&fraglist, 0x800 - 18,
(addr_t)sdi->r.esbx, 16))
goto bail;
/* DS:SI points to partition info */
regs.esi.l = 0x800 - 18;
}
/*
* For a BSS boot sector we have to transfer the
* superblock.
*/
if (sdi->c.filesystem == SYSLINUX_FS_SYSLINUX &&
type == IMAGE_TYPE_BSS && this_fs->fs_ops->copy_super(buf))
goto bail;
if (sdi->c.filesystem == SYSLINUX_FS_PXELINUX) {
keeppxe = 0x03; /* Chainloading + keep PXE */
stack = (char *)sdi->r.fssi;
/*
* Set up the registers with their initial values
*/
regs.eax.l = *(uint32_t *)&stack[36];
regs.ecx.l = *(uint32_t *)&stack[32];
regs.edx.l = *(uint32_t *)&stack[28];
regs.ebx.l = *(uint32_t *)&stack[24];
regs.esp.l = sdi->rr.r.esi.w[0] + 44;
regs.ebp.l = *(uint32_t *)&stack[16];
regs.esi.l = *(uint32_t *)&stack[12];
regs.edi.l = *(uint32_t *)&stack[8];
regs.es = *(uint16_t *)&stack[4];
regs.ss = sdi->rr.r.fs;
regs.ds = *(uint16_t *)&stack[6];
regs.fs = *(uint16_t *)&stack[2];
regs.gs = *(uint16_t *)&stack[0];
} else {
const uint16_t *esdi = (const uint16_t *)sdi->disk.esdi_ptr;
regs.esp.l = (uint16_t)(unsigned long)StackBuf + 44;
/*
* DON'T DO THIS FOR PXELINUX...
* For PXE, ES:BX -> PXENV+, and this would
* corrupt that use.
*
* Restore ES:DI -> $PnP (if we were ourselves
* called that way...)
*/
regs.edi.w[0] = esdi[0]; /* New DI */
regs.es = esdi[2]; /* New ES */
regs.edx.l = sdi->rr.r.edx.b[0]; /* Drive number -> DL */
}
if (syslinux_add_movelist(&fraglist, 0x7c00, (addr_t)buf, size))
goto bail;
syslinux_shuffle_boot_rm(fraglist, mmap, keeppxe, &regs);
bail:
if (fraglist)
syslinux_free_movelist(fraglist);
if (mmap)
syslinux_free_memmap(mmap);
if (buf)
free(buf);
return;
}

486
com32/elflink/ldlinux/cli.c Normal file
View File

@ -0,0 +1,486 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <console.h>
#include <com32.h>
#include <syslinux/adv.h>
#include <syslinux/config.h>
#include <setjmp.h>
#include <netinet/in.h>
#include <limits.h>
#include <minmax.h>
#include <linux/list.h>
#include <sys/exec.h>
#include <sys/module.h>
#include <dprintf.h>
#include <core.h>
#include "getkey.h"
#include "menu.h"
#include "cli.h"
#include "config.h"
static struct list_head cli_history_head;
void clear_screen(void)
{
//dprintf("enter");
fputs("\033e\033%@\033)0\033(B\1#0\033[?25l\033[2J", stdout);
}
static int mygetkey_timeout(clock_t *kbd_to, clock_t *tto)
{
clock_t t0, t1;
int key;
t0 = times(NULL);
key = get_key(stdin, *kbd_to ? *kbd_to : *tto);
/* kbdtimeout only applies to the first character */
if (*kbd_to)
*kbd_to = 0;
t1 = times(NULL) - t0;
if (*tto) {
/* Timed out. */
if (*tto <= (long long)t1)
key = KEY_NONE;
else {
/* Did it wrap? */
if (*tto > totaltimeout)
key = KEY_NONE;
*tto -= t1;
}
}
return key;
}
static const char * cmd_reverse_search(int *cursor, clock_t *kbd_to,
clock_t *tto)
{
int key;
int i = 0;
char buf[MAX_CMDLINE_LEN];
const char *p = NULL;
struct cli_command *last_found;
struct cli_command *last_good = NULL;
last_found = list_entry(cli_history_head.next, typeof(*last_found), list);
memset(buf, 0, MAX_CMDLINE_LEN);
printf("\033[1G\033[1;36m(reverse-i-search)`': \033[0m");
while (1) {
key = mygetkey_timeout(kbd_to, tto);
if (key == KEY_CTRL('C')) {
return NULL;
} else if (key == KEY_CTRL('R')) {
if (i == 0)
continue; /* User typed nothing yet */
/* User typed 'CTRL-R' again, so try the next */
last_found = list_entry(last_found->list.next, typeof(*last_found), list);
} else if (key >= ' ' && key <= 'z') {
buf[i++] = key;
} else {
/* Treat other input chars as terminal */
break;
}
while (last_found) {
p = strstr(last_found->command, buf);
if (p)
break;
if (list_is_last(&last_found->list, &cli_history_head))
break;
last_found = list_entry(last_found->list.next, typeof(*last_found), list);
}
if (!p && !last_good) {
return NULL;
} else if (!p) {
continue;
} else {
last_good = last_found;
*cursor = p - last_good->command;
}
printf("\033[?7l\033[?25l");
/* Didn't handle the line wrap case here */
printf("\033[1G\033[1;36m(reverse-i-search)\033[0m`%s': %s",
buf, last_good->command ? : "");
printf("\033[K\r");
}
return last_good ? last_good->command : NULL;
}
const char *edit_cmdline(const char *input, int top /*, int width */ ,
int (*pDraw_Menu) (int, int, int),
void (*show_fkey) (int), bool *timedout)
{
static char cmdline[MAX_CMDLINE_LEN] = { };
int key, len, prev_len, cursor;
int redraw = 0;
int x, y;
bool done = false;
const char *ret;
int width = 0;
struct cli_command *comm_counter = NULL;
clock_t kbd_to = kbdtimeout;
clock_t tto = totaltimeout;
if (!width) {
int height;
if (getscreensize(1, &height, &width))
width = 80;
}
len = cursor = 0;
prev_len = 0;
x = y = 0;
/*
* Before we start messing with the x,y coordinates print 'input'
* so that it follows whatever text has been written to the screen
* previously.
*/
printf("%s ", input);
while (!done) {
if (redraw > 1) {
/* Clear and redraw whole screen */
/* Enable ASCII on G0 and DEC VT on G1; do it in this order
to avoid confusing the Linux console */
clear_screen();
if (pDraw_Menu)
(*pDraw_Menu) (-1, top, 1);
prev_len = 0;
printf("\033[2J\033[H");
// printf("\033[0m\033[2J\033[H");
}
if (redraw > 0) {
int dy, at;
prev_len = max(len, prev_len);
/* Redraw the command line */
printf("\033[?25l");
printf("\033[1G%s ", input);
x = strlen(input);
y = 0;
at = 0;
while (at < prev_len) {
putchar(at >= len ? ' ' : cmdline[at]);
at++;
x++;
if (x >= width) {
printf("\r\n");
x = 0;
y++;
}
}
printf("\033[K\r");
dy = y - (cursor + strlen(input) + 1) / width;
x = (cursor + strlen(input) + 1) % width;
if (dy) {
printf("\033[%dA", dy);
y -= dy;
}
if (x)
printf("\033[%dC", x);
printf("\033[?25h");
prev_len = len;
redraw = 0;
}
key = mygetkey_timeout(&kbd_to, &tto);
switch (key) {
case KEY_NONE:
/* We timed out. */
*timedout = true;
return NULL;
case KEY_CTRL('L'):
redraw = 2;
break;
case KEY_ENTER:
case KEY_CTRL('J'):
ret = cmdline;
done = true;
break;
case KEY_BACKSPACE:
case KEY_DEL:
if (cursor) {
memmove(cmdline + cursor - 1, cmdline + cursor,
len - cursor + 1);
len--;
cursor--;
redraw = 1;
}
break;
case KEY_CTRL('D'):
case KEY_DELETE:
if (cursor < len) {
memmove(cmdline + cursor, cmdline + cursor + 1, len - cursor);
len--;
redraw = 1;
}
break;
case KEY_CTRL('U'):
if (len) {
len = cursor = 0;
cmdline[len] = '\0';
redraw = 1;
}
break;
case KEY_CTRL('W'):
if (cursor) {
int prevcursor = cursor;
while (cursor && my_isspace(cmdline[cursor - 1]))
cursor--;
while (cursor && !my_isspace(cmdline[cursor - 1]))
cursor--;
#if 0
memmove(cmdline + cursor, cmdline + prevcursor,
len - prevcursor + 1);
#else
{
int i;
char *q = cmdline + cursor;
char *p = cmdline + prevcursor;
for (i = 0; i < len - prevcursor + 1; i++)
*q++ = *p++;
}
#endif
len -= (prevcursor - cursor);
redraw = 1;
}
break;
case KEY_LEFT:
case KEY_CTRL('B'):
if (cursor) {
cursor--;
redraw = 1;
}
break;
case KEY_RIGHT:
case KEY_CTRL('F'):
if (cursor < len) {
putchar(cmdline[cursor]);
cursor++;
x++;
if (x >= width) {
printf("\r\n");
y++;
x = 0;
}
}
break;
case KEY_CTRL('K'):
if (cursor < len) {
cmdline[len = cursor] = '\0';
redraw = 1;
}
break;
case KEY_HOME:
case KEY_CTRL('A'):
if (cursor) {
cursor = 0;
redraw = 1;
}
break;
case KEY_END:
case KEY_CTRL('E'):
if (cursor != len) {
cursor = len;
redraw = 1;
}
break;
case KEY_F1:
case KEY_F2:
case KEY_F3:
case KEY_F4:
case KEY_F5:
case KEY_F6:
case KEY_F7:
case KEY_F8:
case KEY_F9:
case KEY_F10:
case KEY_F11:
case KEY_F12:
if (show_fkey != NULL) {
(*show_fkey) (key);
redraw = 1;
}
break;
case KEY_CTRL('P'):
case KEY_UP:
{
if (!list_empty(&cli_history_head)) {
struct list_head *next;
if (!comm_counter)
next = cli_history_head.next;
else
next = comm_counter->list.next;
comm_counter =
list_entry(next, typeof(*comm_counter), list);
if (&comm_counter->list != &cli_history_head)
strcpy(cmdline, comm_counter->command);
cursor = len = strlen(cmdline);
redraw = 1;
}
}
break;
case KEY_CTRL('N'):
case KEY_DOWN:
{
if (!list_empty(&cli_history_head)) {
struct list_head *prev;
if (!comm_counter)
prev = cli_history_head.prev;
else
prev = comm_counter->list.prev;
comm_counter =
list_entry(prev, typeof(*comm_counter), list);
if (&comm_counter->list != &cli_history_head)
strcpy(cmdline, comm_counter->command);
cursor = len = strlen(cmdline);
redraw = 1;
}
}
break;
case KEY_CTRL('R'):
{
/*
* Handle this case in another function, since it's
* a kind of special.
*/
const char *p = cmd_reverse_search(&cursor, &kbd_to, &tto);
if (p) {
strcpy(cmdline, p);
len = strlen(cmdline);
} else {
cmdline[0] = '\0';
cursor = len = 0;
}
redraw = 1;
}
break;
case KEY_TAB:
{
const char *p;
size_t len;
/* Label completion enabled? */
if (nocomplete)
break;
p = cmdline;
len = 0;
while(*p && !my_isspace(*p)) {
p++;
len++;
}
print_labels(cmdline, len);
redraw = 1;
break;
}
case KEY_CTRL('V'):
if (BIOSName)
printf("%s%s%s", syslinux_banner,
(char *)MK_PTR(0, BIOSName), copyright_str);
else
printf("%s%s", syslinux_banner, copyright_str);
redraw = 1;
break;
default:
if (key >= ' ' && key <= 0xFF && len < MAX_CMDLINE_LEN - 1) {
if (cursor == len) {
cmdline[len++] = key;
cmdline[len] = '\0';
putchar(key);
cursor++;
x++;
if (x >= width) {
printf("\r\n\033[K");
y++;
x = 0;
}
prev_len++;
} else {
if (cursor > len)
return NULL;
memmove(cmdline + cursor + 1, cmdline + cursor,
len - cursor + 1);
cmdline[cursor++] = key;
len++;
redraw = 1;
}
}
break;
}
}
printf("\033[?7h");
/* Add the command to the history if its length is larger than 0 */
len = strlen(ret);
if (len > 0) {
comm_counter = malloc(sizeof(struct cli_command));
comm_counter->command = malloc(sizeof(char) * (len + 1));
strcpy(comm_counter->command, ret);
list_add(&(comm_counter->list), &cli_history_head);
}
return len ? ret : NULL;
}
static int __constructor cli_init(void)
{
INIT_LIST_HEAD(&cli_history_head);
return 0;
}
static void __destructor cli_exit(void)
{
/* Nothing to do */
}

View File

@ -0,0 +1,184 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2004-2008 H. Peter Anvin - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston MA 02110-1301, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <colortbl.h>
#include "menu.h"
/*
* The color/attribute indexes (\1#X, \2#XX, \3#XXX) are as follows
*
* 00 - screen Rest of the screen
* 01 - border Border area
* 02 - title Title bar
* 03 - unsel Unselected menu item
* 04 - hotkey Unselected hotkey
* 05 - sel Selection bar
* 06 - hotsel Selected hotkey
* 07 - scrollbar Scroll bar
* 08 - tabmsg Press [Tab] message
* 09 - cmdmark Command line marker
* 10 - cmdline Command line
* 11 - pwdborder Password box border
* 12 - pwdheader Password box header
* 13 - pwdentry Password box contents
* 14 - timeout_msg Timeout message
* 15 - timeout Timeout counter
* 16 - help Current entry help text
* 17 - disabled Disabled menu item
*/
static const struct color_table default_colors[] = {
{"screen", "37;40", 0x80ffffff, 0x00000000, SHADOW_NORMAL},
{"border", "30;44", 0x40000000, 0x00000000, SHADOW_NORMAL},
{"title", "1;36;44", 0xc00090f0, 0x00000000, SHADOW_NORMAL},
{"unsel", "37;44", 0x90ffffff, 0x00000000, SHADOW_NORMAL},
{"hotkey", "1;37;44", 0xffffffff, 0x00000000, SHADOW_NORMAL},
{"sel", "7;37;40", 0xe0000000, 0x20ff8000, SHADOW_ALL},
{"hotsel", "1;7;37;40", 0xe0400000, 0x20ff8000, SHADOW_ALL},
{"scrollbar", "30;44", 0x40000000, 0x00000000, SHADOW_NORMAL},
{"tabmsg", "31;40", 0x90ffff00, 0x00000000, SHADOW_NORMAL},
{"cmdmark", "1;36;40", 0xc000ffff, 0x00000000, SHADOW_NORMAL},
{"cmdline", "37;40", 0xc0ffffff, 0x00000000, SHADOW_NORMAL},
{"pwdborder", "30;47", 0x80ffffff, 0x20ffffff, SHADOW_NORMAL},
{"pwdheader", "31;47", 0x80ff8080, 0x20ffffff, SHADOW_NORMAL},
{"pwdentry", "30;47", 0x80ffffff, 0x20ffffff, SHADOW_NORMAL},
{"timeout_msg", "37;40", 0x80ffffff, 0x00000000, SHADOW_NORMAL},
{"timeout", "1;37;40", 0xc0ffffff, 0x00000000, SHADOW_NORMAL},
{"help", "37;40", 0xc0ffffff, 0x00000000, SHADOW_NORMAL},
{"disabled", "1;30;44", 0x60cccccc, 0x00000000, SHADOW_NORMAL},
};
#define NCOLORS (sizeof default_colors/sizeof default_colors[0])
const int message_base_color = NCOLORS;
const int menu_color_table_size = NCOLORS + 256;
/* Algorithmically generate the msgXX colors */
void set_msg_colors_global(struct color_table *tbl,
unsigned int fg, unsigned int bg,
enum color_table_shadow shadow)
{
struct color_table *cp = tbl + message_base_color;
unsigned int i;
unsigned int fga, bga;
unsigned int fgh, bgh;
unsigned int fg_idx, bg_idx;
unsigned int fg_rgb, bg_rgb;
static const unsigned int pc2rgb[8] =
{ 0x000000, 0x0000ff, 0x00ff00, 0x00ffff, 0xff0000, 0xff00ff, 0xffff00,
0xffffff
};
/* Converting PC RGBI to sensible RGBA values is an "interesting"
proposition. This algorithm may need plenty of tweaking. */
fga = fg & 0xff000000;
fgh = ((fg >> 1) & 0xff000000) | 0x80000000;
bga = bg & 0xff000000;
bgh = ((bg >> 1) & 0xff000000) | 0x80000000;
for (i = 0; i < 256; i++) {
fg_idx = i & 15;
bg_idx = i >> 4;
fg_rgb = pc2rgb[fg_idx & 7] & fg;
bg_rgb = pc2rgb[bg_idx & 7] & bg;
if (fg_idx & 8) {
/* High intensity foreground */
fg_rgb |= fgh;
} else {
fg_rgb |= fga;
}
if (bg_idx == 0) {
/* Default black background, assume transparent */
bg_rgb = 0;
} else if (bg_idx & 8) {
bg_rgb |= bgh;
} else {
bg_rgb |= bga;
}
cp->argb_fg = fg_rgb;
cp->argb_bg = bg_rgb;
cp->shadow = shadow;
cp++;
}
}
struct color_table *default_color_table(void)
{
unsigned int i;
const struct color_table *dp;
struct color_table *cp;
struct color_table *color_table;
static const int pc2ansi[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
static char msg_names[6 * 256];
char *mp;
color_table = calloc(NCOLORS + 256, sizeof(struct color_table));
dp = default_colors;
cp = color_table;
for (i = 0; i < NCOLORS; i++) {
*cp = *dp;
cp->ansi = refstrdup(dp->ansi);
cp++;
dp++;
}
mp = msg_names;
for (i = 0; i < 256; i++) {
cp->name = mp;
mp += sprintf(mp, "msg%02x", i) + 1;
rsprintf(&cp->ansi, "%s3%d;4%d", (i & 8) ? "1;" : "",
pc2ansi[i & 7], pc2ansi[(i >> 4) & 7]);
cp++;
}
/*** XXX: This needs to move to run_menu() ***/
console_color_table = color_table;
console_color_table_size = NCOLORS + 256;
set_msg_colors_global(color_table, MSG_COLORS_DEF_FG,
MSG_COLORS_DEF_BG, MSG_COLORS_DEF_SHADOW);
return color_table;
}
struct color_table *copy_color_table(const struct color_table *master)
{
const struct color_table *dp;
struct color_table *color_table, *cp;
unsigned int i;
color_table = calloc(NCOLORS + 256, sizeof(struct color_table));
dp = master;
cp = color_table;
for (i = 0; i < NCOLORS + 256; i++) {
*cp = *dp;
cp->ansi = refstr_get(dp->ansi);
cp++;
dp++;
}
return color_table;
}

View File

@ -0,0 +1,52 @@
/*
* Copyright 2011 Intel Corporation - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston MA 02110-1301, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
*/
#ifndef __CONFIG_H__
#define __CONFIG_H__
/*
* These values correspond to the "default" and "ui" commands
* respectively. "ui" takes precendence over "default".
*/
#define LEVEL_DEFAULT 1
#define LEVEL_UI 2
extern short uappendlen; //bytes in append= command
extern short ontimeoutlen; //bytes in ontimeout command
extern short onerrorlen; //bytes in onerror command
extern short forceprompt; //force prompt
extern short noescape; //no escape
extern short nocomplete; //no label completion on TAB key
extern short allowimplicit; //allow implicit kernels
extern short allowoptions; //user-specified options allowed
extern short includelevel; //nesting level
extern short defaultlevel; //the current level of default
extern short vkernel; //have we seen any "label" statements?
extern short displaycon; //conio.inc
extern short nohalt; //idle.inc
extern const char *default_cmd; //"default" command line
extern const char *onerror; //"onerror" command line
extern const char *ontimeout; //"ontimeout" command line
extern void cat_help_file(int key);
extern struct menu_entry *find_label(const char *str);
extern void print_labels(const char *prefix, size_t len);
extern int new_linux_kernel(char *okernel, char *ocmdline);
extern void pm_load_high(com32sys_t *regs);
extern void ldlinux_enter_command(void);
extern void ldlinux_console_init(void);
extern const char *apply_extension(const char *kernel, const char *ext);
#endif /* __CONFIG_H__ */

View File

@ -0,0 +1,176 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2004-2008 H. Peter Anvin - All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston MA 02110-1301, USA; either version 2 of the License, or
* (at your option) any later version; incorporated herein by reference.
*
* ----------------------------------------------------------------------- */
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <dprintf.h>
#include <com32.h>
#include <sys/exec.h>
#include <sys/io.h>
#include <sys/module.h>
#include "core.h"
#include "menu.h"
#include "fs.h"
#include "config.h"
#include "localboot.h"
#include "bios.h"
#include <syslinux/bootrm.h>
#include <syslinux/movebits.h>
#include <syslinux/config.h>
#include <syslinux/boot.h>
const struct image_types image_boot_types[] = {
{ "localboot", IMAGE_TYPE_LOCALBOOT },
{ "kernel", IMAGE_TYPE_KERNEL },
{ "linux", IMAGE_TYPE_LINUX },
{ "boot", IMAGE_TYPE_BOOT },
{ "bss", IMAGE_TYPE_BSS },
{ "pxe", IMAGE_TYPE_PXE },
{ "fdimage", IMAGE_TYPE_FDIMAGE },
{ "com32", IMAGE_TYPE_COM32 },
{ "config", IMAGE_TYPE_CONFIG },
{ NULL, 0 },
};
extern jmp_buf __return_to_command_prompt;
extern int create_args_and_load(char *);
__export void execute(const char *cmdline, uint32_t type, bool sysappend)
{
const char *kernel, *args;
const char *p;
com32sys_t ireg;
char *q, ch;
memset(&ireg, 0, sizeof ireg);
if (strlen(cmdline) >= MAX_CMDLINE_LEN) {
printf("cmdline too long\n");
return;
}
q = malloc(MAX_CMDLINE_LEN);
if (!q) {
printf("%s(): Fail to malloc a buffer to exec %s\n",
__func__, cmdline);
return;
}
kernel = q;
p = cmdline;
while (*p && !my_isspace(*p))
*q++ = *p++;
*q++ = '\0';
args = q;
while (*p && my_isspace(*p))
p++;
do {
*q++ = ch = *p++;
} while (ch);
if (sysappend) {
/* If we've seen some args, insert a space */
if (--q != args)
*q++ = ' ';
do_sysappend(q);
}
dprintf("kernel is %s, args = %s type = %d \n", kernel, args, type);
if (kernel[0] == '.') {
/* It might be a type specifier */
const struct image_types *t;
for (t = image_boot_types; t->name; t++) {
if (!strcmp(kernel + 1, t->name)) {
/*
* Strip the type specifier, apply the
* filename extension if COM32 and
* retry.
*/
p = args;
if (t->type == IMAGE_TYPE_COM32) {
p = apply_extension(p, ".c32");
if (!p)
return;
}
execute(p, t->type, sysappend);
return;
}
}
}
if (type == IMAGE_TYPE_COM32) {
/*
* We may be called with the console in an unknown
* state, so initialise it.
*/
ldlinux_console_init();
/* new entry for elf format c32 */
if (create_args_and_load((char *)cmdline))
printf("Failed to load COM32 file %s\n", kernel);
/*
* The old COM32 module code would run the module then
* drop the user back at the command prompt,
* irrespective of how the COM32 module was loaded,
* e.g. from vesamenu.c32.
*/
unload_modules_since(LDLINUX);
/* Restore the console */
ldlinux_console_init();
/* Jump back to the main to call ldlinux_enter_command */
longjmp(__return_to_command_prompt, 1);
} else if (type == IMAGE_TYPE_CONFIG) {
char *argv[] = { LDLINUX, NULL, NULL };
char *config;
int rv;
/* kernel contains the config file name */
config = malloc(FILENAME_MAX);
if (!config)
goto out;
realpath(config, kernel, FILENAME_MAX);
/* If we got anything on the command line, do a chdir */
if (*args)
mangle_name(config_cwd, args);
argv[1] = config;
rv = start_ldlinux(2, argv);
printf("Failed to exec %s: %s\n", LDLINUX, strerror(rv));
} else if (type == IMAGE_TYPE_LOCALBOOT) {
local_boot(strtoul(kernel, NULL, 0));
} else if (type == IMAGE_TYPE_PXE || type == IMAGE_TYPE_BSS ||
type == IMAGE_TYPE_BOOT) {
chainboot_file(kernel, type);
} else {
/* Need add one item for kernel load, as we don't use
* the assembly runkernel.inc any more */
new_linux_kernel((char *)kernel, (char *)args);
}
out:
free((void *)kernel);
/* If this returns, something went bad; return to menu */
}

View File

@ -0,0 +1,243 @@
/* ----------------------------------------------------------------------- *
*
* Copyright 2004-2008 H. Peter Anvin - All Rights Reserved
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom
* the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall
* be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ----------------------------------------------------------------------- */
/*
* get_key.c
*
* Get a single key, and try to pick apart function key codes.
* This doesn't decode anywhere close to all possiblities, but
* hopefully is enough to be useful.
*/
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <time.h>
#include <sys/times.h>
#include <getkey.h>
#include <libutil.h>
#include <sys/file.h>
struct keycode {
int code;
int seqlen;
const unsigned char *seq;
};
#define CODE(x,y) { x, (sizeof y)-1, (const unsigned char *)(y) }
static const struct keycode keycodes[] = {
/* First, the BIOS combined codes */
CODE(KEY_F1, "\0\x3B"),
CODE(KEY_F2, "\0\x3C"),
CODE(KEY_F3, "\0\x3D"),
CODE(KEY_F4, "\0\x3E"),
CODE(KEY_F5, "\0\x3F"),
CODE(KEY_F6, "\0\x40"),
CODE(KEY_F7, "\0\x41"),
CODE(KEY_F8, "\0\x42"),
CODE(KEY_F9, "\0\x43"),
CODE(KEY_F10, "\0\x44"),
CODE(KEY_F11, "\0\x85"),
CODE(KEY_F12, "\0\x86"),
CODE(KEY_UP, "\0\x48"),
CODE(KEY_DOWN, "\0\x50"),
CODE(KEY_LEFT, "\0\x4B"),
CODE(KEY_RIGHT, "\0\x4D"),
CODE(KEY_PGUP, "\0\x49"),
CODE(KEY_PGDN, "\0\x51"),
CODE(KEY_HOME, "\0\x47"),
CODE(KEY_END, "\0\x4F"),
CODE(KEY_INSERT, "\0\x52"),
CODE(KEY_DELETE, "\0\x53"),
/* Now, VT/xterm/Linux codes */
CODE(KEY_F1, "\033[[A"),
CODE(KEY_F1, "\033OP"),
CODE(KEY_F2, "\033[[B"),
CODE(KEY_F2, "\033OQ"),
CODE(KEY_F3, "\033[[C"),
CODE(KEY_F3, "\033OR"),
CODE(KEY_F4, "\033[[D"),
CODE(KEY_F4, "\033OS"),
CODE(KEY_F5, "\033[[E"),
CODE(KEY_F5, "\033[15~"),
CODE(KEY_F6, "\033[17~"),
CODE(KEY_F7, "\033[18~"),
CODE(KEY_F8, "\033[19~"),
CODE(KEY_F9, "\033[20~"),
CODE(KEY_F10, "\033[21~"),
CODE(KEY_F11, "\033[23~"),
CODE(KEY_F12, "\033[24~"),
CODE(KEY_UP, "\033[A"),
CODE(KEY_DOWN, "\033[B"),
CODE(KEY_LEFT, "\033[D"),
CODE(KEY_RIGHT, "\033[C"),
CODE(KEY_PGUP, "\033[5~"),
CODE(KEY_PGUP, "\033[V"),
CODE(KEY_PGDN, "\033[6~"),
CODE(KEY_PGDN, "\033[U"),
CODE(KEY_HOME, "\033[1~"),
CODE(KEY_HOME, "\033[H"),
CODE(KEY_END, "\033[4~"),
CODE(KEY_END, "\033[F"),
CODE(KEY_END, "\033OF"),
CODE(KEY_INSERT, "\033[2~"),
CODE(KEY_INSERT, "\033[@"),
CODE(KEY_DELETE, "\033[3~"),
/* EFI scan codes */
CODE(KEY_UP, "\0\x01"),
CODE(KEY_DOWN, "\0\x02"),
CODE(KEY_RIGHT, "\0\x03"),
CODE(KEY_LEFT, "\0\x04"),
CODE(KEY_HOME, "\0\x05"),
CODE(KEY_END, "\0\x06"),
CODE(KEY_INSERT, "\0\x07"),
CODE(KEY_DELETE, "\0\x08"),
CODE(KEY_PGUP, "\0\x09"),
CODE(KEY_PGDN, "\0\x0a"),
CODE(KEY_F1, "\0\x0b"),
CODE(KEY_F2, "\0\x0c"),
CODE(KEY_F3, "\0\x0d"),
CODE(KEY_F4, "\0\x0e"),
CODE(KEY_F5, "\0\x0f"),
CODE(KEY_F6, "\0\x10"),
CODE(KEY_F7, "\0\x11"),
CODE(KEY_F8, "\0\x12"),
CODE(KEY_F9, "\0\x13"),
CODE(KEY_F10, "\0\x14"),
CODE(KEY_F11, "\0\x15"),
CODE(KEY_F12, "\0\x16"),
CODE(KEY_ESC, "\0\x17"),
};
#define NCODES ((int)(sizeof keycodes/sizeof(struct keycode)))
#define KEY_TIMEOUT ((CLK_TCK+9)/10)
/*
* Attempt to decode the key sequence in 'buffer'.
*
* On success (the data in 'buffer' matches a key code) put the
* corresponding key code in 'code' and return 0. Return 1 if 'buffer'
* partially matches a key code, i.e. we need more data before we can
* make an unambiguous match. Return -1 if the buffer does not contain
* a key code.
*/
int get_key_decode(char *buffer, int nc, int *code)
{
const struct keycode *kc;
int i, rv;
rv = -1;
for (i = 0, kc = keycodes; i < NCODES; i++, kc++) {
if (nc == kc->seqlen && !memcmp(buffer, kc->seq, nc)) {
*code = kc->code;
rv = 0;
break;
} else if (nc < kc->seqlen && !memcmp(buffer, kc->seq, nc)) {
rv = 1;
break;
}
}
return rv;
}
#ifdef __COM32__
extern ssize_t __rawcon_read(struct file_info *fp, void *buf, size_t count);
int raw_read(int fd, void *buf, size_t count)
{
(void)fd;
/*
* Instead of using the read(2) stdlib function use
* __rawcon_read() directly since we want a single key and
* don't want any processing/batching of the user input to
* occur - we want the raw data.
*/
return __rawcon_read(NULL, buf, count);
}
#else
extern int raw_read(int fd, void *buf, size_t count);
#endif
__export int get_key(FILE * f, clock_t timeout)
{
char buffer[KEY_MAXLEN];
int nc, rv;
int another;
char ch;
clock_t start;
int code;
/* We typically start in the middle of a clock tick */
if (timeout)
timeout++;
nc = 0;
start = times(NULL);
do {
rv = raw_read(fileno(f), &ch, 1);
if (rv == 0 || (rv == -1 && errno == EAGAIN)) {
clock_t lateness = times(NULL) - start;
if (nc && lateness > 1 + KEY_TIMEOUT) {
if (nc == 1)
return (unsigned char)buffer[0]; /* timeout */
else if (timeout && lateness > timeout)
return KEY_NONE;
} else if (!nc && timeout && lateness > timeout)
return KEY_NONE; /* timeout before sequence */
do_idle();
another = 1;
continue;
}
start = times(NULL);
buffer[nc++] = ch;
another = 0;
rv = get_key_decode(buffer, nc, &code);
if (!rv)
return code;
else if (rv == 1)
another = 1;
} while (another);
/* We got an unrecognized sequence; return the first character */
/* We really should remember this and return subsequent characters later */
return (unsigned char)buffer[0];
}

Some files were not shown because too many files have changed in this diff Show More