home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / MultiDesktop / system / syslib.asm < prev    next >
Encoding:
Assembly Source File  |  1997-03-27  |  2.5 KB  |  173 lines

  1.  ; MultiSystem-Library
  2.  
  3.  include "exec/types.i"
  4.  include "exec/initializers.i"
  5.  include "exec/libraries.i"
  6.  include "exec/lists.i"
  7.  include "exec/nodes.i"
  8.  include "exec/resident.i"
  9.  include "exec/alerts.i"
  10.  
  11. CALLSYS  MACRO
  12.  jsr _LVO%1(a6)
  13.  endm
  14.  
  15. XLIB  MACRO
  16.  xref _LVO%1
  17.  endm
  18.  
  19.  STRUCTURE MultiSystemLib,LIB_SIZE
  20.   ULONG msl_SysLib
  21.   ULONG msl_SegList
  22.   UBYTE msl_Flags
  23.   UBYTE msl_Pad
  24.  LABEL MultiSystemLib_SIZEOF
  25.  
  26.  XLIB OpenLibrary
  27.  XLIB CloseLibrary
  28.  XLIB FreeMem
  29.  XLIB Remove
  30.  XLIB Alert
  31.  
  32.  XREF _GetCPUType
  33.  XREF _GetFPUType
  34.  XREF _GetMMUType
  35.  
  36.  XREF _GetCACR
  37.  XREF _SetCACR
  38.  XREF _GetCRP
  39.  XREF _SetCRP
  40.  XREF _GetSRP
  41.  XREF _SetSRP
  42.  XREF _GetTC
  43.  XREF _SetTC
  44.  XREF _GetTT0
  45.  XREF _SetTT0
  46.  XREF _GetTT1
  47.  XREF _SetTT1
  48.  
  49. Version   equ 38
  50. Revision  equ 0
  51. Pri       equ 5
  52.  
  53. Start:
  54.  moveq #0,d0
  55.  rts
  56.  
  57. Resident:
  58.  dc.w RTC_MATCHWORD
  59.  dc.l Resident
  60.  dc.l EndCode
  61.  dc.b RTF_AUTOINIT
  62.  dc.b Version
  63.  dc.b NT_LIBRARY
  64.  dc.b Pri
  65.  dc.l LibName
  66.  dc.l idString
  67.  dc.l Init
  68.  
  69. LibName:  dc.b 'multisystem.library',0
  70. verID:    dc.b '$VER: multisystem.library 68030 1.00 (May 5 1995) - Copyright (C) 1995 by Thomas Dreibholz',0
  71. idString: dc.b 'multisystem.library 68030 38.00 (May 5 1995)',13,10,0
  72.  even
  73. EndCode:
  74.  
  75. Init:
  76.  dc.l MultiSystemLib_SIZEOF
  77.  dc.l FuncTable
  78.  dc.l DataTable
  79.  dc.l InitRoutine
  80.  
  81. FuncTable:
  82.  dc.l Open
  83.  dc.l Close
  84.  dc.l Expunge
  85.  dc.l Null
  86.  
  87.  dc.l _GetCPUType
  88.  dc.l _GetFPUType
  89.  dc.l _GetMMUType
  90.  
  91.  dc.l _GetCACR
  92.  dc.l _SetCACR
  93.  
  94.  dc.l _GetCRP
  95.  dc.l _SetCRP
  96.  dc.l _GetSRP
  97.  dc.l _SetSRP
  98.  dc.l _GetTC
  99.  dc.l _SetTC
  100.  
  101.  dc.l _GetTT0
  102.  dc.l _SetTT0
  103.  dc.l _GetTT1
  104.  dc.l _SetTT1
  105.  
  106.  dc.l -1
  107.  
  108. DataTable:
  109.  INITBYTE LH_TYPE,NT_LIBRARY
  110.  INITLONG LN_NAME,LibName
  111.  INITBYTE LIB_FLAGS,LIBF_SUMUSED!LIBF_CHANGED
  112.  INITWORD LIB_VERSION,Version
  113.  INITWORD LIB_REVISION,Revision
  114.  INITLONG LIB_IDSTRING,idString
  115.  dc.l 0
  116.  
  117. InitRoutine:
  118.  move.l a5,-(a7)
  119.  move.l d0,a5
  120.  move.l a6,msl_SysLib(a5)
  121.  move.l a0,msl_SegList(a5)
  122. InitRoutine_end:
  123.  move.l a5,d0
  124.  move.l (a7)+,a5
  125.  rts
  126.  
  127. Open:
  128.  addq.w #1,LIB_OPENCNT(a6)
  129.  bclr #LIBB_DELEXP,msl_Flags(a6)
  130.  move.l a6,d0
  131.  rts
  132.  
  133. Close:
  134.  clr.l d0
  135.  subq.w #1,LIB_OPENCNT(a6)
  136.  bne.s 1$
  137.  btst #LIBB_DELEXP,msl_Flags(a5)
  138.  beq.s 1$
  139.  bsr Expunge
  140. 1$:
  141.  rts
  142.  
  143. Expunge:
  144.  movem.l d2/a5-a6,-(a7)
  145.  move.l a6,a5
  146.  move.l msl_SysLib(a5),a6
  147.  tst.w LIB_OPENCNT(a5)
  148.  beq.s 1$
  149.  bset #LIBB_DELEXP,msl_Flags(a5)
  150.  clr.l d0
  151.  bra Expunge_end
  152. 1$:
  153.  move.l msl_SegList(a5),d2
  154.  move.l a5,a1
  155.  CALLSYS Remove
  156.  clr.l d0
  157.  move.l a5,a1
  158.  move.w LIB_NEGSIZE(a5),d0
  159.  sub.l d0,a1
  160.  add.w LIB_POSSIZE(a5),d0
  161.  CALLSYS FreeMem
  162.  move.l d2,d0
  163. Expunge_end:
  164.  movem.l (a7)+,d2/a5-a6
  165.  rts
  166.  
  167. Null:
  168.  moveq #0,d0
  169.  rts
  170.  
  171.  END
  172.  
  173.