Add charpad and spritepad import
This commit is contained in:
parent
ff1377f7bb
commit
f0deaab394
42
README.md
42
README.md
|
@ -165,6 +165,48 @@ Embedded data can be compressed during compile time and expanded at runtime usin
|
||||||
Compression algorithms so far are LZ (lzo) and run length (rle).
|
Compression algorithms so far are LZ (lzo) and run length (rle).
|
||||||
|
|
||||||
|
|
||||||
|
### Embedding sprite and graphics data
|
||||||
|
|
||||||
|
The #embed preprocessor can also import components from spritepad and charpad files (.spd version 5 and .ctm version 8).
|
||||||
|
|
||||||
|
The component to extract (e.g. chars or tiles) is added as a further specifier.
|
||||||
|
|
||||||
|
const char FloorChars[] = {
|
||||||
|
#embed ctm_chars lzo "floortiles.ctm"
|
||||||
|
};
|
||||||
|
|
||||||
|
Imports the character data and compresses it using lzo compression.
|
||||||
|
|
||||||
|
const char CardsTiles[] = {
|
||||||
|
#embed ctm_tiles8 "cards.ctm"
|
||||||
|
};
|
||||||
|
|
||||||
|
Imports the tiles in 8 bit form and builds word constants
|
||||||
|
|
||||||
|
const unsigned CardsTiles[] = {
|
||||||
|
#embed ctm_tiles16 word "cards.ctm"
|
||||||
|
};
|
||||||
|
|
||||||
|
Imports the tiles in 16 bit form and builds word constants
|
||||||
|
|
||||||
|
const char CardsAttrib1[] = {
|
||||||
|
#embed ctm_attr1 "cards.ctm"
|
||||||
|
};
|
||||||
|
|
||||||
|
const char CardsAttrib2[] = {
|
||||||
|
#embed ctm_attr2 "cards.ctm"
|
||||||
|
};
|
||||||
|
|
||||||
|
Imports the attribute data
|
||||||
|
|
||||||
|
const char SpriteData[] = {
|
||||||
|
#embed spd_sprites lzo "sprites.spd"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Imports the sprite data and compresses it using lzo compression
|
||||||
|
|
||||||
|
|
||||||
### Console input and output
|
### Console input and output
|
||||||
|
|
||||||
The C64 does not use ASCII it uses a derivative called PETSCII. There are two fonts, one with uppercase and one with uppercase and lowercase characters. It also used CR (13) as line terminator instead of LF (10). The stdio and conio libaries can perform translations.
|
The C64 does not use ASCII it uses a derivative called PETSCII. There are two fonts, one with uppercase and one with uppercase and lowercase characters. It also used CR (13) as line terminator instead of LF (10). The stdio and conio libaries can perform translations.
|
||||||
|
|
|
@ -438,7 +438,7 @@ bool Compiler::BuildLZO(const char* targetPath)
|
||||||
|
|
||||||
while (mErrors->mErrorCount == 0 && (cunit = mCompilationUnits->PendingUnit()))
|
while (mErrors->mErrorCount == 0 && (cunit = mCompilationUnits->PendingUnit()))
|
||||||
{
|
{
|
||||||
if (mPreprocessor->EmbedData("Compressing", cunit->mFileName, true, 0, 65536, SFM_BINARY_LZO))
|
if (mPreprocessor->EmbedData("Compressing", cunit->mFileName, true, 0, 65536, SFM_BINARY_LZO, SFD_NONE))
|
||||||
{
|
{
|
||||||
Scanner* scanner = new Scanner(mErrors, mPreprocessor);
|
Scanner* scanner = new Scanner(mErrors, mPreprocessor);
|
||||||
while (scanner->mToken == TK_INTEGER)
|
while (scanner->mToken == TK_INTEGER)
|
||||||
|
|
|
@ -45,6 +45,13 @@ const Ident* Ident::Unique(const char* str)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const Ident* Ident::Mangle(const char* str) const
|
||||||
|
{
|
||||||
|
char buffer[100];
|
||||||
|
strcpy_s(buffer, mString);
|
||||||
|
strcat_s(buffer, str);
|
||||||
|
return Unique(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
IdentDict::IdentDict(void)
|
IdentDict::IdentDict(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,6 +9,7 @@ public:
|
||||||
unsigned int mHash;
|
unsigned int mHash;
|
||||||
|
|
||||||
static const Ident* Unique(const char* str);
|
static const Ident* Unique(const char* str);
|
||||||
|
const Ident* Mangle(const char* str) const;
|
||||||
protected:
|
protected:
|
||||||
Ident(const char* str, unsigned int hash);
|
Ident(const char* str, unsigned int hash);
|
||||||
};
|
};
|
||||||
|
|
|
@ -12847,7 +12847,7 @@ void InterCodeProcedure::Close(void)
|
||||||
if (!mInterruptCalled && mEntryBlock->CheckStaticStack())
|
if (!mInterruptCalled && mEntryBlock->CheckStaticStack())
|
||||||
{
|
{
|
||||||
mLinkerObject->mFlags |= LOBJF_STATIC_STACK;
|
mLinkerObject->mFlags |= LOBJF_STATIC_STACK;
|
||||||
mLinkerObject->mStackSection = mModule->mLinker->AddSection(mIdent, LST_STATIC_STACK);
|
mLinkerObject->mStackSection = mModule->mLinker->AddSection(mIdent->Mangle("@stack"), LST_STATIC_STACK);
|
||||||
|
|
||||||
for (int i = 0; i < mLocalVars.Size(); i++)
|
for (int i = 0; i < mLocalVars.Size(); i++)
|
||||||
{
|
{
|
||||||
|
@ -12861,7 +12861,7 @@ void InterCodeProcedure::Close(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mSaveTempsLinkerObject = mModule->mLinker->AddObject(mLocation, mIdent, mLinkerObject->mStackSection, LOT_BSS);
|
mSaveTempsLinkerObject = mModule->mLinker->AddObject(mLocation, mIdent->Mangle("@stack"), mLinkerObject->mStackSection, LOT_BSS);
|
||||||
|
|
||||||
ResetVisited();
|
ResetVisited();
|
||||||
mEntryBlock->CollectStaticStack(mLinkerObject, mLocalVars);
|
mEntryBlock->CollectStaticStack(mLinkerObject, mLocalVars);
|
||||||
|
|
|
@ -111,14 +111,18 @@ void NativeRegisterDataSet::ResetY(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeRegisterDataSet::ResetIndirect(void)
|
void NativeRegisterDataSet::ResetIndirect(int reg)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < NUM_REGS; i++)
|
for (int i = 0; i < NUM_REGS; i++)
|
||||||
{
|
{
|
||||||
if (mRegs[i].mMode == NRDM_ABSOLUTE ||
|
if (mRegs[i].mMode == NRDM_ABSOLUTE ||
|
||||||
mRegs[i].mMode == NRDM_ABSOLUTE_X ||
|
mRegs[i].mMode == NRDM_ABSOLUTE_X ||
|
||||||
mRegs[i].mMode == NRDM_ABSOLUTE_Y ||
|
mRegs[i].mMode == NRDM_ABSOLUTE_Y)
|
||||||
mRegs[i].mMode == NRDM_INDIRECT_Y )
|
{
|
||||||
|
if (reg != BC_REG_STACK || !mRegs[i].mLinkerObject)
|
||||||
|
mRegs[i].Reset();
|
||||||
|
}
|
||||||
|
else if (mRegs[i].mMode == NRDM_INDIRECT_Y )
|
||||||
{
|
{
|
||||||
mRegs[i].Reset();
|
mRegs[i].Reset();
|
||||||
}
|
}
|
||||||
|
@ -2334,7 +2338,7 @@ bool NativeCodeInstruction::ValueForwarding(NativeRegisterDataSet& data, AsmInsT
|
||||||
data.mRegs[CPU_REG_X].Reset();
|
data.mRegs[CPU_REG_X].Reset();
|
||||||
data.mRegs[CPU_REG_Y].Reset();
|
data.mRegs[CPU_REG_Y].Reset();
|
||||||
|
|
||||||
data.ResetIndirect();
|
data.ResetIndirect(0);
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
|
@ -3181,7 +3185,7 @@ bool NativeCodeInstruction::ValueForwarding(NativeRegisterDataSet& data, AsmInsT
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ChangesAddress())
|
if (ChangesAddress())
|
||||||
data.ResetIndirect();
|
data.ResetIndirect(mAddress);
|
||||||
}
|
}
|
||||||
else if (mMode == ASMIM_ABSOLUTE)
|
else if (mMode == ASMIM_ABSOLUTE)
|
||||||
{
|
{
|
||||||
|
@ -6515,14 +6519,21 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc
|
||||||
return dreg;
|
return dreg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int dreg = BC_REG_ACCU;
|
||||||
|
|
||||||
if (sins)
|
if (sins)
|
||||||
LoadValueToReg(proc, sins, BC_REG_ACCU, nullptr, nullptr);
|
LoadValueToReg(proc, sins, BC_REG_ACCU, nullptr, nullptr);
|
||||||
|
else if (ins->mSrc[index].mTemp == ins->mDst.mTemp)
|
||||||
|
dreg = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp];
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[index].mTemp]));
|
int sreg = BC_REG_TMP + proc->mTempOffset[ins->mSrc[index].mTemp];
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
dreg = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp];
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[index].mTemp] + 1));
|
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, sreg));
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, sreg + 1));
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (lmul)
|
switch (lmul)
|
||||||
|
@ -6531,87 +6542,87 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc
|
||||||
case 1:
|
case 1:
|
||||||
if (ins->mDst.IsUByte())
|
if (ins->mDst.IsUByte())
|
||||||
{
|
{
|
||||||
ShiftRegisterLeftByte(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeftByte(proc, dreg, lshift);
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ShiftRegisterLeft(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeft(proc, dreg, lshift);
|
||||||
return BC_REG_ACCU;
|
return dreg;
|
||||||
case 3:
|
case 3:
|
||||||
if (ins->mSrc[index].IsUByte() && ins->mSrc[index].mRange.mMaxValue <= 85)
|
if (ins->mSrc[index].IsUByte() && ins->mSrc[index].mRange.mMaxValue <= 85)
|
||||||
{
|
{
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_CLC, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_CLC, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
}
|
}
|
||||||
if (ins->mDst.IsUByte())
|
if (ins->mDst.IsUByte())
|
||||||
{
|
{
|
||||||
ShiftRegisterLeftByte(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeftByte(proc, dreg, lshift);
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ShiftRegisterLeft(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeft(proc, dreg, lshift);
|
||||||
return BC_REG_ACCU;
|
return dreg;
|
||||||
case 5:
|
case 5:
|
||||||
if (ins->mSrc[index].IsUByte() && ins->mSrc[index].mRange.mMaxValue <= 51)
|
if (ins->mSrc[index].IsUByte() && ins->mSrc[index].mRange.mMaxValue <= 51)
|
||||||
{
|
{
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_CLC, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_CLC, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
}
|
}
|
||||||
if (ins->mDst.IsUByte())
|
if (ins->mDst.IsUByte())
|
||||||
{
|
{
|
||||||
ShiftRegisterLeftByte(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeftByte(proc, dreg, lshift);
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ShiftRegisterLeft(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeft(proc, dreg, lshift);
|
||||||
return BC_REG_ACCU;
|
return dreg;
|
||||||
case 7:
|
case 7:
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
||||||
|
@ -6620,25 +6631,25 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_SEC, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_SEC, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_SBC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_SBC, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_SBC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_SBC, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
if (ins->mDst.IsUByte())
|
if (ins->mDst.IsUByte())
|
||||||
{
|
{
|
||||||
ShiftRegisterLeftByte(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeftByte(proc, dreg, lshift);
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ShiftRegisterLeft(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeft(proc, dreg, lshift);
|
||||||
return BC_REG_ACCU;
|
return dreg;
|
||||||
case 9:
|
case 9:
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
||||||
|
@ -6647,34 +6658,34 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_CLC, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_CLC, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 4));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 5));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
if (ins->mDst.IsUByte())
|
if (ins->mDst.IsUByte())
|
||||||
{
|
{
|
||||||
ShiftRegisterLeftByte(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeftByte(proc, dreg, lshift);
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ShiftRegisterLeft(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeft(proc, dreg, lshift);
|
||||||
return BC_REG_ACCU;
|
return dreg;
|
||||||
#if 1
|
#if 1
|
||||||
case 25:
|
case 25:
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_TAX, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_TAX, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_TAY, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_TAY, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_CLC, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_CLC, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_TXA, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_TXA, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_TAX, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_TAX, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_TYA, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_TYA, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_TXA, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_TXA, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
||||||
|
@ -6684,13 +6695,13 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_ASL, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_ZERO_PAGE, BC_REG_WORK + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_ROL, ASMIM_ZERO_PAGE, BC_REG_WORK + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_CLC, ASMIM_IMPLIED));
|
mIns.Push(NativeCodeInstruction(ASMIT_CLC, ASMIM_IMPLIED));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_ADC, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
ShiftRegisterLeft(proc, BC_REG_ACCU, lshift);
|
ShiftRegisterLeft(proc, dreg, lshift);
|
||||||
return BC_REG_ACCU;
|
return dreg;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
|
@ -6698,7 +6709,8 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc
|
||||||
{
|
{
|
||||||
if (ins->mSrc[index].IsUByte())
|
if (ins->mSrc[index].IsUByte())
|
||||||
{
|
{
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_ACCU));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg));
|
||||||
|
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDX, ASMIM_IMMEDIATE, mul & 0xff));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDX, ASMIM_IMMEDIATE, mul & 0xff));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STX, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_STX, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDX, ASMIM_IMMEDIATE, mul >> 8));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDX, ASMIM_IMMEDIATE, mul >> 8));
|
||||||
|
@ -6709,6 +6721,14 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (dreg != BC_REG_ACCU)
|
||||||
|
{
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg));
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
||||||
|
}
|
||||||
|
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, mul & 0xff));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, mul & 0xff));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0));
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0));
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, mul >> 8));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, mul >> 8));
|
||||||
|
@ -6720,6 +6740,14 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (dreg != BC_REG_ACCU)
|
||||||
|
{
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg));
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0));
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, dreg + 1));
|
||||||
|
mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 1));
|
||||||
|
}
|
||||||
|
|
||||||
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, mul));
|
mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_IMMEDIATE, mul));
|
||||||
// mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0));
|
// mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0));
|
||||||
|
|
||||||
|
@ -24566,6 +24594,7 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(NativeCodeProcedure* proc, int pass
|
||||||
mIns[i + 3].mMode = ASMIM_IMPLIED;
|
mIns[i + 3].mMode = ASMIM_IMPLIED;
|
||||||
progress = true;
|
progress = true;
|
||||||
}
|
}
|
||||||
|
#if 1
|
||||||
else if (
|
else if (
|
||||||
mIns[i + 0].mType == ASMIT_TXA &&
|
mIns[i + 0].mType == ASMIT_TXA &&
|
||||||
mIns[i + 1].mType == ASMIT_CLC &&
|
mIns[i + 1].mType == ASMIT_CLC &&
|
||||||
|
@ -24581,8 +24610,11 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(NativeCodeProcedure* proc, int pass
|
||||||
mIns[i + 2].mMode = ASMIM_IMPLIED; mIns[i + 2].mLive |= LIVE_CPU_REG_X;
|
mIns[i + 2].mMode = ASMIM_IMPLIED; mIns[i + 2].mLive |= LIVE_CPU_REG_X;
|
||||||
if (mIns[i + 3].mLive & LIVE_CPU_REG_A)
|
if (mIns[i + 3].mLive & LIVE_CPU_REG_A)
|
||||||
mIns[i + 3].mType = ASMIT_TXA;
|
mIns[i + 3].mType = ASMIT_TXA;
|
||||||
|
else
|
||||||
|
mIns[i + 3].mType = ASMIT_NOP;
|
||||||
progress = true;
|
progress = true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
else if (
|
else if (
|
||||||
mIns[i + 0].mType == ASMIT_TXA &&
|
mIns[i + 0].mType == ASMIT_TXA &&
|
||||||
mIns[i + 1].mType == ASMIT_SEC &&
|
mIns[i + 1].mType == ASMIT_SEC &&
|
||||||
|
@ -27493,6 +27525,7 @@ void NativeCodeProcedure::Optimize(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
if (step == 4 || step == 5)
|
if (step == 4 || step == 5)
|
||||||
{
|
{
|
||||||
|
@ -27631,6 +27664,7 @@ void NativeCodeProcedure::Optimize(void)
|
||||||
changed = true;
|
changed = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
ResetVisited();
|
ResetVisited();
|
||||||
if (mEntryBlock->ForwardZpXIndex(step >= 4))
|
if (mEntryBlock->ForwardZpXIndex(step >= 4))
|
||||||
|
@ -27642,7 +27676,6 @@ void NativeCodeProcedure::Optimize(void)
|
||||||
mEntryBlock->CheckBlocks();
|
mEntryBlock->CheckBlocks();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (step == 5)
|
if (step == 5)
|
||||||
{
|
{
|
||||||
ResetVisited();
|
ResetVisited();
|
||||||
|
|
|
@ -45,7 +45,7 @@ struct NativeRegisterDataSet
|
||||||
|
|
||||||
void ResetZeroPage(int addr);
|
void ResetZeroPage(int addr);
|
||||||
void ResetAbsolute(LinkerObject * linkerObject, int addr);
|
void ResetAbsolute(LinkerObject * linkerObject, int addr);
|
||||||
void ResetIndirect(void);
|
void ResetIndirect(int reg);
|
||||||
void ResetX(void);
|
void ResetX(void);
|
||||||
void ResetY(void);
|
void ResetY(void);
|
||||||
void Intersect(const NativeRegisterDataSet& set);
|
void Intersect(const NativeRegisterDataSet& set);
|
||||||
|
|
|
@ -32,7 +32,7 @@ bool SourceFile::ReadLineLZO(char* line)
|
||||||
assert(mFill >= 0 && mFill - mPos < 384 && mPos <= mFill);
|
assert(mFill >= 0 && mFill - mPos < 384 && mPos <= mFill);
|
||||||
|
|
||||||
int c;
|
int c;
|
||||||
while (mLimit && mFill < 384 && (c = fgetc(mFile)) >= 0)
|
while (mLimit && mFill < 384 && (c = ReadChar()) >= 0)
|
||||||
{
|
{
|
||||||
mLimit--;
|
mLimit--;
|
||||||
mBuffer[mFill++] = c;
|
mBuffer[mFill++] = c;
|
||||||
|
@ -115,7 +115,7 @@ bool SourceFile::ReadLineRLE(char* line)
|
||||||
assert(mFill >= 0 && mFill < 256);
|
assert(mFill >= 0 && mFill < 256);
|
||||||
|
|
||||||
int c;
|
int c;
|
||||||
while (mLimit && mFill < 256 && (c = fgetc(mFile)) >= 0)
|
while (mLimit && mFill < 256 && (c = ReadChar()) >= 0)
|
||||||
{
|
{
|
||||||
mLimit--;
|
mLimit--;
|
||||||
mBuffer[mFill++] = c;
|
mBuffer[mFill++] = c;
|
||||||
|
@ -234,6 +234,19 @@ bool SourceFile::ReadLineRLE(char* line)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SourceFile::ReadChar(void)
|
||||||
|
{
|
||||||
|
if (mMemData)
|
||||||
|
{
|
||||||
|
if (mMemPos < mMemSize)
|
||||||
|
return mMemData[mMemPos++];
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return fgetc(mFile);
|
||||||
|
}
|
||||||
|
|
||||||
bool SourceFile::ReadLine(char* line)
|
bool SourceFile::ReadLine(char* line)
|
||||||
{
|
{
|
||||||
if (mFile)
|
if (mFile)
|
||||||
|
@ -249,7 +262,7 @@ bool SourceFile::ReadLine(char* line)
|
||||||
{
|
{
|
||||||
mLimit--;
|
mLimit--;
|
||||||
|
|
||||||
int c = fgetc(mFile);
|
int c = ReadChar();
|
||||||
if (c >= 0)
|
if (c >= 0)
|
||||||
{
|
{
|
||||||
sprintf_s(line, 1024, "0x%02x, ", c);
|
sprintf_s(line, 1024, "0x%02x, ", c);
|
||||||
|
@ -257,6 +270,22 @@ bool SourceFile::ReadLine(char* line)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SFM_BINARY_WORD:
|
||||||
|
if (mLimit >= 2)
|
||||||
|
{
|
||||||
|
mLimit -= 2;
|
||||||
|
|
||||||
|
int c = ReadChar();
|
||||||
|
if (c >= 0)
|
||||||
|
{
|
||||||
|
int d = ReadChar();
|
||||||
|
if (d >= 0)
|
||||||
|
sprintf_s(line, 1024, "0x%04x, ", c + 256 * d);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case SFM_BINARY_RLE:
|
case SFM_BINARY_RLE:
|
||||||
if (ReadLineRLE(line))
|
if (ReadLineRLE(line))
|
||||||
return true;
|
return true;
|
||||||
|
@ -274,15 +303,265 @@ bool SourceFile::ReadLine(char* line)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SourceFile::Limit(int skip, int limit)
|
struct CTMHeader8
|
||||||
{
|
{
|
||||||
|
uint8 mID[3];
|
||||||
|
uint8 mVersion[1];
|
||||||
|
uint8 mDispMode;
|
||||||
|
uint8 mColorMethod;
|
||||||
|
uint8 mFlags;
|
||||||
|
uint8 mColors[7];
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack(push, 1)
|
||||||
|
struct SPDHeader5
|
||||||
|
{
|
||||||
|
uint8 mID[3];
|
||||||
|
uint8 mVersion[1];
|
||||||
|
uint8 mFlags;
|
||||||
|
uint16 mNumSprites, mNumTiles;
|
||||||
|
uint8 mNumSpriteAnmis, mNumTileAnims;
|
||||||
|
uint8 mTileWidth, mTileHeight;
|
||||||
|
uint8 mColors[3];
|
||||||
|
int16 mSpriteOverlayDist, mTileOverlayDist;
|
||||||
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
|
void SourceFile::ReadSpritePad(SourceFileDecoder decoder)
|
||||||
|
{
|
||||||
|
SPDHeader5 spdHeader;
|
||||||
|
|
||||||
|
fread(&spdHeader, sizeof(SPDHeader5), 1, mFile);
|
||||||
|
|
||||||
|
if (decoder == SFD_SPD_SPRITES)
|
||||||
|
{
|
||||||
|
mLimit = 64 * spdHeader.mNumSprites;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mLimit = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SourceFile::ReadCharPad(SourceFileDecoder decoder)
|
||||||
|
{
|
||||||
|
CTMHeader8 ctmHeader;
|
||||||
|
uint16 ctmMarker, numChars, numTiles;
|
||||||
|
char tileWidth, tileHeight;
|
||||||
|
|
||||||
|
fread(&ctmHeader, sizeof(CTMHeader8), 1, mFile);
|
||||||
|
fread(&ctmMarker, 2, 1, mFile);
|
||||||
|
fread(&numChars, 2, 1, mFile);
|
||||||
|
numChars++;
|
||||||
|
|
||||||
|
if (decoder == SFD_CTM_CHARS)
|
||||||
|
{
|
||||||
|
mLimit = 8 * numChars;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip chars
|
||||||
|
fseek(mFile, 8 * numChars, SEEK_CUR);
|
||||||
|
|
||||||
|
fread(&ctmMarker, 2, 1, mFile);
|
||||||
|
|
||||||
|
if (ctmHeader.mColorMethod == 2 && (decoder == SFD_CTM_CHAR_ATTRIB_1 || decoder == SFD_CTM_CHAR_ATTRIB_2))
|
||||||
|
{
|
||||||
|
mMemSize = numChars;
|
||||||
|
mLimit = mMemSize;
|
||||||
|
mMemPos = 0;
|
||||||
|
mMemData = new uint8[mMemSize];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctmHeader.mColorMethod == 2 && decoder == SFD_CTM_CHAR_ATTRIB_1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mMemSize; i++)
|
||||||
|
{
|
||||||
|
uint8 fd;
|
||||||
|
fread(&fd, 1, 1, mFile);
|
||||||
|
mMemData[i] = fd << 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Skip material
|
||||||
|
fseek(mFile, 1 * numChars, SEEK_CUR);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctmHeader.mColorMethod == 2)
|
||||||
|
{
|
||||||
|
fread(&ctmMarker, 2, 1, mFile);
|
||||||
|
|
||||||
|
if (decoder == SFD_CTM_CHAR_ATTRIB_1 || decoder == SFD_CTM_CHAR_ATTRIB_2)
|
||||||
|
{
|
||||||
|
if (ctmHeader.mDispMode == 4)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mMemSize; i++)
|
||||||
|
{
|
||||||
|
uint8 fd[3];
|
||||||
|
fread(fd, 1, 3, mFile);
|
||||||
|
if (decoder == SFD_CTM_CHAR_ATTRIB_1)
|
||||||
|
mMemData[i] |= fd[0];
|
||||||
|
else
|
||||||
|
mMemData[i] = (fd[2] << 4) | fd[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mMemSize; i++)
|
||||||
|
{
|
||||||
|
uint8 fd[3];
|
||||||
|
fread(fd, 1, 1, mFile);
|
||||||
|
mMemData[i] |= fd[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Skip colors
|
||||||
|
if (ctmHeader.mDispMode == 3)
|
||||||
|
fseek(mFile, 2 * numChars, SEEK_CUR);
|
||||||
|
else if (ctmHeader.mDispMode == 4)
|
||||||
|
fseek(mFile, 3 * numChars, SEEK_CUR);
|
||||||
|
else
|
||||||
|
fseek(mFile, numChars, SEEK_CUR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctmHeader.mFlags & 1)
|
||||||
|
{
|
||||||
|
fread(&ctmMarker, 2, 1, mFile);
|
||||||
|
|
||||||
|
fread(&numTiles, 2, 1, mFile);
|
||||||
|
numTiles++;
|
||||||
|
|
||||||
|
fread(&tileWidth, 1, 1, mFile);
|
||||||
|
fread(&tileHeight, 1, 1, mFile);
|
||||||
|
|
||||||
|
if (decoder == SFD_CTM_TILES_16)
|
||||||
|
{
|
||||||
|
mLimit = 2 * numTiles * tileWidth * tileHeight;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (decoder == SFD_CTM_TILES_8)
|
||||||
|
{
|
||||||
|
mMemSize = numTiles * tileWidth * tileHeight;
|
||||||
|
mLimit = mMemSize;
|
||||||
|
mMemPos = 0;
|
||||||
|
mMemData = new uint8[mMemSize];
|
||||||
|
for (int i = 0; i < mMemSize; i++)
|
||||||
|
{
|
||||||
|
int16 d;
|
||||||
|
fread(&d, 2, 1, mFile);
|
||||||
|
mMemData[i] = d;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fseek(mFile, 2 * numTiles * tileWidth * tileHeight, SEEK_CUR);
|
||||||
|
|
||||||
|
fread(&ctmMarker, 2, 1, mFile);
|
||||||
|
|
||||||
|
if (decoder == SFD_CTM_CHAR_ATTRIB_1 || decoder == SFD_CTM_CHAR_ATTRIB_2)
|
||||||
|
{
|
||||||
|
mMemSize = numTiles;
|
||||||
|
mLimit = mMemSize;
|
||||||
|
mMemPos = 0;
|
||||||
|
mMemData = new uint8[mMemSize];
|
||||||
|
|
||||||
|
for (int i = 0; i < mMemSize; i++)
|
||||||
|
{
|
||||||
|
uint8 fd[3];
|
||||||
|
fread(&fd, 1, 1, mFile);
|
||||||
|
mMemData[i] = fd[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
fread(&ctmMarker, 2, 1, mFile);
|
||||||
|
|
||||||
|
for (int i = 0; i < mMemSize; i++)
|
||||||
|
{
|
||||||
|
uint8 fd[3];
|
||||||
|
fread(&fd, 1, 1, mFile);
|
||||||
|
mMemData[i] |= fd[0] << 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Skip material
|
||||||
|
fseek(mFile, 1 * numTiles, SEEK_CUR);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip tile names
|
||||||
|
fread(&ctmMarker, 2, 1, mFile);
|
||||||
|
for (int i = 0; i < numTiles; i++)
|
||||||
|
{
|
||||||
|
while (fgetc(mFile) > 0)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fread(&ctmMarker, 2, 1, mFile);
|
||||||
|
|
||||||
|
int16 mapWidth, mapHeight;
|
||||||
|
fread(&mapWidth, 2, 1, mFile);
|
||||||
|
fread(&mapHeight, 2, 1, mFile);
|
||||||
|
|
||||||
|
if (decoder == SFD_CTM_MAP_16)
|
||||||
|
{
|
||||||
|
mLimit = 2 * mapWidth * mapHeight;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (decoder == SFD_CTM_MAP_8)
|
||||||
|
{
|
||||||
|
mMemSize = mapWidth * mapHeight;
|
||||||
|
mLimit = mMemSize;
|
||||||
|
mMemPos = 0;
|
||||||
|
mMemData = new uint8[mMemSize];
|
||||||
|
for (int i = 0; i < mMemSize; i++)
|
||||||
|
{
|
||||||
|
int16 d;
|
||||||
|
fread(&d, 2, 1, mFile);
|
||||||
|
mMemData[i] = d;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fseek(mFile, 2 * mapWidth * mapHeight, SEEK_CUR);
|
||||||
|
|
||||||
|
mLimit = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SourceFile::Limit(SourceFileDecoder decoder, int skip, int limit)
|
||||||
|
{
|
||||||
|
switch (decoder)
|
||||||
|
{
|
||||||
|
case SFD_CTM_CHARS:
|
||||||
|
case SFD_CTM_CHAR_ATTRIB_1:
|
||||||
|
case SFD_CTM_CHAR_ATTRIB_2:
|
||||||
|
case SFD_CTM_TILES_8:
|
||||||
|
case SFD_CTM_TILES_16:
|
||||||
|
case SFD_CTM_MAP_8:
|
||||||
|
case SFD_CTM_MAP_16:
|
||||||
|
ReadCharPad(decoder);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SFD_SPD_SPRITES:
|
||||||
|
ReadSpritePad(decoder);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
mLimit = limit;
|
mLimit = limit;
|
||||||
if (mFile)
|
if (mFile)
|
||||||
fseek(mFile, skip, SEEK_SET);
|
fseek(mFile, skip, SEEK_SET);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SourceFile::SourceFile(void)
|
SourceFile::SourceFile(void)
|
||||||
: mFile(nullptr), mFileName{ 0 }, mStack(nullptr)
|
: mFile(nullptr), mFileName{ 0 }, mStack(nullptr), mMemData(nullptr)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -294,6 +573,11 @@ SourceFile::~SourceFile(void)
|
||||||
fclose(mFile);
|
fclose(mFile);
|
||||||
mFile = nullptr;
|
mFile = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mMemData)
|
||||||
|
{
|
||||||
|
delete[] mMemData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SourceFile::Open(const char* name, const char* path, SourceFileMode mode)
|
bool SourceFile::Open(const char* name, const char* path, SourceFileMode mode)
|
||||||
|
@ -398,7 +682,7 @@ bool Preprocessor::NextLine(void)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Preprocessor::EmbedData(const char* reason, const char* name, bool local, int skip, int limit, SourceFileMode mode)
|
bool Preprocessor::EmbedData(const char* reason, const char* name, bool local, int skip, int limit, SourceFileMode mode, SourceFileDecoder decoder)
|
||||||
{
|
{
|
||||||
if (strlen(name) > 200)
|
if (strlen(name) > 200)
|
||||||
{
|
{
|
||||||
|
@ -443,7 +727,7 @@ bool Preprocessor::EmbedData(const char* reason, const char* name, bool local, i
|
||||||
if (mCompilerOptions & COPT_VERBOSE)
|
if (mCompilerOptions & COPT_VERBOSE)
|
||||||
printf("%s \"%s\"\n", reason, source->mFileName);
|
printf("%s \"%s\"\n", reason, source->mFileName);
|
||||||
|
|
||||||
source->Limit(skip, limit);
|
source->Limit(decoder, skip, limit);
|
||||||
|
|
||||||
source->mUp = mSource;
|
source->mUp = mSource;
|
||||||
mSource = source;
|
mSource = source;
|
||||||
|
|
|
@ -18,9 +18,24 @@ enum SourceFileMode
|
||||||
{
|
{
|
||||||
SFM_TEXT,
|
SFM_TEXT,
|
||||||
SFM_BINARY,
|
SFM_BINARY,
|
||||||
|
SFM_BINARY_WORD,
|
||||||
SFM_BINARY_RLE,
|
SFM_BINARY_RLE,
|
||||||
SFM_BINARY_LZO
|
SFM_BINARY_LZO
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum SourceFileDecoder
|
||||||
|
{
|
||||||
|
SFD_NONE,
|
||||||
|
SFD_CTM_CHARS,
|
||||||
|
SFD_CTM_CHAR_ATTRIB_1,
|
||||||
|
SFD_CTM_CHAR_ATTRIB_2,
|
||||||
|
SFD_CTM_TILES_8,
|
||||||
|
SFD_CTM_TILES_16,
|
||||||
|
SFD_CTM_MAP_8,
|
||||||
|
SFD_CTM_MAP_16,
|
||||||
|
SFD_SPD_SPRITES
|
||||||
|
};
|
||||||
|
|
||||||
class SourceFile
|
class SourceFile
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -32,8 +47,9 @@ public:
|
||||||
SourceFileMode mMode;
|
SourceFileMode mMode;
|
||||||
int mLimit;
|
int mLimit;
|
||||||
|
|
||||||
char mBuffer[512];
|
uint8 mBuffer[512];
|
||||||
int mFill, mPos;
|
int mFill, mPos, mMemPos, mMemSize;
|
||||||
|
uint8 * mMemData;
|
||||||
|
|
||||||
bool ReadLine(char* line);
|
bool ReadLine(char* line);
|
||||||
|
|
||||||
|
@ -46,7 +62,7 @@ public:
|
||||||
bool Open(const char* name, const char * path, SourceFileMode mode = SFM_TEXT);
|
bool Open(const char* name, const char * path, SourceFileMode mode = SFM_TEXT);
|
||||||
void Close(void);
|
void Close(void);
|
||||||
|
|
||||||
void Limit(int skip, int limit);
|
void Limit(SourceFileDecoder decoder, int skip, int limit);
|
||||||
|
|
||||||
bool PushSource(void);
|
bool PushSource(void);
|
||||||
bool PopSource(void);
|
bool PopSource(void);
|
||||||
|
@ -54,6 +70,10 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
FILE* mFile;
|
FILE* mFile;
|
||||||
|
|
||||||
|
void ReadCharPad(SourceFileDecoder decoder);
|
||||||
|
void ReadSpritePad(SourceFileDecoder decoder);
|
||||||
|
int ReadChar(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
class SourcePath
|
class SourcePath
|
||||||
|
@ -90,7 +110,7 @@ public:
|
||||||
bool PopSource(void);
|
bool PopSource(void);
|
||||||
bool DropSource(void);
|
bool DropSource(void);
|
||||||
|
|
||||||
bool EmbedData(const char* reason, const char* name, bool local, int skip, int limit, SourceFileMode mode);
|
bool EmbedData(const char* reason, const char* name, bool local, int skip, int limit, SourceFileMode mode, SourceFileDecoder decoder);
|
||||||
|
|
||||||
Preprocessor(Errors * errors);
|
Preprocessor(Errors * errors);
|
||||||
~Preprocessor(void);
|
~Preprocessor(void);
|
||||||
|
|
|
@ -651,6 +651,7 @@ void Scanner::NextToken(void)
|
||||||
{
|
{
|
||||||
int limit = 65536, skip = 0;
|
int limit = 65536, skip = 0;
|
||||||
SourceFileMode mode = SFM_BINARY;
|
SourceFileMode mode = SFM_BINARY;
|
||||||
|
SourceFileDecoder decoder = SFD_NONE;
|
||||||
|
|
||||||
NextRawToken();
|
NextRawToken();
|
||||||
if (mToken == TK_INTEGER)
|
if (mToken == TK_INTEGER)
|
||||||
|
@ -665,12 +666,30 @@ void Scanner::NextToken(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mToken == TK_IDENT)
|
while (mToken == TK_IDENT)
|
||||||
{
|
{
|
||||||
if (!strcmp(mTokenIdent->mString, "rle"))
|
if (!strcmp(mTokenIdent->mString, "rle"))
|
||||||
mode = SFM_BINARY_RLE;
|
mode = SFM_BINARY_RLE;
|
||||||
else if (!strcmp(mTokenIdent->mString, "lzo"))
|
else if (!strcmp(mTokenIdent->mString, "lzo"))
|
||||||
mode = SFM_BINARY_LZO;
|
mode = SFM_BINARY_LZO;
|
||||||
|
else if (!strcmp(mTokenIdent->mString, "word"))
|
||||||
|
mode = SFM_BINARY_WORD;
|
||||||
|
else if (!strcmp(mTokenIdent->mString, "ctm_chars"))
|
||||||
|
decoder = SFD_CTM_CHARS;
|
||||||
|
else if (!strcmp(mTokenIdent->mString, "ctm_attr1"))
|
||||||
|
decoder = SFD_CTM_CHAR_ATTRIB_1;
|
||||||
|
else if (!strcmp(mTokenIdent->mString, "ctm_attr2"))
|
||||||
|
decoder = SFD_CTM_CHAR_ATTRIB_2;
|
||||||
|
else if (!strcmp(mTokenIdent->mString, "ctm_tiles8"))
|
||||||
|
decoder = SFD_CTM_TILES_8;
|
||||||
|
else if (!strcmp(mTokenIdent->mString, "ctm_tiles16"))
|
||||||
|
decoder = SFD_CTM_TILES_16;
|
||||||
|
else if (!strcmp(mTokenIdent->mString, "ctm_map8"))
|
||||||
|
decoder = SFD_CTM_MAP_8;
|
||||||
|
else if (!strcmp(mTokenIdent->mString, "ctm_map16"))
|
||||||
|
decoder = SFD_CTM_MAP_16;
|
||||||
|
else if (!strcmp(mTokenIdent->mString, "spd_sprites"))
|
||||||
|
decoder = SFD_SPD_SPRITES;
|
||||||
else
|
else
|
||||||
mErrors->Error(mLocation, EERR_FILE_NOT_FOUND, "Invalid embed compression mode", mTokenIdent);
|
mErrors->Error(mLocation, EERR_FILE_NOT_FOUND, "Invalid embed compression mode", mTokenIdent);
|
||||||
|
|
||||||
|
@ -679,14 +698,14 @@ void Scanner::NextToken(void)
|
||||||
|
|
||||||
if (mToken == TK_STRING)
|
if (mToken == TK_STRING)
|
||||||
{
|
{
|
||||||
if (!mPreprocessor->EmbedData("Embedding", mTokenString, true, skip, limit, mode))
|
if (!mPreprocessor->EmbedData("Embedding", mTokenString, true, skip, limit, mode, decoder))
|
||||||
mErrors->Error(mLocation, EERR_FILE_NOT_FOUND, "Could not open source file", mTokenString);
|
mErrors->Error(mLocation, EERR_FILE_NOT_FOUND, "Could not open source file", mTokenString);
|
||||||
}
|
}
|
||||||
else if (mToken == TK_LESS_THAN)
|
else if (mToken == TK_LESS_THAN)
|
||||||
{
|
{
|
||||||
mOffset--;
|
mOffset--;
|
||||||
StringToken('>', 'a');
|
StringToken('>', 'a');
|
||||||
if (!mPreprocessor->EmbedData("Embedding", mTokenString, false, skip, limit, mode))
|
if (!mPreprocessor->EmbedData("Embedding", mTokenString, false, skip, limit, mode, decoder))
|
||||||
mErrors->Error(mLocation, EERR_FILE_NOT_FOUND, "Could not open source file", mTokenString);
|
mErrors->Error(mLocation, EERR_FILE_NOT_FOUND, "Could not open source file", mTokenString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@ int main2(int argc, const char** argv)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
strcpy(strProductName, "oscar64");
|
strcpy(strProductName, "oscar64");
|
||||||
strcpy(strProductVersion, "1.7.150");
|
strcpy(strProductVersion, "1.8.151");
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
uint32_t length = sizeof(basePath);
|
uint32_t length = sizeof(basePath);
|
||||||
|
|
|
@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,7,150,0
|
FILEVERSION 1,8,151,0
|
||||||
PRODUCTVERSION 1,7,150,0
|
PRODUCTVERSION 1,8,151,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -43,12 +43,12 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "oscar64"
|
VALUE "CompanyName", "oscar64"
|
||||||
VALUE "FileDescription", "oscar64 compiler"
|
VALUE "FileDescription", "oscar64 compiler"
|
||||||
VALUE "FileVersion", "1.7.150.0"
|
VALUE "FileVersion", "1.8.151.0"
|
||||||
VALUE "InternalName", "oscar64.exe"
|
VALUE "InternalName", "oscar64.exe"
|
||||||
VALUE "LegalCopyright", "Copyright (C) 2021"
|
VALUE "LegalCopyright", "Copyright (C) 2021"
|
||||||
VALUE "OriginalFilename", "oscar64.exe"
|
VALUE "OriginalFilename", "oscar64.exe"
|
||||||
VALUE "ProductName", "oscar64"
|
VALUE "ProductName", "oscar64"
|
||||||
VALUE "ProductVersion", "1.7.150.0"
|
VALUE "ProductVersion", "1.8.151.0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -34,6 +34,12 @@
|
||||||
}
|
}
|
||||||
"Entry"
|
"Entry"
|
||||||
{
|
{
|
||||||
|
"MsmKey" = "8:_03D7013B0D39A89CEA9D267005ADCE39"
|
||||||
|
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
"MsmKey" = "8:_04ABABC55200450383686DD782DD1548"
|
"MsmKey" = "8:_04ABABC55200450383686DD782DD1548"
|
||||||
"OwnerKey" = "8:_UNDEFINED"
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
"MsmSig" = "8:_UNDEFINED"
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
@ -154,6 +160,12 @@
|
||||||
}
|
}
|
||||||
"Entry"
|
"Entry"
|
||||||
{
|
{
|
||||||
|
"MsmKey" = "8:_2CA3A525072974368303677563606FFE"
|
||||||
|
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
"MsmKey" = "8:_2D828D0247F144CDB0112B2AD4004C2C"
|
"MsmKey" = "8:_2D828D0247F144CDB0112B2AD4004C2C"
|
||||||
"OwnerKey" = "8:_UNDEFINED"
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
"MsmSig" = "8:_UNDEFINED"
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
@ -214,6 +226,12 @@
|
||||||
}
|
}
|
||||||
"Entry"
|
"Entry"
|
||||||
{
|
{
|
||||||
|
"MsmKey" = "8:_3FA71395262A4AB4A1C2839FD6B91190"
|
||||||
|
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
"MsmKey" = "8:_3FFD08277B804985BDF072C0C1877287"
|
"MsmKey" = "8:_3FFD08277B804985BDF072C0C1877287"
|
||||||
"OwnerKey" = "8:_UNDEFINED"
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
"MsmSig" = "8:_UNDEFINED"
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
@ -388,12 +406,24 @@
|
||||||
}
|
}
|
||||||
"Entry"
|
"Entry"
|
||||||
{
|
{
|
||||||
|
"MsmKey" = "8:_777CE896BB0B3C09C1B5FB6CB3BFE84F"
|
||||||
|
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
"MsmKey" = "8:_79985361F09A43299E258E1A8E5ED934"
|
"MsmKey" = "8:_79985361F09A43299E258E1A8E5ED934"
|
||||||
"OwnerKey" = "8:_UNDEFINED"
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
"MsmSig" = "8:_UNDEFINED"
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
}
|
}
|
||||||
"Entry"
|
"Entry"
|
||||||
{
|
{
|
||||||
|
"MsmKey" = "8:_7A40466D5E5D2D3FD71213A0C0AA5075"
|
||||||
|
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
"MsmKey" = "8:_7A9E700FC438425580655F7C1BC07FD3"
|
"MsmKey" = "8:_7A9E700FC438425580655F7C1BC07FD3"
|
||||||
"OwnerKey" = "8:_UNDEFINED"
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
"MsmSig" = "8:_UNDEFINED"
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
@ -604,6 +634,12 @@
|
||||||
}
|
}
|
||||||
"Entry"
|
"Entry"
|
||||||
{
|
{
|
||||||
|
"MsmKey" = "8:_B2B920A649CF4027457BBAB004078A03"
|
||||||
|
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
"MsmKey" = "8:_B2F1B217D45A434DBA8EC21095F4D717"
|
"MsmKey" = "8:_B2F1B217D45A434DBA8EC21095F4D717"
|
||||||
"OwnerKey" = "8:_UNDEFINED"
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
"MsmSig" = "8:_UNDEFINED"
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
@ -784,6 +820,18 @@
|
||||||
}
|
}
|
||||||
"Entry"
|
"Entry"
|
||||||
{
|
{
|
||||||
|
"MsmKey" = "8:_DC9FDF52011EB7C47318682BA0B3F26F"
|
||||||
|
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
|
"MsmKey" = "8:_DE2BF7C92569053E7C3DCE88AB7E2566"
|
||||||
|
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
"MsmKey" = "8:_DEADBEA270134B77800770802B21859C"
|
"MsmKey" = "8:_DEADBEA270134B77800770802B21859C"
|
||||||
"OwnerKey" = "8:_UNDEFINED"
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
"MsmSig" = "8:_UNDEFINED"
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
@ -844,6 +892,12 @@
|
||||||
}
|
}
|
||||||
"Entry"
|
"Entry"
|
||||||
{
|
{
|
||||||
|
"MsmKey" = "8:_EA3C0BCB01F2639DFA2E37EC8436E5F6"
|
||||||
|
"OwnerKey" = "8:_FB2E467BC172457785F4279BB0BFE8B6"
|
||||||
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
}
|
||||||
|
"Entry"
|
||||||
|
{
|
||||||
"MsmKey" = "8:_ED872D39D58443D590B7C80604BC0FF4"
|
"MsmKey" = "8:_ED872D39D58443D590B7C80604BC0FF4"
|
||||||
"OwnerKey" = "8:_UNDEFINED"
|
"OwnerKey" = "8:_UNDEFINED"
|
||||||
"MsmSig" = "8:_UNDEFINED"
|
"MsmSig" = "8:_UNDEFINED"
|
||||||
|
@ -1055,6 +1109,26 @@
|
||||||
"IsDependency" = "11:FALSE"
|
"IsDependency" = "11:FALSE"
|
||||||
"IsolateTo" = "8:"
|
"IsolateTo" = "8:"
|
||||||
}
|
}
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_03D7013B0D39A89CEA9D267005ADCE39"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:VCRUNTIME140.dll"
|
||||||
|
"TargetName" = "8:VCRUNTIME140.dll"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:TRUE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_04ABABC55200450383686DD782DD1548"
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_04ABABC55200450383686DD782DD1548"
|
||||||
{
|
{
|
||||||
"SourcePath" = "8:..\\samples\\games\\lander.c"
|
"SourcePath" = "8:..\\samples\\games\\lander.c"
|
||||||
|
@ -1455,6 +1529,26 @@
|
||||||
"IsDependency" = "11:FALSE"
|
"IsDependency" = "11:FALSE"
|
||||||
"IsolateTo" = "8:"
|
"IsolateTo" = "8:"
|
||||||
}
|
}
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_2CA3A525072974368303677563606FFE"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:api-ms-win-crt-heap-l1-1-0.dll"
|
||||||
|
"TargetName" = "8:api-ms-win-crt-heap-l1-1-0.dll"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:TRUE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_2D828D0247F144CDB0112B2AD4004C2C"
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_2D828D0247F144CDB0112B2AD4004C2C"
|
||||||
{
|
{
|
||||||
"SourcePath" = "8:..\\samples\\scrolling\\tunnel.c"
|
"SourcePath" = "8:..\\samples\\scrolling\\tunnel.c"
|
||||||
|
@ -1655,6 +1749,26 @@
|
||||||
"IsDependency" = "11:FALSE"
|
"IsDependency" = "11:FALSE"
|
||||||
"IsolateTo" = "8:"
|
"IsolateTo" = "8:"
|
||||||
}
|
}
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3FA71395262A4AB4A1C2839FD6B91190"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:api-ms-win-crt-stdio-l1-1-0.dll"
|
||||||
|
"TargetName" = "8:api-ms-win-crt-stdio-l1-1-0.dll"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:TRUE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3FFD08277B804985BDF072C0C1877287"
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3FFD08277B804985BDF072C0C1877287"
|
||||||
{
|
{
|
||||||
"SourcePath" = "8:..\\include\\assert.c"
|
"SourcePath" = "8:..\\include\\assert.c"
|
||||||
|
@ -2235,6 +2349,26 @@
|
||||||
"IsDependency" = "11:FALSE"
|
"IsDependency" = "11:FALSE"
|
||||||
"IsolateTo" = "8:"
|
"IsolateTo" = "8:"
|
||||||
}
|
}
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_777CE896BB0B3C09C1B5FB6CB3BFE84F"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:api-ms-win-crt-filesystem-l1-1-0.dll"
|
||||||
|
"TargetName" = "8:api-ms-win-crt-filesystem-l1-1-0.dll"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:TRUE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_79985361F09A43299E258E1A8E5ED934"
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_79985361F09A43299E258E1A8E5ED934"
|
||||||
{
|
{
|
||||||
"SourcePath" = "8:..\\include\\gfx\\mcbitmap.c"
|
"SourcePath" = "8:..\\include\\gfx\\mcbitmap.c"
|
||||||
|
@ -2255,6 +2389,26 @@
|
||||||
"IsDependency" = "11:FALSE"
|
"IsDependency" = "11:FALSE"
|
||||||
"IsolateTo" = "8:"
|
"IsolateTo" = "8:"
|
||||||
}
|
}
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7A40466D5E5D2D3FD71213A0C0AA5075"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:api-ms-win-crt-locale-l1-1-0.dll"
|
||||||
|
"TargetName" = "8:api-ms-win-crt-locale-l1-1-0.dll"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:TRUE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7A9E700FC438425580655F7C1BC07FD3"
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7A9E700FC438425580655F7C1BC07FD3"
|
||||||
{
|
{
|
||||||
"SourcePath" = "8:..\\samples\\rasterirq\\textcrawler.c"
|
"SourcePath" = "8:..\\samples\\rasterirq\\textcrawler.c"
|
||||||
|
@ -2955,6 +3109,26 @@
|
||||||
"IsDependency" = "11:FALSE"
|
"IsDependency" = "11:FALSE"
|
||||||
"IsolateTo" = "8:"
|
"IsolateTo" = "8:"
|
||||||
}
|
}
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B2B920A649CF4027457BBAB004078A03"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:api-ms-win-crt-math-l1-1-0.dll"
|
||||||
|
"TargetName" = "8:api-ms-win-crt-math-l1-1-0.dll"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:TRUE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B2F1B217D45A434DBA8EC21095F4D717"
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B2F1B217D45A434DBA8EC21095F4D717"
|
||||||
{
|
{
|
||||||
"SourcePath" = "8:..\\samples\\memmap\\charsetload.c"
|
"SourcePath" = "8:..\\samples\\memmap\\charsetload.c"
|
||||||
|
@ -3555,6 +3729,46 @@
|
||||||
"IsDependency" = "11:FALSE"
|
"IsDependency" = "11:FALSE"
|
||||||
"IsolateTo" = "8:"
|
"IsolateTo" = "8:"
|
||||||
}
|
}
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DC9FDF52011EB7C47318682BA0B3F26F"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:api-ms-win-crt-string-l1-1-0.dll"
|
||||||
|
"TargetName" = "8:api-ms-win-crt-string-l1-1-0.dll"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:TRUE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DE2BF7C92569053E7C3DCE88AB7E2566"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:api-ms-win-crt-runtime-l1-1-0.dll"
|
||||||
|
"TargetName" = "8:api-ms-win-crt-runtime-l1-1-0.dll"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:TRUE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DEADBEA270134B77800770802B21859C"
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DEADBEA270134B77800770802B21859C"
|
||||||
{
|
{
|
||||||
"SourcePath" = "8:..\\samples\\games\\connectfour.c"
|
"SourcePath" = "8:..\\samples\\games\\connectfour.c"
|
||||||
|
@ -3755,6 +3969,26 @@
|
||||||
"IsDependency" = "11:FALSE"
|
"IsDependency" = "11:FALSE"
|
||||||
"IsolateTo" = "8:"
|
"IsolateTo" = "8:"
|
||||||
}
|
}
|
||||||
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EA3C0BCB01F2639DFA2E37EC8436E5F6"
|
||||||
|
{
|
||||||
|
"SourcePath" = "8:VERSION.dll"
|
||||||
|
"TargetName" = "8:VERSION.dll"
|
||||||
|
"Tag" = "8:"
|
||||||
|
"Folder" = "8:_607E75AF0E2A4CB9908C4C39DF8FE6E4"
|
||||||
|
"Condition" = "8:"
|
||||||
|
"Transitive" = "11:FALSE"
|
||||||
|
"Vital" = "11:TRUE"
|
||||||
|
"ReadOnly" = "11:FALSE"
|
||||||
|
"Hidden" = "11:FALSE"
|
||||||
|
"System" = "11:FALSE"
|
||||||
|
"Permanent" = "11:FALSE"
|
||||||
|
"SharedLegacy" = "11:FALSE"
|
||||||
|
"PackageAs" = "3:1"
|
||||||
|
"Register" = "3:1"
|
||||||
|
"Exclude" = "11:FALSE"
|
||||||
|
"IsDependency" = "11:TRUE"
|
||||||
|
"IsolateTo" = "8:"
|
||||||
|
}
|
||||||
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_ED872D39D58443D590B7C80604BC0FF4"
|
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_ED872D39D58443D590B7C80604BC0FF4"
|
||||||
{
|
{
|
||||||
"SourcePath" = "8:..\\samples\\kernalio\\fileread.c"
|
"SourcePath" = "8:..\\samples\\kernalio\\fileread.c"
|
||||||
|
@ -4231,15 +4465,15 @@
|
||||||
{
|
{
|
||||||
"Name" = "8:Microsoft Visual Studio"
|
"Name" = "8:Microsoft Visual Studio"
|
||||||
"ProductName" = "8:oscar64"
|
"ProductName" = "8:oscar64"
|
||||||
"ProductCode" = "8:{CC0139D2-24F8-4A28-B4B8-E9FA10C912BF}"
|
"ProductCode" = "8:{60655505-5C36-4E87-9F18-A96853C16275}"
|
||||||
"PackageCode" = "8:{0F10381E-B5C0-4E70-B759-DEED3A7827B8}"
|
"PackageCode" = "8:{030FE9E0-9DAD-4D51-BE92-E5CF0A3CE014}"
|
||||||
"UpgradeCode" = "8:{9AB61EFF-ACAC-4079-9950-8D96615CD4EF}"
|
"UpgradeCode" = "8:{9AB61EFF-ACAC-4079-9950-8D96615CD4EF}"
|
||||||
"AspNetVersion" = "8:2.0.50727.0"
|
"AspNetVersion" = "8:2.0.50727.0"
|
||||||
"RestartWWWService" = "11:FALSE"
|
"RestartWWWService" = "11:FALSE"
|
||||||
"RemovePreviousVersions" = "11:TRUE"
|
"RemovePreviousVersions" = "11:TRUE"
|
||||||
"DetectNewerInstalledVersion" = "11:TRUE"
|
"DetectNewerInstalledVersion" = "11:TRUE"
|
||||||
"InstallAllUsers" = "11:FALSE"
|
"InstallAllUsers" = "11:FALSE"
|
||||||
"ProductVersion" = "8:1.7.150"
|
"ProductVersion" = "8:1.8.151"
|
||||||
"Manufacturer" = "8:oscar64"
|
"Manufacturer" = "8:oscar64"
|
||||||
"ARPHELPTELEPHONE" = "8:"
|
"ARPHELPTELEPHONE" = "8:"
|
||||||
"ARPHELPLINK" = "8:"
|
"ARPHELPLINK" = "8:"
|
||||||
|
|
Loading…
Reference in New Issue