|
|
1.1 root 1: /*
2: Previous - dlgMemory.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.
6: */
7: const char DlgMemory_fileid[] = "Previous dlgMemory.c : " __DATE__ " " __TIME__;
8:
9: #include "main.h"
10: #include "dialog.h"
11: #include "sdlgui.h"
12: #include "file.h"
13: #include "screen.h"
14:
15: #define GUI_SAVE_MEMORY 0
16:
17: #define DLGMEM_8MB 4
18: #define DLGMEM_16MB 5
19: #define DLGMEM_32MB 6
20: #define DLGMEM_64MB 8
21: #define DLGMEM_128MB 9
22: #define DLGMEM_CUSTOM 7
23:
24: #define DLGMEM_120NS 12
25: #define DLGMEM_100NS 13
26: #define DLGMEM_80NS 14
27: #define DLGMEM_60NS 15
28:
29: #if GUI_SAVE_MEMORY
30: #define DLGMEM_FILENAME 19
31: #define DLGMEM_SAVE 20
32: #define DLGMEM_RESTORE 21
33: #define DLGMEM_AUTOSAVE 22
34:
35: #define DLGMEM_EXIT 23
36: #else
37: #define DLGMEM_EXIT 16
38: #endif
39:
40: void Dialog_MemDlgDraw(void);
41: char custom_memsize[16] = "Customize";
42:
43: /* The memory dialog: */
44: static SGOBJ memorydlg[] =
45: {
46: #if GUI_SAVE_MEMORY
47: { SGBOX, 0, 0, 0,0, 41,28, NULL },
48: #else
49: { SGBOX, 0, 0, 0,0, 41,18, NULL },
50: #endif
51: { SGTEXT, 0, 0, 14,1, 12,1, "Memory options" },
52:
53: { SGBOX, 0, 0, 1,3, 19,10, NULL },
54: { SGTEXT, 0, 0, 2,4, 12,1, "Memory size" },
55: { SGRADIOBUT, 0, 0, 3,6, 6,1, "8 MB" },
56: { SGRADIOBUT, 0, 0, 3,7, 7,1, "16 MB" },
57: { SGRADIOBUT, 0, 0, 3,8, 7,1, "32 MB" },
58: { SGRADIOBUT, 0, 0, 3,11, 11,1, custom_memsize },
59: { SGRADIOBUT, 0, 0, 3,9, 7,1, "64 MB" },
60: { SGRADIOBUT, 0, 0, 3,10, 8,1, "128 MB" },
61:
62: { SGBOX, 0, 0, 21,3, 19,10, NULL },
63: { SGTEXT, 0, 0, 22,4, 12,1, "Memory speed" },
64: { SGRADIOBUT, 0, 0, 23,6, 8,1, "120 ns" },
65: { SGRADIOBUT, 0, 0, 23,7, 8,1, "100 ns" },
66: { SGRADIOBUT, 0, 0, 23,8, 7,1, "80 ns" },
67: { SGRADIOBUT, 0, 0, 23,9, 7,1, "60 ns" },
68:
69: { SGBUTTON, SG_DEFAULT, 0, 10,15, 23,1, "Back to system menu" },
70: #if GUI_SAVE_MEMORY
71: { SGBOX, 0, 0, 1,14, 39,10, NULL },
72: { SGTEXT, 0, 0, 2,15, 17,1, "Load/Save memory state (untested)" },
73: { SGTEXT, 0, 0, 2,17, 20,1, "Snap-shot file name:" },
74: { SGTEXT, 0, 0, 2,18, 36,1, dlgSnapShotName },
75: { SGBUTTON, 0, 0, 8,20, 10,1, "Save" },
76: { SGBUTTON, 0, 0, 22,20, 10,1, "Restore" },
77: { SGCHECKBOX, 0, 0, 2,22, 37,1, "Load/save state at start-up/exit" },
78:
79: { SGBUTTON, SG_DEFAULT, 0, 10,26, 21,1, "Back to main menu" },
80: #endif
81: { -1, 0, 0, 0,0, 0,0, NULL }
82: };
83:
84: /* Variable objects */
85: SGOBJ disable_128mb_option = { SGTEXT, 0, 0, 3,10, 8,1, " " };
86: SGOBJ enable_128mb_option = { SGRADIOBUT, 0, 0, 3,10, 8,1, "128 MB" };
87: SGOBJ disable_64mb_option = { SGTEXT, 0, 0, 3,9, 7,1, " " };
88: SGOBJ enable_64mb_option = { SGRADIOBUT, 0, 0, 3,9, 7,1, "64 MB" };
89:
90: /* Default configuration constants */
91: int defsize[9][4] = {
92: { 4, 4, 0, 0}, /* 8 MB for monochrome non-turbo */
93: { 8, 0, 0, 0}, /* 8 MB for turbo and non-turbo color */
94: {16, 0, 0, 0}, /* 16 MB for monochrome non-turbo */
95: { 8, 8, 0, 0}, /* 16 MB for turbo and non-turbo color */
96: {16,16, 0, 0}, /* 32 MB for monochrome non-turbo */
97: { 8, 8, 8, 8}, /* 32 MB for turbo and non-turbo color */
98: {16,16,16,16}, /* 64 MB for monochrome non-turbo */
99: {32,32, 0, 0}, /* 64 MB for turbo */
100: {32,32,32,32} /* 128 MB for turbo */
101: };
102: int defsizecount=0; /* Compare defsizes up to this value */
103:
104: /**
105: * Show and process the memory dialog.
106: * @return true if a memory snapshot has been loaded, false otherwise
107: */
108: bool Dialog_MemDlg(void)
109: {
110: int but;
111:
112: SDLGui_CenterDlg(memorydlg);
113:
114: /* Remove 64 and 128MB option if system is non-Turbo Slab,
115: * remove 128MB option if system is not Turbo */
116: if (ConfigureParams.System.bTurbo) {
117: memorydlg[DLGMEM_64MB] = enable_64mb_option;
118: memorydlg[DLGMEM_128MB] = enable_128mb_option;
119: defsizecount = 9;
120: } else if (ConfigureParams.System.bColor ||
121: ConfigureParams.System.nMachineType == NEXT_STATION) {
122: memorydlg[DLGMEM_64MB] = disable_64mb_option;
123: memorydlg[DLGMEM_128MB] = disable_128mb_option;
124: defsizecount = 6;
125: } else {
126: memorydlg[DLGMEM_64MB] = enable_64mb_option;
127: memorydlg[DLGMEM_128MB] = disable_128mb_option;
128: defsizecount = 8;
129: }
130:
131: /* Display memory speed options depending on system type */
132: if (ConfigureParams.System.bTurbo) {
133: memorydlg[DLGMEM_120NS].txt = "60 ns";
134: memorydlg[DLGMEM_100NS].txt = "70 ns";
135: memorydlg[DLGMEM_80NS].txt = "80 ns";
136: memorydlg[DLGMEM_60NS].txt = "100 ns";
137: } else {
138: memorydlg[DLGMEM_120NS].txt = "120 ns";
139: memorydlg[DLGMEM_100NS].txt = "100 ns";
140: memorydlg[DLGMEM_80NS].txt = "80 ns";
141: memorydlg[DLGMEM_60NS].txt = "60 ns";
142: }
143:
144: /* Draw dialog from actual values */
145:
146: Dialog_MemDlgDraw();
147:
148: do
149: {
150: but = SDLGui_DoDialog(memorydlg, NULL);
151:
152: switch (but)
153: {
154: case DLGMEM_8MB:
155: if (ConfigureParams.System.bColor || ConfigureParams.System.bTurbo) {
156: memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[1],
157: sizeof(ConfigureParams.Memory.nMemoryBankSize));
158: } else {
159: memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[0],
160: sizeof(ConfigureParams.Memory.nMemoryBankSize));
161: }
162: sprintf(custom_memsize, "Customize");
163: break;
164: case DLGMEM_16MB:
165: if (ConfigureParams.System.bColor || ConfigureParams.System.bTurbo) {
166: memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[3],
167: sizeof(ConfigureParams.Memory.nMemoryBankSize));
168: } else {
169: memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[2],
170: sizeof(ConfigureParams.Memory.nMemoryBankSize));
171: }
172: sprintf(custom_memsize, "Customize");
173: break;
174: case DLGMEM_32MB:
175: if (ConfigureParams.System.bColor || ConfigureParams.System.bTurbo) {
176: memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[5],
177: sizeof(ConfigureParams.Memory.nMemoryBankSize));
178: } else {
179: memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[4],
180: sizeof(ConfigureParams.Memory.nMemoryBankSize));
181: }
182: sprintf(custom_memsize, "Customize");
183: break;
184: case DLGMEM_64MB:
185: if (ConfigureParams.System.bTurbo) {
186: memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[7],
187: sizeof(ConfigureParams.Memory.nMemoryBankSize));
188: } else {
189: memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[6],
190: sizeof(ConfigureParams.Memory.nMemoryBankSize));
191: }
192: sprintf(custom_memsize, "Customize");
193: break;
194: case DLGMEM_128MB:
195: memcpy(ConfigureParams.Memory.nMemoryBankSize, defsize[8],
196: sizeof(ConfigureParams.Memory.nMemoryBankSize));
197: sprintf(custom_memsize, "Customize");
198: break;
199: case DLGMEM_CUSTOM:
200: Dialog_MemAdvancedDlg(ConfigureParams.Memory.nMemoryBankSize);
201: Dialog_MemDlgDraw();
202: break;
203: #if GUI_SAVE_MEMORY
204: case DLGMEM_SAVE: /* Save memory snap-shot */
205: if (SDLGui_FileConfSelect(dlgSnapShotName,
206: ConfigureParams.Memory.szMemoryCaptureFileName,
207: memorydlg[DLGMEM_FILENAME].w, true))
208: {
209: MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, true);
210: }
211: break;
212: case DLGMEM_RESTORE: /* Load memory snap-shot */
213: if (SDLGui_FileConfSelect(dlgSnapShotName,
214: ConfigureParams.Memory.szMemoryCaptureFileName,
215: memorydlg[DLGMEM_FILENAME].w, false))
216: {
217: MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, true);
218: return true;
219: }
220: break;
221: #endif
222: }
223: }
224: while (but != DLGMEM_EXIT && but != SDLGUI_QUIT
225: && but != SDLGUI_ERROR && !bQuitProgram );
226:
227: /* Read new values from dialog: */
228:
229: if (memorydlg[DLGMEM_120NS].state & SG_SELECTED)
230: ConfigureParams.Memory.nMemorySpeed = MEMORY_120NS;
231: else if (memorydlg[DLGMEM_100NS].state & SG_SELECTED)
232: ConfigureParams.Memory.nMemorySpeed = MEMORY_100NS;
233: else if (memorydlg[DLGMEM_80NS].state & SG_SELECTED)
234: ConfigureParams.Memory.nMemorySpeed = MEMORY_80NS;
235: else
236: ConfigureParams.Memory.nMemorySpeed = MEMORY_60NS;
237: #if GUI_SAVE_MEMORY
238: ConfigureParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED);
239: #endif
240: return false;
241: }
242:
243:
244: void Dialog_MemDlgDraw(void) {
245: int i;
246: int memsum, memsize;
247:
248: sprintf(custom_memsize, "Customize");
249:
250: for (i = DLGMEM_8MB; i <= DLGMEM_128MB; i++)
251: {
252: memorydlg[i].state &= ~SG_SELECTED;
253: }
254:
255: for (i = DLGMEM_120NS; i <= DLGMEM_60NS; i++)
256: {
257: memorydlg[i].state &= ~SG_SELECTED;
258: }
259:
260: /* Check memory configuration and find out if it is one of our default configurations */
261: memsum = Configuration_CheckMemory(ConfigureParams.Memory.nMemoryBankSize);
262:
263: for (i=0; i<defsizecount; i++) {
264: if (memcmp(ConfigureParams.Memory.nMemoryBankSize, defsize[i],
265: sizeof(ConfigureParams.Memory.nMemoryBankSize))) {
266: memsize = 0;
267: } else {
268: memsize = memsum;
269: break;
270: }
271: }
272:
273: switch (memsize)
274: {
275: case 8:
276: memorydlg[DLGMEM_8MB].state |= SG_SELECTED;
277: break;
278: case 16:
279: memorydlg[DLGMEM_16MB].state |= SG_SELECTED;
280: break;
281: case 32:
282: memorydlg[DLGMEM_32MB].state |= SG_SELECTED;
283: break;
284: case 64:
285: memorydlg[DLGMEM_64MB].state |= SG_SELECTED;
286: break;
287: case 128:
288: memorydlg[DLGMEM_128MB].state |= SG_SELECTED;
289: break;
290: default:
291: memorydlg[DLGMEM_CUSTOM].state |= SG_SELECTED;
292: sprintf(custom_memsize, "Custom (%i MB)", memsum);
293: break;
294: }
295:
296: switch (ConfigureParams.Memory.nMemorySpeed) {
297: case MEMORY_120NS:
298: memorydlg[DLGMEM_120NS].state |= SG_SELECTED;
299: break;
300: case MEMORY_100NS:
301: memorydlg[DLGMEM_100NS].state |= SG_SELECTED;
302: break;
303: case MEMORY_80NS:
304: memorydlg[DLGMEM_80NS].state |= SG_SELECTED;
305: break;
306: case MEMORY_60NS:
307: memorydlg[DLGMEM_60NS].state |= SG_SELECTED;
308: break;
309:
310: default:
311: ConfigureParams.Memory.nMemorySpeed = MEMORY_100NS;
312: memorydlg[DLGMEM_100NS].state |= SG_SELECTED;
313: break;
314: }
315: #if GUI_SAVE_MEMORY
316: File_ShrinkName(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w);
317:
318:
319: if (ConfigureParams.Memory.bAutoSave)
320: memorydlg[DLGMEM_AUTOSAVE].state |= SG_SELECTED;
321: else
322: memorydlg[DLGMEM_AUTOSAVE].state &= ~SG_SELECTED;
323: #endif
324: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.