home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / visual / perl.exe / {app} / Templates / other / Modula2.mod < prev    next >
Encoding:
Modula Implementation  |  2003-01-11  |  1.8 KB  |  74 lines

  1. IMPLEMENTATION MODULE Ticker;
  2. (*
  3. *)
  4.  
  5. FROM SYSTEM     IMPORT ASSEMBLER, ADDRESS;
  6. FROM System     IMPORT TermProcedure, GetVector, SetVector, ResetVector;
  7.  
  8. (* $S- *)
  9.  
  10. VAR
  11.     ClockTick       :ADDRESS;
  12.  
  13. PROCEDURE StopClock;
  14. BEGIN
  15.     (* restore the original clock ISR *)
  16.     ResetVector( 8, ClockTick );
  17. END StopClock;
  18.  
  19. PROCEDURE Tick;
  20. BEGIN
  21.     ASM
  22.         STI
  23.         PUSH    DS
  24.         MOV     DS, CS:[0]
  25.         INC     Ticks
  26.         PUSHF                       (* Chain interrupt *)
  27.         CALL    FAR ClockTick       (* Invoke the system's clock ISR *)
  28.         POP     DS
  29.         IRET
  30.     END;
  31. END Tick;
  32.  
  33. BEGIN
  34.     Ticks := 0;
  35.     GetVector( 8, ClockTick );      (* save system's clock ISR *)
  36.     TermProcedure( StopClock );     (* set procedure to restore system's ISR *)
  37.                                     (* on program termination *)
  38.     SetVector( 8, Tick );           (* install our own clock ISR *)
  39.  
  40. END Ticker.
  41.  
  42. IMPLEMENTATION MODULE People;
  43.   FROM Strings IMPORT CompareStr, Assign;
  44.  
  45.   CLASS Person;    (* a class implementation *)
  46.     PROCEDURE isMale() :BOOLEAN;
  47.       BEGIN
  48.         RETURN sex = male;
  49.       END isMale;
  50.     INIT
  51.       name := "";
  52.       sex := unknown;
  53.  END Person;
  54.  
  55.   CLASS Programmer;  (* a class implementation *)
  56.     PROCEDURE isSmart() :BOOLEAN;
  57.       BEGIN
  58.         RETURN CompareStr(favoriteLanguage,"Modula-2") = 0;
  59.       END isSmart;
  60.     INIT
  61.       favoriteLanguage := "?";
  62.   END Programmer;
  63.  
  64.   CLASS Vendor;      (* a local class declaration *)
  65.     INHERIT Programmer;
  66.     BusinessAddress : ARRAY [0..40] OF CHAR;
  67.     PROCEDURE GetAddress (VAR Address : ARRAY OF CHAR);
  68.       BEGIN
  69.         Assign(BusinessAddress, Address)
  70.       END GetAddress;
  71.     INIT
  72.       BusinessAddress := ""
  73.   END Vendor;
  74. END People.