const expect = require('chai').expect; const MOSCIA = require('../src/MOSCIA.js'); describe("MOSCIA Tests...", function(){ var cia = new MOSCIA(); it("Serial IO", function(){ let Input = (i) => { cia.SP = i; cia.CNT = 1; cia.phi2 = 1; }; var outval = 0; let Output = () => { cia.CNT = 1; cia.phi2 = 1; outval = (outval << 1) | cia.SP; } cia.RS = 0x0C; Input(1); expect(cia.DATA).to.be.equal(1); Input(1); expect(cia.DATA).to.be.equal(3); Input(0); expect(cia.DATA).to.be.equal(6); Input(0); Input(1); Input(1); Input(0); Input(1); expect(cia.DATA).to.be.equal(0xCD); cia.RS = 0x0D; expect((cia.DATA & 0x08) >> 3).to.be.equal(1); // Reading from RS = 0x0D should clear the interrupt values. Checking this expect(cia.DATA).to.be.equal(0); cia.RS = 0x0E; cia.DATA = 0x40; // Enable serial output. Output(); expect(outval).to.be.equal(1); Output(); expect(outval).to.be.equal(3); Output(); expect(outval).to.be.equal(6); Output(); Output(); Output(); Output(); Output(); expect(outval).to.be.equal(0xCD); cia.RS = 0x0C; expect(cia.DATA).to.be.equal(0); cia.RS = 0x0D; expect((cia.DATA & 0x08) >> 3).to.be.equal(1); expect(cia.DATA).to.be.equal(0); }); });