|
|
1.1 root 1: /*
2: Previous - dlgDimension.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: */
8:
9: const char DlgDimension_fileid[] = "Previous dlgDimension.c : " __DATE__ " " __TIME__;
10:
11: #include "main.h"
12: #include "configuration.h"
13: #include "dialog.h"
14: #include "sdlgui.h"
15: #include "file.h"
16:
17:
18: #define DLGND_ENABLE 4
19: #define DLGND_CUSTOMIZE 5
20: #define DLGND_COLOR 7
21: #define DLGND_MONOCHROME 8
22: #define DLGND_BOTH 9
23: #define DLGND_MEMSIZE 16
24: #define DLGND_BROWSE 21
25: #define DLGND_NAME 22
26: #define DLGND_EXIT 24
27:
28: /* Variable strings */
29: char dimension_memory[16] = "64 MB";
30:
31: /* Additional functions */
32: void print_nd_overview(void);
33: void update_monitor_selection(void);
34: void get_nd_default_values(void);
35:
36: #define ENABLE_DUAL_SCREEN 1
37:
38:
39: static SGOBJ dimensiondlg[] =
40: {
41: { SGBOX, 0, 0, 0,0, 58,26, NULL },
42: { SGTEXT, 0, 0, 18,1, 21,1, "NeXTdimension options" },
43:
44: { SGBOX, 0, 0, 2,3, 26,10, NULL },
45: { SGTEXT, 0, 0, 3,4, 19,1, "NeXTdimension board" },
46: { SGCHECKBOX, 0, 0, 4,6, 9,1, "Enabled" },
47: { SGBUTTON, 0, 0, 15,6, 11,1, "Customize" },
48:
49: { SGTEXT, 0, 0, 3,9, 7,1, "System display" },
50: { SGRADIOBUT, 0, 0, 4,11, 7,1, "Color" },
51: #if ENABLE_DUAL_SCREEN
52: { SGRADIOBUT, 0, 0, 12,11, 6,1, "Mono" },
53: { SGRADIOBUT, 0, 0, 19,11, 6,1, "Both" },
54: #else
55: { SGRADIOBUT, 0, 0, 12,11, 12,1, "Monochrome" },
56: { SGTEXT, 0, 0, 19,11, 6,1, "" },
57: #endif
58:
59: { SGTEXT, 0, 0, 30,4, 13,1, "System overview:" },
60: { SGTEXT, 0, 0, 30,6, 13,1, "CPU type:" },
61: { SGTEXT, 0, 0, 44,6, 13,1, "i860 XR" },
62: { SGTEXT, 0, 0, 30,7, 13,1, "CPU clock:" },
63: { SGTEXT, 0, 0, 44,7, 13,1, "33 MHz" },
64: { SGTEXT, 0, 0, 30,8, 13,1, "Memory size:" },
65: { SGTEXT, 0, 0, 44,8, 13,1, dimension_memory },
66: { SGTEXT, 0, 0, 30,9, 13,1, "NBIC:" },
67: { SGTEXT, 0, 0, 44,9, 13,1, "present" },
68:
69: { SGBOX, 0, 0, 2,14, 54,5, NULL },
70: { SGTEXT, 0, 0, 3,15, 22,1, "ROM for NeXTdimension:" },
71: { SGBUTTON, 0, 0, 27,15, 8,1, "Browse" },
72: { SGTEXT, 0, 0, 4,17, 50,1, NULL },
73:
74: { SGTEXT, 0, 0, 3,20, 52,1, "Note: NeXTdimension does not work with NeXTstations." },
75:
76: { SGBUTTON, SG_DEFAULT, 0, 18,23, 21,1, "Back to main menu" },
77:
78: { -1, 0, 0, 0,0, 0,0, NULL }
79: };
80:
81:
82: /* Function to set NeXTdimension memory options */
83: void Dialog_NDMemDlg(int *membank);
84:
85: /* Function to print system overview */
86: void print_nd_overview(void) {
87: sprintf(dimension_memory, "%i MB", Configuration_CheckDimensionMemory(ConfigureParams.Dimension.nMemoryBankSize));
88:
89: update_monitor_selection();
90: }
91:
92: /* Function to select and unselect system options */
93: void update_monitor_selection(void) {
94:
95: }
96:
97: /* Function to get default values for each system */
98: void get_nd_default_values(void) {
99: int i;
100:
101: for (i = 0; i < 4; i++) {
102: ConfigureParams.Dimension.nMemoryBankSize[i] = 4;
103: }
104: }
105:
106:
107: /*-----------------------------------------------------------------------*/
108: /**
109: * Show and process the "System" dialog (specific to winUAE cpu).
110: */
111: void Dialog_DimensionDlg(void)
112: {
113: int but;
114: char dlgname_ndrom[64];
115:
116: SDLGui_CenterDlg(dimensiondlg);
117:
118: /* Set up dialog from actual values: */
119:
120: if (ConfigureParams.Dimension.bEnabled) {
121: dimensiondlg[DLGND_ENABLE].state |= SG_SELECTED;
122: } else {
123: dimensiondlg[DLGND_ENABLE].state &= ~SG_SELECTED;
124: }
125:
126: dimensiondlg[DLGND_COLOR].state &= ~SG_SELECTED;
127: dimensiondlg[DLGND_MONOCHROME].state &= ~SG_SELECTED;
128: dimensiondlg[DLGND_BOTH].state &= ~SG_SELECTED;
129:
130: switch (ConfigureParams.Screen.nMonitorType) {
131: #if ENABLE_DUAL_SCREEN
132: case MONITOR_TYPE_DUAL:
133: dimensiondlg[DLGND_BOTH].state |= SG_SELECTED;
134: break;
135: #endif
136: case MONITOR_TYPE_CPU:
137: dimensiondlg[DLGND_MONOCHROME].state |= SG_SELECTED;
138: break;
139: case MONITOR_TYPE_DIMENSION:
140: dimensiondlg[DLGND_COLOR].state |= SG_SELECTED;
141: break;
142:
143: default:
144: break;
145: }
146:
147: File_ShrinkName(dlgname_ndrom, ConfigureParams.Dimension.szRomFileName,
148: dimensiondlg[DLGND_NAME].w);
149: dimensiondlg[DLGND_NAME].txt = dlgname_ndrom;
150:
151: /* System overview */
152: print_nd_overview();
153:
154:
155: /* Draw and process the dialog: */
156:
157: do
158: {
159: but = SDLGui_DoDialog(dimensiondlg, NULL);
160:
161: switch (but) {
162: case DLGND_BROWSE:
163: SDLGui_FileConfSelect(dlgname_ndrom,
164: ConfigureParams.Dimension.szRomFileName,
165: dimensiondlg[DLGND_NAME].w,
166: false);
167: break;
168:
169: case DLGND_CUSTOMIZE:
170: Dialog_NDMemDlg(ConfigureParams.Dimension.nMemoryBankSize);
171: print_nd_overview();
172: break;
173:
174: default:
175: break;
176: }
177: }
178: while (but != DLGND_EXIT && but != SDLGUI_QUIT
179: && but != SDLGUI_ERROR && !bQuitProgram);
180:
181: /* Read values from dialog */
182: ConfigureParams.Dimension.bEnabled = (dimensiondlg[DLGND_ENABLE].state&SG_SELECTED)?true:false;
183: if (ConfigureParams.Dimension.bEnabled) {
184: ConfigureParams.System.bNBIC = true;
185: }
186:
187: if (dimensiondlg[DLGND_COLOR].state&SG_SELECTED) {
188: ConfigureParams.Screen.nMonitorType = MONITOR_TYPE_DIMENSION;
189: #if ENABLE_DUAL_SCREEN
190: } else if (dimensiondlg[DLGND_BOTH].state&SG_SELECTED) {
191: ConfigureParams.Screen.nMonitorType = MONITOR_TYPE_DUAL;
192: #endif
193: } else {
194: ConfigureParams.Screen.nMonitorType = MONITOR_TYPE_CPU;
195: }
196: }
197:
198:
199: #define DLGNDMEM_BANK0_4MB 4
200: #define DLGNDMEM_BANK0_16MB 5
201: #define DLGNDMEM_BANK0_NONE 6
202:
203: #define DLGNDMEM_BANK1_4MB 9
204: #define DLGNDMEM_BANK1_16MB 10
205: #define DLGNDMEM_BANK1_NONE 11
206:
207: #define DLGNDMEM_BANK2_4MB 14
208: #define DLGNDMEM_BANK2_16MB 15
209: #define DLGNDMEM_BANK2_NONE 16
210:
211: #define DLGNDMEM_BANK3_4MB 19
212: #define DLGNDMEM_BANK3_16MB 20
213: #define DLGNDMEM_BANK3_NONE 21
214:
215: #define DLGNDMEM_DEFAULT 23
216: #define DLGNDMEM_EXIT 24
217:
218:
219: void Dialog_NDMemDraw(int *memorybank);
220: void Dialog_NDMemRead(int *memorybank);
221:
222: static SGOBJ ndmemdlg[] =
223: {
224: { SGBOX, 0, 0, 0,0, 55,18, NULL },
225: { SGTEXT, 0, 0, 18,1, 19,1, "Custom memory setup" },
226:
227: { SGBOX, 0, 0, 2,4, 12,7, NULL },
228: { SGTEXT, 0, 0, 3,5, 14,1, "Bank0" },
229: { SGRADIOBUT, 0, 0, 4,7, 6,1, "4 MB" },
230: { SGRADIOBUT, 0, 0, 4,8, 7,1, "16 MB" },
231: { SGRADIOBUT, 0, 0, 4,9, 6,1, "none" },
232:
233: { SGBOX, 0, 0, 15,4, 12,7, NULL },
234: { SGTEXT, 0, 0, 16,5, 14,1, "Bank1" },
235: { SGRADIOBUT, 0, 0, 17,7, 6,1, "4 MB" },
236: { SGRADIOBUT, 0, 0, 17,8, 7,1, "16 MB" },
237: { SGRADIOBUT, 0, 0, 17,9, 6,1, "none" },
238:
239: { SGBOX, 0, 0, 28,4, 12,7, NULL },
240: { SGTEXT, 0, 0, 29,5, 14,1, "Bank2" },
241: { SGRADIOBUT, 0, 0, 30,7, 6,1, "4 MB" },
242: { SGRADIOBUT, 0, 0, 30,8, 7,1, "16 MB" },
243: { SGRADIOBUT, 0, 0, 30,9, 6,1, "none" },
244:
245: { SGBOX, 0, 0, 41,4, 12,7, NULL },
246: { SGTEXT, 0, 0, 42,5, 14,1, "Bank3" },
247: { SGRADIOBUT, 0, 0, 43,7, 6,1, "4 MB" },
248: { SGRADIOBUT, 0, 0, 43,8, 7,1, "16 MB" },
249: { SGRADIOBUT, 0, 0, 43,9, 6,1, "none" },
250:
251: { SGTEXT, 0, 0, 5,12, 14,1, "Bank0 must contain at least 4 MB of memory." },
252:
253: { SGBUTTON, 0, 0, 15,15, 10,1, "Defaults" },
254: { SGBUTTON, SG_DEFAULT, 0, 30,15, 10,1, "OK" },
255: { -1, 0, 0, 0,0, 0,0, NULL }
256: };
257:
258:
259:
260: /*-----------------------------------------------------------------------*/
261: /**
262: * Show and process the "Memory Advanced" dialog.
263: */
264: void Dialog_NDMemDlg(int *membank) {
265:
266: int but;
267:
268: SDLGui_CenterDlg(ndmemdlg);
269:
270: /* Set up dialog from actual values: */
271: Dialog_NDMemDraw(membank);
272:
273: /* Draw and process the dialog: */
274: do
275: {
276: but = SDLGui_DoDialog(ndmemdlg, NULL);
277:
278: switch (but) {
279: case DLGNDMEM_DEFAULT:
280: membank[0] = membank[1] = membank[2] = membank[3] = 4;
281: Configuration_CheckDimensionMemory(membank);
282: Dialog_NDMemDraw(membank);
283: break;
284: default:
285: break;
286: }
287: }
288: while (but != DLGNDMEM_EXIT && but != SDLGUI_QUIT
289: && but != SDLGUI_ERROR && !bQuitProgram);
290:
291:
292: /* Read values from dialog: */
293: Dialog_NDMemRead(membank);
294: }
295:
296:
297: /* Function to set up the dialog from the actual values */
298: void Dialog_NDMemDraw(int *bank) {
299: int i, j;
300: for (i = 0; i<4; i++) {
301:
302: for (j = (DLGNDMEM_BANK0_4MB+(5*i)); j <= (DLGNDMEM_BANK0_NONE+(5*i)); j++)
303: {
304: ndmemdlg[j].state &= ~SG_SELECTED;
305: }
306:
307: switch (bank[i])
308: {
309: case 0:
310: ndmemdlg[DLGNDMEM_BANK0_NONE+(i*5)].state |= SG_SELECTED;
311: break;
312: case 4:
313: ndmemdlg[DLGNDMEM_BANK0_4MB+(i*5)].state |= SG_SELECTED;
314: break;
315: case 16:
316: ndmemdlg[DLGNDMEM_BANK0_16MB+(i*5)].state |= SG_SELECTED;
317: break;
318:
319: default:
320: break;
321: }
322: }
323: }
324:
325:
326: /* Function to read the actual values from the dialog */
327: void Dialog_NDMemRead(int *bank) {
328: int i;
329: for (i = 0; i<4; i++) {
330: if (ndmemdlg[(DLGNDMEM_BANK0_4MB)+(i*5)].state & SG_SELECTED)
331: bank[i] = 4;
332: else if (ndmemdlg[(DLGNDMEM_BANK0_16MB)+(i*5)].state & SG_SELECTED)
333: bank[i] = 16;
334: else
335: bank[i] = 0;
336: }
337: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.