<> <> <> 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 <> <<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. <