Annotation of hatari/src/gui-sdl/dlgCpu.c, revision 1.1.1.1

1.1       root        1: /*
                      2:   Hatari - dlgCpu.c
                      3: 
                      4:   This file is distributed under the GNU General Public License, version 2
                      5:   or at your option any later version. Read the file gpl.txt for details.
                      6: 
                      7:   This is the CPU settings dialog
                      8: */
                      9: const char DlgCpu_fileid[] = "Hatari dlgCpu.c : " __DATE__ " " __TIME__;
                     10: 
                     11: #include "main.h"
                     12: #include "configuration.h"
                     13: #include "dialog.h"
                     14: #include "sdlgui.h"
                     15: 
                     16: #define FPU_JIT 0
                     17: 
                     18: #define DLGCPU_68000      4
                     19: #define DLGCPU_68010      5
                     20: #define DLGCPU_68020      6
                     21: #define DLGCPU_68030      7
                     22: #define DLGCPU_68040      8
                     23: #define DLGCPU_68060      9
                     24: #define DLGCPU_8MHZ       12
                     25: #define DLGCPU_16MHZ      13
                     26: #define DLGCPU_32MHZ      14
                     27: #define DLGCPU_FPU_NONE   17
                     28: #define DLGCPU_FPU_68881  18
                     29: #define DLGCPU_FPU_68882  19
                     30: #define DLGCPU_FPU_CPU_IN 20
                     31: #if FPU_JIT
                     32: #define DLGCPU_FPU_JIT_COMPAT 21
                     33: #define DLGCPU_PREFETCH   25
                     34: #define DLGCPU_CYC_EXACT  26
                     35: #define DLGCPU_MMU_EMUL   27
                     36: #define DLGCPU_24BITS     28
                     37: #else
                     38: #define DLGCPU_PREFETCH   23
                     39: #define DLGCPU_CYC_EXACT  24
                     40: #define DLGCPU_MMU_EMUL   25
                     41: #define DLGCPU_24BITS     26
                     42: #endif
                     43: 
                     44: static SGOBJ cpudlg[] =
                     45: {
                     46:        { SGBOX, 0, 0, 0,0, 46,23, NULL },
                     47:        { SGTEXT, 0, 0, 17,1, 14,1, "CPU options" },
                     48: 
                     49:        { SGBOX, 0, 0, 2,3, 13,9, NULL },
                     50:        { SGTEXT, 0, 0, 3,3, 8,1, "CPU type" },
                     51:        { SGRADIOBUT, 0, 0, 3, 5, 7,1, "680_00" },
                     52:        { SGRADIOBUT, 0, 0, 3, 6, 7,1, "680_10" },
                     53:        { SGRADIOBUT, 0, 0, 3, 7, 7,1, "680_20" },
                     54: #ifdef ENABLE_WINUAE_CPU
                     55:        { SGRADIOBUT, 0, 0, 3, 8, 7,1, "680_30" },
                     56:        { SGRADIOBUT, 0, 0, 3, 9, 7,1, "680_40" },
                     57:        { SGRADIOBUT, 0, 0, 3,10, 7,1, "68060" },
                     58: #else
                     59:        { SGRADIOBUT, 0, 0, 3, 8,11,1, "680_30+FPU" },
                     60:        { SGRADIOBUT, 0, 0, 3, 9, 7,1, "680_40" },
                     61:        { SGTEXT, 0, 0, 3,10, 7,1, "" },
                     62: #endif
                     63: 
                     64:        { SGBOX, 0, 0, 16,3, 13,9, NULL },
                     65:        { SGTEXT, 0, 0, 17,3, 15,1, "CPU clock" },
                     66:        { SGRADIOBUT, 0, 0, 17,5, 8,1, " _8 Mhz" },
                     67:        { SGRADIOBUT, 0, 0, 17,6, 8,1, "1_6 Mhz" },
                     68:        { SGRADIOBUT, 0, 0, 17,7, 8,1, "32 _Mhz" },
                     69: 
                     70:        { SGBOX, 0, 0, 30,3, 14,9, NULL },
                     71:        { SGTEXT, 0, 0, 31,3, 11,1, "FPU" },
                     72: #ifdef ENABLE_WINUAE_CPU
                     73:        { SGRADIOBUT, 0, 0, 31,5, 6,1, "N_one" },
                     74:        { SGRADIOBUT, 0, 0, 31,6, 7,1, "68881" },
                     75:        { SGRADIOBUT, 0, 0, 31,7, 7,1, "68882" },
                     76:        { SGRADIOBUT, 0, 0, 31,8, 10,1, "_internal" },
                     77: # if FPU_JIT
                     78:        { SGCHECKBOX, 0, 0, 31,10, 12,1, "_compatible," },
                     79:        { SGTEXT,     0, 0, 33,11, 12,1, "but slower" },
                     80: # endif
                     81: #else
                     82:        { SGTEXT, 0, 0, 31,5, 10,1, "FPU config" },
                     83:        { SGTEXT, 0, 0, 31,6, 10,1, "unavailable" },
                     84:        { SGTEXT, 0, 0, 31,7, 10,1, "in old UAE" },
                     85:        { SGTEXT, 0, 0, 31,8, 10,1, "CPU core" },
                     86:        { SGTEXT, 0, 0, 31,10, 25,1, "" },
                     87:        { SGTEXT, 0, 0, 33,11, 12,1, "" },
                     88: #endif
                     89: 
                     90:        { SGBOX, 0, 0, 2,13, 42,7, NULL },
                     91:        { SGTEXT, 0, 0, 3,13, 11,1, "CPU parameters" },
                     92:        { SGCHECKBOX, 0, 0, 3,15, 23,1, "Prefetc_h mode, slower" },
                     93: #ifdef ENABLE_WINUAE_CPU
                     94:        { SGCHECKBOX, 0, 0, 3,16, 21,1, "Cycle e_xact, slower" },
                     95:        { SGCHECKBOX, 0, 0, 3,17, 15,1, "MM_U emulation" },
                     96:        { SGCHECKBOX, 0, 0, 3,18, 20,1, "24 bits add_ressing" },
                     97: #else
                     98:        { SGTEXT, 0, 0, 3,16, 1,1, "" },
                     99:        { SGTEXT, 0, 0, 3,17, 1,1, "" },
                    100:        { SGTEXT, 0, 0, 3,18, 1,1, "" },
                    101: #endif
                    102: 
                    103:        { SGBUTTON, SG_DEFAULT, 0, 13,21, 19,1, "Back to main menu" },
                    104:        { SGSTOP, 0, 0, 0,0, 0,0, NULL }
                    105: };
                    106: 
                    107: 
                    108: /*-----------------------------------------------------------------------*/
                    109: /**
                    110:  * Show and process the "CPU" dialog
                    111:  */
                    112: void DlgCpu_Main(void)
                    113: {
                    114:        int i;
                    115: 
                    116:        SDLGui_CenterDlg(cpudlg);
                    117: 
                    118:        /* CPU level: */
                    119:        for (i = DLGCPU_68000; i <= DLGCPU_68060; i++)
                    120:        {
                    121:                cpudlg[i].state &= ~SG_SELECTED;
                    122:        }
                    123:        cpudlg[DLGCPU_68000+ConfigureParams.System.nCpuLevel].state |= SG_SELECTED;
                    124: 
                    125:        /* CPU frequency: */
                    126:        for (i = DLGCPU_8MHZ; i <= DLGCPU_32MHZ; i++)
                    127:        {
                    128:                cpudlg[i].state &= ~SG_SELECTED;
                    129:        }
                    130:        if (ConfigureParams.System.nCpuFreq == 32)
                    131:                cpudlg[DLGCPU_32MHZ].state |= SG_SELECTED;
                    132:        else if (ConfigureParams.System.nCpuFreq == 16)
                    133:                cpudlg[DLGCPU_16MHZ].state |= SG_SELECTED;
                    134:        else
                    135:                cpudlg[DLGCPU_8MHZ].state |= SG_SELECTED;
                    136: 
                    137:        /* More compatible CPU, Prefetch mode */
                    138:        if (ConfigureParams.System.bCompatibleCpu)
                    139:                cpudlg[DLGCPU_PREFETCH].state |= SG_SELECTED;
                    140:        else
                    141:                cpudlg[DLGCPU_PREFETCH].state &= ~SG_SELECTED;
                    142: 
                    143: #ifdef ENABLE_WINUAE_CPU
                    144:        /* Address space 24 bits */
                    145:        if (ConfigureParams.System.bAddressSpace24)
                    146:                cpudlg[DLGCPU_24BITS].state |= SG_SELECTED;
                    147:        else
                    148:                cpudlg[DLGCPU_24BITS].state &= ~SG_SELECTED;
                    149:                
                    150:        /* Cycle exact CPU */
                    151:        if (ConfigureParams.System.bCycleExactCpu)
                    152:                cpudlg[DLGCPU_CYC_EXACT].state |= SG_SELECTED;
                    153:        else
                    154:                cpudlg[DLGCPU_CYC_EXACT].state &= ~SG_SELECTED;
                    155: 
                    156:        /* FPU emulation */
                    157:        for (i = DLGCPU_FPU_NONE; i <= DLGCPU_FPU_CPU_IN; i++)
                    158:        {
                    159:                cpudlg[i].state &= ~SG_SELECTED;
                    160:        }
                    161:        if (ConfigureParams.System.n_FPUType == FPU_NONE)
                    162:                cpudlg[DLGCPU_FPU_NONE].state |= SG_SELECTED;
                    163:        else if (ConfigureParams.System.n_FPUType == FPU_68881)
                    164:                cpudlg[DLGCPU_FPU_68881].state |= SG_SELECTED;
                    165:        else if (ConfigureParams.System.n_FPUType == FPU_68882)
                    166:                cpudlg[DLGCPU_FPU_68882].state |= SG_SELECTED;
                    167:        else
                    168:                cpudlg[DLGCPU_FPU_CPU_IN].state |= SG_SELECTED;
                    169: 
                    170:        /* More compatible FPU JIT */
                    171: # if FPU_JIT
                    172:        if (ConfigureParams.System.bCompatibleFPU)
                    173:                cpudlg[DLGCPU_FPU_JIT_COMPAT].state |= SG_SELECTED;
                    174:        else
                    175:                cpudlg[DLGCPU_FPU_JIT_COMPAT].state &= ~SG_SELECTED;
                    176: # endif
                    177: 
                    178:        /* MMU Emulation */
                    179:        if (ConfigureParams.System.bMMU)
                    180:                cpudlg[DLGCPU_MMU_EMUL].state |= SG_SELECTED;
                    181:        else
                    182:                cpudlg[DLGCPU_MMU_EMUL].state &= ~SG_SELECTED;
                    183: #endif
                    184: 
                    185:        /* Show the dialog: */
                    186:        SDLGui_DoDialog(cpudlg, NULL, false);
                    187: 
                    188:        /* Read values from dialog: */
                    189: 
                    190:        for (i = DLGCPU_68000; i <= DLGCPU_68060; i++)
                    191:        {
                    192:                if (cpudlg[i].state&SG_SELECTED)
                    193:                {
                    194:                        ConfigureParams.System.nCpuLevel = i-DLGCPU_68000;
                    195:                        break;
                    196:                }
                    197:        }
                    198: 
                    199:        if (cpudlg[DLGCPU_32MHZ].state & SG_SELECTED)
                    200:                ConfigureParams.System.nCpuFreq = 32;
                    201:        else if (cpudlg[DLGCPU_16MHZ].state & SG_SELECTED)
                    202:                ConfigureParams.System.nCpuFreq = 16;
                    203:        else
                    204:                ConfigureParams.System.nCpuFreq = 8;
                    205: 
                    206:        ConfigureParams.System.bCompatibleCpu = (cpudlg[DLGCPU_PREFETCH].state & SG_SELECTED);
                    207: 
                    208: #ifdef ENABLE_WINUAE_CPU
                    209:        ConfigureParams.System.bCycleExactCpu = (cpudlg[DLGCPU_CYC_EXACT].state & SG_SELECTED);
                    210:        ConfigureParams.System.bMMU = (cpudlg[DLGCPU_MMU_EMUL].state & SG_SELECTED);
                    211:        ConfigureParams.System.bAddressSpace24 = (cpudlg[DLGCPU_24BITS].state & SG_SELECTED);
                    212: 
                    213:        /* FPU emulation */
                    214:        if (cpudlg[DLGCPU_FPU_NONE].state & SG_SELECTED)
                    215:                ConfigureParams.System.n_FPUType = FPU_NONE;
                    216:        else if (cpudlg[DLGCPU_FPU_68881].state & SG_SELECTED)
                    217:                ConfigureParams.System.n_FPUType = FPU_68881;
                    218:        else if (cpudlg[DLGCPU_FPU_68882].state & SG_SELECTED)
                    219:                ConfigureParams.System.n_FPUType = FPU_68882;
                    220:        else
                    221:                ConfigureParams.System.n_FPUType = FPU_CPU;
                    222: 
                    223: # if FPU_JIT
                    224:        ConfigureParams.System.bCompatibleFPU = (cpudlg[DLGCPU_FPU_JIT_COMPAT].state & SG_SELECTED);
                    225: # endif
                    226: #endif
                    227: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.