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.
- package/dist/components/CPU.d.ts +4 -0
- package/dist/components/CPU.js +87 -30
- package/dist/components/CPU.js.map +1 -1
- package/dist/components/IO/ACIA.d.ts +13 -21
- package/dist/components/IO/ACIA.js +53 -151
- package/dist/components/IO/ACIA.js.map +1 -1
- package/dist/components/IO/Attachments/KeyboardEncoderAttachment.js +1 -1
- package/dist/components/IO/Attachments/KeyboardEncoderAttachment.js.map +1 -1
- package/dist/components/IO/Empty.d.ts +1 -3
- package/dist/components/IO/Empty.js +1 -5
- package/dist/components/IO/Empty.js.map +1 -1
- package/dist/components/IO/RAMBank.d.ts +3 -4
- package/dist/components/IO/RAMBank.js +4 -13
- package/dist/components/IO/RAMBank.js.map +1 -1
- package/dist/components/IO/RTC.d.ts +2 -3
- package/dist/components/IO/RTC.js +17 -7
- package/dist/components/IO/RTC.js.map +1 -1
- package/dist/components/IO/Sound.d.ts +1 -3
- package/dist/components/IO/Sound.js +13 -23
- package/dist/components/IO/Sound.js.map +1 -1
- package/dist/components/IO/Storage.d.ts +1 -3
- package/dist/components/IO/Storage.js +1 -3
- package/dist/components/IO/Storage.js.map +1 -1
- package/dist/components/IO/VIA.d.ts +1 -3
- package/dist/components/IO/VIA.js +6 -7
- package/dist/components/IO/VIA.js.map +1 -1
- package/dist/components/IO/Video.d.ts +1 -3
- package/dist/components/IO/Video.js +3 -5
- package/dist/components/IO/Video.js.map +1 -1
- package/dist/components/IO.d.ts +1 -3
- package/dist/components/Machine.d.ts +1 -2
- package/dist/components/Machine.js +21 -74
- package/dist/components/Machine.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/tests/IO/ACIA.test.js +57 -108
- package/dist/tests/IO/ACIA.test.js.map +1 -1
- package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.js +5 -0
- package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.js.map +1 -1
- package/dist/tests/IO/Empty.test.js +2 -14
- package/dist/tests/IO/Empty.test.js.map +1 -1
- package/dist/tests/IO/RAMBank.test.js +5 -12
- package/dist/tests/IO/RAMBank.test.js.map +1 -1
- package/dist/tests/IO/RTC.test.js +7 -16
- package/dist/tests/IO/RTC.test.js.map +1 -1
- package/dist/tests/IO/Sound.test.js +6 -8
- package/dist/tests/IO/Sound.test.js.map +1 -1
- package/dist/tests/IO/Storage.test.js +0 -6
- package/dist/tests/IO/Storage.test.js.map +1 -1
- package/dist/tests/IO/VIA.test.js +6 -10
- package/dist/tests/IO/VIA.test.js.map +1 -1
- package/dist/tests/IO/Video.test.js +7 -7
- package/dist/tests/IO/Video.test.js.map +1 -1
- package/package.json +1 -1
- package/src/components/CPU.ts +94 -31
- package/src/components/IO/ACIA.ts +57 -176
- package/src/components/IO/Attachments/KeyboardEncoderAttachment.ts +1 -1
- package/src/components/IO/Empty.ts +1 -4
- package/src/components/IO/RAMBank.ts +4 -15
- package/src/components/IO/RTC.ts +18 -7
- package/src/components/IO/Sound.ts +14 -27
- package/src/components/IO/Storage.ts +2 -5
- package/src/components/IO/VIA.ts +6 -8
- package/src/components/IO/Video.ts +5 -7
- package/src/components/IO.ts +1 -4
- package/src/components/Machine.ts +22 -90
- package/src/index.ts +1 -1
- package/src/tests/IO/ACIA.test.ts +60 -122
- package/src/tests/IO/Attachments/KeyboardEncoderAttachment.test.ts +6 -0
- package/src/tests/IO/Empty.test.ts +2 -17
- package/src/tests/IO/RAMBank.test.ts +5 -14
- package/src/tests/IO/RTC.test.ts +7 -20
- package/src/tests/IO/Sound.test.ts +6 -8
- package/src/tests/IO/Storage.test.ts +0 -7
- package/src/tests/IO/VIA.test.ts +6 -12
- 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
|
-
//
|
|
77
|
-
const
|
|
78
|
-
for (let i = 0; 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
|
|
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
|
-
|
|
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
package/src/components/CPU.ts
CHANGED
|
@@ -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
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
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
|
-
|
|
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.
|
|
479
|
+
this.cyclesRem++
|
|
445
480
|
this.addrAbs = this.pc + this.addrRel
|
|
446
481
|
|
|
447
482
|
if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
|
|
448
|
-
this.
|
|
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.
|
|
493
|
+
this.cyclesRem++
|
|
459
494
|
this.addrAbs = this.pc + this.addrRel
|
|
460
495
|
|
|
461
496
|
if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
|
|
462
|
-
this.
|
|
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.
|
|
507
|
+
this.cyclesRem++
|
|
473
508
|
this.addrAbs = this.pc + this.addrRel
|
|
474
509
|
if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
|
|
475
|
-
this.
|
|
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.
|
|
537
|
+
this.cyclesRem++
|
|
495
538
|
this.addrAbs = this.pc + this.addrRel
|
|
496
539
|
|
|
497
540
|
if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
|
|
498
|
-
this.
|
|
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.
|
|
551
|
+
this.cyclesRem++
|
|
509
552
|
this.addrAbs = this.pc + this.addrRel
|
|
510
553
|
|
|
511
554
|
if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
|
|
512
|
-
this.
|
|
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.
|
|
565
|
+
this.cyclesRem++
|
|
523
566
|
this.addrAbs = this.pc + this.addrRel
|
|
524
567
|
|
|
525
568
|
if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
|
|
526
|
-
this.
|
|
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.
|
|
598
|
+
this.cyclesRem++
|
|
556
599
|
this.addrAbs = this.pc + this.addrRel
|
|
557
600
|
|
|
558
601
|
if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
|
|
559
|
-
this.
|
|
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.
|
|
612
|
+
this.cyclesRem++
|
|
570
613
|
this.addrAbs = this.pc + this.addrRel
|
|
571
614
|
|
|
572
615
|
if ((this.addrAbs & 0xFF00) != (this.pc & 0xFF00)) {
|
|
573
|
-
this.
|
|
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
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
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
|
-
|
|
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.
|
|
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) },
|