/***************************************** * Main program * *****************************************/ int main() { int quit = 0, i; struct IntuiMessage *msg; struct Gadget *button; struct StringInfo *strinfo; char buf[257]; UWORD koodi, msgID; ULONG classi, number; APTR address; ULONG CycleTags[3]; CycleTags[0] = GTCY_Active; CycleTags[1] = (ULONG) & number; CycleTags[2] = TAG_DONE; /* Read UAE configuration */ i = GetUaeConfig(&config); i = setup_window(); if (i == 0) { quit_program(1, "Cannot setup a window!"); return 1; } while (quit == 0) { WaitPort(window->UserPort); while (msg = (struct IntuiMessage *) GT_GetIMsg(window->UserPort)) { classi = msg->Class; koodi = msg->Code; address = msg->IAddress; if (classi == IDCMP_GADGETUP) { msgID = ((struct Gadget *) msg->IAddress)->GadgetID; button = (struct Gadget *) msg->IAddress; if (button->SpecialInfo) { strinfo = (struct StringInfo *) button->SpecialInfo; } } else msgID = msg->Code; GT_ReplyIMsg((struct IntuiMessage *) msg); switch (classi) { case IDCMP_CLOSEWINDOW: quit = 1; break; case IDCMP_GADGETUP: switch (msgID) { case GAD_EXITEMU: ExitEmu(); break; case GAD_EJECT_DF0: EjectDisk(0); Delay(30); GetUaeConfig(&config); print_drive_status(); break; case GAD_EJECT_DF1: EjectDisk(1); Delay(30); GetUaeConfig(&config); print_drive_status(); break; case GAD_EJECT_DF2: EjectDisk(2); Delay(30); GetUaeConfig(&config); print_drive_status(); break; case GAD_EJECT_DF3: EjectDisk(3); Delay(30); GetUaeConfig(&config); print_drive_status(); break; case GAD_SOUND: if (config.do_output_sound) DisableSound(); else EnableSound(); Delay(30); GetUaeConfig(&config); break; case GAD_JOYSTICK: if (config.do_fake_joystick) DisableJoystick(); else EnableJoystick(); Delay(30); GetUaeConfig(&config); break; case GAD_FRAMERATE: SetFrameRate(strinfo->LongInt); Delay(30); GetUaeConfig(&config); break; case GAD_INSERT_DF0: strcpy(buf, config.df0_name); if (get_string(buf, 255)) { InsertDisk((UBYTE *) buf, 0); Delay(30); GetUaeConfig(&config); print_drive_status(); } break; case GAD_INSERT_DF1: strcpy(buf, config.df1_name); if (get_string(buf, 255)) { InsertDisk((UBYTE *) buf, 1); Delay(30); GetUaeConfig(&config); print_drive_status(); } break; case GAD_INSERT_DF2: strcpy(buf, config.df2_name); if (get_string(buf, 255)) { InsertDisk((UBYTE *) buf, 2); Delay(30); GetUaeConfig(&config); print_drive_status(); } break; case GAD_INSERT_DF3: strcpy(buf, config.df3_name); if (get_string(buf, 255)) { InsertDisk((UBYTE *) buf, 3); Delay(30); GetUaeConfig(&config); print_drive_status(); } break; case GAD_LANGUAGE: number = config.keyboard; number++; if (number == 5) number = 0; ChangeLanguage(number); Delay(30); GetUaeConfig(&config); break; case GAD_RESET: ColdReboot(); break; case GAD_DEBUG: DebugFunc(); break; default: break; } break; default: break; } } } quit_program(0, ""); return (0); }
/************************************ * Main program * ************************************/ int32_t main() { int32_t quit = 0,i, correct,number; char buf[257]; char *langs[]={ "US\0","DE\0","SE\0","FR\0","IT\0", }; /* Read UAE configuration */ i = GetUaeConfig( &config ); while( quit == 0 ) { printf(" UAE-Control v0.1\n\n"); printf(" 1) Reset\n"); printf(" 2) Debug\n"); printf(" 3) Exit Emulator\n"); printf(" 4) Change framerate (Currently : %ld)\n", config.framerate); printf(" 5) Toggle sound (Currently : %s)\n", config.do_output_sound ? "ON" : "OFF"); printf(" 6) Toggle fake joystick (Currently : %s)\n", config.do_fake_joystick ? "ON" : "OFF"); printf(" 7) Change language (Currently : %s)\n", langs[config.keyboard]); printf(" 8) Eject a disk\n"); printf(" 9) Insert a disk\n"); printf("10) Exit UAE-Control\n\n"); correct = 0; while( correct == 0 ) { printf(" Command : "); gets( buf ); i = atoi( buf ); if ((i > 0) && (i < 11)) correct = 1; } switch( i ) { case 1: HardReset(); break; case 2: DebugFunc(); break; case 3: ExitEmu(); break; case 4: printf(" Enter new framerate (1-20) :"); gets( buf ); number = atoi( buf ); if (SetFrameRate (number)) GetUaeConfig(&config); else printf(" Illegal value, not changed.\n"); break; case 5: if (config.do_output_sound) DisableSound(); else EnableSound(); GetUaeConfig( &config ); break; case 6: if (config.do_fake_joystick) DisableJoystick(); else EnableJoystick(); GetUaeConfig( &config ); break; case 7: printf(" 1 = US, 2 = DE, 3 = SE, 4 = FR, 5 = IT\n"); printf(" What will it be : "); gets( buf ); number = atoi( buf ); if ((number >= 1) && (number <= 5)) { ChangeLanguage( number-1 ); GetUaeConfig( &config ); } else { printf(" Illegal value, not changed.\n"); } break; case 8: print_drive_status(); printf(" Eject which drive (1-4): "); gets( buf ); number = atoi( buf ); if ((number >= 1) && (number <=4 )) { EjectDisk( number-1 ); GetUaeConfig( &config ); } else { printf(" Illegal drive, not changed.\n"); } break; case 9: print_drive_status(); printf(" Enter disk to drive (1-4): "); gets( buf ); number = atoi( buf ); if ((number >= 1) && (number <= 4)) { printf("Name of diskfile :"); gets( buf ); InsertDisk( (UBYTE *)&buf, number - 1 ); GetUaeConfig( &config ); } else { printf(" Illegal drive, not changed.\n"); } break; case 10: quit = 1; break; } } quit_program(0, ""); return(0); }
/***************************************** * Opens up the window & sets the gadgets * *****************************************/ int setup_window(void) { struct Gadget *g; struct NewGadget ng; UWORD offy; ULONG drawtags[20]; static const char *keyb_langs[] = { "US", "DE", "SE", "FR", "IT", NULL }; scr = LockPubScreen(NULL); if (!scr) return (0); VisInfo = GetVisualInfo(scr, TAG_DONE); if (!VisInfo) return (0); offy = scr->WBorTop + scr->RastPort.TxHeight + 1; /* Create buttons */ g = CreateContext(&glist); if (!g) return (0); ng.ng_TextAttr = &topaz8; ng.ng_VisualInfo = VisInfo; ng.ng_Flags = PLACETEXT_IN; ng.ng_LeftEdge = 284; ng.ng_TopEdge = offy + 86; ng.ng_Width = 96; ng.ng_Height = 15; ng.ng_GadgetText = (UBYTE *) "Hard Reset"; ng.ng_GadgetID = GAD_RESET; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); ng.ng_TopEdge = offy + 105; ng.ng_GadgetText = (UBYTE *) "Debug"; ng.ng_GadgetID = GAD_DEBUG; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); ng.ng_TopEdge = offy + 135; ng.ng_GadgetText = (UBYTE *) "Quit UAE"; ng.ng_GadgetID = GAD_EXITEMU; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); /* Eject buttons */ ng.ng_LeftEdge = 262; ng.ng_TopEdge = offy + 11; ng.ng_Width = 70; ng.ng_GadgetID = GAD_EJECT_DF0; ng.ng_GadgetText = (UBYTE *) "Eject"; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); ng.ng_TopEdge = offy + 28; ng.ng_GadgetID = GAD_EJECT_DF1; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); ng.ng_TopEdge = offy + 45; ng.ng_GadgetID = GAD_EJECT_DF2; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); ng.ng_TopEdge = offy + 62; ng.ng_GadgetID = GAD_EJECT_DF3; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); /* Insert buttons */ ng.ng_LeftEdge = 332; ng.ng_TopEdge = offy + 11; ng.ng_GadgetID = GAD_INSERT_DF0; ng.ng_GadgetText = (UBYTE *) "Insert"; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); ng.ng_TopEdge = offy + 28; ng.ng_GadgetID = GAD_INSERT_DF1; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); ng.ng_TopEdge = offy + 45; ng.ng_GadgetID = GAD_INSERT_DF2; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); ng.ng_TopEdge = offy + 62; ng.ng_GadgetID = GAD_INSERT_DF3; g = CreateGadget(BUTTON_KIND, g, &ng, TAG_DONE); /* Sound & Joystick buttons */ ng.ng_LeftEdge = 133; ng.ng_TopEdge = 97; ng.ng_GadgetID = GAD_SOUND; ng.ng_GadgetText = (UBYTE *) "Sound:"; ng.ng_Flags = PLACETEXT_LEFT; g = CreateGadget(CHECKBOX_KIND, g, &ng, GTCB_Checked, config.do_output_sound ? 1 : 0, TAG_DONE); ng.ng_TopEdge = 114; ng.ng_GadgetID = GAD_JOYSTICK; ng.ng_GadgetText = (UBYTE *) "Fake Joystick:"; g = CreateGadget(CHECKBOX_KIND, g, &ng, GTCB_Checked, config.do_fake_joystick ? 1 : 0, TAG_DONE); ng.ng_TopEdge = 129; ng.ng_GadgetID = GAD_LANGUAGE; ng.ng_GadgetText = (UBYTE *) "Language:"; g = CreateGadget(CYCLE_KIND, g, &ng, GTCY_Labels, (ULONG) keyb_langs, GTCY_Active, config.keyboard, TAG_DONE); ng.ng_TopEdge = 146; ng.ng_GadgetID = GAD_FRAMERATE; ng.ng_GadgetText = (UBYTE *) "Framerate:"; g = CreateGadget(INTEGER_KIND, g, &ng, GTIN_Number, config.framerate, TAG_DONE); newwindow.Title = "UAE-Control"; newwindow.Width = 419; newwindow.Height = 171; newwindow.LeftEdge = 20; newwindow.TopEdge = 20; newwindow.FirstGadget = glist; newwindow.Screen = scr; /* Store screen ptr */ window = OpenWindow(&newwindow); if (!window) return (0); /* Draw texts etc... */ SetAPen(window->RPort, 1); SetDrMd(window->RPort, JAM2); Move(window->RPort, 19, offy + 11 + 10); Text(window->RPort, (UBYTE *) "DF0:", 4); Move(window->RPort, 19, offy + 28 + 10); Text(window->RPort, (UBYTE *) "DF1:", 4); Move(window->RPort, 19, offy + 45 + 10); Text(window->RPort, (UBYTE *) "DF2:", 4); Move(window->RPort, 19, offy + 62 + 10); Text(window->RPort, (UBYTE *) "DF3:", 4); drawtags[0] = GT_VisualInfo; drawtags[1] = (ULONG) VisInfo; drawtags[2] = GTBB_Recessed; drawtags[3] = 1; drawtags[4] = TAG_DONE; DrawBevelBoxA(window->RPort, 14, offy + 10, 390, 17, (struct TagItem *) &drawtags); DrawBevelBoxA(window->RPort, 14, offy + 27, 390, 17, (struct TagItem *) &drawtags); DrawBevelBoxA(window->RPort, 14, offy + 44, 390, 17, (struct TagItem *) &drawtags); DrawBevelBoxA(window->RPort, 14, offy + 61, 390, 17, (struct TagItem *) &drawtags); print_drive_status(); return (1); }