| 
														
															@@ -65,31 +65,48 @@ bool scsiDiskOpenHDDImage(int target_idx, const char *filename, int scsi_id, int 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return false; 
														 | 
														
														 | 
														
															     return false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Set target configuration to default values 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+static void scsiDiskConfigDefaults(int target_idx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    image_config_t &img = g_DiskImages[target_idx]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    img.deviceType = S2S_CFG_FIXED; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    img.deviceTypeModifier = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    img.sectorsPerTrack = 63; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    img.headsPerCylinder = 255; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    img.quirks = S2S_CFG_QUIRKS_NONE; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    memcpy(img.vendor, DEFAULT_VENDOR, 8); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    memcpy(img.prodId, DEFAULT_PRODUCT, 16); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    memcpy(img.revision, DEFAULT_VERSION, 4); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    memcpy(img.serial, DEFAULT_SERIAL, 16); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Load values for target configuration from given section if they exist. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Otherwise keep current settings. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 static void scsiDiskLoadConfig(int target_idx, const char *section) 
														 | 
														
														 | 
														
															 static void scsiDiskLoadConfig(int target_idx, const char *section) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     image_config_t &img = g_DiskImages[target_idx]; 
														 | 
														
														 | 
														
															     image_config_t &img = g_DiskImages[target_idx]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    img.deviceType = ini_getl(section, "Type", S2S_CFG_FIXED, CONFIGFILE); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    img.deviceTypeModifier = ini_getl(section, "TypeModifier", 0, CONFIGFILE); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    img.sectorsPerTrack = ini_getl(section, "SectorsPerTrack", 18, CONFIGFILE); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    img.headsPerCylinder = ini_getl(section, "HeadsPerCylinder", 255, CONFIGFILE); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    img.quirks = ini_getl(section, "Quirks", S2S_CFG_QUIRKS_NONE, CONFIGFILE); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    img.deviceType = ini_getl(section, "Type", img.deviceType, CONFIGFILE); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    img.deviceTypeModifier = ini_getl(section, "TypeModifier", img.deviceTypeModifier, CONFIGFILE); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    img.sectorsPerTrack = ini_getl(section, "SectorsPerTrack", img.sectorsPerTrack, CONFIGFILE); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    img.headsPerCylinder = ini_getl(section, "HeadsPerCylinder", img.headsPerCylinder, CONFIGFILE); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    img.quirks = ini_getl(section, "Quirks", img.quirks, CONFIGFILE); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															     char tmp[32]; 
														 | 
														
														 | 
														
															     char tmp[32]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     memset(tmp, 0, sizeof(tmp)); 
														 | 
														
														 | 
														
															     memset(tmp, 0, sizeof(tmp)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    ini_gets(section, "Vendor", DEFAULT_VENDOR, tmp, sizeof(tmp), CONFIGFILE); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    memcpy(img.vendor, tmp, 8); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    ini_gets(section, "Vendor", "", tmp, sizeof(tmp), CONFIGFILE); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (tmp[0]) memcpy(img.vendor, tmp, 8); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     memset(tmp, 0, sizeof(tmp)); 
														 | 
														
														 | 
														
															     memset(tmp, 0, sizeof(tmp)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    ini_gets(section, "Product", DEFAULT_PRODUCT, tmp, sizeof(tmp), CONFIGFILE); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    memcpy(img.prodId, tmp, 16); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    ini_gets(section, "Product", "", tmp, sizeof(tmp), CONFIGFILE); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (tmp[0]) memcpy(img.prodId, tmp, 16); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     memset(tmp, 0, sizeof(tmp)); 
														 | 
														
														 | 
														
															     memset(tmp, 0, sizeof(tmp)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    ini_gets(section, "Version", DEFAULT_VERSION, tmp, sizeof(tmp), CONFIGFILE); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    memcpy(img.revision, tmp, 4); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    ini_gets(section, "Version", "", tmp, sizeof(tmp), CONFIGFILE); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (tmp[0]) memcpy(img.revision, tmp, 4); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      
														 | 
														
														 | 
														
															      
														 | 
													
												
											
												
													
														| 
														 | 
														
															     memset(tmp, 0, sizeof(tmp)); 
														 | 
														
														 | 
														
															     memset(tmp, 0, sizeof(tmp)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    ini_gets(section, "Serial", DEFAULT_SERIAL, tmp, sizeof(tmp), CONFIGFILE); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    memcpy(img.serial, tmp, 16); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    ini_gets(section, "Serial", "", tmp, sizeof(tmp), CONFIGFILE); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (tmp[0]) memcpy(img.serial, tmp, 16); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void scsiDiskLoadConfig(int target_idx) 
														 | 
														
														 | 
														
															 void scsiDiskLoadConfig(int target_idx) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -97,6 +114,9 @@ void scsiDiskLoadConfig(int target_idx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     char section[6] = "SCSI0"; 
														 | 
														
														 | 
														
															     char section[6] = "SCSI0"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     section[4] = '0' + target_idx; 
														 | 
														
														 | 
														
															     section[4] = '0' + target_idx; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    // Set default settings 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    scsiDiskConfigDefaults(target_idx); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     // First load global settings 
														 | 
														
														 | 
														
															     // First load global settings 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     scsiDiskLoadConfig(target_idx, "SCSI"); 
														 | 
														
														 | 
														
															     scsiDiskLoadConfig(target_idx, "SCSI"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -111,7 +131,16 @@ void scsiDiskLoadConfig(int target_idx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 extern "C" 
														 | 
														
														 | 
														
															 extern "C" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void s2s_configInit(S2S_BoardCfg* config) 
														 | 
														
														 | 
														
															 void s2s_configInit(S2S_BoardCfg* config) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    azlog("Reading configuration"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (SD.exists(CONFIGFILE)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        azlog("Reading configuration from " CONFIGFILE); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    else 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        azlog("Config file " CONFIGFILE " not found, using defaults"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    azlog("Active configuration:"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     memset(config, 0, sizeof(S2S_BoardCfg)); 
														 | 
														
														 | 
														
															     memset(config, 0, sizeof(S2S_BoardCfg)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     memcpy(config->magic, "BCFG", 4); 
														 | 
														
														 | 
														
															     memcpy(config->magic, "BCFG", 4); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     config->flags = 0; 
														 | 
														
														 | 
														
															     config->flags = 0; 
														 |