home *** CD-ROM | disk | FTP | other *** search
- Program Timed_Execution_Facility;
-
- {$M 4096,0,0}
-
- Uses CRT,DOS;
-
- Const
- Off = False;
- On = True;
- HaltKey = (#45); { ScanCode for Alt-X }
- HaltStr = 'Alt-X'; { String to display }
-
- Var
- TimeToRun,
- ProgramToRun : String;
- Ch : Char;
-
- {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
- {= Function: CurrentTime =}
- {= Returns : Time in 24-hour format =}
- {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
-
- Function CurrentTime : String;
- Var
- Hour, Min, Sec, i : Integer;
- HStr, MStr, SStr, Temp : String[2];
- Regs : Registers;
- Begin
- With Regs do
- Begin
- AH:=44; AL:=0;
- MsDos(Regs); { Pull the time }
- Hour:=CH; Min:=CL; { DL=100ths sec }
- Sec:=DH;
- End; { with }
- Str(Hour,Hstr); { Cvt hour to string }
- Str(Min,MStr); { Cvt min to string }
- Str(Sec,SStr); { Cvt sec to string }
- If Length(MStr) = 1 then MStr := '0'+MStr;
- If Length(SStr) = 1 then SStr := '0'+SStr;
- CurrentTime:=HStr+':'+MStr+':'+SStr;
- End; { CurrentTime }
-
- {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
- {= Procedure: Cursor =}
- {= Returns : Nothing - Turns cursor on/off =}
- {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
-
- Procedure Cursor(Status : Boolean);
- Var
- Regs : Registers;
- i : Integer;
- Begin
- FillChar(Regs,SizeOf(Regs),0);
- If (Mem[0000:1040] AND 48) <> 48 Then i := 0 { mono }
- Else i := 6; { color }
- Regs.AH := $01;
- If (Status = On) then begin { Turn ON }
- Regs.CH:=$6+i;
- Regs.CL:=$7+i;
- end
- Else begin { Turn OFF }
- Regs.CH := $20;
- Regs.CL := $20;
- end;
- Intr($10,Regs);
- End; { Cursor }
-
- {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
- {= Procedure: Help =}
- {= Returns : Nothing - Aborts program with USAGE message =}
- {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
-
- Procedure Help;
- Begin
- Writeln;
- Writeln('USAGE: TEF [24-hr time] [command]');
- Writeln;
- Cursor(On);
- Halt;
- End; { Help }
-
- {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
- {= Procedure: Parse =}
- {= Returns : TimeToRun, ProgramToRun =}
- {=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=}
-
- Procedure Parse (Var Time, Command : String);
- Var Loop : Integer;
- P1,P2 : String;
- FoundTime : Boolean;
- Begin
- If (ParamCount <> 2) then Help
- Else begin
- FoundTime:=False;
- P1:=ParamStr(1); P2:=ParamStr(2);
- For Loop:=1 to Length(P1) do
- If (P1[Loop]=':