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