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.3 (29.01.98) � 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 */ 15 16TRUE = 1 17FALSE = 0 18MUIA_Application_Title = 0x804281b8 19MUIA_Application_Version = 0x8042b33f 20MUIA_Application_Copyright = 0x8042ef4d 21MUIA_Application_Author = 0x80424842 22MUIA_Application_Base = 0x8042e07a 23MUIA_Application_OpenConfigWindow = 0x804299ba 24MUIA_Application_AboutMUI = 0x8042d21d 25MUIA_Background = 0x8042545b 26MUII_BACKGROUND = 128 27MUII_SHADOWFILL = 133 28MUIA_Image_FreeHoriz = 0x8042da84 29MUIA_Image_FontMatchWidth = 0x804239bf 30MUIA_Image_FontMatchHeight = 0x804239c0 31MUIA_Width = 0x8042b59c 32MUIA_Image_FontMatch = 0x8042815d 33MUIA_Image_FontMatchHeight = 0x80429f26 34MUIA_FixWidthTxt = 0x8042d044 35MUIA_Weight = 0x80421d1f 36MUIA_Pressed = 0x80423535 37MUIA_ShowMe = 0x80429ba8 38MUIA_Slider_Horiz = 0x8042fad1 39MUIA_Slider_Min = 0x8042e404 40MUIA_Slider_Max = 0x8042d78a 41MUIA_Slider_Level = 0x8042ae3a 42MUIA_Frame = 0x8042ac64 43MUIA_Gauge_Current = 0x8042f0dd 44MUIA_Gauge_Horiz = 0x804232dd 45MUIA_Gauge_Max = 0x8042bcdb 46MUIA_Gauge_Divide = 0x8042d8df 47MUIV_Frame_Text = 3 48MUIV_Frame_Group = 9 49 50Cycle_Active = 0x80421788 51Menuitem_Shortcut = 0x80422030 52Menuitem_Title = 0x804218be 53Selected = 0x8042654b 54Disabled = 0x80423661 55 56options results 57 58ADDRESS COMMAND 59 60BLK = "\033I[2:00000000:00000000:00000000]" 61RED = "\033I[2:ffffffff:00000000:00000000]" 62GRN = "\033I[2:00000000:ffffffff:6f000000]" 63 64BLK = BLK||BLK||BLK||BLK 65RED = RED||RED||RED||RED 66GRN = GRN||GRN||GRN||GRN 67 68/* Setup STDERR */ 69DO_STDERR = 0; 70IF OPEN(STDERR,"CON:////UAEGUI.rexx -- Error messages window/WAIT/AUTO","w") then DO_STDERR = 1 71 72/* Run MUIREXX */ 73address command 'resident c:wait' 74if ~show('p','UAEGUI') then do 75 'run >nil: muirexx port UAEGUI' 76 cpt=0 77 do while ~show('p','UAEGUI') 78 'wait 1' 79 cpt=cpt+1 80 if cpt=60 then do 81 if DO_STDERR then do 82 call writeln(STDERR,"Timeout while waiting MUIRexx to start.") 83 end 84 call quit 85 END 86 end 87end 88 89/* wait for UAE to setup */ 90if ~show('p','UAE') then do 91/* address command "run <>con: uae" */ 92 cpt=0 93 do while ~show('p','UAE') 94 'wait 2' 95 cpt=cpt+1 96 if cpt=60 then do 97 if DO_STDERR then do 98 call writeln(STDERR,"Timeout while waiting UAE to start.") 99 end 100 address UAEGUI quit 101 call quit 102 end 103 end 104end 105 106address UAEGUI 107 108window ID MAIN COMMAND """QUIT""" PORT UAEGUI TITLE """UAE Gui""" 109 110 menu LABEL "Project" 111 item COMMAND '"method 'MUIA_Application_AboutMUI' 0"', 112 PORT UAEGUI LABEL "About MUI" 113 menu LABEL "Settings" 114 item COMMAND '"method 'MUIA_Application_OpenConfigWindow'"', 115 PORT UAEGUI LABEL "MUI..." 116 endmenu 117 item ATTRS Menuitem_Title '-1' 118 item COMMAND '"quit"' PORT UAEGUI ATTRS Menuitem_Shortcut 'Q' LABEL "Quit" 119 endmenu 120 121 address UAE VERSION NUM; NUM = RESULT 122 address UAE VERSION AUTHOR; AUTHOR = RESULT 123 address UAE VERSION PORT; PORTAUT = RESULT 124 125 text ATTRS MUIA_Frame MUIV_Frame_Group MUIA_Background MUII_SHADOWFILL LABEL, 126 "\0338\033c\033bUAE v"||NUM%10000||"."||(NUM%100)//100||"."||NUM//100||, 127 "\033n - Un*x Amiga Emulator\n"||AUTHOR||"\n\n"||PORTAUT 128 129 group HORIZ 130 group FRAME HORIZ LABEL "Actions" 131 button PRESS HELP """This button makes UAE and the GUI exit""", 132 COMMAND """QUIT""" PORT UAE LABEL "Quit" 133 button PRESS HELP """This button makes UAE do a hard reset""", 134 COMMAND """RESET""" PORT UAE LABEL "Reset" 135 button PRESS HELP """This button makes UAE enter in debug mode""", 136 COMMAND """Debug""" PORT UAE LABEL "Debug" 137 endgroup 138 group FRAME HORIZ LABEL "Speed" 139 LABEL "fps:" 140 text ID FPS ATTRS 0x8042a3f1 4 LABEL "0.00" 141 gauge ID SPD, 142 HELP """You can read here the approximated speed of\n"||, 143 "UAE relative to a real Amiga (50fps).""", 144 ATTRS MUIA_Gauge_Horiz TRUE MUIA_Gauge_Max 100 LABEL "%ld%%" 145 endgroup 146 endgroup 147 148 group FRAME LABEL "Parameters" 149 group HORIZ 150 label "Display:" 151 address UAE QUERY DISPLAY 152 cycle ID DRAW, 153 HELP """This cycle button enables or disables the display output""", 154 COMMAND """DISPLAY %s""" PORT UAE ATTRS Cycle_Active RESULT labels "OFF,ON" 155 label "Sound:" 156 address UAE QUERY SOUND 157 IF RESULT = -1 THEN 158 cycle id sound ATTRS Disabled TRUE COMMAND """SOUND %s""", 159 PORT UAE LABELS "OFF,ON,BEST" 160 ELSE IF RESULT = 0 THEN 161 cycle id sound ATTRS Cycle_Active 0, 162 HELP """This cycle button enables or disables the sound output""", 163 COMMAND """SOUND %s""" PORT UAE LABELS "OFF,ON,BEST" 164 ELSE cycle id sound, 165 HELP """This cycle button enables or disables the sound output""", 166 ATTRS Cycle_Active RESULT-1 COMMAND """SOUND %s""", 167 PORT UAE LABELS "OFF,ON,BEST" 168/* label "Joystick:" 169 address UAE QUERY FAKEJOYSTICK 170 cycle ID JOY, 171 HELP """This cycle button enables or disables the joystick emulation""", 172 COMMAND """FAKEJOYSTICK %s""" PORT UAE ATTRS Cycle_Active RESULT, 173 LABELS "OFF,ON" */ 174 endgroup 175 group HORIZ 176 label "POW:" 177 address UAE QUERY LED_POW;if RESULT = 1 then COL = RED; else COL = BLK 178 button ID POW HELP """This image represents the power-led state""", 179 ATTRS MUIA_FixWidthTxt 1 label COL 180 label "Frame Rate:" 181 address UAE QUERY FRAMERATE 182 slider ID SLDR HELP """Use this slider gadget to select the frame rate""", 183 COMMAND """FRAMERATE %s""" PORT UAE ATTRS MUIA_Slider_Horiz TRUE, 184 MUIA_Slider_Min 1 MUIA_Slider_Max 20 MUIA_Weight 230, 185 MUIA_SLIDER_LEVEL RESULT 186 endgroup 187 endgroup 188 189 group FRAME LABEL "Disk files" 190 call SetDfx(0) 191 call SetDfx(1) 192 call SetDfx(2) 193 call SetDfx(3) 194 endgroup 195endwindow 196 197address UAE QUERY NAME_DF0;R0=RESULT 198address UAE QUERY NAME_DF1;R1=RESULT 199address UAE QUERY NAME_DF2;R2=RESULT 200address UAE QUERY NAME_DF3;R3=RESULT 201popasl ID NDF0 CONTENT R0 202popasl ID NDF1 CONTENT R1 203popasl ID NDF2 CONTENT R2 204popasl ID NDF3 CONTENT R3 205 206address UAE feedback LED_POW PORT UAEGUI, 207 CMD_ON """button ID POW LABEL "RED"""", 208 CMD_OFF """button ID POW LABEL "BLK"""" 209 210address UAE feedback LED_DF0 PORT UAEGUI, 211 CMD_ON """button ID DF0 LABEL "GRN"""", 212 CMD_OFF """button ID DF0 LABEL "BLK"""" 213 214address UAE feedback LED_DF1 PORT UAEGUI, 215 CMD_ON """button ID DF1 LABEL "GRN"""", 216 CMD_OFF """button ID DF1 LABEL "BLK"""" 217 218address UAE feedback LED_DF2 PORT UAEGUI, 219 CMD_ON """button ID DF2 LABEL "GRN"""", 220 CMD_OFF """button ID DF2 LABEL "BLK"""" 221 222address UAE feedback LED_DF3 PORT UAEGUI, 223 CMD_ON """button ID DF3 LABEL "GRN"""", 224 CMD_OFF """button ID DF3 LABEL "BLK"""" 225 226address UAE feedback NAME_DF0 PORT UAEGUI, 227 CMD """popasl ID NDF0 CONTENT %s""" 228 229address UAE feedback NAME_DF1 PORT UAEGUI, 230 CMD """popasl ID NDF1 CONTENT %s""" 231 232address UAE feedback NAME_DF2 PORT UAEGUI, 233 CMD """popasl ID NDF2 CONTENT %s""" 234 235address UAE feedback NAME_DF3 PORT UAEGUI, 236 CMD """popasl ID NDF3 CONTENT %s""" 237 238address UAE feedback ON_EXIT PORT UAEGUI, 239 CMD """quit""" 240 241address UAE QUERY LED_POW;if RESULT = 1 then COL = RED; else COL = BLK 242button ID POW label COL 243 244address UAE QUERY FRAMENUM;FN = RESULT; TN = time('r'); 245 246/* in case UAEGUI exits */ 247signal on syntax 248signal on error 249ok = 1 250gauge ID SPD ATTRS MUIA_Gauge_Horiz TRUE MUIA_Gauge_Max 100 251do while ok 252 address command wait 5 253 address UAE QUERY FRAMENUM;FN0=FN;FN=RESULT;TN = time('r'); 254 if TN~=0 then TN = (FN-FN0)/TN 255 if show('p','UAEGUI') then do 256 text id FPS label trunc(100*TN)/100 257 gauge ID SPD ATTRS MUIA_Gauge_Current trunc(TN*2) 258 end; else ok = 0 259end 260 261error: 262syntax: 263 264quit: 265 266if show('p','UAE') then do 267 address UAE feedback LED_POW PORT COMMAND CMD_ON """""" 268 address UAE feedback LED_DF0 PORT COMMAND CMD_ON """""" 269 address UAE feedback LED_DF1 PORT COMMAND CMD_ON """""" 270 address UAE feedback LED_DF2 PORT COMMAND CMD_ON """""" 271 address UAE feedback LED_DF3 PORT COMMAND CMD_ON """""" 272 address UAE feedback LED_POW PORT COMMAND CMD_OFF """""" 273 address UAE feedback LED_DF0 PORT COMMAND CMD_OFF """""" 274 address UAE feedback LED_DF1 PORT COMMAND CMD_OFF """""" 275 address UAE feedback LED_DF2 PORT COMMAND CMD_OFF """""" 276 address UAE feedback LED_DF3 PORT COMMAND CMD_OFF """""" 277end 278 279if DO_STDERR then call close(STDERR); 280 281exit 0 282 283SetDFx: 284 PARSE ARG unit 285 group ID GDF||unit HORIZ 286 label LEFT DOUBLE "DF"||unit||":" 287 address UAE QUERY LED_DF||unit;if RESULT=1 then COL=GRN; else COL=BLK 288 button ID DF||unit, 289 HELP """This image represents the state of drive "||unit||"'s led""", 290 ATTRS MUIA_FixWidthTxt 1 label COL 291 button PRESS, 292 HELP """Use this button to eject the diskfile in drive DF"||unit||":""", 293 COMMAND """EJECT "||unit||"""" PORT UAE ATTRS MUIA_Weight 100, 294 LABEL "Eject" 295 popasl ID NDF||unit, 296 HELP """Select the name of diskfile for drive DF"||unit||":""", 297 COMMAND """INSERT "||unit||" '%s'""" PORT UAE ATTRS MUIA_Weight 300 298 endgroup ID GDF||unit 299return 300