home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / Programming / MultiDesktop / winlib.asm < prev   
Encoding:
Assembly Source File  |  1997-03-27  |  4.4 KB  |  238 lines

  1.  ; MultiDesktop-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.  include "exec/memory.i"
  11.  include "exec/tasks.i"
  12.  include "exec/execbase.i"
  13.  
  14.  include "multidesktop.i"
  15.  
  16. CALLSYS  MACRO
  17.  jsr _LVO%1(a6)
  18.  endm
  19.  
  20. XLIB  MACRO
  21.  xref _LVO%1
  22.  endm
  23.  
  24.  STRUCTURE MultiWindowsLib,LIB_SIZE
  25.   ULONG mwl_DeskLib
  26.  
  27.   ULONG mwl_SegList
  28.   UBYTE mwl_Flags
  29.   UBYTE mwl_Pad
  30.  LABEL MultiWindowsLib_SIZEOF
  31.  
  32.  XLIB OpenLibrary
  33.  XLIB CloseLibrary
  34.  XLIB FreeMem
  35.  XLIB Remove
  36.  XLIB Alert
  37.  
  38.  XREF _AddUser
  39.  XREF _RemUser
  40.  
  41. Version   equ 38
  42. Revision  equ 0
  43. Pri       equ 5
  44.  
  45. Start:
  46.  moveq #0,d0
  47.  rts
  48.  
  49. Resident:
  50.  dc.w RTC_MATCHWORD
  51.  dc.l Resident
  52.  dc.l EndCode
  53.  dc.b RTF_AUTOINIT
  54.  dc.b Version
  55.  dc.b NT_LIBRARY
  56.  dc.b Pri
  57.  dc.l LibName
  58.  dc.l idString
  59.  dc.l Init
  60.  
  61. LibName:  dc.b 'multiwindows.library',0
  62. verID:    dc.b '$VER: multiwindows.library 1.00 (Apr 10 1995) - Copyright (C) 1995 by Thomas Dreibholz',0
  63. idString: dc.b 'multiwindows.library 38.00 (Apr 10 1995)',13,10,0
  64. DeskName: dc.b 'multidesktop.library',0
  65.  
  66.  even
  67.  public _SleepPointerData
  68. _SleepPointerData:
  69.  dc.w   0,0
  70.  dc.w  %0000011000000000,%0000011000000000
  71.  dc.w  %0000111101000000,%0000111101000000
  72.  dc.w  %0011111111100000,%0011111111100000
  73.  dc.w  %0111111111100000,%0111111111100000
  74.  dc.w  %0111111111110000,%0110000111110000
  75.  dc.w  %0111111111111000,%0111101111111000
  76.  dc.w  %1111111111111000,%1111011111111000
  77.  dc.w  %0111111111111100,%0110000111111100
  78.  dc.w  %0111111111111100,%0111111100001100
  79.  dc.w  %0011111111111110,%0011111111011110
  80.  dc.w  %0111111111111100,%0111111110111100
  81.  dc.w  %0011111111111100,%0011111100001100
  82.  dc.w  %0001111111111000,%0001111111111000
  83.  dc.w  %0000011111110000,%0000011111110000
  84.  dc.w  %0000000111000000,%0000000111000000
  85.  dc.w  %0000011100000000,%0000011100000000
  86.  dc.w  %0000111111000000,%0000111111000000
  87.  dc.w  %0000011010000000,%0000011010000000
  88.  dc.w  %0000000000000000,%0000000000000000
  89.  dc.w  %0000000011000000,%0000000011000000
  90.  dc.w  %0000000011100000,%0000000011100000
  91.  dc.w  %0000000001000000,%0000000001000000
  92.  dc.w  0,0
  93. _SleepPointerEnd:
  94.  public _SleepPointerSize
  95. _SleepPointerSize:
  96.  dc.l _SleepPointerEnd-_SleepPointerData
  97.  even
  98.  
  99. EndCode:
  100.  
  101. Init:
  102.  dc.l MultiWindowsLib_SIZEOF
  103.  dc.l FuncTable
  104.  dc.l DataTable
  105.  dc.l InitRoutine
  106.  
  107. FuncTable:
  108.  dc.l Open
  109.  dc.l Close
  110.  dc.l Expunge
  111.  dc.l Null
  112.  
  113.  dc.l -1
  114.  
  115. DataTable:
  116.  INITBYTE LH_TYPE,NT_LIBRARY
  117.  INITLONG LN_NAME,LibName
  118.  INITBYTE LIB_FLAGS,LIBF_SUMUSED!LIBF_CHANGED
  119.  INITWORD LIB_VERSION,Version
  120.  INITWORD LIB_REVISION,Revision
  121.  INITLONG LIB_IDSTRING,idString
  122.  dc.l 0
  123.  
  124. InitRoutine:
  125.  move.l a5,-(a7)
  126.  move.l d0,a5
  127.  move.l #0,_Catalog
  128.  move.l #0,_Locale
  129.  move.l a6,mwl_SysLib(a5)
  130.  move.l a0,mwl_SegList(a5)
  131.  move.l $4,_SysBase
  132.  
  133.  ; Öffnen der multidesktop.library
  134.  
  135.  lea DeskName(pc),a1
  136.  move.l #0,d0
  137.  CALLSYS OpenLibrary
  138.  move.l d0,mwl_DeskLib(a5)
  139.  move.l d0,_MultiDesktopBase
  140.  move.l d0,a1
  141.  bne.s 1$
  142.  move.l #0,a5
  143.  bra InitRoutine_end
  144.  
  145.  ; Basisadressen kopieren statt neu zu öffnen
  146.  
  147. 1$:
  148.  move.l mdl_GfxLib(a1),_GfxBase
  149.  move.l mdl_IntLib(a1),_IntuitionBase
  150.  move.l mdl_FontLib(a1),_DiskfontBase
  151.  move.l mdl_LocaleLib(a1),_LocaleBase
  152.  move.l mdl_GTLib(a1),_GadToolsBase
  153.  move.l mdl_IconLib(a1),_IconBase
  154.  move.l mdl_VersionLib(a1),_VersionBase
  155.  move.l mdl_DosLib(a1),_DOSBase
  156.  
  157. InitRoutine_end:
  158.  move.l a5,d0
  159.  move.l (a7)+,a5
  160.  rts
  161.  
  162. Open:
  163.  ; Library öffnen
  164.  
  165.  jsr _InitUser(pc)
  166.  tst.l d0
  167.  beq 1$
  168.  addq.w #1,LIB_OPENCNT(a6)
  169.  bclr #LIBB_DELEXP,mwl_Flags(a6)
  170.  move.l a6,d0
  171. 1$:
  172.  rts
  173.  
  174. Close:
  175.  ; Library schließen
  176.  
  177.  jsr _RemoveUser(pc)
  178.  clr.l d0
  179.  subq.w #1,LIB_OPENCNT(a6)
  180.  bne.s 1$
  181.  btst #LIBB_DELEXP,mwl_Flags(a5)
  182.  beq.s 1$
  183.  bsr Expunge
  184. 1$:
  185.  rts
  186.  
  187. Expunge:
  188.  ; Library aus dem Speicher entfernen
  189.  
  190.  movem.l d2/a5-a6,-(a7)
  191.  move.l a6,a5
  192.  move.l mwl_SysLib(a5),a6
  193.  tst.w LIB_OPENCNT(a5)
  194.  beq.s 1$
  195.  bset #LIBB_DELEXP,mwl_Flags(a5)
  196.  clr.l d0
  197.  bra Expunge_end
  198. 1$:
  199.  move.l mwl_SegList(a5),d2
  200.  move.l a5,a1
  201.  CALLSYS Remove
  202.  
  203.  ; MultiDesktop-Library schließen
  204.  
  205.  move.l mwl_DeskLib(a5),a1
  206.  CALLSYS CloseLibrary
  207.  
  208.  ; Library entfernen
  209.  
  210.  clr.l d0
  211.  move.l a5,a1
  212.  move.w LIB_NEGSIZE(a5),d0
  213.  sub.l d0,a1
  214.  add.w LIB_POSSIZE(a5),d0
  215.  CALLSYS FreeMem
  216.  move.l d2,d0
  217. Expunge_end:
  218.  movem.l (a7)+,d2/a5-a6
  219.  rts
  220.  
  221. Null:
  222.  moveq #0,d0
  223.  rts
  224.  
  225.  global _GfxBase,4
  226.  global _IntuitionBase,4
  227.  global _DOSBase,4
  228.  global _DiskfontBase,4
  229.  global _SysBase,4
  230.  global _LocaleBase,4
  231.  global _GadToolsBase,4
  232.  global _VersionBase,4
  233.  global _IconBase,4
  234.  global _MultiDesktopBase,4
  235.  
  236.  END
  237.  
  238.