diff --git a/Publish/tutorials/VIC20/escape/escape.trse b/Publish/tutorials/VIC20/escape/escape.trse index 02dc1ce4f..25edbc319 100644 --- a/Publish/tutorials/VIC20/escape/escape.trse +++ b/Publish/tutorials/VIC20/escape/escape.trse @@ -54,4 +54,8 @@ data_header_chr\screen.flf = 0 override_target_settings_basic = 6.95131e-310 data_header_chr/loadingtext.flf = 6.95309e-310 show_all_files = 1 +use_track_19 = 1 +disable_compiler_comments = 0 +use_vice_c1541 = 0 +use_python = 0 open_files =, main.ras diff --git a/source/Compiler/assembler/asm6502.cpp b/source/Compiler/assembler/asm6502.cpp index 50c1d1705..53373b1f7 100644 --- a/source/Compiler/assembler/asm6502.cpp +++ b/source/Compiler/assembler/asm6502.cpp @@ -1036,20 +1036,13 @@ void Asm6502::OptimisePassLdaTax(QString x) QString tst = getToken(l2,0); if (tst.startsWith("ta") || tst=="sta") perform=false; - // qDebug() << "TEST " << perform << tst ; + if (perform) { m_removeLines.append(j); QString org = m_source[i]; m_source[i] = m_source[i].replace("lda", "ld"+x)+" ; optimized, look out for bugs"; - // qDebug() << "Changed : "<< org << " to " <(new SymbolTable()); m_tempVarsBlock = QSharedPointer(new Appendix()); } @@ -59,12 +59,12 @@ void Assembler::Nl() void Assembler::Write(QString str, int level) { -// qDebug() << "ASM : " <m_source<<(";Writing to block: "+m_currentBlock->m_pos); + // if (m_currentBlock!=nullptr) + // m_currentBlock->m_source<<(";Writing to block: "+m_currentBlock->m_pos); bool haveWritten = false; if (m_currentBlock==nullptr) { @@ -79,7 +79,7 @@ void Assembler::Write(QString str, int level) else m_currentBlock = m_mainBlock; } -/* else { + /* else { // qDebug() << "CURRENTBLOCK: " << str; } */ @@ -120,7 +120,7 @@ bool caseInsensitiveLessThan(const QSharedPointer s1, const QSharedPoi int a,b; bool ok; -// qDebug() << sa << " vs " << sb; + // qDebug() << sa << " vs " << sb; if (sa.contains("0x")) a=sa.toInt(&ok, 16); else @@ -134,13 +134,6 @@ bool caseInsensitiveLessThan(const QSharedPointer s1, const QSharedPoi return a < b; } -/*int doSomething() -{ - QStringList list; - list << "AlPha" << "beTA" << "gamma" << "DELTA"; - qStableSort(list.begin(), list.end(), caseInsensitiveLessThan); - // list: [ "AlPha", "beTA", "DELTA", "gamma" ] -}*/ void Assembler::StartExistingBlock(QSharedPointer block) { m_blockStack.append(m_currentBlock); @@ -158,7 +151,7 @@ void Assembler::StartMemoryBlock(QString pos) { if (m_currentBlock!=nullptr) { if (m_currentBlock->m_pos==pos) return; -// else ErrorHandler("") + // else ErrorHandler("") } if (m_currentBlock!=nullptr) EndMemoryBlock(); @@ -168,10 +161,6 @@ void Assembler::StartMemoryBlock(QString pos) { if (app->m_pos == pos) { m_currentBlock = app; -// m_blockStack.append(m_currentBlock); -// qDebug() << "LAST : " <m_source.last().toLower().startsWith("endblock")) - // m_currentBlock->m_source.removeLast(); m_currentBlock->m_extraOutput = false; @@ -187,65 +176,40 @@ void Assembler::StartMemoryBlock(QString pos) { Appendix app(pos); m_currentBlock = QSharedPointer(new Appendix(pos)); m_appendix.append(m_currentBlock); -// if (!Syntax::s.m_currentSystem->CL65Syntax()) - // m_currentBlock->Append(GetOrg(Util::NumberFromStringHex(pos)),1); + // if (!Syntax::s.m_currentSystem->CL65Syntax()) + // m_currentBlock->Append(GetOrg(Util::NumberFromStringHex(pos)),1); m_blockStack.append(m_currentBlock); Comment("Starting new memory block at "+pos); //QString p = pos; - // p = p.remove("$"); -// Label("StartBlock"+p); -// qDebug() << "Starting new memory block at "+pos; + // p = p.remove("$"); + // Label("StartBlock"+p); + // qDebug() << "Starting new memory block at "+pos; // m_currentBlockCount = m_appendix.count()-1; } void Assembler::EndMemoryBlock() { -/* if (!m_isTheRealEnd) - if (m_currentBlock==m_mainBlock) // Don't end main block - return; -*/ if (m_currentBlock!=nullptr) { Comment("Ending memory block at "+m_currentBlock->m_pos); } -/* - - if (m_currentBlock!=nullptr && m_currentBlock->m_extraOutput == false) { -// Label("EndBlock"+QString::number(m_currentBlock->m_id)); - QString s = m_currentBlock->m_pos; - s = s.remove("$"); - Label("EndBlock"+s); - m_currentBlock->m_extraOutput = true; - - }*/ m_currentBlock = nullptr; - /* m_currentBlock=nullptr; - Comment("Mainblock: "+QString::number(m_mainBlock==nullptr)); - if (m_mainBlock!=nullptr) - Comment("Mainblock number: "+m_mainBlock->m_pos); -*/ + if (m_blockStack.count()>0) m_blockStack.removeLast(); if (m_blockStack.count()!=0) { m_currentBlock = m_blockStack.last(); - // qDebug() << "STILL STACK : " << m_blockStack.count() <m_pos; } if (m_currentBlock==nullptr) m_currentBlock = m_mainBlock; -// m_currentBlock = m_mainBlock; -// if (m_mainBlock!=nullptr) - // StartMemoryBlock(Util::numToHex(Syntax::s.m_currentSystem->m_programStartAddress)); - // if (m_currentBlock!=nullptr) - // qDebug() << "AT END: " << m_blockStack.count() << m_currentBlock->m_pos;; -// else m_currentBlock = nullptr; } void Assembler::SortAppendix() { -std::sort(m_appendix.begin(), m_appendix.end(), caseInsensitiveLessThan); + std::sort(m_appendix.begin(), m_appendix.end(), caseInsensitiveLessThan); } void Assembler::PushCounter() @@ -260,11 +224,6 @@ void Assembler::PopCounter(int ln) int i = m_cycleCounter.last(); m_cycleCounter.removeLast(); m_blockCycles[ln]=+i; - // if (i>m_cycles[ln]) // Only count largest number - // m_cycles[ln] += i; - // return i; -// qDebug() << "POP <<"<m_orderedByDefinition.count();k++) { QString v = st->m_orderedByDefinition[k]; auto s = st->m_symbols[v]; -// qDebug() << "WTF " <m_name <m_type; + // qDebug() << "WTF " <m_name <m_type; // Build the name QString n = getLabelEnding(name + "_" + st->m_name+"_"+s->m_name); QString w = n; QString t = byte; -// if (Syntax::s.m_currentSystem->iseZ80()) - // Write(".align 4",0); + // if (Syntax::s.m_currentSystem->iseZ80()) + // Write(".align 4",0); if (s->m_type.toLower()=="integer") { t= word; @@ -614,7 +568,7 @@ bool Assembler::DeclareClass(QString name, QString type, int count, QStringList if (Syntax::s.m_currentSystem->CL65Syntax()) { if (Syntax::s.m_currentSystem->useZByte) { Asm(name+"\t=\t"+ Util::numToHex(m_zbyte)); - // Write(name +"\t=\t"+Util::numToHex(m_zbyte)); + // Write(name +"\t=\t"+Util::numToHex(m_zbyte)); m_zbyte+=st->getSize()*count; } else { @@ -672,7 +626,7 @@ void Assembler::RemoveUnusedLabels() lbl = lbl.remove(":"); labelLine[lbl] = i; labelsUsed[lbl] = false; -// qDebug() << "Found label: "<m_system==AbstractSystem::SNES) - if (m_tempVars.count()!=0) - ErrorHandler::e.Error("Error: Out of memory addresses for temp values for the SNES (must not reside in ROM). Please go to the project settings -> zeropages -> add new addresses to the 'temp vars zeropages!'"); + if (m_tempVars.count()!=0) + ErrorHandler::e.Error("Error: Out of memory addresses for temp values for the SNES (must not reside in ROM). Please go to the project settings -> zeropages -> add new addresses to the 'temp vars zeropages!'"); if (m_tempVarsBlock!=nullptr) newSource << m_tempVarsBlock->m_source; @@ -810,7 +760,7 @@ void Assembler::Connect() m_mainBlock->Append(t,0); } -// qDebug() <m_source; + // qDebug() <m_source; if (m_tempVarsBlock!=nullptr) m_mainBlock->m_source<m_source; @@ -818,20 +768,20 @@ void Assembler::Connect() } -// qDebug() << m_mainBlock->m_source; + // qDebug() << m_mainBlock->m_source; // m_appendix.append(m_ extraBlocks); SortAppendix(); // qDebug() << m_appendix[0].m_source; QStringList pre; -// EndMemoryBlock(); - // qDebug() <m_system==AbstractSystem::MEGA65 || Syntax::s.m_currentSystem->m_system==AbstractSystem::X16) { for (int i=0;iCL65Syntax()) - // m_currentBlock->Append(GetOrg(Util::NumberFromStringHex(pos)),1); + // m_currentBlock->Append(GetOrg(Util::NumberFromStringHex(pos)),1); pre<< m_appendix[i]->getSource(); } @@ -839,26 +789,26 @@ void Assembler::Connect() else for (int i=0;im_pos <m_programStartAddress)<< QString::number(m_appendix[i]==m_mainBlock); - // qDebug() << m_appendix[i]->m_source; + // qDebug() << "*************" <m_pos <m_programStartAddress)<< QString::number(m_appendix[i]==m_mainBlock); + // qDebug() << m_appendix[i]->m_source; QString p = m_appendix[i]->m_pos; int start = Util::NumberFromStringHex(m_appendix[i]->m_pos); p = p.replace("$",""); if (Util::NumberFromStringHex(m_appendix[i]->m_pos)<=Syntax::s.m_currentSystem->m_programStartAddress+0x20) { if (start!=0) - pre<< "\t"+GetOrg(start); + pre<< "\t"+GetOrg(start); pre<< m_appendix[i]->getSource(); } else{ if (start!=0) - m_source<<"\t"+GetOrg(start); + m_source<<"\t"+GetOrg(start); m_source<< m_appendix[i]->getSource(); } } -// qDebug().noquote() << m_source; + // qDebug().noquote() << m_source; if (Syntax::s.m_currentSystem->m_processor == AbstractSystem::MOS6502) @@ -868,9 +818,9 @@ void Assembler::Connect() -// qDebug() << "************************** "<<(m_appendix[i]->m_pos); + // qDebug() << "************************** "<<(m_appendix[i]->m_pos); -// m_source=m_startInsertAssembler+m_source; + // m_source=m_startInsertAssembler+m_source; m_source.removeAll(""); for (QString& l: m_source) diff --git a/source/Compiler/symboltable.cpp b/source/Compiler/symboltable.cpp index 53c39bd00..2786f4143 100644 --- a/source/Compiler/symboltable.cpp +++ b/source/Compiler/symboltable.cpp @@ -30,27 +30,12 @@ int SymbolTable::pass = 0; QStringList SymbolTable::s_ignoreUnusedSymbolWarning; -//QString SymbolTable::m_gPrefix = ""; -//QMap> SymbolTable::m_constants; SymbolTable::~SymbolTable() { - /* for (QString s: m_symbols.keys()) - delete m_symbols[s]; - m_symbols.clear(); - - for (QString s: m_constants.keys()) - delete m_constants[s]; - m_constants.clear(); - - for (QString s: m_records.keys()) - delete m_records[s]; - m_records.clear(); -*/ Delete(); } void SymbolTable::ExitProcedureScope(bool removeSymbols) { - // "TRUE" doesn't work if (removeSymbols) for (QString s: m_symbols.keys()) { if (s.startsWith(m_currentProcedure)) { @@ -78,7 +63,6 @@ void SymbolTable::DefineSid(unsigned int initAddress, unsigned int playAddress) QString play = "SIDFILE_"+s+"_PLAY"; m_constants[init] = QSharedPointer(new Symbol("$"+QString::number(initAddress,16),"ADDRESS", initAddress)); m_constants[play] = QSharedPointer(new Symbol("$"+QString::number(playAddress,16),"ADDRESS", playAddress)); - // qDebug() << "DEFINE SID "<> keeps; if ( @@ -140,28 +120,17 @@ void SymbolTable::Initialize() value = values[0]; - // if (constant=="KEY_2") - // qDebug() << system << currentSystem << system.contains(currentSystem); - if (Syntax::s.m_currentSystem->systemIsOfType(system.split(","))) { ulong ival = Util::NumberFromStringHex(value); if (ival==0 && value.length()>4) { - // qDebug() << "IVAL zero so : " << value; QString tst = value; tst = tst.remove("$"); bool ok; ival = tst.toLongLong(&ok,16); - - // if (constant.contains("PAL")) - // qDebug() << "SymbolTable constants "<< constant << ival << value<(new Symbol(value,"BYTE", ival)); if (type=="a") { @@ -172,17 +141,9 @@ void SymbolTable::Initialize() if (type=="l") m_constants[constant] = QSharedPointer(new Symbol(value,"LONG", ival)); - // if (constant.toLower().contains("palette")) - // qDebug() << "SYMTAB "<m_value->m_fVal; - - // if (constant=="KEY_2") - // qDebug() << constant << Util::numToHex(value.toInt())); - - // reservedWords.append(Token(TokenType::getType(word), word.toUpper()))); } } - // if (Syntax::s.m_currentSystem->m_system!=AbstractSystem::NES) if (Syntax::s.m_currentSystem->m_system==AbstractSystem::C64 || Syntax::s.m_currentSystem->m_system==AbstractSystem::MEGA65 || Syntax::s.m_currentSystem->m_system==AbstractSystem::C128) if (!m_constants.contains("SIDFILE_1_INIT")) { for (int i=1;i<10;i++) { @@ -201,7 +162,6 @@ void SymbolTable::Initialize() C64Key k = Syntax::s.m_c64keys[key]; m_constants[k.m_key] = QSharedPointer(new Symbol(QString::number(k.m_value), "BYTE", k.m_value)); } - // qDebug() << Util::numToHex(m_constants["KEY_2"]->m_value->m_fVal); if ( @@ -211,7 +171,6 @@ void SymbolTable::Initialize() m_constants["INIT_MUSIC"] = keeps[0]; m_constants["PLAY_MUSIC"] = keeps[1]; m_constants["STOP_MUSIC"] = keeps[2]; - // qDebug() << Util::numToHex(keeps[0]->m_value->m_fVal); } @@ -221,8 +180,6 @@ void SymbolTable::Initialize() void SymbolTable::Merge(SymbolTable *other, bool mergeConstants) { for (QString k : other->m_records.keys()) { - // if (m_records.contains(k) && m_externalRecords.contains(k)) - // ErrorHandler::e.Error("Record already defined : '"+k+"'"); m_records[k] = other->m_records[k]; } for (QString k : other->m_symbols.keys()) { @@ -230,7 +187,6 @@ void SymbolTable::Merge(SymbolTable *other, bool mergeConstants) m_symbols[k] = other->m_symbols[k]; } } - // qDebug() << other->m_constants.keys(); m_globalList.append(other->m_globalList); m_globalList.removeDuplicates(); if (mergeConstants) @@ -247,24 +203,14 @@ void SymbolTable::Merge(SymbolTable *other, bool mergeConstants) } - /* - for (QString t : m_symbols.keys()) - qDebug() << m_symbols[t]->isUsedBy; -*/ } void SymbolTable::Define(QSharedPointer s, bool isUsed) { - // if (isRegisterName(s->m_name)) - // return ; QString name = m_currentProcedure+ s->m_name; if (m_ignoreAllprefixes) name = s->m_name; -/* if (m_ contains(name)) { - ErrorHandler::e.Error("There is already a unit defined with the name '"+name+"'"); - } -*/ if (isRegisterName(s->m_name)) name = s->m_name; @@ -278,35 +224,7 @@ void SymbolTable::Define(QSharedPointer s, bool isUsed) { } void SymbolTable::Delete() { - /* for (QString val : m_symbols.keys()) { - QSharedPointer s = m_symbols[val]; - if (s!=nullptr) { - if (s->m_value) - delete s->m_value; - - } - delete s; - }*/ m_symbols.clear(); - // Delete static constants as well - /* if (isInitialized) { - for (QString val : m_constants.keys()) { - QSharedPointer s = m_symbols[val]; - - if (s!=nullptr) { - if (s->m_value) - delete s->m_value; - - } - delete s; - } - isInitialized = false; - - } - m_constants.clear(); - */ - // for (QString s: m_records.keys()) - // delete m_records[s]; m_records.clear(); } @@ -318,11 +236,6 @@ void SymbolTable::setName(QString s) { void SymbolTable::InitBuiltins() { - /* m_globalList << "screenmemory" << "sine" << "return"; - << "log2_table" - << "joystickup" << "joystickdown" << "joystickleft" << "joystickright" <<"joystickbutton" - << "joy1" << "joy1pressed" << -*/ m_addToGlobals = true; // Define global methods here Define(QSharedPointer(new BuiltInTypeSymbol("INTEGER",""))); diff --git a/source/LeLib/limage/imageleveleditor.cpp b/source/LeLib/limage/imageleveleditor.cpp index bfa4ade08..f3ee5d2f3 100644 --- a/source/LeLib/limage/imageleveleditor.cpp +++ b/source/LeLib/limage/imageleveleditor.cpp @@ -681,6 +681,10 @@ unsigned int ImageLevelEditor::getPixel(int x, int y) else col = m_charset->m_data[cpos].c[3]; + if (m_classvariableType == LevelCharacter) { + return v; + } + // if (col>=8) { // cx/=2; // } diff --git a/source/LeLib/limage/limage.cpp b/source/LeLib/limage/limage.cpp index 07e11b8b1..c860b028f 100644 --- a/source/LeLib/limage/limage.cpp +++ b/source/LeLib/limage/limage.cpp @@ -672,12 +672,12 @@ void LImage::ShiftXY(int dx, int dy) /* if (m_footer.get(LImageFooter::POS_DISPLAY_HYBRID)==1) { dx*=2; }*/ - if (m_isHybridTemp) { - dx*=2; - } dx*=m_bitMask==0b11?2:1; - +/* if (m_isHybridTemp && m_bitMask==0b11) { + dx*=1; + } +*/ if (!m_footer.isFullscreen()) { int sx = m_footer.get(LImageFooter::POS_CURRENT_DISPLAY_X)*8; int sy = m_footer.get(LImageFooter::POS_CURRENT_DISPLAY_Y)*8; diff --git a/source/LeLib/limage/limage.h b/source/LeLib/limage/limage.h index f163e5fe8..9544cdcd3 100644 --- a/source/LeLib/limage/limage.h +++ b/source/LeLib/limage/limage.h @@ -108,7 +108,7 @@ Q_OBJECT }; - enum WriteType { Color, Character }; + enum WriteType { Color, Character, LevelCharacter }; LImage() {} LImage(LColorList::Type t); virtual ~LImage() { diff --git a/source/OrgAsm/orgasm.cpp b/source/OrgAsm/orgasm.cpp index 0563555b4..51c646424 100644 --- a/source/OrgAsm/orgasm.cpp +++ b/source/OrgAsm/orgasm.cpp @@ -51,14 +51,10 @@ void Orgasm::LoadCodes(int CPUFlavor) void Orgasm::ProcessSource() { - // QElapsedTimer t; - //t.start(); for (int i=0;i<256;i++) { QString r = "#P"+QString::number(i)+";"; -// m_source = m_source.replace(r,QChar(i)); m_source = m_source.replace(r,"\"," + QString::number(i) + ",\""); } - // qDebug() << "Orgasm::Processources took " << Util::MilisecondToString(t.elapsed()); } diff --git a/source/OrgAsm/orgasm.h b/source/OrgAsm/orgasm.h index e80308b07..6067036d6 100644 --- a/source/OrgAsm/orgasm.h +++ b/source/OrgAsm/orgasm.h @@ -13,8 +13,6 @@ class OrgasmData { public: enum PassType { PASS_LABELS, PASS_SYMBOLS, PASS_COMPILE }; - - static QString ReplaceWord(QString& line, QString& word, QString replacement); static QString BinopExpr(QString& expr, long& val, QString rep); @@ -27,12 +25,10 @@ class OrgasmInstruction { enum Type {none, imm, zp, zpx, zpy, izx, izy,abs, abx,aby, ind, rel, izz, label, imp}; Type m_type; int m_size = 0; -// enum Pass { passSymbol, passCompile }; bool m_bracketsAroundVariables = false; void Init(QStringList lst) { m_opCode = lst[0]; -// m_expr = lst[1]; if (lst.count()>1) m_type = getTypeFromParams(lst[1]); else m_type=none; @@ -40,11 +36,12 @@ class OrgasmInstruction { Type getTypeFromParams(QString s) { s=s.toLower(); - // qDebug() << " Getting type from : " << s; if (s=="") return none; + if (s.startsWith("#")) return imm; + long i = 0; bool ok; if (s.contains(",")) { diff --git a/source/OrgAsm/zorgasm.cpp b/source/OrgAsm/zorgasm.cpp index 584f9abc1..84b09b3e9 100644 --- a/source/OrgAsm/zorgasm.cpp +++ b/source/OrgAsm/zorgasm.cpp @@ -253,7 +253,6 @@ void ZOrgasm::ProcessInstructionData(OrgasmLine &ol, OrgasmData::PassType pd) type = OrgasmInstruction::none; } if (m_opCode.startsWith("bit ") || m_opCode.startsWith("res ") || m_opCode.startsWith("set ")) { - // qDebug() <<"BIT before " <setBasePixel(x,y); - + img->SetCurrentType(LImage::Character); if (button==1 && m_status == Status::Idle) { m_status = Status::Selecting; m_start = QPoint(x,y); @@ -364,12 +364,15 @@ void CopyStamp::StampImage(int x, int y, LImage* img) { if (m_copy == nullptr) return; + img->SetCurrentType(LImage::Character); + m_copy->SetCurrentType(LImage::LevelCharacter); int w = abs(m_end.x()-m_start.x()); int h = abs(m_end.y()-m_start.y()); img->setBasePixel(x,y); for (int i=0;igetPixel(m_start.x() + i-0.5, m_start.y()+j-0.5); + img->m_currentChar = col; if (m_type==1) img->setPixel(i-w/2+x,j-h/2+y, col); else @@ -378,6 +381,8 @@ void CopyStamp::StampImage(int x, int y, LImage* img) // for (int xd=0;xdm_scale;xd++) // img->setPixel(i-w/2.0+x + xd,j-h/2.0+y, col); } + // m_copy->SetCurrentType(LImage::Color); + // img->SetCurrentType(LImage::Color); } void CopyStamp::Init() { diff --git a/source/trsedocuments/formraseditor.cpp b/source/trsedocuments/formraseditor.cpp index 4130589bd..b0c9b683e 100644 --- a/source/trsedocuments/formraseditor.cpp +++ b/source/trsedocuments/formraseditor.cpp @@ -1311,7 +1311,7 @@ void FormRasEditor::ShadowBuild() if (!m_hasFocus) return; - Build(true); +// Build(true); }