Annotation of previous_trunk/src/includes/configuration.h, revision 1.1.1.1

1.1       root        1: /*
                      2:   Hatari - configuration.h
                      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: #pragma once
                      9: 
                     10: #ifndef HATARI_CONFIGURATION_H
                     11: #define HATARI_CONFIGURATION_H
                     12: 
                     13: 
                     14: #include <stdio.h>
                     15: 
                     16: #ifdef __cplusplus
                     17: extern "C" {
                     18: #endif /* __cplusplus */
                     19: 
                     20: #define ENABLE_TESTING 0
                     21: 
                     22: /* Configuration Dialog */
                     23: typedef struct
                     24: {
                     25:   bool bShowConfigDialogAtStartup;
                     26: } CNF_CONFIGDLG;
                     27: 
                     28: /* Logging and tracing */
                     29: typedef struct
                     30: {
                     31:   char sLogFileName[FILENAME_MAX];
                     32:   char sTraceFileName[FILENAME_MAX];
                     33:   int nTextLogLevel;
                     34:   int nAlertDlgLogLevel;
                     35:   bool bConfirmQuit;
                     36: } CNF_LOG;
                     37: 
                     38: 
                     39: /* Debugger */
                     40: typedef struct
                     41: {
                     42:   int nNumberBase;
                     43:   int nDisasmLines;
                     44:   int nMemdumpLines;
                     45: } CNF_DEBUGGER;
                     46: 
                     47: 
                     48: /* ROM configuration */
                     49: typedef struct
                     50: {
                     51:     char szRom030FileName[FILENAME_MAX];
                     52:     char szRom040FileName[FILENAME_MAX];
                     53:     char szRomTurboFileName[FILENAME_MAX];
                     54: } CNF_ROM;
                     55: 
                     56: 
                     57: /* Sound configuration */
                     58: typedef struct
                     59: {
                     60:   bool bEnableMicrophone;
                     61:   bool bEnableSound;
                     62: } CNF_SOUND;
                     63: 
                     64: /* Dialog Keyboard */
                     65: typedef enum
                     66: {
                     67:   KEYMAP_SYMBOLIC,  /* Use keymapping with symbolic (ASCII) key codes */
                     68:   KEYMAP_SCANCODE,  /* Use keymapping with PC keyboard scancodes */
                     69:   KEYMAP_LOADED     /* Use keymapping with a map configuration file */
                     70: } KEYMAPTYPE;
                     71: 
                     72: typedef struct
                     73: {
                     74:   bool bSwapCmdAlt;
                     75:   KEYMAPTYPE nKeymapType;
                     76:   char szMappingFileName[FILENAME_MAX];
                     77: } CNF_KEYBOARD;
                     78: 
                     79: 
                     80: typedef enum {
                     81:   SHORTCUT_OPTIONS,
                     82:   SHORTCUT_FULLSCREEN,
                     83:   SHORTCUT_MOUSEGRAB,
                     84:   SHORTCUT_COLDRESET,
                     85:   SHORTCUT_WARMRESET,
                     86:   SHORTCUT_CURSOREMU,
                     87:   SHORTCUT_SOUND,
                     88:   SHORTCUT_DEBUG_M68K,
                     89:   SHORTCUT_DEBUG_I860,
                     90:   SHORTCUT_PAUSE,
                     91:   SHORTCUT_QUIT,
                     92:   SHORTCUT_DIMENSION,
                     93:   SHORTCUT_KEYS,  /* number of shortcuts */
                     94:   SHORTCUT_NONE
                     95: } SHORTCUTKEYIDX;
                     96: 
                     97: typedef struct
                     98: {
                     99:   int withModifier[SHORTCUT_KEYS];
                    100:   int withoutModifier[SHORTCUT_KEYS];
                    101: } CNF_SHORTCUT;
                    102: 
                    103: 
                    104: /* Dialog Mouse */
                    105: #define MOUSE_LIN_MIN   0.1
                    106: #define MOUSE_LIN_MAX   10.0
                    107: #define MOUSE_EXP_MIN   0.5
                    108: #define MOUSE_EXP_MAX   1.0
                    109: typedef struct
                    110: {
                    111:     bool bEnableAutoGrab;
                    112:     float fLinSpeedNormal;
                    113:     float fLinSpeedLocked;
                    114:     float fExpSpeedNormal;
                    115:     float fExpSpeedLocked;
                    116: } CNF_MOUSE;
                    117: 
                    118: 
                    119: /* Memory configuration */
                    120: 
                    121: typedef enum
                    122: {
                    123:   MEMORY_120NS,
                    124:   MEMORY_100NS,
                    125:   MEMORY_80NS,
                    126:   MEMORY_60NS
                    127: } MEMORY_SPEED;
                    128: 
                    129: typedef struct
                    130: {
                    131:   int nMemoryBankSize[4];
                    132:   MEMORY_SPEED nMemorySpeed;
                    133: } CNF_MEMORY;
                    134: 
                    135: 
                    136: /* Dialog Boot options */
                    137: 
                    138: typedef enum
                    139: {
                    140:     BOOT_ROM,
                    141:     BOOT_SCSI,
                    142:     BOOT_ETHERNET,
                    143:     BOOT_MO,
                    144:     BOOT_FLOPPY
                    145: } BOOT_DEVICE;
                    146: 
                    147: typedef struct
                    148: {
                    149:     BOOT_DEVICE nBootDevice;
                    150:     bool bEnableDRAMTest;
                    151:     bool bEnablePot;
                    152:     bool bExtendedPot;
                    153:     bool bEnableSoundTest;
                    154:     bool bEnableSCSITest;
                    155:     bool bLoopPot;
                    156:     bool bVerbose;
                    157: } CNF_BOOT;
                    158: 
                    159: 
                    160: /* Hard drives configuration */
                    161: #define ESP_MAX_DEVS 7
                    162: typedef enum {
                    163:     DEVTYPE_NONE,
                    164:     DEVTYPE_HARDDISK,
                    165:     DEVTYPE_CD,
                    166:     DEVTYPE_FLOPPY,
                    167:     NUM_DEVTYPES
                    168: } SCSI_DEVTYPE;
                    169: 
                    170: typedef struct {
                    171:     char szImageName[FILENAME_MAX];
                    172:     SCSI_DEVTYPE nDeviceType;
                    173:     bool bDiskInserted;
                    174:     bool bWriteProtected;
                    175: } SCSIDISK;
                    176: 
                    177: typedef enum
                    178: {
                    179:     WRITEPROT_OFF,
                    180:     WRITEPROT_ON,
                    181:     WRITEPROT_AUTO
                    182: } WRITEPROTECTION;
                    183: 
                    184: typedef struct {
                    185:     SCSIDISK target[ESP_MAX_DEVS];
                    186:     int nWriteProtection;
                    187: } CNF_SCSI;
                    188: 
                    189: 
                    190: /* Magneto-optical drives configuration */
                    191: #define MO_MAX_DRIVES   2
                    192: typedef struct {
                    193:     char szImageName[FILENAME_MAX];
                    194:     bool bDriveConnected;
                    195:     bool bDiskInserted;
                    196:     bool bWriteProtected;
                    197: } MODISK;
                    198: 
                    199: typedef struct {
                    200:     MODISK drive[MO_MAX_DRIVES];
                    201: } CNF_MO;
                    202: 
                    203: 
                    204: /* Floppy disk drives configuration */
                    205: #define FLP_MAX_DRIVES   2
                    206: typedef struct {
                    207:     char szImageName[FILENAME_MAX];
                    208:     bool bDriveConnected;
                    209:     bool bDiskInserted;
                    210:     bool bWriteProtected;
                    211: } FLPDISK;
                    212: 
                    213: typedef struct {
                    214:     FLPDISK drive[FLP_MAX_DRIVES];
                    215: } CNF_FLOPPY;
                    216: 
                    217: 
                    218: /* Ethernet configuration */
                    219: typedef enum
                    220: {
                    221:     ENET_SLIRP,
                    222:     ENET_PCAP
                    223: } ENET_INTERFACE;
                    224: 
                    225: typedef struct {
                    226:     bool bEthernetConnected;
                    227:     bool bTwistedPair;
                    228:     ENET_INTERFACE nHostInterface;
                    229:     char szInterfaceName[FILENAME_MAX];
                    230: } CNF_ENET;
                    231: 
                    232: typedef enum
                    233: {
                    234:   MONITOR_TYPE_DUAL,
                    235:   MONITOR_TYPE_CPU,
                    236:   MONITOR_TYPE_DIMENSION,
                    237: } MONITORTYPE;
                    238: 
                    239: /* Screen configuration */
                    240: typedef struct
                    241: {
                    242:   MONITORTYPE nMonitorType;
                    243:   int nMonitorNum;
                    244:   bool bFullScreen;
                    245:   bool bShowStatusbar;
                    246:   bool bShowDriveLed;
                    247: } CNF_SCREEN;
                    248: 
                    249: 
                    250: /* Printer configuration */
                    251: typedef enum
                    252: {
                    253:     PAPER_A4,
                    254:     PAPER_LETTER,
                    255:     PAPER_B5,
                    256:     PAPER_LEGAL
                    257: } PAPER_SIZE;
                    258: 
                    259: typedef struct
                    260: {
                    261:   bool bPrinterConnected;
                    262:   PAPER_SIZE nPaperSize;
                    263:   char szPrintToFileName[FILENAME_MAX];
                    264: } CNF_PRINTER;
                    265: 
                    266: /* Dialog System */
                    267: typedef enum
                    268: {
                    269:   NEXT_CUBE030,
                    270:   NEXT_CUBE040,
                    271:   NEXT_STATION
                    272: } MACHINETYPE;
                    273: 
                    274: typedef enum
                    275: {
                    276:   NCR53C90,
                    277:   NCR53C90A
                    278: } SCSICHIP;
                    279: 
                    280: typedef enum
                    281: {
                    282:   MC68HC68T1,
                    283:   MCCS1850
                    284: } RTCCHIP;
                    285: 
                    286: typedef enum
                    287: {
                    288:   DSP_TYPE_NONE,
                    289:   DSP_TYPE_DUMMY,
                    290:   DSP_TYPE_EMU
                    291: } DSPTYPE;
                    292: 
                    293: typedef enum
                    294: {
                    295:   FPU_NONE = 0,
                    296:   FPU_68881 = 68881,
                    297:   FPU_68882 = 68882,
                    298:   FPU_CPU = 68040
                    299: } FPUTYPE;
                    300: 
                    301: typedef struct
                    302: {
                    303:   bool bColor;
                    304:   bool bTurbo;
                    305:   bool bNBIC;
                    306:   SCSICHIP nSCSI;
                    307:   RTCCHIP nRTC;
                    308:   int nCpuLevel;
                    309:   int nCpuFreq;
                    310:   bool bCompatibleCpu;            /* Prefetch mode */
                    311:   MACHINETYPE nMachineType;
                    312:   bool bRealtime;                 /* TRUE if realtime sources shoud be used */
                    313:   DSPTYPE nDSPType;               /* how to "emulate" DSP */
                    314:   bool bDSPMemoryExpansion;
                    315:   bool bRealTimeClock;
                    316:   FPUTYPE n_FPUType;
                    317:   bool bCompatibleFPU;            /* More compatible FPU */
                    318:   bool bMMU;                      /* TRUE if MMU is enabled */
                    319: } CNF_SYSTEM;
                    320: 
                    321: /* Floppy disk drives configuration */
                    322: #define ND_MAX_BOARDS   3
                    323: typedef struct
                    324: {
                    325:     bool bEnabled;
                    326:     int  nMemoryBankSize[4];
                    327:     char szRomFileName[FILENAME_MAX];
                    328: } NDBOARD;
                    329: 
                    330: typedef struct {
                    331:     bool bI860Thread;
                    332:     bool bMainDisplay;
                    333:     int nMainDisplay;
                    334:     NDBOARD board[ND_MAX_BOARDS];
                    335: } CNF_ND;
                    336: 
                    337: /* State of system is stored in this structure */
                    338: /* On reset, variables are copied into system globals and used. */
                    339: typedef struct
                    340: {
                    341:   /* Configure */
                    342:   CNF_CONFIGDLG ConfigDialog;
                    343:   CNF_LOG       Log;
                    344:   CNF_DEBUGGER  Debugger;
                    345:   CNF_SCREEN    Screen;
                    346:   CNF_KEYBOARD  Keyboard;
                    347:   CNF_SHORTCUT  Shortcut;
                    348:   CNF_MOUSE     Mouse;
                    349:   CNF_SOUND     Sound;
                    350:   CNF_MEMORY    Memory;
                    351:   CNF_BOOT      Boot;
                    352:   CNF_SCSI      SCSI;
                    353:   CNF_MO        MO;
                    354:   CNF_FLOPPY    Floppy;
                    355:   CNF_ENET      Ethernet;
                    356:   CNF_ROM       Rom;
                    357:   CNF_PRINTER   Printer;
                    358:   CNF_SYSTEM    System;
                    359:   CNF_ND        Dimension;
                    360: } CNF_PARAMS;
                    361: 
                    362: 
                    363: extern CNF_PARAMS ConfigureParams;
                    364: extern char sConfigFileName[FILENAME_MAX];
                    365: 
                    366: void Configuration_SetDefault(void);
                    367: void Configuration_SetSystemDefaults(void);
                    368: void Configuration_Apply(bool bReset);
                    369: int Configuration_CheckMemory(int *banksize);
                    370: int  Configuration_CheckDimensionMemory(int *banksize);
                    371: void Configuration_CheckDimensionSettings(void);
                    372: void Configuration_CheckEthernetSettings(void);
                    373: void Configuration_Load(const char *psFileName);
                    374: void Configuration_Save(void);
                    375: void Configuration_MemorySnapShot_Capture(bool bSave);
                    376: 
                    377: #ifdef __cplusplus
                    378: }
                    379: #endif /* __cplusplus */
                    380: 
                    381: #endif

unix.superglobalmegacorp.com

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