2727/* ------------------------------------------------------------------ */
2828/* IBM Code Page 037 (CECP US/Canada) */
2929/* */
30- /* Symmetric NL/LF mapping: */
31- /* ASCII LF (0x0A) <-> EBCDIC LF (0x25) — roundtrip clean */
32- /* ASCII NEL (0x85) <-> EBCDIC NEL (0x15) — roundtrip clean */
30+ /* NL/LF mapping — modified from pure CP037: */
31+ /* ASCII LF (0x0A) -> EBCDIC NEL (0x15) <- override for ecosystem */
32+ /* EBCDIC NEL(0x15) -> ASCII LF (0x0A) <- symmetric roundtrip */
33+ /* EBCDIC LF (0x25) -> ASCII NEL (0x85) <- unchanged */
3334/* */
34- /* NOTE: Pure CP037 maps NEL (0x15) -> 0x85, NOT 0x0A. Since the */
35- /* C compiler generates 0x15 for '\n', this codepage is unsuitable */
36- /* as HTTP server default — use IBM1047 instead. */
35+ /* Pure CP037 maps ASCII LF to EBCDIC LF (0x25), but the mvslovers */
36+ /* ecosystem uses NEL (0x15) as newline: c2asm370 '\n', crent370 */
37+ /* printf, and all UFS files written by C programs emit 0x15. This */
38+ /* override makes atoe consistent with that convention. */
3739/* ------------------------------------------------------------------ */
3840
3941static const unsigned char cp037_atoe [256 ] = {
4042 /* 0x00-0x07 */ 0x00 , 0x01 , 0x02 , 0x03 , 0x37 , 0x2D , 0x2E , 0x2F ,
41- /* 0x08-0x0F */ 0x16 , 0x05 , 0x25 , 0x0B , 0x0C , 0x0D , 0x0E , 0x0F ,
43+ /* 0x08-0x0F */ 0x16 , 0x05 , 0x15 , 0x0B , 0x0C , 0x0D , 0x0E , 0x0F ,
4244 /* 0x10-0x17 */ 0x10 , 0x11 , 0x12 , 0x13 , 0x3C , 0x3D , 0x32 , 0x26 ,
4345 /* 0x18-0x1F */ 0x18 , 0x19 , 0x3F , 0x27 , 0x1C , 0x1D , 0x1E , 0x1F ,
4446 /* 0x20-0x27 sp ! " # $ % & ' */
@@ -56,7 +58,7 @@ static const unsigned char cp037_atoe[256] = {
5658 /* 0x50-0x57 P Q R S T U V W */
5759 0xD7 , 0xD8 , 0xD9 , 0xE2 , 0xE3 , 0xE4 , 0xE5 , 0xE6 ,
5860 /* 0x58-0x5F X Y Z [ \ ] ^ _ */
59- 0xE7 , 0xE8 , 0xE9 , 0xAD , 0xE0 , 0xBD , 0xB0 , 0x6D ,
61+ 0xE7 , 0xE8 , 0xE9 , 0xBA , 0xE0 , 0xBB , 0xB0 , 0x6D ,
6062 /* 0x60-0x67 ` a b c d e f g */
6163 0x79 , 0x81 , 0x82 , 0x83 , 0x84 , 0x85 , 0x86 , 0x87 ,
6264 /* 0x68-0x6F h i j k l m n o */
@@ -70,13 +72,13 @@ static const unsigned char cp037_atoe[256] = {
7072 /* 0x90-0x97 */ 0x30 , 0x31 , 0x1A , 0x33 , 0x34 , 0x35 , 0x36 , 0x08 ,
7173 /* 0x98-0x9F */ 0x38 , 0x39 , 0x3A , 0x3B , 0x04 , 0x14 , 0x3E , 0xFF ,
7274 /* 0xA0-0xA7 */ 0x41 , 0xAA , 0x4A , 0xB1 , 0x9F , 0xB2 , 0x6A , 0xB5 ,
73- /* 0xA8-0xAF */ 0xBB , 0xB4 , 0x9A , 0x8A , 0x5F , 0xCA , 0xAF , 0xBC ,
75+ /* 0xA8-0xAF */ 0xBD , 0xB4 , 0x9A , 0x8A , 0x5F , 0xCA , 0xAF , 0xBC ,
7476 /* 0xB0-0xB7 */ 0x90 , 0x8F , 0xEA , 0xFA , 0xBE , 0xA0 , 0xB6 , 0xB3 ,
7577 /* 0xB8-0xBF */ 0x9D , 0xDA , 0x9B , 0x8B , 0xB7 , 0xB8 , 0xB9 , 0xAB ,
7678 /* 0xC0-0xC7 */ 0x64 , 0x65 , 0x62 , 0x66 , 0x63 , 0x67 , 0x9E , 0x68 ,
7779 /* 0xC8-0xCF */ 0x74 , 0x71 , 0x72 , 0x73 , 0x78 , 0x75 , 0x76 , 0x77 ,
7880 /* 0xD0-0xD7 */ 0xAC , 0x69 , 0xED , 0xEE , 0xEB , 0xEF , 0xEC , 0xBF ,
79- /* 0xD8-0xDF */ 0x80 , 0xFD , 0xFE , 0xFB , 0xFC , 0xBA , 0xAE , 0x59 ,
81+ /* 0xD8-0xDF */ 0x80 , 0xFD , 0xFE , 0xFB , 0xFC , 0xAD , 0xAE , 0x59 ,
8082 /* 0xE0-0xE7 */ 0x44 , 0x45 , 0x42 , 0x46 , 0x43 , 0x47 , 0x9C , 0x48 ,
8183 /* 0xE8-0xEF */ 0x54 , 0x51 , 0x52 , 0x53 , 0x58 , 0x55 , 0x56 , 0x57 ,
8284 /* 0xF0-0xF7 */ 0x8C , 0x49 , 0xCD , 0xCE , 0xCB , 0xCF , 0xCC , 0xE1 ,
@@ -86,9 +88,9 @@ static const unsigned char cp037_atoe[256] = {
8688static const unsigned char cp037_etoa [256 ] = {
8789 /* 0x00-0x07 */ 0x00 , 0x01 , 0x02 , 0x03 , 0x9C , 0x09 , 0x86 , 0x7F ,
8890 /* 0x08-0x0F */ 0x97 , 0x8D , 0x8E , 0x0B , 0x0C , 0x0D , 0x0E , 0x0F ,
89- /* 0x10-0x17 */ 0x10 , 0x11 , 0x12 , 0x13 , 0x9D , 0x85 , 0x08 , 0x87 ,
91+ /* 0x10-0x17 */ 0x10 , 0x11 , 0x12 , 0x13 , 0x9D , 0x0A , 0x08 , 0x87 ,
9092 /* 0x18-0x1F */ 0x18 , 0x19 , 0x92 , 0x8F , 0x1C , 0x1D , 0x1E , 0x1F ,
91- /* 0x20-0x27 */ 0x80 , 0x81 , 0x82 , 0x83 , 0x84 , 0x0A , 0x17 , 0x1B ,
93+ /* 0x20-0x27 */ 0x80 , 0x81 , 0x82 , 0x83 , 0x84 , 0x85 , 0x17 , 0x1B ,
9294 /* 0x28-0x2F */ 0x88 , 0x89 , 0x8A , 0x8B , 0x8C , 0x05 , 0x06 , 0x07 ,
9395 /* 0x30-0x37 */ 0x90 , 0x91 , 0x16 , 0x93 , 0x94 , 0x95 , 0x96 , 0x04 ,
9496 /* 0x38-0x3F */ 0x98 , 0x99 , 0x9A , 0x9B , 0x14 , 0x15 , 0x9E , 0x1A ,
@@ -118,12 +120,12 @@ static const unsigned char cp037_etoa[256] = {
118120 0x71 , 0x72 , 0xAA , 0xBA , 0xE6 , 0xB8 , 0xC6 , 0xA4 ,
119121 /* 0xA0-0xAF mu ~ s t u v w x */
120122 0xB5 , 0x7E , 0x73 , 0x74 , 0x75 , 0x76 , 0x77 , 0x78 ,
121- /* 0xA8-0xAF y z [ */
122- 0x79 , 0x7A , 0xA1 , 0xBF , 0xD0 , 0x5B , 0xDE , 0xAE ,
123+ /* 0xA8-0xAF y z ý */
124+ 0x79 , 0x7A , 0xA1 , 0xBF , 0xD0 , 0xDD , 0xDE , 0xAE ,
123125 /* 0xB0-0xB7 ^ */
124126 0x5E , 0xA3 , 0xA5 , 0xB7 , 0xA9 , 0xA7 , 0xB6 , 0xBC ,
125- /* 0xB8-0xBF ] */
126- 0xBD , 0xBE , 0xDD , 0xA8 , 0xAF , 0x5D , 0xB4 , 0xD7 ,
127+ /* 0xB8-0xBF [ ] ¨ */
128+ 0xBD , 0xBE , 0x5B , 0x5D , 0xAF , 0xA8 , 0xB4 , 0xD7 ,
127129 /* 0xC0-0xC7 { A B C D E F G */
128130 0x7B , 0x41 , 0x42 , 0x43 , 0x44 , 0x45 , 0x46 , 0x47 ,
129131 /* 0xC8-0xCF H I */
0 commit comments