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