Browse Source

Several more opcodes tested.

master
Bryan Miller 5 years ago
parent
commit
c2f0652936
1 changed files with 300 additions and 41 deletions
  1. +300
    -41
      test/unit.src.chip.MOS6502.assembler.spec.js

+ 300
- 41
test/unit.src.chip.MOS6502.assembler.spec.js View File

@@ -673,32 +673,178 @@ describe("Testing MOS6502 Assembler...", function(){
expect(res[2]).to.equal(0x51);
});
// -------------------------------------------------------------
it("LDA Immediate");
it("LDA Zero Page");
it("LDA Zero Page, X");
it("LDA Absolute");
it("LDA Absolute, X");
it("LDA Absolute, Y");
it("LDA Indirect, X");
it("LDA Indirect, Y");
it("LDA Immediate", function(){
let res = asm.reset().compile("LDA #$44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xA9);
expect(res[1]).to.equal(0x44);
});

it("LDA Zero Page", function(){
let res = asm.reset().compile("LDA $44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xA5);
expect(res[1]).to.equal(0x44);
});

it("LDA Zero Page, X", function(){
let res = asm.reset().compile("LDA $44,X").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xB5);
expect(res[1]).to.equal(0x44);
});

it("LDA Absolute", function(){
let res = asm.reset().compile("LDA $4400").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0xAD);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("LDA Absolute, X", function(){
let res = asm.reset().compile("LDA $4400,X").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0xBD);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("LDA Absolute, Y", function(){
let res = asm.reset().compile("LDA $4400, Y").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0xB9);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("LDA Indirect, X", function(){
let res = asm.reset().compile("LDA ($44,X)").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xA1);
expect(res[1]).to.equal(0x44);
});

it("LDA Indirect, Y", function(){
let res = asm.reset().compile("LDA ($44),Y").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xB1);
expect(res[1]).to.equal(0x44);
});

// -------------------------------------------------------------
it("LDX Immediate");
it("LDX Zero Page");
it("LDX Zero Page, Y");
it("LDX Absolute");
it("LDX Absolute, Y");
it("LDX Immediate", function(){
let res = asm.reset().compile("LDX #$44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xA2);
expect(res[1]).to.equal(0x44);
});

it("LDX Zero Page", function(){
let res = asm.reset().compile("LDX $44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xA6);
expect(res[1]).to.equal(0x44);
});

it("LDX Zero Page, Y", function(){
let res = asm.reset().compile("LDX $44,Y").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xB6);
expect(res[1]).to.equal(0x44);
});

it("LDX Absolute", function(){
let res = asm.reset().compile("LDX $4400").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0xAE);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("LDX Absolute, Y", function(){
let res = asm.reset().compile("LDX $4400,Y").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0xBE);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

// -------------------------------------------------------------
it("LDY Immediate");
it("LDY Zero Page");
it("LDY Zero Page, X");
it("LDY Absolute");
it("LDY Absolute, X");
it("LDY Immediate", function(){
let res = asm.reset().compile("LDY #$44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xA0);
expect(res[1]).to.equal(0x44);
});

it("LDY Zero Page", function(){
let res = asm.reset().compile("LDY $44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xA4);
expect(res[1]).to.equal(0x44);
});

it("LDY Zero Page, X", function(){
let res = asm.reset().compile("LDY $44,X").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0xB4);
expect(res[1]).to.equal(0x44);
});

it("LDY Absolute", function(){
let res = asm.reset().compile("LDY $4400").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0xAC);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("LDY Absolute, X", function(){
let res = asm.reset().compile("LDY $4400,X").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0xBC);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

// -------------------------------------------------------------
it("LSR Accumulator");
it("LSR Zero Page");
it("LSR Zero Page, X");
it("LSR Absolute");
it("LSR Absolute, X");
it("LSR Accumulator", function(){
let res = asm.reset().compile("LSR A").result();
expect(res.length).to.equal(1);
expect(res[0]).to.equal(0x4A);
});

it("LSR Zero Page", function(){
let res = asm.reset().compile("LSR $44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x46);
expect(res[1]).to.equal(0x44);
});

it("LSR Zero Page, X", function(){
let res = asm.reset().compile("LSR $44,X").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x56);
expect(res[1]).to.equal(0x44);
});

it("LSR Absolute", function(){
let res = asm.reset().compile("LSR $4400").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0x4E);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("LSR Absolute, X", function(){
let res = asm.reset().compile("LSR $4400, X").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0x5E);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

// -------------------------------------------------------------
it("NOP", function(){
asm.reset();
@@ -708,14 +854,65 @@ describe("Testing MOS6502 Assembler...", function(){
});

// -------------------------------------------------------------
it("ORA Immediate");
it("ORA Zero Page");
it("ORA Zero Page, X");
it("ORA Absolute");
it("ORA Absolute, X");
it("ORA Absolute, Y");
it("ORA Indirect, X");
it("ORA Indirect, Y");
it("ORA Immediate", function(){
let res = asm.reset().compile("ORA #$44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x09);
expect(res[1]).to.equal(0x44);
});

it("ORA Zero Page", function(){
let res = asm.reset().compile("ORA $44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x05);
expect(res[1]).to.equal(0x44);
});

it("ORA Zero Page, X", function(){
let res = asm.reset().compile("ORA $44,X").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x15);
expect(res[1]).to.equal(0x44);
});

it("ORA Absolute", function(){
let res = asm.reset().compile("ORA $4400").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0x0D);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("ORA Absolute, X", function(){
let res = asm.reset().compile("ORA $4400,X").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0x1D);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("ORA Absolute, Y", function(){
let res = asm.reset().compile("ORA $4400,Y").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0x19);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("ORA Indirect, X", function(){
let res = asm.reset().compile("ORA ($44,X)").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x01);
expect(res[1]).to.equal(0x44);
});

it("ORA Indirect, Y", function(){
let res = asm.reset().compile("ORA ($44), Y").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x11);
expect(res[1]).to.equal(0x44);
});

// -------------------------------------------------------------
it("DEX", function(){
asm.reset();
@@ -774,17 +971,79 @@ describe("Testing MOS6502 Assembler...", function(){
});

// -------------------------------------------------------------
it("ROL Accumulator");
it("ROL Zero Page");
it("ROL Zero Page, X");
it("ROL Absolute");
it("ROL Absolute, X");
it("ROL Accumulator", function(){
let res = asm.reset().compile("ROL A").result();
expect(res.length).to.equal(1);
expect(res[0]).to.equal(0x2A);
});

it("ROL Zero Page", function(){
let res = asm.reset().compile("ROL $44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x26);
expect(res[1]).to.equal(0x44);
});

it("ROL Zero Page, X", function(){
let res = asm.reset().compile("ROL $44,X").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x36);
expect(res[1]).to.equal(0x44);
});

it("ROL Absolute", function(){
let res = asm.reset().compile("ROL $4400").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0x2E);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("ROL Absolute, X", function(){
let res = asm.reset().compile("ROL $4400,X").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0x3E);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

// -------------------------------------------------------------
it("ROR Accumulator");
it("ROR Zero Page");
it("ROR Zero Page, X");
it("ROR Absolute");
it("ROR Absolute, X");
it("ROR Accumulator", function(){
let res = asm.reset().compile("ROR A").result();
expect(res.length).to.equal(1);
expect(res[0]).to.equal(0x6A);
});

it("ROR Zero Page", function(){
let res = asm.reset().compile("ROR $44").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x66);
expect(res[1]).to.equal(0x44);
});

it("ROR Zero Page, X", function(){
let res = asm.reset().compile("ROR $44,X").result();
expect(res.length).to.equal(2);
expect(res[0]).to.equal(0x76);
expect(res[1]).to.equal(0x44);
});

it("ROR Absolute", function(){
let res = asm.reset().compile("ROR $4400").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0x6E);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

it("ROR Absolute, X", function(){
let res = asm.reset().compile("ROR $4400,X").result();
expect(res.length).to.equal(3);
expect(res[0]).to.equal(0x7E);
expect(res[1]).to.equal(0x00);
expect(res[2]).to.equal(0x44);
});

// -------------------------------------------------------------
it("RTI", function(){
asm.reset();

Loading…
Cancel
Save