|
|
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.
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:
13: */
14: const char DlgMemoryAdvanced_fileid[] = "Hatari dlgMemoryAdvanced.c : " __DATE__ " " __TIME__;
15:
16: #include "main.h"
17: #include "configuration.h"
18: #include "dialog.h"
19: #include "sdlgui.h"
20:
21:
22: #define DLGMA_BANK0_2MB 4
23: #define DLGMA_BANK0_4MB 5
24: #define DLGMA_BANK0_8MB 6
25: #define DLGMA_BANK0_16MB 7
26: #define DLGMA_BANK0_32MB 8
27: #define DLGMA_BANK0_NONE 9
28:
29: #define DLGMA_BANK1_2MB 12
30: #define DLGMA_BANK1_4MB 13
31: #define DLGMA_BANK1_8MB 14
32: #define DLGMA_BANK1_16MB 15
33: #define DLGMA_BANK1_32MB 16
34: #define DLGMA_BANK1_NONE 17
35:
36: #define DLGMA_BANK2_2MB 20
37: #define DLGMA_BANK2_4MB 21
38: #define DLGMA_BANK2_8MB 22
39: #define DLGMA_BANK2_16MB 23
40: #define DLGMA_BANK2_32MB 24
41: #define DLGMA_BANK2_NONE 25
42:
43: #define DLGMA_BANK3_2MB 28
44: #define DLGMA_BANK3_4MB 29
45: #define DLGMA_BANK3_8MB 30
46: #define DLGMA_BANK3_16MB 31
47: #define DLGMA_BANK3_32MB 32
48: #define DLGMA_BANK3_NONE 33
49:
50: #define DLGMA_CHECK 37
51: #define DLGMA_EXIT 38
52:
53:
54: void Dialog_MemAdvancedDlgDraw(int *memorybank);
55: void Dialog_MemAdvancedDlgRead(int *memorybank);
56:
57: static SGOBJ memoryadvanceddlg[] =
58: {
59: { SGBOX, 0, 0, 0,0, 63,24, NULL },
60: { SGTEXT, 0, 0, 22,1, 14,1, "Custom memory setup" },
61:
62: { SGBOX, 0, 0, 2,4, 14,10, NULL },
63: { SGTEXT, 0, 0, 3,5, 14,1, "Bank0" },
64: { SGRADIOBUT, 0, 0, 4,7, 6,1, "2 MB" },
65: { SGRADIOBUT, 0, 0, 4,8, 6,1, "4 MB" },
66: { SGRADIOBUT, 0, 0, 4,9, 6,1, "8 MB" },
67: { SGRADIOBUT, 0, 0, 4,10, 7,1, "16 MB" },
68: { SGRADIOBUT, 0, 0, 4,11, 7,1, "32 MB" },
69: { SGRADIOBUT, 0, 0, 4,12, 6,1, "none" },
70:
71: { SGBOX, 0, 0, 17,4, 14,10, NULL },
72: { SGTEXT, 0, 0, 18,5, 14,1, "Bank1" },
73: { SGRADIOBUT, 0, 0, 19,7, 6,1, "2 MB" },
74: { SGRADIOBUT, 0, 0, 19,8, 6,1, "4 MB" },
75: { SGRADIOBUT, 0, 0, 19,9, 6,1, "8 MB" },
76: { SGRADIOBUT, 0, 0, 19,10, 7,1, "16 MB" },
77: { SGRADIOBUT, 0, 0, 19,11, 7,1, "32 MB" },
78: { SGRADIOBUT, 0, 0, 19,12, 6,1, "none" },
79:
80: { SGBOX, 0, 0, 32,4, 14,10, NULL },
81: { SGTEXT, 0, 0, 33,5, 14,1, "Bank2" },
82: { SGRADIOBUT, 0, 0, 34,7, 6,1, "2 MB" },
83: { SGRADIOBUT, 0, 0, 34,8, 6,1, "4 MB" },
84: { SGRADIOBUT, 0, 0, 34,9, 6,1, "8 MB" },
85: { SGRADIOBUT, 0, 0, 34,10, 7,1, "16 MB" },
86: { SGRADIOBUT, 0, 0, 34,11, 7,1, "32 MB" },
87: { SGRADIOBUT, 0, 0, 34,12, 6,1, "none" },
88:
89: { SGBOX, 0, 0, 47,4, 14,10, NULL },
90: { SGTEXT, 0, 0, 48,5, 14,1, "Bank3" },
91: { SGRADIOBUT, 0, 0, 49,7, 6,1, "2 MB" },
92: { SGRADIOBUT, 0, 0, 49,8, 6,1, "4 MB" },
93: { SGRADIOBUT, 0, 0, 49,9, 6,1, "8 MB" },
94: { SGRADIOBUT, 0, 0, 49,10, 7,1, "16 MB" },
95: { SGRADIOBUT, 0, 0, 49,11, 7,1, "32 MB" },
96: { SGRADIOBUT, 0, 0, 49,12, 6,1, "none" },
97:
98: { SGTEXT, 0, 0, 3,15, 14,1, "Some values are only valid on certain machines. They will" },
99: { SGTEXT, 0, 0, 3,16, 14,1, "be corrected automatically when leaving this dialog." },
100: { SGTEXT, 0, 0, 3,18, 14,1, "For booting Bank0 must contain at least 4 MB of memory." },
101:
102: { SGBUTTON, 0, 0, 20,21, 9,1, "Check" },
103: { SGBUTTON, SG_DEFAULT, 0, 35,21, 8,1, "OK" },
104: { -1, 0, 0, 0,0, 0,0, NULL }
105: };
106:
107:
108:
109: /*-----------------------------------------------------------------------*/
110: /**
111: * Show and process the "Memory Advanced" dialog.
112: */
113: void Dialog_MemAdvancedDlg(int *membank) {
114:
115: int but;
116:
117: SDLGui_CenterDlg(memoryadvanceddlg);
118:
119: /* Set up dialog from actual values: */
120: Dialog_MemAdvancedDlgDraw(membank);
121:
122: /* Draw and process the dialog: */
123: do
124: {
125: but = SDLGui_DoDialog(memoryadvanceddlg, NULL);
126: printf("Button: %i\n", but);
127: switch (but) {
128: case DLGMA_CHECK:
129: Dialog_MemAdvancedDlgRead(membank);
130: Configuration_CheckMemory(membank);
131: Dialog_MemAdvancedDlgDraw(membank);
132: break;
133: default:
134: break;
135: }
136: }
137: while (but != DLGMA_EXIT && but != SDLGUI_QUIT
138: && but != SDLGUI_ERROR && !bQuitProgram);
139:
140:
141: /* Read values from dialog: */
142: Dialog_MemAdvancedDlgRead(membank);
143: }
144:
145:
146: /* Function to set up the dialog from the actual values */
147: void Dialog_MemAdvancedDlgDraw(int *bank) {
148: int i, j;
149: for (i = 0; i<4; i++) {
150:
151: for (j = (DLGMA_BANK0_2MB+(8*i)); j <= (DLGMA_BANK0_NONE+(8*i)); j++)
152: {
153: memoryadvanceddlg[j].state &= ~SG_SELECTED;
154: }
155:
156: switch (bank[i])
157: {
158: case 0:
159: memoryadvanceddlg[DLGMA_BANK0_NONE+(i*8)].state |= SG_SELECTED;
160: break;
161: case 2:
162: memoryadvanceddlg[DLGMA_BANK0_2MB+(i*8)].state |= SG_SELECTED;
163: break;
164: case 4:
165: memoryadvanceddlg[DLGMA_BANK0_4MB+(i*8)].state |= SG_SELECTED;
166: break;
167: case 8:
168: memoryadvanceddlg[DLGMA_BANK0_8MB+(i*8)].state |= SG_SELECTED;
169: break;
170: case 16:
171: memoryadvanceddlg[DLGMA_BANK0_16MB+(i*8)].state |= SG_SELECTED;
172: break;
173: case 32:
174: memoryadvanceddlg[DLGMA_BANK0_32MB+(i*8)].state |= SG_SELECTED;
175: break;
176:
177: default:
178: break;
179: }
180: }
181: }
182:
183:
184: /* Function to read the actual values from the dialog */
185: void Dialog_MemAdvancedDlgRead(int *bank) {
186: int i;
187: for (i = 0; i<4; i++) {
188: if (memoryadvanceddlg[(DLGMA_BANK0_2MB)+(i*8)].state & SG_SELECTED)
189: bank[i] = 2;
190: else if (memoryadvanceddlg[(DLGMA_BANK0_4MB)+(i*8)].state & SG_SELECTED)
191: bank[i] = 4;
192: else if (memoryadvanceddlg[(DLGMA_BANK0_8MB)+(i*8)].state & SG_SELECTED)
193: bank[i] = 8;
194: else if (memoryadvanceddlg[(DLGMA_BANK0_16MB)+(i*8)].state & SG_SELECTED)
195: bank[i] = 16;
196: else if (memoryadvanceddlg[(DLGMA_BANK0_32MB)+(i*8)].state & SG_SELECTED)
197: bank[i] = 32;
198: else if (memoryadvanceddlg[(DLGMA_BANK0_NONE)+(i*8)].state & SG_SELECTED)
199: bank[i] = 0;
200: }
201: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.