MakeCodeSchemes.mesa
A hack to build character coding scheme files.
Michael Plass, January 17, 1983 1:46 pm.
DIRECTORY IO, FileIO, Rope;
MakeCodeSchemes: CEDAR PROGRAM
IMPORTS IO, FileIO, Rope
= BEGIN
codeScheme: ARRAY CHAR OF CARDINAL;
WriteScheme: PROC [fileName: Rope.ROPE] = TRUSTED {
p: LONG POINTER TO ARRAY CHAR OF CARDINAL ← @codeScheme;
unsafeBlock: IO.UnsafeBlock ← [base: p, startIndex: 0, stopIndexPlusOne: 2*SIZE[ARRAY CHAR OF CARDINAL]];
stream: IO.STREAM ← FileIO.Open[fileName.Concat[".codeScheme"], overwrite];
stream.UnsafePutBlock[unsafeBlock];
stream.Close[];
};
Default: PROC[bc, ec: CHAR] = {
FOR char: CHAR IN CHAR DO codeScheme[char] ← 255 ENDLOOP;
FOR char: CHAR IN [bc..ec] DO codeScheme[char] ← LOOPHOLE[char] ENDLOOP;
};
Code: PROC[octalChar, set, code: [0..256)] = {
codeScheme[LOOPHOLE[octalChar]] ← CARDINAL[set]*256+code;
};
Default[' , '~]; WriteScheme["Ascii"];
Default[' , ' -1]; WriteScheme["Pi"];
Default[' , ' -1]; WriteScheme["Graphic"];
Default[' , '~];
codeScheme['$] ← 244B;
codeScheme['^] ← 255B;
codeScheme['←] ← 254B;
codeScheme['-] ← CARDINAL[41b]*256+75B; -- hyphen
Eight-bit codes
20X
Code[200B, 360b, 63b]; -- A umlaut
Code[201B, 360b, 73b]; -- O umlaut
Code[202B, 360b, 41b]; -- A circle
Code[203B, 360b, 75b]; -- U umlaut
Code[204B, 360b, 243b]; -- C cedilla
Code[205B, 0, 351b]; -- Norw. slashed O
Code[206B, 0, 341b]; -- AE
Code[207B, 0, 352b]; -- OE
21X
Code[210B, 0, 313b]; -- cedilla
Code[211B, 0, 255]; -- underdot
Code[212B, 0, 255]; -- undercomma
Code[213B, 0, 255]; -- some kind of lowered accent
22X
Code[220B, 360b, 360b]; -- ff
Code[221B, 360b, 361b]; -- ffi
Code[222B, 360b, 362b]; -- ffl
Code[223B, 360b, 363b]; -- fi
Code[224B, 360b, 364b]; -- fl
Code[225B, 0, 373b]; -- ess-zed
Code[226B, 0, 366b]; -- ij
Code[227B, 0, 346b]; -- IJ
23X
Code[230B, 0, 40b];
Code[231B, 0, 40b];
Code[232B, 0, 40b];
Code[233B, 377b, 44b]; -- en dash
Code[234B, 377b, 45b]; -- em dash
Code[235B, 0, 55b]; -- minus
Code[236B, 0, 255]; -- some kind of dot
24X
Code[200B, 360b, 62b]; -- a umlaut
Code[201B, 360b, 74b]; -- o umlaut
Code[202B, 360b, 42b]; -- a circle
Code[203B, 360b, 76b]; -- u umlaut
Code[204B, 360b, 244b]; -- c cedilla
Code[205B, 0, 371b]; -- Norw. slashed o
Code[206B, 0, 361b]; -- ae
Code[207B, 0, 372b]; -- oe
WriteScheme["XeroxOIS"];
END.
Template
Eight-bit codes
20X
Code[200B, c];
Code[201B, c];
Code[202B, c];
Code[203B, c];
Code[204B, c];
Code[205B, c];
Code[206B, c];
Code[207B, c];
21X
Code[210B, c];
Code[211B, c];
Code[212B, c];
Code[213B, c];
Code[214B, c];
Code[215B, c];
Code[216B, c];
Code[217B, c];
22X
Code[220B, c];
Code[221B, c];
Code[222B, c];
Code[223B, c];
Code[224B, c];
Code[225B, c];
Code[226B, c];
Code[227B, c];
23X
Code[230B, c];
Code[231B, c];
Code[232B, c];
Code[233B, c];
Code[234B, c];
Code[235B, c];
Code[236B, c];
Code[237B, c];
24X
Code[240B, c];
Code[241B, c];
Code[242B, c];
Code[243B, c];
Code[244B, c];
Code[245B, c];
Code[246B, c];
Code[247B, c];
25X
Code[250B, c];
Code[251B, c];
Code[252B, c];
Code[253B, c];
Code[254B, c];
Code[255B, c];
Code[256B, c];
Code[257B, c];
26X
Code[260B, c];
Code[261B, c];
Code[262B, c];
Code[263B, c];
Code[264B, c];
Code[265B, c];
Code[266B, c];
Code[267B, c];
27X
Code[270B, c];
Code[271B, c];
Code[272B, c];
Code[273B, c];
Code[274B, c];
Code[275B, c];
Code[276B, c];
Code[277B, c];
30X
Code[300B, c];
Code[301B, c];
Code[302B, c];
Code[303B, c];
Code[304B, c];
Code[305B, c];
Code[306B, c];
Code[307B, c];
31X
Code[310B, c];
Code[311B, c];
Code[312B, c];
Code[313B, c];
Code[314B, c];
Code[315B, c];
Code[316B, c];
Code[317B, c];
32X
Code[320B, c];
Code[321B, c];
Code[322B, c];
Code[323B, c];
Code[324B, c];
Code[325B, c];
Code[326B, c];
Code[327B, c];
33X
Code[330B, c];
Code[331B, c];
Code[332B, c];
Code[333B, c];
Code[334B, c];
Code[335B, c];
Code[336B, c];
Code[337B, c];
34X
Code[340B, c];
Code[341B, c];
Code[342B, c];
Code[343B, c];
Code[344B, c];
Code[345B, c];
Code[346B, c];
Code[347B, c];
35X
Code[350B, c];
Code[351B, c];
Code[352B, c];
Code[353B, c];
Code[354B, c];
Code[355B, c];
Code[356B, c];
Code[357B, c];
36X
Code[360B, c];
Code[361B, c];
Code[362B, c];
Code[363B, c];
Code[364B, c];
Code[365B, c];
Code[366B, c];
Code[367B, c];
37X
Code[370B, c];
Code[371B, c];
Code[372B, c];
Code[373B, c];
Code[374B, c];
Code[375B, c];
Code[376B, c];
Code[377B, c];