home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 5 / CD_Magazyn_EXEC_nr_5.iso / Programy / Emulatory / AmigaOS-uae086-exe.lha / uae-0.8.6 / UAEGUI.rexx < prev    next >
OS/2 REXX Batch file  |  1999-01-12  |  21KB  |  597 lines

  1. /* UAEGUI.rexx - A nice GUI for uae using MUIREXX
  2.  *
  3.  * How to use it: Open a shell a type "run rx UAEGUI.rexx".
  4.  * Then, run UAE. Once uae's window is opened, the GUI will
  5.  * popup.
  6.  *
  7.  * $VER: UAEGUI.rexx 0.7 (09.01.99) © by Samuel Devulder
  8.  *
  9.  * History: 
  10.  *   v0.1: First try
  11.  *   v0.2: Adaptation to MUIRexx3.0 (too bad, scripts for MUIRexx2.0 are
  12.  *         not fully compatible with MUIRexx3.0)
  13.  *   v0.3: Added speed gauges
  14.  *   v0.4: Added chipset vs cpu slider. Layout modified.
  15.  *   v0.5: Added small window. Lots of internal modifications.
  16.  *   v0.6: Now uses rexxsupport.library (hi Zapek :)
  17.  *   v0.7: Fixed Enforcer-hits caused by a bad arg in MUIA_FixWidthTxt.
  18.  *         Modify "SOUND" gadget.
  19.  */
  20.  
  21. /***********************************************************************
  22.  * Constants
  23.  ***********************************************************************/
  24. PROGNAME = "UAEGUI.rexx"   /* This program */
  25. CLIPNAME = "UAEGUI.clip"   /* clip holding window type */
  26.  
  27. TRUE     = 1
  28. FALSE    = 0
  29.  
  30. MUIA_Application_Title     = 0x804281b8
  31. MUIA_Application_Version   = 0x8042b33f
  32. MUIA_Application_Copyright = 0x8042ef4d
  33. MUIA_Application_Author    = 0x80424842
  34. MUIA_Application_Base      = 0x8042e07a
  35. MUIA_Application_OpenConfigWindow = 0x804299ba
  36. MUIA_Application_AboutMUI  = 0x8042d21d
  37. MUIA_Background            = 0x8042545b
  38. MUIA_Image_FreeHoriz       = 0x8042da84
  39. MUIA_Image_FontMatchWidth  = 0x804239bf
  40. MUIA_Image_FontMatchHeight = 0x804239c0
  41. MUIA_Width                 = 0x8042b59c
  42. MUIA_Image_FontMatch       = 0x8042815d
  43. MUIA_Image_FontMatchHeight = 0x80429f26
  44. MUIA_FixWidthTxt           = 0x8042d044
  45. MUIA_Group_Columns         = 0x8042f416
  46. MUIA_Weight                = 0x80421d1f
  47. MUIA_Pressed               = 0x80423535
  48. MUIA_ShowMe                = 0x80429ba8
  49. MUIA_Slider_Horiz          = 0x8042fad1
  50. MUIA_Slider_Min            = 0x8042e404
  51. MUIA_Slider_Max            = 0x8042d78a
  52. MUIA_Slider_Level          = 0x8042ae3a
  53. MUIA_Frame                 = 0x8042ac64
  54. MUIA_Gauge_Current         = 0x8042f0dd
  55. MUIA_Gauge_Horiz           = 0x804232dd
  56. MUIA_Gauge_Max             = 0x8042bcdb
  57. MUIA_Gauge_Divide          = 0x8042d8df
  58. MUIA_Window_Open           = 0x80428aa0
  59. MUIA_Window_DepthGadget    = 0x80421923
  60. MUIA_Window_DragBar        = 0x8042045d
  61. MUIA_Window_SizeGadget     = 0x8042e33d
  62. MUIA_Window_PublicScreen   = 0x804278e4
  63. MUIA_Window_TopEdge        = 0x80427c66
  64. MUIA_Window_LeftEdge       = 0x80426c65
  65. MUIA_Window_Borderless     = 0x80429b79
  66. MUIA_ControlChar           = 0x8042120b
  67.  
  68. Cycle_Active      = 0x80421788
  69. Menuitem_Shortcut = 0x80422030
  70. Menuitem_Title    = 0x804218be
  71. Menuitem_Checked  = 0x8042562a
  72. Menuitem_Checkit  = 0x80425ace
  73. Selected          = 0x8042654b
  74. Disabled          = 0x80423661
  75.  
  76. MUII_BACKGROUND   = 128
  77. MUII_SHADOWFILL   = 133
  78. MUII_WindowBack   = 0
  79. MUIV_Frame_None   = 0
  80. MUIV_Frame_Text   = 3
  81. MUIV_Frame_Group  = 9
  82.  
  83. options results
  84.  
  85. BLK = "\033I[2:00000000:00000000:00000000]"
  86. RED = "\033I[2:ffffffff:00000000:00000000]"
  87. GRN = "\033I[2:00000000:ffffffff:6f000000]"
  88.  
  89. /***********************************************************************
  90.  * PARSE cmdline
  91.  ***********************************************************************/
  92. ADDRESS UAEGUI
  93. PARSE ARG comm opt .
  94. SELECT
  95.     WHEN comm = SMALL THEN DO  /* CALLed by button "small" */
  96.         CALL close_win
  97.         CALL small
  98.         EXIT(0)
  99.         END
  100.     WHEN comm = WBBIG THEN DO  /* CALLed by button "expand" */
  101.         CALL close_win
  102.         CALL wbbig
  103.         EXIT(0)
  104.         END
  105.     WHEN comm = SMDRG THEN DO  /* CALLed by menu "small/drag" */
  106.         CALL close_win
  107.         IF WTYPE="SMALLDRAG" THEN CALL small; ELSE CALL smalldrag
  108.         EXIT(0)
  109.         END
  110.     WHEN comm = FRHACK THEN DO /* CALLed by button "FRateHack" */
  111.         CALL FRHACK(opt)
  112.         EXIT(0)
  113.         END
  114.     WHEN comm = ABOUT THEN DO
  115.         CALL About
  116.         EXIT(0)
  117.         END
  118.     WHEN comm = '' THEN DO    /* first invocation */
  119.         CALL setup
  120.         CALL wbbig
  121.         WINDOW ID HOLD ATTRS MUIA_Window_Open FALSE
  122.         CALL main_loop
  123.         END
  124.     OTHERWISE DO
  125.         SAY "Unknown command:"comm
  126.         EXIT(0)
  127.     END
  128. END
  129.  
  130. ERROR: SYNTAX: quit:
  131. CALL cleanup
  132. EXIT 0
  133.  
  134. /***********************************************************************
  135.  * Init stderr and start muirexx
  136.  ***********************************************************************/
  137. setup: /* { */
  138.   /* Setup STDERR */
  139.   DO_STDERR = 0;
  140.   IF OPEN(STDERR,,
  141.           "CON:////UAEGUI.rexx -- Error messages window/WAIT/AUTO","w") THEN
  142.      DO_STDERR = 1
  143.   /* add rexxsupport */
  144.   RXSUPP = ADDLIB('rexxsupport.library',0,-30,0)
  145.   IF ~RXSUPP THEN ADDRESS COMMAND 'resident c:wait'
  146.   /* Run MUIREXX */
  147.   IF ~show('p','UAEGUI') THEN DO
  148.      ADDRESS COMMAND 'run >nil: muirexx port UAEGUI'
  149.      cpt=0
  150.      DO WHILE ~show('p','UAEGUI')
  151.         CALL Sleep(1)
  152.         cpt=cpt+1
  153.         IF cpt=60 THEN DO
  154.           IF DO_STDERR THEN DO
  155.             CALL writeln(STDERR,"Timeout WHILE waiting MUIRexx to start.")
  156.           END
  157.           CALL quit
  158.         END
  159.      END
  160.   END
  161.   WINDOW ID HOLD ATTRS MUIA_Window_DepthGadget FALSE,
  162.     MUIA_Window_DragBar FALSE MUIA_Window_SizeGadget FALSE
  163.     LABEL "\033b\033cUAEGUI: Stand by...\033n"
  164.   ENDWINDOW
  165.   /* wait for UAE to setup */
  166.   IF ~show('p','UAE') THEN DO
  167.      cpt=0
  168.      DO WHILE ~show('p','UAE')
  169.         CALL Sleep(2)
  170.         cpt=cpt+1
  171.         IF cpt=60 THEN DO
  172.           IF DO_STDERR THEN DO
  173.             CALL writeln(STDERR,"Timeout WHILE waiting UAE to start.")
  174.           END
  175.           ADDRESS UAEGUI quit
  176.           CALL quit
  177.         END
  178.      END
  179.   END
  180. RETURN /* } */
  181.  
  182. /***********************************************************************
  183.  * Clean stderr and feedback mechanism
  184.  ***********************************************************************/
  185. cleanup: /* { */
  186.   IF show('p','UAE') THEN DO
  187.     ADDRESS UAE feedback LED_POW PORT COMMAND CMD_ON  """"""
  188.     ADDRESS UAE feedback LED_DF0 PORT COMMAND CMD_ON  """"""
  189.     ADDRESS UAE feedback LED_DF1 PORT COMMAND CMD_ON  """"""
  190.     ADDRESS UAE feedback LED_DF2 PORT COMMAND CMD_ON  """"""
  191.     ADDRESS UAE feedback LED_DF3 PORT COMMAND CMD_ON  """"""
  192.     ADDRESS UAE feedback LED_POW PORT COMMAND CMD_OFF """"""
  193.     ADDRESS UAE feedback LED_DF0 PORT COMMAND CMD_OFF """"""
  194.     ADDRESS UAE feedback LED_DF1 PORT COMMAND CMD_OFF """"""
  195.     ADDRESS UAE feedback LED_DF2 PORT COMMAND CMD_OFF """"""
  196.     ADDRESS UAE feedback LED_DF3 PORT COMMAND CMD_OFF """"""
  197.   END
  198.   IF DO_STDERR THEN CALL close(STDERR);
  199. RETURN /* } */
  200.  
  201. /***********************************************************************
  202.  * Sleep the specified amount of time
  203.  ***********************************************************************/
  204. Sleep:
  205.   IF RXSUPP THEN CALL Delay(ARG(1)*50)
  206.   ELSE ADDRESS COMMAND 'WAIT 'ARG(1)
  207. RETURN
  208.  
  209. /***********************************************************************
  210.  * Display about window
  211.  ***********************************************************************/
  212. About: /* { */
  213.   WINDOW ID ABOUT ATTRS,
  214.     MUIA_Window_DepthGadget FALSE,
  215.     MUIA_Window_DragBar FALSE MUIA_Window_SizeGadget FALSE
  216.     GROUP HORIZ
  217.       BUTTON ICON "UAEWB"
  218.       ADDRESS UAE VERSION NUM;    NUM     = RESULT
  219.       ADDRESS UAE VERSION AUTHOR; AUTHOR  = RESULT
  220.       ADDRESS UAE VERSION PORT;   PORTAUT = RESULT
  221.       TEXT /*ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None*/,
  222.         LABEL "\033c\033bUAE v"||NUM%10000||"."||(NUM%100)//100||"."||,
  223.               NUM//100||"\033n - the UAE Amiga Emulator\n"||,
  224.               "(\033irecursive definition\033n)\n"||,
  225.               "by Bernd Schmidt & contributors\n\n"||,
  226.               PORTAUT"\n\n"||,
  227.               "This GUI uses MUIRexx\nby Russell Leighton"
  228.     ENDGROUP
  229.     GROUP HORIZ
  230.       SPACE HORIZ
  231.       BUTTON ID OK_BUTT COMMAND """WINDOW ID ABOUT CLOSE""" PORT UAEGUI,
  232.          ATTRS MUIA_ControlChar 13 LABEL "Ok"
  233.       SPACE HORIZ
  234.     ENDGROUP
  235.   ENDWINDOW
  236. RETURN /* } */
  237.  
  238. /***********************************************************************
  239.  * Toggle FrameRate hack on/off
  240.  ***********************************************************************/
  241. FRHACK: /* { */
  242.   /* note: { } in commentary are use by my GoldEd setup to fold blocks */
  243.   IF ARG(1)=ON THEN DO
  244.     ADDRESS UAE    EMUSPEED "-1"
  245.     ADDRESS UAEGUI SLIDER ID CVSC ATTRS Disabled TRUE
  246.   END; ELSE DO
  247.     ADDRESS UAEGUI
  248.     SLIDER ID CVSC ATTRS Disabled FALSE
  249.     SLIDER ID CVSC
  250.     ADDRESS UAE EMUSPEED RESULT
  251.   END
  252. EXIT 0 /* } */
  253.  
  254. /***********************************************************************
  255.  * Setup menu for current window
  256.  ***********************************************************************/
  257. menu:   /* { */
  258.  MENU LABEL "Project"
  259.   MENU LABEL "About..."
  260.    ITEM COMMAND '"'PROGNAME' ABOUT"',
  261.     ATTRS Menuitem_Shortcut 'A' LABEL "UAE..."
  262.    ITEM COMMAND '"method 'MUIA_Application_AboutMUI' 0"' PORT UAEGUI,
  263.     ATTRS Menuitem_Shortcut 'M' LABEL "MUI..."
  264.   ENDMENU
  265.   MENU LABEL "Settings"
  266.    ITEM ID WDRG COMMAND '"'PROGNAME' SMDRG"',
  267.     ATTRS Menuitem_Shortcut 'G' LABEL "DragBar: ON  "
  268.    ITEM COMMAND '"method 'MUIA_Application_OpenConfigWindow'"',
  269.     PORT UAEGUI LABEL "MUI..."
  270.   ENDMENU
  271.   ITEM ATTRS Menuitem_Title '-1'
  272.   ITEM COMMAND '"quit"' PORT UAEGUI ATTRS Menuitem_Shortcut 'X' LABEL "Quit GUI"
  273.  ENDMENU
  274.  MENU LABEL "Actions"
  275.   ITEM ID MSML COMMAND '"'PROGNAME' SMALL"',
  276.     ATTRS Menuitem_Shortcut 'S' LABEL "Switch to small GUI"
  277.   ITEM COMMAND '"QUIT"' PORT UAE,
  278.    ATTRS Menuitem_Shortcut 'Q' LABEL "Quit the emulator"
  279.   ITEM COMMAND '"RESET"' PORT UAE,
  280.    ATTRS Menuitem_Shortcut 'R' LABEL "Reset the emulator"
  281.   ITEM COMMAND '"DEBUG"' PORT UAE,
  282.    ATTRS Menuitem_Shortcut 'D' LABEL "Enter debug mode"
  283.  ENDMENU
  284. RETURN /* } */
  285.  
  286. /***********************************************************************
  287.  * Open big window on workbench
  288.  ***********************************************************************/
  289. wbbig:   /* { */
  290.   BLK = BLK||BLK||BLK||BLK
  291.   RED = RED||RED||RED||RED
  292.   GRN = GRN||GRN||GRN||GRN
  293.   WINDOW ID WBBIG COMMAND """QUIT""" PORT UAEGUI TITLE """UAE Gui"""
  294.     CALL menu
  295.  
  296.     /* main title */
  297.     ADDRESS UAE VERSION NUM;    NUM     = RESULT
  298.     ADDRESS UAE VERSION AUTHOR; AUTHOR  = RESULT
  299.     ADDRESS UAE VERSION PORT;   PORTAUT = RESULT
  300.     TEXT ATTRS MUIA_Frame MUIV_Frame_Group MUIA_Background MUII_SHADOWFILL,
  301.       LABEL "\0338\033c\033bUAE v"||NUM%10000||"."||(NUM%100)//100||,
  302.             "."||NUM//100||"\033n - Un*x Amiga Emulator\n"||AUTHOR||,
  303.             "\n\n"||PORTAUT
  304.  
  305.     /* Actions */
  306.     GROUP HORIZ FRAME LABEL "Actions"
  307.       BUTTON PRESS HELP """This button makes UAE switch to a small GUI""",
  308.         COMMAND """"PROGNAME" SMALL""" LABEL "Small"
  309.       BUTTON PRESS HELP """This button makes UAE and the GUI exit""",
  310.         COMMAND """QUIT""" PORT UAE LABEL "Quit"
  311.       BUTTON PRESS HELP """This button makes UAE DO a hard reset""",
  312.         COMMAND """RESET""" PORT UAE LABEL "Reset"
  313.       BUTTON PRESS HELP """This button makes UAE enter in debug mode""",
  314.         COMMAND """DEBUG""" PORT UAE LABEL "Debug"
  315.     ENDGROUP
  316.  
  317.     /* POWER & Speed */
  318.     GROUP HORIZ
  319.       /* Power */
  320.       GROUP HORIZ FRAME LABEL "Power"
  321.         LABEL "POW:"
  322.         BUTTON ID POW HELP """This image represents the power-led state""",
  323.           ATTRS MUIA_FixWidthTxt 'O' LABEL BLK
  324.       ENDGROUP
  325.       /* speed */
  326.       GROUP FRAME HORIZ LABEL "Speed"
  327.         LABEL "fps:"
  328.         TEXT ID FPS ATTRS 0x8042a3f1 4 LABEL "0.00"
  329.           GAUGE ID SPD,
  330.           HELP """You can read here the approximated speed of\n"||,
  331.                  "UAE relative to a real Amiga (50fps).""",
  332.           ATTRS MUIA_Gauge_Horiz TRUE MUIA_Gauge_Max 100 LABEL "%ld%%"
  333.       ENDGROUP
  334.     ENDGROUP
  335.  
  336.     /* Register */
  337.     GROUP REGISTER LABELS "Drives,Parameters"
  338.       /* disks */
  339.       GROUP ATTRS MUIA_Group_Columns 4
  340.         CALL SetDfx(0)
  341.         CALL SetDfx(1)
  342.         CALL SetDfx(2)
  343.         CALL SetDfx(3)
  344.       ENDGROUP
  345.       /* Parameters */
  346.       GROUP HORIZ FRAME ATTRS MUIA_Group_Columns 4
  347.         LABEL "Draw:"
  348.         ADDRESS UAE QUERY DISPLAY
  349.         CYCLE ID DRAW,
  350.           HELP """This cycle button enables or disables the display output""",
  351.           COMMAND """DISPLAY %s""" PORT UAE,
  352.           ATTRS Cycle_Active RESULT LABELS "OFF,ON"
  353.  
  354.         LABEL "Every:"
  355.         GROUP HORIZ
  356.           ADDRESS UAE QUERY FRAMERATE
  357.           POPSLIDER ID SLDR HELP """Use this slider gadget to select the ",
  358.             "frame rate""",
  359.             COMMAND """FRAMERATE %s""" PORT UAE ATTRS MUIA_Slider_Horiz TRUE,
  360.             MUIA_Slider_Min 1 MUIA_Slider_Max 20 MUIA_Weight 230,
  361.             MUIA_SLIDER_LEVEL RESULT
  362.           LABEL "frame(s)"
  363.         ENDGROUP
  364.  
  365.         LABEL "FRHack:"
  366.         CYCLE,
  367.           HELP """This activates the frame rate hack.\n"||,
  368.                  "Use this for very fast CPUs.""",
  369.           COMMAND """"PROGNAME" FRHACK %s""",
  370.           LABELS "OFF,ON"
  371.  
  372.         LABEL "CPU/CHIP:"
  373.         ADDRESS UAE QUERY EMUSPEED
  374.         SLIDER ID CVSC HELP """Use this slider gadget to select the\n"||,
  375.                               "chipset emulation speed (standard=4)""",
  376.           COMMAND """EMUSPEED %s""" PORT UAE ATTRS MUIA_Slider_Horiz TRUE,
  377.           MUIA_Slider_Min 1 MUIA_Slider_Max 20,
  378.           MUIA_SLIDER_LEVEL RESULT
  379.  
  380.         LABEL "Sound:"
  381.         ADDRESS UAE QUERY SOUND
  382.         IF RESULT = -1 THEN RESULT = Disabled TRUE
  383.         ELSE                RESULT = Cycle_Active RESULT
  384.         CYCLE id sound ATTRS RESULT,
  385.           HELP """This cycle button enables or disables the sound output""",
  386.           COMMAND """SOUND %s""" PORT UAE LABELS "NONE,OFF,ON,BEST"
  387.  
  388.         LABEL "Joystick:"
  389.         ADDRESS UAE QUERY FAKEJOYSTICK
  390.         CYCLE ID JOY,
  391.           HELP """This cycle button enables or disables the joystick emulation""",
  392.           COMMAND """FAKEJOYSTICK %s""" PORT UAE ATTRS Cycle_Active RESULT,
  393.           LABELS "OFF,ON"
  394.       ENDGROUP
  395.     ENDGROUP
  396.   ENDWINDOW
  397.   CALL SETCLIP(CLIPNAME,"BIG")
  398.   CALL reset_gadgets
  399. RETURN /* } */
  400.  
  401. /***********************************************************************
  402.  * open small draggable window on UAE screen
  403.  ***********************************************************************/
  404. smalldrag:   /* { */
  405.   BLK = BLK||BLK
  406.   RED = RED||RED
  407.   GRN = GRN||GRN
  408.  
  409.   WINDOW ID SMALL,
  410.     ATTRS MUIA_Window_DepthGadget TRUE,
  411.     MUIA_Window_DragBar TRUE,
  412.     MUIA_Window_SizeGadget TRUE,
  413.     MUIA_Window_LeftEdge 0,
  414.     MUIA_Window_TopEdge 0,
  415.     MUIA_Window_Borderless FALSE,
  416.     MUIA_Window_PublicScreen "UAE",
  417.     TITLE '"Please drag/resize the window..."'
  418.     CALL menu
  419.     CALL small_content
  420.   ENDWINDOW
  421.   CALL SETCLIP(CLIPNAME,"SMALLDRAG")
  422.   CALL reset_gadgets
  423.   ITEM ID WDRG LABEL "DragBar: OFF  "
  424.   ITEM ID MSML COMMAND '"'PROGNAME' WBBIG"',
  425.     ATTRS Menuitem_Shortcut 'S' LABEL "Switch to big GUI"
  426. RETURN /* } */
  427.  
  428. /***********************************************************************
  429.  * open small borderless window on UAE screen
  430.  ***********************************************************************/
  431. small:   /* { */
  432.   BLK = BLK||BLK
  433.   RED = RED||RED
  434.   GRN = GRN||GRN
  435.  
  436.   WINDOW ID SMALL,
  437.     ATTRS MUIA_Window_DepthGadget FALSE,
  438.     MUIA_Window_DragBar FALSE,
  439.     MUIA_Window_SizeGadget FALSE,
  440.     MUIA_Window_LeftEdge 0,
  441.     MUIA_Window_TopEdge 0,
  442.     MUIA_Window_Borderless TRUE,
  443.     MUIA_Window_PublicScreen "UAE"
  444.     CALL menu
  445.     CALL small_content
  446.   ENDWINDOW
  447.   CALL SETCLIP(CLIPNAME,"SMALL")
  448.   CALL reset_gadgets
  449.   ITEM ID MSML COMMAND '"'PROGNAME' WBBIG"',
  450.     ATTRS Menuitem_Shortcut 'S' LABEL "Switch to big GUI"
  451. RETURN /* } */
  452.  
  453. /***********************************************************************
  454.  * draw the content of the small window
  455.  ***********************************************************************/
  456. small_content: /* { */
  457.   GROUP HORIZ
  458.     BUTTON PRESS,
  459.       COMMAND """"PROGNAME" WBBIG""",
  460.       LABEL "Expand"
  461.     LABEL "Pwr:"
  462.     BUTTON ID POW ATTRS MUIA_FixWidthTxt 'O' LABEL BLK
  463.     LABEL "Drv:"
  464.     BUTTON ID DF0 ATTRS MUIA_FixWidthTxt 'O' LABEL BLK
  465.     BUTTON ID DF1 ATTRS MUIA_FixWidthTxt 'O' LABEL BLK
  466.     BUTTON ID DF2 ATTRS MUIA_FixWidthTxt 'O' LABEL BLK
  467.     BUTTON ID DF3 ATTRS MUIA_FixWidthTxt 'O' LABEL BLK
  468.     LABEL "Fps:"
  469.     TEXT ID FPS  ATTRS 0x8042a3f1 4 LABEL "0.00"
  470.     GAUGE ID SPD,
  471.       HELP """You can read here the approximated speed of\n"||,
  472.              "UAE relative to a real Amiga (50fps).""",
  473.       ATTRS MUIA_Gauge_Horiz TRUE MUIA_Gauge_Max 100 LABEL "%ld%%"
  474.   ENDGROUP
  475. RETURN /* } */
  476.  
  477. /***********************************************************************
  478.  * put gadgets in a sane state
  479.  ***********************************************************************/
  480. reset_gadgets: /* { */
  481.   IF GETCLIP(CLIPNAME)="BIG" THEN DO
  482.     ADDRESS UAE QUERY NAME_DF0;R0=RESULT
  483.     ADDRESS UAE QUERY NAME_DF1;R1=RESULT
  484.     ADDRESS UAE QUERY NAME_DF2;R2=RESULT
  485.     ADDRESS UAE QUERY NAME_DF3;R3=RESULT
  486.     popasl ID NDF0 CONTENT R0
  487.     popasl ID NDF1 CONTENT R1
  488.     popasl ID NDF2 CONTENT R2
  489.     popasl ID NDF3 CONTENT R3
  490.     ADDRESS UAE feedback NAME_DF0 PORT UAEGUI,
  491.      CMD """popasl ID NDF0 CONTENT %s"""
  492.     ADDRESS UAE feedback NAME_DF1 PORT UAEGUI,
  493.      CMD """popasl ID NDF1 CONTENT %s"""
  494.     ADDRESS UAE feedback NAME_DF2 PORT UAEGUI,
  495.      CMD """popasl ID NDF2 CONTENT %s"""
  496.     ADDRESS UAE feedback NAME_DF3 PORT UAEGUI,
  497.      CMD """popasl ID NDF3 CONTENT %s"""
  498.   END; ELSE DO
  499.     ADDRESS UAE feedback NAME_DF0 PORT UAEGUI CMD '""'
  500.     ADDRESS UAE feedback NAME_DF1 PORT UAEGUI CMD '""'
  501.     ADDRESS UAE feedback NAME_DF2 PORT UAEGUI CMD '""'
  502.     ADDRESS UAE feedback NAME_DF3 PORT UAEGUI CMD '""'
  503.   END
  504.   CALL reset_leds
  505.   ADDRESS UAE feedback LED_POW PORT UAEGUI,
  506.    CMD_ON  """button ID POW LABEL "RED"""",
  507.    CMD_OFF """button ID POW LABEL "BLK""""
  508.   ADDRESS UAE feedback LED_DF0 PORT UAEGUI,
  509.    CMD_ON  """button ID DF0 LABEL "GRN"""",
  510.    CMD_OFF """button ID DF0 LABEL "BLK""""
  511.   ADDRESS UAE feedback LED_DF1 PORT UAEGUI,
  512.    CMD_ON  """button ID DF1 LABEL "GRN"""",
  513.    CMD_OFF """button ID DF1 LABEL "BLK""""
  514.   ADDRESS UAE feedback LED_DF2 PORT UAEGUI,
  515.    CMD_ON  """button ID DF2 LABEL "GRN"""",
  516.    CMD_OFF """button ID DF2 LABEL "BLK""""
  517.   ADDRESS UAE feedback LED_DF3 PORT UAEGUI,
  518.    CMD_ON  """button ID DF3 LABEL "GRN"""",
  519.    CMD_OFF """button ID DF3 LABEL "BLK""""
  520.   ADDRESS UAE feedback ON_EXIT PORT UAEGUI,
  521.    CMD """quit"""
  522. RETURN /* } */
  523.  
  524. /***********************************************************************
  525.  * reset leds
  526.  ***********************************************************************/
  527. reset_leds: /* { */
  528.   COL.1 = RED; COL.0 = BLK;
  529.   ADDRESS UAE QUERY LED_POW; button ID POW label COL.RESULT
  530.   COL.1 = GRN; COL.0 = BLK;
  531.   ADDRESS UAE QUERY LED_DF0; button ID DF0 label COL.RESULT
  532.   ADDRESS UAE QUERY LED_DF1; button ID DF1 label COL.RESULT
  533.   ADDRESS UAE QUERY LED_DF2; button ID DF2 label COL.RESULT
  534.   ADDRESS UAE QUERY LED_DF3; button ID DF3 label COL.RESULT
  535. RETURN /* } */
  536.  
  537. /***********************************************************************
  538.  * close opened window
  539.  ***********************************************************************/
  540. close_win: /* { */
  541.     WTYPE = GETCLIP(CLIPNAME)
  542.     IF WTYPE = "BIG" THEN WINDOW ID WBBIG CLOSE
  543.                      ELSE WINDOW ID SMALL CLOSE
  544.     /* inhib gadgets: */
  545.     CALL SETCLIP(CLIPNAME)
  546.     ADDRESS UAE feedback LED_POW PORT COMMAND CMD_ON  '""' CMD_OFF '""'
  547.     ADDRESS UAE feedback LED_DF0 PORT COMMAND CMD_ON  '""' CMD_OFF '""'
  548.     ADDRESS UAE feedback LED_DF1 PORT COMMAND CMD_ON  '""' CMD_OFF '""'
  549.     ADDRESS UAE feedback LED_DF2 PORT COMMAND CMD_ON  '""' CMD_OFF '""'
  550.     ADDRESS UAE feedback LED_DF3 PORT COMMAND CMD_ON  '""' CMD_OFF '""'
  551. RETURN /* } */
  552.  
  553. /***********************************************************************
  554.  * evaluate UAE's speed
  555.  ***********************************************************************/
  556. main_loop: /* { */
  557.   ADDRESS UAEGUI
  558.   ADDRESS UAE QUERY FRAMENUM;FN = RESULT; TN = time('r');
  559.   /* in case UAEGUI exits */
  560.   SIGNAL ON SYNTAX
  561.   SIGNAL ON ERROR
  562.   ADDRESS UAEGUI GAUGE ID SPD ATTRS MUIA_Gauge_Horiz TRUE MUIA_Gauge_Max 100
  563.   ok = 1
  564.   DO WHILE ok
  565.     CALL Sleep(5)
  566.     ADDRESS UAE QUERY FRAMENUM;FN0=FN;FN=RESULT;TN = time('r');
  567.     IF TN~=0 THEN TN = (FN-FN0)/TN
  568.     ok = SHOW('p','UAEGUI')
  569.     IF ok & (GETCLIP(CLIPNAME)~="") THEN DO
  570.       TEXT  ID FPS LABEL trunc(100*TN)/100
  571.       GAUGE ID SPD ATTRS MUIA_Gauge_Current trunc(TN*2)
  572.     END
  573.   END
  574. RETURN /* } */
  575.  
  576. /***********************************************************************
  577.  * Build one DFx set of gadgets
  578.  ***********************************************************************/
  579. SetDFx: /* { */
  580.   PARSE ARG unit
  581.   LABEL LEFT DOUBLE "DF"||unit||":"
  582.   ADDRESS UAE QUERY LED_DF||unit;IF RESULT=1 THEN COL=GRN; else COL=BLK
  583.   BUTTON ID DF||unit,
  584.     HELP """This image represents the state of drive "||unit||"'s led""",
  585.     ATTRS MUIA_FixWidthTxt 'O' label COL
  586.   BUTTON PRESS,
  587.     HELP """Use this button to eject the diskfile in drive DF"||unit||":""",
  588.     COMMAND """EJECT "||unit||"""" PORT UAE ATTRS MUIA_Weight 100,
  589.     LABEL "Eject"
  590.   POPASL ID NDF||unit,
  591.     HELP """Select the name of diskfile for drive DF"||unit||":""",
  592.     COMMAND """INSERT "||unit||" '%s'""" PORT UAE ATTRS MUIA_Weight 300
  593. RETURN /* } */
  594.  
  595. /***********************************************************************/
  596.  
  597.