home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / asmkurs / startup.i < prev   
Text File  |  1980-01-10  |  924b  |  38 lines

  1.     include    "exec/exec.i"
  2.     include    "libraries/exec_lib.i"
  3.     include    "libraries/dosextens.i"
  4.  
  5. Rep:    movem.l    d0/a0,-(sp)        ;save initial values
  6.     clr.l    returnMsg
  7.     sub.l    a1,a1
  8.     move.l  $4.w,a6
  9.     jsr    _LVOFindTask(a6)    ;find us
  10.     move.l    d0,a4
  11.     tst.l    pr_CLI(a4)
  12.     beq.s    fromWorkbench
  13.     movem.l    (sp)+,d0/a0        ;restore regs
  14.     bra    end_startup        ;and run the user prog
  15. fromWorkbench:
  16.     lea    pr_MsgPort(a4),a0
  17.     move.l  $4.w,a6
  18.     jsr    _LVOWaitPort(A6)    ;wait for a message
  19.     lea    pr_MsgPort(a4),a0
  20.     jsr    _LVOGetMsg(A6)        ;then get it
  21.     move.l    d0,returnMsg        ;save it for later reply
  22.     movem.l    (sp)+,d0/a0        ;restore
  23. end_startup:
  24.     bsr.s    Init            ;call our program
  25.     move.l    d0,-(sp)        ;save it
  26.     tst.l    returnMsg
  27.     beq.s    exitToDOS        ;if I was a CLI
  28.     move.l    $4.w,a6
  29.         jsr    _LVOForbid(a6)
  30.     move.l    returnMsg(pc),a1
  31.     jsr    _LVOPermit(a6)
  32. exitToDOS:
  33.     move.l    (sp)+,d0        ;exit code
  34.     rts
  35.  
  36. returnMsg:    dc.l    0
  37.  
  38. ************************************************************************