The default ASCII translation of EazyLink
The automatical ASCII translation during transfer of EazyLink files uses the inbuilt translation tables which converts between the Z88 ISO LATIN 1 character set and the IBM codepage 865 (Scandinavian). This implicit translation also supports the remaining european characters (accented characters for French, German and Spanish).
The translation table is always temporarily enabled during Client file name requests. This feature is important for Z88 ROM versions that allow filenames with ISO LATIN 1 characters (danish version and a few others). Viewing Z88 filenames on the PC will then display the correct characters instead of rubbish.
The defined state of translation only affects file transfers (both directions), i.e. you will only get files converted if translation is enabled.
Specifying an external translation table
EazyLink supports the common translation of ISO LATIN 1 between Z88 and MSDOS codepage 865. This is important if you run the the original PC-LINK II Client.
However, you may want to use EazyLink with another computer like the Apple MacIntosh, QL or others using different character sets than the Z88 ISO LATIN 1.
The Microsoft Windows 3.xx or Windows 95/98/NT/2000/XP operating system uses the same character set as Z88! They just call it the ANSI character set. Using the EazyLink Client for Windows, it needs a null-translation table installed, since EazyLink otherwise would use the inbuilt ISO/Codepage 865 translation; this would create rubbish characters in displayed file names on the EazyLink Client using ISO characters on the Z88.
A command has been supplied in the EazyLink Client to upload a null-translation file and then re-install that on the server automatically.
When the EazyLink Server popdown is activated, it automatically searches for a file named "translate.dat" anywhere in the Z88 filing system (a ":RAM.//*" search).
When it finds it, it automatically loads the translations from the file into two translation tables in a memory area of its own. When the translation file has been loaded, the message "Using translations from file." is displayed in the EazyLink log window.
If the file is not found, you will be prompted with the "Using ISO/IBM translations" message.
The organisation of the translation file is simple; every translation item is a pair of two bytes, the first byte is the incoming byte (the foreign character), the second byte the translated byte (the Z88 ISO character). Each pair is stored sequentially in the "translate.dat" file. The following BBC BASIC program illustrates the file structure, that generates a null-translation table:
100 REM Sample program to generate a null-translation table
110 REM
120 O% = OPENOUT("/translate.dat"): REM create file in root of cur. device
130 FOR T%=0 TO 255
140 BPUT#O%,T%: BPUT#O%,T%
150 NEXT T%
160 CLOSE#O%
The following file dump displays the contents of the file. As you can see the input and output code is the same resulting in no translation. This file is a complete translation table ranging from byte code 0 to 255.
0000h 00 00 01 01 02 02 03 03 04 04 05 05 06 06 07 07 ................
0010h 08 08 09 09 0A 0A 0B 0B 0C 0C 0D 0D 0E 0E 0F 0F ................
0020h 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 ................
0030h 18 18 19 19 1A 1A 1B 1B 1C 1C 1D 1D 1E 1E 1F 1F ................
0040h 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 !!""##$$%%&&''
0050h 28 28 29 29 2A 2A 2B 2B 2C 2C 2D 2D 2E 2E 2F 2F (())**++,,--..//
0060h 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 0011223344556677
0070h 38 38 39 39 3A 3A 3B 3B 3C 3C 3D 3D 3E 3E 3F 3F 8899::;;<<==>>??
0080h 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 @AABBCCDDEEFFGG
0090h 48 48 49 49 4A 4A 4B 4B 4C 4C 4D 4D 4E 4E 4F 4F HHIIJJKKLLMMNNOO
00A0h 50 50 51 51 52 52 53 53 54 54 55 55 56 56 57 57 PPQQRRSSTTUUVVWW
00B0h 58 58 59 59 5A 5A 5B 5B 5C 5C 5D 5D 5E 5E 5F 5F XXYYZZ[[\\]]^^__
00C0h 60 60 61 61 62 62 63 63 64 64 65 65 66 66 67 67 ``aabbccddeeffgg
00D0h 68 68 69 69 6A 6A 6B 6B 6C 6C 6D 6D 6E 6E 6F 6F hhiijjkkllmmnnoo
00E0h 70 70 71 71 72 72 73 73 74 74 75 75 76 76 77 77 ppqqrrssttuuvvww
00F0h 78 78 79 79 7A 7A 7B 7B 7C 7C 7D 7D 7E 7E 7F 7F xxyyzz{{||}}~~..
0100h 80 80 81 81 82 82 83 83 84 84 85 85 86 86 87 87 ................
0110h 88 88 89 89 8A 8A 8B 8B 8C 8C 8D 8D 8E 8E 8F 8F ................
0120h 90 90 91 91 92 92 93 93 94 94 95 95 96 96 97 97 ................
0130h 98 98 99 99 9A 9A 9B 9B 9C 9C 9D 9D 9E 9E 9F 9F ................
0140h A0 A0 A1 A1 A2 A2 A3 A3 A4 A4 A5 A5 A6 A6 A7 A7 ................
0150h A8 A8 A9 A9 AA AA AB AB AC AC AD AD AE AE AF AF ................
0160h B0 B0 B1 B1 B2 B2 B3 B3 B4 B4 B5 B5 B6 B6 B7 B7 ................
0170h B8 B8 B9 B9 BA BA BB BB BC BC BD BD BE BE BF BF ................
0180h C0 C0 C1 C1 C2 C2 C3 C3 C4 C4 C5 C5 C6 C6 C7 C7 ................
0190h C8 C8 C9 C9 CA CA CB CB CC CC CD CD CE CE CF CF ................
01A0h D0 D0 D1 D1 D2 D2 D3 D3 D4 D4 D5 D5 D6 D6 D7 D7 ................
01B0h D8 D8 D9 D9 DA DA DB DB DC DC DD DD DE DE DF DF ................
01C0h E0 E0 E1 E1 E2 E2 E3 E3 E4 E4 E5 E5 E6 E6 E7 E7 ................
01D0h E8 E8 E9 E9 EA EA EB EB EC EC ED ED EE EE EF EF ................
01E0h F0 F0 F1 F1 F2 F2 F3 F3 F4 F4 F5 F5 F6 F6 F7 F7 ................
01F0h F8 F8 F9 F9 FA FA FB FB FC FC FD FD FE FE FF FF ................
Your translation file doesn't need to contain all the codes. This isn't necessary, since you don't need to convert the standard ASCII values ranging from 32 to 127 - these are the same in all the ASCII tables. The difference occurs from byte code 128 to 255. Many computers have aquired their own standards, e.g. the different Codepage scheme on the MS-DOS environment, the ISO LATIN 1 standard on the Z88, and various other standards found on other computers.
Non-UK users requiring accented characters, it is only needed to create a translation table of 8 - 10 translation items for the various special characters used in their language. Before loading a "translate.dat" file, a null-translation table is first setup in memory, then the codes is loaded into the table from the file.