mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-09-28 00:54:40 +00:00
Added ArgsCook() param to specify which operators to process
This commit is contained in:
parent
4969ed13ba
commit
f13e089878
@ -379,13 +379,18 @@ void ArgsRawParse ( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Note: The number of args can be changed via:
|
/**
|
||||||
// address1,length Length
|
@param nArgs Number of raw args.
|
||||||
// address1:address2 Range
|
@param bProcessMask Bit-flags of which arg operators to process.
|
||||||
// address1+delta Delta
|
|
||||||
// address1-delta Delta
|
Note: The number of args can be changed via:
|
||||||
//===========================================================================
|
|
||||||
int ArgsCook ( const int nArgs )
|
address1,length Length
|
||||||
|
address1:address2 Range
|
||||||
|
address1+delta Delta
|
||||||
|
address1-delta Delta
|
||||||
|
//=========================================================================== */
|
||||||
|
int ArgsCook ( const int nArgs, const int bProcessMask )
|
||||||
{
|
{
|
||||||
const int BASE = 16; // hex
|
const int BASE = 16; // hex
|
||||||
TCHAR *pSrc = NULL;
|
TCHAR *pSrc = NULL;
|
||||||
@ -409,6 +414,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
pArg = & (g_aArgs[ iArg ]);
|
pArg = & (g_aArgs[ iArg ]);
|
||||||
pSrc = & (pArg->sArg[ 0 ]);
|
pSrc = & (pArg->sArg[ 0 ]);
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_DOLLAR))
|
||||||
if (pArg->eToken == TOKEN_DOLLAR) // address
|
if (pArg->eToken == TOKEN_DOLLAR) // address
|
||||||
{
|
{
|
||||||
// TODO: Need to flag was a DOLLAR token for assembler
|
// TODO: Need to flag was a DOLLAR token for assembler
|
||||||
@ -463,6 +469,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
pArg->bSymbol = true;
|
pArg->bSymbol = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_COMMA))
|
||||||
if (pArg->eToken == TOKEN_COMMA) // COMMMA , length
|
if (pArg->eToken == TOKEN_COMMA) // COMMMA , length
|
||||||
{
|
{
|
||||||
pPrev->nVal2 = nAddressVal;
|
pPrev->nVal2 = nAddressVal;
|
||||||
@ -472,6 +479,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 2;
|
nParamLen = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_COLON))
|
||||||
if (pArg->eToken == TOKEN_COLON) // COLON : range
|
if (pArg->eToken == TOKEN_COLON) // COLON : range
|
||||||
{
|
{
|
||||||
pPrev->nVal2 = nAddressVal;
|
pPrev->nVal2 = nAddressVal;
|
||||||
@ -481,6 +489,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 2;
|
nParamLen = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_AMPERSAND))
|
||||||
if (pArg->eToken == TOKEN_AMPERSAND) // AND & delta
|
if (pArg->eToken == TOKEN_AMPERSAND) // AND & delta
|
||||||
{
|
{
|
||||||
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
||||||
@ -492,6 +501,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 2;
|
nParamLen = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_PIPE))
|
||||||
if (pArg->eToken == TOKEN_PIPE) // OR | delta
|
if (pArg->eToken == TOKEN_PIPE) // OR | delta
|
||||||
{
|
{
|
||||||
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
||||||
@ -503,6 +513,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 2;
|
nParamLen = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_CARET))
|
||||||
if (pArg->eToken == TOKEN_CARET) // XOR ^ delta
|
if (pArg->eToken == TOKEN_CARET) // XOR ^ delta
|
||||||
{
|
{
|
||||||
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
||||||
@ -514,6 +525,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 2;
|
nParamLen = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_PLUS))
|
||||||
if (pArg->eToken == TOKEN_PLUS) // PLUS + delta
|
if (pArg->eToken == TOKEN_PLUS) // PLUS + delta
|
||||||
{
|
{
|
||||||
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
||||||
@ -525,6 +537,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 2;
|
nParamLen = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_MINUS))
|
||||||
if (pArg->eToken == TOKEN_MINUS) // MINUS - delta
|
if (pArg->eToken == TOKEN_MINUS) // MINUS - delta
|
||||||
{
|
{
|
||||||
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
||||||
@ -536,6 +549,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 2;
|
nParamLen = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_PERCENT))
|
||||||
if (pArg->eToken == TOKEN_PERCENT) // PERCENT % delta
|
if (pArg->eToken == TOKEN_PERCENT) // PERCENT % delta
|
||||||
{
|
{
|
||||||
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
||||||
@ -547,6 +561,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 2;
|
nParamLen = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_FSLASH))
|
||||||
if (pArg->eToken == TOKEN_FSLASH) // FORWARD SLASH / delta
|
if (pArg->eToken == TOKEN_FSLASH) // FORWARD SLASH / delta
|
||||||
{
|
{
|
||||||
if (pNext->eToken == TOKEN_FSLASH) // Comment
|
if (pNext->eToken == TOKEN_FSLASH) // Comment
|
||||||
@ -565,6 +580,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 2;
|
nParamLen = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_EQUAL))
|
||||||
if (pArg->eToken == TOKEN_EQUAL) // EQUAL = assign
|
if (pArg->eToken == TOKEN_EQUAL) // EQUAL = assign
|
||||||
{
|
{
|
||||||
pPrev->nVal1 = nAddressRHS;
|
pPrev->nVal1 = nAddressRHS;
|
||||||
@ -572,6 +588,7 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 0; // need token for Smart BreakPoints
|
nParamLen = 0; // need token for Smart BreakPoints
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_HASH))
|
||||||
if (pArg->eToken == TOKEN_HASH) // HASH # immediate
|
if (pArg->eToken == TOKEN_HASH) // HASH # immediate
|
||||||
{
|
{
|
||||||
_Arg_Shift( iArg + nParamLen, nArgs, iArg );
|
_Arg_Shift( iArg + nParamLen, nArgs, iArg );
|
||||||
@ -583,16 +600,19 @@ int ArgsCook ( const int nArgs )
|
|||||||
nParamLen = 0;
|
nParamLen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_LESS_THAN))
|
||||||
if (pArg->eToken == TOKEN_LESS_THAN) // <
|
if (pArg->eToken == TOKEN_LESS_THAN) // <
|
||||||
{
|
{
|
||||||
nParamLen = 0;
|
nParamLen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_GREATER_THAN))
|
||||||
if (pArg->eToken == TOKEN_GREATER_THAN) // >
|
if (pArg->eToken == TOKEN_GREATER_THAN) // >
|
||||||
{
|
{
|
||||||
nParamLen = 0;
|
nParamLen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bProcessMask & (1 << TOKEN_EXCLAMATION))
|
||||||
if (pArg->eToken == TOKEN_EXCLAMATION) // NOT_EQUAL !
|
if (pArg->eToken == TOKEN_EXCLAMATION) // NOT_EQUAL !
|
||||||
{
|
{
|
||||||
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
if (! ArgsGetImmediateValue( pNext, & nAddressRHS ))
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
int ArgsGet ( TCHAR * pInput );
|
int ArgsGet ( TCHAR * pInput );
|
||||||
bool ArgsGetRegisterValue ( Arg_t *pArg, WORD * pAddressValue_ );
|
bool ArgsGetRegisterValue ( Arg_t *pArg, WORD * pAddressValue_ );
|
||||||
void ArgsRawParse ( void );
|
void ArgsRawParse ( void );
|
||||||
int ArgsCook ( const int nArgs ); // ArgsRawCook
|
int ArgsCook ( const int nArgs, const int bProcessMask ); // ArgsRawCook
|
||||||
|
|
||||||
// Token
|
// Token
|
||||||
const char * ParserFindToken( const char *pSrc, const TokenTable_t *aTokens, const int nTokens, ArgToken_e * pToken_ );
|
const char * ParserFindToken( const char *pSrc, const TokenTable_t *aTokens, const int nTokens, ArgToken_e * pToken_ );
|
||||||
|
Loading…
Reference in New Issue
Block a user