--- previous/src/gui-sdl/dlgSystem.c 2018/04/24 19:26:14 1.1.1.2 +++ previous/src/gui-sdl/dlgSystem.c 2018/04/24 19:30:48 1.1.1.4 @@ -1,287 +1,216 @@ /* - Hatari - dlgSystem.c + Previous - dlgSystem.c This file is distributed under the GNU Public License, version 2 or at your option any later version. Read the file gpl.txt for details. - This file contains 2 system panels : - - 1 for the old uae CPU - - 1 for the new WinUae cpu - - The selection is made during compilation with the ENABLE_WINUAE_CPU define - */ -const char DlgSystem_fileid[] = "Hatari dlgSystem.c : " __DATE__ " " __TIME__; + +const char DlgSystem_fileid[] = "Previous dlgSystem.c : " __DATE__ " " __TIME__; #include "main.h" #include "configuration.h" #include "dialog.h" #include "sdlgui.h" -/* The old Uae cpu "System" dialog: */ -#ifndef ENABLE_WINUAE_CPU -#define DLGSYS_68000 4 -#define DLGSYS_68010 5 -#define DLGSYS_68020 6 -#define DLGSYS_68030 7 -#define DLGSYS_68040 8 -#define DLGSYS_ST 11 -#define DLGSYS_STE 12 -#define DLGSYS_TT 13 -#define DLGSYS_FALCON 14 -#define DLGSYS_8MHZ 17 -#define DLGSYS_16MHZ 18 -#define DLGSYS_32MHZ 19 -#define DLGSYS_DSPOFF 21 -#define DLGSYS_DSPDUMMY 22 -#define DLGSYS_DSPON 23 -#define DLGSYS_PREFETCH 24 -#define DLGSYS_BLITTER 25 -#define DLGSYS_RTC 26 -#define DLGSYS_TIMERD 27 +#define DLGSYS_CUBE030 4 +#define DLGSYS_CUBE 5 +#define DLGSYS_CUBETURBO 6 +#define DLGSYS_SLAB 7 +#define DLGSYS_SLABTURBO 8 +#define DLGSYS_SLABCOLOR 9 + +#define DLGSYS_CUSTOMIZE 10 +#define DLGSYS_RESET 11 + +#define DLGSYS_EXIT 32 + +/* Variable strings */ +char cpu_type[16] = "68030"; +char cpu_clock[16] = "25 MHz"; +char fpu_type[16] = "68882"; +char dsp_type[16] = "56001"; +char dsp_memory[16] = "24 kB"; +char main_memory[16] = "8 MB"; +char scsi_controller[16] = "NCR53C90"; +char rtc_chip[16] = "MC68HC68T1"; +char nbic_present[16] = "none"; + +/* Additional functions */ +void print_system_overview(void); +void update_system_selection(void); +void get_default_values(void); + static SGOBJ systemdlg[] = { - { SGBOX, 0, 0, 0,0, 36,24, NULL }, - { SGTEXT, 0, 0, 11,1, 14,1, "System options" }, - - { SGBOX, 0, 0, 2,3, 16,9, NULL }, - { SGTEXT, 0, 0, 3,4, 8,1, "CPU type:" }, - { SGRADIOBUT, 0, 0, 4,6, 7,1, "68000" }, - { SGRADIOBUT, 0, 0, 4,7, 7,1, "68010" }, - { SGRADIOBUT, 0, 0, 4,8, 7,1, "68020" }, - { SGRADIOBUT, 0, 0, 4,9, 13,1, "68EC030+FPU" }, - { SGRADIOBUT, 0, 0, 4,10, 7,1, "68040" }, - - { SGBOX, 0, 0, 19,3, 15,9, NULL }, - { SGTEXT, 0, 0, 20,4, 13,1, "Machine type:" }, - { SGRADIOBUT, 0, 0, 23,6, 8,1, "ST" }, - { SGRADIOBUT, 0, 0, 23,7, 8,1, "STE" }, - { SGRADIOBUT, 0, 0, 23,8, 8,1, "TT *" }, - { SGRADIOBUT, 0, 0, 23,9, 8,1, "Falcon *" }, - { SGTEXT, 0, 0, 21,11, 12,1, "* incomplete" }, - - { SGTEXT, 0, 0, 2,13, 15,1, "CPU clock (MHz):" }, - { SGRADIOBUT, 0, 0, 19,13, 3,1, "8" }, - { SGRADIOBUT, 0, 0, 24,13, 4,1, "16" }, - { SGRADIOBUT, 0, 0, 30,13, 4,1, "32" }, - - { SGTEXT, 0, 0, 2,15, 11,1, "Falcon DSP:" }, - { SGRADIOBUT, 0, 0, 14,15, 5,1, "off" }, - { SGRADIOBUT, 0, 0, 21,15, 7,1, "dummy" }, - { SGRADIOBUT, 0, 0, 30,15, 4,1, "on" }, - - { SGCHECKBOX, 0, 0, 2,17, 32,1, "Slower but more compatible CPU" }, - { SGCHECKBOX, 0, 0, 2,18, 20,1, "Blitter emulation" }, - { SGCHECKBOX, 0, 0, 2,19, 27,1, "Real time clock emulation" }, - { SGCHECKBOX, 0, 0, 2,20, 15,1, "Patch Timer-D" }, + { SGBOX, 0, 0, 0,0, 58,27, NULL }, + { SGTEXT, 0, 0, 22,1, 14,1, "System options" }, + + { SGBOX, 0, 0, 2,3, 25,17, NULL }, + { SGTEXT, 0, 0, 3,4, 14,1, "Machine type" }, + { SGRADIOBUT, 0, 0, 5,6, 15,1, "NeXT Computer" }, + { SGRADIOBUT, 0, 0, 5,8, 10,1, "NeXTcube" }, + { SGCHECKBOX, 0, 0, 7,9, 7,1, "Turbo" }, + { SGRADIOBUT, 0, 0, 5,11, 13,1, "NeXTstation" }, + { SGCHECKBOX, 0, 0, 7,12, 7,1, "Turbo" }, + { SGCHECKBOX, 0, 0, 7,13, 7,1, "Color" }, + + { SGBUTTON, SG_DEFAULT, 0, 5,16, 19,1, "Customize" }, + { SGBUTTON, SG_DEFAULT, 0, 5,18, 19,1, "System defaults" }, + + { SGTEXT, 0, 0, 30,4, 13,1, "System overview:" }, + { SGTEXT, 0, 0, 30,6, 13,1, "CPU clock:" }, + { SGTEXT, 0, 0, 44,6, 13,1, cpu_clock }, + { SGTEXT, 0, 0, 30,7, 13,1, "CPU type:" }, + { SGTEXT, 0, 0, 44,7, 13,1, cpu_type }, + { SGTEXT, 0, 0, 30,8, 13,1, "FPU type:" }, + { SGTEXT, 0, 0, 44,8, 13,1, fpu_type }, + { SGTEXT, 0, 0, 30,9, 13,1, "DSP type:" }, + { SGTEXT, 0, 0, 44,9, 13,1, dsp_type }, + { SGTEXT, 0, 0, 30,10, 13,1, "DSP memory:" }, + { SGTEXT, 0, 0, 44,10, 13,1, dsp_memory }, + { SGTEXT, 0, 0, 30,11, 13,1, "Main memory:" }, + { SGTEXT, 0, 0, 44,11, 13,1, main_memory }, + { SGTEXT, 0, 0, 30,12, 13,1, "SCSI chip:" }, + { SGTEXT, 0, 0, 44,12, 13,1, scsi_controller }, + { SGTEXT, 0, 0, 30,13, 13,1, "RTC chip:" }, + { SGTEXT, 0, 0, 44,13, 13,1, rtc_chip }, + { SGTEXT, 0, 0, 30,14, 13,1, "NBIC:" }, + { SGTEXT, 0, 0, 44,14, 13,1, nbic_present }, + + { SGTEXT, 0, 0, 4,21, 13,1, "Changing machine type resets all advanced options." }, + + { SGBUTTON, SG_DEFAULT, 0, 18,24, 21,1, "Back to main menu" }, - { SGBUTTON, SG_DEFAULT, 0, 8,22, 20,1, "Back to main menu" }, - { -1, 0, 0, 0,0, 0,0, NULL } + { -1, 0, 0, 0,0, 0,0, NULL } }; -/*-----------------------------------------------------------------------*/ -/** - * Show and process the "System" dialog. - */ -void Dialog_SystemDlg(void) -{ - int i; - MACHINETYPE mti; - - SDLGui_CenterDlg(systemdlg); - - /* Set up dialog from actual values: */ - - for (i = DLGSYS_68000; i <= DLGSYS_68040; i++) - { - systemdlg[i].state &= ~SG_SELECTED; - } - systemdlg[DLGSYS_68000+ConfigureParams.System.nCpuLevel].state |= SG_SELECTED; - - for (i = DLGSYS_ST; i <= DLGSYS_FALCON; i++) - { - systemdlg[i].state &= ~SG_SELECTED; - } - systemdlg[DLGSYS_ST + ConfigureParams.System.nMachineType].state |= SG_SELECTED; - - /* CPU frequency: */ - for (i = DLGSYS_8MHZ; i <= DLGSYS_16MHZ; i++) - { - systemdlg[i].state &= ~SG_SELECTED; - } - if (ConfigureParams.System.nCpuFreq == 32) - systemdlg[DLGSYS_32MHZ].state |= SG_SELECTED; - else if (ConfigureParams.System.nCpuFreq == 16) - systemdlg[DLGSYS_16MHZ].state |= SG_SELECTED; - else - systemdlg[DLGSYS_8MHZ].state |= SG_SELECTED; - - /* DSP mode: */ - for (i = DLGSYS_DSPOFF; i <= DLGSYS_DSPON; i++) - { - systemdlg[i].state &= ~SG_SELECTED; - } - if (ConfigureParams.System.nDSPType == DSP_TYPE_NONE) - systemdlg[DLGSYS_DSPOFF].state |= SG_SELECTED; - else if (ConfigureParams.System.nDSPType == DSP_TYPE_DUMMY) - systemdlg[DLGSYS_DSPDUMMY].state |= SG_SELECTED; - else - systemdlg[DLGSYS_DSPON].state |= SG_SELECTED; - - - if (ConfigureParams.System.bCompatibleCpu) - systemdlg[DLGSYS_PREFETCH].state |= SG_SELECTED; - else - systemdlg[DLGSYS_PREFETCH].state &= ~SG_SELECTED; - - if (ConfigureParams.System.bBlitter) - systemdlg[DLGSYS_BLITTER].state |= SG_SELECTED; - else - systemdlg[DLGSYS_BLITTER].state &= ~SG_SELECTED; - - if (ConfigureParams.System.bRealTimeClock) - systemdlg[DLGSYS_RTC].state |= SG_SELECTED; - else - systemdlg[DLGSYS_RTC].state &= ~SG_SELECTED; - - if (ConfigureParams.System.bPatchTimerD) - systemdlg[DLGSYS_TIMERD].state |= SG_SELECTED; - else - systemdlg[DLGSYS_TIMERD].state &= ~SG_SELECTED; - - /* Show the dialog: */ - SDLGui_DoDialog(systemdlg, NULL); - - /* Read values from dialog: */ +/* Function to print system overview */ - for (i = DLGSYS_68000; i <= DLGSYS_68040; i++) - { - if (systemdlg[i].state&SG_SELECTED) - { - ConfigureParams.System.nCpuLevel = i-DLGSYS_68000; - break; - } - } - - for (mti = MACHINE_ST; mti <= MACHINE_FALCON; mti++) - { - if (systemdlg[mti + DLGSYS_ST].state&SG_SELECTED) - { - ConfigureParams.System.nMachineType = mti; - break; - } - } - - if (systemdlg[DLGSYS_32MHZ].state & SG_SELECTED) - ConfigureParams.System.nCpuFreq = 32; - else if (systemdlg[DLGSYS_16MHZ].state & SG_SELECTED) - ConfigureParams.System.nCpuFreq = 16; - else - ConfigureParams.System.nCpuFreq = 8; - - if (systemdlg[DLGSYS_DSPOFF].state & SG_SELECTED) - ConfigureParams.System.nDSPType = DSP_TYPE_NONE; - else if (systemdlg[DLGSYS_DSPDUMMY].state & SG_SELECTED) - ConfigureParams.System.nDSPType = DSP_TYPE_DUMMY; - else - ConfigureParams.System.nDSPType = DSP_TYPE_EMU; - - ConfigureParams.System.bCompatibleCpu = (systemdlg[DLGSYS_PREFETCH].state & SG_SELECTED); - ConfigureParams.System.bBlitter = (systemdlg[DLGSYS_BLITTER].state & SG_SELECTED); - ConfigureParams.System.bRealTimeClock = (systemdlg[DLGSYS_RTC].state & SG_SELECTED); - ConfigureParams.System.bPatchTimerD = (systemdlg[DLGSYS_TIMERD].state & SG_SELECTED); +void print_system_overview(void) { + switch (ConfigureParams.System.nCpuLevel) { + case 0: + sprintf(cpu_type, "68000"); break; + case 1: + sprintf(cpu_type, "68010"); break; + case 2: + sprintf(cpu_type, "68020"); break; + case 3: + sprintf(cpu_type, "68030"); break; + case 4: + sprintf(cpu_type, "68040"); break; + case 5: + sprintf(cpu_type, "68060"); break; + default: break; + } + + sprintf(cpu_clock, "%i MHz", ConfigureParams.System.nCpuFreq); + + sprintf(main_memory, "%i MB", Configuration_CheckMemory(ConfigureParams.Memory.nMemoryBankSize)); + + sprintf(dsp_memory, "%i kB", ConfigureParams.System.bDSPMemoryExpansion?96:24); + + switch (ConfigureParams.System.n_FPUType) { + case FPU_NONE: + sprintf(fpu_type, "none"); break; + case FPU_68881: + sprintf(fpu_type, "68881"); break; + case FPU_68882: + sprintf(fpu_type, "68882"); break; + case FPU_CPU: + sprintf(fpu_type, "68040"); break; + default: break; + } + + switch (ConfigureParams.System.nDSPType) { + case DSP_TYPE_NONE: + case DSP_TYPE_DUMMY: + sprintf(dsp_type, "none"); break; + case DSP_TYPE_EMU: + sprintf(dsp_type, "56001"); break; + + default: break; + } + + switch (ConfigureParams.System.nSCSI) { + case NCR53C90: + sprintf(scsi_controller, "NCR53C90"); break; + case NCR53C90A: + sprintf(scsi_controller, "NCR53C90A"); break; + default: break; + } + + switch (ConfigureParams.System.nRTC) { + case MC68HC68T1: + sprintf(rtc_chip, "MC68HC68T1"); break; + case MCCS1850: + sprintf(rtc_chip, "MCCS1850"); break; + default: break; + } + + if (ConfigureParams.System.bNBIC) { + sprintf(nbic_present, "present"); + } else { + sprintf(nbic_present, "none"); + } + + update_system_selection(); } -/* The new WinUae cpu "System" dialog: */ -#else -#define DLGSYS_68000 4 -#define DLGSYS_68010 5 -#define DLGSYS_68020 6 -#define DLGSYS_68030 7 -#define DLGSYS_68040 8 -#define DLGSYS_68060 9 -#define DLGSYS_ST 12 -#define DLGSYS_STE 13 -#define DLGSYS_TT 14 -#define DLGSYS_FALCON 15 -#define DLGSYS_8MHZ 18 -#define DLGSYS_16MHZ 19 -#define DLGSYS_32MHZ 20 -#define DLGSYS_DSPOFF 23 -#define DLGSYS_DSPDUMMY 24 -#define DLGSYS_DSPON 25 -#define DLGSYS_24BITS 28 -#define DLGSYS_PREFETCH 29 -#define DLGSYS_CYC_EXACT 30 -#define DLGSYS_RTC 31 -#define DLGSYS_TIMERD 32 -#define DLGSYS_BLITTER 33 -#define DLGSYS_MMU_EMUL 34 -#define DLGSYS_FPU_NONE 37 -#define DLGSYS_FPU_68881 38 -#define DLGSYS_FPU_68882 39 -#define DLGSYS_FPU_CPU_IN 40 -#define DLGSYS_FPU_COMPAT 41 +/* Function to select and unselect system options */ +void update_system_selection(void) { + switch (ConfigureParams.System.nMachineType) { + case NEXT_CUBE030: + systemdlg[DLGSYS_CUBE030].state |= SG_SELECTED; + systemdlg[DLGSYS_CUBE].state &= ~SG_SELECTED; + systemdlg[DLGSYS_CUBETURBO].state &= ~SG_SELECTED; + systemdlg[DLGSYS_SLAB].state &= ~SG_SELECTED; + systemdlg[DLGSYS_SLABCOLOR].state &= ~SG_SELECTED; + systemdlg[DLGSYS_SLABTURBO].state &= ~SG_SELECTED; + break; + case NEXT_CUBE040: + systemdlg[DLGSYS_CUBE030].state &= ~SG_SELECTED; + systemdlg[DLGSYS_CUBE].state |= SG_SELECTED; + if (ConfigureParams.System.bTurbo) { + systemdlg[DLGSYS_CUBETURBO].state |= SG_SELECTED; + } else { + systemdlg[DLGSYS_CUBETURBO].state &= ~SG_SELECTED; + } + systemdlg[DLGSYS_SLAB].state &= ~SG_SELECTED; + systemdlg[DLGSYS_SLABCOLOR].state &= ~SG_SELECTED; + systemdlg[DLGSYS_SLABTURBO].state &= ~SG_SELECTED; + break; + case NEXT_STATION: + systemdlg[DLGSYS_CUBE030].state &= ~SG_SELECTED; + systemdlg[DLGSYS_CUBE].state &= ~SG_SELECTED; + systemdlg[DLGSYS_CUBETURBO].state &= ~SG_SELECTED; + systemdlg[DLGSYS_SLAB].state |= SG_SELECTED; + if (ConfigureParams.System.bTurbo) { + systemdlg[DLGSYS_SLABTURBO].state |= SG_SELECTED; + } else { + systemdlg[DLGSYS_SLABTURBO].state &= ~SG_SELECTED; + } + if (ConfigureParams.System.bColor) { + systemdlg[DLGSYS_SLABCOLOR].state |= SG_SELECTED; + } else { + systemdlg[DLGSYS_SLABCOLOR].state &= ~SG_SELECTED; + } + break; + + default: + break; + } +} -static SGOBJ systemdlg[] = -{ - { SGBOX, 0, 0, 0,0, 60,25, NULL }, - { SGTEXT, 0, 0, 23,1, 14,1, "System options" }, - - { SGBOX, 0, 0, 19,3, 11,9, NULL }, - { SGTEXT, 0, 0, 20,3, 8,1, "CPU type" }, - { SGRADIOBUT, 0, 0, 20,5, 7,1, "68000" }, - { SGRADIOBUT, 0, 0, 20,6, 7,1, "68010" }, - { SGRADIOBUT, 0, 0, 20,7, 7,1, "68020" }, - { SGRADIOBUT, 0, 0, 20,8, 13,1, "68030" }, - { SGRADIOBUT, 0, 0, 20,9, 13,1, "68040" }, - { SGRADIOBUT, 0, 0, 20,10, 7,1, "68060" }, - - { SGBOX, 0, 0, 2,3, 15,9, NULL }, - { SGTEXT, 0, 0, 3,3, 13,1, "Machine type" }, - { SGRADIOBUT, 0, 0, 3,5, 8,1, "ST" }, - { SGRADIOBUT, 0, 0, 3,6, 8,1, "STE" }, - { SGRADIOBUT, 0, 0, 3,7, 8,1, "TT" }, - { SGRADIOBUT, 0, 0, 3,8, 8,1, "Falcon" }, - - { SGBOX, 0, 0, 32,3, 12,9, NULL }, - { SGTEXT, 0, 0, 33,3, 15,1, "CPU clock" }, - { SGRADIOBUT, 0, 0, 33,5, 3,1, " 8 Mhz" }, - { SGRADIOBUT, 0, 0, 33,6, 4,1, "16 Mhz" }, - { SGRADIOBUT, 0, 0, 33,7, 4,1, "32 Mhz" }, - - { SGBOX, 0, 0, 46,3, 12,9, NULL }, - { SGTEXT, 0, 0, 47,3, 11,1, "Falcon DSP" }, - { SGRADIOBUT, 0, 0, 47,5, 5,1, "None" }, - { SGRADIOBUT, 0, 0, 47,6, 7,1, "Dummy" }, - { SGRADIOBUT, 0, 0, 47,7, 4,1, "Full" }, - - { SGBOX, 0, 0, 2,13, 28,9, NULL }, - { SGTEXT, 0, 0, 3,13, 11,1, "CPU Pamameters" }, - { SGCHECKBOX, 0, 0, 3,15, 15,1, "24 bits addressing" }, - { SGCHECKBOX, 0, 0, 3,16, 32,1, "Prefetch mode, slower" }, - { SGCHECKBOX, 0, 0, 3,17, 32,1, "Cycle exact, slower" }, - { SGCHECKBOX, 0, 0, 3,18, 27,1, "Real time clock emulation" }, - { SGCHECKBOX, 0, 0, 3,19, 15,1, "Patch Timer-D" }, - { SGCHECKBOX, 0, 0, 3,20, 20,1, "Blitter emulation" }, - { SGCHECKBOX, 0, 0, 3,21, 15,1, "MMU emulation" }, - - { SGBOX, 0, 0, 32,13, 26,9, NULL }, - { SGTEXT, 0, 0, 33,13, 11,1, "FPU" }, - { SGRADIOBUT, 0, 0, 33,15, 5,1, "None" }, - { SGRADIOBUT, 0, 0, 33,16, 7,1, "68881" }, - { SGRADIOBUT, 0, 0, 33,17, 4,1, "68882" }, - { SGRADIOBUT, 0, 0, 33,18, 4,1, "CPU internal" }, - { SGCHECKBOX, 0, 0, 33,20, 4,1, "More compatible, slower" }, - - { SGBUTTON, SG_DEFAULT, 0, 21,23, 20,1, "Back to main menu" }, - { -1, 0, 0, 0,0, 0,0, NULL } - }; +/* Function to get default values for each system */ +void get_default_values(void) { + Configuration_SetSystemDefaults(); +} /*-----------------------------------------------------------------------*/ @@ -291,166 +220,115 @@ static SGOBJ systemdlg[] = void Dialog_SystemDlg(void) { int i; - MACHINETYPE mti; + int but; SDLGui_CenterDlg(systemdlg); /* Set up dialog from actual values: */ - - for (i = DLGSYS_68000; i <= DLGSYS_68060; i++) + + /* System type: */ + for (i = DLGSYS_CUBE030; i <= DLGSYS_SLAB; i++) { systemdlg[i].state &= ~SG_SELECTED; } - systemdlg[DLGSYS_68000+ConfigureParams.System.nCpuLevel].state |= SG_SELECTED; - - for (i = DLGSYS_ST; i <= DLGSYS_FALCON; i++) - { - systemdlg[i].state &= ~SG_SELECTED; - } - systemdlg[DLGSYS_ST + ConfigureParams.System.nMachineType].state |= SG_SELECTED; - - /* CPU frequency: */ - for (i = DLGSYS_8MHZ; i <= DLGSYS_16MHZ; i++) - { - systemdlg[i].state &= ~SG_SELECTED; - } - if (ConfigureParams.System.nCpuFreq == 32) - systemdlg[DLGSYS_32MHZ].state |= SG_SELECTED; - else if (ConfigureParams.System.nCpuFreq == 16) - systemdlg[DLGSYS_16MHZ].state |= SG_SELECTED; - else - systemdlg[DLGSYS_8MHZ].state |= SG_SELECTED; - - /* DSP mode: */ - for (i = DLGSYS_DSPOFF; i <= DLGSYS_DSPON; i++) - { - systemdlg[i].state &= ~SG_SELECTED; - } - if (ConfigureParams.System.nDSPType == DSP_TYPE_NONE) - systemdlg[DLGSYS_DSPOFF].state |= SG_SELECTED; - else if (ConfigureParams.System.nDSPType == DSP_TYPE_DUMMY) - systemdlg[DLGSYS_DSPDUMMY].state |= SG_SELECTED; - else - systemdlg[DLGSYS_DSPON].state |= SG_SELECTED; - - /* More compatible CPU, Prefetch mode */ - if (ConfigureParams.System.bCompatibleCpu) - systemdlg[DLGSYS_PREFETCH].state |= SG_SELECTED; - else - systemdlg[DLGSYS_PREFETCH].state &= ~SG_SELECTED; - - /* Emulate Blitter */ - if (ConfigureParams.System.bBlitter) - systemdlg[DLGSYS_BLITTER].state |= SG_SELECTED; - else - systemdlg[DLGSYS_BLITTER].state &= ~SG_SELECTED; - - /* Real time clock CPU */ - if (ConfigureParams.System.bRealTimeClock) - systemdlg[DLGSYS_RTC].state |= SG_SELECTED; - else - systemdlg[DLGSYS_RTC].state &= ~SG_SELECTED; - - /* Patch timer D */ - if (ConfigureParams.System.bPatchTimerD) - systemdlg[DLGSYS_TIMERD].state |= SG_SELECTED; - else - systemdlg[DLGSYS_TIMERD].state &= ~SG_SELECTED; - - /* Adress space 24 bits */ - if (ConfigureParams.System.bAddressSpace24) - systemdlg[DLGSYS_24BITS].state |= SG_SELECTED; - else - systemdlg[DLGSYS_24BITS].state &= ~SG_SELECTED; + if (ConfigureParams.System.nMachineType == NEXT_CUBE030) + systemdlg[DLGSYS_CUBE030].state |= SG_SELECTED; + else if (ConfigureParams.System.nMachineType == NEXT_STATION) + systemdlg[DLGSYS_SLAB].state |= SG_SELECTED; + + + /* System overview */ + print_system_overview(); + - /* Cycle exact CPU */ - if (ConfigureParams.System.bCycleExactCpu) - systemdlg[DLGSYS_CYC_EXACT].state |= SG_SELECTED; - else - systemdlg[DLGSYS_CYC_EXACT].state &= ~SG_SELECTED; - - /* FPU emulation */ - for (i = DLGSYS_FPU_NONE; i <= DLGSYS_FPU_CPU_IN; i++) - { - systemdlg[i].state &= ~SG_SELECTED; - } - if (ConfigureParams.System.n_FPUType == FPU_NONE) - systemdlg[DLGSYS_FPU_NONE].state |= SG_SELECTED; - else if (ConfigureParams.System.n_FPUType == FPU_68881) - systemdlg[DLGSYS_FPU_68881].state |= SG_SELECTED; - else if (ConfigureParams.System.n_FPUType == FPU_68882) - systemdlg[DLGSYS_FPU_68882].state |= SG_SELECTED; - else - systemdlg[DLGSYS_FPU_CPU_IN].state |= SG_SELECTED; - - /* More compatible FPU */ - if (ConfigureParams.System.bCompatibleFPU) - systemdlg[DLGSYS_FPU_COMPAT].state |= SG_SELECTED; - else - systemdlg[DLGSYS_FPU_COMPAT].state &= ~SG_SELECTED; - - /* MMU Emulation */ - if (ConfigureParams.System.bMMU) - systemdlg[DLGSYS_MMU_EMUL].state |= SG_SELECTED; - else - systemdlg[DLGSYS_MMU_EMUL].state &= ~SG_SELECTED; - - - /* Show the dialog: */ - SDLGui_DoDialog(systemdlg, NULL); - - /* Read values from dialog: */ - - for (i = DLGSYS_68000; i <= DLGSYS_68060; i++) - { - if (systemdlg[i].state&SG_SELECTED) - { - ConfigureParams.System.nCpuLevel = i-DLGSYS_68000; - break; - } - } - - for (mti = MACHINE_ST; mti <= MACHINE_FALCON; mti++) - { - if (systemdlg[mti + DLGSYS_ST].state&SG_SELECTED) - { - ConfigureParams.System.nMachineType = mti; - break; - } - } - - if (systemdlg[DLGSYS_32MHZ].state & SG_SELECTED) - ConfigureParams.System.nCpuFreq = 32; - else if (systemdlg[DLGSYS_16MHZ].state & SG_SELECTED) - ConfigureParams.System.nCpuFreq = 16; - else - ConfigureParams.System.nCpuFreq = 8; - - if (systemdlg[DLGSYS_DSPOFF].state & SG_SELECTED) - ConfigureParams.System.nDSPType = DSP_TYPE_NONE; - else if (systemdlg[DLGSYS_DSPDUMMY].state & SG_SELECTED) - ConfigureParams.System.nDSPType = DSP_TYPE_DUMMY; - else - ConfigureParams.System.nDSPType = DSP_TYPE_EMU; - - ConfigureParams.System.bCompatibleCpu = (systemdlg[DLGSYS_PREFETCH].state & SG_SELECTED); - ConfigureParams.System.bBlitter = (systemdlg[DLGSYS_BLITTER].state & SG_SELECTED); - ConfigureParams.System.bRealTimeClock = (systemdlg[DLGSYS_RTC].state & SG_SELECTED); - ConfigureParams.System.bPatchTimerD = (systemdlg[DLGSYS_TIMERD].state & SG_SELECTED); - ConfigureParams.System.bAddressSpace24 = (systemdlg[DLGSYS_24BITS].state & SG_SELECTED); - ConfigureParams.System.bCycleExactCpu = (systemdlg[DLGSYS_CYC_EXACT].state & SG_SELECTED); - - /* FPU emulation */ - if (systemdlg[DLGSYS_FPU_NONE].state & SG_SELECTED) - ConfigureParams.System.n_FPUType = FPU_NONE; - else if (systemdlg[DLGSYS_FPU_68881].state & SG_SELECTED) - ConfigureParams.System.n_FPUType = FPU_68881; - else if (systemdlg[DLGSYS_FPU_68882].state & SG_SELECTED) - ConfigureParams.System.n_FPUType = FPU_68882; - else - ConfigureParams.System.n_FPUType = FPU_CPU; - - ConfigureParams.System.bCompatibleFPU = (systemdlg[DLGSYS_FPU_COMPAT].state & SG_SELECTED); - ConfigureParams.System.bMMU = (systemdlg[DLGSYS_MMU_EMUL].state & SG_SELECTED); + /* Draw and process the dialog: */ + + do + { + but = SDLGui_DoDialog(systemdlg, NULL); + switch (but) { + case DLGSYS_CUBE030: + ConfigureParams.System.nMachineType = NEXT_CUBE030; + get_default_values(); + break; + + case DLGSYS_CUBE: + if (ConfigureParams.System.nMachineType!=NEXT_CUBE040) { + ConfigureParams.System.bTurbo = false; + } + ConfigureParams.System.nMachineType = NEXT_CUBE040; + get_default_values(); + break; + + case DLGSYS_CUBETURBO: + if (ConfigureParams.System.bTurbo && + ConfigureParams.System.nMachineType==NEXT_CUBE040) { + ConfigureParams.System.bTurbo = false; + } else { + ConfigureParams.System.bTurbo = true; + } + ConfigureParams.System.nMachineType = NEXT_CUBE040; + get_default_values(); + break; + + case DLGSYS_SLAB: + if (ConfigureParams.System.nMachineType!=NEXT_STATION) { + ConfigureParams.System.bTurbo = false; + } + ConfigureParams.System.nMachineType = NEXT_STATION; + get_default_values(); + break; + + case DLGSYS_SLABCOLOR: + if (ConfigureParams.System.nMachineType!=NEXT_STATION) { + ConfigureParams.System.bTurbo = false; + } + if (ConfigureParams.System.bColor) { + ConfigureParams.System.bColor = false; + } else { + ConfigureParams.System.bColor = true; + } + ConfigureParams.System.nMachineType = NEXT_STATION; + get_default_values(); + break; + + case DLGSYS_SLABTURBO: + if (ConfigureParams.System.bTurbo && + ConfigureParams.System.nMachineType==NEXT_STATION) { + ConfigureParams.System.bTurbo = false; + } else { + ConfigureParams.System.bTurbo = true; + } + ConfigureParams.System.nMachineType = NEXT_STATION; + get_default_values(); + break; + + case DLGSYS_CUSTOMIZE: + Dialog_AdvancedDlg(); + break; + + case DLGSYS_RESET: + get_default_values(); + break; + + default: + break; + } + + print_system_overview(); + } + while (but != DLGSYS_EXIT && but != SDLGUI_QUIT + && but != SDLGUI_ERROR && !bQuitProgram); + + + /* Obsolete */ + ConfigureParams.System.bCompatibleCpu = 1; + ConfigureParams.System.bBlitter = 0; + ConfigureParams.System.bRealTimeClock = 0; + ConfigureParams.System.bPatchTimerD = 0; + ConfigureParams.System.bAddressSpace24 = 0; + ConfigureParams.System.bCycleExactCpu = 0; + ConfigureParams.System.bCompatibleFPU = 1; + ConfigureParams.System.bMMU = 1; } -#endif +