home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / Retrace.mod < prev    next >
Encoding:
Text File  |  1995-08-07  |  2.6 KB  |  102 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        Retrace.mod
  3.  
  4.      Contains:    Vertical Retrace Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE Retrace;
  23.  
  24. IMPORT SYSTEM, Types, OSUtils;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29.     
  30. TYPE
  31.     VBLTaskPtr* = POINTER TO VBLTask;
  32.  
  33.     (*
  34.         VBLProcPtr uses register based parameters on the 68k and cannot
  35.         be written in or called from a high-level language without the help of
  36.         mixed mode or assembly glue.
  37.  
  38.         In*:
  39.          => vblTaskPtr      A0.L
  40.     *)
  41.     VBLProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE VBL*(vblTaskPtr: VBLTaskPtr); *)
  42.     VBLUPP* = Types.UniversalProcPtr;
  43.  
  44.     VBLTask* = RECORD
  45.         qLink*:                    OSUtils.QElemPtr;
  46.         qType*:                    INTEGER;
  47.         vblAddr*:                VBLUPP;
  48.         vblCount*:                INTEGER;
  49.         vblPhase*:                INTEGER;
  50.     END;
  51.  
  52. CONST
  53.     uppVBLProcInfo* = $00009802; (* Register PROCEDURE (4 bytes in A0); *)
  54.  
  55. PROCEDURE NewVBLProc*(userRoutine: VBLProcPtr): VBLUPP;
  56.     (*$IF NOT GENERATINGCFM *)
  57.     INLINE PASCAL $2E9F;
  58.     (*$END*)
  59.  
  60. PROCEDURE CallVBLProc*(vblTaskPtr: VBLTaskPtr; userRoutine: VBLUPP);
  61.     (*$IF NOT GENERATINGCFM*)
  62.     INLINE PASCAL ; (*••*)
  63.     (*To be implemented*:  Glue to move parameters into registers.*)
  64.     (*$END*)
  65.  
  66. PROCEDURE GetVBLQHdr*(): OSUtils.QHdrPtr;
  67.     (*$IF NOT GENERATINGCFM*)
  68.     INLINE PASCAL $2EBC, $0000, $0160;
  69.     (*$END*)
  70. PROCEDURE SlotVInstall*(vblBlockPtr: OSUtils.QElemPtr; theSlot: INTEGER): Types.OSErr;
  71.     (*$IF NOT GENERATINGCFM*)
  72.     INLINE PASCAL $301F, $205F, $A06F, $3E80;
  73.     (*$END*)
  74. PROCEDURE SlotVRemove*(vblBlockPtr: OSUtils.QElemPtr; theSlot: INTEGER): Types.OSErr;
  75.     (*$IF NOT GENERATINGCFM*)
  76.     INLINE PASCAL $301F, $205F, $A070, $3E80;
  77.     (*$END*)
  78. PROCEDURE AttachVBL*(theSlot: INTEGER): Types.OSErr;
  79.     (*$IF NOT GENERATINGCFM*)
  80.     INLINE PASCAL $301F, $A071, $3E80;
  81.     (*$END*)
  82. PROCEDURE DoVBLTask*(theSlot: INTEGER): Types.OSErr;
  83.     (*$IF NOT GENERATINGCFM*)
  84.     INLINE PASCAL $301F, $A072, $3E80;
  85.     (*$END*)
  86. PROCEDURE VInstall*(vblTaskPtr: OSUtils.QElemPtr): Types.OSErr;
  87.     (*$IF NOT GENERATINGCFM*)
  88.     INLINE PASCAL $205F, $A033, $3E80;
  89.     (*$END*)
  90. PROCEDURE VRemove*(vblTaskPtr: OSUtils.QElemPtr): Types.OSErr;
  91.     (*$IF NOT GENERATINGCFM*)
  92.     INLINE PASCAL $205F, $A034, $3E80;
  93.     (*$END*)
  94. (**)
  95. (* Custom Glue for 68k.*)
  96. (**)
  97.  
  98. (* $ALIGN RESET*)
  99. (* $POP*)
  100.  
  101.  END Retrace.
  102.