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