|
|
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.