mirror of
https://git.code.sf.net/p/newrpl/sources
synced 2024-09-29 17:36:57 +02: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
|
||||
// IF IT FAILS, RETURNS 0
|
||||
|
||||
WORD rplConvertToRomptrID(WORDPTR ptr)
|
||||
UBINT64 rplConvertToRomptrID(WORDPTR ptr)
|
||||
{
|
||||
BINT libnum=MAXLIBNUMBER;
|
||||
BINT SavedOpcode;
|
||||
|
@ -30,9 +30,9 @@ WORD rplConvertToRomptrID(WORDPTR ptr)
|
|||
|
||||
(*han)();
|
||||
|
||||
if(RetNum==OK_CONTINUE) return ObjectID;
|
||||
if(RetNum==OK_CONTINUE) return ((UBINT64)ObjectID) | (((UBINT64)ObjectIDHash)<<32);
|
||||
}
|
||||
--libnum;
|
||||
libnum=rplGetNextLib(libnum);
|
||||
}
|
||||
CurOpcode=SavedOpcode;
|
||||
|
||||
|
@ -45,7 +45,7 @@ WORD rplConvertToRomptrID(WORDPTR ptr)
|
|||
// RETURNS 0 IF NOT A VALID ID
|
||||
// OR NOT RECOGNIZED BY ITS LIBRARIES
|
||||
|
||||
WORDPTR rplConvertIDToPTR(WORD romptrid)
|
||||
WORDPTR rplConvertIDToPTR(UBINT64 romptrid)
|
||||
{
|
||||
if(!ISROMPTRID(romptrid)) return 0;
|
||||
|
||||
|
@ -61,6 +61,7 @@ WORDPTR rplConvertIDToPTR(WORD romptrid)
|
|||
if(!han) return 0;
|
||||
RetNum=ERR_INVALID;
|
||||
ObjectID=romptrid;
|
||||
ObjectIDHash=romptrid>>32;
|
||||
|
||||
(*han)();
|
||||
|
||||
|
@ -137,23 +138,23 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
|||
sections[k].nitems=DirsTop-Directories;
|
||||
sections[k].offwords=offset;
|
||||
|
||||
offset+=sections[k].nitems;
|
||||
offset+=sections[k].nitems*2;
|
||||
++k;
|
||||
|
||||
// SYSTEM POINTERS
|
||||
sections[k].start=(WORDPTR)GC_PTRUpdate;
|
||||
sections[k].nitems=MAX_GC_PTRUPDATE;
|
||||
sections[k].nitems=(MAX_GC_PTRUPDATE);
|
||||
sections[k].offwords=offset;
|
||||
|
||||
offset+=sections[k].nitems;
|
||||
offset+=sections[k].nitems*2;
|
||||
++k;
|
||||
|
||||
// STACK
|
||||
sections[k].start=(WORDPTR)DStk;
|
||||
sections[k].nitems=DSTop-DStk;
|
||||
sections[k].nitems=(DSTop-DStk);
|
||||
sections[k].offwords=offset;
|
||||
|
||||
offset+=sections[k].nitems;
|
||||
offset+=sections[k].nitems*2;
|
||||
++k;
|
||||
|
||||
// FILL ALL OTHER SECTIONS
|
||||
|
@ -177,6 +178,13 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
|||
++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
|
||||
|
||||
// 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
|
||||
if(!writefunc( (BINT)(ptr-TempOb)+ sections[1].offwords,OpaqueArgument)) return 0;
|
||||
} 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
|
||||
|
||||
WORD id=rplConvertToRomptrID(ptr);
|
||||
UBINT64 id=rplConvertToRomptrID(ptr);
|
||||
|
||||
if(!id) {
|
||||
// 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;
|
||||
}
|
||||
if(!writefunc(id,OpaqueArgument)) return 0;
|
||||
if(ROMPTRID_OFF(id)==31) {
|
||||
++writeoff;
|
||||
if(!writefunc((id>>32),OpaqueArgument)) return 0;
|
||||
}
|
||||
}
|
||||
++writeoff;
|
||||
}
|
||||
|
||||
while(writeoff<sections[4].offwords) { if(!writefunc(0,OpaqueArgument)) return 0; ++writeoff; }
|
||||
|
||||
// DUMP SYSTEM POINTERS
|
||||
for(k=0;k<sections[4].nitems;++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;
|
||||
} else {
|
||||
|
||||
WORD id;
|
||||
UBINT64 id;
|
||||
if(!ptr) {
|
||||
// NULL POINTER, STORE AS-IS
|
||||
id=0;
|
||||
|
@ -253,10 +267,17 @@ BINT rplBackup(int (*writefunc)(unsigned int,void *),void *OpaqueArgument)
|
|||
}
|
||||
}
|
||||
if(!writefunc(id,OpaqueArgument)) return 0;
|
||||
if(ROMPTRID_OFF(id)==31) {
|
||||
++writeoff;
|
||||
if(!writefunc((id>>32),OpaqueArgument)) return 0;
|
||||
}
|
||||
}
|
||||
++writeoff;
|
||||
}
|
||||
|
||||
while(writeoff<sections[5].offwords) { if(!writefunc(0,OpaqueArgument)) return 0; ++writeoff; }
|
||||
|
||||
|
||||
// DUMP DATA STACK POINTERS
|
||||
for(k=0;k<sections[5].nitems;++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;
|
||||
} else {
|
||||
|
||||
WORD id;
|
||||
UBINT64 id;
|
||||
|
||||
// SPECIAL CASE - HANDLE OFFSET NUMBERS STORED INSIDE THE STACK
|
||||
if((PTR2NUMBER)ptr<=(UBINT64)sections[5].nitems) {
|
||||
// THIS IS A NUMBER, NOT A POINTER
|
||||
// IN THE STACK, THESE ARE STACK MARKERS
|
||||
// REPLACE WITH THE ACTUAL NUMBER, BUT USE NEGATIVE OFFSET TO DISTINGUISH IT FROM FILE OFFSETS
|
||||
id=-((PTR2NUMBER)ptr);
|
||||
// REPLACE WITH A SPECIAL ROMPTRID FOR LIBRARY 0, ID=63, offset=31
|
||||
id=(((UBINT64)((PTR2NUMBER)ptr))<<32) | MKROMPTRID(0,63,31);
|
||||
}
|
||||
else {
|
||||
// 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(ROMPTRID_OFF(id)==31) {
|
||||
++writeoff;
|
||||
if(!writefunc((id>>32),OpaqueArgument)) return 0;
|
||||
}
|
||||
|
||||
}
|
||||
++writeoff;
|
||||
}
|
||||
|
||||
while(writeoff<sections[6].offwords) { if(!writefunc(0,OpaqueArgument)) return 0; ++writeoff; }
|
||||
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
@ -329,10 +357,15 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
|||
{
|
||||
sections[k].offwords=readfunc(OpaqueArgument);
|
||||
++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
|
||||
// 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
|
||||
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[3].nitems+DIRSLACK>1024) growDirs(sections[3].nitems+DIRSLACK);
|
||||
if((sections[3].nitems)+DIRSLACK>1024) growDirs(sections[3].nitems+DIRSLACK);
|
||||
if(includestack) {
|
||||
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
|
||||
|
||||
while(offset!=1024) { readfunc(OpaqueArgument); ++offset; }
|
||||
while(offset<1024) { readfunc(OpaqueArgument); ++offset; }
|
||||
|
||||
// HERE'S THE START OF TEMPBLOCKS
|
||||
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;
|
||||
|
||||
while(offset<sections[1].offwords) { readfunc(OpaqueArgument); ++offset; }
|
||||
|
||||
|
||||
// HERE'S THE START OF TEMPOB
|
||||
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;
|
||||
|
||||
while(offset<sections[2].offwords) { readfunc(OpaqueArgument); ++offset; }
|
||||
|
||||
|
||||
// AFTER TEMPOB
|
||||
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;
|
||||
|
||||
while(offset<sections[3].offwords) { readfunc(OpaqueArgument); ++offset; }
|
||||
|
||||
// HERE'S THE START OF THE DIRECTORIES
|
||||
|
||||
for(k=0;k<sections[3].nitems;++k)
|
||||
{
|
||||
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);
|
||||
if(Directories[k]==0) ++errors; // JUST COUNT THE ERRORS BUT DON'T STOP, RECOVER AS MUCH AS POSSIBLE
|
||||
++offset;
|
||||
|
@ -431,15 +479,25 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
|||
|
||||
DirsTop=Directories+sections[3].nitems;
|
||||
|
||||
while(offset<sections[4].offwords) { readfunc(OpaqueArgument); ++offset; }
|
||||
|
||||
// HERE'S THE START OF SYSTEM POINTERS
|
||||
|
||||
for(k=0;k<sections[4].nitems;++k)
|
||||
{
|
||||
data=readfunc(OpaqueArgument);
|
||||
if(ISROMPTRID(data)) {
|
||||
GC_PTRUpdate[k]=rplConvertIDToPTR(data);
|
||||
// EARLIER VERSIONS WOULD CONVERT INVALID POINTERS INTO POINTERS TO zero_bint
|
||||
if(GC_PTRUpdate[k]==(WORDPTR)zero_bint) GC_PTRUpdate[k]=0;
|
||||
|
||||
WORD hash=0;
|
||||
|
||||
if(ROMPTRID_OFF(data)==31) {
|
||||
hash=readfunc(OpaqueArgument);
|
||||
++offset;
|
||||
}
|
||||
|
||||
|
||||
GC_PTRUpdate[k]=rplConvertIDToPTR(((UBINT64)data) | (((UBINT64)hash)<<32));
|
||||
|
||||
}
|
||||
else {
|
||||
if(!data) GC_PTRUpdate[k]=0; // RESTORE NULL POINTERS
|
||||
|
@ -460,15 +518,30 @@ BINT rplRestoreBackup(BINT includestack,WORD (*readfunc)(void *),void *OpaqueArg
|
|||
if(includestack) {
|
||||
// OPTIONALLY EXTRACT THE DATA STACK
|
||||
|
||||
while(offset<sections[5].offwords) { readfunc(OpaqueArgument); ++offset; }
|
||||
DStkProtect=DStkBottom=DStk;
|
||||
|
||||
for(k=0;k<sections[5].nitems;++k)
|
||||
{
|
||||
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 {
|
||||
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);
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
case OPCODE_CHECKOBJ:
|
||||
|
|
|
@ -1754,18 +1754,18 @@ case NUMINT:
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
//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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
//libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
//libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
RetNum=ERR_NOTMINE;
|
||||
return;
|
||||
|
||||
|
|
|
@ -1651,18 +1651,18 @@ void LIB_HANDLER()
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
case OPCODE_CHECKOBJ:
|
||||
|
|
|
@ -2612,18 +2612,18 @@ case TVARSE:
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
RetNum=ERR_NOTMINE;
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// 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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
RetNum=ERR_NOTMINE;
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// 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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
RetNum=ERR_NOTMINE;
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// 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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
|
||||
|
|
|
@ -5422,18 +5422,18 @@ void LIB_HANDLER()
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
|
||||
|
|
|
@ -2963,18 +2963,18 @@ void LIB_HANDLER()
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
case OPCODE_CHECKOBJ:
|
||||
|
|
|
@ -4014,18 +4014,18 @@ case FACTORS:
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
case OPCODE_CHECKOBJ:
|
||||
|
|
|
@ -2372,7 +2372,7 @@ case TEVAL:
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
|
@ -2380,11 +2380,11 @@ case TEVAL:
|
|||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
RetNum=ERR_NOTMINE;
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// 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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
case OPCODE_CHECKOBJ:
|
||||
// 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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
RetNum=ERR_NOTMINE;
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// 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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
case OPCODE_CHECKOBJ:
|
||||
|
|
|
@ -2471,18 +2471,18 @@ case SDPATH:
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
case OPCODE_CHECKOBJ:
|
||||
|
|
|
@ -826,18 +826,18 @@ case EDINSERT:
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
case OPCODE_CHECKOBJ:
|
||||
|
|
|
@ -2106,18 +2106,18 @@ case SCLVIEW:
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
case OPCODE_CHECKOBJ:
|
||||
|
|
|
@ -138,7 +138,15 @@ void libGetRomptrID(BINT libnum,WORDPTR *table,WORDPTR ptr)
|
|||
while(table[idx]) {
|
||||
if( (ptr>=table[idx]) && (ptr<table[idx]+rplObjSize(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;
|
||||
return;
|
||||
}
|
||||
|
@ -148,7 +156,7 @@ void libGetRomptrID(BINT libnum,WORDPTR *table,WORDPTR ptr)
|
|||
return;
|
||||
}
|
||||
|
||||
void libGetPTRFromID(WORDPTR *table,WORD id)
|
||||
void libGetPTRFromID(WORDPTR *table,WORD id,WORD hash)
|
||||
{
|
||||
BINT idx=0;
|
||||
while(table[idx]) ++idx;
|
||||
|
@ -156,7 +164,33 @@ void libGetPTRFromID(WORDPTR *table,WORD id)
|
|||
RetNum=ERR_NOTMINE;
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -271,6 +305,16 @@ while(object!=end) {
|
|||
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
|
||||
|
|
|
@ -1016,18 +1016,18 @@ void LIB_HANDLER()
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
RetNum=ERR_NOTMINE;
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// 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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
|
||||
|
|
|
@ -1723,18 +1723,18 @@ void LIB_HANDLER()
|
|||
// 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
|
||||
// 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
|
||||
|
||||
libGetRomptrID(LIBRARY_NUMBER,(WORDPTR *)ROMPTR_TABLE,ObjectPTR);
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
RetNum=ERR_NOTMINE;
|
||||
return;
|
||||
case OPCODE_ROMID2PTR:
|
||||
// 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
|
||||
// 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
|
||||
// AND CONVERTS IT TO A UNIQUE ID FOR BACKUP PURPOSES
|
||||
// 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
|
||||
|
||||
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
|
||||
// OR RetNum= ERR_NOTMINE;
|
||||
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID);
|
||||
libGetPTRFromID((WORDPTR *)ROMPTR_TABLE,ObjectID,ObjectIDHash);
|
||||
return;
|
||||
|
||||
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 libGetInfo2(WORD opcode, char *libnames[], BINT tokeninfo[], int numcmds);
|
||||
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 libAutoCompletePrev(BINT libnum,char *libnames[],int numcmds);
|
||||
void libFindMsg(BINT message,WORDPTR table);
|
||||
WORD libComputeHash(WORDPTR object);
|
||||
WORD libComputeHash2(WORDPTR start,BINT nwords);
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -114,6 +114,7 @@ UBINT ArgNum1,ArgNum2,ArgNum3,RetNum;
|
|||
|
||||
#define BlankLen ArgNum2
|
||||
#define DecompHints ArgNum2
|
||||
#define ObjectIDHash ArgNum2
|
||||
|
||||
#define CurrentConstruct ArgNum3
|
||||
#define SuggestedOpcode ArgNum3
|
||||
|
|
Loading…
Reference in a new issue