| 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); | |||||
| }); | |||||
| }); |