public void IncIx() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "INC IX" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xDD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x23); }
public void AdcIYLtoA() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "ADC A,IYL" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xFD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x8D); }
public void EquIsWorkingCharacter() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "BETU EQU 'A'" }); bool successBuildProgram = assembler.BuildProgram(); Assert.AreEqual(successBuildProgram, true); Assert.AreEqual(assembler.AssembledProgram.SymbolTable.Count == 2, true); Assert.AreEqual(assembler.AssembledProgram.SymbolTable["BETU"].Type == SymbolType.Constant, true); Assert.AreEqual(assembler.AssembledProgram.SymbolTable["BETU"].Value == 0x41, true); }
public void EquIsWorkingWithByteAndWithEqualSymbol() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "SZAM = $FA" }); bool successBuildProgram = assembler.BuildProgram(); Assert.AreEqual(successBuildProgram, true); Assert.AreEqual(assembler.AssembledProgram.SymbolTable.Count == 2, true); Assert.AreEqual(assembler.AssembledProgram.SymbolTable["SZAM"].Type == SymbolType.Constant, true); Assert.AreEqual(assembler.AssembledProgram.SymbolTable["SZAM"].Value == 0xFA, true); }
public void EquIsWorkingWithWord() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "VIDEO EQU $FA66" }); bool successBuildProgram = assembler.BuildProgram(); Assert.AreEqual(successBuildProgram, true); Assert.AreEqual(assembler.AssembledProgram.SymbolTable.Count == 2, true); Assert.AreEqual(assembler.AssembledProgram.SymbolTable["VIDEO"].Type == SymbolType.Constant, true); Assert.AreEqual(assembler.AssembledProgram.SymbolTable["VIDEO"].Value == 0xFA66, true); }
public void SbcBcToHl() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "SBC HL,BC" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xED); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x42); }
public void Cpdr() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "CPDR" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xED); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0xB9); }
public void InFromPointerToA(string row) { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", row }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xDB); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x4D); }
public void SetWithBit3AndE() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "SET 3,E" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xCB); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0xDB); }
public void BitWithBit6AndHlPointer() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "BIT 6,(HL)" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xCB); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x76); }
public void SlaWithH() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "SLA H" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xCB); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x24); }
public void SbcConstanttoA(string row) { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", row }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xDE); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x5D); }
public void PushIy() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "PUSH IY" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xFD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0xE5); }
public void CompareWithIYL() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "CP IYL" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xFD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0xBD); }
public void InAFromPointerC() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "IN A,(C)" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xED); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x78); }
public void ResWithBit1AndH() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "RES 1,H" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xCB); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x8C); }
public void AddSpToIx() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "ADD IX,SP" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xDD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x39); }
public void JpWithIyPointer() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "JP (IY)" }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 2); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xFD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0xE9); }
public void IncBinWithNegativeThirdOperands() { var includePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var assembler = new Z80Assembler.Z80Assembler(new List <string> { @"ORG $3000", "ADAT INCBIN \"TESTDATA\\INCBINTEST.BIN\",3,-3" }, new List <string> { includePath }); bool successBuildProgram = assembler.BuildProgram(); Assert.AreEqual(successBuildProgram, false); Assert.IsTrue(assembler.StatusMessage.StartsWith("Az utasítás 'INCBIN' harmadik operandusa nem lehet kisebb egynél")); }
public void IncBinOnlyWithWrongFileName() { var includePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var assembler = new Z80Assembler.Z80Assembler(new List <string> { @"ORG $3000", "ADAT INCBIN \"testdata\\incbintest2.bin\"" }, new List <string> { includePath }); bool successBuildProgram = assembler.BuildProgram(); Assert.AreEqual(successBuildProgram, false); Assert.IsTrue(assembler.StatusMessage.StartsWith("Nem találom a megadott file-t")); }
public void CompareWithIyRegister(string row) { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", row }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 3); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xFD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0xBE); Assert.AreEqual(assembler.AssembledProgramBytes[2], 0x4D); }
public void JpWithOutCondition(string row) { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", row }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 3); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xC3); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0xFD); Assert.AreEqual(assembler.AssembledProgramBytes[2], 0x4D); }
public void IncBinWithWrongSecondOperands() { var includePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var assembler = new Z80Assembler.Z80Assembler(new List <string> { @"ORG $3000", "ADAT INCBIN \"TESTDATA\\INCBINTEST.BIN\",A,3" }, new List <string> { includePath }); bool successBuildProgram = assembler.BuildProgram(); Assert.AreEqual(successBuildProgram, false); Assert.IsTrue(assembler.StatusMessage.StartsWith("Az utasítás 'INCBIN' második operandusa csak szám lehet!")); }
public void SubIyWithOffsetToA(string row) { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", row }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 3); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xFD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x96); Assert.AreEqual(assembler.AssembledProgramBytes[2], 0x5D); }
public void LdIntoIndexedAddressWithIyFromAWithExpression(string row) { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", row }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 3); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xFD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x77); Assert.AreEqual(assembler.AssembledProgramBytes[2], 0x3C); }
public void BitWithBit1AndIyWithOffset(string row) { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", row }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 4); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xFD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0xCB); Assert.AreEqual(assembler.AssembledProgramBytes[2], 0x5D); Assert.AreEqual(assembler.AssembledProgramBytes[3], 0x4E); }
public void SllWithIxAndOffsetIntoL(string row) { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", row }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 4); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xDD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0xCB); Assert.AreEqual(assembler.AssembledProgramBytes[2], 0x5D); Assert.AreEqual(assembler.AssembledProgramBytes[3], 0x35); }
public void LdConstantIntoIndexedAddressWithIxAndExpression(string row) { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", row }); bool result = assembler.BuildProgram(); Assert.AreEqual(result, true); Assert.AreEqual(assembler.AssembledProgramBytes.Length, 4); Assert.AreEqual(assembler.AssembledProgramBytes[0], 0xDD); Assert.AreEqual(assembler.AssembledProgramBytes[1], 0x36); Assert.AreEqual(assembler.AssembledProgramBytes[2], 0xFF); Assert.AreEqual(assembler.AssembledProgramBytes[3], 0xAF); }
public void OrgCouldBeAssembledWithLcConstant() { var assembler = new Z80Assembler.Z80Assembler(new List <string> { "ORG $3000", "RET", "ORG .LC", "RET" }); bool successBuildProgram = assembler.BuildProgram(); Assert.AreEqual(successBuildProgram, true); Assert.AreEqual(assembler.InterPretedAssemblyRows.Count == 4, true); Assert.AreEqual(assembler.AssembledProgram.ProgramSections.Count == 2, true); Assert.AreEqual(assembler.AssembledProgram.ProgramSections[0].ProgramStartAddress == 0x3000, true); Assert.AreEqual(assembler.AssembledProgram.ProgramSections[0].SectionLength == 1, true); Assert.AreEqual(assembler.AssembledProgram.ProgramSections[1].ProgramStartAddress == 0x3001, true); Assert.AreEqual(assembler.AssembledProgram.ProgramSections[0].SectionLength == 1, true); }
public void AssemblerInterpretLabelWithUnderScoreAndInstruction(string row) { var assembler = new Z80Assembler.Z80Assembler(new List <string> { row }); bool successBuildProgram = assembler.BuildProgram(); Assert.AreEqual(successBuildProgram, true); Assert.AreEqual(assembler.InterPretedAssemblyRows.Count == 1, true); Assert.AreEqual(assembler.InterPretedAssemblyRows[0].Label == "FGHJKL_1", true); Assert.AreEqual(assembler.InterPretedAssemblyRows[0].Operands.Count == 1, true); Assert.AreEqual(assembler.InterPretedAssemblyRows[0].Operands[0].Info.DataType == OperandType.Word, true); Assert.AreEqual(assembler.InterPretedAssemblyRows[0].Instruction.Mnemonic == "ORG", true); Assert.AreEqual(assembler.InterPretedAssemblyRows[0].Instruction.Type == InstructionType.AssemblerInstruction, true); }