Annotation of previous/src/configuration.c, revision 1.1.1.6

1.1       root        1: /*
                      2:   Hatari - configuration.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:   Configuration File
                      8: 
                      9:   The configuration file is now stored in an ASCII format to allow the user
                     10:   to edit the file manually.
                     11: */
                     12: const char Configuration_fileid[] = "Hatari configuration.c : " __DATE__ " " __TIME__;
                     13: 
1.1.1.4   root       14: #include <SDL_keyboard.h>
1.1       root       15: 
                     16: #include "main.h"
                     17: #include "configuration.h"
                     18: #include "cfgopts.h"
                     19: #include "file.h"
                     20: #include "log.h"
                     21: #include "m68000.h"
                     22: #include "paths.h"
                     23: #include "screen.h"
                     24: #include "video.h"
                     25: 
                     26: CNF_PARAMS ConfigureParams;                 /* List of configuration for the emulator */
                     27: char sConfigFileName[FILENAME_MAX];         /* Stores the name of the configuration file */
                     28: 
                     29: 
                     30: /* Used to load/save logging options */
                     31: static const struct Config_Tag configs_Log[] =
                     32: {
                     33:        { "sLogFileName", String_Tag, ConfigureParams.Log.sLogFileName },
                     34:        { "sTraceFileName", String_Tag, ConfigureParams.Log.sTraceFileName },
                     35:        { "nTextLogLevel", Int_Tag, &ConfigureParams.Log.nTextLogLevel },
                     36:        { "nAlertDlgLogLevel", Int_Tag, &ConfigureParams.Log.nAlertDlgLogLevel },
                     37:        { "bConfirmQuit", Bool_Tag, &ConfigureParams.Log.bConfirmQuit },
                     38:        { NULL , Error_Tag, NULL }
                     39: };
                     40: 
1.1.1.3   root       41: /* Used to load/save configuration dialog options */
                     42: static const struct Config_Tag configs_ConfigDialog[] =
                     43: {
                     44:     { "bShowConfigDialogAtStartup", Bool_Tag, &ConfigureParams.ConfigDialog.bShowConfigDialogAtStartup },
                     45:        { NULL , Error_Tag, NULL }
                     46: };
                     47: 
1.1       root       48: /* Used to load/save debugger options */
                     49: static const struct Config_Tag configs_Debugger[] =
                     50: {
                     51:        { "nNumberBase", Int_Tag, &ConfigureParams.Debugger.nNumberBase },
                     52:        { "nDisasmLines", Int_Tag, &ConfigureParams.Debugger.nDisasmLines },
                     53:        { "nMemdumpLines", Int_Tag, &ConfigureParams.Debugger.nMemdumpLines },
                     54:        { NULL , Error_Tag, NULL }
                     55: };
                     56: 
                     57: /* Used to load/save screen options */
                     58: static const struct Config_Tag configs_Screen[] =
                     59: {
                     60:        { "nMonitorType", Int_Tag, &ConfigureParams.Screen.nMonitorType },
1.1.1.6 ! root       61:     { "nMonitorNum", Int_Tag, &ConfigureParams.Screen.nMonitorNum },
1.1       root       62:        { "bFullScreen", Bool_Tag, &ConfigureParams.Screen.bFullScreen },
                     63:        { "bShowStatusbar", Bool_Tag, &ConfigureParams.Screen.bShowStatusbar },
                     64:        { "bShowDriveLed", Bool_Tag, &ConfigureParams.Screen.bShowDriveLed },
                     65:        { NULL , Error_Tag, NULL }
                     66: };
                     67: 
                     68: /* Used to load/save keyboard options */
                     69: static const struct Config_Tag configs_Keyboard[] =
                     70: {
1.1.1.4   root       71:     { "bSwapCmdAlt", Bool_Tag, &ConfigureParams.Keyboard.bSwapCmdAlt },
1.1       root       72:        { "nKeymapType", Int_Tag, &ConfigureParams.Keyboard.nKeymapType },
                     73:        { "szMappingFileName", String_Tag, ConfigureParams.Keyboard.szMappingFileName },
                     74:        { NULL , Error_Tag, NULL }
                     75: };
                     76: 
1.1.1.4   root       77: /* Used to load/save mouse options */
                     78: static const struct Config_Tag configs_Mouse[] =
                     79: {
                     80:        { "bEnableAutoGrab", Bool_Tag, &ConfigureParams.Mouse.bEnableAutoGrab },
                     81:     { "fLinSpeedNormal", Float_Tag, &ConfigureParams.Mouse.fLinSpeedNormal },
                     82:        { "fLinSpeedLocked", Float_Tag, &ConfigureParams.Mouse.fLinSpeedLocked },
                     83:     { "fExpSpeedNormal", Float_Tag, &ConfigureParams.Mouse.fExpSpeedNormal },
                     84:        { "fExpSpeedLocked", Float_Tag, &ConfigureParams.Mouse.fExpSpeedLocked },
                     85:        { NULL , Error_Tag, NULL }
                     86: };
                     87: 
1.1       root       88: /* Used to load/save shortcut key bindings with modifiers options */
                     89: static const struct Config_Tag configs_ShortCutWithMod[] =
                     90: {
1.1.1.5   root       91:        { "keyOptions",     Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_OPTIONS] },
                     92:        { "keyFullScreen",  Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_FULLSCREEN] },
                     93:        { "keyMouseMode",   Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_MOUSEGRAB] },
                     94:        { "keyColdReset",   Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_COLDRESET] },
                     95:        { "keyWarmReset",   Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_WARMRESET] },
                     96:        { "keyCursorEmu",   Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_CURSOREMU] },
                     97:        { "keySound",       Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_SOUND] },
                     98:        { "keyPause",       Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_PAUSE] },
                     99:        { "keyDebuggerM68K",Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_DEBUG_M68K] },
                    100:     { "keyDebuggerI860",Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_DEBUG_I860] },
                    101:        { "keyQuit",        Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_QUIT] },
                    102:        { "keyDimension",   Int_Tag, &ConfigureParams.Shortcut.withModifier[SHORTCUT_DIMENSION] },
1.1       root      103:        { NULL , Error_Tag, NULL }
                    104: };
                    105: 
                    106: /* Used to load/save shortcut key bindings without modifiers options */
                    107: static const struct Config_Tag configs_ShortCutWithoutMod[] =
                    108: {
1.1.1.5   root      109:        { "keyOptions",     Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_OPTIONS] },
                    110:        { "keyFullScreen",  Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_FULLSCREEN] },
                    111:        { "keyMouseMode",   Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_MOUSEGRAB] },
                    112:        { "keyColdReset",   Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_COLDRESET] },
                    113:        { "keyWarmReset",   Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_WARMRESET] },
                    114:        { "keyCursorEmu",   Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_CURSOREMU] },
                    115:        { "keySound",       Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_SOUND] },
                    116:        { "keyPause",       Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_PAUSE] },
                    117:        { "keyDebuggerM68K",Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_DEBUG_M68K] },
                    118:     { "keyDebuggerI860",Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_DEBUG_I860] },
                    119:        { "keyQuit",        Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_QUIT] },
                    120:        { "keyDimension",   Int_Tag, &ConfigureParams.Shortcut.withoutModifier[SHORTCUT_DIMENSION] },
1.1       root      121:        { NULL , Error_Tag, NULL }
                    122: };
                    123: 
                    124: 
                    125: /* Used to load/save sound options */
                    126: static const struct Config_Tag configs_Sound[] =
                    127: {
1.1.1.2   root      128:     { "bEnableMicrophone", Bool_Tag, &ConfigureParams.Sound.bEnableMicrophone },
                    129:        { "bEnableSound", Bool_Tag, &ConfigureParams.Sound.bEnableSound },
1.1       root      130:        { NULL , Error_Tag, NULL }
                    131: };
                    132: 
                    133: /* Used to load/save memory options */
                    134: static const struct Config_Tag configs_Memory[] =
                    135: {
1.1.1.3   root      136:        { "nMemoryBankSize0", Int_Tag, &ConfigureParams.Memory.nMemoryBankSize[0] },
                    137:     { "nMemoryBankSize1", Int_Tag, &ConfigureParams.Memory.nMemoryBankSize[1] },
                    138:        { "nMemoryBankSize2", Int_Tag, &ConfigureParams.Memory.nMemoryBankSize[2] },
                    139:        { "nMemoryBankSize3", Int_Tag, &ConfigureParams.Memory.nMemoryBankSize[3] },
                    140:     { "nMemorySpeed", Int_Tag, &ConfigureParams.Memory.nMemorySpeed },
1.1       root      141:        { NULL , Error_Tag, NULL }
                    142: };
                    143: 
1.1.1.3   root      144: /* Used to load/save boot options */
                    145: static const struct Config_Tag configs_Boot[] =
1.1       root      146: {
1.1.1.3   root      147:        { "nBootDevice", Int_Tag, &ConfigureParams.Boot.nBootDevice },
                    148:        { "bEnableDRAMTest", Bool_Tag, &ConfigureParams.Boot.bEnableDRAMTest },
                    149:        { "bEnablePot", Bool_Tag, &ConfigureParams.Boot.bEnablePot },
                    150:        { "bEnableSoundTest", Bool_Tag, &ConfigureParams.Boot.bEnableSoundTest },
                    151:        { "bEnableSCSITest", Bool_Tag, &ConfigureParams.Boot.bEnableSCSITest },
                    152:     { "bLoopPot", Bool_Tag, &ConfigureParams.Boot.bLoopPot },
                    153:        { "bVerbose", Bool_Tag, &ConfigureParams.Boot.bVerbose },
                    154:     { "bExtendedPot", Bool_Tag, &ConfigureParams.Boot.bExtendedPot },
                    155:        { NULL , Error_Tag, NULL }
                    156: };
                    157: 
                    158: /* Used to load/save SCSI options */
                    159: static const struct Config_Tag configs_SCSI[] =
                    160: {
                    161:     { "szImageName0", String_Tag, ConfigureParams.SCSI.target[0].szImageName },
1.1.1.4   root      162:     { "nDeviceType0", Int_Tag, &ConfigureParams.SCSI.target[0].nDeviceType },
                    163:     { "bDiskInserted0", Bool_Tag, &ConfigureParams.SCSI.target[0].bDiskInserted },
                    164:     { "bWriteProtected0", Bool_Tag, &ConfigureParams.SCSI.target[0].bWriteProtected },
1.1.1.3   root      165:     
                    166:     { "szImageName1", String_Tag, ConfigureParams.SCSI.target[1].szImageName },
1.1.1.4   root      167:     { "nDeviceType1", Int_Tag, &ConfigureParams.SCSI.target[1].nDeviceType },
                    168:     { "bDiskInserted1", Bool_Tag, &ConfigureParams.SCSI.target[1].bDiskInserted },
                    169:     { "bWriteProtected1", Bool_Tag, &ConfigureParams.SCSI.target[1].bWriteProtected },
1.1.1.3   root      170: 
                    171:     { "szImageName2", String_Tag, ConfigureParams.SCSI.target[2].szImageName },
1.1.1.4   root      172:     { "nDeviceType2", Int_Tag, &ConfigureParams.SCSI.target[2].nDeviceType },
                    173:     { "bDiskInserted2", Bool_Tag, &ConfigureParams.SCSI.target[2].bDiskInserted },
                    174:     { "bWriteProtected2", Bool_Tag, &ConfigureParams.SCSI.target[2].bWriteProtected },
1.1.1.3   root      175: 
                    176:     { "szImageName3", String_Tag, ConfigureParams.SCSI.target[3].szImageName },
1.1.1.4   root      177:     { "nDeviceType3", Int_Tag, &ConfigureParams.SCSI.target[3].nDeviceType },
                    178:     { "bDiskInserted3", Bool_Tag, &ConfigureParams.SCSI.target[3].bDiskInserted },
                    179:     { "bWriteProtected3", Bool_Tag, &ConfigureParams.SCSI.target[3].bWriteProtected },
1.1.1.3   root      180: 
                    181:     { "szImageName4", String_Tag, ConfigureParams.SCSI.target[4].szImageName },
1.1.1.4   root      182:     { "nDeviceType4", Int_Tag, &ConfigureParams.SCSI.target[4].nDeviceType },
                    183:     { "bDiskInserted4", Bool_Tag, &ConfigureParams.SCSI.target[4].bDiskInserted },
                    184:     { "bWriteProtected4", Bool_Tag, &ConfigureParams.SCSI.target[4].bWriteProtected },
1.1.1.3   root      185: 
                    186:     { "szImageName5", String_Tag, ConfigureParams.SCSI.target[5].szImageName },
1.1.1.4   root      187:     { "nDeviceType5", Int_Tag, &ConfigureParams.SCSI.target[5].nDeviceType },
                    188:     { "bDiskInserted5", Bool_Tag, &ConfigureParams.SCSI.target[5].bDiskInserted },
                    189:     { "bWriteProtected5", Bool_Tag, &ConfigureParams.SCSI.target[5].bWriteProtected },
1.1.1.3   root      190: 
                    191:     { "szImageName6", String_Tag, ConfigureParams.SCSI.target[6].szImageName },
1.1.1.4   root      192:     { "nDeviceType6", Int_Tag, &ConfigureParams.SCSI.target[6].nDeviceType },
                    193:     { "bDiskInserted6", Bool_Tag, &ConfigureParams.SCSI.target[6].bDiskInserted },
                    194:     { "bWriteProtected6", Bool_Tag, &ConfigureParams.SCSI.target[6].bWriteProtected },
                    195: 
1.1.1.5   root      196:     { "nWriteProtection", Int_Tag, &ConfigureParams.SCSI.nWriteProtection },
                    197:     
1.1.1.4   root      198:     { NULL , Error_Tag, NULL }
                    199: };
                    200: 
                    201: /* Used to load/save MO options */
                    202: static const struct Config_Tag configs_MO[] =
                    203: {
                    204:     { "szImageName0", String_Tag, ConfigureParams.MO.drive[0].szImageName },
                    205:     { "bDriveConnected0", Bool_Tag, &ConfigureParams.MO.drive[0].bDriveConnected },
                    206:     { "bDiskInserted0", Bool_Tag, &ConfigureParams.MO.drive[0].bDiskInserted },
                    207:     { "bWriteProtected0", Bool_Tag, &ConfigureParams.MO.drive[0].bWriteProtected },
                    208:     
                    209:     { "szImageName1", String_Tag, ConfigureParams.MO.drive[1].szImageName },
                    210:     { "bDriveConnected1", Bool_Tag, &ConfigureParams.MO.drive[1].bDriveConnected },
                    211:     { "bDiskInserted1", Bool_Tag, &ConfigureParams.MO.drive[1].bDiskInserted },
                    212:     { "bWriteProtected1", Bool_Tag, &ConfigureParams.MO.drive[1].bWriteProtected },
1.1.1.3   root      213: 
1.1       root      214:        { NULL , Error_Tag, NULL }
                    215: };
                    216: 
1.1.1.4   root      217: /* Used to load/save floppy options */
                    218: static const struct Config_Tag configs_Floppy[] =
                    219: {
                    220:     { "szImageName0", String_Tag, ConfigureParams.Floppy.drive[0].szImageName },
                    221:     { "bDriveConnected0", Bool_Tag, &ConfigureParams.Floppy.drive[0].bDriveConnected },
                    222:     { "bDiskInserted0", Bool_Tag, &ConfigureParams.Floppy.drive[0].bDiskInserted },
                    223:     { "bWriteProtected0", Bool_Tag, &ConfigureParams.Floppy.drive[0].bWriteProtected },
                    224:     
                    225:     { "szImageName1", String_Tag, ConfigureParams.Floppy.drive[1].szImageName },
                    226:     { "bDriveConnected1", Bool_Tag, &ConfigureParams.Floppy.drive[1].bDriveConnected },
                    227:     { "bDiskInserted1", Bool_Tag, &ConfigureParams.Floppy.drive[1].bDiskInserted },
                    228:     { "bWriteProtected1", Bool_Tag, &ConfigureParams.Floppy.drive[1].bWriteProtected },
                    229:     
                    230:     { NULL , Error_Tag, NULL }
                    231: };
                    232: 
                    233: /* Used to load/save Ethernet options */
                    234: static const struct Config_Tag configs_Ethernet[] =
                    235: {
                    236:     { "bEthernetConnected", Bool_Tag, &ConfigureParams.Ethernet.bEthernetConnected },
1.1.1.5   root      237:     { "bTwistedPair", Bool_Tag, &ConfigureParams.Ethernet.bTwistedPair },
                    238: 
1.1.1.6 ! root      239:     { "nHostInterface", Int_Tag, &ConfigureParams.Ethernet.nHostInterface },
        !           240:     { "szInterfaceName", String_Tag, ConfigureParams.Ethernet.szInterfaceName },
        !           241: 
1.1.1.4   root      242:     { NULL , Error_Tag, NULL }
                    243: };
                    244: 
1.1       root      245: /* Used to load/save ROM options */
                    246: static const struct Config_Tag configs_Rom[] =
                    247: {
1.1.1.3   root      248:     { "szRom030FileName", String_Tag, ConfigureParams.Rom.szRom030FileName },
                    249:     { "szRom040FileName", String_Tag, ConfigureParams.Rom.szRom040FileName },
                    250:     { "szRomTurboFileName", String_Tag, ConfigureParams.Rom.szRomTurboFileName },
1.1       root      251:        { NULL , Error_Tag, NULL }
                    252: };
                    253: 
                    254: /* Used to load/save printer options */
                    255: static const struct Config_Tag configs_Printer[] =
                    256: {
1.1.1.4   root      257:        { "bPrinterConnected", Bool_Tag, &ConfigureParams.Printer.bPrinterConnected },
                    258:        { "nPaperSize", Int_Tag, &ConfigureParams.Printer.nPaperSize },
1.1       root      259:        { "szPrintToFileName", String_Tag, ConfigureParams.Printer.szPrintToFileName },
                    260:        { NULL , Error_Tag, NULL }
                    261: };
                    262: 
                    263: /* Used to load/save system options */
                    264: static const struct Config_Tag configs_System[] =
                    265: {
1.1.1.3   root      266:     { "nMachineType", Int_Tag, &ConfigureParams.System.nMachineType },
                    267:     { "bColor", Bool_Tag, &ConfigureParams.System.bColor },
                    268:     { "bTurbo", Bool_Tag, &ConfigureParams.System.bTurbo },
1.1.1.4   root      269:     { "bNBIC", Bool_Tag, &ConfigureParams.System.bNBIC },
1.1.1.3   root      270:     { "nSCSI", Bool_Tag, &ConfigureParams.System.nSCSI },
                    271:     { "nRTC", Bool_Tag, &ConfigureParams.System.nRTC },
                    272:     
1.1       root      273:        { "nCpuLevel", Int_Tag, &ConfigureParams.System.nCpuLevel },
                    274:        { "nCpuFreq", Int_Tag, &ConfigureParams.System.nCpuFreq },
                    275:        { "bCompatibleCpu", Bool_Tag, &ConfigureParams.System.bCompatibleCpu },
1.1.1.5   root      276:        { "bRealtime", Bool_Tag, &ConfigureParams.System.bRealtime },
1.1       root      277:        { "nDSPType", Int_Tag, &ConfigureParams.System.nDSPType },
1.1.1.4   root      278:        { "bDSPMemoryExpansion", Bool_Tag, &ConfigureParams.System.bDSPMemoryExpansion },
1.1       root      279:        { "bRealTimeClock", Bool_Tag, &ConfigureParams.System.bRealTimeClock },
1.1.1.2   root      280:     { "n_FPUType", Int_Tag, &ConfigureParams.System.n_FPUType },
                    281:     { "bCompatibleFPU", Bool_Tag, &ConfigureParams.System.bCompatibleFPU },
                    282:     { "bMMU", Bool_Tag, &ConfigureParams.System.bMMU },
                    283:     { NULL , Error_Tag, NULL }
1.1.1.4   root      284: };
                    285: 
                    286: /* Used to load/save nextdimension options */
                    287: static const struct Config_Tag configs_Dimension[] =
                    288: {
1.1.1.6 ! root      289:     { "bI860Thread",       Bool_Tag, &ConfigureParams.Dimension.bI860Thread },
        !           290:     { "bMainDisplay",      Bool_Tag, &ConfigureParams.Dimension.bMainDisplay },
        !           291:     { "nMainDisplay",      Int_Tag,  &ConfigureParams.Dimension.nMainDisplay },
        !           292: 
        !           293:     { "bEnabled0",         Bool_Tag, &ConfigureParams.Dimension.board[0].bEnabled },
        !           294:     { "nMemoryBankSize00", Int_Tag,  &ConfigureParams.Dimension.board[0].nMemoryBankSize[0] },
        !           295:     { "nMemoryBankSize01", Int_Tag,  &ConfigureParams.Dimension.board[0].nMemoryBankSize[1] },
        !           296:     { "nMemoryBankSize02", Int_Tag,  &ConfigureParams.Dimension.board[0].nMemoryBankSize[2] },
        !           297:     { "nMemoryBankSize03", Int_Tag,  &ConfigureParams.Dimension.board[0].nMemoryBankSize[3] },
        !           298:     { "szRomFileName0", String_Tag,  ConfigureParams.Dimension.board[0].szRomFileName },
        !           299:     
        !           300:     { "bEnabled1",         Bool_Tag, &ConfigureParams.Dimension.board[1].bEnabled },
        !           301:     { "nMemoryBankSize10", Int_Tag,  &ConfigureParams.Dimension.board[1].nMemoryBankSize[0] },
        !           302:     { "nMemoryBankSize11", Int_Tag,  &ConfigureParams.Dimension.board[1].nMemoryBankSize[1] },
        !           303:     { "nMemoryBankSize12", Int_Tag,  &ConfigureParams.Dimension.board[1].nMemoryBankSize[2] },
        !           304:     { "nMemoryBankSize13", Int_Tag,  &ConfigureParams.Dimension.board[1].nMemoryBankSize[3] },
        !           305:     { "szRomFileName1", String_Tag,  ConfigureParams.Dimension.board[1].szRomFileName },
        !           306: 
        !           307:     { "bEnabled2",         Bool_Tag, &ConfigureParams.Dimension.board[2].bEnabled },
        !           308:     { "nMemoryBankSize20", Int_Tag,  &ConfigureParams.Dimension.board[2].nMemoryBankSize[0] },
        !           309:     { "nMemoryBankSize21", Int_Tag,  &ConfigureParams.Dimension.board[2].nMemoryBankSize[1] },
        !           310:     { "nMemoryBankSize22", Int_Tag,  &ConfigureParams.Dimension.board[2].nMemoryBankSize[2] },
        !           311:     { "nMemoryBankSize23", Int_Tag,  &ConfigureParams.Dimension.board[2].nMemoryBankSize[3] },
        !           312:     { "szRomFileName2", String_Tag,  ConfigureParams.Dimension.board[2].szRomFileName },
        !           313: 
1.1.1.4   root      314:     { NULL , Error_Tag, NULL }
                    315: };
1.1.1.2   root      316: 
1.1       root      317: /*-----------------------------------------------------------------------*/
                    318: /**
                    319:  * Set default configuration values.
                    320:  */
                    321: void Configuration_SetDefault(void)
                    322: {
                    323:        int i;
                    324:        const char *psHomeDir;
                    325:        const char *psWorkingDir;
                    326: 
                    327:        psHomeDir = Paths_GetHatariHome();
                    328:        psWorkingDir = Paths_GetWorkingDir();
                    329: 
                    330:        /* Clear parameters */
                    331:        memset(&ConfigureParams, 0, sizeof(CNF_PARAMS));
                    332: 
1.1.1.3   root      333: 
1.1       root      334:        /* Set defaults for logging and tracing */
                    335:        strcpy(ConfigureParams.Log.sLogFileName, "stderr");
                    336:        strcpy(ConfigureParams.Log.sTraceFileName, "stderr");
                    337:        ConfigureParams.Log.nTextLogLevel = LOG_TODO;
                    338:        ConfigureParams.Log.nAlertDlgLogLevel = LOG_ERROR;
                    339:        ConfigureParams.Log.bConfirmQuit = true;
1.1.1.3   root      340:     
                    341:     /* Set defaults for config dialog */
                    342:        ConfigureParams.ConfigDialog.bShowConfigDialogAtStartup = true;
1.1       root      343: 
                    344:        /* Set defaults for debugger */
                    345:        ConfigureParams.Debugger.nNumberBase = 10;
                    346:        ConfigureParams.Debugger.nDisasmLines = 8;
                    347:        ConfigureParams.Debugger.nMemdumpLines = 8;
                    348: 
1.1.1.3   root      349:     /* Set defaults for Boot options */
                    350:     ConfigureParams.Boot.nBootDevice = BOOT_ROM;
                    351:     ConfigureParams.Boot.bEnableDRAMTest = false;
                    352:     ConfigureParams.Boot.bEnablePot = true;
                    353:     ConfigureParams.Boot.bEnableSoundTest = true;
                    354:     ConfigureParams.Boot.bEnableSCSITest = true;
                    355:     ConfigureParams.Boot.bLoopPot = false;
                    356:     ConfigureParams.Boot.bVerbose = true;
                    357:     ConfigureParams.Boot.bExtendedPot = false;
                    358:     
                    359:        /* Set defaults for SCSI disks */
1.1.1.4   root      360:     for (i = 0; i < ESP_MAX_DEVS; i++) {
                    361:         strcpy(ConfigureParams.SCSI.target[i].szImageName, psWorkingDir);
                    362:         ConfigureParams.SCSI.target[i].nDeviceType = DEVTYPE_NONE;
                    363:         ConfigureParams.SCSI.target[i].bDiskInserted = false;
                    364:         ConfigureParams.SCSI.target[i].bWriteProtected = false;
1.1.1.3   root      365:     }
1.1.1.5   root      366:     ConfigureParams.SCSI.nWriteProtection = WRITEPROT_OFF;
1.1.1.3   root      367:     
1.1.1.4   root      368:     /* Set defaults for MO drives */
                    369:     for (i = 0; i < MO_MAX_DRIVES; i++) {
                    370:         strcpy(ConfigureParams.MO.drive[i].szImageName, psWorkingDir);
                    371:         ConfigureParams.MO.drive[i].bDriveConnected = false;
                    372:         ConfigureParams.MO.drive[i].bDiskInserted = false;
                    373:         ConfigureParams.MO.drive[i].bWriteProtected = false;
                    374:     }
                    375:     
                    376:     /* Set defaults for floppy drives */
                    377:     for (i = 0; i < FLP_MAX_DRIVES; i++) {
                    378:         strcpy(ConfigureParams.Floppy.drive[i].szImageName, psWorkingDir);
                    379:         ConfigureParams.Floppy.drive[i].bDriveConnected = false;
                    380:         ConfigureParams.Floppy.drive[i].bDiskInserted = false;
                    381:         ConfigureParams.Floppy.drive[i].bWriteProtected = false;
                    382:     }
                    383:     
                    384:     /* Set defaults for Ethernet */
                    385:     ConfigureParams.Ethernet.bEthernetConnected = false;
1.1.1.5   root      386:     ConfigureParams.Ethernet.bTwistedPair = false;
1.1.1.6 ! root      387:     ConfigureParams.Ethernet.nHostInterface = ENET_SLIRP;
        !           388:     strcpy(ConfigureParams.Ethernet.szInterfaceName, "");
1.1.1.4   root      389:     
1.1       root      390:        /* Set defaults for Keyboard */
1.1.1.4   root      391:     ConfigureParams.Keyboard.bSwapCmdAlt = false;
                    392:        ConfigureParams.Keyboard.nKeymapType = KEYMAP_SCANCODE;
1.1       root      393:        strcpy(ConfigureParams.Keyboard.szMappingFileName, "");
1.1.1.4   root      394: 
                    395:     /* Set defaults for Mouse */
                    396:     ConfigureParams.Mouse.fLinSpeedNormal = 1.0;
                    397:     ConfigureParams.Mouse.fLinSpeedLocked = 1.0;
                    398:     ConfigureParams.Mouse.fExpSpeedNormal = 1.0;
                    399:     ConfigureParams.Mouse.fExpSpeedLocked = 1.0;
                    400:     ConfigureParams.Mouse.bEnableAutoGrab = true;
                    401: 
1.1       root      402:        /* Set defaults for Shortcuts */
1.1.1.5   root      403:        ConfigureParams.Shortcut.withoutModifier[SHORTCUT_OPTIONS]    = SDLK_F12;
1.1       root      404:        ConfigureParams.Shortcut.withoutModifier[SHORTCUT_FULLSCREEN] = SDLK_F11;
1.1.1.2   root      405:     
1.1.1.5   root      406:        ConfigureParams.Shortcut.withModifier[SHORTCUT_PAUSE]         = SDLK_p;
                    407:        ConfigureParams.Shortcut.withModifier[SHORTCUT_DEBUG_M68K]    = SDLK_d;
                    408:     ConfigureParams.Shortcut.withModifier[SHORTCUT_DEBUG_I860]    = SDLK_i;
                    409:     
                    410:        ConfigureParams.Shortcut.withModifier[SHORTCUT_OPTIONS]       = SDLK_o;
                    411:        ConfigureParams.Shortcut.withModifier[SHORTCUT_FULLSCREEN]    = SDLK_f;
                    412:        ConfigureParams.Shortcut.withModifier[SHORTCUT_MOUSEGRAB]     = SDLK_m;
                    413:        ConfigureParams.Shortcut.withModifier[SHORTCUT_COLDRESET]     = SDLK_c;
                    414:        ConfigureParams.Shortcut.withModifier[SHORTCUT_WARMRESET]     = SDLK_r;
                    415:        ConfigureParams.Shortcut.withModifier[SHORTCUT_CURSOREMU]     = SDLK_j;
                    416:        ConfigureParams.Shortcut.withModifier[SHORTCUT_SOUND]         = SDLK_s;
                    417:        ConfigureParams.Shortcut.withModifier[SHORTCUT_QUIT]          = SDLK_q;
                    418:        ConfigureParams.Shortcut.withModifier[SHORTCUT_DIMENSION]     = SDLK_n;
1.1       root      419: 
                    420:        /* Set defaults for Memory */
1.1.1.3   root      421:        memset(ConfigureParams.Memory.nMemoryBankSize, 16, 
                    422:            sizeof(ConfigureParams.Memory.nMemoryBankSize)); /* 64 MiB */
                    423:     ConfigureParams.Memory.nMemorySpeed = MEMORY_100NS;
1.1       root      424: 
                    425:        /* Set defaults for Printer */
1.1.1.4   root      426:        ConfigureParams.Printer.bPrinterConnected = false;
                    427:        ConfigureParams.Printer.nPaperSize = PAPER_A4;
                    428:        sprintf(ConfigureParams.Printer.szPrintToFileName, "%s%c",
1.1       root      429:                psHomeDir, PATHSEP);
                    430: 
                    431:        /* Set defaults for Screen */
                    432:        ConfigureParams.Screen.bFullScreen = false;
1.1.1.4   root      433:        ConfigureParams.Screen.nMonitorType = MONITOR_TYPE_CPU;
1.1.1.6 ! root      434:     ConfigureParams.Screen.nMonitorNum = 0;
1.1       root      435:        ConfigureParams.Screen.bShowStatusbar = true;
                    436:        ConfigureParams.Screen.bShowDriveLed = true;
                    437: 
                    438:        /* Set defaults for Sound */
1.1.1.2   root      439:     ConfigureParams.Sound.bEnableMicrophone = true;
1.1       root      440:        ConfigureParams.Sound.bEnableSound = true;
                    441: 
                    442:        /* Set defaults for Rom */
1.1.1.3   root      443:     sprintf(ConfigureParams.Rom.szRom030FileName, "%s%cRev_1.0_v41.BIN",
                    444:             Paths_GetWorkingDir(), PATHSEP);
                    445:     sprintf(ConfigureParams.Rom.szRom040FileName, "%s%cRev_2.5_v66.BIN",
                    446:             Paths_GetWorkingDir(), PATHSEP);
                    447:     sprintf(ConfigureParams.Rom.szRomTurboFileName, "%s%cRev_3.3_v74.BIN",
                    448:             Paths_GetWorkingDir(), PATHSEP);
                    449: 
1.1       root      450: 
                    451:        /* Set defaults for System */
1.1.1.3   root      452:     ConfigureParams.System.nMachineType = NEXT_CUBE030;
                    453:     ConfigureParams.System.bColor = false;
                    454:     ConfigureParams.System.bTurbo = false;
1.1.1.4   root      455:     ConfigureParams.System.bNBIC = true;
1.1.1.3   root      456:     ConfigureParams.System.nSCSI = NCR53C90;
                    457:     ConfigureParams.System.nRTC = MC68HC68T1;
                    458:     
                    459:        ConfigureParams.System.nCpuLevel = 3;
                    460:        ConfigureParams.System.nCpuFreq = 25;
1.1       root      461:        ConfigureParams.System.bCompatibleCpu = true;
1.1.1.5   root      462:        ConfigureParams.System.bRealtime = false;
1.1.1.4   root      463:        ConfigureParams.System.nDSPType = DSP_TYPE_EMU;
                    464:        ConfigureParams.System.bDSPMemoryExpansion = false;
1.1       root      465:        ConfigureParams.System.bRealTimeClock = true;
1.1.1.3   root      466:     ConfigureParams.System.n_FPUType = FPU_68882;
1.1.1.2   root      467:     ConfigureParams.System.bCompatibleFPU = true;
                    468:     ConfigureParams.System.bMMU = true;
1.1.1.4   root      469:     
                    470:     /* Set defaults for Dimension */
1.1.1.6 ! root      471:     ConfigureParams.Dimension.bI860Thread  = host_num_cpus() != 1;
        !           472:     ConfigureParams.Dimension.bMainDisplay = false;
        !           473:     ConfigureParams.Dimension.nMainDisplay = 0;
        !           474:     for (i = 0; i < ND_MAX_BOARDS; i++) {
        !           475:         ConfigureParams.Dimension.board[i].bEnabled           = false;
        !           476:         ConfigureParams.Dimension.board[i].nMemoryBankSize[0] = 4;
        !           477:         ConfigureParams.Dimension.board[i].nMemoryBankSize[1] = 4;
        !           478:         ConfigureParams.Dimension.board[i].nMemoryBankSize[2] = 4;
        !           479:         ConfigureParams.Dimension.board[i].nMemoryBankSize[3] = 4;
        !           480:         sprintf(ConfigureParams.Dimension.board[i].szRomFileName, "%s%cdimension_eeprom.bin",
        !           481:                 Paths_GetWorkingDir(), PATHSEP);
        !           482:     }
1.1.1.2   root      483: 
1.1       root      484:        /* Initialize the configuration file name */
                    485:        if (strlen(psHomeDir) < sizeof(sConfigFileName)-13)
1.1.1.2   root      486:                sprintf(sConfigFileName, "%s%cprevious.cfg", psHomeDir, PATHSEP);
1.1       root      487:        else
1.1.1.2   root      488:                strcpy(sConfigFileName, "previous.cfg");
1.1       root      489: 
                    490: #if defined(__AMIGAOS4__)
                    491:        /* Fix default path names on Amiga OS */
1.1.1.3   root      492:        sprintf(ConfigureParams.Rom.szRom030FileName, "%sRev_1.0_v41.BIN", Paths_GetWorkingDir());
                    493:     sprintf(ConfigureParams.Rom.szRom040FileName, "%sRev_2.5_v66.BIN", Paths_GetWorkingDir());
                    494:     sprintf(ConfigureParams.Rom.szRom040FileName, "%sRev_3.3_v74.BIN", Paths_GetWorkingDir());
1.1       root      495: #endif
                    496: }
                    497: 
                    498: 
                    499: /*-----------------------------------------------------------------------*/
                    500: /**
1.1.1.4   root      501:  * Helper function for Configuration_Apply, check mouse speed settings
                    502:  * to be in the valid range between minimum and maximum value.
                    503:  */
1.1.1.5   root      504: static void Configuration_CheckFloatMinMax(float *val, float min, float max)
1.1.1.4   root      505: {
                    506:     if (*val<min)
                    507:         *val=min;
                    508:     if (*val>max)
                    509:         *val=max;
                    510: }
                    511: 
                    512: 
                    513: /*-----------------------------------------------------------------------*/
                    514: /**
1.1       root      515:  * Copy details from configuration structure into global variables for system,
                    516:  * clean file names, etc...  Called from main.c and dialog.c files.
                    517:  */
1.1.1.5   root      518: void Configuration_Apply(bool bReset) {
1.1.1.6 ! root      519:     int i;
        !           520: 
1.1.1.4   root      521:     /* Mouse settings */
                    522:     Configuration_CheckFloatMinMax(&ConfigureParams.Mouse.fLinSpeedNormal,MOUSE_LIN_MIN,MOUSE_LIN_MAX);
                    523:     Configuration_CheckFloatMinMax(&ConfigureParams.Mouse.fLinSpeedLocked,MOUSE_LIN_MIN,MOUSE_LIN_MAX);
                    524:     Configuration_CheckFloatMinMax(&ConfigureParams.Mouse.fExpSpeedNormal,MOUSE_EXP_MIN,MOUSE_EXP_MAX);
                    525:     Configuration_CheckFloatMinMax(&ConfigureParams.Mouse.fExpSpeedLocked,MOUSE_EXP_MIN,MOUSE_EXP_MAX);
1.1.1.2   root      526:     
                    527:     /* Check/constrain CPU settings and change corresponding
1.1.1.4   root      528:      * UAE cpu_level & cpu_compatible variables */
1.1.1.2   root      529:     M68000_CheckCpuSettings();
                    530:     
1.1.1.3   root      531:     /* Check memory size for each bank and change to supported values */
                    532:     Configuration_CheckMemory(ConfigureParams.Memory.nMemoryBankSize);
1.1.1.4   root      533:        
                    534:        /* Check nextdimension memory size and screen options */
1.1.1.6 ! root      535:     for (i = 0; i < ND_MAX_BOARDS; i++) {
        !           536:         Configuration_CheckDimensionMemory(ConfigureParams.Dimension.board[i].nMemoryBankSize);
        !           537:     }
1.1.1.4   root      538:        Configuration_CheckDimensionSettings();
1.1.1.5   root      539:     
                    540:     /* Make sure twisted pair ethernet is disabled on 68030 Cube */
                    541:     Configuration_CheckEthernetSettings();
1.1.1.4   root      542:        
1.1.1.3   root      543:        /* Clean file and directory names */    
                    544:     File_MakeAbsoluteName(ConfigureParams.Rom.szRom030FileName);
                    545:     File_MakeAbsoluteName(ConfigureParams.Rom.szRom040FileName);
                    546:     File_MakeAbsoluteName(ConfigureParams.Rom.szRomTurboFileName);
1.1.1.4   root      547:     File_MakeAbsoluteName(ConfigureParams.Printer.szPrintToFileName);
                    548: 
1.1.1.6 ! root      549:     for (i = 0; i < ND_MAX_BOARDS; i++) {
        !           550:         File_MakeAbsoluteName(ConfigureParams.Dimension.board[i].szRomFileName);
        !           551:     }
        !           552:     
1.1.1.4   root      553:     for (i = 0; i < ESP_MAX_DEVS; i++) {
                    554:         File_MakeAbsoluteName(ConfigureParams.SCSI.target[i].szImageName);
                    555:     }
1.1.1.3   root      556:     
1.1.1.4   root      557:     for (i = 0; i < MO_MAX_DRIVES; i++) {
                    558:         File_MakeAbsoluteName(ConfigureParams.MO.drive[i].szImageName);
                    559:     }
                    560:     
                    561:     for (i = 0; i < FLP_MAX_DRIVES; i++) {
                    562:         File_MakeAbsoluteName(ConfigureParams.Floppy.drive[i].szImageName);
1.1.1.3   root      563:     }
                    564:     
1.1       root      565:        /* make path names absolute, but handle special file names */
                    566:        File_MakeAbsoluteSpecialName(ConfigureParams.Log.sLogFileName);
                    567:        File_MakeAbsoluteSpecialName(ConfigureParams.Log.sTraceFileName);
1.1.1.4   root      568: }
                    569: 
                    570: 
                    571: /*-----------------------------------------------------------------------*/
                    572: /**
                    573:  * Set defaults depending on selected machine type.
                    574:  */
                    575: void Configuration_SetSystemDefaults(void) {
1.1.1.5   root      576:     for(int i = 0; i < MO_MAX_DRIVES; i++)
                    577:         if(ConfigureParams.MO.drive[i].bDriveConnected)
                    578:             ConfigureParams.System.bRealtime = false;
                    579:     
1.1.1.4   root      580:     switch (ConfigureParams.System.nMachineType) {
                    581:         case NEXT_CUBE030:
                    582:             ConfigureParams.System.bTurbo = false;
                    583:             ConfigureParams.System.bColor = false;
                    584:             ConfigureParams.System.nCpuLevel = 3;
                    585:             ConfigureParams.System.nCpuFreq = 25;
                    586:             ConfigureParams.System.n_FPUType = FPU_68882;
                    587:             ConfigureParams.System.nDSPType = DSP_TYPE_EMU;
                    588:             ConfigureParams.System.bDSPMemoryExpansion = false;
                    589:             ConfigureParams.System.nSCSI = NCR53C90;
                    590:             ConfigureParams.System.nRTC = MC68HC68T1;
                    591:             ConfigureParams.System.bNBIC = true;
                    592:             break;
                    593:             
                    594:         case NEXT_CUBE040:
                    595:             ConfigureParams.System.bColor = false;
                    596:             ConfigureParams.System.nCpuLevel = 4;
                    597:             if (ConfigureParams.System.bTurbo) {
                    598:                 ConfigureParams.System.nCpuFreq = 33;
                    599:                 ConfigureParams.System.nRTC = MCCS1850;
                    600:             } else {
                    601:                 ConfigureParams.System.nCpuFreq = 25;
                    602:                 ConfigureParams.System.nRTC = MC68HC68T1;
                    603:             }
                    604:             ConfigureParams.System.n_FPUType = FPU_CPU;
                    605:             ConfigureParams.System.nDSPType = DSP_TYPE_EMU;
                    606:             ConfigureParams.System.bDSPMemoryExpansion = true;
                    607:             ConfigureParams.System.nSCSI = NCR53C90A;
                    608:             ConfigureParams.System.bNBIC = true;
                    609:             break;
                    610:             
                    611:         case NEXT_STATION:
                    612:             ConfigureParams.System.nCpuLevel = 4;
                    613:             if (ConfigureParams.System.bTurbo) {
                    614:                 ConfigureParams.System.nCpuFreq = 33;
                    615:                 ConfigureParams.System.nRTC = MCCS1850;
                    616:             } else if (ConfigureParams.System.bColor) {
                    617:                 ConfigureParams.System.nCpuFreq = 25;
                    618:                 ConfigureParams.System.nRTC = MCCS1850;
                    619:             } else {
                    620:                 ConfigureParams.System.nCpuFreq = 25;
                    621:                 ConfigureParams.System.nRTC = MC68HC68T1;
                    622:             }
                    623:             ConfigureParams.System.n_FPUType = FPU_CPU;
                    624:             ConfigureParams.System.nDSPType = DSP_TYPE_EMU;
                    625:             ConfigureParams.System.bDSPMemoryExpansion = true;
                    626:             ConfigureParams.System.nSCSI = NCR53C90A;
                    627:             ConfigureParams.System.bNBIC = false;
                    628:             break;
                    629:         default:
                    630:             break;
                    631:     }
                    632:     
                    633:     if (ConfigureParams.System.bTurbo) {
                    634:         ConfigureParams.Memory.nMemoryBankSize[0] = 32;
                    635:         ConfigureParams.Memory.nMemoryBankSize[1] = 32;
                    636:         ConfigureParams.Memory.nMemoryBankSize[2] = 32;
                    637:         ConfigureParams.Memory.nMemoryBankSize[3] = 32;
                    638:     } else if (ConfigureParams.System.bColor) {
                    639:         ConfigureParams.Memory.nMemoryBankSize[0] = 8;
                    640:         ConfigureParams.Memory.nMemoryBankSize[1] = 8;
                    641:         ConfigureParams.Memory.nMemoryBankSize[2] = 8;
                    642:         ConfigureParams.Memory.nMemoryBankSize[3] = 8;
                    643:     } else {
                    644:         ConfigureParams.Memory.nMemoryBankSize[0] = 16;
                    645:         ConfigureParams.Memory.nMemoryBankSize[1] = 16;
                    646:         ConfigureParams.Memory.nMemoryBankSize[2] = 16;
                    647:         ConfigureParams.Memory.nMemoryBankSize[3] = 16;
                    648:     }
1.1       root      649: }
                    650: 
                    651: 
                    652: /*-----------------------------------------------------------------------*/
                    653: /**
1.1.1.3   root      654:  * Check memory bank sizes for compatibility with the selected system.
                    655:  */
                    656: int Configuration_CheckMemory(int *banksize) {
                    657:     int i;
                    658:     
                    659: #define RESTRICTIVE_MEMCHECK 0
                    660: #if RESTRICTIVE_MEMCHECK
                    661:     /* To boot we need at least 4 MB in bank0 */
                    662:     if (banksize[0]<4) {
                    663:         banksize[0]=4;
                    664:     }
                    665:     
                    666:     /* On monochrome non-Turbo NeXTstations only the first
                    667:      * 2 banks are accessible via memory sockets */
                    668:     if (ConfigureParams.System.nMachineType == NEXT_STATION &&
                    669:         !ConfigureParams.System.bTurbo && !ConfigureParams.System.bColor) {
                    670:         banksize[2]=0;
                    671:         banksize[3]=0;
                    672:     }
                    673: #endif
                    674:     
                    675:     if (ConfigureParams.System.bTurbo) {
                    676:         for (i=0; i<4; i++) {
                    677:             if (banksize[i]<=0)
                    678:                 banksize[i]=0;
                    679:             else if (banksize[i]<=2)
                    680:                 banksize[i]=2;
                    681:             else if (banksize[i]<=8)
                    682:                 banksize[i]=8;
                    683:             else if (banksize[i]<=32)
                    684:                 banksize[i]=32;
                    685:             else
                    686:                 banksize[i]=32;
                    687:         }
                    688:     } else if (ConfigureParams.System.bColor) {
                    689:         for (i=0; i<4; i++) {
                    690:             if (banksize[i]<=0)
                    691:                 banksize[i]=0;
                    692:             else if (banksize[i]<=2)
                    693:                 banksize[i]=2;
                    694:             else if (banksize[i]<=8)
                    695:                 banksize[i]=8;
                    696:             else
                    697:                 banksize[i]=8;
                    698:         }
                    699:     } else {
                    700:         for (i=0; i<4; i++) {
                    701:             if (banksize[i]<=0)
                    702:                 banksize[i]=0;
                    703:             else if (banksize[i]<=1)
                    704:                 banksize[i]=1;
                    705:             else if (banksize[i]<=4)
                    706:                 banksize[i]=4;
                    707:             else if (banksize[i]<=16)
                    708:                 banksize[i]=16;
                    709:             else
                    710:                 banksize[i]=16;
                    711:         }
                    712:     }
                    713:     return (banksize[0]+banksize[1]+banksize[2]+banksize[3]);
                    714: }
                    715: 
1.1.1.4   root      716: int Configuration_CheckDimensionMemory(int *banksize) {
                    717:     int i;
                    718:     
                    719: #if RESTRICTIVE_MEMCHECK
                    720:     /* To boot we need at least 4 MB in bank0 */
                    721:     if (banksize[0]<4) {
                    722:         banksize[0]=4;
                    723:     }
                    724: #endif
                    725:     for (i=0; i<4; i++) {
                    726:         if (banksize[i]<=0)
                    727:             banksize[i]=0;
                    728:         else if (banksize[i]<=4)
                    729:             banksize[i]=4;
                    730:         else if (banksize[i]<=16)
                    731:             banksize[i]=16;
                    732:         else
                    733:             banksize[i]=16;
                    734:     }
                    735:     return (banksize[0]+banksize[1]+banksize[2]+banksize[3]);
                    736: }
                    737: 
                    738: void Configuration_CheckDimensionSettings(void) {
1.1.1.6 ! root      739:     int i;
        !           740:     bool enabled = false;
        !           741:     
        !           742:     for (i = 0; i < ND_MAX_BOARDS; i++) {
        !           743:         if (ConfigureParams.System.nMachineType==NEXT_STATION) {
        !           744:             ConfigureParams.Dimension.board[i].bEnabled = false;
        !           745:         }
        !           746:         if (ConfigureParams.Dimension.board[i].bEnabled) {
        !           747:             enabled = true;
        !           748:         } else if (ConfigureParams.Dimension.bMainDisplay) {
        !           749:             if (ConfigureParams.Dimension.nMainDisplay == i) {
        !           750:                 ConfigureParams.Dimension.bMainDisplay = false;
        !           751:                 ConfigureParams.Screen.nMonitorType = MONITOR_TYPE_CPU;
        !           752:             }
        !           753:         }
        !           754:     }
        !           755:     if (enabled) {
        !           756:         ConfigureParams.System.bNBIC = true;
        !           757:     } else {
        !           758:         ConfigureParams.Screen.nMonitorType = MONITOR_TYPE_CPU;
        !           759:     }
        !           760:     if ((ConfigureParams.Dimension.nMainDisplay >= ND_MAX_BOARDS) ||
        !           761:         (ConfigureParams.Dimension.nMainDisplay < 0)) {
        !           762:         ConfigureParams.Dimension.nMainDisplay = 0;
        !           763:     }
        !           764:     if ((ConfigureParams.Screen.nMonitorNum >= ND_MAX_BOARDS) ||
        !           765:         (ConfigureParams.Screen.nMonitorNum < 0)) {
        !           766:         ConfigureParams.Screen.nMonitorNum = 0;
        !           767:     }
        !           768:     
        !           769:     ConfigureParams.Dimension.bI860Thread = host_num_cpus() != 1;
1.1.1.4   root      770: }
                    771: 
1.1.1.5   root      772: void Configuration_CheckEthernetSettings(void) {
                    773:     if (ConfigureParams.System.nMachineType == NEXT_CUBE030) {
                    774:         ConfigureParams.Ethernet.bTwistedPair = false;
                    775:     }
                    776: }
                    777: 
1.1.1.3   root      778: 
                    779: /*-----------------------------------------------------------------------*/
                    780: /**
1.1       root      781:  * Load a settings section from the configuration file.
                    782:  */
                    783: static int Configuration_LoadSection(const char *pFilename, const struct Config_Tag configs[], const char *pSection)
                    784: {
                    785:        int ret;
                    786: 
                    787:        ret = input_config(pFilename, configs, pSection);
                    788: 
                    789:        if (ret < 0)
                    790:                fprintf(stderr, "Can not load configuration file %s (section %s).\n",
                    791:                        pFilename, pSection);
                    792: 
                    793:        return ret;
                    794: }
                    795: 
                    796: 
                    797: /*-----------------------------------------------------------------------*/
                    798: /**
                    799:  * Load program setting from configuration file. If psFileName is NULL, use
                    800:  * the configuration file given in configuration / last selected by user.
                    801:  */
                    802: void Configuration_Load(const char *psFileName)
                    803: {
                    804:        if (psFileName == NULL)
                    805:                psFileName = sConfigFileName;
                    806: 
                    807:        if (!File_Exists(psFileName))
                    808:        {
1.1.1.2   root      809:                Log_Printf(LOG_DEBUG, "Configuration file %s not found.\n", psFileName);
1.1       root      810:                return;
                    811:        }
                    812: 
                    813:        Configuration_LoadSection(psFileName, configs_Log, "[Log]");
1.1.1.3   root      814:     Configuration_LoadSection(psFileName, configs_ConfigDialog, "[ConfigDialog]");
1.1       root      815:        Configuration_LoadSection(psFileName, configs_Debugger, "[Debugger]");
                    816:        Configuration_LoadSection(psFileName, configs_Screen, "[Screen]");
                    817:        Configuration_LoadSection(psFileName, configs_Keyboard, "[Keyboard]");
                    818:        Configuration_LoadSection(psFileName, configs_ShortCutWithMod, "[ShortcutsWithModifiers]");
                    819:        Configuration_LoadSection(psFileName, configs_ShortCutWithoutMod, "[ShortcutsWithoutModifiers]");
1.1.1.4   root      820:     Configuration_LoadSection(psFileName, configs_Mouse, "[Mouse]");
1.1       root      821:        Configuration_LoadSection(psFileName, configs_Sound, "[Sound]");
                    822:        Configuration_LoadSection(psFileName, configs_Memory, "[Memory]");
1.1.1.3   root      823:     Configuration_LoadSection(psFileName, configs_Boot, "[Boot]");
                    824:        Configuration_LoadSection(psFileName, configs_SCSI, "[HardDisk]");
1.1.1.4   root      825:     Configuration_LoadSection(psFileName, configs_MO, "[MagnetoOptical]");
                    826:     Configuration_LoadSection(psFileName, configs_Floppy, "[Floppy]");
                    827:     Configuration_LoadSection(psFileName, configs_Ethernet, "[Ethernet]");
1.1       root      828:        Configuration_LoadSection(psFileName, configs_Rom, "[ROM]");
                    829:        Configuration_LoadSection(psFileName, configs_Printer, "[Printer]");
                    830:        Configuration_LoadSection(psFileName, configs_System, "[System]");
1.1.1.4   root      831:     Configuration_LoadSection(psFileName, configs_Dimension, "[Dimension]");
1.1       root      832: }
                    833: 
                    834: 
                    835: /*-----------------------------------------------------------------------*/
                    836: /**
                    837:  * Save a settings section to configuration file
                    838:  */
                    839: static int Configuration_SaveSection(const char *pFilename, const struct Config_Tag configs[], const char *pSection)
                    840: {
                    841:        int ret;
                    842: 
                    843:        ret = update_config(pFilename, configs, pSection);
                    844: 
                    845:        if (ret < 0)
                    846:                fprintf(stderr, "Error while updating section %s in %s\n", pSection, pFilename);
                    847: 
                    848:        return ret;
                    849: }
                    850: 
                    851: 
                    852: /*-----------------------------------------------------------------------*/
                    853: /**
                    854:  * Save program setting to configuration file
                    855:  */
                    856: void Configuration_Save(void)
                    857: {
                    858:        if (Configuration_SaveSection(sConfigFileName, configs_Log, "[Log]") < 0)
                    859:        {
                    860:                Log_AlertDlg(LOG_ERROR, "Error saving config file.");
                    861:                return;
                    862:        }
1.1.1.3   root      863:     Configuration_SaveSection(sConfigFileName, configs_ConfigDialog, "[ConfigDialog]");
1.1       root      864:        Configuration_SaveSection(sConfigFileName, configs_Debugger, "[Debugger]");
                    865:        Configuration_SaveSection(sConfigFileName, configs_Screen, "[Screen]");
                    866:        Configuration_SaveSection(sConfigFileName, configs_Keyboard, "[Keyboard]");
                    867:        Configuration_SaveSection(sConfigFileName, configs_ShortCutWithMod, "[ShortcutsWithModifiers]");
                    868:        Configuration_SaveSection(sConfigFileName, configs_ShortCutWithoutMod, "[ShortcutsWithoutModifiers]");
1.1.1.4   root      869:     Configuration_SaveSection(sConfigFileName, configs_Mouse, "[Mouse]");
1.1       root      870:        Configuration_SaveSection(sConfigFileName, configs_Sound, "[Sound]");
                    871:        Configuration_SaveSection(sConfigFileName, configs_Memory, "[Memory]");
1.1.1.3   root      872:     Configuration_SaveSection(sConfigFileName, configs_Boot, "[Boot]");
                    873:        Configuration_SaveSection(sConfigFileName, configs_SCSI, "[HardDisk]");
1.1.1.4   root      874:     Configuration_SaveSection(sConfigFileName, configs_MO, "[MagnetoOptical]");
                    875:     Configuration_SaveSection(sConfigFileName, configs_Floppy, "[Floppy]");
                    876:     Configuration_SaveSection(sConfigFileName, configs_Ethernet, "[Ethernet]");
1.1       root      877:        Configuration_SaveSection(sConfigFileName, configs_Rom, "[ROM]");
                    878:        Configuration_SaveSection(sConfigFileName, configs_Printer, "[Printer]");
                    879:        Configuration_SaveSection(sConfigFileName, configs_System, "[System]");
1.1.1.4   root      880:     Configuration_SaveSection(sConfigFileName, configs_Dimension, "[Dimension]");
1.1       root      881: }
                    882: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.