home *** CD-ROM | disk | FTP | other *** search
/ Dave Lowe: AssemPro For Development Amiga Driver / Lowe_AssemProForDevelopmentAmigaDriver.adf / Includes / exec / libraries.i < prev    next >
Encoding:
Text File  |  1978-06-06  |  3.7 KB  |  129 lines

  1.     IFND EXEC_LIBRARIES_I@
  2. EXEC_LIBRARIES_I@ = 1
  3. ;*********************************************************************
  4. ;
  5. ;   Commodore Amiga -- ROM Operating System Executive Include File
  6. ;
  7. ;*********************************************************************
  8. ;
  9. ;   Source Control:
  10. ;
  11. ;       $Header: libraries.i,v 1.0 85/08/28 15:11:09 carl Exp $
  12. ;
  13. ;       $Locker:  $
  14. ;
  15. ;*********************************************************************
  16.  
  17.     IFND EXEC_NODES_I@
  18.     INCLUDE "exec/nodes.i"
  19.     ENDIF
  20.  
  21.  
  22. ;------ Special Constants ---------------------------------------
  23.  
  24. LIB_VECTSIZE    EQU     6
  25. LIB_RESERVED    EQU     4
  26. LIB_BASE        EQU     $FFFFFFFA       ; (-LIB_VECTSIZE)
  27. LIB_USERDEF     EQU     LIB_BASE-(LIB_RESERVED*LIB_VECTSIZE)
  28. LIB_NONSTD      EQU     LIB_USERDEF
  29.  
  30. ;----------------------------------------------------------------
  31. ;
  32. ;   Library Definition Macros
  33. ;
  34. ;----------------------------------------------------------------
  35.  
  36. ;------ LIBINIT sets base offset for library function definitions:
  37.  
  38. LIBINIT     MACRO   $\1  ; [baseOffset]
  39.             IFND     \1
  40. COUNT_LIB@  =     LIB_USERDEF
  41.             ELSE
  42. COUNT_LIB@  =     \1
  43.             ENDIF
  44.             ENDM
  45.  
  46.  
  47. ;------ LIBDEF is used to define each library function entry:
  48.  
  49. LIBDEF      MACRO   $\1   ; libraryFunctionSymbol
  50. $\1          EQU     COUNT_LIB@
  51. COUNT_LIB@  =     COUNT_LIB@-LIB_VECTSIZE
  52.             ENDM
  53.  
  54.  
  55. ;----------------------------------------------------------------
  56. ;
  57. ;   Standard Library Functions
  58. ;
  59. ;----------------------------------------------------------------
  60.  
  61.     LIBINIT LIB_BASE
  62.  
  63.     LIBDEF  LIB_OPEN
  64.     LIBDEF  LIB_CLOSE
  65.     LIBDEF  LIB_EXPUNGE
  66.     LIBDEF  LIB_EXTFUNC                 ; reserved ;
  67.  
  68.  
  69. ;----------------------------------------------------------------
  70. ;
  71. ;   Standard Library Data Structure
  72. ;
  73. ;----------------------------------------------------------------
  74.  
  75.  STRUCTURE LIB,LN_SIZE
  76.     UBYTE   LIB_FLAGS
  77.     UBYTE   LIB_pad
  78.     UWORD   LIB_NEGSIZE                 ; number of bytes before LIB
  79.     UWORD   LIB_POSSIZE                 ; number of bytes after LIB
  80.     UWORD   LIB_VERSION                 ; major
  81.     UWORD   LIB_REVISION                ; minor
  82.     APTR    LIB_IDSTRING                ; identification
  83.     ULONG   LIB_SUM                     ; the checksum itself
  84.     UWORD   LIB_OPENCNT                 ; number of current opens
  85.     LABEL   LIB_SIZE
  86.  
  87.  
  88. ;------ LIB_FLAGS bit definitions:
  89.  
  90. ;    BITDEF  LIB,SUMMING,0               ; we are currently checksumming
  91. LIBB_SUMMING = 0               ; we are currently checksumming
  92. LIBF_SUMMING = 1<<0               ; we are currently checksumming
  93. ;    BITDEF  LIB,CHANGED,1               ; we have just changed the lib
  94. LIBB_CHANGED = 1               ; we have just changed the lib
  95. LIBF_CHANGED = 1<<1               ; we have just changed the lib
  96. ;    BITDEF  LIB,SUMUSED,2               ; set if we should bother to sum
  97. LIBB_SUMUSED = 2               ; set if we should bother to sum
  98. LIBF_SUMUSED = 1<<2               ; set if we should bother to sum
  99. ;    BITDEF  LIB,DELEXP,3                ; delayed expunge
  100. LIBB_DELEXP = 3                ; delayed expunge
  101. LIBF_DELEXP = 1<<3                ; delayed expunge
  102.  
  103.  
  104. ;----------------------------------------------------------------
  105. ;
  106. ;   Function Invocation Macros
  107. ;
  108. ;----------------------------------------------------------------
  109.  
  110. ;------ CALLLIB for calling functions where A6 is already correct:
  111.  
  112. CALLLIB     MACRO   $\1   ; functionOffset
  113.             JSR     \1(A6)
  114.             ENDM
  115.  
  116.  
  117. ;------ LINKLIB for calling functions where A6 is incorrect:
  118.  
  119. LINKLIB     MACRO   $\1,$\2  ; functionOffset,libraryBase
  120.             MOVE.L  A6,-(SP)
  121.             MOVE.L  \2,A6
  122.             CALLLIB \1
  123.             MOVE.L  (SP)+,A6
  124.             ENDM
  125.  
  126.     ENDIF
  127.     END
  128.