home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1994-09-22 | 2.5 KB | 83 lines |
- IMPLEMENTATION MODULE Timer;
-
- (*****************************************************************************)
- (* Als Stoppuhr wird die Systemvariable _hz_200 benutzt, die alle 5 ms hoch- *)
- (* gezaehlt wird, dadurch entsteht kein zusaetzlicher Zeitverlust durch einen*)
- (* sonst zu programmierenden Interrupt von Timer A des MFP 68901. *)
- (*___________________________________________________________________________*)
- (* 03-Mae-90 , hk *)
- (*****************************************************************************)
-
- FROM SYSTEM IMPORT (* PROC *) INLINE;
-
- (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
-
- PROCEDURE Start ((* -- /AUS *) VAR startzeit : LONGCARD );
- (*T*)
- BEGIN
- (*
- Supexec EQU 38
- XBIOS EQU 14
- hz200 EQU $4BA
-
- startzeit EQU 12
-
- Start:
- pea gettime(pc) ; Adresse der auszufuehrenden Prozedur
- move.w #Supexec, -(sp) ; Prozedur im Supervisormodus ausfuehren
- trap #XBIOS ;
- bra.s ende ; fertig
-
- gettime:
- movea.l startzeit(a6),a0
- move.l hz200, (a0) ; bisherige Anzahl der 200Hz IR's als
- ; Startzeitpunkt
- rts
-
- ende:
- *)
- INLINE( 487AH,000AH,3F3CH,0026H,4E4EH,600CH,206EH,000CH,20B9H );
- INLINE( 0000H,04BAH,4E75H );
-
- END Start;
-
- (*---------------------------------------------------------------------------*)
-
- PROCEDURE Stop ((* EIN/ -- *) startzeit : LONGCARD ): LONGCARD;
- (*T*)
- BEGIN
- (*
- Supexec EQU 38
- XBIOS EQU 14
- hz200 EQU $4BA
-
- starttime EQU 12
- RETURN EQU starttime + 4
-
- Stop:
- pea calctime(pc) ; Adresse der auszufuehrenden Prozedur
- move.w #Supexec, -(sp) ; Prozedur im Supervisormodus ausfuehren
- trap #XBIOS ;
- bra.s ende ; fertig
-
- calctime:
- move.l hz200, d0
- sub.l startzeit(a6), d0 ; Differenz der 200Hz IR's von jetzt und
- ; dem Startzeitpunkt
- move.l d0, d1 ; Differenz mal 5, damit als Millisekunden
- add.l d0, d0 ;
- add.l d0, d0 ;
- add.l d1, d0 ;
- move.l d0, RETURN(a6)
- rts
-
- ende:
- *)
- INLINE( 487AH,000AH,3F3CH,0026H,4E4EH,6018H,2039H,0000H,04BAH );
- INLINE( 90AEH,000CH,2200H,0D080H,0D080H,0D081H,2D40H,0010H,4E75H );
-
- END Stop;
-
-
- END Timer.
-