예제 #1
0
/*****************************************
* 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);
}
예제 #2
0
파일: uaectrl.c 프로젝트: Yamakuzure/PUAE
/************************************
 * 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);
}
예제 #3
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);
}