|
|
1.1 root 1: /*
2: Hatari - dlgSystem.c
3:
4: This file is distributed under the GNU Public License, version 2 or at
5: your option any later version. Read the file gpl.txt for details.
1.1.1.2 ! root 6:
! 7: This file contains 2 system panels :
! 8: - 1 for the old uae CPU
! 9: - 1 for the new WinUae cpu
! 10:
! 11: The selection is made during compilation with the ENABLE_WINUAE_CPU define
! 12:
1.1 root 13: */
14: const char DlgSystem_fileid[] = "Hatari dlgSystem.c : " __DATE__ " " __TIME__;
15:
16: #include "main.h"
17: #include "configuration.h"
18: #include "dialog.h"
19: #include "sdlgui.h"
20:
1.1.1.2 ! root 21: /* The old Uae cpu "System" dialog: */
! 22: #ifndef ENABLE_WINUAE_CPU
1.1 root 23:
24: #define DLGSYS_68000 4
25: #define DLGSYS_68010 5
26: #define DLGSYS_68020 6
27: #define DLGSYS_68030 7
28: #define DLGSYS_68040 8
29: #define DLGSYS_ST 11
30: #define DLGSYS_STE 12
31: #define DLGSYS_TT 13
32: #define DLGSYS_FALCON 14
33: #define DLGSYS_8MHZ 17
34: #define DLGSYS_16MHZ 18
35: #define DLGSYS_32MHZ 19
36: #define DLGSYS_DSPOFF 21
37: #define DLGSYS_DSPDUMMY 22
38: #define DLGSYS_DSPON 23
39: #define DLGSYS_PREFETCH 24
40: #define DLGSYS_BLITTER 25
41: #define DLGSYS_RTC 26
42: #define DLGSYS_TIMERD 27
43:
44: static SGOBJ systemdlg[] =
45: {
46: { SGBOX, 0, 0, 0,0, 36,24, NULL },
47: { SGTEXT, 0, 0, 11,1, 14,1, "System options" },
48:
49: { SGBOX, 0, 0, 2,3, 16,9, NULL },
50: { SGTEXT, 0, 0, 3,4, 8,1, "CPU type:" },
51: { SGRADIOBUT, 0, 0, 4,6, 7,1, "68000" },
52: { SGRADIOBUT, 0, 0, 4,7, 7,1, "68010" },
53: { SGRADIOBUT, 0, 0, 4,8, 7,1, "68020" },
54: { SGRADIOBUT, 0, 0, 4,9, 13,1, "68EC030+FPU" },
55: { SGRADIOBUT, 0, 0, 4,10, 7,1, "68040" },
56:
57: { SGBOX, 0, 0, 19,3, 15,9, NULL },
58: { SGTEXT, 0, 0, 20,4, 13,1, "Machine type:" },
59: { SGRADIOBUT, 0, 0, 23,6, 8,1, "ST" },
60: { SGRADIOBUT, 0, 0, 23,7, 8,1, "STE" },
61: { SGRADIOBUT, 0, 0, 23,8, 8,1, "TT *" },
62: { SGRADIOBUT, 0, 0, 23,9, 8,1, "Falcon *" },
63: { SGTEXT, 0, 0, 21,11, 12,1, "* incomplete" },
64:
65: { SGTEXT, 0, 0, 2,13, 15,1, "CPU clock (MHz):" },
66: { SGRADIOBUT, 0, 0, 19,13, 3,1, "8" },
67: { SGRADIOBUT, 0, 0, 24,13, 4,1, "16" },
68: { SGRADIOBUT, 0, 0, 30,13, 4,1, "32" },
69:
70: { SGTEXT, 0, 0, 2,15, 11,1, "Falcon DSP:" },
71: { SGRADIOBUT, 0, 0, 14,15, 5,1, "off" },
72: { SGRADIOBUT, 0, 0, 21,15, 7,1, "dummy" },
73: { SGRADIOBUT, 0, 0, 30,15, 4,1, "on" },
74:
75: { SGCHECKBOX, 0, 0, 2,17, 32,1, "Slower but more compatible CPU" },
76: { SGCHECKBOX, 0, 0, 2,18, 20,1, "Blitter emulation" },
77: { SGCHECKBOX, 0, 0, 2,19, 27,1, "Real time clock emulation" },
78: { SGCHECKBOX, 0, 0, 2,20, 15,1, "Patch Timer-D" },
79:
80: { SGBUTTON, SG_DEFAULT, 0, 8,22, 20,1, "Back to main menu" },
81: { -1, 0, 0, 0,0, 0,0, NULL }
82: };
83:
84:
85: /*-----------------------------------------------------------------------*/
86: /**
87: * Show and process the "System" dialog.
88: */
89: void Dialog_SystemDlg(void)
90: {
91: int i;
92: MACHINETYPE mti;
93:
94: SDLGui_CenterDlg(systemdlg);
95:
96: /* Set up dialog from actual values: */
97:
98: for (i = DLGSYS_68000; i <= DLGSYS_68040; i++)
99: {
100: systemdlg[i].state &= ~SG_SELECTED;
101: }
102: systemdlg[DLGSYS_68000+ConfigureParams.System.nCpuLevel].state |= SG_SELECTED;
103:
104: for (i = DLGSYS_ST; i <= DLGSYS_FALCON; i++)
105: {
106: systemdlg[i].state &= ~SG_SELECTED;
107: }
108: systemdlg[DLGSYS_ST + ConfigureParams.System.nMachineType].state |= SG_SELECTED;
109:
110: /* CPU frequency: */
111: for (i = DLGSYS_8MHZ; i <= DLGSYS_16MHZ; i++)
112: {
113: systemdlg[i].state &= ~SG_SELECTED;
114: }
115: if (ConfigureParams.System.nCpuFreq == 32)
116: systemdlg[DLGSYS_32MHZ].state |= SG_SELECTED;
117: else if (ConfigureParams.System.nCpuFreq == 16)
118: systemdlg[DLGSYS_16MHZ].state |= SG_SELECTED;
119: else
120: systemdlg[DLGSYS_8MHZ].state |= SG_SELECTED;
121:
122: /* DSP mode: */
123: for (i = DLGSYS_DSPOFF; i <= DLGSYS_DSPON; i++)
124: {
125: systemdlg[i].state &= ~SG_SELECTED;
126: }
127: if (ConfigureParams.System.nDSPType == DSP_TYPE_NONE)
128: systemdlg[DLGSYS_DSPOFF].state |= SG_SELECTED;
129: else if (ConfigureParams.System.nDSPType == DSP_TYPE_DUMMY)
130: systemdlg[DLGSYS_DSPDUMMY].state |= SG_SELECTED;
131: else
132: systemdlg[DLGSYS_DSPON].state |= SG_SELECTED;
133:
134:
135: if (ConfigureParams.System.bCompatibleCpu)
136: systemdlg[DLGSYS_PREFETCH].state |= SG_SELECTED;
137: else
138: systemdlg[DLGSYS_PREFETCH].state &= ~SG_SELECTED;
139:
140: if (ConfigureParams.System.bBlitter)
141: systemdlg[DLGSYS_BLITTER].state |= SG_SELECTED;
142: else
143: systemdlg[DLGSYS_BLITTER].state &= ~SG_SELECTED;
144:
145: if (ConfigureParams.System.bRealTimeClock)
146: systemdlg[DLGSYS_RTC].state |= SG_SELECTED;
147: else
148: systemdlg[DLGSYS_RTC].state &= ~SG_SELECTED;
149:
150: if (ConfigureParams.System.bPatchTimerD)
151: systemdlg[DLGSYS_TIMERD].state |= SG_SELECTED;
152: else
153: systemdlg[DLGSYS_TIMERD].state &= ~SG_SELECTED;
154:
155: /* Show the dialog: */
156: SDLGui_DoDialog(systemdlg, NULL);
157:
158: /* Read values from dialog: */
159:
160: for (i = DLGSYS_68000; i <= DLGSYS_68040; i++)
161: {
162: if (systemdlg[i].state&SG_SELECTED)
163: {
164: ConfigureParams.System.nCpuLevel = i-DLGSYS_68000;
165: break;
166: }
167: }
168:
169: for (mti = MACHINE_ST; mti <= MACHINE_FALCON; mti++)
170: {
171: if (systemdlg[mti + DLGSYS_ST].state&SG_SELECTED)
172: {
173: ConfigureParams.System.nMachineType = mti;
174: break;
175: }
176: }
177:
178: if (systemdlg[DLGSYS_32MHZ].state & SG_SELECTED)
179: ConfigureParams.System.nCpuFreq = 32;
180: else if (systemdlg[DLGSYS_16MHZ].state & SG_SELECTED)
181: ConfigureParams.System.nCpuFreq = 16;
182: else
183: ConfigureParams.System.nCpuFreq = 8;
184:
185: if (systemdlg[DLGSYS_DSPOFF].state & SG_SELECTED)
186: ConfigureParams.System.nDSPType = DSP_TYPE_NONE;
187: else if (systemdlg[DLGSYS_DSPDUMMY].state & SG_SELECTED)
188: ConfigureParams.System.nDSPType = DSP_TYPE_DUMMY;
189: else
190: ConfigureParams.System.nDSPType = DSP_TYPE_EMU;
191:
192: ConfigureParams.System.bCompatibleCpu = (systemdlg[DLGSYS_PREFETCH].state & SG_SELECTED);
193: ConfigureParams.System.bBlitter = (systemdlg[DLGSYS_BLITTER].state & SG_SELECTED);
194: ConfigureParams.System.bRealTimeClock = (systemdlg[DLGSYS_RTC].state & SG_SELECTED);
195: ConfigureParams.System.bPatchTimerD = (systemdlg[DLGSYS_TIMERD].state & SG_SELECTED);
196: }
1.1.1.2 ! root 197:
! 198: /* The new WinUae cpu "System" dialog: */
! 199: #else
! 200:
! 201: #define DLGSYS_68000 4
! 202: #define DLGSYS_68010 5
! 203: #define DLGSYS_68020 6
! 204: #define DLGSYS_68030 7
! 205: #define DLGSYS_68040 8
! 206: #define DLGSYS_68060 9
! 207: #define DLGSYS_ST 12
! 208: #define DLGSYS_STE 13
! 209: #define DLGSYS_TT 14
! 210: #define DLGSYS_FALCON 15
! 211: #define DLGSYS_8MHZ 18
! 212: #define DLGSYS_16MHZ 19
! 213: #define DLGSYS_32MHZ 20
! 214: #define DLGSYS_DSPOFF 23
! 215: #define DLGSYS_DSPDUMMY 24
! 216: #define DLGSYS_DSPON 25
! 217: #define DLGSYS_24BITS 28
! 218: #define DLGSYS_PREFETCH 29
! 219: #define DLGSYS_CYC_EXACT 30
! 220: #define DLGSYS_RTC 31
! 221: #define DLGSYS_TIMERD 32
! 222: #define DLGSYS_BLITTER 33
! 223: #define DLGSYS_MMU_EMUL 34
! 224: #define DLGSYS_FPU_NONE 37
! 225: #define DLGSYS_FPU_68881 38
! 226: #define DLGSYS_FPU_68882 39
! 227: #define DLGSYS_FPU_CPU_IN 40
! 228: #define DLGSYS_FPU_COMPAT 41
! 229:
! 230:
! 231: static SGOBJ systemdlg[] =
! 232: {
! 233: { SGBOX, 0, 0, 0,0, 60,25, NULL },
! 234: { SGTEXT, 0, 0, 23,1, 14,1, "System options" },
! 235:
! 236: { SGBOX, 0, 0, 19,3, 11,9, NULL },
! 237: { SGTEXT, 0, 0, 20,3, 8,1, "CPU type" },
! 238: { SGRADIOBUT, 0, 0, 20,5, 7,1, "68000" },
! 239: { SGRADIOBUT, 0, 0, 20,6, 7,1, "68010" },
! 240: { SGRADIOBUT, 0, 0, 20,7, 7,1, "68020" },
! 241: { SGRADIOBUT, 0, 0, 20,8, 13,1, "68030" },
! 242: { SGRADIOBUT, 0, 0, 20,9, 13,1, "68040" },
! 243: { SGRADIOBUT, 0, 0, 20,10, 7,1, "68060" },
! 244:
! 245: { SGBOX, 0, 0, 2,3, 15,9, NULL },
! 246: { SGTEXT, 0, 0, 3,3, 13,1, "Machine type" },
! 247: { SGRADIOBUT, 0, 0, 3,5, 8,1, "ST" },
! 248: { SGRADIOBUT, 0, 0, 3,6, 8,1, "STE" },
! 249: { SGRADIOBUT, 0, 0, 3,7, 8,1, "TT" },
! 250: { SGRADIOBUT, 0, 0, 3,8, 8,1, "Falcon" },
! 251:
! 252: { SGBOX, 0, 0, 32,3, 12,9, NULL },
! 253: { SGTEXT, 0, 0, 33,3, 15,1, "CPU clock" },
! 254: { SGRADIOBUT, 0, 0, 33,5, 3,1, " 8 Mhz" },
! 255: { SGRADIOBUT, 0, 0, 33,6, 4,1, "16 Mhz" },
! 256: { SGRADIOBUT, 0, 0, 33,7, 4,1, "32 Mhz" },
! 257:
! 258: { SGBOX, 0, 0, 46,3, 12,9, NULL },
! 259: { SGTEXT, 0, 0, 47,3, 11,1, "Falcon DSP" },
! 260: { SGRADIOBUT, 0, 0, 47,5, 5,1, "None" },
! 261: { SGRADIOBUT, 0, 0, 47,6, 7,1, "Dummy" },
! 262: { SGRADIOBUT, 0, 0, 47,7, 4,1, "Full" },
! 263:
! 264: { SGBOX, 0, 0, 2,13, 28,9, NULL },
! 265: { SGTEXT, 0, 0, 3,13, 11,1, "CPU Pamameters" },
! 266: { SGCHECKBOX, 0, 0, 3,15, 15,1, "24 bits addressing" },
! 267: { SGCHECKBOX, 0, 0, 3,16, 32,1, "Prefetch mode, slower" },
! 268: { SGCHECKBOX, 0, 0, 3,17, 32,1, "Cycle exact, slower" },
! 269: { SGCHECKBOX, 0, 0, 3,18, 27,1, "Real time clock emulation" },
! 270: { SGCHECKBOX, 0, 0, 3,19, 15,1, "Patch Timer-D" },
! 271: { SGCHECKBOX, 0, 0, 3,20, 20,1, "Blitter emulation" },
! 272: { SGCHECKBOX, 0, 0, 3,21, 15,1, "MMU emulation" },
! 273:
! 274: { SGBOX, 0, 0, 32,13, 26,9, NULL },
! 275: { SGTEXT, 0, 0, 33,13, 11,1, "FPU" },
! 276: { SGRADIOBUT, 0, 0, 33,15, 5,1, "None" },
! 277: { SGRADIOBUT, 0, 0, 33,16, 7,1, "68881" },
! 278: { SGRADIOBUT, 0, 0, 33,17, 4,1, "68882" },
! 279: { SGRADIOBUT, 0, 0, 33,18, 4,1, "CPU internal" },
! 280: { SGCHECKBOX, 0, 0, 33,20, 4,1, "More compatible, slower" },
! 281:
! 282: { SGBUTTON, SG_DEFAULT, 0, 21,23, 20,1, "Back to main menu" },
! 283: { -1, 0, 0, 0,0, 0,0, NULL }
! 284: };
! 285:
! 286:
! 287: /*-----------------------------------------------------------------------*/
! 288: /**
! 289: * Show and process the "System" dialog (specific to winUAE cpu).
! 290: */
! 291: void Dialog_SystemDlg(void)
! 292: {
! 293: int i;
! 294: MACHINETYPE mti;
! 295:
! 296: SDLGui_CenterDlg(systemdlg);
! 297:
! 298: /* Set up dialog from actual values: */
! 299:
! 300: for (i = DLGSYS_68000; i <= DLGSYS_68060; i++)
! 301: {
! 302: systemdlg[i].state &= ~SG_SELECTED;
! 303: }
! 304: systemdlg[DLGSYS_68000+ConfigureParams.System.nCpuLevel].state |= SG_SELECTED;
! 305:
! 306: for (i = DLGSYS_ST; i <= DLGSYS_FALCON; i++)
! 307: {
! 308: systemdlg[i].state &= ~SG_SELECTED;
! 309: }
! 310: systemdlg[DLGSYS_ST + ConfigureParams.System.nMachineType].state |= SG_SELECTED;
! 311:
! 312: /* CPU frequency: */
! 313: for (i = DLGSYS_8MHZ; i <= DLGSYS_16MHZ; i++)
! 314: {
! 315: systemdlg[i].state &= ~SG_SELECTED;
! 316: }
! 317: if (ConfigureParams.System.nCpuFreq == 32)
! 318: systemdlg[DLGSYS_32MHZ].state |= SG_SELECTED;
! 319: else if (ConfigureParams.System.nCpuFreq == 16)
! 320: systemdlg[DLGSYS_16MHZ].state |= SG_SELECTED;
! 321: else
! 322: systemdlg[DLGSYS_8MHZ].state |= SG_SELECTED;
! 323:
! 324: /* DSP mode: */
! 325: for (i = DLGSYS_DSPOFF; i <= DLGSYS_DSPON; i++)
! 326: {
! 327: systemdlg[i].state &= ~SG_SELECTED;
! 328: }
! 329: if (ConfigureParams.System.nDSPType == DSP_TYPE_NONE)
! 330: systemdlg[DLGSYS_DSPOFF].state |= SG_SELECTED;
! 331: else if (ConfigureParams.System.nDSPType == DSP_TYPE_DUMMY)
! 332: systemdlg[DLGSYS_DSPDUMMY].state |= SG_SELECTED;
! 333: else
! 334: systemdlg[DLGSYS_DSPON].state |= SG_SELECTED;
! 335:
! 336: /* More compatible CPU, Prefetch mode */
! 337: if (ConfigureParams.System.bCompatibleCpu)
! 338: systemdlg[DLGSYS_PREFETCH].state |= SG_SELECTED;
! 339: else
! 340: systemdlg[DLGSYS_PREFETCH].state &= ~SG_SELECTED;
! 341:
! 342: /* Emulate Blitter */
! 343: if (ConfigureParams.System.bBlitter)
! 344: systemdlg[DLGSYS_BLITTER].state |= SG_SELECTED;
! 345: else
! 346: systemdlg[DLGSYS_BLITTER].state &= ~SG_SELECTED;
! 347:
! 348: /* Real time clock CPU */
! 349: if (ConfigureParams.System.bRealTimeClock)
! 350: systemdlg[DLGSYS_RTC].state |= SG_SELECTED;
! 351: else
! 352: systemdlg[DLGSYS_RTC].state &= ~SG_SELECTED;
! 353:
! 354: /* Patch timer D */
! 355: if (ConfigureParams.System.bPatchTimerD)
! 356: systemdlg[DLGSYS_TIMERD].state |= SG_SELECTED;
! 357: else
! 358: systemdlg[DLGSYS_TIMERD].state &= ~SG_SELECTED;
! 359:
! 360: /* Adress space 24 bits */
! 361: if (ConfigureParams.System.bAddressSpace24)
! 362: systemdlg[DLGSYS_24BITS].state |= SG_SELECTED;
! 363: else
! 364: systemdlg[DLGSYS_24BITS].state &= ~SG_SELECTED;
! 365:
! 366: /* Cycle exact CPU */
! 367: if (ConfigureParams.System.bCycleExactCpu)
! 368: systemdlg[DLGSYS_CYC_EXACT].state |= SG_SELECTED;
! 369: else
! 370: systemdlg[DLGSYS_CYC_EXACT].state &= ~SG_SELECTED;
! 371:
! 372: /* FPU emulation */
! 373: for (i = DLGSYS_FPU_NONE; i <= DLGSYS_FPU_CPU_IN; i++)
! 374: {
! 375: systemdlg[i].state &= ~SG_SELECTED;
! 376: }
! 377: if (ConfigureParams.System.n_FPUType == FPU_NONE)
! 378: systemdlg[DLGSYS_FPU_NONE].state |= SG_SELECTED;
! 379: else if (ConfigureParams.System.n_FPUType == FPU_68881)
! 380: systemdlg[DLGSYS_FPU_68881].state |= SG_SELECTED;
! 381: else if (ConfigureParams.System.n_FPUType == FPU_68882)
! 382: systemdlg[DLGSYS_FPU_68882].state |= SG_SELECTED;
! 383: else
! 384: systemdlg[DLGSYS_FPU_CPU_IN].state |= SG_SELECTED;
! 385:
! 386: /* More compatible FPU */
! 387: if (ConfigureParams.System.bCompatibleFPU)
! 388: systemdlg[DLGSYS_FPU_COMPAT].state |= SG_SELECTED;
! 389: else
! 390: systemdlg[DLGSYS_FPU_COMPAT].state &= ~SG_SELECTED;
! 391:
! 392: /* MMU Emulation */
! 393: if (ConfigureParams.System.bMMU)
! 394: systemdlg[DLGSYS_MMU_EMUL].state |= SG_SELECTED;
! 395: else
! 396: systemdlg[DLGSYS_MMU_EMUL].state &= ~SG_SELECTED;
! 397:
! 398:
! 399: /* Show the dialog: */
! 400: SDLGui_DoDialog(systemdlg, NULL);
! 401:
! 402: /* Read values from dialog: */
! 403:
! 404: for (i = DLGSYS_68000; i <= DLGSYS_68060; i++)
! 405: {
! 406: if (systemdlg[i].state&SG_SELECTED)
! 407: {
! 408: ConfigureParams.System.nCpuLevel = i-DLGSYS_68000;
! 409: break;
! 410: }
! 411: }
! 412:
! 413: for (mti = MACHINE_ST; mti <= MACHINE_FALCON; mti++)
! 414: {
! 415: if (systemdlg[mti + DLGSYS_ST].state&SG_SELECTED)
! 416: {
! 417: ConfigureParams.System.nMachineType = mti;
! 418: break;
! 419: }
! 420: }
! 421:
! 422: if (systemdlg[DLGSYS_32MHZ].state & SG_SELECTED)
! 423: ConfigureParams.System.nCpuFreq = 32;
! 424: else if (systemdlg[DLGSYS_16MHZ].state & SG_SELECTED)
! 425: ConfigureParams.System.nCpuFreq = 16;
! 426: else
! 427: ConfigureParams.System.nCpuFreq = 8;
! 428:
! 429: if (systemdlg[DLGSYS_DSPOFF].state & SG_SELECTED)
! 430: ConfigureParams.System.nDSPType = DSP_TYPE_NONE;
! 431: else if (systemdlg[DLGSYS_DSPDUMMY].state & SG_SELECTED)
! 432: ConfigureParams.System.nDSPType = DSP_TYPE_DUMMY;
! 433: else
! 434: ConfigureParams.System.nDSPType = DSP_TYPE_EMU;
! 435:
! 436: ConfigureParams.System.bCompatibleCpu = (systemdlg[DLGSYS_PREFETCH].state & SG_SELECTED);
! 437: ConfigureParams.System.bBlitter = (systemdlg[DLGSYS_BLITTER].state & SG_SELECTED);
! 438: ConfigureParams.System.bRealTimeClock = (systemdlg[DLGSYS_RTC].state & SG_SELECTED);
! 439: ConfigureParams.System.bPatchTimerD = (systemdlg[DLGSYS_TIMERD].state & SG_SELECTED);
! 440: ConfigureParams.System.bAddressSpace24 = (systemdlg[DLGSYS_24BITS].state & SG_SELECTED);
! 441: ConfigureParams.System.bCycleExactCpu = (systemdlg[DLGSYS_CYC_EXACT].state & SG_SELECTED);
! 442:
! 443: /* FPU emulation */
! 444: if (systemdlg[DLGSYS_FPU_NONE].state & SG_SELECTED)
! 445: ConfigureParams.System.n_FPUType = FPU_NONE;
! 446: else if (systemdlg[DLGSYS_FPU_68881].state & SG_SELECTED)
! 447: ConfigureParams.System.n_FPUType = FPU_68881;
! 448: else if (systemdlg[DLGSYS_FPU_68882].state & SG_SELECTED)
! 449: ConfigureParams.System.n_FPUType = FPU_68882;
! 450: else
! 451: ConfigureParams.System.n_FPUType = FPU_CPU;
! 452:
! 453: ConfigureParams.System.bCompatibleFPU = (systemdlg[DLGSYS_FPU_COMPAT].state & SG_SELECTED);
! 454: ConfigureParams.System.bMMU = (systemdlg[DLGSYS_MMU_EMUL].state & SG_SELECTED);
! 455: }
! 456: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.