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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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);
        }
Beispiel #16
0
        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!"));
        }
Beispiel #24
0
        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);
        }
Beispiel #27
0
        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);
        }
Beispiel #29
0
        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);
        }