コード例 #1
0
ファイル: fixoffs.c プロジェクト: nickgn12/neshla
void AddFixOffs(S16 type, S16 size, U8 *ptr, S32 org, void *data)
{
    FIXOFFS *fix;  
    INSCRIPT *scr = curScript;
    if(scr)
        while(scr->parent&&!scr->path)
            scr = scr->parent;

    if(PRECOMPILING) return;

    fix = (FIXOFFS*)ssAlloc(sizeof(FIXOFFS));

    if(curMacro && (type==FIXTYPE_LABEL) &&
       (((LABEL*)data)->flags&LABELFLAG_MACKER) ) {
        fix->prev                       = curMacro->fixoffs;
        curMacro->fixoffs       = fix;
    } else {
        fix->prev       = fixOffs;
        fixOffs         = fix;
    }

    fix->type   = type;
    fix->ptr    = ptr;
    fix->org    = org;
    fix->size   = size;
    fix->data   = data;

    if(scr) {
        fix->filename   = strdup(scr->filename);
        fix->line               = scr->line;
    } else
        fix->filename   = NULL;
}
コード例 #2
0
ファイル: exp_preprocess.c プロジェクト: nickgn12/neshla
void FASTCALL EnterIfDef(BOOL RESULT)
{
    IFDEF *ifdef = (IFDEF*)ssAlloc(sizeof(IFDEF));

    ifdef->prev                         = curScript->ifdefTrack;
    curScript->ifdefTrack               = ifdef;
    ifdef->RESULT                       = RESULT;
    ifdef->ELSE                         = FALSE;
}
コード例 #3
0
ファイル: banks.c プロジェクト: irbrad/NESHLA
void 	FASTCALL SetBank(S16 type, char *label)
{
	BANK *newbank;
    int i;

    if(!PRECOMPILING) {
      	curBank = FindBank(label);
        return;
    }

    if(bankCounts[type]>MAX_BANKCOUNT)
    	fatal(FTL_MAXBANKCOUNT);

    newbank = (BANK*)ssAlloc(sizeof(BANK));
	if(!banks)
    	banks = newbank;
    if(bankPtr) {
     	bankPtr->next	= newbank;
    }
    bankPtr	=
    curBank = newbank;

    newbank->next 		= NULL;
    newbank->type		= type;
    newbank->maxsize	= bankSizes[type];
    newbank->bank		= bankCounts[type]++;
    newbank->org		= (type==BANKTYPE_ROM)?0x10000-newbank->maxsize:0;

    newbank->buffer		=
    newbank->ptr		= (U8*)ssAlloc(newbank->maxsize);
    newbank->end		= newbank->buffer+newbank->maxsize;

    for(i=0; i<newbank->maxsize; i++)
     	newbank->buffer[i] = GetPadChar();
    if(label)
    	newbank->label	= strdup(label);
    else {
    	newbank->label	= (char*)ssAlloc((U32)strlen("bankXXXXXXXXX"));
    	sprintf(newbank->label,"bank%04u",newbank->bank);
    }
}      
コード例 #4
0
ファイル: fileio.c プロジェクト: irbrad/NESHLA
U8 *FASTCALL LoadFile(int dir, char *filename, S32 *_len)
{
	U32 len;
    U8 *buffer=NULL;
    FILE *f=OpenFile(dir,filename,"rb");
    if(f) {
     	len=FileLen(f);
        if(len) {
         	buffer = ssAlloc(len+1);
            FRead(buffer,len,f);
            buffer[len] = 0;
        }
        if(_len)
        	*_len = len;
        CloseFile(f);
    }
    return buffer;
}    
コード例 #5
0
ファイル: fileio.c プロジェクト: irbrad/NESHLA
BOOL FASTCALL AddStringList(STRLIST **plist, char *label)
{
	STRLIST *list=*plist, *newlist;  

	newlist = ssAlloc(sizeof(STRLIST));

    if(list) {
    	while(list->next)
        	list = list->next; 
    	list->next	= newlist;
    } else
    	*plist = newlist;

	newlist->next		= NULL;
	newlist->string		= strdup(label);

    return TRUE;
}