Esempio n. 1
0
        public void labels()
        {
            z80assembler z = new z80assembler();
             z.loadcommands();
             z.reset();

            //Check labels work
            z.pushcommand("nop", "", "", "");
            z.pushcommand("nop", "", "", "");
            z.pushcommand("nop", "", "", "");
            z.pushcommand("nop", "", "", "");
            z.pushcommand("nop", "", "", "");
            z.pushlabel("test");
            z.fixlabel("test");
            z.pushcommand("LD", "A", "(test)", " LD A,(test)");
            z.link();
            // Test is at address 5 so expect 05 00 jump address
            Assert.AreEqual(z.bytes[6] , 05);
            Assert.AreEqual(z.bytes[7] , 00);

            z.parse(" LD HL,test","");
            Assert.AreEqual(0x21,z.bytes[8]);
            Assert.AreEqual(00,z.bytes[9]);
            Assert.AreEqual(00,z.bytes[10]);
            z.link();
            Assert.AreEqual(z.bytes[9] , 0x05);
            Assert.AreEqual(z.bytes[10] , 00);

            z.parse(" LD HL,5+5", "");
            Assert.AreEqual(z.bytes[11] , 0x21);
            Assert.AreEqual(z.bytes[12] , 0x0A);
            Assert.AreEqual(z.bytes[13] , 0x00);

            //z.matchbreak = true;
            z.parse("    LD HL,(test+5)", "");
            z.link();
            Assert.AreEqual(z.bytes[14] , 0x2A);
            Assert.AreEqual(z.bytes[15] , 0x0A);
            Assert.AreEqual(z.bytes[16] , 0x00);

            // DD CB oo C6+8*b
            //z.parse( "    SET 3, (IX+5)","");
            //Assert.AreEqual(z.bytes[17] , 0xDD);
            //Assert.AreEqual(z.bytes[18] , 0xCB);
            //Assert.AreEqual(z.bytes[19] , 0x05);
            //Assert.AreEqual(z.bytes[20] , 0xC6+8*3);

            z.link();
        }