home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 634.lha / TexadaUtils / source / include.misc.measystart.i < prev    next >
Encoding:
Text File  |  1992-04-17  |  1.7 KB  |  91 lines

  1.    incdir   'asm:include/'
  2.    include  "exec/exec.i"
  3.    include  "libraries/dosextens.i
  4. findtask=-294
  5. waitport=-384
  6. getmsg=-372
  7. forbid=-132
  8. replymsg=-378
  9. openf=-30
  10. closef=-36
  11. read=-42
  12. write=-48
  13. callexec macro
  14.    move.l   4,a6
  15.    jsr   \1(a6)
  16.    endm
  17. calldos  macro
  18.    move.l   dosbase,a6
  19.    jsr   \1(a6)
  20.    endm
  21. callint  macro
  22.    move.l   intbase,a6
  23.    jsr   \1(a6)
  24.    endm
  25. closeint macro
  26.    move.l   intbase,a1
  27.    callexec -414
  28.    endm
  29. closedos macro
  30.    move.l   dosbase,a1
  31.    callexec -414
  32.    endm
  33. openint  macro
  34.    lea   intname,a1
  35.    callexec -414
  36.    tst.l d0
  37.    beq   openintQ
  38.    move.l   d0,intbase
  39.    move.b   #1,d1
  40.    jmp   openintok
  41. openintq move.b   #0,d1
  42. openintok   
  43.    endm
  44. opendos  macro
  45.    lea   dosname,a1
  46.    callexec -414
  47.    tst.l d0
  48.    beq   opendosQ
  49.    move.l   d0,dosbase
  50.    move.b   #1,d1
  51.    jmp   opendosok
  52. opendosq move.b   #0,d1
  53. opendosok   
  54.    endm
  55.    movem.l  d0/a0,-(sp)    save initial values
  56.    clr.l returnMsg
  57.    sub.l a1,a1
  58.    CALLEXEC FindTask    find us
  59.    move.l   d0,a4
  60.    tst.l pr_CLI(a4)
  61.    beq.s fromWorkbench
  62.    movem.l  (sp)+,d0/a0    restore regs
  63.    bra   end_startup    and run the user prog
  64. fromWorkbench
  65.    lea   pr_MsgPort(a4),a0
  66.    CALLEXEC WaitPort    wait for a message
  67.    lea   pr_MsgPort(a4),a0
  68.    CALLEXEC GetMsg         then get it
  69.    move.l   d0,returnMsg      save it for later reply
  70.    nop
  71.    movem.l  (sp)+,d0/a0    restore
  72. end_startup
  73.    bsr.s _main       call our program
  74.    move.l   d0,-(sp)    save it
  75.    tst.l returnMsg
  76.    beq.s exitToDOS      if I was a CLI
  77.    CALLEXEC Forbid
  78.    move.l   returnMsg(pc),a1
  79.    CALLEXEC ReplyMsg
  80. exitToDOS
  81.    move.l   (sp)+,d0    exit code
  82.    rts
  83. returnMsg   dc.l  0
  84. intbase  dc.l  0
  85. dosbase  dc.l  0
  86. dosname  dc.b  'dos.library',0
  87. intname  dc.b  'intuition.library',0
  88.  
  89.    even
  90. _main 
  91.