Update bootstrap C sources.

This commit is contained in:
David Brown 2016-12-18 16:34:33 +00:00
parent 5c5ca01dbc
commit fc385eca3c
20 changed files with 110 additions and 50 deletions

View file

@ -46,7 +46,7 @@ void Compiler_Module (BOOLEAN *done)
OPV_Module(p); OPV_Module(p);
if (OPM_noerr) { if (OPM_noerr) {
if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) { if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
OPM_LogVT100((CHAR*)"32m", 4); OPM_LogVT100((CHAR*)"32m", 4);
OPM_LogWStr((CHAR*)" Main program.", 16); OPM_LogWStr((CHAR*)" Main program.", 16);
OPM_LogVT100((CHAR*)"0m", 3); OPM_LogVT100((CHAR*)"0m", 3);
@ -62,7 +62,7 @@ void Compiler_Module (BOOLEAN *done)
} }
} }
} else { } else {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
} }
} }
} }

View file

@ -49,8 +49,8 @@ export CHAR OPM_ResourceDir[1024];
static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F); static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F);
export void OPM_CloseFiles (void); export void OPM_CloseFiles (void);
export void OPM_CloseOldSym (void); export void OPM_CloseOldSym (void);
export void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len);
export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len);
export void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len);
export void OPM_FPrint (INT32 *fp, INT64 val); export void OPM_FPrint (INT32 *fp, INT64 val);
export void OPM_FPrintLReal (INT32 *fp, LONGREAL val); export void OPM_FPrintLReal (INT32 *fp, LONGREAL val);
export void OPM_FPrintReal (INT32 *fp, REAL val); export void OPM_FPrintReal (INT32 *fp, REAL val);
@ -436,8 +436,10 @@ void OPM_InitOptions (void)
OPM_VerboseListSizes(); OPM_VerboseListSizes();
} }
__MOVE(OPM_InstallDir, OPM_ResourceDir, 1024); __MOVE(OPM_InstallDir, OPM_ResourceDir, 1024);
Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); if (OPM_ResourceDir[0] != 0x00) {
Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024);
Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024);
}
modules[0] = 0x00; modules[0] = 0x00;
Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024); Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024);
__MOVE(".", searchpath, 2); __MOVE(".", searchpath, 2);
@ -766,6 +768,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done)
{ {
CHAR tag, ver; CHAR tag, ver;
OPM_FileName fileName; OPM_FileName fileName;
INT16 res;
OPM_oldSFile = NIL;
*done = 0;
OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5); OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5);
OPM_oldSFile = Files_Old(fileName, 32); OPM_oldSFile = Files_Old(fileName, 32);
*done = OPM_oldSFile != NIL; *done = OPM_oldSFile != NIL;
@ -774,7 +779,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done)
Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag);
Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver);
if (tag != 0xf7 || ver != 0x83) { if (tag != 0xf7 || ver != 0x83) {
OPM_err(-306); if (!__IN(4, OPM_Options, 32)) {
OPM_err(-306);
}
OPM_CloseOldSym(); OPM_CloseOldSym();
*done = 0; *done = 0;
} }
@ -818,7 +825,7 @@ void OPM_RegisterNewSym (void)
} }
} }
void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len) void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len)
{ {
OPM_FileName fn; OPM_FileName fn;
INT16 res; INT16 res;

View file

@ -23,8 +23,8 @@ import CHAR OPM_ResourceDir[1024];
import void OPM_CloseFiles (void); import void OPM_CloseFiles (void);
import void OPM_CloseOldSym (void); import void OPM_CloseOldSym (void);
import void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len);
import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len);
import void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len);
import void OPM_FPrint (INT32 *fp, INT64 val); import void OPM_FPrint (INT32 *fp, INT64 val);
import void OPM_FPrintLReal (INT32 *fp, LONGREAL val); import void OPM_FPrintLReal (INT32 *fp, LONGREAL val);
import void OPM_FPrintReal (INT32 *fp, REAL val); import void OPM_FPrintReal (INT32 *fp, REAL val);

View file

@ -1493,7 +1493,12 @@ void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done)
OPT_impCtxt.nofm = 0; OPT_impCtxt.nofm = 0;
OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0; OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0;
OPT_impCtxt.reffp = 0; OPT_impCtxt.reffp = 0;
OPM_OldSym((void*)name, 256, &*done); if ((OPT_impCtxt.self && __IN(17, OPM_Options, 32))) {
OPM_DeleteSym((void*)name, 256);
*done = 0;
} else {
OPM_OldSym((void*)name, 256, &*done);
}
if (*done) { if (*done) {
OPT_InMod(&mno); OPT_InMod(&mno);
OPT_InLinks(); OPT_InLinks();
@ -1902,7 +1907,7 @@ void OPT_Export (BOOLEAN *ext, BOOLEAN *new)
OPT_newsf = 0; OPT_newsf = 0;
OPT_symNew = 0; OPT_symNew = 0;
if (!OPM_noerr || OPT_findpc) { if (!OPM_noerr || OPT_findpc) {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
} }
} }
} }

View file

@ -46,7 +46,7 @@ void Compiler_Module (BOOLEAN *done)
OPV_Module(p); OPV_Module(p);
if (OPM_noerr) { if (OPM_noerr) {
if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) { if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
OPM_LogVT100((CHAR*)"32m", 4); OPM_LogVT100((CHAR*)"32m", 4);
OPM_LogWStr((CHAR*)" Main program.", 16); OPM_LogWStr((CHAR*)" Main program.", 16);
OPM_LogVT100((CHAR*)"0m", 3); OPM_LogVT100((CHAR*)"0m", 3);
@ -62,7 +62,7 @@ void Compiler_Module (BOOLEAN *done)
} }
} }
} else { } else {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
} }
} }
} }

View file

@ -49,8 +49,8 @@ export CHAR OPM_ResourceDir[1024];
static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F); static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F);
export void OPM_CloseFiles (void); export void OPM_CloseFiles (void);
export void OPM_CloseOldSym (void); export void OPM_CloseOldSym (void);
export void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len);
export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len);
export void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len);
export void OPM_FPrint (INT32 *fp, INT64 val); export void OPM_FPrint (INT32 *fp, INT64 val);
export void OPM_FPrintLReal (INT32 *fp, LONGREAL val); export void OPM_FPrintLReal (INT32 *fp, LONGREAL val);
export void OPM_FPrintReal (INT32 *fp, REAL val); export void OPM_FPrintReal (INT32 *fp, REAL val);
@ -436,8 +436,10 @@ void OPM_InitOptions (void)
OPM_VerboseListSizes(); OPM_VerboseListSizes();
} }
__MOVE(OPM_InstallDir, OPM_ResourceDir, 1024); __MOVE(OPM_InstallDir, OPM_ResourceDir, 1024);
Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); if (OPM_ResourceDir[0] != 0x00) {
Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024);
Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024);
}
modules[0] = 0x00; modules[0] = 0x00;
Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024); Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024);
__MOVE(".", searchpath, 2); __MOVE(".", searchpath, 2);
@ -766,6 +768,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done)
{ {
CHAR tag, ver; CHAR tag, ver;
OPM_FileName fileName; OPM_FileName fileName;
INT16 res;
OPM_oldSFile = NIL;
*done = 0;
OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5); OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5);
OPM_oldSFile = Files_Old(fileName, 32); OPM_oldSFile = Files_Old(fileName, 32);
*done = OPM_oldSFile != NIL; *done = OPM_oldSFile != NIL;
@ -774,7 +779,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done)
Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag);
Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver);
if (tag != 0xf7 || ver != 0x83) { if (tag != 0xf7 || ver != 0x83) {
OPM_err(-306); if (!__IN(4, OPM_Options, 32)) {
OPM_err(-306);
}
OPM_CloseOldSym(); OPM_CloseOldSym();
*done = 0; *done = 0;
} }
@ -818,7 +825,7 @@ void OPM_RegisterNewSym (void)
} }
} }
void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len) void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len)
{ {
OPM_FileName fn; OPM_FileName fn;
INT16 res; INT16 res;

View file

@ -23,8 +23,8 @@ import CHAR OPM_ResourceDir[1024];
import void OPM_CloseFiles (void); import void OPM_CloseFiles (void);
import void OPM_CloseOldSym (void); import void OPM_CloseOldSym (void);
import void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len);
import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len);
import void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len);
import void OPM_FPrint (INT32 *fp, INT64 val); import void OPM_FPrint (INT32 *fp, INT64 val);
import void OPM_FPrintLReal (INT32 *fp, LONGREAL val); import void OPM_FPrintLReal (INT32 *fp, LONGREAL val);
import void OPM_FPrintReal (INT32 *fp, REAL val); import void OPM_FPrintReal (INT32 *fp, REAL val);

View file

@ -1493,7 +1493,12 @@ void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done)
OPT_impCtxt.nofm = 0; OPT_impCtxt.nofm = 0;
OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0; OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0;
OPT_impCtxt.reffp = 0; OPT_impCtxt.reffp = 0;
OPM_OldSym((void*)name, 256, &*done); if ((OPT_impCtxt.self && __IN(17, OPM_Options, 32))) {
OPM_DeleteSym((void*)name, 256);
*done = 0;
} else {
OPM_OldSym((void*)name, 256, &*done);
}
if (*done) { if (*done) {
OPT_InMod(&mno); OPT_InMod(&mno);
OPT_InLinks(); OPT_InLinks();
@ -1902,7 +1907,7 @@ void OPT_Export (BOOLEAN *ext, BOOLEAN *new)
OPT_newsf = 0; OPT_newsf = 0;
OPT_symNew = 0; OPT_symNew = 0;
if (!OPM_noerr || OPT_findpc) { if (!OPM_noerr || OPT_findpc) {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
} }
} }
} }

View file

@ -46,7 +46,7 @@ void Compiler_Module (BOOLEAN *done)
OPV_Module(p); OPV_Module(p);
if (OPM_noerr) { if (OPM_noerr) {
if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) { if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
OPM_LogVT100((CHAR*)"32m", 4); OPM_LogVT100((CHAR*)"32m", 4);
OPM_LogWStr((CHAR*)" Main program.", 16); OPM_LogWStr((CHAR*)" Main program.", 16);
OPM_LogVT100((CHAR*)"0m", 3); OPM_LogVT100((CHAR*)"0m", 3);
@ -62,7 +62,7 @@ void Compiler_Module (BOOLEAN *done)
} }
} }
} else { } else {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
} }
} }
} }

View file

@ -49,8 +49,8 @@ export CHAR OPM_ResourceDir[1024];
static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F); static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F);
export void OPM_CloseFiles (void); export void OPM_CloseFiles (void);
export void OPM_CloseOldSym (void); export void OPM_CloseOldSym (void);
export void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len);
export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len);
export void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len);
export void OPM_FPrint (INT32 *fp, INT64 val); export void OPM_FPrint (INT32 *fp, INT64 val);
export void OPM_FPrintLReal (INT32 *fp, LONGREAL val); export void OPM_FPrintLReal (INT32 *fp, LONGREAL val);
export void OPM_FPrintReal (INT32 *fp, REAL val); export void OPM_FPrintReal (INT32 *fp, REAL val);
@ -436,8 +436,10 @@ void OPM_InitOptions (void)
OPM_VerboseListSizes(); OPM_VerboseListSizes();
} }
__MOVE(OPM_InstallDir, OPM_ResourceDir, 1024); __MOVE(OPM_InstallDir, OPM_ResourceDir, 1024);
Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); if (OPM_ResourceDir[0] != 0x00) {
Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024);
Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024);
}
modules[0] = 0x00; modules[0] = 0x00;
Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024); Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024);
__MOVE(".", searchpath, 2); __MOVE(".", searchpath, 2);
@ -766,6 +768,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done)
{ {
CHAR tag, ver; CHAR tag, ver;
OPM_FileName fileName; OPM_FileName fileName;
INT16 res;
OPM_oldSFile = NIL;
*done = 0;
OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5); OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5);
OPM_oldSFile = Files_Old(fileName, 32); OPM_oldSFile = Files_Old(fileName, 32);
*done = OPM_oldSFile != NIL; *done = OPM_oldSFile != NIL;
@ -774,7 +779,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done)
Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag);
Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver);
if (tag != 0xf7 || ver != 0x83) { if (tag != 0xf7 || ver != 0x83) {
OPM_err(-306); if (!__IN(4, OPM_Options, 32)) {
OPM_err(-306);
}
OPM_CloseOldSym(); OPM_CloseOldSym();
*done = 0; *done = 0;
} }
@ -818,7 +825,7 @@ void OPM_RegisterNewSym (void)
} }
} }
void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len) void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len)
{ {
OPM_FileName fn; OPM_FileName fn;
INT16 res; INT16 res;

View file

@ -23,8 +23,8 @@ import CHAR OPM_ResourceDir[1024];
import void OPM_CloseFiles (void); import void OPM_CloseFiles (void);
import void OPM_CloseOldSym (void); import void OPM_CloseOldSym (void);
import void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len);
import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len);
import void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len);
import void OPM_FPrint (INT32 *fp, INT64 val); import void OPM_FPrint (INT32 *fp, INT64 val);
import void OPM_FPrintLReal (INT32 *fp, LONGREAL val); import void OPM_FPrintLReal (INT32 *fp, LONGREAL val);
import void OPM_FPrintReal (INT32 *fp, REAL val); import void OPM_FPrintReal (INT32 *fp, REAL val);

View file

@ -1493,7 +1493,12 @@ void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done)
OPT_impCtxt.nofm = 0; OPT_impCtxt.nofm = 0;
OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0; OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0;
OPT_impCtxt.reffp = 0; OPT_impCtxt.reffp = 0;
OPM_OldSym((void*)name, 256, &*done); if ((OPT_impCtxt.self && __IN(17, OPM_Options, 32))) {
OPM_DeleteSym((void*)name, 256);
*done = 0;
} else {
OPM_OldSym((void*)name, 256, &*done);
}
if (*done) { if (*done) {
OPT_InMod(&mno); OPT_InMod(&mno);
OPT_InLinks(); OPT_InLinks();
@ -1902,7 +1907,7 @@ void OPT_Export (BOOLEAN *ext, BOOLEAN *new)
OPT_newsf = 0; OPT_newsf = 0;
OPT_symNew = 0; OPT_symNew = 0;
if (!OPM_noerr || OPT_findpc) { if (!OPM_noerr || OPT_findpc) {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
} }
} }
} }

View file

@ -46,7 +46,7 @@ void Compiler_Module (BOOLEAN *done)
OPV_Module(p); OPV_Module(p);
if (OPM_noerr) { if (OPM_noerr) {
if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) { if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
OPM_LogVT100((CHAR*)"32m", 4); OPM_LogVT100((CHAR*)"32m", 4);
OPM_LogWStr((CHAR*)" Main program.", 16); OPM_LogWStr((CHAR*)" Main program.", 16);
OPM_LogVT100((CHAR*)"0m", 3); OPM_LogVT100((CHAR*)"0m", 3);
@ -62,7 +62,7 @@ void Compiler_Module (BOOLEAN *done)
} }
} }
} else { } else {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
} }
} }
} }

View file

@ -49,8 +49,8 @@ export CHAR OPM_ResourceDir[1024];
static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F); static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F);
export void OPM_CloseFiles (void); export void OPM_CloseFiles (void);
export void OPM_CloseOldSym (void); export void OPM_CloseOldSym (void);
export void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len);
export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len);
export void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len);
export void OPM_FPrint (INT32 *fp, INT64 val); export void OPM_FPrint (INT32 *fp, INT64 val);
export void OPM_FPrintLReal (INT32 *fp, LONGREAL val); export void OPM_FPrintLReal (INT32 *fp, LONGREAL val);
export void OPM_FPrintReal (INT32 *fp, REAL val); export void OPM_FPrintReal (INT32 *fp, REAL val);
@ -436,8 +436,10 @@ void OPM_InitOptions (void)
OPM_VerboseListSizes(); OPM_VerboseListSizes();
} }
__MOVE(OPM_InstallDir, OPM_ResourceDir, 1024); __MOVE(OPM_InstallDir, OPM_ResourceDir, 1024);
Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); if (OPM_ResourceDir[0] != 0x00) {
Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024);
Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024);
}
modules[0] = 0x00; modules[0] = 0x00;
Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024); Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024);
__MOVE(".", searchpath, 2); __MOVE(".", searchpath, 2);
@ -766,6 +768,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done)
{ {
CHAR tag, ver; CHAR tag, ver;
OPM_FileName fileName; OPM_FileName fileName;
INT16 res;
OPM_oldSFile = NIL;
*done = 0;
OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5); OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5);
OPM_oldSFile = Files_Old(fileName, 32); OPM_oldSFile = Files_Old(fileName, 32);
*done = OPM_oldSFile != NIL; *done = OPM_oldSFile != NIL;
@ -774,7 +779,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done)
Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag);
Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver);
if (tag != 0xf7 || ver != 0x83) { if (tag != 0xf7 || ver != 0x83) {
OPM_err(-306); if (!__IN(4, OPM_Options, 32)) {
OPM_err(-306);
}
OPM_CloseOldSym(); OPM_CloseOldSym();
*done = 0; *done = 0;
} }
@ -818,7 +825,7 @@ void OPM_RegisterNewSym (void)
} }
} }
void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len) void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len)
{ {
OPM_FileName fn; OPM_FileName fn;
INT16 res; INT16 res;

View file

@ -23,8 +23,8 @@ import CHAR OPM_ResourceDir[1024];
import void OPM_CloseFiles (void); import void OPM_CloseFiles (void);
import void OPM_CloseOldSym (void); import void OPM_CloseOldSym (void);
import void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len);
import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len);
import void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len);
import void OPM_FPrint (INT32 *fp, INT64 val); import void OPM_FPrint (INT32 *fp, INT64 val);
import void OPM_FPrintLReal (INT32 *fp, LONGREAL val); import void OPM_FPrintLReal (INT32 *fp, LONGREAL val);
import void OPM_FPrintReal (INT32 *fp, REAL val); import void OPM_FPrintReal (INT32 *fp, REAL val);

View file

@ -1493,7 +1493,12 @@ void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done)
OPT_impCtxt.nofm = 0; OPT_impCtxt.nofm = 0;
OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0; OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0;
OPT_impCtxt.reffp = 0; OPT_impCtxt.reffp = 0;
OPM_OldSym((void*)name, 256, &*done); if ((OPT_impCtxt.self && __IN(17, OPM_Options, 32))) {
OPM_DeleteSym((void*)name, 256);
*done = 0;
} else {
OPM_OldSym((void*)name, 256, &*done);
}
if (*done) { if (*done) {
OPT_InMod(&mno); OPT_InMod(&mno);
OPT_InLinks(); OPT_InLinks();
@ -1902,7 +1907,7 @@ void OPT_Export (BOOLEAN *ext, BOOLEAN *new)
OPT_newsf = 0; OPT_newsf = 0;
OPT_symNew = 0; OPT_symNew = 0;
if (!OPM_noerr || OPT_findpc) { if (!OPM_noerr || OPT_findpc) {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
} }
} }
} }

View file

@ -46,7 +46,7 @@ void Compiler_Module (BOOLEAN *done)
OPV_Module(p); OPV_Module(p);
if (OPM_noerr) { if (OPM_noerr) {
if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) { if ((__IN(10, OPM_Options, 32) && __STRCMP(OPM_modName, "SYSTEM") != 0)) {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
OPM_LogVT100((CHAR*)"32m", 4); OPM_LogVT100((CHAR*)"32m", 4);
OPM_LogWStr((CHAR*)" Main program.", 16); OPM_LogWStr((CHAR*)" Main program.", 16);
OPM_LogVT100((CHAR*)"0m", 3); OPM_LogVT100((CHAR*)"0m", 3);
@ -62,7 +62,7 @@ void Compiler_Module (BOOLEAN *done)
} }
} }
} else { } else {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
} }
} }
} }

View file

@ -49,8 +49,8 @@ export CHAR OPM_ResourceDir[1024];
static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F); static void OPM_Append (Files_Rider *R, ADDRESS *R__typ, Files_File F);
export void OPM_CloseFiles (void); export void OPM_CloseFiles (void);
export void OPM_CloseOldSym (void); export void OPM_CloseOldSym (void);
export void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len);
export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); export void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len);
export void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len);
export void OPM_FPrint (INT32 *fp, INT64 val); export void OPM_FPrint (INT32 *fp, INT64 val);
export void OPM_FPrintLReal (INT32 *fp, LONGREAL val); export void OPM_FPrintLReal (INT32 *fp, LONGREAL val);
export void OPM_FPrintReal (INT32 *fp, REAL val); export void OPM_FPrintReal (INT32 *fp, REAL val);
@ -436,8 +436,10 @@ void OPM_InitOptions (void)
OPM_VerboseListSizes(); OPM_VerboseListSizes();
} }
__MOVE(OPM_InstallDir, OPM_ResourceDir, 1024); __MOVE(OPM_InstallDir, OPM_ResourceDir, 1024);
Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024); if (OPM_ResourceDir[0] != 0x00) {
Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024); Strings_Append((CHAR*)"/", 2, (void*)OPM_ResourceDir, 1024);
Strings_Append(OPM_Model, 10, (void*)OPM_ResourceDir, 1024);
}
modules[0] = 0x00; modules[0] = 0x00;
Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024); Platform_GetEnv((CHAR*)"MODULES", 8, (void*)modules, 1024);
__MOVE(".", searchpath, 2); __MOVE(".", searchpath, 2);
@ -766,6 +768,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done)
{ {
CHAR tag, ver; CHAR tag, ver;
OPM_FileName fileName; OPM_FileName fileName;
INT16 res;
OPM_oldSFile = NIL;
*done = 0;
OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5); OPM_MakeFileName((void*)modName, modName__len, (void*)fileName, 32, (CHAR*)".sym", 5);
OPM_oldSFile = Files_Old(fileName, 32); OPM_oldSFile = Files_Old(fileName, 32);
*done = OPM_oldSFile != NIL; *done = OPM_oldSFile != NIL;
@ -774,7 +779,9 @@ void OPM_OldSym (CHAR *modName, ADDRESS modName__len, BOOLEAN *done)
Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&tag);
Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver); Files_Read(&OPM_oldSF, Files_Rider__typ, (void*)&ver);
if (tag != 0xf7 || ver != 0x83) { if (tag != 0xf7 || ver != 0x83) {
OPM_err(-306); if (!__IN(4, OPM_Options, 32)) {
OPM_err(-306);
}
OPM_CloseOldSym(); OPM_CloseOldSym();
*done = 0; *done = 0;
} }
@ -818,7 +825,7 @@ void OPM_RegisterNewSym (void)
} }
} }
void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len) void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len)
{ {
OPM_FileName fn; OPM_FileName fn;
INT16 res; INT16 res;

View file

@ -23,8 +23,8 @@ import CHAR OPM_ResourceDir[1024];
import void OPM_CloseFiles (void); import void OPM_CloseFiles (void);
import void OPM_CloseOldSym (void); import void OPM_CloseOldSym (void);
import void OPM_DeleteNewSym (CHAR *modulename, ADDRESS modulename__len);
import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len); import void OPM_DeleteObj (CHAR *modulename, ADDRESS modulename__len);
import void OPM_DeleteSym (CHAR *modulename, ADDRESS modulename__len);
import void OPM_FPrint (INT32 *fp, INT64 val); import void OPM_FPrint (INT32 *fp, INT64 val);
import void OPM_FPrintLReal (INT32 *fp, LONGREAL val); import void OPM_FPrintLReal (INT32 *fp, LONGREAL val);
import void OPM_FPrintReal (INT32 *fp, REAL val); import void OPM_FPrintReal (INT32 *fp, REAL val);

View file

@ -1493,7 +1493,12 @@ void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done)
OPT_impCtxt.nofm = 0; OPT_impCtxt.nofm = 0;
OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0; OPT_impCtxt.self = __STRCMP(aliasName, "@self") == 0;
OPT_impCtxt.reffp = 0; OPT_impCtxt.reffp = 0;
OPM_OldSym((void*)name, 256, &*done); if ((OPT_impCtxt.self && __IN(17, OPM_Options, 32))) {
OPM_DeleteSym((void*)name, 256);
*done = 0;
} else {
OPM_OldSym((void*)name, 256, &*done);
}
if (*done) { if (*done) {
OPT_InMod(&mno); OPT_InMod(&mno);
OPT_InLinks(); OPT_InLinks();
@ -1902,7 +1907,7 @@ void OPT_Export (BOOLEAN *ext, BOOLEAN *new)
OPT_newsf = 0; OPT_newsf = 0;
OPT_symNew = 0; OPT_symNew = 0;
if (!OPM_noerr || OPT_findpc) { if (!OPM_noerr || OPT_findpc) {
OPM_DeleteNewSym((void*)OPT_SelfName, 256); OPM_DeleteSym((void*)OPT_SelfName, 256);
} }
} }
} }