//----------------------------------------------------------------------------- //----1 means positive result, -1 means negative result, 0 means no result int SystemOnTPTP(LISTNODE Axioms,ANNOTATEDFORMULA Conjecture, char * PositiveChecker,char * PositiveResult,int TestNegative, char * NegativeChecker,char * NegativeResult,int TimeLimit, char * SystemOutputPrefix,int KeepOutputFiles,char * FilesDirectory, char * UsersOutputFileName,String OutputFileName) { String ProblemFileName; String CopyUsersOutputFileName; String SystemResult; int Correct; if (!MakeProblemFile(FilesDirectory,UsersOutputFileName,".p", ProblemFileName,Axioms,axiom,Conjecture,conjecture)) { return(0); } //----0 means no result yet Correct = 0; //----Need to make a copy in case the same variable is used //----Set to empty if nothing given, to cause use of mktemp if (UsersOutputFileName == NULL) { strcpy(CopyUsersOutputFileName,""); } else { strcpy(CopyUsersOutputFileName,UsersOutputFileName); } if (Correct == 0) { if (SystemOnTPTPGetResult(0,ProblemFileName,PositiveChecker,TimeLimit, "",SystemOutputPrefix,KeepOutputFiles,FilesDirectory,CopyUsersOutputFileName, OutputFileName,SystemResult,NULL)) { if (!strcmp(SystemResult,PositiveResult)) { Correct = 1; //----Should not trust prover's disproofs // } else if (!strcmp(SystemResult,NegativeResult)) { // Correct = -1; } } } //----Check if really not provable if (Correct == 0 && TestNegative) { PathBasename(OutputFileName,CopyUsersOutputFileName,NULL); strcat(CopyUsersOutputFileName,"_not"); if (SystemOnTPTPGetResult(0,ProblemFileName,NegativeChecker,TimeLimit, "",SystemOutputPrefix,KeepOutputFiles,FilesDirectory,CopyUsersOutputFileName, OutputFileName,SystemResult,NULL)) { if (!strcmp(SystemResult,NegativeResult)) { Correct = -1; //----Should not trust disprover's proofs // } else if (!strcmp(SystemResult,PositiveResult)) { // Correct = 1; } } } if (!KeepOutputFiles) { RemoveFile(ProblemFileName); } return(Correct); }
void S9xLoadSDD1Data () { char packdir[_MAX_PATH + 1]; // Unload any previous pack Settings.SDD1Pack = FALSE; Memory.FreeSDD1Data(); if (!S9xGetSDD1Dir(packdir)) { printf("SDD1: Didn't found pack for this ROM\n"); return; } printf("SDD1: Searching for pack in %s\n", packdir); Settings.SDD1Pack=TRUE; char index[_MAX_PATH + 1]; char data[_MAX_PATH + 1]; char patch[_MAX_PATH + 1]; DIR *dir = opendir(packdir); index[0] = 0; data[0] = 0; patch[0] = 0; if (dir) { struct dirent *d; while ((d = readdir (dir))) { if (strcasecmp (d->d_name, "SDD1GFX.IDX") == 0) { strcpy(index, packdir); strcat(index, "/"); strcat(index, d->d_name); } else if (strcasecmp (d->d_name, "SDD1GFX.DAT") == 0) { strcpy(data, packdir); strcat(data, "/"); strcat(data, d->d_name); } else if (strcasecmp (d->d_name, "SDD1GFX.PAT") == 0) { strcpy(patch, packdir); strcat(patch, "/"); strcat(patch, d->d_name); } } closedir (dir); } if (strlen (index) && strlen (data)) { FILE *fs = fopen (index, "rb"); int len = 0; if (fs) { // Index is stored as a sequence of entries, each entry being // 12 bytes consisting of: // 4 byte key: (24bit address & 0xfffff * 16) | translated block // 4 byte ROM offset // 4 byte length fseek (fs, 0, SEEK_END); len = ftell (fs); rewind (fs); Memory.SDD1Index = (uint8 *) malloc (len); fread (Memory.SDD1Index, 1, len, fs); fclose (fs); Memory.SDD1Entries = len / 12; } else { fprintf(stderr, "Failed to read SDD1 index file %s\n", index); return; } printf("SDD1: index: %s\n", PathBasename(index)); if (!(fs = fopen (data, "rb"))) { fprintf(stderr, "Failed to read SDD1 data file %s\n", data); free ((char *) Memory.SDD1Index); Memory.SDD1Index = NULL; Memory.SDD1Entries = 0; return; } else { fseek (fs, 0, SEEK_END); len = ftell (fs); rewind (fs); Memory.SDD1Data = (uint8 *) malloc (len); fread (Memory.SDD1Data, 1, len, fs); fclose (fs); } printf("SDD1: data pack: %s\n", PathBasename(data)); if (strlen (patch) > 0 && (fs = fopen (patch, "rb"))) { fclose (fs); } #ifdef MSB_FIRST // Swap the byte order of the 32-bit value triplets on // MSBFirst machines. uint8 *ptr = Memory.SDD1Index; for (int i = 0; i < Memory.SDD1Entries; i++, ptr += 12) { SWAP_DWORD ((*(uint32 *) (ptr + 0))); SWAP_DWORD ((*(uint32 *) (ptr + 4))); SWAP_DWORD ((*(uint32 *) (ptr + 8))); } #endif qsort(Memory.SDD1Index, Memory.SDD1Entries, 12, S9xCompareSDD1IndexEntries); printf("SDD1: Pack loaded succesfully\n"); } else { fprintf(stderr, "SDD1: SDD1 data pack not found in '%s'\n", packdir); fprintf(stderr, "SDD1: Check if sdd1gfx files exist\n"); printf("SDD1: Failed to load pack\n"); } }