| @@ -0,0 +1,60 @@ | |||
| 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); | |||
| }); | |||
| }); | |||