home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / dev / tbsource.lha / TBSource / ShellBench / SB.bak next >
Text File  |  1993-12-21  |  23KB  |  1,123 lines

  1. *************************************************
  2. *                        *
  3. *         (C)opyright 1991        *
  4. *                        *
  5. *        by  Tomi Blinnikka        *
  6. *                        *
  7. *    Don´t try to understand the code    *
  8. *                        *
  9. * Version 0.01    11/01/1992            *
  10. *                        *
  11. * BUGS:    Version string incompatible.        *
  12. *                        *
  13. * Version 0.02    05/06/1992            *
  14. *                        *
  15. * BUGS:                        *
  16. *                        *
  17. *************************************************
  18.  
  19. ;add prefs and config file
  20.  
  21.     INCLUDE    "JMPLibs.i"
  22.     INCLUDE    "libraries/dos.i"
  23.     INCLUDE    "libraries/dosextens.i"
  24.     INCLUDE    "intuition/intuition.i"
  25.     INCLUDE    "intuition/gadgetclass.i"
  26.     INCLUDE    "libraries/gadtools.i"
  27.  
  28.     INCLUDE    "XREF:2.0.xref"
  29.  
  30.     INCLUDE    "XREF:gfx.xref"
  31.     INCLUDE    "XREF:intuition.xref"
  32.     INCLUDE    "XREF:exec.xref"
  33.     INCLUDE    "XREF:dos.xref"
  34.  
  35. TRUE:        EQU    1
  36. DGadTools:    set    1
  37.  
  38.         section    SB,CODE
  39.  
  40. Start:        push    d2-d7/a2-a6
  41.         push    a0
  42.  
  43.         sub.l    a1,a1            ;Find our task
  44.         lib    Exec,FindTask
  45.         move.l    d0,OurTask
  46.         move.l    d0,a4
  47.         move.l    $b8(a4),OldTaskWinPtr
  48.  
  49.         move.l    pr_CLI(a4),d0
  50.         bne    OpenDos
  51.  
  52.         lea.l    pr_MsgPort(a4),a0
  53.         lib    Exec,WaitPort
  54.         lea.l    pr_MsgPort(a4),a0
  55.         flib    Exec,GetMsg
  56.         move.l    d0,WBMsg
  57.  
  58. OpenDos:    openlib    Dos,NoDos
  59.  
  60.         move.l    pr_CLI(a4),d0
  61.         bne    CLIStart
  62.  
  63.         add.l    #4,sp
  64.         lea.l    NILName,a0
  65.         move.l    a0,d1
  66.         move.l    #MODE_NEWFILE,d2
  67.         lib    Dos,Open
  68.         move.l    d0,NILFile
  69.         beq    ShutDown
  70.         move.l    NILFile,_stdout
  71.         bra    MainStart
  72.  
  73. CLIStart:    lib    Dos,Output
  74.         move.l    d0,_stdout
  75.         beq    ShutDown
  76.  
  77.         pull    a0
  78.         cmp.b    #'?',(a0)
  79.         beq    Usage
  80.         cmp.w    #'-?',(a0)
  81.         beq    Usage
  82.         cmp.w    #'-h',(a0)
  83.         beq    Usage
  84.  
  85. ;To see if we have ks2.0 we'll try to open the gadtools.library
  86.  
  87. MainStart:    move.l    #37,d0
  88.         lea.l    _GadToolsLib,a1
  89.         lib    Exec,OpenLibrary
  90.         move.l    d0,_GadToolsBase
  91.         beq    NoKS20
  92.  
  93.         openlib    Intuition,NoInt
  94.  
  95. ;Open screen and main window
  96.  
  97.         lea.l    NewScreen1,a0
  98.         lea.l    Screen1TagList,a1
  99.         lib    Intuition,OpenScreenTagList
  100.         move.l    d0,Screen1
  101.         beq    NoScreen
  102.  
  103.         move.l    Screen1,d0
  104.         lea.l    NewWindow1,a0            ;do stuff for win1
  105.         move.l    d0,nw_Screen(a0)
  106.         move.l    d0,a1
  107.         move.b    sc_BarHeight(a1),BHeight+1
  108.         add.w    #1,BHeight
  109.         move.l    sc_Width(a1),nw_Width(a0)
  110.         move.w    BHeight,d2
  111.         move.w    d2,nw_TopEdge(a0)
  112.         sub.w    d2,nw_Height(a0)
  113.  
  114.         lea.l    NewWindow2,a0            ;do stuff for win2
  115.         move.l    d0,nw_Screen(a0)
  116.         add.w    d2,nw_Height(a0)
  117.  
  118.         lea.l    NewWindow3,a0            ;do stuff for win3
  119.         move.l    d0,nw_Screen(a0)
  120.         add.w    d2,nw_Height(a0)
  121.  
  122.         add.w    d2,PubGad1Top
  123.  
  124.         add.l    #$2c,d0                ;get ViewPort
  125.         move.l    d0,VP1
  126.  
  127.         move.l    Screen1,a0
  128.         clr.l    d0
  129.         lib    Intuition,PubScreenStatus
  130.  
  131.         lea.l    PubName,a0
  132.         lib    Intuition,SetDefaultPubScreen
  133.  
  134.         move.w    #SHANGHAI!POPPUBSCREEN,d0
  135.         lib    Intuition,SetPubScreenModes
  136.         move.l    d0,OldPubModes
  137.  
  138. ;Do GadTools preparations, gadgets and menus
  139.  
  140.         lea.l    glist,a0
  141.         lib    GadTools,CreateContext
  142.         move.l    d0,ContextGad
  143.         beq    NoContextGad
  144.  
  145.         move.l    Screen1,a0
  146.         lea.l    Screen1TagList,a1
  147.         lib    GadTools,GetVisualInfoA
  148.         move.l    d0,vi
  149.  
  150.         move.l    glist,a0
  151.         lea.l    NGExecuteGad1,a1
  152.         move.l    #TEXT_KIND,d0
  153.         move.l    vi,gng_VisualInfo(a1)
  154.         sub.l    a2,a2
  155.         lib    GadTools,CreateGadgetA
  156.         move.l    d0,a0
  157.  
  158.         add.w    #GRELBOTTOM,$c(a0)
  159.  
  160.         lea.l    NGCommandGad1,a1
  161.         move.l    #STRING_KIND,d0
  162.         move.l    vi,gng_VisualInfo(a1)
  163.         lea.l    CommandGadTagList,a2
  164.         lib    GadTools,CreateGadgetA
  165.  
  166.         move.l    d0,CommandGad1
  167.         move.l    d0,a0
  168.         move.l    $22(a0),a1
  169.         move.l    (a1),CommandGadBuf
  170.         add.w    #GRELBOTTOM,$c(a0)
  171.  
  172.         lea.l    NGOKGad,a1
  173.         move.l    #BUTTON_KIND,d0
  174.         move.l    vi,gng_VisualInfo(a1)
  175.         lea.l    GadTagList,a2
  176.         lib    GadTools,CreateGadgetA
  177.         move.l    d0,a0
  178.  
  179.         add.w    #GRELBOTTOM,$c(a0)
  180.  
  181.         lea.l    NGCancelGad,a1
  182.         move.l    #BUTTON_KIND,d0
  183.         move.l    vi,gng_VisualInfo(a1)
  184.         lea.l    GadTagList,a2
  185.         lib    GadTools,CreateGadgetA
  186.         move.l    d0,a0
  187.  
  188.         add.w    #GRELBOTTOM+GRELRIGHT,$c(a0)
  189.  
  190.         lea.l    MNProjectMenu1,a0
  191.         lea.l    MenuTagList,a1
  192.         lib    GadTools,CreateMenusA
  193.         move.l    d0,mlist
  194.         beq    NoMenus
  195.  
  196.         move.l    mlist,a0
  197.         move.l    vi,a1
  198.         lea.l    MenuTagList,a2
  199.         lib    GadTools,LayoutMenusA
  200.  
  201.         lea.l    MNProjectMenu2,a0
  202.         lea.l    MenuTagList,a1
  203.         lib    GadTools,CreateMenusA
  204.         move.l    d0,mlist2
  205.         beq    NoMenus
  206.  
  207.         move.l    mlist2,a0
  208.         move.l    vi,a1
  209.         lea.l    MenuTagList2,a2
  210.         lib    GadTools,LayoutMenusA
  211.  
  212.         bsr    OpenWin1
  213.         tst.l    d0
  214.         beq    NoWindow
  215.  
  216. ;move requesters to Window1
  217.  
  218.         move.l    OurTask,a0
  219.         move.l    Window1,$b8(a0)
  220.  
  221.         move.l    Window1,a0
  222.         lib    Intuition,WindowToFront
  223.  
  224. ;Start of main loop
  225.  
  226. Window1IDCMP:    move.l    Window1,a0
  227.         bsr    CheckIDCMP
  228.         cmp.l    #CLOSEWINDOW,d2
  229.         beq    Quit
  230.         cmp.l    #REFRESHWINDOW,d2
  231.         beq    Refresher
  232.         cmp.l    #VANILLAKEY,d2
  233.         beq    VanillaKeys
  234.         cmp.l    #MENUPICK,d2
  235.         beq    Win1Menus
  236.         cmp.l    #RAWKEY,d2
  237. ;        beq    RawKeys
  238.         cmp.l    #GADGETUP,d2
  239.         beq    GadgetSelect
  240.         cmp.l    #ACTIVEWINDOW,d2
  241. ;        beq    ActivateGads
  242.         bra    Window1IDCMP
  243.  
  244. GadgetSelect:    cmp.w    #51,$26(a5)
  245.         beq    DoPubState
  246.         bra    Window1IDCMP
  247.  
  248. DoPubState:    move.w    gg_Flags(a5),d0
  249.         and.w    #SELECTED,d0
  250.         cmp.w    #SELECTED,d0
  251.         bne    DoPubState1
  252.         lea.l    PubName,a0
  253.         lib    Intuition,SetDefaultPubScreen
  254.         bra    Window1IDCMP
  255. DoPubState1:    sub.l    a0,a0
  256.         lib    Intuition,SetDefaultPubScreen
  257.         bra    Window1IDCMP
  258.  
  259. Refresher:    move.l    Window1,a0
  260.         lib    GadTools,GT_BeginRefresh
  261.         move.l    Window1,a0
  262.         move.l    #TRUE,d0
  263.         lib    GadTools,GT_EndRefresh
  264.         bra    Window1IDCMP
  265.  
  266. VanillaKeys:    cmp.w    #$1b,d3
  267.         beq    Quit
  268.         bra    Window1IDCMP
  269. RawKeys:    cmp.w    #$5f,d3
  270.         beq    Help
  271.         bra    Window1IDCMP
  272.  
  273. Win1Menus:    bsr    MenuNull
  274.         cmp.w    #$00,d6
  275.         beq    Win1Menus1
  276.         cmp.w    #$01,d6
  277.         beq    Win1Menus2
  278.         bra    Window1IDCMP
  279. Win1Menus1:    cmp.w    #$00,d5
  280.         beq    DoBackDrop
  281.         cmp.w    #$01,d5
  282.         beq    ExecuteCommand
  283.         cmp.w    #$02,d5
  284.         beq    About
  285.         cmp.w    #$04,d5
  286.         beq    Quit
  287.         bra    Window1IDCMP
  288. Win1Menus2:    bra    Window1IDCMP
  289.  
  290. ExecuteCommand:    bsr    MenusOff
  291.         bsr    SleepPointer
  292.  
  293.         bsr    OpenWin2
  294.         tst.l    d0
  295.         beq    NoWindow
  296.  
  297. Window2IDCMP:    move.l    Window2,a0
  298.         bsr    CheckIDCMP
  299.         cmp.l    #CLOSEWINDOW,d2
  300.         beq    ExecuteQuit
  301.         cmp.l    #VANILLAKEY,d2
  302.         beq    ExecuteVKeys
  303.         cmp.l    #MENUPICK,d2
  304.         beq    Win2Menus
  305.         cmp.l    #GADGETUP,d2
  306.         beq    ExecuteGads
  307.         bra    Window2IDCMP
  308.  
  309. ExecuteGads:    cmp.w    #10,$26(a5)
  310.         beq    DoExecute
  311.         cmp.w    #98,$26(a5)
  312.         beq    DoExecute
  313.         cmp.w    #99,$26(a5)
  314.         beq    ExecuteQuit
  315.         bra    Window2IDCMP
  316.  
  317. Win2Menus:    bsr    MenuNull
  318.         cmp.w    #$00,d6
  319.         beq    Win2Menus1
  320.         bra    Window2IDCMP
  321. Win2Menus1:    cmp.w    #$00,d5
  322.         beq    DoExecute
  323.         cmp.w    #$02,d5
  324.         beq    ExecuteQuit
  325.         bra    Window2IDCMP
  326.  
  327. ExecuteVKeys:    cmp.w    #$1b,d3
  328.         beq    ExecuteQuit
  329.         bra    Window2IDCMP
  330.  
  331. DoExecute:    lea.l    CONName,a0
  332.         move.l    a0,d1
  333.         move.l    #MODE_OLDFILE,d2
  334.         lib    Dos,Open
  335.         move.l    d0,CONFile
  336.         beq    NoCON
  337.  
  338.         move.l    CommandGadBuf,d1
  339.         clr.l    d2
  340.         move.l    CONFile,d3
  341.         lib    Dos,Execute
  342.  
  343.         tst.l    CONFile
  344.         beq    ShutDown2000
  345.         move.l    CONFile,d1
  346.         lib    Dos,Close
  347.         clr.l    CONFile
  348.         bra    ExecuteQuit
  349.  
  350. ExecuteQuit:    bsr    CloseWin2
  351.  
  352.         bsr    MenusOn
  353.         bsr    NormalPointer
  354.         bra    Window1IDCMP
  355.  
  356. About:        bsr    SleepPointer
  357.         bsr    MenusOff
  358.  
  359.         move.l    Window1,a0
  360.         lea.l    AboutTxt1,a1
  361.         move.l    #$00,a2        ;positive text
  362.         lea.l    OKTxt,a3    ;a bit the wrong way around but...
  363.         move.l    #$00,d0
  364.         move.l    #$00,d1
  365.         move.l    #320,d2
  366.         move.l    #$50,d3
  367.         lib    Intuition,AutoRequest
  368.         bsr    MenusOn
  369.         bsr    NormalPointer
  370.         bra    Window1IDCMP
  371.  
  372. DoBackDrop:    move.l    mlist,a0
  373.         move.l    #$F800,d0
  374.         lib    Intuition,ItemAddress
  375.         move.l    d0,a0
  376.         move.w    mu_Flags(a0),d0
  377.         and.w    #CHECKED,d0
  378.         cmp.w    #CHECKED,d0
  379.         beq    DoBackDrop1
  380.         bsr    CloseWin1
  381.         lea.l    NewWindow1,a0
  382.         and.l    #~BACKDROP!BORDERLESS,nw_Flags(a0)
  383.         or.l    #WINDOWDEPTH!WINDOWCLOSE!WINDOWDRAG!WINDOWSIZING,nw_Flags(a0)
  384.         lea.l    SBName1,a1
  385.         move.l    a1,nw_Title(a0)
  386.         bra    DoBD_OUT
  387. DoBackDrop1:    bsr    CloseWin1
  388.         lea.l    NewWindow1,a0
  389.         or.l    #BACKDROP!BORDERLESS,nw_Flags(a0)
  390.         and.l    #~WINDOWDEPTH!WINDOWCLOSE!WINDOWDRAG!WINDOWSIZING,nw_Flags(a0)
  391.         clr.l    nw_Title(a0)
  392.         move.l    Screen1,a1
  393.         move.l    sc_Width(a1),nw_Width(a0)
  394.         move.w    BHeight,d2
  395.         move.w    d2,nw_TopEdge(a0)
  396.         sub.w    d2,nw_Height(a0)
  397. DoBD_OUT:    bsr    OpenWin1
  398.         tst.l    d0
  399.         beq    NoWindow
  400.         bra    Window1IDCMP
  401.  
  402. Help:        bra    Window1IDCMP
  403.  
  404. Quit:        bsr    CloseWin1
  405. Quit1:        bsr    CloseScreen1
  406.         tst.l    d0
  407.         beq    Quit2
  408.         move.l    OldPubModes,d0
  409.         lib    Intuition,SetPubScreenModes
  410.         sub.l    a0,a0
  411.         lib    Intuition,SetDefaultPubScreen
  412.         bra    ShutDown
  413.  
  414. Quit2:        bsr    OpenWin1
  415.         tst.l    d0
  416.         beq    Quit1
  417.         bsr    VisitorsOpen
  418.         bra    Window1IDCMP
  419.  
  420. OpenWin1:    lea.l    NewWindow1,a0
  421.         lib    Intuition,OpenWindow
  422.         move.l    d0,Window1
  423.         beq    OpenWin1_ERR1
  424.         move.l    d0,a0
  425.         move.l    $32(a0),RP1
  426. ;        move.l    Window1,a0
  427.         move.l    mlist,a1
  428.         lib    Intuition,SetMenuStrip
  429.         move.l    #-1,d0
  430.         rts
  431. OpenWin1_ERR1:    clr.l    d0
  432.         rts
  433.  
  434. CloseWin1:    tst.l    Window1
  435.         beq    CloseWin1_OUT
  436.         move.l    Window1,a0
  437.         lib    Intuition,ClearMenuStrip
  438.         move