struct asm_tok *PushInputStatus( struct input_status *oldstat ) /*************************************************************/ { oldstat->token_stringbuf = token_stringbuf; oldstat->token_count = Token_Count; oldstat->currsource = CurrSource; /* if there's a comment, attach it to current source */ if ( ModuleInfo.CurrComment ) { int i = strlen( CurrSource ); oldstat->CurrComment = CurrSource + i; strcpy( oldstat->CurrComment, ModuleInfo.CurrComment ); } else oldstat->CurrComment = NULL; oldstat->line_flags = ModuleInfo.line_flags; /* v2.08 */ #ifdef __I86__ oldstat->tokenarray = ModuleInfo.tokenarray; oldstat->stringbufferend = StringBufferEnd; CurrSource = MemAlloc( MAX_LINE_LEN + SIZE_TOKENARRAY + SIZE_STRINGBUFFER ); ModuleInfo.tokenarray = (struct asm_tok *)( CurrSource + MAX_LINE_LEN ); token_stringbuf = CurrSource + MAX_LINE_LEN + SIZE_TOKENARRAY; #else token_stringbuf = StringBufferEnd; ModuleInfo.tokenarray += Token_Count + 1; CurrSource = GetAlignedPointer( CurrSource, strlen( CurrSource ) ); /**/myassert( ( CurrSource + MAX_LINE_LEN ) <= (char *)ModuleInfo.tokenarray ); /**/myassert( ( ModuleInfo.tokenarray + sizeof( struct asm_tok ) * MAX_TOKEN ) <= end_tokenarray ); /**/myassert( ( token_stringbuf + 2 * MAX_LINE_LEN ) <= end_stringbuf ); #endif DebugMsg1(("PushInputStatus() stringbuf-tokencnt-currsrc old=%X-%u-%X new=%X-%X-%X\n", oldstat->token_stringbuf, oldstat->token_count, oldstat->currsource, token_stringbuf, ModuleInfo.tokenarray, CurrSource )); return( ModuleInfo.tokenarray ); }
static ret_code CatStrFunc( struct macro_instance *mi, char *buffer, struct asm_tok tokenarray[] ) /************************************************************************************************/ { #ifdef DEBUG_OUT int cnt = 0; #endif int i; char *p; DebugMsg1(("@CatStr( %s )\n", mi->parm_array[0] ? mi->parm_array[0] : "NULL" )); for ( p = mi->parm_array[0]; mi->parmcnt; mi->parmcnt-- ) { DebugMsg1(("@CatStr.%u: >%s<\n", cnt++, p )); i = strlen( p ); memcpy( buffer, p, i ); p = GetAlignedPointer( p, i ); buffer += i; } *buffer = NULLC; return( NOT_ERROR ); }