home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
datafiles
/
text
/
howtocode
/
source
/
iconstartup.i
< prev
next >
Wrap
Text File
|
1995-02-27
|
2KB
|
75 lines
;
; Iconstartup.i
;
; include this to allow startup from icon.
; Just code the rest of your program as if you were writing for CLI.
;
; You should also add these lines to your code:
;
; include "exec/exec_lib.i"
; include "exec/exec.i"
; include "libraries/dosextens.i
;
; or similar code for your assembler...
;
; If your assembler won't assemble this, throw it away and buy
; the excellent HISOFT DEVPAC 3.0 from Hisoft Software.
movem.l d0/a0,-(sp)
sub.l a1,a1
move.l 4.w,a6
jsr _LVOFindTask(a6)
; Could use ThisTask(a6) here, but we won't. The general rule
; is that if there is a system function to read a structure, use
; that rather than peeking the structure directly. This gives
; Commodore greater freedom to change things in the future...
move.l d0,a4
tst.l pr_CLI(a4) ; was it called from CLI?
bne.s fromCLI ; if so, skip out this bit...
lea pr_MsgPort(a4),a0
move.l 4.w,a6
jsr _LVOWaitPort(A6)
lea pr_MsgPort(a4),a0
jsr _LVOGetMsg(A6)
move.l d0,returnMsg
fromCLI
movem.l (sp)+,d0/a0
go_program
bsr.s _main ; Calls your code..
; If your code does not allow exit, the following lines are
; not required
move.l d0,-(sp)
tst.l returnMsg ; Is there a message?
beq.s exitToDOS ; if not, skip...
move.l 4.w,a6
jsr _LVOForbid(a6) ; note! No Permit needed!
move.l returnMsg(pc),a1
jsr _LVOReplyMsg(a6)
exitToDOS
move.l (sp)+,d0 ; exit code
rts
; These next lines are required whether you want to exit or not!
returnMsg dc.l 0
even ;(or cnop 0,2)
_main