replace cp453 with cp867

This commit is contained in:
Wengier 2022-08-31 22:32:01 -04:00
parent 0b95fd6265
commit b980841360
23 changed files with 180 additions and 187 deletions

View File

@ -1,6 +1,8 @@
2022.09.0 (0.84.3)
- Added 86PCM support for PC-98 emulation. (nanshiki)
- Added German language translation. (Link-Mario)
- Added code page 867 for code page conversion, which
is compatible with Hebrew WordPerfect. (Wengier)
- Improved ANSI.SYS detection for the welcome banner
and CLS command. The command "INTRO WELCOME" will
re-display the welcome banner without running the

View File

@ -1,53 +1,45 @@
#
# Name: cp453_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
# Name: DOSHebrew to Unicode table
#
# Format: Three tab-separated columns
# Column #1 is the cp453 code (in hex)
# Column #1 is the 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 cp453 order
# The entries are in DOSHebrew order
#
# DOSBox-X: This has been modified to reflect the actual character codes on IBM PC MS-DOS CP437
0x00 0x0000 #NULL
0x01 0x263A #START OF HEADING
0x02 0x263B #START OF TEXT
0x03 0x2665 #END OF TEXT
0x04 0x2666 #END OF TRANSMISSION
0x05 0x2663 #ENQUIRY
0x06 0x2660 #ACKNOWLEDGE
0x07 0x2022 #BELL
0x08 0x25D8 #BACKSPACE
0x09 0x25CB #HORIZONTAL TABULATION
0x0a 0x25D9 #LINE FEED
0x0b 0x2642 #VERTICAL TABULATION
0x0c 0x2640 #FORM FEED
0x0d 0x266A #CARRIAGE RETURN
0x0e 0x266B #SHIFT OUT
0x0f 0x263C #SHIFT IN
0x10 0x25BA #DATA LINK ESCAPE
0x11 0x25C4 #DEVICE CONTROL ONE
0x12 0x2195 #DEVICE CONTROL TWO
0x13 0x203C #DEVICE CONTROL THREE
0x14 0x00B6 #DEVICE CONTROL FOUR
0x15 0x00A7 #NEGATIVE ACKNOWLEDGE
0x16 0x25AC #SYNCHRONOUS IDLE
0x17 0x21A8 #END OF TRANSMISSION BLOCK
0x18 0x2191 #CANCEL
0x19 0x2193 #END OF MEDIUM
0x1a 0x2192 #SUBSTITUTE
0x1b 0x2190 #ESCAPE
0x1c 0x221F #FILE SEPARATOR
0x1d 0x2194 #GROUP SEPARATOR
0x1e 0x25B2 #RECORD SEPARATOR
0x1f 0x25BC #UNIT SEPARATOR
0x01 0x05d0 #HEBREW LETTER ALEF
0x02 0x05d1 #HEBREW LETTER BET
0x03 0x05d2 #HEBREW LETTER GIMEL
0x04 0x05d3 #HEBREW LETTER DALET
0x05 0x05d4 #HEBREW LETTER HE
0x06 0x05d5 #HEBREW LETTER VAV
0x07 0x05d6 #HEBREW LETTER ZAYIN
0x08 0x05d7 #HEBREW LETTER HET
0x09 0x05d8 #HEBREW LETTER TET
0x0a 0x05d9 #HEBREW LETTER YOD
0x0b 0x05da #HEBREW LETTER FINAL KAF
0x0c 0x05db #HEBREW LETTER KAF
0x0d 0x05dc #HEBREW LETTER LAMED
0x0e 0x05dd #HEBREW LETTER FINAL MEM
0x0f 0x05de #HEBREW LETTER MEM
0x10 0x05df #HEBREW LETTER FINAL NUN
0x11 0x05e0 #HEBREW LETTER NUN
0x12 0x05e1 #HEBREW LETTER SAMEKH
0x13 0x05e2 #HEBREW LETTER AYIN
0x14 0x05e3 #HEBREW LETTER FINAL PE
0x15 0x05e4 #HEBREW LETTER PE
0x16 0x05e5 #HEBREW LETTER FINAL TSADI
0x17 0x05e6 #HEBREW LETTER TSADI
0x18 0x05e7 #HEBREW LETTER QOF
0x19 0x05e8 #HEBREW LETTER RESH
0x1a 0x05e9 #HEBREW LETTER SHIN
0x1b 0x05ea #HEBREW LETTER TAV
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
@ -144,38 +136,38 @@
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
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 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE
0x9e 0x00d7 #MULTIPLICATION SIGN
0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK
0x9d 0x00a5 #YEN SIGN
0x9e 0x20a7 #PESETA SIGN
0x9f 0x20aa #SHEKEL SIGN
0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE
0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE
0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE
@ -185,11 +177,11 @@
0xa6 0x00aa #FEMININE ORDINAL INDICATOR
0xa7 0x00ba #MASCULINE ORDINAL INDICATOR
0xa8 0x00bf #INVERTED QUESTION MARK
0xa9 0x00ae #REGISTERED SIGN
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
0xad 0x20ac #EURO SIGN
0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xb0 0x2591 #LIGHT SHADE
@ -197,16 +189,16 @@
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
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 0x00a2 #CENT SIGN
0xbe 0x00a5 #YEN SIGN
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
@ -214,8 +206,8 @@
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
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
@ -223,52 +215,52 @@
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
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 0x00a6 #BROKEN BAR
0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE
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
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
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 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
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 0x2017 #DOUBLE LOW LINE
0xf3 0x00be #VULGAR FRACTION THREE QUARTERS
0xf4 0x00b6 #PILCROW SIGN
0xf5 0x00a7 #SECTION 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 0x00b8 #CEDILLA
0xf7 0x2248 #ALMOST EQUAL TO
0xf8 0x00b0 #DEGREE SIGN
0xf9 0x00a8 #DIAERESIS
0xf9 0x2219 #BULLET OPERATOR
0xfa 0x00b7 #MIDDLE DOT
0xfb 0x00b9 #SUPERSCRIPT ONE
0xfc 0x00b3 #SUPERSCRIPT THREE
0xfb 0x221a #SQUARE ROOT
0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N
0xfd 0x00b2 #SUPERSCRIPT TWO
0xfe 0x25a0 #BLACK SQUARE
0xff 0x00a0 #NO-BREAK SPACE

View File

@ -1,6 +1,5 @@
#!/bin/bash
./sb2u.pl cp437_to_unicode <CP437.TXT >../../include/cp437_uni.h || exit 1
./sb2u.pl cp453_to_unicode <CP453.TXT >../../include/cp453_uni.h || exit 1
./sb2u.pl cp737_to_unicode <CP737.TXT >../../include/cp737_uni.h || exit 1
./sb2u.pl cp775_to_unicode <CP775.TXT >../../include/cp775_uni.h || exit 1
./sb2u.pl cp808_to_unicode <CP808.TXT >../../include/cp808_uni.h || exit 1
@ -19,6 +18,7 @@
./sb2u.pl cp864_to_unicode <CP864.TXT >../../include/cp864_uni.h || exit 1
./sb2u.pl cp865_to_unicode <CP865.TXT >../../include/cp865_uni.h || exit 1
./sb2u.pl cp866_to_unicode <CP866.TXT >../../include/cp866_uni.h || exit 1
./sb2u.pl cp867_to_unicode <CP867.TXT >../../include/cp867_uni.h || exit 1
./sb2u.pl cp869_to_unicode <CP869.TXT >../../include/cp869_uni.h || exit 1
./sb2u.pl cp872_to_unicode <CP872.TXT >../../include/cp872_uni.h || exit 1
./sb2u.pl cp874_to_unicode <CP874.TXT >../../include/cp874_uni.h || exit 1

View File

@ -2179,7 +2179,7 @@ CHCP nnn[:[language]]
Unterstützte Codepages, die in Verbindung mit
TrueType-Font-Output kombiniert werden können:
437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021
437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021
und 2-Byte-Codepages, inklusive 932, 936, 949, und 950/951.

View File

@ -2153,7 +2153,7 @@ CHCP nnn[:[language]]
Supported code pages for changing in the TrueType font output:
437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021
437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021
Also double-byte code pages including 932, 936, 949, and 950/951.

View File

@ -2151,7 +2151,7 @@ CHCP nnn[:[idioma]]
Códigos de página compatibles para la salida de fuente TrueType:
437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021
437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021
También páginas de códigos de doble byte incluyendo 932,936,949,950/951.

View File

@ -2157,7 +2157,7 @@ CHCP nnn[:[langue]]
Pages de code prises en charge pour être modifiées dans la sortie
de la police TrueType :
437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021
437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021
Également des pages de code à double octet, notamment 932, 936, 949 et 950/951.

View File

@ -2140,7 +2140,7 @@ CHCP nnn[:[language]]
TrueType フォント出力への変更をサポートするコードページ:
437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021
437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021
932, 936, 949, 950/951 等の2バイト言語のコードページもサポートします。

View File

@ -2154,7 +2154,7 @@ CHCP nnn[:[language]]
TrueType 글꼴 출력에 대한 변경을 지원하는 코드 페이지:
437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021
437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021
932, 936, 949, 950/951 등의 2바이트 언어 코드 페이지도 지원합니다.

View File

@ -2174,7 +2174,7 @@ CHCP nnn[:[idioma]]
Páginas de código compatíveis para a saída de fonte TrueType:
437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021
437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021
Também páginas de códigos de duplo byte includindo 932,936,949,950/951.

View File

@ -2154,7 +2154,7 @@ CHCP nnn[:[dil]]
TrueType yazıtipi çıktısında desteklenen kod sayfaları aşağıdaki gibidir:
437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021
437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021
Ek olarak 932,936,949,950/951 numaralı çoklu bit kod sayfaları da desteklenir.

View File

@ -2091,7 +2091,7 @@ CHCP nnn[:[语言]]
TrueType 字体输出方式所支持的代码页包括:
437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021
437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021
以及双字节代码页,包括: 932, 936, 949, 950/951

View File

@ -2095,7 +2095,7 @@ CHCP nnn[:[語言]]
在 TrueType 字型輸出方式所支援變更的字碼頁包括:
437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021
437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021
以及雙位元組字碼頁, 包括: 932, 936, 949, 950/951

View File

@ -1,35 +0,0 @@
/* single-byte charset to unicode. 0x0000 means no mapping */
const uint16_t cp453_to_unicode[256] = {
0x0000,0x263a,0x263b,0x2665,0x2666,0x2663,0x2660,0x2022, /* 0x00-0x07 */
0x25d8,0x25cb,0x25d9,0x2642,0x2640,0x266a,0x266b,0x263c, /* 0x08-0x0F */
0x25ba,0x25c4,0x2195,0x203c,0x00b6,0x00a7,0x25ac,0x21a8, /* 0x10-0x17 */
0x2191,0x2193,0x2192,0x2190,0x221f,0x2194,0x25b2,0x25bc, /* 0x18-0x1F */
0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, /* 0x20-0x27 */
0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, /* 0x28-0x2F */
0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, /* 0x30-0x37 */
0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, /* 0x38-0x3F */
0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, /* 0x40-0x47 */
0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, /* 0x48-0x4F */
0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, /* 0x50-0x57 */
0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, /* 0x58-0x5F */
0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, /* 0x60-0x67 */
0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, /* 0x68-0x6F */
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, /* 0x70-0x77 */
0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, /* 0x78-0x7F */
0x00c7,0x00fc,0x00e9,0x00e2,0x00e4,0x00e0,0x00e5,0x00e7, /* 0x80-0x87 */
0x00ea,0x00eb,0x00e8,0x00ef,0x00ee,0x00ec,0x00c4,0x00c5, /* 0x88-0x8F */
0x00c9,0x00e6,0x00c6,0x00f4,0x00f6,0x00f2,0x00fb,0x00f9, /* 0x90-0x97 */
0x00ff,0x00d6,0x00dc,0x00f8,0x00a3,0x00d8,0x00d7,0x0192, /* 0x98-0x9F */
0x00e1,0x00ed,0x00f3,0x00fa,0x00f1,0x00d1,0x00aa,0x00ba, /* 0xA0-0xA7 */
0x00bf,0x00ae,0x00ac,0x00bd,0x00bc,0x00a1,0x00ab,0x00bb, /* 0xA8-0xAF */
0x2591,0x2592,0x2593,0x2502,0x2524,0x00c1,0x00c2,0x00c0, /* 0xB0-0xB7 */
0x00a9,0x2563,0x2551,0x2557,0x255d,0x00a2,0x00a5,0x2510, /* 0xB8-0xBF */
0x2514,0x2534,0x252c,0x251c,0x2500,0x253c,0x00e3,0x00c3, /* 0xC0-0xC7 */
0x255a,0x2554,0x2569,0x2566,0x2560,0x2550,0x256c,0x00a4, /* 0xC8-0xCF */
0x00f0,0x00d0,0x00ca,0x00cb,0x00c8,0x0131,0x00cd,0x00ce, /* 0xD0-0xD7 */
0x00cf,0x2518,0x250c,0x2588,0x2584,0x00a6,0x00cc,0x2580, /* 0xD8-0xDF */
0x00d3,0x00df,0x00d4,0x00d2,0x00f5,0x00d5,0x00b5,0x00fe, /* 0xE0-0xE7 */
0x00de,0x00da,0x00db,0x00d9,0x00fd,0x00dd,0x00af,0x00b4, /* 0xE8-0xEF */
0x00ad,0x00b1,0x2017,0x00be,0x00b6,0x00a7,0x00f7,0x00b8, /* 0xF0-0xF7 */
0x00b0,0x00a8,0x00b7,0x00b9,0x00b3,0x00b2,0x25a0,0x00a0 /* 0xF8-0xFF */
};

35
include/cp867_uni.h Normal file
View File

@ -0,0 +1,35 @@
/* single-byte charset to unicode. 0x0000 means no mapping */
const uint16_t cp867_to_unicode[256] = {
0x0000,0x05d0,0x05d1,0x05d2,0x05d3,0x05d4,0x05d5,0x05d6, /* 0x00-0x07 */
0x05d7,0x05d8,0x05d9,0x05da,0x05db,0x05dc,0x05dd,0x05de, /* 0x08-0x0F */
0x05df,0x05e0,0x05e1,0x05e2,0x05e3,0x05e4,0x05e5,0x05e6, /* 0x10-0x17 */
0x05e7,0x05e8,0x05e9,0x05ea,0x001c,0x001d,0x001e,0x001f, /* 0x18-0x1F */
0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, /* 0x20-0x27 */
0x0028,0x0029,0x002a,0x002b,0x002c,0x002d,0x002e,0x002f, /* 0x28-0x2F */
0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, /* 0x30-0x37 */
0x0038,0x0039,0x003a,0x003b,0x003c,0x003d,0x003e,0x003f, /* 0x38-0x3F */
0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, /* 0x40-0x47 */
0x0048,0x0049,0x004a,0x004b,0x004c,0x004d,0x004e,0x004f, /* 0x48-0x4F */
0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, /* 0x50-0x57 */
0x0058,0x0059,0x005a,0x005b,0x005c,0x005d,0x005e,0x005f, /* 0x58-0x5F */
0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, /* 0x60-0x67 */
0x0068,0x0069,0x006a,0x006b,0x006c,0x006d,0x006e,0x006f, /* 0x68-0x6F */
0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, /* 0x70-0x77 */
0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, /* 0x78-0x7F */
0x05d0,0x05d1,0x05d2,0x05d3,0x05d4,0x05d5,0x05d6,0x05d7, /* 0x80-0x87 */
0x05d8,0x05d9,0x05da,0x05db,0x05dc,0x05dd,0x05de,0x05df, /* 0x88-0x8F */
0x05e0,0x05e1,0x05e2,0x05e3,0x05e4,0x05e5,0x05e6,0x05e7, /* 0x90-0x97 */
0x05e8,0x05e9,0x05ea,0x00a2,0x00a3,0x00a5,0x20a7,0x20aa, /* 0x98-0x9F */
0x00e1,0x00ed,0x00f3,0x00fa,0x00f1,0x00d1,0x00aa,0x00ba, /* 0xA0-0xA7 */
0x00bf,0x2310,0x00ac,0x00bd,0x00bc,0x20ac,0x00ab,0x00bb, /* 0xA8-0xAF */
0x2591,0x2592,0x2593,0x2502,0x2524,0x2561,0x2562,0x2556, /* 0xB0-0xB7 */
0x2555,0x2563,0x2551,0x2557,0x255d,0x255c,0x255b,0x2510, /* 0xB8-0xBF */
0x2514,0x2534,0x252c,0x251c,0x2500,0x253c,0x255e,0x255f, /* 0xC0-0xC7 */
0x255a,0x2554,0x2569,0x2566,0x2560,0x2550,0x256c,0x2567, /* 0xC8-0xCF */
0x2568,0x2564,0x2565,0x2559,0x2558,0x2552,0x2553,0x256b, /* 0xD0-0xD7 */
0x256a,0x2518,0x250c,0x2588,0x2584,0x258c,0x2590,0x2580, /* 0xD8-0xDF */
0x03b1,0x00df,0x0393,0x03c0,0x03a3,0x03c3,0x00b5,0x03c4, /* 0xE0-0xE7 */
0x03a6,0x0398,0x03a9,0x03b4,0x221e,0x03c6,0x03b5,0x2229, /* 0xE8-0xEF */
0x2261,0x00b1,0x2265,0x2264,0x2320,0x2321,0x00f7,0x2248, /* 0xF0-0xF7 */
0x00b0,0x2219,0x00b7,0x221a,0x207f,0x00b2,0x25a0,0x00a0 /* 0xF8-0xFF */
};

View File

@ -1734,7 +1734,7 @@ void DOS_KeyboardLayout_Init() {
static const std::set<int> supportedCodepages =
{
437, 453, 737, 775, 808, 850, 852, 853, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 869, 872, 874,
437, 737, 775, 808, 850, 852, 853, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 869, 872, 874,
932, 936, 949, 950, 951, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 3021
};

View File

@ -7129,9 +7129,9 @@ void UTF8::Run()
}
int cp=dos.loaded_codepage;
char target[11] = "CP437";
if (dos.loaded_codepage==453) strcpy(target, "CP850");
else if (dos.loaded_codepage==808) strcpy(target, "CP866");
if (dos.loaded_codepage==808) strcpy(target, "CP866");
else if (dos.loaded_codepage==859) strcpy(target, "CP858");
else if (dos.loaded_codepage==867) strcpy(target, "CP862");
else if (dos.loaded_codepage==872) strcpy(target, "CP855");
else if (dos.loaded_codepage==951 && !uao) strcpy(target, "BIG5HKSCS");
else if (dos.loaded_codepage==951) strcpy(target, "CP950");
@ -7209,9 +7209,9 @@ void UTF16::Run()
return;
}
char target[11] = "CP437";
if (dos.loaded_codepage==453) strcpy(target, "CP850");
else if (dos.loaded_codepage==808) strcpy(target, "CP866");
if (dos.loaded_codepage==808) strcpy(target, "CP866");
else if (dos.loaded_codepage==859) strcpy(target, "CP858");
else if (dos.loaded_codepage==867) strcpy(target, "CP862");
else if (dos.loaded_codepage==872) strcpy(target, "CP855");
else if (dos.loaded_codepage==951 && !uao) strcpy(target, "BIG5HKSCS");
else if (dos.loaded_codepage==951) strcpy(target, "CP950");

View File

@ -53,7 +53,6 @@
#include "jfont.h"
#include "cp437_uni.h"
#include "cp453_uni.h"
#include "cp737_uni.h"
#include "cp775_uni.h"
#include "cp808_uni.h"
@ -72,6 +71,7 @@
#include "cp864_uni.h"
#include "cp865_uni.h"
#include "cp866_uni.h"
#include "cp867_uni.h"
#include "cp869_uni.h"
#include "cp872_uni.h"
#include "cp874_uni.h"
@ -610,8 +610,6 @@ bool CodePageHostToGuestUTF16(char *d/*CROSS_LEN*/,const uint16_t *s/*CROSS_LEN*
switch (dos.loaded_codepage) {
case 437:
return String_HOST_TO_SBCS_UTF16<uint16_t>(d,s,cp437_to_unicode,sizeof(cp437_to_unicode)/sizeof(cp437_to_unicode[0]));
case 453:
return String_HOST_TO_SBCS_UTF16<uint16_t>(d,s,cp453_to_unicode,sizeof(cp453_to_unicode)/sizeof(cp453_to_unicode[0]));
case 737:
return String_HOST_TO_SBCS_UTF16<uint16_t>(d,s,cp737_to_unicode,sizeof(cp737_to_unicode)/sizeof(cp737_to_unicode[0]));
case 775:
@ -648,6 +646,8 @@ bool CodePageHostToGuestUTF16(char *d/*CROSS_LEN*/,const uint16_t *s/*CROSS_LEN*
return String_HOST_TO_SBCS_UTF16<uint16_t>(d,s,cp865_to_unicode,sizeof(cp865_to_unicode)/sizeof(cp865_to_unicode[0]));
case 866:
return String_HOST_TO_SBCS_UTF16<uint16_t>(d,s,cp866_to_unicode,sizeof(cp866_to_unicode)/sizeof(cp866_to_unicode[0]));
case 867:
return String_HOST_TO_SBCS_UTF16<uint16_t>(d,s,cp867_to_unicode,sizeof(cp867_to_unicode)/sizeof(cp867_to_unicode[0]));
case 869:
return String_HOST_TO_SBCS_UTF16<uint16_t>(d,s,cp869_to_unicode,sizeof(cp869_to_unicode)/sizeof(cp869_to_unicode[0]));
case 872:
@ -706,8 +706,6 @@ bool CodePageHostToGuestUTF8(char *d/*CROSS_LEN*/,const char *s/*CROSS_LEN*/) {
switch (dos.loaded_codepage) {
case 437:
return String_HOST_TO_SBCS_UTF8<uint16_t>(d,s,cp437_to_unicode,sizeof(cp437_to_unicode)/sizeof(cp437_to_unicode[0]));
case 453:
return String_HOST_TO_SBCS_UTF8<uint16_t>(d,s,cp453_to_unicode,sizeof(cp453_to_unicode)/sizeof(cp453_to_unicode[0]));
case 737:
return String_HOST_TO_SBCS_UTF8<uint16_t>(d,s,cp737_to_unicode,sizeof(cp737_to_unicode)/sizeof(cp737_to_unicode[0]));
case 775:
@ -744,6 +742,8 @@ bool CodePageHostToGuestUTF8(char *d/*CROSS_LEN*/,const char *s/*CROSS_LEN*/) {
return String_HOST_TO_SBCS_UTF8<uint16_t>(d,s,cp865_to_unicode,sizeof(cp865_to_unicode)/sizeof(cp865_to_unicode[0]));
case 866:
return String_HOST_TO_SBCS_UTF8<uint16_t>(d,s,cp866_to_unicode,sizeof(cp866_to_unicode)/sizeof(cp866_to_unicode[0]));
case 867:
return String_HOST_TO_SBCS_UTF8<uint16_t>(d,s,cp867_to_unicode,sizeof(cp867_to_unicode)/sizeof(cp867_to_unicode[0]));
case 869:
return String_HOST_TO_SBCS_UTF8<uint16_t>(d,s,cp869_to_unicode,sizeof(cp869_to_unicode)/sizeof(cp869_to_unicode[0]));
case 872:
@ -802,8 +802,6 @@ bool CodePageGuestToHostUTF16(uint16_t *d/*CROSS_LEN*/,const char *s/*CROSS_LEN*
switch (dos.loaded_codepage) {
case 437:
return String_SBCS_TO_HOST_UTF16<uint16_t>(d,s,cp437_to_unicode,sizeof(cp437_to_unicode)/sizeof(cp437_to_unicode[0]));
case 453:
return String_SBCS_TO_HOST_UTF16<uint16_t>(d,s,cp453_to_unicode,sizeof(cp453_to_unicode)/sizeof(cp453_to_unicode[0]));
case 737:
return String_SBCS_TO_HOST_UTF16<uint16_t>(d,s,cp737_to_unicode,sizeof(cp737_to_unicode)/sizeof(cp737_to_unicode[0]));
case 775:
@ -840,6 +838,8 @@ bool CodePageGuestToHostUTF16(uint16_t *d/*CROSS_LEN*/,const char *s/*CROSS_LEN*
return String_SBCS_TO_HOST_UTF16<uint16_t>(d,s,cp865_to_unicode,sizeof(cp865_to_unicode)/sizeof(cp865_to_unicode[0]));
case 866:
return String_SBCS_TO_HOST_UTF16<uint16_t>(d,s,cp866_to_unicode,sizeof(cp866_to_unicode)/sizeof(cp866_to_unicode[0]));
case 867:
return String_SBCS_TO_HOST_UTF16<uint16_t>(d,s,cp867_to_unicode,sizeof(cp867_to_unicode)/sizeof(cp867_to_unicode[0]));
case 869:
return String_SBCS_TO_HOST_UTF16<uint16_t>(d,s,cp869_to_unicode,sizeof(cp869_to_unicode)/sizeof(cp869_to_unicode[0]));
case 872:
@ -898,8 +898,6 @@ bool CodePageGuestToHostUTF8(char *d/*CROSS_LEN*/,const char *s/*CROSS_LEN*/) {
switch (dos.loaded_codepage) {
case 437:
return String_SBCS_TO_HOST_UTF8<uint16_t>(d,s,cp437_to_unicode,sizeof(cp437_to_unicode)/sizeof(cp437_to_unicode[0]));
case 453:
return String_SBCS_TO_HOST_UTF8<uint16_t>(d,s,cp453_to_unicode,sizeof(cp453_to_unicode)/sizeof(cp453_to_unicode[0]));
case 737:
return String_SBCS_TO_HOST_UTF8<uint16_t>(d,s,cp737_to_unicode,sizeof(cp737_to_unicode)/sizeof(cp737_to_unicode[0]));
case 775:
@ -936,6 +934,8 @@ bool CodePageGuestToHostUTF8(char *d/*CROSS_LEN*/,const char *s/*CROSS_LEN*/) {
return String_SBCS_TO_HOST_UTF8<uint16_t>(d,s,cp865_to_unicode,sizeof(cp865_to_unicode)/sizeof(cp865_to_unicode[0]));
case 866:
return String_SBCS_TO_HOST_UTF8<uint16_t>(d,s,cp866_to_unicode,sizeof(cp866_to_unicode)/sizeof(cp866_to_unicode[0]));
case 867:
return String_SBCS_TO_HOST_UTF8<uint16_t>(d,s,cp867_to_unicode,sizeof(cp867_to_unicode)/sizeof(cp867_to_unicode[0]));
case 869:
return String_SBCS_TO_HOST_UTF8<uint16_t>(d,s,cp869_to_unicode,sizeof(cp869_to_unicode)/sizeof(cp869_to_unicode[0]));
case 872:

View File

@ -1272,8 +1272,7 @@ LPWSTR getWString(std::string str, wchar_t *def, wchar_t*& buffer) {
}
uint16_t len=(uint16_t)str.size();
if (cp>0) {
if (cp==453) cp=850;
else if (cp==808) cp=866;
if (cp==808) cp=866;
else if (cp==859) cp=858;
else if (cp==872) cp=855;
else if (cp==951) cp=950;

View File

@ -510,7 +510,7 @@ int setTTFMap(bool changecp) {
}
uint16_t unimap;
int notMapped = 0;
for (int y = ((customcp&&(dos.loaded_codepage==customcp||changecp))||(altcp&&(dos.loaded_codepage==altcp||changecp))?0:8); y < 16; y++)
for (int y = ((cpMap[1]!=1&&cpMap[1]!=0x263A)||cp==867||(customcp&&(dos.loaded_codepage==customcp||changecp))||(altcp&&(dos.loaded_codepage==altcp||changecp))?0:8); y < 16; y++)
for (int x = 0; x < 16; x++) {
if (y<8 && (wcTest[y*16+x] == y*16+x || wcTest[y*16+x] == cp437_to_unicode[y*16+x])) unimap = cpMap_copy[y*16+x];
else unimap = wcTest[y*16+x];

View File

@ -1707,7 +1707,7 @@ void SHELL_Init() {
MSG_Add("SHELL_CMD_ASSOC_HELP", "Displays or changes file extension associations.\n");
MSG_Add("SHELL_CMD_ASSOC_HELP_LONG", "ASSOC [.ext[=command] ... ]\n\nType ASSOC without parameters to display the current file associations.\nFile extensions must start with a dot (.); wildcards (* and ?) are allowed.\n");
MSG_Add("SHELL_CMD_CHCP_HELP", "Displays or changes the current DOS code page.\n");
MSG_Add("SHELL_CMD_CHCP_HELP_LONG", "CHCP [nnn [file]]\nCHCP nnn[:[language]]\n\n nnn Specifies a code page number.\n file Specifies a code page file.\n language Specifies a corresponding language.\n\nSupported code pages for changing in the TrueType font output:\n\n437,453,737,775,808,850,852,853,855-866,869,872,874,1250-1258,3021\n\nAlso double-byte code pages including 932, 936, 949, and 950/951.\n\nCustomized code pages are supported by providing code page files.\n");
MSG_Add("SHELL_CMD_CHCP_HELP_LONG", "CHCP [nnn [file]]\nCHCP nnn[:[language]]\n\n nnn Specifies a code page number.\n file Specifies a code page file.\n language Specifies a corresponding language.\n\nSupported code pages for changing in the TrueType font output:\n\n437,737,775,808,850,852,853,855-867,869,872,874,1250-1258,3021\n\nAlso double-byte code pages including 932, 936, 949, and 950/951.\n\nCustomized code pages are supported by providing code page files.\n");
MSG_Add("SHELL_CMD_CHCP_ACTIVE", "Active code page: %d\n");
MSG_Add("SHELL_CMD_CHCP_MISSING", "ASCII characters not defined in TTF font: %d\n");
MSG_Add("SHELL_CMD_CHCP_INVALID", "Invalid code page number - %s\n");

View File

@ -1600,7 +1600,6 @@ for /d %%i in ($(SolutionDir)\..\contrib\translations\*) do copy %%i\*.lng "$(Ou
<ClInclude Include="..\include\clockdomain.h" />
<ClInclude Include="..\include\control.h" />
<ClInclude Include="..\include\cp437_uni.h" />
<ClInclude Include="..\include\cp453_uni.h" />
<ClInclude Include="..\include\cp808_uni.h" />
<ClInclude Include="..\include\cp850_uni.h" />
<ClInclude Include="..\include\cp852_uni.h" />
@ -1617,6 +1616,7 @@ for /d %%i in ($(SolutionDir)\..\contrib\translations\*) do copy %%i\*.lng "$(Ou
<ClInclude Include="..\include\cp864_uni.h" />
<ClInclude Include="..\include\cp865_uni.h" />
<ClInclude Include="..\include\cp866_uni.h" />
<ClInclude Include="..\include\cp867_uni.h" />
<ClInclude Include="..\include\cp869_uni.h" />
<ClInclude Include="..\include\cp872_uni.h" />
<ClInclude Include="..\include\cp874_uni.h" />

View File

@ -1922,9 +1922,6 @@
<ClInclude Include="..\include\cp437_uni.h">
<Filter>Includes</Filter>
</ClInclude>
<ClInclude Include="..\include\cp453_uni.h">
<Filter>Includes</Filter>
</ClInclude>
<ClInclude Include="..\include\cp808_uni.h">
<Filter>Includes</Filter>
</ClInclude>
@ -1973,6 +1970,9 @@
<ClInclude Include="..\include\cp866_uni.h">
<Filter>Includes</Filter>
</ClInclude>
<ClInclude Include="..\include\cp867_uni.h">
<Filter>Includes</Filter>
</ClInclude>
<ClInclude Include="..\include\cp869_uni.h">
<Filter>Includes</Filter>
</ClInclude>