home *** CD-ROM | disk | FTP | other *** search
/ Mods Anthology 2 / Music-AmigaModsAnthology-2of4-Psychodk.mcsteam.iso / Tools / Amiga / Misc / xList_v1.06 / xList_Sources / xlistgui.63.asm < prev    next >
Assembly Source File  |  1996-02-12  |  18KB  |  969 lines

  1. ; xList-GUI v1.06 (12.02.96), an user-friendly (and cheap) GUI frontend for
  2. ; xList (allow recursivity...)
  3. ; revision 63 - recoded in ezasm
  4.         incdir    include:
  5.         include    dos/dos.i
  6.         include    reqtools/reqtools.i
  7.         include    exec/execbase.i
  8.  
  9. GOOD_FILE    equ    1
  10. NOT_PICKED    equ    0
  11. VARSIZE        equ    8
  12. GVF_GLOBAL_ONLY    =    $100
  13.  
  14.  
  15. ;STRUCTURE xListGUI_Vars,0
  16.  
  17.  
  18.  
  19. _DOSBase    equ    -4
  20. _ReqToolsBase    equ    -8
  21. xl_wbstartup    equ    -12
  22. xl_filereq    equ    -16
  23. xl_membase    equ    -20
  24. xl_fib        equ    -24
  25. xl_size        equ    -28
  26. xl_lock        equ    -32
  27. xl_oldlock    equ    -36
  28. xl_tmplock    equ    -40
  29. xl_txtdirlock    equ    -44
  30. xl_txtlock    equ    -48
  31. xl_introfile    equ    -52
  32. xl_introdir    equ    -56
  33. xl_seg        equ    -60
  34. xl_endfile    equ    -64
  35. xl_enddir    equ    -68
  36. xl_txtfh    equ    -72
  37. xl_txtbuffer    equ    -76
  38. xl_oldlock2    equ    -80
  39. xl_rdargs    equ    -84
  40. xl_dirptr    equ    -88
  41. xl_testlock    equ    -92
  42. xl_noroot    equ    -96
  43. xl_append    equ    -100
  44. xl_endtxt    equ    -104
  45. xl_introtxt    equ    -108
  46. xl_argsarray    equ    -112
  47. xl_listfh    equ    -116
  48. xl_varbuff    equ    -120
  49. xl_dirtoscan    equ    -124
  50. xl_prvarargv    equ    -128
  51. xl_bigtotal    equ    -132
  52. xl_onedirtot    equ    -136
  53. xl_varfh    equ    -140
  54. xl_bigvarbuff    equ    -144
  55. xl_statfh    equ    -148
  56. xl_slavelock    equ    -152
  57. xl_switch    equ    -160
  58. xl_typecom_buff    equ    -416
  59. xl_rtbuffer    equ    -544
  60. xl_fibstruct    equ    -960
  61. xl_vbuf        equ    -992
  62. xl_bvbuf    equ    -1024
  63.  
  64.  
  65.  
  66.  
  67.         SECTION    text,CODE
  68.  
  69.         link    a5,#-1024
  70.  
  71.         movea.l    a5,a1
  72.         moveq    #0,d7
  73.         move.l    #255,d1
  74. _l1        move.l    d7,-(a1)
  75.         dbf    d1,_l1
  76.  
  77.         movea.l    $4.w,a6
  78.         lea    _c0(pc),a1
  79.         moveq    #37,d0
  80.         jsr    -552(a6)
  81.         move.l    d0,_DOSBase(a5)
  82.         beq    _l0
  83.  
  84.         lea    _c1(pc),a1
  85.         moveq    #0,d0
  86.         jsr    -552(a6)
  87.         move.l    d0,_ReqToolsBase(a5)
  88.         beq    _l0
  89.  
  90. progstart
  91.         bra.b    pstart
  92. version
  93.         dc.b    '$VER:'
  94. title
  95.         dc.b    ' xList-GUI v1.06 (12.02.96)',0
  96.         even
  97. pstart
  98.         moveq    #0,d0
  99.         bsr    getwbmsg
  100.         lea    xl_rtbuffer(a5),a0
  101.         move.l    a0,xl_membase(a5)
  102.         lea    xl_fibstruct(a5),a0
  103.         move.l    a0,xl_fib(a5)
  104.         lea    xl_vbuf(a5),a0
  105.         move.l    a0,xl_varbuff(a5)
  106.         lea    xl_bvbuf(a5),a0
  107.         move.l    a0,xl_bigvarbuff(a5)
  108. testprg
  109.         lea    xlistname(pc),a0
  110.         movea.l    _DOSBase(a5),a6
  111.         move.l    a0,d1
  112.         move.l    #ACCESS_READ,d2
  113.         jsr    -84(a6)
  114.         move.l    d0,xl_slavelock(a5)
  115.         bne    _l2
  116.         lea    segname(pc),a0
  117.         move.l    a0,d1
  118.         move.l    #ACCESS_READ,d2
  119.         jsr    -84(a6)
  120.         move.l    d0,xl_slavelock(a5)
  121.         bne    ulockprg
  122.         lea    prgdir(pc),a0
  123.         move.l    a0,d1
  124.         move.l    #ACCESS_READ,d2
  125.         jsr    -84(a6)
  126.         move.l    d0,xl_lock(a5)
  127.         beq    _l3
  128.         move.l    xl_lock(a5),d1
  129.         jsr    -126(a6)
  130.         move.l    d0,xl_oldlock(a5)
  131.         lea    segname(pc),a0
  132.         move.l    a0,d1
  133.         move.l    #ACCESS_READ,d2
  134.         jsr    -84(a6)
  135.         move.l    d0,xl_slavelock(a5)
  136.         bne    ulockprg
  137. _l3
  138.         lea    body8(pc),a1
  139.         lea    button8(pc),a2
  140.         bsr    disp_req
  141.         bra    replymsg
  142. _l2
  143. ulockprg
  144.         movea.l    _DOSBase(a5),a6
  145.         move.l    xl_slavelock(a5),d1
  146.         jsr    -90(a6)
  147. findseg        ;    if xList is not yet resident
  148.         lea    segname(pc),a0
  149.         movea.l    _DOSBase(a5),a6
  150.         move.l    a0,d1
  151.         moveq    #0,d2
  152.         moveq    #0,d3
  153.         jsr    -780(a6)
  154.         tst.l    d0
  155.         bne    _l4
  156.         lea    xlistname(pc),a0
  157.         move.l    a0,d1
  158.         jsr    -150(a6)
  159.         move.l    d0,xl_seg(a5)
  160.         bne    _l5
  161.         lea    segname(pc),a0
  162.         move.l    a0,d1
  163.         jsr    -150(a6)
  164.         move.l    d0,xl_seg(a5)
  165.         move.l    xl_oldlock(a5),d1
  166.         jsr    -126(a6)
  167. _l5
  168.         move.l    xl_seg(a5),d7
  169.         beq    _l6
  170.         lea    segname(pc),a0
  171.         movea.l    _DOSBase(a5),a6
  172.         move.l    a0,d1
  173.         move.l    d7,d2
  174.         moveq    #1,d3
  175.         jsr    -774(a6)
  176. _l6
  177. _l4
  178. readargs
  179.         lea    stattxt(pc),a0
  180.         movea.l    _DOSBase(a5),a6
  181.         move.l    a0,d1
  182.         move.l    #MODE_NEWFILE,d2
  183.         jsr    -30(a6)
  184.         move.l    d0,xl_statfh(a5)
  185.         bsr    deletebigvar
  186.         bsr    getbig
  187.         lea    template(pc),a0
  188.         lea    xl_argsarray(a5),a1
  189.         move.l    a0,d1
  190.         move.l    a1,d2
  191.         moveq    #0,d3
  192.         jsr    -798(a6)
  193.         move.l    d0,xl_rdargs(a5)
  194.         beq    replymsg
  195.         move.l    xl_argsarray(a5),d7
  196.         beq    _l7
  197.         moveq    #1,d7
  198.         move.l    d7,xl_switch(a5)
  199.         movea.l    xl_argsarray(a5),a0
  200.         move.l    (a0)+,xl_dirtoscan(a5)
  201.         move.l    a0,xl_dirptr(a5)
  202.         bra    phase2
  203. _l7
  204.  
  205. req1
  206.         movea.l    _ReqToolsBase(a5),a6
  207.         move.l    #RT_FILEREQ,d0
  208.         sub.l    a0,a0
  209.         jsr    -30(a6)
  210.         move.l    d0,xl_filereq(a5)
  211.         bne    _l8
  212.         lea    body1(pc),a1    ; out of memory
  213.         lea    button1(pc),a2
  214.         bsr    disp_req
  215.         bra    freeargs
  216. _l8
  217.  
  218. frallocated
  219.         clr.l    xl_txtdirlock(a5)
  220.         clr.l    xl_txtlock(a5)
  221.         clr.l    xl_introfile(a5)
  222.         clr.l    xl_introdir(a5)
  223.         clr.l    xl_endfile(a5)
  224.         clr.l    xl_enddir(a5)
  225. welcome
  226.         lea    body2(pc),a1
  227.         lea    button2(pc),a2
  228.         bsr    disp_req
  229.         tst.l    d0
  230.         beq    freereq2    ;     quit
  231.         moveq    #1,d7
  232.         cmp.l    d7,d0
  233.         beq    req4txt    ;    proceed
  234. ;    d0 = #1 popupfr
  235.         lea    body6(pc),a1    ;         about
  236.         lea    button6(pc),a2
  237.         bsr    disp_req
  238.         lea    body7(pc),a1    ; `        about2
  239.         lea    button7(pc),a2
  240.         bsr    disp_req
  241.         bra.b    welcome
  242.  
  243. req4txt
  244.         lea    body9(pc),a1    ; proceed, intro, end
  245.         lea    button9(pc),a2
  246.         bsr    disp_req
  247.         moveq    #1,d7
  248.         cmp.l    d7,d0
  249.         beq    popupfr    ;      dir req
  250.         moveq    #2,d7
  251.         cmp.l    d7,d0
  252.         beq    reqintro    ;     intro
  253.  
  254. reqend        ;    end
  255.         bsr    choose
  256.         tst.l    d0
  257.         beq    req4txt
  258.         move.l    xl_txtdirlock(a5),xl_enddir(a5)
  259.         move.l    xl_txtlock(a5),xl_endfile(a5)
  260.         bra.b    req4txt
  261.  
  262. reqintro
  263.         bsr    choose
  264.         tst.l    d0
  265.         beq    req4txt
  266.         move.l    xl_txtdirlock(a5),xl_introdir(a5)
  267.         move.l    xl_txtlock(a5),xl_introfile(a5)
  268.         bra    req4txt
  269.  
  270. popupfr
  271.         movea.l    xl_membase(a5),a2
  272.         clr.l    (a2)
  273.         movea.l    _ReqToolsBase(a5),a6
  274.         movea.l    xl_filereq(a5),a1
  275.         lea    text1(pc),a3
  276.         lea    tags1(pc),a0
  277.         jsr    -54(a6)
  278.         tst.l    d0
  279.         bne    picked
  280.         lea    body3(pc),a1
  281.         lea    button3(pc),a2
  282.         bsr    disp_req
  283.         tst.l    d0
  284.         bne    welcome
  285.         move.l    xl_introfile(a5),d7
  286.         beq    _l9
  287.         movea.l    _DOSBase(a5),a6
  288.         move.l    d7,d1
  289.         jsr    -90(a6)
  290. _l9
  291.         move.l    xl_endfile(a5),d7
  292.         beq    _l10
  293.         movea.l    _DOSBase(a5),a6
  294.         move.l    d7,d1
  295.         jsr    -90(a6)
  296. _l10
  297.         bra    freereq2
  298.  
  299. choose
  300.         movea.l    xl_membase(a5),a2
  301.         clr.l    (a2)
  302.         movea.l    _ReqToolsBase(a5),a6
  303.         movea.l    xl_filereq(a5),a1
  304.         lea    text2(pc),a3
  305.         lea    _t0,a0
  306.         jsr    -54(a6)
  307.         tst.l    d0
  308.         beq    _l11
  309.         movea.l    xl_filereq(a5),a1
  310.         movea.l    _DOSBase(a5),a6
  311.         move.l    rtfi_Dir(a1),d1
  312.         move.l    #ACCESS_READ,d2
  313.         jsr    -84(a6)
  314.         move.l    d0,xl_txtdirlock(a5)
  315.         beq    _l12
  316.         move.l    xl_txtdirlock(a5),d1
  317.         jsr    -126(a6)
  318.         move.l    d0,xl_oldlock2(a5)
  319.         move.l    xl_membase(a5),d1
  320.         move.l    #ACCESS_READ,d2
  321.         jsr    -84(a6)
  322.         move.l    d0,xl_txtlock(a5)
  323.         bne    _l13
  324.         move.l    xl_oldlock2(a5),d1
  325.         jsr    -126(a6)
  326.         move.l    d0,d1
  327.         jsr    -90(a6)
  328.         moveq    #NOT_PICKED,d0
  329.         rts
  330. _l13
  331.         movea.l    _DOSBase(a5),a6
  332.         move.l    xl_oldlock2(a5),d1
  333.         jsr    -126(a6)
  334.         move.l    d0,d1
  335.         jsr    -90(a6)
  336.         moveq    #GOOD_FILE,d0
  337.         rts
  338. _l12
  339.         moveq    #NOT_PICKED,d0
  340.         rts
  341. _l11
  342.         moveq    #NOT_PICKED,d0
  343.         rts
  344.  
  345. picked
  346.         movea.l    xl_filereq(a5),a0
  347.         move.l    rtfi_Dir(a0),xl_dirtoscan(a5)
  348.         movea.l    xl_dirtoscan(a5),a1
  349.         tst.l    (a1)
  350.         bne    _l14
  351.         movea.l    _DOSBase(a5),a6
  352.         move.l    xl_membase(a5),d1
  353.         move.l    #128,d2
  354.         jsr    -564(a6)
  355.         tst.l    d0
  356.         beq    _l15    ; success ! very likely to append
  357.         move.l    xl_membase(a5),xl_dirtoscan(a5)
  358. _l15
  359. _l14
  360. phase2
  361.         movea.l    _DOSBase(a5),a6
  362.         move.l    xl_dirtoscan(a5),d1
  363.         move.l    #ACCESS_READ,d2
  364.         jsr    -84(a6)
  365.         move.l    d0,xl_lock(a5)
  366.         bne    _l16
  367.         move.l    xl_switch(a5),d7
  368.         bne    befloop
  369.         lea    body4(pc),a1
  370.         lea    button4(pc),a2
  371.         bsr    disp_req
  372.         tst.l    d0
  373.         beq    freereq2
  374.         bra    req1
  375. _l16
  376. dirlocked
  377.         movea.l    _DOSBase(a5),a6
  378.         move.l    xl_lock(a5),d1
  379.         jsr    -126(a6)
  380.         move.l    d0,xl_oldlock(a5)
  381.         lea    outname(pc),a0
  382.         move.l    a0,d1
  383.         move.l    #ACCESS_READ,d2
  384.         jsr    -84(a6)
  385.         tst.l    d0
  386.         beq    noprev
  387.         move.l    d0,d1
  388.         jsr    -90(a6)
  389.         move.l    xl_switch(a5),d7
  390.         beq    _l17
  391.         move.l    xl_append(a5),d7
  392.         bne    noprev
  393.         bra.b    testdest
  394. _l17
  395. append_req
  396.         lea    body5(pc),a1
  397.         lea    button5(pc),a2
  398.         bsr    disp_req
  399.         tst.l    d0
  400.         beq    current
  401.         moveq    #1,d7
  402.         cmp.l    d7,d0
  403.         beq    noprev
  404. testdest
  405.         lea    outname2(pc),a0
  406.         movea.l    _DOSBase(a5),a6
  407.         move.l    a0,d1
  408.         move.l    #ACCESS_READ,d2
  409.         jsr    -84(a6)
  410.         move.l    d0,xl_testlock(a5)
  411.         beq    _l18
  412.         move.l    xl_testlock(a5),d1
  413.         jsr    -90(a6)
  414.         lea    outname2(pc),a0
  415.         add.b    #1,14(a0)
  416.         bra.b    testdest
  417. _l18
  418. rename
  419.         lea    outname(pc),a0
  420.         lea    outname2(pc),a1
  421.         movea.l    _DOSBase(a5),a6
  422.         move.l    a0,d1
  423.         move.l    a1,d2
  424.         jsr    -78(a6)
  425.  
  426. noprev        ;    ****** Beginning of the serious stuff ******\\\\\\\\\\\\\\\\\\\\\
  427.         bsr    printintro
  428.         clr.l    xl_introfile(a5)
  429.         lea    comline1(pc),a0    ; List >T:xltmp1 lformat "xList >>RAM:xList_out
  430.         movea.l    _DOSBase(a5),a6
  431.         move.l    a0,d1
  432.         moveq    #0,d2
  433.         moveq    #0,d3
  434.         jsr    -222(a6)
  435.         lea    tmpname(pc),a0
  436.         move.l    a0,d1
  437.         move.l    #ACCESS_READ,d2
  438.         jsr    -84(a6)
  439.         move.l    d0,xl_tmplock(a5)
  440.         beq    current
  441.         move.l    d0,d1
  442.         move.l    xl_fib(a5),d2
  443.         jsr    -102(a6)
  444.         movea.l    xl_fib(a5),a0
  445.         tst.l    fib_Size(a0)
  446.         bne    _l19
  447.         move.l    xl_tmplock(a5),d1
  448.         jsr    -90(a6)
  449.         lea    dummycom(pc),a0
  450.         move.l    a0,d1
  451.         moveq    #0,d2
  452.         moveq    #0,d3
  453.         jsr    -222(a6)
  454.         bsr    printend
  455.         clr.l    xl_endfile(a5)
  456.         bra    current
  457. _l19
  458. nonull
  459.         movea.l    _DOSBase(a5),a6
  460.         move.l    xl_tmplock(a5),d1
  461.         jsr    -90(a6)
  462.         move.l    xl_switch(a5),d7
  463.         beq    rootreq
  464.         move.l    xl_noroot(a5),d7
  465.         beq    root
  466.         bra.b    com2
  467.  
  468. rootreq
  469.         lea    body11(pc),a1
  470.         lea    button11(pc),a2
  471.         bsr    disp_req
  472.         tst.l    d0
  473.         beq    com2
  474.  
  475. root
  476.         lea    dummycom(pc),a0
  477.         movea.l    _DOSBase(a5),a6
  478.         move.l    a0,d1
  479.         moveq    #0,d2
  480.         moveq    #0,d3
  481.         jsr    -222(a6)
  482. com2
  483.         lea    comline2(pc),a0
  484. ;    dc.b    'Sort >NIL: T:xl_tmp1 to T:xl_tmp4',10,'Execute >NIL:'
  485. ;    dc.b    ' T:xl_tmp4',0
  486.         movea.l    _DOSBase(a5),a6
  487.         move.l    a0,d1
  488.         moveq    #0,d2
  489.         moveq    #0,d3
  490.         jsr    -222(a6)
  491.         bsr    printend
  492.         lea    tmpname(pc),a0
  493.         move.l    a0,d1
  494.         jsr    -72(a6)
  495.         lea    sortedname(pc),a0
  496.         move.l    a0,d1
  497.         jsr    -72(a6)
  498. current
  499.         movea.l    _DOSBase(a5),a6
  500.         move.l    xl_oldlock(a5),d1
  501.         jsr    -126(a6)
  502.         move.l    d0,d1
  503.         jsr    -90(a6)
  504. befloop        ;    scanning finished, next dir (CLI) or mainmenu (GUI)
  505.         bsr    gettotal ; stats stuff
  506.         move.l    xl_switch(a5),d7
  507.         beq    frallocated
  508.         movea.l    xl_dirptr(a5),a0
  509.         move.l    (a0)+,xl_dirtoscan(a5)
  510.         beq    freeargs
  511.         move.l    a0,xl_dirptr(a5)
  512.         bra    phase2 ; scan the next dir
  513.  
  514. ;************************** misc subroutines
  515. getwbmsg
  516.         move.l    4.w,a6
  517.         movea.l    ThisTask(a6),a2
  518.         tst.l    pr_CLI(a2)
  519.         bne    _l20
  520.         movea.l    $4.w,a6
  521.         lea    pr_MsgPort(a2),a0
  522.         jsr    -384(a6)
  523.         lea    pr_MsgPort(a2),a0
  524.         jsr    -372(a6)
  525.         move.l    d0,(a5)
  526. _l20
  527.         rts
  528.  
  529. disp_req    ;    subroutine for RT requesters
  530.         movea.l    _ReqToolsBase(a5),a6
  531.         sub.l    a3,a3
  532.         sub.l    a4,a4
  533.         lea    tags2(pc),a0
  534.         jsr    -66(a6)
  535.         move.l    d0,d0
  536.         rts
  537.  
  538. printintro    ;    unlock, currentdir
  539.         move.l    xl_introtxt(a5),d7
  540.         beq    _l21
  541.         movea.l    _DOSBase(a5),a6
  542.         move.l    d7,d1
  543.         move.l    #ACCESS_READ,d2
  544.         jsr    -84(a6)
  545.         tst.l    d0
  546.         beq    _l22
  547.         move.l    d0,d1
  548.         jsr    -90(a6)
  549.         movea.l    xl_introtxt(a5),a2
  550.         lea    comline3(pc),a0
  551.         bsr    appendcom
  552. _l22
  553.         rts
  554. _l21
  555. itfromgui
  556.         move.l    xl_introfile(a5),xl_txtlock(a5)
  557.         bne    _l23
  558.         rts
  559. _l23
  560.         bra    printtxt2
  561.  
  562. printend
  563.         move.l    xl_endtxt(a5),d7
  564.         beq    _l24
  565.         movea.l    _DOSBase(a5),a6
  566.         move.l    d7,d1
  567.         move.l    #ACCESS_READ,d2
  568.         jsr    -84(a6)
  569.         tst.l    d0
  570.         beq    _l25
  571.         move.l    d0,d1
  572.         jsr    -90(a6)
  573.         movea.l    xl_endtxt(a5),a2
  574.         lea    comline3(pc),a0
  575.         bsr    appendcom
  576. _l25
  577.         rts
  578. _l24
  579. etfromgui
  580.         move.l    xl_endfile(a5),xl_txtlock(a5)
  581.         bne    _l26
  582.         rts
  583. _l26
  584.  
  585. printtxt2    ;    lock in xl_txtlock
  586.         lea    comline3(pc),a0
  587.         bsr    appendsub
  588.         move.l    #255,d3
  589.         sub.l    d0,d3
  590.         movea.l    _DOSBase(a5),a6
  591.         move.l    xl_txtlock(a5),d1
  592.         move.l    a1,d2
  593.         jsr    -402(a6)
  594.         lea    xl_typecom_buff(a5),a0
  595.         move.l    a0,d1
  596.         moveq    #0,d2
  597.         moveq    #0,d3
  598.         jsr    -222(a6)
  599.         move.l    xl_txtlock(a5),d1
  600.         jsr    -90(a6)
  601.         rts
  602.  
  603. appendcom    ;    a0 - beg  a2 - end
  604.         bsr    appendsub
  605.         move.l    a2,a0 ; append argument
  606. .loop2
  607.         move.b    (a0)+,(a1)+
  608.         bne.b    .loop2
  609.         lea    xl_typecom_buff(a5),a0
  610.         movea.l    _DOSBase(a5),a6
  611.         move.l    a0,d1
  612.         moveq    #0,d2
  613.         moveq    #0,d3
  614.         jsr    -222(a6)
  615.         rts
  616.  
  617. appendsub
  618.         lea    xl_typecom_buff(a5),a1
  619.         moveq    #-1,d0
  620. .loop
  621.         addq    #1,d0
  622.         move.b    (a0)+,(a1)+ ; copy beginning of command in memory
  623.         bne.b    .loop
  624.         tst.b    -(a1)
  625. return
  626.         rts
  627.  
  628.  
  629. **************************************
  630.  
  631.  
  632. gettotal
  633. ; check if env:xltotal is here - if yes: get it - add to maintotal - del it -
  634. ; (maintotal's will be added to have the real total, in case of multiple dirs)
  635.         lea    varfname(pc),a0
  636.         movea.l    _DOSBase(a5),a6
  637.         move.l    a0,d1
  638.         move.l    #ACCESS_READ,d2
  639.         jsr    -84(a6)
  640.         move.l    d0,xl_slavelock(a5)
  641.         beq    _l27
  642.         move.l    xl_slavelock(a5),d1
  643.         jsr    -90(a6)
  644.         lea    varname(pc),a0
  645.         move.l    a0,d1
  646.         move.l    xl_varbuff(a5),d2
  647.         move.l    #VARSIZE,d3
  648.         move.l    #GVF_GLOBAL_ONLY,d4
  649.         jsr    -906(a6)
  650.         lea    xl_onedirtot(a5),a0
  651.         move.l    xl_varbuff(a5),d1
  652.         move.l    a0,d2
  653.         jsr    -816(a6)
  654.         lea    mtotfmt(pc),a0
  655.         lea    xl_dirtoscan(a5),a1
  656.         move.l    xl_statfh(a5),d1
  657.         move.l    a0,d2
  658.         move.l    a1,d3
  659.         jsr    -354(a6)
  660.         move.l    xl_statfh(a5),d1
  661.         moveq    #0,d2
  662.         move.l    #OFFSET_END,d3
  663.         jsr    -66(a6)
  664.         bsr    getbig
  665.         lea    varfname(pc),a0
  666.         move.l    a0,d1
  667.         jsr    -72(a6)
  668.         lea    basevar(pc),a0
  669.         move.l    a0,d1
  670.         jsr    -72(a6)
  671. _l27
  672.         rts
  673.  
  674. deletebigvar
  675.         lea    bigvfname(pc),a0
  676.         movea.l    _DOSBase(a5),a6
  677.         move.l    a0,d1
  678.         jsr    -72(a6)
  679.         rts
  680.  
  681. getbig
  682.         lea    bigvfname(pc),a0
  683.         movea.l    _DOSBase(a5),a6
  684.         move.l    a0,d1
  685.         move.l    #ACCESS_READ,d2
  686.         jsr    -84(a6)
  687.         tst.l    d0
  688.         bne    _l28
  689.         lea    bigvname(pc),a0
  690.         move.l    a0,d1
  691.         move.l    xl_varbuff(a5),d2
  692.         move.l    #VARSIZE,d3
  693.         move.l    #GVF_GLOBAL_ONLY,d4
  694.         jsr    -900(a6)
  695.         rts
  696. _l28
  697.  
  698. gzdh
  699.         movea.l    _DOSBase(a5),a6
  700.         move.l    d0,d1
  701.         jsr    -90(a6)
  702.         lea    bigvname(pc),a0
  703.         move.l    a0,d1
  704.         move.l    xl_bigvarbuff(a5),d2
  705.         move.l    #VARSIZE,d3
  706.         move.l    #GVF_GLOBAL_ONLY,d4
  707.         jsr    -906(a6)
  708.         lea    xl_bigtotal(a5),a0
  709.         move.l    xl_bigvarbuff(a5),d1
  710.         move.l    a0,d2
  711.         jsr    -816(a6)
  712.         move.l    xl_onedirtot(a5),d0
  713.         add.l    d0,xl_bigtotal(a5)
  714.         lea    bigvfname(pc),a0
  715.         move.l    a0,d1
  716.         move.l    #MODE_NEWFILE,d2
  717.         jsr    -30(a6)
  718.         move.l    d0,xl_varfh(a5)
  719.         beq    _l29
  720.         lea    xl_bigtotal(a5),a1
  721.         lea    fmtvar(pc),a0
  722.         move.l    xl_varfh(a5),d1
  723.         move.l    a0,d2
  724.         move.l    a1,d3
  725.         jsr    -348(a6)
  726.         move.l    xl_varfh(a5),d1
  727.         jsr    -36(a6)
  728. _l29
  729.         rts
  730.  
  731. freereq2
  732.         move.l    xl_filereq(a5),d7
  733.         beq    _l30
  734.         movea.l    _ReqToolsBase(a5),a6
  735.         movea.l    d7,a1
  736.         jsr    -36(a6)
  737. _l30
  738. freeargs
  739.         move.l    xl_rdargs(a5),d7
  740.         beq    _l31
  741.         movea.l    _DOSBase(a5),a6
  742.         move.l    d7,d1
  743.         jsr    -858(a6)
  744. _l31
  745. replymsg
  746.         move.l    xl_statfh(a5),d7
  747.         beq    _l32
  748.         movea.l    _DOSBase(a5),a6
  749.         move.l    d7,d1
  750.         move.l    xl_fib(a5),d2
  751.         jsr    -390(a6)
  752.         movea.l    xl_fib(a5),a0
  753.         tst.l    fib_Size(a0)
  754.         beq    _l33
  755.         move.l    xl_bigtotal(a5),d7
  756.         beq    _l34
  757.         lea    totstat(pc),a0
  758.         lea    xl_bigtotal(a5),a1
  759.         move.l    xl_statfh(a5),d1
  760.         move.l    a0,d2
  761.         move.l    a1,d3
  762.         jsr    -354(a6)
  763. _l34
  764.         movea.l    _DOSBase(a5),a6
  765.         move.l    xl_statfh(a5),d1
  766.         jsr    -36(a6)
  767.         bra    _l35
  768. _l33
  769.         movea.l    _DOSBase(a5),a6
  770.         move.l    xl_statfh(a5),d1
  771.         jsr    -36(a6)
  772.         lea    stattxt(pc),a0
  773.         move.l    a0,d1
  774.         jsr    -72(a6)
  775. _l35
  776. _l32
  777.         move.l    xl_wbstartup(a5),d7
  778.         beq    _l36
  779.         movea.l    $4.w,a6
  780.         jsr    -132(a6)
  781.         movea.l    d7,a1
  782.         jsr    -378(a6)
  783. _l36
  784. CLIExit
  785. _l0
  786.         movea.l    $4.w,a6
  787.         move.l    _DOSBase(a5),d7
  788.         beq.s    _l37
  789.         movea.l    d7,a1
  790.         jsr    -414(a6)
  791.  
  792. _l37
  793.         move.l    _ReqToolsBase(a5),d7
  794.         beq.s    _l38
  795.         movea.l    d7,a1
  796.         jsr    -414(a6)
  797.  
  798. _l38
  799.         unlk    a5
  800.  
  801.         moveq    #0,d0
  802.         rts
  803.  
  804.  
  805. _c0        dc.b    "dos.library",0
  806. _c1        dc.b    "reqtools.library",0
  807.  
  808.  
  809.         ds.l    0
  810. _t0        dc.l    $0
  811.  
  812. ;-----------------------------------------------------------------------
  813. tags1
  814.         dc.l    RTFI_Flags,FREQF_NOFILES
  815.         dc.l    TAG_END
  816.  
  817. tags2
  818.         dc.l    RT_Underscore,'_'
  819.         dc.l    RTEZ_ReqTitle,title
  820.         dc.l    RTEZ_Flags,4 ; centertext
  821.         dc.l    TAG_END
  822.  
  823. prgdir
  824.         dc.b    'PROGDIR:',0
  825. xlistname
  826.         dc.b    'c:'
  827. segname
  828.         dc.b    'xList',0
  829. tmpname
  830.         dc.b    'T:xl_tmp1',0
  831. sortedname
  832.         dc.b    'T:xl_tmp4',0
  833. stattxt
  834.         dc.b    'RAM:xl_stats.txt',0
  835. ;stattxt2
  836. ;    dc.b    'RAM:xl_stats.txt.a',0 ; 17(an)
  837. outname
  838.         dc.b    'RAM:xList_out',0
  839. outname2
  840.         dc.b    'RAM:xList_out.a',0 ; 14(an)
  841. dummycom
  842.         dc.b    'xList >>RAM:xList_out LF=4 DL COF',0
  843. comline1
  844.         dc.b    'List >T:xl_tmp1 lformat "xList >>RAM:xList_out *"%s%s*" '
  845.         dc.b    'LF=4 DL COF" dirs all',0
  846.         dc.b    '                  '
  847. comline2
  848.         dc.b    'Sort >NIL: T:xl_tmp1 to T:xl_tmp4',10,'Execute >NIL:'
  849.         dc.b    ' T:xl_tmp4',0
  850. comline3
  851.         dc.b    'Type >>RAM:xList_out ',0
  852. varfname
  853.         dc.b    'ENV:'
  854. varname
  855.         dc.b    'xlsumtot',0
  856. bigvfname
  857.         dc.b    'ENV:'
  858. bigvname
  859.         dc.b    'xlbigtot',0
  860. basevar
  861.         dc.b    'ENV:xltotal',0
  862. mtotfmt
  863.         dc.b    '                   %-30s %5s files',10,0
  864. totstat
  865.         dc.b    '                   ------------------------------------------',10
  866.         dc.b    '                   TOTAL:                         %5ld files'
  867. flush
  868.         dc.b    10,0
  869. fmtvar
  870.         dc.b    '%N',0
  871. dosname
  872.         dc.b    'dos.library',0
  873. rtname
  874.         dc.b    'reqtools.library',0
  875.  
  876. body1
  877.         dc.b    'Out of memory!',0
  878. button1
  879.         dc.b    '_!?!',0
  880.  
  881. body2
  882.         dc.b    'Welcome to the xList-GUI !',10,10
  883.         dc.b    'You''ll have to choose a',10
  884.         dc.b    'directory to be recursively',10
  885.         dc.b    'scanned, like a "MODS:" partition.',10,10
  886.         dc.b    'Then you''ll have to wait until',10
  887.         dc.b    'this requester is poped up again,',10
  888.         dc.b    'allowing you to scan several dirs.',10
  889.         dc.b    'The last created list is always',10
  890.         dc.b    '''RAM:xList_out'', other lists are',10
  891.         dc.b    'named like ''xList_out.a'',''.b'',...',0
  892. button2
  893.         dc.b    '_Let''s go!| About... |_Quit',0
  894.  
  895. body3
  896.         dc.b    'Bad luck! Nothing selected.',0
  897. button3
  898.         dc.b    '_Main menu|_Bye',0
  899.  
  900. body4
  901.         dc.b    'Unable to lock your dir.',0
  902. button4
  903.         dc.b    '_Try another one|_Quit this lame prog',0
  904. button4b
  905.         dc.b    '_Sorry',0
  906.  
  907. body5
  908.         dc.b    'Do you want to:',10
  909.         dc.b    '- append this dir to the existing file ?',10
  910.         dc.b    '- write to a new file, by renaming the existing file',10
  911.         dc.b    'to a new name ?',10
  912.         dc.b    '(of course, your previous lists WON''T be overwritten!)',0
  913. button5
  914.         dc.b    '_Append|_New file|A_bort',0
  915.  
  916. body6
  917.         dc.b    'This tool belongs to the xList project,',10
  918.         dc.b    'started by Reez/Osmose on July 1995,',10
  919.         dc.b    'with the BiG help of the followings:',10
  920.         dc.b    'The Cyborg/NGC & Gryzor',10,10
  921.         dc.b    'And thanx to these great guys:',10
  922.         dc.b    'U.D. Mueller, for (especially) the XPK package',10
  923.         dc.b    'Nico F. & Magnus H., for the ReqTools stuff',10
  924.         dc.b    'Joe Siebenmann, for EZAsm',0
  925. button6
  926.         dc.b    'I wanna ctc _you!',0
  927.  
  928. body7
  929.         dc.b    'Feel free to write me at: (Answer Guaranteed!!!)',10,10
  930.         dc.b    'David Le Corfec',10
  931.         dc.b    '57 rue C.J. Romain',10
  932.         dc.b    '94170  Le Perreux / Marne',10
  933.         dc.b    'FRANCE',10,10
  934.         dc.b    'Email:  <lecorfec@diva.univ-mlv.fr>',10,10
  935.         dc.b    'On IRC: Reez, mainly on #amigafr  (Hi Net-mates!)',0
  936. button7
  937.         dc.b    '_OK I see...',0
  938.  
  939. body8
  940.         dc.b    'Cannot find ''xList'' in C: or',10
  941.         dc.b    'in the current directory.',10
  942.         dc.b    'Be sure to install it properly !',0
  943.  
  944. button8
  945.         dc.b    '_Be right back...',0
  946.  
  947. body9
  948.         dc.b    'Here you can choose intro and end texts for your list',0
  949. button9
  950.         dc.b    '_Next step!|Choose _Intro|Choose _End',0
  951.  
  952. button10
  953.         dc.b    '_Uh?',0
  954. body11
  955.         dc.b    'Add a listing of the root directory ?',10
  956.         dc.b    '(the directory you selected)',0
  957. button11
  958.         dc.b    'Oh _yeah!|_No, thanx.',0
  959.  
  960. text1
  961.         dc.b    'Select a directory to list:',0
  962. text2
  963.         dc.b    'Select text:',0
  964. template
  965.         dc.b    'DIR(S)/M,IT=INTROTEXT/K,ET=ENDTEXT/K,APPEND/S,NOROOT/S',0
  966.  
  967.  
  968.         END
  969.