[Back to MISC SWAG index] [Back to Main SWAG index] [Original]

    { Gets the active (set by user) and system (at boot byte) code page.
      Part of the Heartware Toolkit v2.00 (HTelse.PAS) for Turbo Pascal.
      Author: Jose Almeida. P.O.Box 4185. 1504 Lisboa Codex. Portugal.
              I can also be reached at RIME network, site ->TIB or #5314.
      Feel completely free to use this source code in any way you want, and, if
      you do, please don't forget to mention my name, and, give me and Swag the
      proper credits. }

    PROCEDURE Get_Code_Page(var Active_CP : word;
                           var System_CP : word;
                           var Error_Code : byte);
    { DESCRIPTION:
        Gets the active (set by user) and system (at boot byte) code page.
      SAMPLE CALL:
        Get_Code_Page(Active_CP,Default_CP,Error_Code);
      RETURNS:
        Active : active code page set by user
        System : system code page at boot time
        Error_Code
          0 : no error
          else : see The Programmers PC Source Book 3.191
      NOTES:
        Applies to all versions beginning with v3.3.
        See Get_Code_Page_Text() in order to get string text. }

    var
      HTregs : registers;

    BEGIN { Get_Code_Page }
      HTregs.AX := $6601;
      MsDos(HTregs);
      if HTregs.Flags and FCarry <> 0 then
        begin
          Active_CP := $FFFF;           { on error set to $FFFF }
          System_CP := $FFFF;           { on error set to $FFFF }
          Error_Code := HTregs.AL;
        end
      else
        begin
          Active_CP := HTregs.BX;
          System_CP := HTregs.DX;
          Error_Code := 0;
        end;
    END; { Get_Code_Page }

    FUNCTION Get_Code_Page_Text(CP : word) : String14;

    { DESCRIPTION:
        Gets the current active code page in string form.
      SAMPLE CALL:
        St := Get_Code_Page_Text(860);
      RETURNS:
        e.g.: 'Portugal'
      NOTES:
        None. }

    BEGIN { Get_Code_Page_Text }
      case CP of
        437 : Get_Code_Page_Text := 'USA English';
        850 : Get_Code_Page_Text := 'Multilingual';
        852 : Get_Code_Page_Text := 'CZ/SL/HU/PL/YU';
              { CZ and SL = Czechoslovakia (Czech & Slovak) }
              { HU        = Hungary                         }
              { PL        = Poland                          }
              { YU        = Yugoslavia                      }
        854 : Get_Code_Page_Text := 'Spain';
        860 : Get_Code_Page_Text := 'Portugal';
        863 : Get_Code_Page_Text := 'Canada-French';
        865 : Get_Code_Page_Text := 'Norway/Denmark';
      else
        Get_Code_Page_Text := 'Unknown';
      end;
    END; { Get_Code_Page_Text }

[Back to MISC SWAG index] [Back to Main SWAG index] [Original]