home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magazyn Amiga Shareware Floppies
/
ma54.dms
/
ma54.adf
/
xpkFAST_V1_03
/
xpkFAST.s
< prev
Wrap
Text File
|
1993-12-03
|
2KB
|
146 lines
;;; $Id: xpkFAST.s,v 1.5 93/06/28 18:20:03 roques Exp $
;;; The shared library bureaucrazy(!) for xpkFAST.
;sys inc
include "exec/types.i"
include "exec/initializers.i"
include "exec/libraries.i"
include "exec/lists.i"
include "exec/nodes.i"
include "exec/resident.i"
;xpk inc
include "libraries/xpk.i"
include "libraries/xpksub.i"
;fast inc
include "fast.i"
; compress
XREF PackChunk
XREF PackFree
XREF PackReset
; decompress
XREF UnpackChunk
XREF UnpackFree
; FASTmisc
XREF PackerInfo
XLIB AllocMem
XLIB FreeMem
XLIB Remove
Pri equ 0
CODE
DummyEntry: moveq #-1,d0 ;Tell all fools trying to execute us
rts ;that our execution failed. ;-)
Resident: dc.w RTC_MATCHWORD
dc.l Resident
dc.l ResEnd
dc.b RTF_AUTOINIT
dc.b ResVersion
dc.b NT_LIBRARY
dc.b Pri
dc.l LibName
dc.l IdString
dc.l Init
LibName: dc.b 'xpkFAST.library',0
IdString: dc.b '$VER: xpkFAST.library V'
VERSIONSTR
dc.b ' ('
VERSIONDATE
dc.b ')',13,10,0
EVEN
ResEnd:
Init: dc.l XpkFast_SIZEOF
dc.l FuncTable
dc.l DataTable
dc.l InitRoutine
; --- sys
FuncTable: dc.l Open
dc.l Close
dc.l Expunge
dc.l Null
; --- xpksub
dc.l PackerInfo
dc.l PackChunk
dc.l PackFree
dc.l PackReset
dc.l UnpackChunk
dc.l UnpackFree
; --- omega
dc.l -1
DataTable: INITBYTE LH_TYPE,NT_LIBRARY
INITLONG LN_NAME,LibName
INITBYTE LIB_FLAGS,LIBF_SUMUSED+LIBF_CHANGED
INITWORD LIB_VERSION,Version
INITWORD LIB_REVISION,Revision
INITLONG LIB_IDSTRING,IdString
dc.l 0
InitRoutine: move.l a5,-(a7)
move.l d0,a5
move.l a6,xid_SysLib(a5)
move.l a0,xid_SegList(a5)
move.l (a7)+,a5
rts
;--- sys entries
Open: addq.w #1,LIB_OPENCNT(a6)
bclr.b #LIBB_DELEXP,LIB_FLAGS(a6)
move.l a6,d0
rts00: rts
Close: moveq #0,d0
subq.w #1,LIB_OPENCNT(a6)
bne.s rts00
btst.b #LIBB_DELEXP,LIB_FLAGS(a6)
beq.s rts00
;;; Fall through to Expunge and remove the lib from memory.
Expunge: movem.l d1-d2/a5-a6,-(a7)
move.l a6,a5
move.l xid_SysLib(a5),a6
tst.w LIB_OPENCNT(a5)
beq.s exp1
bset.b #LIBB_DELEXP,LIB_FLAGS(a5)
moveq #0,d0
bra.s expEnd
exp1: move.l xid_SegList(a5),d2
move.l a5,a1
CALLSYS Remove
moveq #0,d0
move.l a5,a1
move.w LIB_NEGSIZE(a5),d0
sub.l d0,a1
add.w LIB_POSSIZE(a5),d0
CALLSYS FreeMem
move.l d2,d0
expEnd: movem.l (a7)+,d1-d2/a5-a6
rts
Null: moveq #0,d0
rts
; --- End of sys stuff ---
END