home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 492.lha / AmiCron_v4.2 / start.a < prev   
Text File  |  1991-04-06  |  2KB  |  121 lines

  1.     INCLUDE    "macros.i"
  2.     INCLUDE    "exec/types.i"
  3.     INCLUDE    "exec/ables.i"
  4.     INCLUDE    "exec/execbase.i"
  5.     INCLUDE    "libraries/dosextens.i"
  6.     INCLUDE    "libraries/arpbase.i"
  7.  
  8. ExecBase    EQU    4
  9.  
  10.     xref    LinkerDB,_BSSBAS,_BSSLEN
  11.     xref    run,cmdline,cmdlen
  12.  
  13.     csect    _STARTUP,0,0,0,4
  14.  
  15. start    RESIDENT    2000
  16.     lea    LinkerDB,a4
  17.     tst.l    d0
  18.     beq.s    nocmd
  19.     move.l    d0,cmdlen
  20.     lea    cmdline,a1
  21.     bra.s    cpy1
  22. cpy_cmd    move.b    (a0)+,(a1)+
  23. cpy1    dbf    d0,cpy_cmd
  24.     bra.s    cont
  25.  
  26. nocmd    move.w    $1000,cmdline
  27.     moveq.l    #1,d0
  28.     move.l    d0,cmdlen
  29.  
  30. cont    lea    _BSSBAS,a3
  31.     moveq.l    #0,d1
  32.     move.l    #_BSSLEN,d0
  33.     bra.s    clr_lp
  34. clr_bss    move.l    d1,(a3)+
  35. clr_lp    dbf    d0,clr_bss
  36.  
  37.     move.l    ExecBase.w,a6
  38.     lea    Arp,a1
  39.     moveq.l    #ArpVersion,d0
  40.     Call    OpenLibrary
  41.     move.l    d0,ArpBase(a4)
  42.     beq    noarp
  43.     move.l    d0,a0
  44.     move.l    ab_IntuiBase(a0),IntuitionBase(a4)
  45.     move.l    ab_DosBase(a0),d0
  46.     move.l    d0,DOSBase(a4)
  47.  
  48.     move.l    ThisTask(a6),a3
  49.     move.l    pr_CurrentDir(a3),d1
  50.     move.l    d0,a6
  51.     Call    DupLock
  52.     move.l    d0,curdir(a4)
  53.  
  54.     lea    pcb,a2
  55.     move.l    #2000,pcb_StackSize(a2)
  56.     move.b    LN_PRI(a3),pcb_Pri(a2)
  57.     move.b    #PRF_CLOSESPLAT,pcb_Control(a2)
  58.  
  59.     move.l    #CON,d1
  60.     move.l    #MODE_OLDFILE,d2
  61.     move.l    DOSBase(a4),a6
  62.     Call    Open
  63.     move.l    d0,pcb_Output(a2)
  64.     move.l    d0,pcb_Input(a2)
  65.  
  66.     lea    start-4(pc),a3
  67.     move.l    (a3),pcb_LoadedCode(a2)
  68.     move.l    (a3),seglist(a4)
  69.     move.l    ExecBase.w,a6
  70.     FORBID
  71.     suba.l    a1,a1
  72.     lea    name(pc),a0
  73.     move.l    ArpBase(a4),a6
  74.     Call    ASyncRun
  75.  
  76.     lea    args(pc),a1
  77.  
  78.     tst.l    d0
  79.     bmi.s    starterr
  80.  
  81.     clr.l    (a3)
  82.     move.w    d0,4(a1)
  83.     lea    startmess(pc),a0
  84.     Call    Printf
  85.     bra.s    noclose
  86.  
  87. starterr    lea    error(pc),a0
  88.     Call    Printf
  89.     move.l    curdir(a4),d1
  90.     Call    UnLock
  91.     movea.l    a6,a1
  92.     move.l    ExecBase.w,a6
  93.     Call    CloseLibrary
  94. noclose    move.l    ExecBase.w,a6
  95. ;    Call    Permit
  96.  
  97. noarp    rts
  98.  
  99. args    dc.l    name
  100. num    dc.w    0
  101.  
  102. pcb    ds.b    pcb_SIZEOF
  103. name    dc.b    "AmiCron",0
  104. CON    dc.b    "NIL:",0
  105.  
  106. Arp    dc.b    "arp.library",0
  107. error    dc.b    "Could not create %s-process!",10,0
  108. startmess    dc.b    "%s started at background shell %d",10,0
  109.  
  110.     csect    __MERGED,1,0,0,4
  111.  
  112.     xdef    IntuitionBase,ArpBase,DOSBase,curdir,seglist
  113.  
  114. seglist    dc.l    0
  115. curdir    dc.l    0
  116. ArpBase    dc.l    0
  117. DOSBase    dc.l    0
  118. IntuitionBase
  119.     dc.l    0
  120.     END
  121.