************************************************************************
* alibtest.asm -- Asm example that calls the Sample.library functions
*
* Linkage Info:
* FROM Astartup.obj, alibtest.o
* LIBRARY LIB:amiga.lib, LIB:sample.lib
* TO ALibTest
************************************************************************
INCLUDE "exec/types.i"
INCLUDE "exec/libraries.i"
INCLUDE "sampleinclude/asmsupp.i"
INCLUDE "sampleinclude/samplebase.i"
ABSEXECBASE EQU 4
XDEF _main
XREF _printf
XREF _LVODouble
XREF _LVOAddThese
XLIB OpenLibrary
XLIB CloseLibrary
section code
_main:
;------ open the test library: this will bring it in from disk
move.l ABSEXECBASE,a6
lea sampleName(pc),a1
moveq #0,d0
jsr _LVOOpenLibrary(a6)
tst.l d0
bne.s 1$
;------ couldn't find the library
pea sampleName(pc)
pea nolibmsg(pc)
jsr _printf
addq.l #8,sp
bra main_end
1$:
move.l d0,a6 ;sample.library base to a6
;------ print the library name, version, and revision
clr.l d0
move.w LIB_REVISION(a6),d0
move.l d0,-(sp)
move.w LIB_VERSION(a6),d0
move.l d0,-(sp)
move.l LN_NAME(a6),-(sp)
pea verRevMsg(pc)
jsr _printf ;call Amiga.lib printf
adda.l #16,sp ;fix 4 long stack pushes
;------ call the first test function
moveq #-7,d0
jsr _LVODouble(a6)
move.l d0,-(sp)
pea doubleMsg(pc)
jsr _printf
lea 8(sp),sp ;fix 2 long stack pushes
;------ call the second test function
moveq #21,d0
moveq #4,d1
jsr _LVOAddThese(a6)
move.l d0,-(sp)
pea addTheseMsg(pc)
jsr _printf
lea 8(sp),sp
;------ close the library
move.l a6,a1
move.l ABSEXECBASE,a6
jsr _LVOCloseLibrary(a6)
main_end:
rts
sampleName: SAMPLENAME
nolibmsg: dc.b 'can not open library "%s"',10,0
doubleMsg: dc.b 'Function Double(-7) returned %ld',10,0
addTheseMsg: dc.b 'Function AddThese(21,4) returned %ld',10,0
verRevMsg: dc.b '%s Version %ld Revision %ld',10,0
END
[Back to Amiga Developer Docs]