home *** CD-ROM | disk | FTP | other *** search
/ Aminet 3 / Aminet 3 - July 1994.iso / Aminet / dev / e / makeefile.lha / MakeEFile_and_src / Examples / PModules / argarray / argarrayinit.asm < prev    next >
Encoding:
Assembly Source File  |  1994-04-19  |  1.4 KB  |  71 lines

  1. *
  2. * argarrayinit.asm
  3. *
  4. * binary source for EPP Module argarray.e
  5. *
  6.     opt l-    ; non-linkable, keep other default optimisations
  7.  
  8.     include    asmsupp.i
  9.     include    exec/memory.i
  10.     include    exec/exec_lib.i
  11.     include    workbench/startup.i
  12.     include    workbench/workbench.i
  13.     include    workbench/icon_lib.i
  14.  
  15.         rsreset
  16. argarray    rs.l 1
  17. argarraysize    rs.l 1
  18. diskobject    rs.l 1
  19.  
  20. _ArgArrayInit
  21.     movem.l    d5-7/a2-4,-(sp)
  22.     cargs    #24,argc.l,argv.l,iconbase.l,tooltypesarrayptr.l,argarraydatabase.l
  23.     move.l    argarraydatabase(sp),a4
  24.     suba.l    a2,a2
  25.     move.l    argv(sp),a3
  26.     move.l    argc(sp),d7
  27.     beq.s    fromWB
  28.  
  29.     moveq    #1,d0
  30.     cmp.l    d0,d7
  31.     bne.s    fromCLI
  32.     moveq    #0,d0
  33.     bra.s    end
  34.  
  35. fromCLI    move.l    d7,d0
  36.     asl.l    #2,d0
  37.     move.l    d0,argarraysize(a4)
  38.     move.l    #MEMF_CLEAR,d1
  39.     LINKSYS    AllocVec,4.w
  40.     move.l    d0,(a4)        ; argarray(a4)
  41.     beq.s    end
  42.  
  43.     moveq    #0,d6
  44.     subq.l    #1,d7
  45.     moveq    #0,d5
  46.     bra.s    while
  47. wend    movea.l    (a4),a0        ; argarray(a4)
  48.     adda.l    d5,a0
  49.     move.l    4(a3,d5.l),(a0)
  50.     addq.l    #1,d6
  51.     addq.l    #4,d5
  52. while    cmp.l    d7,d6
  53.     bcs.s    wend
  54.     move.l    (a4),d0        ; argarray(a4)
  55.     bra.s    end
  56.  
  57. fromWB    movea.l    sm_ArgList(a3),a0        ; get 1rst wbarg (prg's icon)
  58.     movea.l    wa_Name(a0),a0            ; get it's name ('<prg>')
  59.     LINKSYS    GetDiskObject,iconbase+4(sp)    ; +4 car move.l a6,-(sp)
  60.     move.l    d0,diskobject(a4)
  61.     beq.s    noDiskObject
  62.     movea.l    d0,a0
  63.     movea.l    do_ToolTypes(a0),a2
  64.  
  65. noDiskObject
  66.     move.l    a2,d0
  67. end    move.l    tooltypesarrayptr(sp),a0
  68.     move.l    d0,(a0)
  69.     movem.l    (sp)+,d5-7/a2-4
  70.  
  71.