home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
576.lha
/
kd_freq.library_v3.01
/
Programming.LZH
/
test.asm
< prev
next >
Wrap
Assembly Source File
|
1991-11-17
|
2KB
|
102 lines
; FRTest.asm
;
; A demo of how to call up my file requester from asm.
;
; By: Khalid Aldoseri.
;
;
include 'libraries/dosextens.i'
include 'kdbase.i'
XDEF _LVOFindTask
XDEF _LVOOpenLibrary
XDEF _LVOCloseLibrary
XDEF _LVOGetMsg
XDEF _LVOWaitPort
XDEF _LVOReplyMsg
SECTION main,CODE
move.l 4,a6 ;get Execbase
move.l a6,_ExecBase ;store execbase
sub.l a1,a1 ;clear a1
jsr _LVOFindTask(a6) ;find address of process
move.l d0,a0 ;store process address
move.l a0,_OurTask ;in _OurTask
tst.l pr_CLI(a0) ;were we run from CLI?
bne .Start ;yes, jump to start
move.l pr_MsgPort(a0),a0 ;no, get address of pr_MsgPort
jsr _LVOWaitPort(a6) ;WaitPort for the WBmsg
move.l _OurTask,a1 ;load address of task
lea pr_MsgPort(a1),a0 ;get address of pr_MsgPort
jsr _LVOGetMsg(a6) ;GetMsg the WBmsg
move.l d0,_WBMessage ;store WBmsg
.Start move.l #KDLIBVERSION,d0 ;request lib version 3 or above
lea .kdname,a1 ;load name of kdlib
jsr _LVOOpenLibrary(a6) ;openlibrary kdlib
tst.l d0 ;check if lib opened
beq .Quit1 ;no, quit
move.l d0,_KDBase ;store KDBase
.Main
move.l _KDBase,a6 ;move KDBase into a6
jsr _LVOCreateFRequest(a6) ;initialize a FRequest struct
tst.l d0 ;check for success
beq .Quit ;no, quit
move.l d0,_freq ;store FRequest address in _freq
move.l d0,a0 ;move _freq into a0
lea .title,a1 ;move .title into a1
move.l a1,kd_fr_reqtitle(a0) ;store it in kd_fr_reqtitle
;set FR flags.. FR_STDFLAGS already
;set by the CreateFRequest call.
move.l #FR_STDFLAGS,kd_fr_flags(a0)
jsr _LVONewFReq(a6) ;call up requester
;d0 will contain either 0 for cancelled/failed or the address
;of kd_fr_fullname if successful.
tst.l d0
beq .freefr
; do your own stuff here with the filename
.freefr
move.l _freq,a0 ;move _freq into a0
jsr _LVODeleteFRequest(a6) ;free FRequest struct
.Quit
move.l _KDBase,a1 ;load KDBase into a1
move.l _ExecBase,a6 ;get execbase
jsr _LVOCloseLibrary(a6) ;close library
.Quit1 move.l _OurTask,a0 ;get process pointer
tst.l pr_CLI(a0) ;were we run from WB?
bne .Quit2 ;no, quit.
move.l _WBMessage,a1 ;yes, load WBmsg into a1
jsr _LVOReplyMsg(a6) ;and reply to it.
.Quit2 clr.l d0
rts ;that's all folks!
SECTION info,DATA
_ExecBase dc.l 0
_WBMessage dc.l 0
_OurTask dc.l 0
_KDBase dc.l 0
_freq dc.l 0
.title dc.b 'File Requester Test',0
.kdname dc.b 'kd_freq.library',0
end