Fantasy 8Bit system (F8), is a fantasy 8bit console and a set of libraries for creating fantasy 8bit consoles.
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

61 lines
1.3KB

  1. const expect = require('chai').expect;
  2. const MOSCIA = require('../src/MOSCIA.js');
  3. describe("MOSCIA Tests...", function(){
  4. var cia = new MOSCIA();
  5. it("Serial IO", function(){
  6. let Input = (i) => {
  7. cia.SP = i;
  8. cia.CNT = 1;
  9. cia.phi2 = 1;
  10. };
  11. var outval = 0;
  12. let Output = () => {
  13. cia.CNT = 1;
  14. cia.phi2 = 1;
  15. outval = (outval << 1) | cia.SP;
  16. }
  17. cia.RS = 0x0C;
  18. Input(1);
  19. expect(cia.DATA).to.be.equal(1);
  20. Input(1);
  21. expect(cia.DATA).to.be.equal(3);
  22. Input(0);
  23. expect(cia.DATA).to.be.equal(6);
  24. Input(0);
  25. Input(1);
  26. Input(1);
  27. Input(0);
  28. Input(1);
  29. expect(cia.DATA).to.be.equal(0xCD);
  30. cia.RS = 0x0D;
  31. expect((cia.DATA & 0x08) >> 3).to.be.equal(1);
  32. // Reading from RS = 0x0D should clear the interrupt values. Checking this
  33. expect(cia.DATA).to.be.equal(0);
  34. cia.RS = 0x0E;
  35. cia.DATA = 0x40; // Enable serial output.
  36. Output();
  37. expect(outval).to.be.equal(1);
  38. Output();
  39. expect(outval).to.be.equal(3);
  40. Output();
  41. expect(outval).to.be.equal(6);
  42. Output();
  43. Output();
  44. Output();
  45. Output();
  46. Output();
  47. expect(outval).to.be.equal(0xCD);
  48. cia.RS = 0x0C;
  49. expect(cia.DATA).to.be.equal(0);
  50. cia.RS = 0x0D;
  51. expect((cia.DATA & 0x08) >> 3).to.be.equal(1);
  52. expect(cia.DATA).to.be.equal(0);
  53. });
  54. });