home *** CD-ROM | disk | FTP | other *** search
- External;
-
- {
- TimerUtils.p
-
- This file declares CreateTimer, WaitTimer, and DeleteTimer.
- }
-
- {$I "Include/Ports.i"}
- {$I "Include/TimerDevice.i"}
- {$I "Include/ExecIOUtils.i"}
- {$I "Include/ExecIO.i"}
-
- Function CreateTimer : TimerRequestPtr;
- var
- Error : Short;
- TimerPort : MsgPortPtr;
- TimeReq : IOStdReqPtr;
- begin
- TimerPort := CreatePort(Nil, 0);
- if TimerPort = Nil then
- CreateTimer := Nil;
- TimeReq := CreateStdIO(TimerPort);
- if TimeReq = Nil then begin
- DeletePort(TimerPort);
- CreateTimer := Nil;
- end;
- Error := OpenDevice(TimerName, UnitVBlank, IORequestPtr(TimeReq), 0);
- if Error <> 0 then begin
- DeleteStdIO(TimeReq);
- DeletePort(TimerPort);
- CreateTimer := Nil;
- end;
- TimerBase := TimeReq^.ioReq.ioDevice;
- CreateTimer := TimerRequestPtr(TimeReq);
- end;
-
- Function SetTimer(WhichTimer : TimerRequestPtr;
- Seconds, Microseconds : Integer) : MsgPortPtr;
- var
- TempPort : MsgPortPtr;
- begin
- with WhichTimer^ do begin
- TempPort := trNode.ioMessage.mnReplyPort;
- trNode.ioCommand := TR_ADDREQUEST; { add a new timer request }
- trTime.tvSecs := Seconds; { seconds }
- trTime.tvMicro := Microseconds; { microseconds }
- SendIO(IORequestPtr(WhichTimer));
- SetTimer := TempPort;
- end;
- end;
-
- Procedure WaitTimer(WhichTimer : TimerRequestPtr;
- Seconds, Microseconds : Integer);
- var
- Error : Short;
- begin
- with WhichTimer^ do begin
- trNode.ioCommand := TR_ADDREQUEST; { add a new timer request }
- trTime.tvSecs := Seconds; { seconds }
- trTime.tvMicro := Microseconds; { microseconds }
- Error := DoIO(IORequestPtr(WhichTimer));
- end;
- end;
-
- Procedure GetSysTime(WhichTimer : TimerRequestPtr; VAR TV : TimeVal);
- var
- Error : Short;
- begin
- WhichTimer^.trNode.ioCommand := TR_GETSYSTIME;
- Error := DoIO(IORequestPtr(WhichTimer));
- TV := WhichTimer^.trTime;
- end;
-
- Procedure DeleteTimer(WhichTimer : TimerRequestPtr);
- var
- WhichPort : MsgPortPtr;
- begin
- CloseDevice(IORequestPtr(WhichTimer));
- WhichPort := WhichTimer^.trNode.ioMessage.mnReplyPort;
- DeleteStdIO(IOStdReqPtr(WhichTimer));
- DeletePort(WhichPort);
- end;
-