home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d503 / nofraglib.lha / NoFragLib / Source / library.s next >
Text File  |  1991-06-27  |  4KB  |  176 lines

  1.         opt     l+,o+,ow-
  2.  
  3. *-- AutoRev header do NOT edit!
  4. *
  5. *   Program         :   library.s
  6. *   Copyright       :   © 1991 Jaba Development
  7. *   Author          :   Jan van den Baard
  8. *   Creation Date   :   06-Apr-91
  9. *   Current version :   2.1
  10. *   Translator      :   Devpac version 2.14
  11. *
  12. *   REVISION HISTORY
  13. *
  14. *   Date          Version         Comment
  15. *   ---------     -------         ------------------------------------------
  16. *   19-May-91     2.1             Added 'Vec' routines.
  17. *   06-Apr-91     1.1             Initial version!
  18. *
  19. *-- REV_END --*
  20.  
  21.         incdir      'sys:Devpac_INC/'
  22.         include     'exec/types.i'
  23.         include     'exec/initializers.i'
  24.         include     'exec/alerts.i'
  25.         include     'exec/io.i'
  26.         include     'exec/libraries.i'
  27.         include     'exec/resident.i'
  28.         include     'exec/strings.i'
  29.         include     'exec/exec_lib.i'
  30.         include     'libraries/dos.i'
  31.         include     'libraries/dos_lib.i'
  32.         include     'mymacros.i'
  33.  
  34.         STRUCTURE   NoFragBase,LIB_SIZE
  35.         LABEL       nfb_SIZEOF
  36.  
  37. VERSION             EQU     2
  38. REVISION            EQU     1
  39.  
  40.         xref        GetMemoryChain
  41.         xref        AllocItem
  42.         xref        FreeItem
  43.         xref        FreeMemoryChain
  44.  
  45.         xref        AllocVecItem
  46.         xref        FreeVecItem
  47.  
  48.         SECTION     "LIB_SKELL",CODE
  49.  
  50.         lea         dosname(pc),a1
  51.         cldat       d0
  52.         move.l      (_SysBase).w,a6
  53.         libcall     OpenLibrary
  54.         move.l      d0,a6
  55.         beq.s       nolib
  56.         libcall     Output
  57.         move.l      d0,d1
  58.         beq.s       noout
  59.         move.l      #idString,d2
  60.         move.l      idSize,d3
  61.         libcall     Write
  62. noout:  move.l      a6,a1
  63.         move.l      (_SysBase).w,a6
  64.         libcall     CloseLibrary
  65. nolib:  moveq       #RETURN_FAIL,d0
  66.         rts
  67.  
  68. ROMTag:
  69.         dc.w        RTC_MATCHWORD
  70.         dc.l        ROMTag
  71.         dc.l        EndCode
  72.         dc.b        RTF_AUTOINIT
  73.         dc.b        VERSION
  74.         dc.b        NT_LIBRARY
  75.         dc.b        0
  76.         dc.l        libraryName
  77.         dc.l        idString
  78.         dc.l        Init
  79. EndCode:
  80.         dc.w        0
  81.  
  82. libraryName:
  83.         dc.b        'nofrag.library',0
  84.         even
  85. idString:
  86.         dc.b        CR,LF,' NOFRAG_LIB 2.1 (19-May-1991)'
  87.         dc.b        ' © Copyright 1991 Jaba Development.',CR,LF
  88.         dc.b        ' Written with the Devpac Assembler'
  89.         dc.b        ' version 2.14 by Jan van den Baard.',CR,LF,CR,LF,0
  90. idEnd:  even
  91. idSize: dc.l        (idEnd-idString-1)
  92. dosname:
  93.         dc.b        'dos.library',0
  94.         even
  95.  
  96. Init:
  97.         dc.l        nfb_SIZEOF
  98.         dc.l        funcTable
  99.         dc.l        dataTable
  100.         dc.l        InitLib
  101.  
  102. funcTable:
  103.         dc.l        OpenLib
  104.         dc.l        CloseLib
  105.         dc.l        ExpungeLib
  106.         dc.l        ExtFuncLib
  107.  
  108.         dc.l        GetMemoryChain
  109.         dc.l        AllocItem
  110.         dc.l        FreeItem
  111.         dc.l        FreeMemoryChain
  112.  
  113.         dc.l        AllocVecItem
  114.         dc.l        FreeVecItem
  115.  
  116.         dc.l        -1
  117.  
  118. dataTable:
  119.         INITBYTE    LH_TYPE,NT_LIBRARY
  120.         INITLONG    LN_NAME,libraryName
  121.         INITBYTE    LIB_FLAGS,LIBF_SUMUSED!LIBF_CHANGED
  122.         INITWORD    LIB_VERSION,VERSION
  123.         INITWORD    LIB_REVISION,REVISION
  124.         INITLONG    LIB_IDSTRING,idString
  125.         dc.l        0
  126.  
  127. InitLib:
  128.         move.l      a0,_SegList
  129. Done:   rts
  130.  
  131. OpenLib:
  132.         inc.w       LIB_OPENCNT(a6)
  133.         bclr        #LIBB_DELEXP,LIB_FLAGS(a6)
  134.         move.l      a6,d0
  135.         rts
  136.  
  137. CloseLib:
  138.         cldat       d0
  139.         dec.w       LIB_OPENCNT(a6)
  140.         bne.s       ret
  141.         btst        #LIBB_DELEXP,LIB_FLAGS(a6)
  142.         beq.s       ret
  143.         bsr.s       ExpungeLib
  144. ret:    rts
  145.  
  146. ExpungeLib:
  147.         movem.l     d2/a5/a6,-(sp)
  148.         tst.w       LIB_OPENCNT(a6)
  149.         beq.s       NDLex
  150.         bset        #LIBB_DELEXP,LIB_FLAGS(a6)
  151.         cldat       d0
  152.         bra.s       DLex
  153. NDLex:  move.l      a6,a5
  154.         move.l      (_SysBase).w,a6
  155.         move.l      a5,a1
  156.         libcall     Remove
  157.         move.l      _SegList,d2
  158.         movea.l     a5,a1
  159.         cldat       d0
  160.         move.w      LIB_NEGSIZE(a5),d0
  161.         suba.l      d0,a1
  162.         add.w       LIB_POSSIZE(a5),d0
  163.         libcall     FreeMem
  164.         move.l      d2,d0
  165. DLex:   movem.l     (sp)+,d2/a5/a6
  166.         rts
  167.  
  168. ExtFuncLib:
  169.         cldat       d0
  170.         rts
  171.  
  172. _SegList:
  173.         dc.l        0
  174.  
  175.         end
  176.