mirror of
https://git.code.sf.net/p/newrpl/sources
synced 2024-11-16 19:51:25 +01:00
Improved backup format to support rompointers into large rom objects.
This commit is contained in:
parent
9b7da8235f
commit
d0fe76e118
39 changed files with 243 additions and 124 deletions
123
newrpl/backup.c
123
newrpl/backup.c
|
@ -13,7 +13,7 @@
|
||||||
// CONVERT A POINTER INTO A ROMPTR ID
|
// CONVERT A POINTER INTO A ROMPTR ID
|
||||||
// IF IT FAILS, RETURNS 0
|
// IF IT FAILS, RETURNS 0
|
||||||
|
|
||||||
WORD rplConvertToRomptrID(WORDPTR ptr)
|
UBINT64 rplConvertToRomptrID(WORDPTR ptr)
|
||||||
{
|
{
|
||||||
BINT libnum=MAXLIBNUMBER;
|
BINT libnum=MAXLIBNUMBER;
|
||||||
BINT SavedOpcode;
|
BINT SavedOpcode;
|
||||||
|
@ -30,9 +30,9 @@ WORD rplConvertToRomptrID(WORDPTR ptr)
|
||||||
|
|
||||||
(*han)();
|
(*han)();
|
||||||
|
|
||||||
if(RetNum==OK_CONTINUE) return ObjectID;
|
if(RetNum==OK_CONTINUE) return ((UBINT64)ObjectID) | (((UBINT64)ObjectIDHash)<<32);
|
||||||
}
|
}
|
||||||
--libnum;
|
libnum=rplGetNextLib(libnum);
|
||||||
}
|
}
|
||||||
CurOpcode=SavedOpcode;
|
CurOpcode=SavedOpcode;
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ WORD rplConvertToRomptrID(WORDPTR ptr)
|
||||||
// RETURNS 0 IF NOT A VALID ID
|
// RETURNS 0 IF NOT A VALID ID
|
||||||
// OR NOT RECOGNIZED BY ITS LIBRARIES
|
// OR NOT RECOGNIZED BY ITS LIBRARIES
|
||||||
|
|
||||||
WORDPTR rplConvertIDToPTR(WORD romptrid)
|
WORDPTR rplConvertIDToPTR(UBINT64 romptrid)
|
||||||
{
|
{
|
||||||
if(!ISROMPTRID(romptrid)) return 0;
|
if(!ISROMPTRID(romptrid)) return 0;
|
||||||
|
|
||||||
|
@ -61,6 +61,7 @@ WORDPTR rplConvertIDToPTR(WORD romptrid)
|
||||||
if(!han) return 0;
|
if(!han) return 0;
|
||||||
RetNum=ERR_INVALID;
|
RetNum=ERR_INVALID;
|
||||||
ObjectID=romptrid;
|
ObjectID=romptrid;
|
||||||
|
ObjectIDHash=romptrid>>32;
|
||||||
|
|
||||||
(*han)();
|
(*han)();
|
||||||
|
|
||||||
|
@ -137,23 +138,23 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
||||||
sections[k].nitems=DirsTop-Directories;
|
sections[k].nitems=DirsTop-Directories;
|
||||||
sections[k].offwords=offset;
|
sections[k].offwords=offset;
|
||||||
|
|
||||||
offset+=sections[k].nitems;
|
offset+=sections[k].nitems*2;
|
||||||
++k;
|
++k;
|
||||||
|
|
||||||
// SYSTEM POINTERS
|
// SYSTEM POINTERS
|
||||||
sections[k].start=(WORDPTR)GC_PTRUpdate;
|
sections[k].start=(WORDPTR)GC_PTRUpdate;
|
||||||
sections[k].nitems=MAX_GC_PTRUPDATE;
|
sections[k].nitems=(MAX_GC_PTRUPDATE);
|
||||||
sections[k].offwords=offset;
|
sections[k].offwords=offset;
|
||||||
|
|
||||||
offset+=sections[k].nitems;
|
offset+=sections[k].nitems*2;
|
||||||
++k;
|
++k;
|
||||||
|
|
||||||
// STACK
|
// STACK
|
||||||
sections[k].start=(WORDPTR)DStk;
|
sections[k].start=(WORDPTR)DStk;
|
||||||
sections[k].nitems=DSTop-DStk;
|
sections[k].nitems=(DSTop-DStk);
|
||||||
sections[k].offwords=offset;
|
sections[k].offwords=offset;
|
||||||
|
|
||||||
offset+=sections[k].nitems;
|
offset+=sections[k].nitems*2;
|
||||||
++k;
|
++k;
|
||||||
|
|
||||||
// FILL ALL OTHER SECTIONS
|
// FILL ALL OTHER SECTIONS
|
||||||
|
@ -177,6 +178,13 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
||||||
++writeoff;
|
++writeoff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WRITE ALL 10 SECTIONS nitems
|
||||||
|
for(k=0;k<10;++k) {
|
||||||
|
if(!writefunc(sections[k].nitems,OpaqueArgument)) return 0;
|
||||||
|
++writeoff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO: WRITE OTHER SYSTEM VARIABLES HERE
|
// TODO: WRITE OTHER SYSTEM VARIABLES HERE
|
||||||
|
|
||||||
// FILL THE HEADER SECTION
|
// FILL THE HEADER SECTION
|
||||||
|
@ -210,11 +218,11 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
||||||
// VALID POINTER INTO TEMPOB, CONVERT INTO FILE OFFSET
|
// VALID POINTER INTO TEMPOB, CONVERT INTO FILE OFFSET
|
||||||
if(!writefunc( (BINT)(ptr-TempOb)+ sections[1].offwords,OpaqueArgument)) return 0;
|
if(!writefunc( (BINT)(ptr-TempOb)+ sections[1].offwords,OpaqueArgument)) return 0;
|
||||||
} else {
|
} else {
|
||||||
// IF THE OBJECT IS NOT IN TEMPOB IS IN ROM
|
// IF THE OBJECT IS NOT IN TEMPOB, IS IN ROM
|
||||||
|
|
||||||
// CONVERT TO ROMPTR ID
|
// CONVERT TO ROMPTR ID
|
||||||
|
|
||||||
WORD id=rplConvertToRomptrID(ptr);
|
UBINT64 id=rplConvertToRomptrID(ptr);
|
||||||
|
|
||||||
if(!id) {
|
if(!id) {
|
||||||
// INVALID POINTER! NEED TO FIX THE MEMORY BEFORE DOING BACKUP
|
// INVALID POINTER! NEED TO FIX THE MEMORY BEFORE DOING BACKUP
|
||||||
|
@ -222,10 +230,16 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if(!writefunc(id,OpaqueArgument)) return 0;
|
if(!writefunc(id,OpaqueArgument)) return 0;
|
||||||
|
if(ROMPTRID_OFF(id)==31) {
|
||||||
|
++writeoff;
|
||||||
|
if(!writefunc((id>>32),OpaqueArgument)) return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
++writeoff;
|
++writeoff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while(writeoff<sections[4].offwords) { if(!writefunc(0,OpaqueArgument)) return 0; ++writeoff; }
|
||||||
|
|
||||||
// DUMP SYSTEM POINTERS
|
// DUMP SYSTEM POINTERS
|
||||||
for(k=0;k<sections[4].nitems;++k) {
|
for(k=0;k<sections[4].nitems;++k) {
|
||||||
ptr=GC_PTRUpdate[k];
|
ptr=GC_PTRUpdate[k];
|
||||||
|
@ -234,7 +248,7 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
||||||
if(!writefunc( (BINT)(ptr-TempOb)+ sections[1].offwords,OpaqueArgument)) return 0;
|
if(!writefunc( (BINT)(ptr-TempOb)+ sections[1].offwords,OpaqueArgument)) return 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
WORD id;
|
UBINT64 id;
|
||||||
if(!ptr) {
|
if(!ptr) {
|
||||||
// NULL POINTER, STORE AS-IS
|
// NULL POINTER, STORE AS-IS
|
||||||
id=0;
|
id=0;
|
||||||
|
@ -253,10 +267,17 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!writefunc(id,OpaqueArgument)) return 0;
|
if(!writefunc(id,OpaqueArgument)) return 0;
|
||||||
|
if(ROMPTRID_OFF(id)==31) {
|
||||||
|
++writeoff;
|
||||||
|
if(!writefunc((id>>32),OpaqueArgument)) return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
++writeoff;
|
++writeoff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while(writeoff<sections[5].offwords) { if(!writefunc(0,OpaqueArgument)) return 0; ++writeoff; }
|
||||||
|
|
||||||
|
|
||||||
// DUMP DATA STACK POINTERS
|
// DUMP DATA STACK POINTERS
|
||||||
for(k=0;k<sections[5].nitems;++k) {
|
for(k=0;k<sections[5].nitems;++k) {
|
||||||
ptr=DStk[k];
|
ptr=DStk[k];
|
||||||
|
@ -265,14 +286,14 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
||||||
if(!writefunc( (BINT)(ptr-TempOb)+ sections[1].offwords,OpaqueArgument)) return 0;
|
if(!writefunc( (BINT)(ptr-TempOb)+ sections[1].offwords,OpaqueArgument)) return 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
WORD id;
|
UBINT64 id;
|
||||||
|
|
||||||
// SPECIAL CASE - HANDLE OFFSET NUMBERS STORED INSIDE THE STACK
|
// SPECIAL CASE - HANDLE OFFSET NUMBERS STORED INSIDE THE STACK
|
||||||
if((PTR2NUMBER)ptr<=(UBINT64)sections[5].nitems) {
|
if((PTR2NUMBER)ptr<=(UBINT64)sections[5].nitems) {
|
||||||
// THIS IS A NUMBER, NOT A POINTER
|
// THIS IS A NUMBER, NOT A POINTER
|
||||||
// IN THE STACK, THESE ARE STACK MARKERS
|
// IN THE STACK, THESE ARE STACK MARKERS
|
||||||
// REPLACE WITH THE ACTUAL NUMBER, BUT USE NEGATIVE OFFSET TO DISTINGUISH IT FROM FILE OFFSETS
|
// REPLACE WITH A SPECIAL ROMPTRID FOR LIBRARY 0, ID=63, offset=31
|
||||||
id=-((PTR2NUMBER)ptr);
|
id=(((UBINT64)((PTR2NUMBER)ptr))<<32) | MKROMPTRID(0,63,31);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// IF THE OBJECT IS NOT IN TEMPOB IS IN ROM
|
// IF THE OBJECT IS NOT IN TEMPOB IS IN ROM
|
||||||
|
@ -286,10 +307,17 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
||||||
|
|
||||||
|
|
||||||
if(!writefunc(id,OpaqueArgument)) return 0;
|
if(!writefunc(id,OpaqueArgument)) return 0;
|
||||||
|
if(ROMPTRID_OFF(id)==31) {
|
||||||
|
++writeoff;
|
||||||
|
if(!writefunc((id>>32),OpaqueArgument)) return 0;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
++writeoff;
|
++writeoff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while(writeoff<sections[6].offwords) { if(!writefunc(0,OpaqueArgument)) return 0; ++writeoff; }
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -329,10 +357,15 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
||||||
{
|
{
|
||||||
sections[k].offwords=readfunc(OpaqueArgument);
|
sections[k].offwords=readfunc(OpaqueArgument);
|
||||||
++offset;
|
++offset;
|
||||||
if(k>0) sections[k-1].nitems=sections[k].offwords-sections[k-1].offwords;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// READ nitems, RESTORE FROM OFFSETS IF NOTE PRESENT (BACKWARDS COMPATIBLE WITH OLD BACKUP FORMAT)
|
||||||
|
for(k=0;k<10;++k)
|
||||||
|
{
|
||||||
|
sections[k].nitems=readfunc(OpaqueArgument);
|
||||||
|
++offset;
|
||||||
|
if((k>0) && (sections[k-1].nitems==0)) sections[k-1].nitems=sections[k].offwords-sections[k-1].offwords;
|
||||||
|
}
|
||||||
|
|
||||||
// RESET RPL ENVIRONMENT
|
// RESET RPL ENVIRONMENT
|
||||||
// ERASE ALL RPL MEMORY IN PREPARATION FOR RESTORE
|
// ERASE ALL RPL MEMORY IN PREPARATION FOR RESTORE
|
||||||
|
@ -375,7 +408,7 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
||||||
// RESIZE ALL SECTIONS TO THE REQUESTED SIZE
|
// RESIZE ALL SECTIONS TO THE REQUESTED SIZE
|
||||||
if(sections[0].nitems+TEMPBLOCKSLACK>1024) growTempBlocks(sections[0].nitems+TEMPBLOCKSLACK);
|
if(sections[0].nitems+TEMPBLOCKSLACK>1024) growTempBlocks(sections[0].nitems+TEMPBLOCKSLACK);
|
||||||
if(sections[1].nitems+sections[2].nitems>1024) growTempOb(sections[1].nitems+sections[2].nitems);
|
if(sections[1].nitems+sections[2].nitems>1024) growTempOb(sections[1].nitems+sections[2].nitems);
|
||||||
if(sections[3].nitems+DIRSLACK>1024) growDirs(sections[3].nitems+DIRSLACK);
|
if((sections[3].nitems)+DIRSLACK>1024) growDirs(sections[3].nitems+DIRSLACK);
|
||||||
if(includestack) {
|
if(includestack) {
|
||||||
if(sections[5].nitems+DSTKSLACK>1024) growDirs(sections[5].nitems+DSTKSLACK);
|
if(sections[5].nitems+DSTKSLACK>1024) growDirs(sections[5].nitems+DSTKSLACK);
|
||||||
}
|
}
|
||||||
|
@ -384,7 +417,7 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
||||||
|
|
||||||
// SKIP TO THE PROPER FILE OFFSET
|
// SKIP TO THE PROPER FILE OFFSET
|
||||||
|
|
||||||
while(offset!=1024) { readfunc(OpaqueArgument); ++offset; }
|
while(offset<1024) { readfunc(OpaqueArgument); ++offset; }
|
||||||
|
|
||||||
// HERE'S THE START OF TEMPBLOCKS
|
// HERE'S THE START OF TEMPBLOCKS
|
||||||
for(k=0;k<sections[0].nitems;++k) {
|
for(k=0;k<sections[0].nitems;++k) {
|
||||||
|
@ -396,6 +429,9 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
||||||
|
|
||||||
TempBlocksEnd=TempBlocks+sections[0].nitems;
|
TempBlocksEnd=TempBlocks+sections[0].nitems;
|
||||||
|
|
||||||
|
while(offset<sections[1].offwords) { readfunc(OpaqueArgument); ++offset; }
|
||||||
|
|
||||||
|
|
||||||
// HERE'S THE START OF TEMPOB
|
// HERE'S THE START OF TEMPOB
|
||||||
for(k=0;k<sections[1].nitems;++k)
|
for(k=0;k<sections[1].nitems;++k)
|
||||||
{
|
{
|
||||||
|
@ -407,6 +443,9 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
||||||
|
|
||||||
TempObEnd=TempOb+sections[1].nitems;
|
TempObEnd=TempOb+sections[1].nitems;
|
||||||
|
|
||||||
|
while(offset<sections[2].offwords) { readfunc(OpaqueArgument); ++offset; }
|
||||||
|
|
||||||
|
|
||||||
// AFTER TEMPOB
|
// AFTER TEMPOB
|
||||||
for(k=0;k<sections[2].nitems;++k)
|
for(k=0;k<sections[2].nitems;++k)
|
||||||
{
|
{
|
||||||
|
@ -416,13 +455,22 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
||||||
}
|
}
|
||||||
if(Exceptions) return -1;
|
if(Exceptions) return -1;
|
||||||
|
|
||||||
|
while(offset<sections[3].offwords) { readfunc(OpaqueArgument); ++offset; }
|
||||||
|
|
||||||
// HERE'S THE START OF THE DIRECTORIES
|
// HERE'S THE START OF THE DIRECTORIES
|
||||||
|
|
||||||
for(k=0;k<sections[3].nitems;++k)
|
for(k=0;k<sections[3].nitems;++k)
|
||||||
{
|
{
|
||||||
data=readfunc(OpaqueArgument);
|
data=readfunc(OpaqueArgument);
|
||||||
if(ISROMPTRID(data)) Directories[k]=rplConvertIDToPTR(data);
|
if(ISROMPTRID(data)) {
|
||||||
|
WORD hash=0;
|
||||||
|
|
||||||
|
if(ROMPTRID_OFF(data)==31) {
|
||||||
|
hash=readfunc(OpaqueArgument);
|
||||||
|
++offset;
|
||||||
|
}
|
||||||
|
Directories[k]=rplConvertIDToPTR( ((UBINT64)data) | (((UBINT64)hash)<<32));
|
||||||
|
}
|
||||||
else Directories[k]=TempOb+(data-sections[1].offwords);
|
else Directories[k]=TempOb+(data-sections[1].offwords);
|
||||||
if(Directories[k]==0) ++errors; // JUST COUNT THE ERRORS BUT DON'T STOP, RECOVER AS MUCH AS POSSIBLE
|
if(Directories[k]==0) ++errors; // JUST COUNT THE ERRORS BUT DON'T STOP, RECOVER AS MUCH AS POSSIBLE
|
||||||
++offset;
|
++offset;
|
||||||
|
@ -431,15 +479,25 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
||||||
|
|
||||||
DirsTop=Directories+sections[3].nitems;
|
DirsTop=Directories+sections[3].nitems;
|
||||||
|
|
||||||
|
while(offset<sections[4].offwords) { readfunc(OpaqueArgument); ++offset; }
|
||||||
|
|
||||||
// HERE'S THE START OF SYSTEM POINTERS
|
// HERE'S THE START OF SYSTEM POINTERS
|
||||||
|
|
||||||
for(k=0;k<sections[4].nitems;++k)
|
for(k=0;k<sections[4].nitems;++k)
|
||||||
{
|
{
|
||||||
data=readfunc(OpaqueArgument);
|
data=readfunc(OpaqueArgument);
|
||||||
if(ISROMPTRID(data)) {
|
if(ISROMPTRID(data)) {
|
||||||
GC_PTRUpdate[k]=rplConvertIDToPTR(data);
|
|
||||||
// EARLIER VERSIONS WOULD CONVERT INVALID POINTERS INTO POINTERS TO zero_bint
|
WORD hash=0;
|
||||||
if(GC_PTRUpdate[k]==(WORDPTR)zero_bint) GC_PTRUpdate[k]=0;
|
|
||||||
|
if(ROMPTRID_OFF(data)==31) {
|
||||||
|
hash=readfunc(OpaqueArgument);
|
||||||
|
++offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GC_PTRUpdate[k]=rplConvertIDToPTR(((UBINT64)data) | (((UBINT64)hash)<<32));
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(!data) GC_PTRUpdate[k]=0; // RESTORE NULL POINTERS
|
if(!data) GC_PTRUpdate[k]=0; // RESTORE NULL POINTERS
|
||||||
|
@ -460,15 +518,30 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
||||||
if(includestack) {
|
if(includestack) {
|
||||||
// OPTIONALLY EXTRACT THE DATA STACK
|
// OPTIONALLY EXTRACT THE DATA STACK
|
||||||
|
|
||||||
|
while(offset<sections[5].offwords) { readfunc(OpaqueArgument); ++offset; }
|
||||||
DStkProtect=DStkBottom=DStk;
|
DStkProtect=DStkBottom=DStk;
|
||||||
|
|
||||||
for(k=0;k<sections[5].nitems;++k)
|
for(k=0;k<sections[5].nitems;++k)
|
||||||
{
|
{
|
||||||
data=readfunc(OpaqueArgument);
|
data=readfunc(OpaqueArgument);
|
||||||
if(ISROMPTRID(data)) DStk[k]=rplConvertIDToPTR(data);
|
if(ISROMPTRID(data)) {
|
||||||
|
WORD hash=0;
|
||||||
|
|
||||||
|
if(ROMPTRID_OFF(data)==31) {
|
||||||
|
hash=readfunc(OpaqueArgument);
|
||||||
|
++offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(data==MKROMPTRID(0,63,31)) {
|
||||||
|
DStk[k]=NUMBER2PTR(hash);
|
||||||
|
DStkProtect=DStkBottom=DStk+k+1;
|
||||||
|
}
|
||||||
|
else DStk[k]=rplConvertIDToPTR(((UBINT64)data) | (((UBINT64)hash)<<32));
|
||||||
|
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
if(((BINT)data)<=0) {
|
if(((BINT)data)<=0) {
|
||||||
// THESE WERE NUMBERS USED IN THE STACK SNAPSHOTS
|
// OLD FORMAT - THESE WERE NUMBERS USED IN THE STACK SNAPSHOTS
|
||||||
DStk[k]=NUMBER2PTR(-(BINT)data);
|
DStk[k]=NUMBER2PTR(-(BINT)data);
|
||||||
DStkProtect=DStkBottom=DStk+k+1;
|
DStkProtect=DStkBottom=DStk+k+1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -685,18 +685,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -1865,18 +1865,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -1754,18 +1754,18 @@ case NUMINT:
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -619,7 +619,7 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
//libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
//libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
|
@ -631,7 +631,7 @@ void LIB_HANDLER()
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
//libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
//libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
RetNum=ERR_NOTMINE;
|
RetNum=ERR_NOTMINE;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -1651,18 +1651,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectPTR = ID
|
// ObjectPTR
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -2612,18 +2612,18 @@ case TVARSE:
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -7021,14 +7021,14 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
RetNum=ERR_NOTMINE;
|
RetNum=ERR_NOTMINE;
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
|
|
|
@ -1695,18 +1695,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -212,14 +212,14 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
RetNum=ERR_NOTMINE;
|
RetNum=ERR_NOTMINE;
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
|
|
|
@ -286,14 +286,14 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
RetNum=ERR_NOTMINE;
|
RetNum=ERR_NOTMINE;
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
|
|
|
@ -1804,18 +1804,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5422,18 +5422,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2963,18 +2963,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -1772,18 +1772,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -3048,18 +3048,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -4014,18 +4014,18 @@ case FACTORS:
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -2372,7 +2372,7 @@ case TEVAL:
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
|
@ -2380,11 +2380,11 @@ case TEVAL:
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -5002,14 +5002,14 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
RetNum=ERR_NOTMINE;
|
RetNum=ERR_NOTMINE;
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
|
|
|
@ -3000,18 +3000,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN OBJECT FROM THIS LIBRARY AND MUST
|
// THIS OPCODE RECEIVES A POINTER TO AN OBJECT FROM THIS LIBRARY AND MUST
|
||||||
|
|
|
@ -1082,14 +1082,14 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
RetNum=ERR_NOTMINE;
|
RetNum=ERR_NOTMINE;
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
|
|
|
@ -754,18 +754,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -2471,18 +2471,18 @@ case SDPATH:
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -826,18 +826,18 @@ case EDINSERT:
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -1132,18 +1132,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -1279,18 +1279,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -1018,18 +1018,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -2106,18 +2106,18 @@ case SCLVIEW:
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -2713,18 +2713,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -228,18 +228,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -138,7 +138,15 @@ void libGetRomptrID(BINT libnum,WORDPTR *table,WORDPTR ptr)
|
||||||
while(table[idx]) {
|
while(table[idx]) {
|
||||||
if( (ptr>=table[idx]) && (ptr<table[idx]+rplObjSize(table[idx]))) {
|
if( (ptr>=table[idx]) && (ptr<table[idx]+rplObjSize(table[idx]))) {
|
||||||
BINT offset=ptr-table[idx];
|
BINT offset=ptr-table[idx];
|
||||||
ObjectID=MKROMPTRID(libnum,idx,offset);
|
if(offset>30) {
|
||||||
|
ObjectID=MKROMPTRID(libnum,idx,31); // MARK OFFSET=31 TO INDICATE OFFSET EXCEEDS THE OFFSET
|
||||||
|
ObjectIDHash=libComputeHash(ptr);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ObjectID=MKROMPTRID(libnum,idx,offset);
|
||||||
|
ObjectIDHash=0;
|
||||||
|
}
|
||||||
|
|
||||||
RetNum=OK_CONTINUE;
|
RetNum=OK_CONTINUE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -148,7 +156,7 @@ void libGetRomptrID(BINT libnum,WORDPTR *table,WORDPTR ptr)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void libGetPTRFromID(WORDPTR *table,WORD id)
|
void libGetPTRFromID(WORDPTR *table,WORD id,WORD hash)
|
||||||
{
|
{
|
||||||
BINT idx=0;
|
BINT idx=0;
|
||||||
while(table[idx]) ++idx;
|
while(table[idx]) ++idx;
|
||||||
|
@ -156,7 +164,33 @@ void libGetPTRFromID(WORDPTR *table,WORD id)
|
||||||
RetNum=ERR_NOTMINE;
|
RetNum=ERR_NOTMINE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ObjectPTR=table[ROMPTRID_IDX(id)]+ROMPTRID_OFF(id);
|
if(ROMPTRID_OFF(id)<31) ObjectPTR=table[ROMPTRID_IDX(id)]+ROMPTRID_OFF(id);
|
||||||
|
else {
|
||||||
|
// SCAN THE OBJECT TO FIND A MATCHING HASH
|
||||||
|
WORDPTR scan=table[ROMPTRID_IDX(id)],ptr;
|
||||||
|
WORDPTR end=rplSkipOb(scan);
|
||||||
|
BINT len;
|
||||||
|
WORD exhash;
|
||||||
|
scan+=31; // MINIMUM OFFSET FOR A SEARCH
|
||||||
|
while(scan<end) {
|
||||||
|
exhash=115127;
|
||||||
|
ptr=scan;
|
||||||
|
while(ptr<end) {
|
||||||
|
exhash=((exhash<<13)-exhash)+ *ptr;
|
||||||
|
++ptr;
|
||||||
|
if(exhash==hash) {
|
||||||
|
// FOUND AN OBJECT, CHECK FOR VALIDITY
|
||||||
|
if(rplObjSize(scan)==ptr-scan) {
|
||||||
|
ObjectPTR=scan;
|
||||||
|
RetNum=OK_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
++scan;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
RetNum=OK_CONTINUE;
|
RetNum=OK_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,6 +305,16 @@ while(object!=end) {
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WORD libComputeHash2(WORDPTR start,BINT nwords)
|
||||||
|
{
|
||||||
|
WORDPTR end=start+nwords;
|
||||||
|
WORD hash=115127;
|
||||||
|
while(start!=end) {
|
||||||
|
hash=((hash<<13)-hash)+ *start;
|
||||||
|
++start;
|
||||||
|
}
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// FINDS A TEXT MESSAGE IN A TABLE IN THE FORM
|
// FINDS A TEXT MESSAGE IN A TABLE IN THE FORM
|
||||||
|
|
|
@ -1016,18 +1016,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -1531,14 +1531,14 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
RetNum=ERR_NOTMINE;
|
RetNum=ERR_NOTMINE;
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
|
|
|
@ -988,7 +988,7 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
|
@ -999,7 +999,7 @@ void LIB_HANDLER()
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1723,18 +1723,18 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -352,14 +352,14 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
RetNum=ERR_NOTMINE;
|
RetNum=ERR_NOTMINE;
|
||||||
return;
|
return;
|
||||||
case OPCODE_ROMID2PTR:
|
case OPCODE_ROMID2PTR:
|
||||||
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
// THIS OPCODE GETS A UNIQUE ID AND MUST RETURN A POINTER TO THE OBJECT IN ROM
|
||||||
// ObjectID = ID
|
// ObjectID = ID, ObjectIDHash=hash
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,7 @@ void LIB_HANDLER()
|
||||||
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
// THIS OPCODE RECEIVES A POINTER TO AN RPL OBJECT IN ROM, EXPORTED BY THIS LIBRARY
|
||||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||||
// ObjectPTR = POINTER TO ROM OBJECT
|
// ObjectPTR = POINTER TO ROM OBJECT
|
||||||
// LIBBRARY RETURNS: ObjectID=new ID, RetNum=OK_CONTINUE
|
// LIBBRARY RETURNS: ObjectID=new ID, ObjectIDHash=hash, RetNum=OK_CONTINUE
|
||||||
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
// OR RetNum=ERR_NOTMINE IF THE OBJECT IS NOT RECOGNIZED
|
||||||
|
|
||||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||||
|
@ -175,7 +175,7 @@ void LIB_HANDLER()
|
||||||
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
// LIBRARY RETURNS: ObjectPTR = POINTER TO THE OBJECT, AND RetNum=OK_CONTINUE
|
||||||
// OR RetNum= ERR_NOTMINE;
|
// OR RetNum= ERR_NOTMINE;
|
||||||
|
|
||||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OPCODE_CHECKOBJ:
|
case OPCODE_CHECKOBJ:
|
||||||
|
|
|
@ -174,11 +174,12 @@ void libProbeCmds(char *libnames[], BINT tokeninfo[], int numcmds);
|
||||||
void libGetInfo(WORD opcode,char *libnames[],WORD libopcodes[],BINT tokeninfo[],int numcmds);
|
void libGetInfo(WORD opcode,char *libnames[],WORD libopcodes[],BINT tokeninfo[],int numcmds);
|
||||||
void libGetInfo2(WORD opcode, char *libnames[], BINT tokeninfo[], int numcmds);
|
void libGetInfo2(WORD opcode, char *libnames[], BINT tokeninfo[], int numcmds);
|
||||||
void libGetRomptrID(BINT libnum,WORDPTR *table,WORDPTR ptr);
|
void libGetRomptrID(BINT libnum,WORDPTR *table,WORDPTR ptr);
|
||||||
void libGetPTRFromID(WORDPTR *table,WORD id);
|
void libGetPTRFromID(WORDPTR *table,WORD id,WORD hash);
|
||||||
void libAutoCompleteNext(BINT libnum,char *libnames[],int numcmds);
|
void libAutoCompleteNext(BINT libnum,char *libnames[],int numcmds);
|
||||||
void libAutoCompletePrev(BINT libnum,char *libnames[],int numcmds);
|
void libAutoCompletePrev(BINT libnum,char *libnames[],int numcmds);
|
||||||
void libFindMsg(BINT message,WORDPTR table);
|
void libFindMsg(BINT message,WORDPTR table);
|
||||||
WORD libComputeHash(WORDPTR object);
|
WORD libComputeHash(WORDPTR object);
|
||||||
|
WORD libComputeHash2(WORDPTR start,BINT nwords);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,7 @@ UBINT ArgNum1,ArgNum2,ArgNum3,RetNum;
|
||||||
|
|
||||||
#define BlankLen ArgNum2
|
#define BlankLen ArgNum2
|
||||||
#define DecompHints ArgNum2
|
#define DecompHints ArgNum2
|
||||||
|
#define ObjectIDHash ArgNum2
|
||||||
|
|
||||||
#define CurrentConstruct ArgNum3
|
#define CurrentConstruct ArgNum3
|
||||||
#define SuggestedOpcode ArgNum3
|
#define SuggestedOpcode ArgNum3
|
||||||
|
|
Loading…
Reference in a new issue