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

    Unit globals;

    { Use this Unit For Procedures, Functions and Variables that every Program you
      Write will share.
    }

    Interface

    Uses
      Dos;

    Type
      str1 = String[1]; str2 = String[2]; str3 = String[3];
      str4 = String[4]; str5 = String[5]; str6 = String[6];
      str7 = String[7]; str8 = String[8]; str9 = String[9];
      str10 = String[10]; str11 = String[11]; str12 = String[12];
      str13 = String[13]; str14 = String[14]; str15 = String[15];
      str16 = String[16]; str17 = String[17]; str18 = String[18];
      str19 = String[19]; str20 = String[20]; str21 = String[21];
      str22 = String[22]; str23 = String[23]; str24 = String[24];
      str25 = String[25]; str26 = String[26]; str27 = String[27];
      str28 = String[28]; str29 = String[29]; str30 = String[30];
      str31 = String[31]; str32 = String[32]; str33 = String[33];
      str34 = String[34]; str35 = String[35]; str36 = String[36];
      str37 = String[37]; str38 = String[38]; str39 = String[39];
      str40 = String[40]; str41 = String[41]; str42 = String[42];
      str43 = String[43]; str44 = String[44]; str45 = String[45];
      str46 = String[46]; str47 = String[47]; str48 = String[48];
      str49 = String[49]; str50 = String[50]; str51 = String[51];
      str52 = String[52]; str53 = String[53]; str54 = String[54];
      str55 = String[55]; str56 = String[56]; str57 = String[57];
      str58 = String[58]; str59 = String[59]; str60 = String[60];
      str61 = String[61]; str62 = String[62]; str63 = String[63];
      str64 = String[64]; str65 = String[65]; str66 = String[66];
      str67 = String[67]; str68 = String[68]; str69 = String[69];
      str70 = String[70]; str71 = String[71]; str72 = String[72];
      str73 = String[73]; str74 = String[74]; str75 = String[75];
      str76 = String[76]; str77 = String[77]; str78 = String[78];
      str79 = String[79]; str80 = String[80]; str81 = String[81];
      str82 = String[82]; str83 = String[83]; str84 = String[84];
      str85 = String[85]; str86 = String[86]; str87 = String[87];
      str88 = String[88]; str89 = String[89]; str90 = String[90];
      str91 = String[91]; str92 = String[92]; str93 = String[93];
      str94 = String[94]; str95 = String[95]; str96 = String[96];
      str97 = String[97]; str98 = String[98]; str99 = String[99];
      str100 = String[100]; str101 = String[101]; str102 = String[102];
      str103 = String[103]; str104 = String[104]; str105 = String[105];
      str106 = String[106]; str107 = String[107]; str108 = String[108];
      str109 = String[109]; str110 = String[110]; str111 = String[111];
      str112 = String[112]; str113 = String[113]; str114 = String[114];
      str115 = String[115]; str116 = String[116]; str117 = String[117];
      str118 = String[118]; str119 = String[119]; str120 = String[120];
      str121 = String[121]; str122 = String[122]; str123 = String[123];
      str124 = String[124]; str125 = String[125]; str126 = String[126];
      str127 = String[127]; str128 = String[128]; str129 = String[129];
      str130 = String[130]; str131 = String[131]; str132 = String[132];
      str133 = String[133]; str134 = String[134]; str135 = String[135];
      str136 = String[136]; str137 = String[137]; str138 = String[138];
      str139 = String[139]; str140 = String[140]; str141 = String[141];
      str142 = String[142]; str143 = String[143]; str144 = String[144];
      str145 = String[145]; str146 = String[146]; str147 = String[147];
      str148 = String[148]; str149 = String[149]; str150 = String[150];
      str151 = String[151]; str152 = String[152]; str153 = String[153];
      str154 = String[154]; str155 = String[155]; str156 = String[156];
      str157 = String[157]; str158 = String[158]; str159 = String[159];
      str160 = String[160]; str161 = String[161]; str162 = String[162];
      str163 = String[163]; str164 = String[164]; str165 = String[165];
      str166 = String[166]; str167 = String[167]; str168 = String[168];
      str169 = String[169]; str170 = String[170]; str171 = String[171];
      str172 = String[172]; str173 = String[173]; str174 = String[174];
      str175 = String[175]; str176 = String[176]; str177 = String[177];
      str178 = String[178]; str179 = String[179]; str180 = String[180];
      str181 = String[181]; str182 = String[182]; str183 = String[183];
      str184 = String[184]; str185 = String[185]; str186 = String[186];
      str187 = String[187]; str188 = String[188]; str189 = String[189];
      str190 = String[190]; str191 = String[191]; str192 = String[192];
      str193 = String[193]; str194 = String[194]; str195 = String[195];
      str196 = String[196]; str197 = String[197]; str198 = String[198];
      str199 = String[199]; str200 = String[200]; str201 = String[201];
      str202 = String[202]; str203 = String[203]; str204 = String[204];
      str205 = String[205]; str206 = String[206]; str207 = String[207];
      str208 = String[208]; str209 = String[209]; str210 = String[210];
      str211 = String[211]; str212 = String[212]; str213 = String[213];
      str214 = String[214]; str215 = String[215]; str216 = String[216];
      str217 = String[217]; str218 = String[218]; str219 = String[219];
      str220 = String[220]; str221 = String[221]; str222 = String[222];
      str223 = String[223]; str224 = String[224]; str225 = String[225];
      str226 = String[226]; str227 = String[227]; str228 = String[228];
      str229 = String[229]; str230 = String[230]; str231 = String[231];
      str232 = String[232]; str233 = String[233]; str234 = String[234];
      str235 = String[235]; str236 = String[236]; str237 = String[237];
      str238 = String[238]; str239 = String[239]; str240 = String[240];
      str241 = String[241]; str242 = String[242]; str243 = String[243];
      str244 = String[244]; str245 = String[245]; str246 = String[246];
      str247 = String[247]; str248 = String[248]; str249 = String[249];
      str250 = String[250]; str251 = String[251]; str252 = String[252];
      str253 = String[253]; str254 = String[254]; str255 = String[255];

    Const
      MaxWord    = $ffff;
      MinWord    = 0;
      MinInt     = Integer($8000);
      MinLongInt = $80000000;
      UseCfg     = True;

      {Color Constants:
       Black     = 0; Blue   = 1; Green   = 2; Cyan   = 3; Red   = 4;
       Magenta   = 5; Brown  = 6; LtGray  = 7;
       DkGray    = 8; LtBlue = 9; LtGreen = A; LtCyan = B; LtRed = C;
       LtMagenta = D; Yellow = E; White   = F
       }

    Const  Blink               = $80;

      {Screen color Constants}
    Const   BlackOnBlack       = $00;          BlueOnBlack        = $01;
    Const   BlackOnBlue        = $10;          BlueOnBlue         = $11;
    Const   BlackOnGreen       = $20;          BlueOnGreen        = $21;
    Const   BlackOnCyan        = $30;          BlueOnCyan         = $31;
    Const   BlackOnRed         = $40;          BlueOnRed          = $41;
    Const   BlackOnMagenta     = $50;          BlueOnMagenta      = $51;
    Const   BlackOnBrown       = $60;          BlueOnBrown        = $61;
    Const   BlackOnLtGray      = $70;          BlueOnLtGray       = $71;
    Const   GreenOnBlack       = $02;          CyanOnBlack        = $03;
    Const   GreenOnBlue        = $12;          CyanOnBlue         = $13;
    Const   GreenOnGreen       = $22;          CyanOnGreen        = $23;
    Const   GreenOnCyan        = $32;          CyanOnCyan         = $33;
    Const   GreenOnRed         = $42;          CyanOnRed          = $43;
    Const   GreenOnMagenta     = $52;          CyanOnMagenta      = $53;
    Const   GreenOnBrown       = $62;          CyanOnBrown        = $63;
    Const   GreenOnLtGray      = $72;          CyanOnLtGray       = $73;
    Const   RedOnBlue          = $14;          MagentaOnBlue      = $15;
    Const   RedOnGreen         = $24;          MagentaOnGreen     = $25;
    Const   RedOnCyan          = $34;          MagentaOnCyan      = $35;
    Const   RedOnRed           = $44;          MagentaOnRed       = $45;
    Const   RedOnMagenta       = $54;          MagentaOnMagenta   = $55;
    Const   RedOnBrown         = $64;          MagentaOnBrown     = $65;
    Const   RedOnLtGray        = $74;          MagentaOnLtGray    = $75;
    Const   BrownOnBlack       = $06;          LtGrayOnBlack      = $07;
    Const   BrownOnBlue        = $16;          LtGrayOnBlue       = $17;
    Const   BrownOnGreen       = $26;          LtGrayOnGreen      = $27;
    Const   BrownOnCyan        = $36;          LtGrayOnCyan       = $37;
    Const   BrownOnRed         = $46;          LtGrayOnRed        = $47;
    Const   BrownOnMagenta     = $56;          LtGrayOnMagenta    = $57;
    Const   BrownOnBrown       = $66;          LtGrayOnBrown      = $67;
    Const   BrownOnLtGray      = $76;          LtGrayOnLtGray     = $77;
    Const   DkGrayOnBlack      = $08;          LtBlueOnBlack      = $09;
    Const   DkGrayOnBlue       = $18;          LtBlueOnBlue       = $19;
    Const   DkGrayOnGreen      = $28;          LtBlueOnGreen      = $29;
    Const   DkGrayOnCyan       = $38;          LtBlueOnCyan       = $39;
    Const   DkGrayOnRed        = $48;          LtBlueOnRed        = $49;
    Const   DkGrayOnMagenta    = $58;          LtBlueOnMagenta    = $59;
    Const   DkGrayOnBrown      = $68;          LtBlueOnBrown      = $69;
    Const   DkGrayOnLtGray     = $78;          LtBlueOnLtGray     = $79;
    Const   LtGreenOnBlack     = $0A;          LtCyanOnBlack      = $0B;
    Const   LtGreenOnBlue      = $1A;          LtCyanOnBlue       = $1B;
    Const   LtGreenOnGreen     = $2A;          LtCyanOnGreen      = $2B;
    Const   LtGreenOnCyan      = $3A;          LtCyanOnCyan       = $3B;
    Const   LtGreenOnRed       = $4A;          LtCyanOnRed        = $4B;
    Const   LtGreenOnMagenta   = $5A;          LtCyanOnMagenta    = $5B;
    Const   LtGreenOnBrown     = $6A;          LtCyanOnBrown      = $6B;
    Const   LtGreenOnLtGray    = $7A;          LtCyanOnLtGray     = $7B;
    Const   LtRedOnBlue        = $1C;          LtMagentaOnBlue    = $1D;
    Const   LtRedOnGreen       = $2C;          LtMagentaOnGreen   = $2D;
    Const   LtRedOnCyan        = $3C;          LtMagentaOnCyan    = $3D;
    Const   LtRedOnRed         = $4C;          LtMagentaOnRed     = $4D;
    Const   LtRedOnMagenta     = $5C;          LtMagentaOnMagenta = $5D;
    Const   LtRedOnBrown       = $6C;          LtMagentaOnBrown   = $6D;
    Const   LtRedOnLtGray      = $7C;          LtMagentaOnLtGray  = $7D;
    Const   YellowOnBlack      = $0E;          WhiteOnBlack       = $0F;
    Const   YellowOnBlue       = $1E;          WhiteOnBlue        = $1F;
    Const   YellowOnGreen      = $2E;          WhiteOnGreen       = $2F;
    Const   YellowOnCyan       = $3E;          WhiteOnCyan        = $3F;
    Const   YellowOnRed        = $4E;          WhiteOnRed         = $4F;
    Const   YellowOnMagenta    = $5E;          WhiteOnMagenta     = $5F;
    Const   YellowOnBrown      = $6E;          WhiteOnBrown       = $6F;
    Const   YellowOnLtGray     = $7E;          WhiteOnLtGray      = $7F;
    Const   BlackOnDkGray     = Blink + $00;   BlueOnDkGray      = Blink + $01;
    Const   BlackOnLtBlue     = Blink + $10;   BlueOnLtBlue      = Blink + $11;
    Const   BlackOnLtGreen    = Blink + $20;   BlueOnLtGreen     = Blink + $21;
    Const   BlackOnLtCyan     = Blink + $30;   BlueOnLtCyan      = Blink + $31;
    Const   BlackOnLtRed      = Blink + $40;   BlueOnLtRed       = Blink + $41;
    Const   BlackOnLtMagenta  = Blink + $50;   BlueOnLtMagenta   = Blink + $51;
    Const   BlackOnYellow     = Blink + $60;   BlueOnYellow      = Blink + $61;
    Const   BlackOnWhite      = Blink + $70;   BlueOnWhite       = Blink + $71;
    Const   GreenOnDkGray     = Blink + $02;   CyanOnDkGray      = Blink + $03;
    Const   GreenOnLtBlue     = Blink + $12;   CyanOnLtBlue      = Blink + $13;
    Const   GreenOnLtGreen    = Blink + $22;   CyanOnLtGreen     = Blink + $23;
    Const   GreenOnLtCyan     = Blink + $32;   CyanOnLtCyan      = Blink + $33;
    Const   GreenOnLtRed      = Blink + $42;   CyanOnLtRed       = Blink + $43;
    Const   GreenOnLtMagenta  = Blink + $52;   CyanOnLtMagenta   = Blink + $53;
    Const   GreenOnYellow     = Blink + $62;   CyanOnYellow      = Blink + $63;
    Const   GreenOnWhite      = Blink + $72;   CyanOnWhite       = Blink + $73;
    Const   RedOnDkGray       = Blink + $04;   MagentaOnDkGray   = Blink + $05;
    Const   RedOnLtBlue       = Blink + $14;   MagentaOnLtBlue   = Blink + $15;
    Const   RedOnLtGreen      = Blink + $24;   MagentaOnLtGreen  = Blink + $25;
    Const   RedOnLtCyan       = Blink + $34;   MagentaOnLtCyan   = Blink + $35;
    Const   RedOnLtRed        = Blink + $44;   MagentaOnLtRed    = Blink + $45;
    Const   RedOnLtMagenta    = Blink + $54;   MagentaOnLtMagenta= Blink + $55;
    Const   RedOnYellow       = Blink + $64;   MagentaOnYellow   = Blink + $65;
    Const   RedOnWhite        = Blink + $74;   MagentaOnWhite    = Blink + $75;
    Const   BrownOnDkGray     = Blink + $06;   LtGrayOnDkGray    = Blink + $07;
    Const   BrownOnLtBlue     = Blink + $16;   LtGrayOnLtBlue    = Blink + $17;
    Const   BrownOnLtGreen    = Blink + $26;   LtGrayOnLtGreen   = Blink + $27;
    Const   BrownOnLtCyan     = Blink + $36;   LtGrayOnLtCyan    = Blink + $37;
    Const   BrownOnLtRed      = Blink + $46;   LtGrayOnLtRed     = Blink + $47;
    Const   BrownOnLtMagenta  = Blink + $56;   LtGrayOnLtMagenta = Blink + $57;
    Const   BrownOnYellow     = Blink + $66;   LtGrayOnYellow    = Blink + $67;
    Const   BrownOnWhite      = Blink + $76;   LtGrayOnWhite     = Blink + $77;
    Const   DkGrayOnDkGray    = Blink + $08;   LtBlueOnDkGray    = Blink + $09;
    Const   DkGrayOnLtBlue    = Blink + $18;   LtBlueOnLtBlue    = Blink + $19;
    Const   DkGrayOnLtGreen   = Blink + $28;   LtBlueOnLtGreen   = Blink + $29;
    Const   DkGrayOnLtCyan    = Blink + $38;   LtBlueOnLtCyan    = Blink + $39;
    Const   DkGrayOnLtRed     = Blink + $48;   LtBlueOnLtRed     = Blink + $49;
    Const   DkGrayOnLtMagenta = Blink + $58;   LtBlueOnLtMagenta = Blink + $59;
    Const   DkGrayOnYellow    = Blink + $68;   LtBlueOnYellow    = Blink + $69;
    Const   DkGrayOnWhite     = Blink + $78;   LtBlueOnWhite     = Blink + $79;
    Const   LtGreenOnDkGray   = Blink + $0A;   LtCyanOnDkGray    = Blink + $0B;
    Const   LtGreenOnLtBlue   = Blink + $1A;   LtCyanOnLtBlue    = Blink + $1B;
    Const   LtGreenOnLtGreen  = Blink + $2A;   LtCyanOnLtGreen   = Blink + $2B;
    Const   LtGreenOnLtCyan   = Blink + $3A;   LtCyanOnLtCyan    = Blink + $3B;
    Const   LtGreenOnLtRed    = Blink + $4A;   LtCyanOnLtRed     = Blink + $4B;
    Const   LtGreenOnLtMagenta= Blink + $5A;   LtCyanOnLtMagenta = Blink + $5B;
    Const   LtGreenOnYellow   = Blink + $6A;   LtCyanOnYellow    = Blink + $6B;
    Const   LtGreenOnWhite    = Blink + $7A;   LtCyanOnWhite     = Blink + $7B;
    Const   LtRedOnDkGray     = Blink + $0C;   LtMagentaOnDkGray = Blink + $0D;
    Const   LtRedOnLtBlue     = Blink + $1C;   LtMagentaOnLtBlue = Blink + $1D;
    Const   LtRedOnLtGreen    = Blink + $2C;   LtMagentaOnLtGreen= Blink + $2D;
    Const   LtRedOnLtCyan     = Blink + $3C;   LtMagentaOnLtCyan = Blink + $3D;
    Const   LtRedOnLtRed      = Blink + $4C;   LtMagentaOnLtRed  = Blink + $4D;
    Const   LtRedOnLtMagenta  = Blink + $5C;   LtMagentaOnLtMagenta= Blink + $5D;
    Const   LtRedOnYellow     = Blink + $6C;   LtMagentaOnYellow = Blink + $6D;
    Const   LtRedOnWhite      = Blink + $7C;   LtMagentaOnWhite  = Blink + $7D;
    Const   YellowOnDkGray    = Blink + $0E;   WhiteOnDkGray     = Blink + $0F;
    Const   YellowOnLtBlue    = Blink + $1E;   WhiteOnLtBlue     = Blink + $1F;
    Const   YellowOnLtGreen   = Blink + $2E;   WhiteOnLtGreen    = Blink + $2F;
    Const   YellowOnLtCyan    = Blink + $3E;   WhiteOnLtCyan     = Blink + $3F;
    Const   YellowOnLtRed     = Blink + $4E;   WhiteOnLtRed      = Blink + $4F;
    Const   YellowOnLtMagenta = Blink + $5E;   WhiteOnLtMagenta  = Blink + $5F;
    Const   YellowOnYellow    = Blink + $6E;   WhiteOnYellow     = Blink + $6F;
    Const   YellowOnWhite     = Blink + $7E;   WhiteOnWhite      = Blink + $7F;

    Var
      TempStr    : String;
      TempStrLen : Byte Absolute TempStr;

    Function Exist(fn: str80): Boolean;
    { Returns True if File fn exists in the current directory                    }

    Function ExistsOnPath(Var fn: str80): Boolean;
    { Returns True if File fn exists in any directory specified in the current   }
    { path and changes fn to a fully qualified path/File.                        }

    Function StrUpCase(s : String): String;
    { Returns an upper Case String from s. Applicable to the English language.   }

    Function StrLowCase(s : String): String;
    { Returns a String = to s With all upper Case Characters converted to lower  }

    Function Asc2Str(Var s; max: Byte): String;
    { Converts an ASCIIZ String to a Turbo Pascal String With a maximum length   }
    { of max Characters.                                                         }

    Procedure Str2Asc(s: String; Var ascStr; max: Word);
    { Converts a TP String to an ASCIIZ String of no more than max length.       }
    { WARNinG:  No checks are made that there is sufficient room in destination  }
    {           Variable.                                                        }

    Function LastPos(ch: Char; s: String): Byte;
    { Returns the last position of ch in s                                       }

    Procedure CheckIO(a: Byte);

    Implementation

    Function Exist(fn: str80): Boolean;
      begin
        TempStrLen := 0;
        TempStr    := FSearch(fn,'');
        Exist      := TempStrLen <> 0;
      end; { Exist }

    Function ExistsOnPath(Var fn: str80): Boolean;
      begin
        TempStrLen   := 0;
        TempStr      := FSearch(fn,GetEnv('PATH'));
        ExistsOnPath := TempStrLen <> 0;
        fn           := FExpand(TempStr);
      end; { ExistsOnPath }

    Function StrUpCase(s : String): String;
      Var x : Byte;
      begin
        StrUpCase[0] := s[0];
        For x := 1 to length(s) do
          StrUpCase[x] := UpCase(s[x]);
      end; { StrUpCase }

    Function StrLowCase(s : String): String;
      Var x : Byte;
      begin
        StrLowCase[0] := s[0];
        For x := 1 to length(s) do
          Case s[x] of
          'a'..'z': StrLowCase[x] := chr(ord(s[x]) and $df);
          else StrLowCase[x] := s[x];
          end; { Case }
      end; { StrLowCase }

    Function Asc2Str(Var s; max: Byte): String;
      Var stArray  : Array[1..255] of Char Absolute s;
          len      : Integer;
      begin
        len        := pos(#0,stArray)-1;                       { Get the length }
        if (len > max) or (len < 0) then               { length exceeds maximum }
          len      := max;                                  { so set to maximum }
        Asc2Str    := stArray;
        Asc2Str[0] := chr(len);                                    { Set length }
      end;  { Asc2Str }

    Procedure Str2Asc(s: String; Var ascStr; max: Word);
      begin
        FillChar(AscStr,max,0);
        if length(s) < max then
          move(s[1],AscStr,length(s))
        else
          move(s[1],AscStr,max);
      end; { Str2Asc }

    Function LastPos(ch: Char; s: String): Byte;
      Var x : Word;
      begin
        x := succ(length(s));
        Repeat
          dec(x);
        Until (s[x] = ch) or (x = 0);
      end; { LastPos }

    Procedure CheckIO(a: Byte);
      Var e : Integer;
      begin
        e := Ioresult;
        if e <> 0 then begin
          Writeln('I/O error ',e,' section ',a);
          halt(e);
        end;
      end; { CheckIO }

    end. { Globals }

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