|
- const expect = require('chai').expect;
- const MOSCIA = require('../src/MOSCIA.js');
-
-
- describe("MOSCIA Tests...", function(){
- //var cia = new MOSCIA();
-
- it("PD*/DD* Masking", function(){
- let cia = new MOSCIA();
- let pdaVal = 0x3C;
- let pdbVal = 0xC3;
- cia.onRead("PDA", (name, dda) => {
- if (dda < 255)
- cia.setPDA(pdaVal);
- });
- cia.onRead("PDB", (name, ddb) => {
- if (ddb < 255)
- cia.setPDB(pdbVal);
- });
-
- cia.RS = 0x02;
- cia.DATA = 0x00;
- cia.RS = 0x00;
- expect(cia.DATA).to.be.equal(pdaVal);
- cia.RS = 0x03;
- cia.DATA = 0x00;
- cia.RS = 0x01;
- expect(cia.DATA).to.be.equal(pdbVal);
- cia.RS = 0x02;
- cia.DATA = pdbVal;
- cia.RS = 0x00;
- cia.DATA = pdbVal;
- expect(cia.DATA).to.be.equal(0xFF);
- cia.RS = 0x03;
- cia.DATA = pdaVal;
- cia.RS = 0x01;
- cia.DATA = pdaVal;
- expect(cia.DATA).to.be.equal(0xFF);
- });
-
- it("Serial IO", function(){
- let cia = new MOSCIA();
- 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);
- });
- });
|