Contributor: SWAG SUPPORT TEAM 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 = 0ドルA; LtCyanOnBlack = 0ドルB; Const LtGreenOnBlue = 1ドルA; LtCyanOnBlue = 1ドルB; Const LtGreenOnGreen = 2ドルA; LtCyanOnGreen = 2ドルB; Const LtGreenOnCyan = 3ドルA; LtCyanOnCyan = 3ドルB; Const LtGreenOnRed = 4ドルA; LtCyanOnRed = 4ドルB; Const LtGreenOnMagenta = 5ドルA; LtCyanOnMagenta = 5ドルB; Const LtGreenOnBrown = 6ドルA; LtCyanOnBrown = 6ドルB; Const LtGreenOnLtGray = 7ドルA; LtCyanOnLtGray = 7ドルB; Const LtRedOnBlue = 1ドルC; LtMagentaOnBlue = 1ドルD; Const LtRedOnGreen = 2ドルC; LtMagentaOnGreen = 2ドルD; Const LtRedOnCyan = 3ドルC; LtMagentaOnCyan = 3ドルD; Const LtRedOnRed = 4ドルC; LtMagentaOnRed = 4ドルD; Const LtRedOnMagenta = 5ドルC; LtMagentaOnMagenta = 5ドルD; Const LtRedOnBrown = 6ドルC; LtMagentaOnBrown = 6ドルD; Const LtRedOnLtGray = 7ドルC; LtMagentaOnLtGray = 7ドルD; Const YellowOnBlack = 0ドルE; WhiteOnBlack = 0ドルF; Const YellowOnBlue = 1ドルE; WhiteOnBlue = 1ドルF; Const YellowOnGreen = 2ドルE; WhiteOnGreen = 2ドルF; Const YellowOnCyan = 3ドルE; WhiteOnCyan = 3ドルF; Const YellowOnRed = 4ドルE; WhiteOnRed = 4ドルF; Const YellowOnMagenta = 5ドルE; WhiteOnMagenta = 5ドルF; Const YellowOnBrown = 6ドルE; WhiteOnBrown = 6ドルF; Const YellowOnLtGray = 7ドルE; WhiteOnLtGray = 7ドルF; 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 + 0ドルA; LtCyanOnDkGray = Blink + 0ドルB; Const LtGreenOnLtBlue = Blink + 1ドルA; LtCyanOnLtBlue = Blink + 1ドルB; Const LtGreenOnLtGreen = Blink + 2ドルA; LtCyanOnLtGreen = Blink + 2ドルB; Const LtGreenOnLtCyan = Blink + 3ドルA; LtCyanOnLtCyan = Blink + 3ドルB; Const LtGreenOnLtRed = Blink + 4ドルA; LtCyanOnLtRed = Blink + 4ドルB; Const LtGreenOnLtMagenta= Blink + 5ドルA; LtCyanOnLtMagenta = Blink + 5ドルB; Const LtGreenOnYellow = Blink + 6ドルA; LtCyanOnYellow = Blink + 6ドルB; Const LtGreenOnWhite = Blink + 7ドルA; LtCyanOnWhite = Blink + 7ドルB; Const LtRedOnDkGray = Blink + 0ドルC; LtMagentaOnDkGray = Blink + 0ドルD; Const LtRedOnLtBlue = Blink + 1ドルC; LtMagentaOnLtBlue = Blink + 1ドルD; Const LtRedOnLtGreen = Blink + 2ドルC; LtMagentaOnLtGreen= Blink + 2ドルD; Const LtRedOnLtCyan = Blink + 3ドルC; LtMagentaOnLtCyan = Blink + 3ドルD; Const LtRedOnLtRed = Blink + 4ドルC; LtMagentaOnLtRed = Blink + 4ドルD; Const LtRedOnLtMagenta = Blink + 5ドルC; LtMagentaOnLtMagenta= Blink + 5ドルD; Const LtRedOnYellow = Blink + 6ドルC; LtMagentaOnYellow = Blink + 6ドルD; Const LtRedOnWhite = Blink + 7ドルC; LtMagentaOnWhite = Blink + 7ドルD; Const YellowOnDkGray = Blink + 0ドルE; WhiteOnDkGray = Blink + 0ドルF; Const YellowOnLtBlue = Blink + 1ドルE; WhiteOnLtBlue = Blink + 1ドルF; Const YellowOnLtGreen = Blink + 2ドルE; WhiteOnLtGreen = Blink + 2ドルF; Const YellowOnLtCyan = Blink + 3ドルE; WhiteOnLtCyan = Blink + 3ドルF; Const YellowOnLtRed = Blink + 4ドルE; WhiteOnLtRed = Blink + 4ドルF; Const YellowOnLtMagenta = Blink + 5ドルE; WhiteOnLtMagenta = Blink + 5ドルF; Const YellowOnYellow = Blink + 6ドルE; WhiteOnYellow = Blink + 6ドルF; Const YellowOnWhite = Blink + 7ドルE; WhiteOnWhite = Blink + 7ドルF; 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 }