ac6502 1.10.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/components/CPU.d.ts +4 -0
  2. package/dist/components/CPU.js +87 -30
  3. package/dist/components/CPU.js.map +1 -1
  4. package/dist/components/IO/ACIA.d.ts +13 -21
  5. package/dist/components/IO/ACIA.js +53 -151
  6. package/dist/components/IO/ACIA.js.map +1 -1
  7. package/dist/components/IO/Attachments/KeyboardEncoderAttachment.js +1 -1
  8. package/dist/components/IO/Attachments/KeyboardEncoderAttachment.js.map +1 -1
  9. package/dist/components/IO/Empty.d.ts +1 -3
  10. package/dist/components/IO/Empty.js +1 -5
  11. package/dist/components/IO/Empty.js.map +1 -1
  12. package/dist/components/IO/RAMBank.d.ts +3 -4
  13. package/dist/components/IO/RAMBank.js +4 -13
  14. package/dist/components/IO/RAMBank.js.map +1 -1
  15. package/dist/components/IO/RTC.d.ts +2 -3
  16. package/dist/components/IO/RTC.js +17 -7
  17. package/dist/components/IO/RTC.js.map +1 -1
  18. package/dist/components/IO/Sound.d.ts +1 -3
  19. package/dist/components/IO/Sound.js +13 -23
  20. package/dist/components/IO/Sound.js.map +1 -1
  21. package/dist/components/IO/Storage.d.ts +1 -3
  22. package/dist/components/IO/Storage.js +1 -3
  23. package/dist/components/IO/Storage.js.map +1 -1
  24. package/dist/components/IO/VIA.d.ts +1 -3
  25. package/dist/components/IO/VIA.js +6 -7
  26. package/dist/components/IO/VIA.js.map +1 -1
  27. package/dist/components/IO/Video.d.ts +1 -3
  28. package/dist/components/IO/Video.js +3 -5
  29. package/dist/components/IO/Video.js.map +1 -1
  30. package/dist/components/IO.d.ts +1 -3
  31. package/dist/components/Machine.d.ts +1 -2
  32. package/dist/components/Machine.js +21 -74
  33. package/dist/components/Machine.js.map +1 -1
  34. package/dist/index.js +1 -1
  35. package/dist/tests/IO/ACIA.test.js +57 -108
  36. package/dist/tests/IO/ACIA.test.js.map +1 -1
  37. package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.js +5 -0
  38. package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.js.map +1 -1
  39. package/dist/tests/IO/Empty.test.js +2 -14
  40. package/dist/tests/IO/Empty.test.js.map +1 -1
  41. package/dist/tests/IO/RAMBank.test.js +5 -12
  42. package/dist/tests/IO/RAMBank.test.js.map +1 -1
  43. package/dist/tests/IO/RTC.test.js +7 -16
  44. package/dist/tests/IO/RTC.test.js.map +1 -1
  45. package/dist/tests/IO/Sound.test.js +6 -8
  46. package/dist/tests/IO/Sound.test.js.map +1 -1
  47. package/dist/tests/IO/Storage.test.js +0 -6
  48. package/dist/tests/IO/Storage.test.js.map +1 -1
  49. package/dist/tests/IO/VIA.test.js +6 -10
  50. package/dist/tests/IO/VIA.test.js.map +1 -1
  51. package/dist/tests/IO/Video.test.js +7 -7
  52. package/dist/tests/IO/Video.test.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/components/CPU.ts +94 -31
  55. package/src/components/IO/ACIA.ts +57 -176
  56. package/src/components/IO/Attachments/KeyboardEncoderAttachment.ts +1 -1
  57. package/src/components/IO/Empty.ts +1 -4
  58. package/src/components/IO/RAMBank.ts +4 -15
  59. package/src/components/IO/RTC.ts +18 -7
  60. package/src/components/IO/Sound.ts +14 -27
  61. package/src/components/IO/Storage.ts +2 -5
  62. package/src/components/IO/VIA.ts +6 -8
  63. package/src/components/IO/Video.ts +5 -7
  64. package/src/components/IO.ts +1 -4
  65. package/src/components/Machine.ts +22 -90
  66. package/src/index.ts +1 -1
  67. package/src/tests/IO/ACIA.test.ts +60 -122
  68. package/src/tests/IO/Attachments/KeyboardEncoderAttachment.test.ts +6 -0
  69. package/src/tests/IO/Empty.test.ts +2 -17
  70. package/src/tests/IO/RAMBank.test.ts +5 -14
  71. package/src/tests/IO/RTC.test.ts +7 -20
  72. package/src/tests/IO/Sound.test.ts +6 -8
  73. package/src/tests/IO/Storage.test.ts +0 -7
  74. package/src/tests/IO/VIA.test.ts +6 -12
  75. package/src/tests/IO/Video.test.ts +7 -8
@@ -73,9 +73,9 @@ const setupTextMode = (vdp) => {
73
73
  * frame clears the status register during sprite processing).
74
74
  */
75
75
  const renderOneFrame = (vdp, frequency = 1000000) => {
76
- // At 2MHz: cyclesPerFrame 33333, each tick = 128 cycles → ~261 ticks/frame
77
- const ticksPerFrame = Math.ceil((frequency / 60) / 128);
78
- for (let i = 0; i < ticksPerFrame; i++) {
76
+ // Each tick = 1 cycle. Cycles per frame = frequency / 60.
77
+ const cyclesPerFrame = Math.ceil(frequency / 60);
78
+ for (let i = 0; i < cyclesPerFrame; i++) {
79
79
  vdp.tick(frequency);
80
80
  }
81
81
  };
@@ -324,13 +324,13 @@ describe('Video (TMS9918 VDP)', () => {
324
324
  renderOneFrame(vdp);
325
325
  expect(vdp.getStatus() & 0x80).toBe(0);
326
326
  });
327
- it('should call raiseIRQ when interrupt flag is set', () => {
328
- const irqFn = jest.fn();
329
- vdp.raiseIRQ = irqFn;
327
+ it('should return IRQ status from tick when interrupt flag is set', () => {
330
328
  writeRegister(vdp, 1, 0x60); // Display active + interrupts enabled
331
329
  clearSprites(vdp);
332
330
  renderOneFrame(vdp);
333
- expect(irqFn).toHaveBeenCalled();
331
+ // After frame, tick should return 0x80 indicating IRQ
332
+ const result = vdp.tick(1000000);
333
+ expect(result & 0x80).toBe(0x80);
334
334
  });
335
335
  });
336
336
  // ================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"Video.test.js","sourceRoot":"","sources":["../../../src/tests/IO/Video.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Video.test.js","sourceRoot":"","sources":["../../../src/tests/IO/Video.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ac6502",
3
- "version": "1.10.0",
3
+ "version": "1.11.0",
4
4
  "description": "Emulator for the A.C. Wright 6502 project",
5
5
  "main": "dist/lib.js",
6
6
  "types": "dist/lib.d.ts",
@@ -28,6 +28,8 @@ export class CPU {
28
28
  cyclesRem: number = 0 // Counts how many cycles the current instruction has remaining
29
29
  cycles: number = 0 // Counts the total number of cycles executed
30
30
 
31
+ private irqLine: boolean = false
32
+
31
33
  a: number = 0x00
32
34
  x: number = 0x00
33
35
  y: number = 0x00
@@ -103,6 +105,14 @@ export class CPU {
103
105
  }
104
106
  }
105
107
 
108
+ irqTrigger(): void {
109
+ this.irqLine = true
110
+ }
111
+
112
+ irqClear(): void {
113
+ this.irqLine = false
114
+ }
115
+
106
116
  nmi(): void {
107
117
  // Push the program counter onto the stack
108
118
  this.write(0x0100 + this.sp, (this.pc >> 8) & 0x00FF)
@@ -148,6 +158,11 @@ export class CPU {
148
158
  // addrMode() and opcode() return 1 or 0 if additional clock cycles are required
149
159
  this.cyclesRem += addCycleAddrMode & addCycleOpcode
150
160
  this.cycles += addCycleAddrMode & addCycleOpcode
161
+
162
+ // Level-triggered IRQ: check after instruction decode
163
+ if (this.irqLine) {
164
+ this.irq()
165
+ }
151
166
  }
152
167
 
153
168
  this.cyclesRem--
@@ -405,13 +420,33 @@ export class CPU {
405
420
  private ADC(): number {
406
421
  this.fetch()
407
422
 
408
- this.temp = this.a + this.fetched + this.getFlag(CPU.C)
409
- this.setFlag(CPU.C, (this.temp & 0xFF00) != 0)
410
- this.setFlag(CPU.Z, (this.temp & 0x00FF) == 0)
411
- this.setFlag(CPU.V, ((this.temp ^ this.a) & (this.temp ^ this.fetched) & 0x0080) != 0)
412
- this.setFlag(CPU.N, (this.temp & 0x0080) != 0)
423
+ if (this.getFlag(CPU.D)) {
424
+ // BCD decimal mode (65C02)
425
+ const c = this.getFlag(CPU.C)
426
+ const bin = this.a + this.fetched + c
427
+
428
+ let lo = (this.a & 0x0F) + (this.fetched & 0x0F) + c
429
+ if (lo > 0x09) lo += 0x06
430
+ let hi = (this.a >> 4) + (this.fetched >> 4) + (lo > 0x0F ? 1 : 0)
431
+ if (hi > 0x09) hi += 0x06
432
+
433
+ const result = (hi << 4) | (lo & 0x0F)
434
+
435
+ this.setFlag(CPU.Z, (bin & 0xFF) === 0)
436
+ this.setFlag(CPU.V, ((this.a ^ bin) & (this.fetched ^ bin) & 0x80) !== 0)
437
+ this.setFlag(CPU.N, (bin & 0x80) !== 0)
438
+ this.setFlag(CPU.C, hi > 0x0F)
413
439
 
414
- this.a = this.temp & 0x00FF
440
+ this.a = result & 0xFF
441
+ } else {
442
+ this.temp = this.a + this.fetched + this.getFlag(CPU.C)
443
+ this.setFlag(CPU.C, (this.temp & 0xFF00) != 0)
444
+ this.setFlag(CPU.Z, (this.temp & 0x00FF) == 0)
445
+ this.setFlag(CPU.V, ((this.temp ^ this.a) & (this.temp ^ this.fetched) & 0x0080) != 0)
446
+ this.setFlag(CPU.N, (this.temp & 0x0080) != 0)
447
+
448
+ this.a = this.temp & 0x00FF
449
+ }
415
450
 
416
451
  return 1
417
452
  }
@@ -441,11 +476,11 @@ export class CPU {
441
476
 
442
477
  private BCC(): number {
443
478
  if (this.getFlag(CPU.C) == 0) {
444
- this.cycles++
479
+ this.cyclesRem++
445
480
  this.addrAbs = this.pc + this.addrRel
446
481
 
447
482
  if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
448
- this.cycles++
483
+ this.cyclesRem++
449
484
  }
450
485
 
451
486
  this.pc = this.addrAbs
@@ -455,11 +490,11 @@ export class CPU {
455
490
 
456
491
  private BCS(): number {
457
492
  if (this.getFlag(CPU.C) == 1) {
458
- this.cycles++
493
+ this.cyclesRem++
459
494
  this.addrAbs = this.pc + this.addrRel
460
495
 
461
496
  if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
462
- this.cycles++
497
+ this.cyclesRem++
463
498
  }
464
499
 
465
500
  this.pc = this.addrAbs
@@ -469,10 +504,10 @@ export class CPU {
469
504
 
470
505
  private BEQ(): number {
471
506
  if (this.getFlag(CPU.Z) == 1) {
472
- this.cycles++
507
+ this.cyclesRem++
473
508
  this.addrAbs = this.pc + this.addrRel
474
509
  if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
475
- this.cycles++
510
+ this.cyclesRem++
476
511
  }
477
512
 
478
513
  this.pc = this.addrAbs
@@ -489,13 +524,21 @@ export class CPU {
489
524
  return 0
490
525
  }
491
526
 
527
+ private BIT_IMM(): number {
528
+ this.fetch()
529
+ this.temp = this.a & this.fetched
530
+ this.setFlag(CPU.Z, (this.temp & 0x00FF) == 0x00)
531
+ // N and V are NOT modified for BIT immediate (65C02)
532
+ return 0
533
+ }
534
+
492
535
  private BMI(): number {
493
536
  if (this.getFlag(CPU.N) == 1) {
494
- this.cycles++
537
+ this.cyclesRem++
495
538
  this.addrAbs = this.pc + this.addrRel
496
539
 
497
540
  if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
498
- this.cycles++
541
+ this.cyclesRem++
499
542
  }
500
543
 
501
544
  this.pc = this.addrAbs
@@ -505,11 +548,11 @@ export class CPU {
505
548
 
506
549
  private BNE(): number {
507
550
  if (this.getFlag(CPU.Z) == 0) {
508
- this.cycles++
551
+ this.cyclesRem++
509
552
  this.addrAbs = this.pc + this.addrRel
510
553
 
511
554
  if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
512
- this.cycles++
555
+ this.cyclesRem++
513
556
  }
514
557
 
515
558
  this.pc = this.addrAbs
@@ -519,11 +562,11 @@ export class CPU {
519
562
 
520
563
  private BPL(): number {
521
564
  if (this.getFlag(CPU.N) == 0) {
522
- this.cycles++
565
+ this.cyclesRem++
523
566
  this.addrAbs = this.pc + this.addrRel
524
567
 
525
568
  if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
526
- this.cycles++
569
+ this.cyclesRem++
527
570
  }
528
571
 
529
572
  this.pc = this.addrAbs
@@ -552,11 +595,11 @@ export class CPU {
552
595
 
553
596
  private BVC(): number {
554
597
  if (this.getFlag(CPU.V) == 0) {
555
- this.cycles++
598
+ this.cyclesRem++
556
599
  this.addrAbs = this.pc + this.addrRel
557
600
 
558
601
  if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
559
- this.cycles++
602
+ this.cyclesRem++
560
603
  }
561
604
 
562
605
  this.pc = this.addrAbs
@@ -566,11 +609,11 @@ export class CPU {
566
609
 
567
610
  private BVS(): number {
568
611
  if (this.getFlag(CPU.V) == 1) {
569
- this.cycles++
612
+ this.cyclesRem++
570
613
  this.addrAbs = this.pc + this.addrRel
571
614
 
572
615
  if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
573
- this.cycles++
616
+ this.cyclesRem++
574
617
  }
575
618
 
576
619
  this.pc = this.addrAbs
@@ -851,15 +894,35 @@ export class CPU {
851
894
  private SBC(): number {
852
895
  this.fetch()
853
896
 
854
- const value = this.fetched ^ 0x00FF
855
-
856
- this.temp = this.a + value + this.getFlag(CPU.C)
857
- this.setFlag(CPU.C, (this.temp & 0xFF00) != 0)
858
- this.setFlag(CPU.Z, (this.temp & 0x00FF) == 0)
859
- this.setFlag(CPU.V, ((this.temp ^ this.a) & (this.temp ^ value) & 0x0080) != 0)
860
- this.setFlag(CPU.N, (this.temp & 0x0080) != 0)
897
+ if (this.getFlag(CPU.D)) {
898
+ // BCD decimal mode (65C02)
899
+ const c = this.getFlag(CPU.C)
900
+ const bin = this.a - this.fetched - (1 - c)
901
+
902
+ let lo = (this.a & 0x0F) - (this.fetched & 0x0F) - (1 - c)
903
+ if (lo < 0) lo = ((lo - 0x06) & 0x0F) | ((this.a & 0xF0) - (this.fetched & 0xF0) - 0x10)
904
+ else lo = (lo & 0x0F) | ((this.a & 0xF0) - (this.fetched & 0xF0))
905
+ if (lo < 0) lo -= 0x60
906
+
907
+ const result = lo & 0xFF
861
908
 
862
- this.a = this.temp & 0x00FF
909
+ this.setFlag(CPU.Z, (bin & 0xFF) === 0)
910
+ this.setFlag(CPU.V, ((this.a ^ bin) & (~this.fetched ^ bin) & 0x80) !== 0)
911
+ this.setFlag(CPU.N, (bin & 0x80) !== 0)
912
+ this.setFlag(CPU.C, (bin & 0xFFFF) < 0x100)
913
+
914
+ this.a = result
915
+ } else {
916
+ const value = this.fetched ^ 0x00FF
917
+
918
+ this.temp = this.a + value + this.getFlag(CPU.C)
919
+ this.setFlag(CPU.C, (this.temp & 0xFF00) != 0)
920
+ this.setFlag(CPU.Z, (this.temp & 0x00FF) == 0)
921
+ this.setFlag(CPU.V, ((this.temp ^ this.a) & (this.temp ^ value) & 0x0080) != 0)
922
+ this.setFlag(CPU.N, (this.temp & 0x0080) != 0)
923
+
924
+ this.a = this.temp & 0x00FF
925
+ }
863
926
 
864
927
  return 1
865
928
  }
@@ -1254,7 +1317,7 @@ export class CPU {
1254
1317
  { name: 'STX', cycles: 3, opcode: this.STX.bind(this), addrMode: this.ZP0.bind(this) },
1255
1318
  { name: 'SMB0', cycles: 5, opcode: this.SMB0.bind(this), addrMode: this.ZP0.bind(this) },
1256
1319
  { name: 'DEY', cycles: 2, opcode: this.DEY.bind(this), addrMode: this.IMP.bind(this) },
1257
- { name: 'BIT', cycles: 2, opcode: this.BIT.bind(this), addrMode: this.IMM.bind(this) },
1320
+ { name: 'BIT', cycles: 2, opcode: this.BIT_IMM.bind(this), addrMode: this.IMM.bind(this) },
1258
1321
  { name: 'TXA', cycles: 2, opcode: this.TXA.bind(this), addrMode: this.IMP.bind(this) },
1259
1322
  { name: '???', cycles: 2, opcode: this.XXX.bind(this), addrMode: this.IMP.bind(this) },
1260
1323
  { name: 'STY', cycles: 4, opcode: this.STY.bind(this), addrMode: this.ABS.bind(this) },