home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma54.dms / ma54.adf / xpkFAST_V1_03 / xpkFAST.s < prev   
Text File  |  1993-12-03  |  2KB  |  146 lines

  1. ;;; $Id: xpkFAST.s,v 1.5 93/06/28 18:20:03 roques Exp $
  2.  
  3. ;;; The shared library bureaucrazy(!) for xpkFAST.
  4.  
  5. ;sys inc
  6.     include    "exec/types.i"
  7.     include    "exec/initializers.i"
  8.     include    "exec/libraries.i"
  9.     include    "exec/lists.i"
  10.     include    "exec/nodes.i"
  11.     include    "exec/resident.i"
  12. ;xpk inc
  13.     include    "libraries/xpk.i"
  14.     include    "libraries/xpksub.i"
  15. ;fast inc
  16.     include "fast.i"
  17.  
  18.         ; compress
  19.         XREF    PackChunk
  20.         XREF    PackFree
  21.         XREF    PackReset
  22.  
  23.         ; decompress
  24.         XREF    UnpackChunk
  25.         XREF    UnpackFree
  26.  
  27.         ; FASTmisc
  28.         XREF    PackerInfo
  29.  
  30.         XLIB    AllocMem
  31.         XLIB    FreeMem
  32.         XLIB    Remove
  33.  
  34. Pri        equ    0
  35.  
  36.  
  37.     CODE
  38.  
  39. DummyEntry:    moveq    #-1,d0    ;Tell all fools trying to execute us
  40.         rts        ;that our execution failed. ;-)
  41.  
  42.  
  43. Resident:    dc.w    RTC_MATCHWORD
  44.         dc.l    Resident
  45.         dc.l    ResEnd
  46.         dc.b    RTF_AUTOINIT
  47.         dc.b    ResVersion
  48.         dc.b    NT_LIBRARY
  49.         dc.b    Pri
  50.         dc.l    LibName
  51.         dc.l    IdString
  52.         dc.l    Init
  53.  
  54. LibName:    dc.b    'xpkFAST.library',0
  55. IdString:    dc.b    '$VER: xpkFAST.library V'
  56.         VERSIONSTR
  57.         dc.b    ' ('
  58.         VERSIONDATE
  59.         dc.b    ')',13,10,0
  60.         EVEN
  61. ResEnd:
  62.  
  63.  
  64. Init:        dc.l    XpkFast_SIZEOF
  65.         dc.l    FuncTable
  66.         dc.l    DataTable
  67.         dc.l    InitRoutine
  68.  
  69.  
  70. ; --- sys
  71. FuncTable:    dc.l    Open
  72.         dc.l    Close
  73.         dc.l    Expunge
  74.         dc.l    Null
  75. ; --- xpksub
  76.         dc.l    PackerInfo
  77.         dc.l    PackChunk
  78.         dc.l    PackFree
  79.         dc.l    PackReset
  80.         dc.l    UnpackChunk
  81.         dc.l    UnpackFree
  82. ; --- omega
  83.         dc.l    -1
  84.  
  85.  
  86. DataTable:    INITBYTE    LH_TYPE,NT_LIBRARY
  87.         INITLONG    LN_NAME,LibName
  88.         INITBYTE    LIB_FLAGS,LIBF_SUMUSED+LIBF_CHANGED
  89.         INITWORD    LIB_VERSION,Version
  90.         INITWORD    LIB_REVISION,Revision
  91.         INITLONG    LIB_IDSTRING,IdString
  92.         dc.l    0
  93.  
  94.  
  95. InitRoutine:    move.l    a5,-(a7)
  96.         move.l    d0,a5
  97.         move.l    a6,xid_SysLib(a5)
  98.         move.l    a0,xid_SegList(a5)
  99.         move.l    (a7)+,a5
  100.         rts
  101.  
  102. ;--- sys entries
  103.  
  104. Open:        addq.w    #1,LIB_OPENCNT(a6)
  105.         bclr.b    #LIBB_DELEXP,LIB_FLAGS(a6)
  106.         move.l    a6,d0
  107. rts00:        rts
  108.  
  109.  
  110. Close:        moveq    #0,d0
  111.         subq.w    #1,LIB_OPENCNT(a6)
  112.         bne.s    rts00
  113.         btst.b    #LIBB_DELEXP,LIB_FLAGS(a6)
  114.         beq.s    rts00
  115.  
  116.     ;;; Fall through to Expunge and remove the lib from memory.
  117.  
  118. Expunge:    movem.l    d1-d2/a5-a6,-(a7)
  119.         move.l    a6,a5
  120.         move.l    xid_SysLib(a5),a6
  121.         tst.w    LIB_OPENCNT(a5)
  122.         beq.s    exp1
  123.         bset.b    #LIBB_DELEXP,LIB_FLAGS(a5)
  124.         moveq    #0,d0
  125.         bra.s    expEnd
  126.  
  127. exp1:        move.l    xid_SegList(a5),d2
  128.         move.l    a5,a1
  129.         CALLSYS    Remove
  130.         moveq    #0,d0
  131.         move.l    a5,a1
  132.         move.w    LIB_NEGSIZE(a5),d0
  133.         sub.l    d0,a1
  134.         add.w    LIB_POSSIZE(a5),d0
  135.         CALLSYS    FreeMem
  136.         move.l    d2,d0
  137. expEnd:        movem.l    (a7)+,d1-d2/a5-a6
  138.         rts
  139.  
  140. Null:        moveq    #0,d0
  141.         rts
  142.  
  143. ; --- End of sys stuff ---
  144.  
  145.     END
  146.