home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d1xx
/
d150
/
execlib.lha
/
ExecLib
/
libskel.asm
< prev
next >
Wrap
Assembly Source File
|
1987-06-15
|
4KB
|
205 lines
************************************************************************
*
* FLam exec library skeleton
*
* created: neil $
* modified: jmf 04-mar-88 assemble with MCC macro assembler
*
************************************************************************
******* Included Files *************************************************
SECTION section
include "exec/types.i"
include "exec/nodes.i"
include "exec/lists.i"
include "exec/libraries.i"
include "exec/alerts.i"
include "exec/initializers.i"
include "exec/resident.i"
include "libraries/dos.i"
include "i_asmsupp.i"
include "i_flamlib.i"
******* Exported *******************************************************
XDEF Init
XDEF Open
XDEF Close
XDEF Expunge
XDEF Null
XDEF FLamName
******* Imported *******************************************************
XREF _AbsExecBase
XREF _fl_Plus
XREF _fl_Minus
XLIB OpenLibrary
XLIB CloseLibrary
XLIB Alert
XLIB FreeMem
XLIB Remove
************************************************************************
*
* Standard Program Entry Point
*
************************************************************************
Start:
CLEAR d0
rts
FLAMPRI EQU 0
initDDescrip:
DC.W RTC_MATCHWORD
DC.L initDDescrip
DC.L EndCode
DC.B RTF_AUTOINIT
DC.B VERSION
DC.B NT_LIBRARY
DC.B FLAMPRI
DC.L FLamName
DC.L idString
DC.L Init
FLamName: FLAMLIBNAME
VERSION: EQU 1
REVISION: EQU 0
idString: dc.b 'flam.library 1.0 (01 Mar 1988)',13,10,0
dosName: DOSNAME
ds.w 0
Init:
DC.L FLamLib_Sizeof
DC.L funcTable
DC.L dataTable
DC.L initRoutine
funcTable:
DC.L Open
DC.L Close
DC.L Expunge
DC.L Null
DC.L _fl_Plus
DC.L _fl_Minus
DC.L -1
dataTable:
INITBYTE LH_TYPE,NT_LIBRARY
INITLONG LN_NAME,FLamName
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,-(sp)
move.l d0,a5
move.l a6,ml_SysLib(a5)
move.l a0,ml_SegList(a5)
lea dosName(pc),a1
CLEAR d0
CALLSYS OpenLibrary
move.l d0,ml_DosLib(a5)
bne.s 1$
ALERT AG_OpenLib!AO_DOSLib
1$:
move.l a5,d0
move.l (sp)+,a5
rts
Open:
addq.w #1,LIB_OPENCNT(a6)
bclr #LIBB_DELEXP,ml_Flags(a6)
move.l a6,d0
rts
Close:
CLEAR d0
subq.w #1,LIB_OPENCNT(a6)
bne.s 1$
btst #LIBB_DELEXP,ml_Flags(a6)
beq.s 1$
bsr Expunge
1$:
rts
Expunge:
movem.l d2/a5/a6,-(sp)
move.l a6,a5
move.l ml_SysLib(a5),a6
tst.w LIB_OPENCNT(a5)
beq 1$
bset #LIBB_DELEXP,ml_Flags(a5)
CLEAR d0
bra.s Expunge_End
1$:
move.l ml_SegList(a5),d2
move.l a5,a0
CALLSYS Remove
move.l ml_DosLib(a5),a1
CALLSYS CloseLibrary
;-----------------------------------------------
; !!! ATTENTION !!! BUG RKM vol 2 Appendix K !!!
; !!! Skeleton Device & Skeleton Library !!!
; !!! in this routine : !!!
; !!! move.l LIB_NEGSIZE(a5),d0 !!!
; !!! add.l LIB_POSSIZE(a5),d0 !!!
CLEAR 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
Expunge_End:
movem.l (sp)+,d2/a5/a6
rts
Null:
CLEAR d0
rts
EndCode:
END