ac6502 1.2.0 → 1.4.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 (182) hide show
  1. package/README.md +12 -12
  2. package/dist/components/CPU.d.ts +162 -0
  3. package/dist/components/Cart.d.ts +9 -0
  4. package/dist/components/IO/ACIA.d.ts +76 -0
  5. package/dist/components/IO/ACIA.js +282 -0
  6. package/dist/components/IO/ACIA.js.map +1 -0
  7. package/dist/components/IO/Attachments/Attachment.d.ts +112 -0
  8. package/dist/components/IO/Attachments/Attachment.js +71 -0
  9. package/dist/components/IO/Attachments/Attachment.js.map +1 -0
  10. package/dist/components/IO/Attachments/JoystickAttachment.d.ts +53 -0
  11. package/dist/components/IO/Attachments/JoystickAttachment.js +90 -0
  12. package/dist/components/IO/Attachments/JoystickAttachment.js.map +1 -0
  13. package/dist/components/IO/Attachments/KeyboardEncoderAttachment.d.ts +63 -0
  14. package/dist/components/IO/Attachments/KeyboardEncoderAttachment.js +489 -0
  15. package/dist/components/IO/Attachments/KeyboardEncoderAttachment.js.map +1 -0
  16. package/dist/components/IO/Attachments/KeyboardMatrixAttachment.d.ts +44 -0
  17. package/dist/components/IO/Attachments/KeyboardMatrixAttachment.js +274 -0
  18. package/dist/components/IO/Attachments/KeyboardMatrixAttachment.js.map +1 -0
  19. package/dist/components/IO/Attachments/KeypadAttachment.d.ts +47 -0
  20. package/dist/components/IO/Attachments/KeypadAttachment.js +141 -0
  21. package/dist/components/IO/Attachments/KeypadAttachment.js.map +1 -0
  22. package/dist/components/IO/Attachments/LCDAttachment.d.ts +110 -0
  23. package/dist/components/IO/Attachments/LCDAttachment.js +716 -0
  24. package/dist/components/IO/Attachments/LCDAttachment.js.map +1 -0
  25. package/dist/components/IO/Attachments/SNESAttachment.d.ts +85 -0
  26. package/dist/components/IO/Attachments/SNESAttachment.js +184 -0
  27. package/dist/components/IO/Attachments/SNESAttachment.js.map +1 -0
  28. package/dist/components/IO/DevOutputBoard.d.ts +19 -0
  29. package/dist/components/IO/DevOutputBoard.js +33 -0
  30. package/dist/components/IO/DevOutputBoard.js.map +1 -0
  31. package/dist/components/IO/Empty.d.ts +9 -0
  32. package/dist/components/IO/Empty.js +5 -7
  33. package/dist/components/IO/Empty.js.map +1 -1
  34. package/dist/components/IO/EmptyCard.d.ts +9 -0
  35. package/dist/components/IO/GPIOAttachments/GPIOAttachment.d.ts +112 -0
  36. package/dist/components/IO/GPIOAttachments/GPIOJoystickAttachment.d.ts +53 -0
  37. package/dist/components/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.d.ts +63 -0
  38. package/dist/components/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.d.ts +44 -0
  39. package/dist/components/IO/GPIOAttachments/GPIOKeypadAttachment.d.ts +47 -0
  40. package/dist/components/IO/GPIOAttachments/GPIOLCDAttachment.d.ts +110 -0
  41. package/dist/components/IO/GPIOCard.d.ts +105 -0
  42. package/dist/components/IO/GPIOCard.js.map +1 -1
  43. package/dist/components/IO/RAMBank.d.ts +37 -0
  44. package/dist/components/IO/RAMBank.js +63 -0
  45. package/dist/components/IO/RAMBank.js.map +1 -0
  46. package/dist/components/IO/RAMCard.d.ts +37 -0
  47. package/dist/components/IO/RTC.d.ts +107 -0
  48. package/dist/components/IO/RTC.js +483 -0
  49. package/dist/components/IO/RTC.js.map +1 -0
  50. package/dist/components/IO/RTCCard.d.ts +107 -0
  51. package/dist/components/IO/SerialCard.d.ts +76 -0
  52. package/dist/components/IO/Sound.d.ts +120 -0
  53. package/dist/components/IO/Sound.js +622 -0
  54. package/dist/components/IO/Sound.js.map +1 -0
  55. package/dist/components/IO/SoundCard.d.ts +120 -0
  56. package/dist/components/IO/Storage.d.ts +74 -0
  57. package/dist/components/IO/Storage.js +409 -0
  58. package/dist/components/IO/Storage.js.map +1 -0
  59. package/dist/components/IO/StorageCard.d.ts +74 -0
  60. package/dist/components/IO/Terminal.d.ts +19 -0
  61. package/dist/components/IO/Terminal.js +33 -0
  62. package/dist/components/IO/Terminal.js.map +1 -0
  63. package/dist/components/IO/VIA.d.ts +105 -0
  64. package/dist/components/IO/VIA.js +597 -0
  65. package/dist/components/IO/VIA.js.map +1 -0
  66. package/dist/components/IO/Video.d.ts +141 -0
  67. package/dist/components/IO/Video.js +630 -0
  68. package/dist/components/IO/Video.js.map +1 -0
  69. package/dist/components/IO/VideoCard.d.ts +141 -0
  70. package/dist/components/IO.d.ts +8 -0
  71. package/dist/components/Machine.d.ts +62 -0
  72. package/dist/components/Machine.js +260 -153
  73. package/dist/components/Machine.js.map +1 -1
  74. package/dist/components/RAM.d.ts +9 -0
  75. package/dist/components/ROM.d.ts +9 -0
  76. package/dist/index.d.ts +2 -0
  77. package/dist/index.js +61 -28
  78. package/dist/index.js.map +1 -1
  79. package/dist/lib.d.ts +22 -0
  80. package/dist/lib.js +47 -0
  81. package/dist/lib.js.map +1 -0
  82. package/dist/tests/CPU.test.d.ts +1 -0
  83. package/dist/tests/Cart.test.d.ts +1 -0
  84. package/dist/tests/IO/ACIA.test.d.ts +1 -0
  85. package/dist/tests/IO/ACIA.test.js +423 -0
  86. package/dist/tests/IO/ACIA.test.js.map +1 -0
  87. package/dist/tests/IO/Attachments/Attachment.test.d.ts +1 -0
  88. package/dist/tests/IO/Attachments/Attachment.test.js +339 -0
  89. package/dist/tests/IO/Attachments/Attachment.test.js.map +1 -0
  90. package/dist/tests/IO/Attachments/JoystickAttachment.test.d.ts +1 -0
  91. package/dist/tests/IO/Attachments/JoystickAttachment.test.js +126 -0
  92. package/dist/tests/IO/Attachments/JoystickAttachment.test.js.map +1 -0
  93. package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.d.ts +1 -0
  94. package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.js +779 -0
  95. package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.js.map +1 -0
  96. package/dist/tests/IO/Attachments/KeyboardMatrixAttachment.test.d.ts +1 -0
  97. package/dist/tests/IO/Attachments/KeyboardMatrixAttachment.test.js +355 -0
  98. package/dist/tests/IO/Attachments/KeyboardMatrixAttachment.test.js.map +1 -0
  99. package/dist/tests/IO/Attachments/KeypadAttachment.test.d.ts +1 -0
  100. package/dist/tests/IO/Attachments/KeypadAttachment.test.js +323 -0
  101. package/dist/tests/IO/Attachments/KeypadAttachment.test.js.map +1 -0
  102. package/dist/tests/IO/Attachments/LCDAttachment.test.d.ts +1 -0
  103. package/dist/tests/IO/Attachments/LCDAttachment.test.js +627 -0
  104. package/dist/tests/IO/Attachments/LCDAttachment.test.js.map +1 -0
  105. package/dist/tests/IO/Attachments/SNESAttachment.test.d.ts +1 -0
  106. package/dist/tests/IO/Attachments/SNESAttachment.test.js +331 -0
  107. package/dist/tests/IO/Attachments/SNESAttachment.test.js.map +1 -0
  108. package/dist/tests/IO/Empty.test.d.ts +1 -0
  109. package/dist/tests/IO/Empty.test.js +121 -0
  110. package/dist/tests/IO/Empty.test.js.map +1 -0
  111. package/dist/tests/IO/GPIOAttachments/GPIOAttachment.test.d.ts +1 -0
  112. package/dist/tests/IO/GPIOAttachments/GPIOJoystickAttachment.test.d.ts +1 -0
  113. package/dist/tests/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.test.d.ts +1 -0
  114. package/dist/tests/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.test.d.ts +1 -0
  115. package/dist/tests/IO/GPIOAttachments/GPIOKeypadAttachment.test.d.ts +1 -0
  116. package/dist/tests/IO/GPIOAttachments/GPIOLCDAttachment.test.d.ts +1 -0
  117. package/dist/tests/IO/GPIOCard.test.d.ts +1 -0
  118. package/dist/tests/IO/GPIOCard.test.js.map +1 -1
  119. package/dist/tests/IO/RAMBank.test.d.ts +1 -0
  120. package/dist/tests/IO/RAMBank.test.js +229 -0
  121. package/dist/tests/IO/RAMBank.test.js.map +1 -0
  122. package/dist/tests/IO/RAMCard.test.d.ts +1 -0
  123. package/dist/tests/IO/RTC.test.d.ts +1 -0
  124. package/dist/tests/IO/RTC.test.js +177 -0
  125. package/dist/tests/IO/RTC.test.js.map +1 -0
  126. package/dist/tests/IO/RTCCard.test.d.ts +1 -0
  127. package/dist/tests/IO/SerialCard.test.d.ts +1 -0
  128. package/dist/tests/IO/Sound.test.d.ts +1 -0
  129. package/dist/tests/IO/Sound.test.js +528 -0
  130. package/dist/tests/IO/Sound.test.js.map +1 -0
  131. package/dist/tests/IO/SoundCard.test.d.ts +1 -0
  132. package/dist/tests/IO/Storage.test.d.ts +1 -0
  133. package/dist/tests/IO/Storage.test.js +656 -0
  134. package/dist/tests/IO/Storage.test.js.map +1 -0
  135. package/dist/tests/IO/StorageCard.test.d.ts +1 -0
  136. package/dist/tests/IO/VIA.test.d.ts +1 -0
  137. package/dist/tests/IO/VIA.test.js +503 -0
  138. package/dist/tests/IO/VIA.test.js.map +1 -0
  139. package/dist/tests/IO/Video.test.d.ts +1 -0
  140. package/dist/tests/IO/Video.test.js +549 -0
  141. package/dist/tests/IO/Video.test.js.map +1 -0
  142. package/dist/tests/IO/VideoCard.test.d.ts +1 -0
  143. package/dist/tests/Machine.test.d.ts +1 -0
  144. package/dist/tests/Machine.test.js +27 -42
  145. package/dist/tests/Machine.test.js.map +1 -1
  146. package/dist/tests/RAM.test.d.ts +1 -0
  147. package/dist/tests/ROM.test.d.ts +1 -0
  148. package/package.json +5 -3
  149. package/src/components/IO/{SerialCard.ts → ACIA.ts} +2 -2
  150. package/src/components/IO/{GPIOAttachments/GPIOAttachment.ts → Attachments/Attachment.ts} +2 -2
  151. package/src/components/IO/{GPIOAttachments/GPIOJoystickAttachment.ts → Attachments/JoystickAttachment.ts} +3 -3
  152. package/src/components/IO/{GPIOAttachments/GPIOKeyboardEncoderAttachment.ts → Attachments/KeyboardEncoderAttachment.ts} +3 -3
  153. package/src/components/IO/{GPIOAttachments/GPIOKeyboardMatrixAttachment.ts → Attachments/KeyboardMatrixAttachment.ts} +5 -5
  154. package/src/components/IO/{GPIOAttachments/GPIOKeypadAttachment.ts → Attachments/KeypadAttachment.ts} +3 -3
  155. package/src/components/IO/{GPIOAttachments/GPIOLCDAttachment.ts → Attachments/LCDAttachment.ts} +7 -7
  156. package/src/components/IO/{EmptyCard.ts → Empty.ts} +1 -1
  157. package/src/components/IO/{RAMCard.ts → RAMBank.ts} +8 -8
  158. package/src/components/IO/{RTCCard.ts → RTC.ts} +1 -1
  159. package/src/components/IO/{SoundCard.ts → Sound.ts} +2 -2
  160. package/src/components/IO/{StorageCard.ts → Storage.ts} +70 -73
  161. package/src/components/IO/Terminal.ts +34 -0
  162. package/src/components/IO/{GPIOCard.ts → VIA.ts} +64 -64
  163. package/src/components/IO/{VideoCard.ts → Video.ts} +1 -1
  164. package/src/components/Machine.ts +286 -160
  165. package/src/index.ts +65 -35
  166. package/src/lib.ts +27 -0
  167. package/src/tests/IO/{SerialCard.test.ts → ACIA.test.ts} +5 -5
  168. package/src/tests/IO/{GPIOAttachments/GPIOAttachment.test.ts → Attachments/Attachment.test.ts} +12 -12
  169. package/src/tests/IO/{GPIOAttachments/GPIOJoystickAttachment.test.ts → Attachments/JoystickAttachment.test.ts} +23 -23
  170. package/src/tests/IO/{GPIOAttachments/GPIOKeyboardEncoderAttachment.test.ts → Attachments/KeyboardEncoderAttachment.test.ts} +4 -4
  171. package/src/tests/IO/{GPIOAttachments/GPIOKeyboardMatrixAttachment.test.ts → Attachments/KeyboardMatrixAttachment.test.ts} +5 -5
  172. package/src/tests/IO/{GPIOAttachments/GPIOKeypadAttachment.test.ts → Attachments/KeypadAttachment.test.ts} +38 -38
  173. package/src/tests/IO/{GPIOAttachments/GPIOLCDAttachment.test.ts → Attachments/LCDAttachment.test.ts} +12 -12
  174. package/src/tests/IO/Empty.test.ts +143 -0
  175. package/src/tests/IO/{RAMCard.test.ts → RAMBank.test.ts} +33 -33
  176. package/src/tests/IO/{RTCCard.test.ts → RTC.test.ts} +6 -6
  177. package/src/tests/IO/{SoundCard.test.ts → Sound.test.ts} +6 -6
  178. package/src/tests/IO/{StorageCard.test.ts → Storage.test.ts} +34 -25
  179. package/src/tests/IO/{GPIOCard.test.ts → VIA.test.ts} +7 -7
  180. package/src/tests/IO/{VideoCard.test.ts → Video.test.ts} +13 -13
  181. package/src/tests/Machine.test.ts +31 -38
  182. package/tsconfig.json +1 -0
@@ -1,173 +1,273 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.Machine = void 0;
13
4
  const CPU_1 = require("./CPU");
14
5
  const RAM_1 = require("./RAM");
15
6
  const ROM_1 = require("./ROM");
16
7
  const Cart_1 = require("./Cart");
17
- const GPIOCard_1 = require("./IO/GPIOCard");
18
- const RAMCard_1 = require("./IO/RAMCard");
19
- const RTCCard_1 = require("./IO/RTCCard");
20
- const SerialCard_1 = require("./IO/SerialCard");
21
- const SoundCard_1 = require("./IO/SoundCard");
22
- const StorageCard_1 = require("./IO/StorageCard");
23
- const VideoCard_1 = require("./IO/VideoCard");
24
- const GPIOKeyboardMatrixAttachment_1 = require("./IO/GPIOAttachments/GPIOKeyboardMatrixAttachment");
25
- const GPIOKeyboardEncoderAttachment_1 = require("./IO/GPIOAttachments/GPIOKeyboardEncoderAttachment");
26
- const GPIOJoystickAttachment_1 = require("./IO/GPIOAttachments/GPIOJoystickAttachment");
27
- const GPIOLCDAttachment_1 = require("./IO/GPIOAttachments/GPIOLCDAttachment");
28
- const GPIOKeypadAttachment_1 = require("./IO/GPIOAttachments/GPIOKeypadAttachment");
29
- const EmptyCard_1 = require("./IO/EmptyCard");
30
- const promises_1 = require("fs/promises");
8
+ const VIA_1 = require("./IO/VIA");
9
+ const RAMBank_1 = require("./IO/RAMBank");
10
+ const RTC_1 = require("./IO/RTC");
11
+ const ACIA_1 = require("./IO/ACIA");
12
+ const Sound_1 = require("./IO/Sound");
13
+ const Storage_1 = require("./IO/Storage");
14
+ const Video_1 = require("./IO/Video");
15
+ const KeyboardMatrixAttachment_1 = require("./IO/Attachments/KeyboardMatrixAttachment");
16
+ const KeyboardEncoderAttachment_1 = require("./IO/Attachments/KeyboardEncoderAttachment");
17
+ const JoystickAttachment_1 = require("./IO/Attachments/JoystickAttachment");
18
+ const LCDAttachment_1 = require("./IO/Attachments/LCDAttachment");
19
+ const KeypadAttachment_1 = require("./IO/Attachments/KeypadAttachment");
20
+ const Empty_1 = require("./IO/Empty");
21
+ const Terminal_1 = require("./IO/Terminal");
31
22
  class Machine {
32
23
  //
33
24
  // Initialization
34
25
  //
35
- constructor(kim = false) {
26
+ constructor(target) {
36
27
  this.ioCycleAccumulator = 0;
37
28
  this.ioTickInterval = 128; // adjust (64/128/256)
38
- this.isAlive = false;
39
29
  this.isRunning = false;
40
30
  this.frequency = 2000000; // 2 MHz
41
31
  this.scale = 2;
42
32
  this.frames = 0;
43
- this.frameDelay = 0;
44
- this.frameDelayCount = 0;
45
33
  this.startTime = Date.now();
46
34
  this.previousTime = performance.now();
47
35
  //
48
36
  // Methods
49
37
  //
50
- this.loadROM = (path) => __awaiter(this, void 0, void 0, function* () {
51
- try {
52
- this.rom.load(Array.from(new Uint8Array(yield (0, promises_1.readFile)(path))));
38
+ this.loadROM = (data) => {
39
+ if (data instanceof ArrayBuffer) {
40
+ this.rom.load(Array.from(new Uint8Array(data)));
53
41
  }
54
- catch (error) {
55
- console.error('Error reading file:', error);
42
+ else if (data instanceof Uint8Array) {
43
+ this.rom.load(Array.from(data));
56
44
  }
57
- });
58
- this.loadCart = (path) => __awaiter(this, void 0, void 0, function* () {
59
- try {
60
- const data = Array.from(new Uint8Array(yield (0, promises_1.readFile)(path)));
61
- const cart = new Cart_1.Cart();
62
- cart.load(data);
63
- this.cart = cart;
45
+ else {
46
+ this.rom.load(data);
64
47
  }
65
- catch (error) {
66
- console.error('Error reading file:', error);
48
+ };
49
+ this.loadCart = (data) => {
50
+ let dataArray;
51
+ if (data instanceof ArrayBuffer) {
52
+ dataArray = Array.from(new Uint8Array(data));
53
+ }
54
+ else if (data instanceof Uint8Array) {
55
+ dataArray = Array.from(data);
56
+ }
57
+ else {
58
+ dataArray = data;
67
59
  }
68
- });
69
- this.kim = kim;
60
+ const cart = new Cart_1.Cart();
61
+ cart.load(dataArray);
62
+ this.cart = cart;
63
+ };
64
+ this.target = target;
70
65
  this.cpu = new CPU_1.CPU(this.read.bind(this), this.write.bind(this));
71
66
  this.ram = new RAM_1.RAM();
72
67
  this.rom = new ROM_1.ROM();
73
- this.io5 = new SerialCard_1.SerialCard();
74
- // Connect SerialCard IRQ/NMI to CPU
75
- this.io5.raiseIRQ = () => this.cpu.irq();
76
- this.io5.raiseNMI = () => this.cpu.nmi();
77
- // Connect SerialCard transmit callback
78
- this.io5.transmit = (data) => {
79
- if (this.transmit) {
80
- this.transmit(data);
81
- }
82
- };
83
- // Always create standard GPIO attachments (for type stability)
84
- this.keyboardMatrixAttachment = new GPIOKeyboardMatrixAttachment_1.GPIOKeyboardMatrixAttachment(10);
85
- this.keyboardEncoderAttachment = new GPIOKeyboardEncoderAttachment_1.GPIOKeyboardEncoderAttachment(20);
86
- this.joystickAttachmentA = new GPIOJoystickAttachment_1.GPIOJoystickAttachment(false, 100);
87
- this.joystickAttachmentB = new GPIOJoystickAttachment_1.GPIOJoystickAttachment(false, 100);
88
- if (kim) {
89
- this.io1 = new EmptyCard_1.EmptyCard();
90
- this.io2 = new EmptyCard_1.EmptyCard();
91
- this.io3 = new EmptyCard_1.EmptyCard();
92
- this.io4 = new EmptyCard_1.EmptyCard();
93
- this.io6 = new EmptyCard_1.EmptyCard();
94
- this.io7 = new EmptyCard_1.EmptyCard();
95
- const gpioCard = new GPIOCard_1.GPIOCard();
96
- this.io8 = gpioCard;
97
- // Connect GPIOCard IRQ/NMI to CPU
98
- gpioCard.raiseIRQ = () => this.cpu.irq();
99
- gpioCard.raiseNMI = () => this.cpu.nmi();
68
+ this.io1 = new Empty_1.Empty();
69
+ this.io2 = new Empty_1.Empty();
70
+ this.io3 = new Empty_1.Empty();
71
+ this.io4 = new Empty_1.Empty();
72
+ this.io5 = new Empty_1.Empty();
73
+ this.io6 = new Empty_1.Empty();
74
+ this.io7 = new Empty_1.Empty();
75
+ this.io8 = new Empty_1.Empty();
76
+ this.configureTarget(target);
77
+ this.startTime = Date.now();
78
+ this.cpu.reset();
79
+ }
80
+ configureTarget(target) {
81
+ if (target === 'kim') {
82
+ const acia = new ACIA_1.ACIA();
83
+ this.io5 = acia;
84
+ // Connect ACIA IRQ/NMI to CPU
85
+ acia.raiseIRQ = () => this.cpu.irq();
86
+ acia.raiseNMI = () => this.cpu.nmi();
87
+ // Connect ACIA transmit callback
88
+ acia.transmit = (data) => {
89
+ if (this.transmit) {
90
+ this.transmit(data);
91
+ }
92
+ };
93
+ this.io1 = new Empty_1.Empty();
94
+ this.io2 = new Empty_1.Empty();
95
+ this.io3 = new Empty_1.Empty();
96
+ this.io4 = new Empty_1.Empty();
97
+ this.io6 = new Empty_1.Empty();
98
+ this.io7 = new Empty_1.Empty();
99
+ const via = new VIA_1.VIA();
100
+ this.io8 = via;
101
+ // Connect VIA IRQ/NMI to CPU
102
+ via.raiseIRQ = () => this.cpu.irq();
103
+ via.raiseNMI = () => this.cpu.nmi();
100
104
  // Create KIM GPIO Attachments
101
- this.lcdAttachment = new GPIOLCDAttachment_1.GPIOLCDAttachment(16, 2, 10);
102
- this.keypadAttachment = new GPIOKeypadAttachment_1.GPIOKeypadAttachment(true, 20);
105
+ this.lcdAttachment = new LCDAttachment_1.LCDAttachment(16, 2, 10);
106
+ this.keypadAttachment = new KeypadAttachment_1.KeypadAttachment(true, 20);
103
107
  // Attach LCD to Port A (control: RS/RW/E on bits 5-7) and Port B (data bus)
104
- gpioCard.attachToPortA(this.lcdAttachment);
105
- gpioCard.attachToPortB(this.lcdAttachment);
108
+ via.attachToPortA(this.lcdAttachment);
109
+ via.attachToPortB(this.lcdAttachment);
106
110
  // Attach keypad to Port A (bits 0-4)
107
- gpioCard.attachToPortA(this.keypadAttachment);
111
+ via.attachToPortA(this.keypadAttachment);
108
112
  }
109
- else {
110
- const rtcCard = new RTCCard_1.RTCCard();
111
- const storageCard = new StorageCard_1.StorageCard();
112
- const gpioCard = new GPIOCard_1.GPIOCard();
113
- const soundCard = new SoundCard_1.SoundCard();
114
- const videoCard = new VideoCard_1.VideoCard();
115
- this.io1 = new RAMCard_1.RAMCard();
116
- this.io2 = new RAMCard_1.RAMCard();
117
- this.io3 = rtcCard;
118
- this.io4 = storageCard;
119
- this.io6 = gpioCard;
120
- this.io7 = soundCard;
121
- this.io8 = videoCard;
122
- // Connect RTCCard IRQ/NMI to CPU
123
- rtcCard.raiseIRQ = () => this.cpu.irq();
124
- rtcCard.raiseNMI = () => this.cpu.nmi();
125
- // Connect VideoCard IRQ/NMI to CPU
126
- videoCard.raiseIRQ = () => this.cpu.irq();
127
- videoCard.raiseNMI = () => this.cpu.nmi();
128
- // Connect SoundCard pushSamples callback
129
- soundCard.pushSamples = (samples) => {
130
- if (this.pushAudioSamples) {
131
- this.pushAudioSamples(samples);
113
+ else if (target === 'dev') {
114
+ const acia = new ACIA_1.ACIA();
115
+ this.io5 = acia;
116
+ // Connect ACIA IRQ/NMI to CPU
117
+ acia.raiseIRQ = () => this.cpu.irq();
118
+ acia.raiseNMI = () => this.cpu.nmi();
119
+ // Connect ACIA transmit callback
120
+ acia.transmit = (data) => {
121
+ if (this.transmit) {
122
+ this.transmit(data);
132
123
  }
133
124
  };
125
+ const rtc = new RTC_1.RTC();
126
+ const storage = new Storage_1.Storage();
127
+ const via = new VIA_1.VIA();
128
+ this.io1 = new RAMBank_1.RAMBank();
129
+ this.io2 = new RAMBank_1.RAMBank();
130
+ this.io3 = rtc;
131
+ this.io4 = storage;
132
+ this.io6 = via;
133
+ this.io7 = new Empty_1.Empty();
134
+ this.io8 = new Terminal_1.Terminal();
135
+ // Connect RTC IRQ/NMI to CPU
136
+ rtc.raiseIRQ = () => this.cpu.irq();
137
+ rtc.raiseNMI = () => this.cpu.nmi();
138
+ // Create standard GPIO attachments
139
+ this.keyboardMatrixAttachment = new KeyboardMatrixAttachment_1.KeyboardMatrixAttachment(10);
140
+ this.keyboardEncoderAttachment = new KeyboardEncoderAttachment_1.KeyboardEncoderAttachment(20);
141
+ this.joystickAttachmentA = new JoystickAttachment_1.JoystickAttachment(false, 100);
142
+ this.joystickAttachmentB = new JoystickAttachment_1.JoystickAttachment(false, 100);
134
143
  // Attach peripherals to GPIO Card
135
- gpioCard.attachToPortA(this.keyboardMatrixAttachment);
136
- gpioCard.attachToPortB(this.keyboardMatrixAttachment);
137
- gpioCard.attachToPortA(this.keyboardEncoderAttachment);
138
- gpioCard.attachToPortB(this.keyboardEncoderAttachment);
139
- gpioCard.attachToPortA(this.joystickAttachmentA);
140
- gpioCard.attachToPortB(this.joystickAttachmentB);
144
+ via.attachToPortA(this.keyboardMatrixAttachment);
145
+ via.attachToPortB(this.keyboardMatrixAttachment);
146
+ via.attachToPortA(this.keyboardEncoderAttachment);
147
+ via.attachToPortB(this.keyboardEncoderAttachment);
148
+ via.attachToPortA(this.joystickAttachmentA);
149
+ via.attachToPortB(this.joystickAttachmentB);
150
+ }
151
+ else if (target === 'vcs') {
152
+ this.io5 = new Empty_1.Empty();
153
+ const via = new VIA_1.VIA();
154
+ const sound = new Sound_1.Sound();
155
+ const video = new Video_1.Video();
156
+ this.io1 = new Empty_1.Empty();
157
+ this.io2 = new Empty_1.Empty();
158
+ this.io3 = new Empty_1.Empty();
159
+ this.io4 = new Empty_1.Empty();
160
+ this.io6 = via;
161
+ this.io7 = sound;
162
+ this.io8 = video;
163
+ // Connect Video IRQ/NMI to CPU
164
+ video.raiseIRQ = () => this.cpu.irq();
165
+ video.raiseNMI = () => this.cpu.nmi();
166
+ // Connect Sound pushSamples callback
167
+ sound.pushSamples = (samples) => {
168
+ if (this.play) {
169
+ this.play(samples);
170
+ }
171
+ };
172
+ // Create standard GPIO attachments
173
+ this.keyboardMatrixAttachment = new KeyboardMatrixAttachment_1.KeyboardMatrixAttachment(10);
174
+ this.keyboardEncoderAttachment = new KeyboardEncoderAttachment_1.KeyboardEncoderAttachment(20);
175
+ this.joystickAttachmentA = new JoystickAttachment_1.JoystickAttachment(false, 100);
176
+ this.joystickAttachmentB = new JoystickAttachment_1.JoystickAttachment(false, 100);
177
+ // Attach peripherals to GPIO Card
178
+ via.attachToPortA(this.keyboardMatrixAttachment);
179
+ via.attachToPortB(this.keyboardMatrixAttachment);
180
+ via.attachToPortA(this.keyboardEncoderAttachment);
181
+ via.attachToPortB(this.keyboardEncoderAttachment);
182
+ via.attachToPortA(this.joystickAttachmentA);
183
+ via.attachToPortB(this.joystickAttachmentB);
184
+ }
185
+ else if (target === 'cob') {
186
+ const acia = new ACIA_1.ACIA();
187
+ this.io5 = acia;
188
+ // Connect ACIA IRQ/NMI to CPU
189
+ acia.raiseIRQ = () => this.cpu.irq();
190
+ acia.raiseNMI = () => this.cpu.nmi();
191
+ // Connect ACIA transmit callback
192
+ acia.transmit = (data) => {
193
+ if (this.transmit) {
194
+ this.transmit(data);
195
+ }
196
+ };
197
+ const rtc = new RTC_1.RTC();
198
+ const storage = new Storage_1.Storage();
199
+ const gpio = new VIA_1.VIA();
200
+ const sound = new Sound_1.Sound();
201
+ const video = new Video_1.Video();
202
+ this.io1 = new RAMBank_1.RAMBank();
203
+ this.io2 = new RAMBank_1.RAMBank();
204
+ this.io3 = rtc;
205
+ this.io4 = storage;
206
+ this.io6 = gpio;
207
+ this.io7 = sound;
208
+ this.io8 = video;
209
+ // Connect RTC IRQ/NMI to CPU
210
+ rtc.raiseIRQ = () => this.cpu.irq();
211
+ rtc.raiseNMI = () => this.cpu.nmi();
212
+ // Connect Video IRQ/NMI to CPU
213
+ video.raiseIRQ = () => this.cpu.irq();
214
+ video.raiseNMI = () => this.cpu.nmi();
215
+ // Connect Sound pushSamples callback
216
+ sound.pushSamples = (samples) => {
217
+ if (this.play) {
218
+ this.play(samples);
219
+ }
220
+ };
221
+ // Create standard GPIO attachments
222
+ this.keyboardMatrixAttachment = new KeyboardMatrixAttachment_1.KeyboardMatrixAttachment(10);
223
+ this.keyboardEncoderAttachment = new KeyboardEncoderAttachment_1.KeyboardEncoderAttachment(20);
224
+ this.joystickAttachmentA = new JoystickAttachment_1.JoystickAttachment(false, 100);
225
+ this.joystickAttachmentB = new JoystickAttachment_1.JoystickAttachment(false, 100);
226
+ // Attach peripherals to GPIO Card
227
+ gpio.attachToPortA(this.keyboardMatrixAttachment);
228
+ gpio.attachToPortB(this.keyboardMatrixAttachment);
229
+ gpio.attachToPortA(this.keyboardEncoderAttachment);
230
+ gpio.attachToPortB(this.keyboardEncoderAttachment);
231
+ gpio.attachToPortA(this.joystickAttachmentA);
232
+ gpio.attachToPortB(this.joystickAttachmentB);
233
+ }
234
+ else {
235
+ this.io1 = new Empty_1.Empty();
236
+ this.io2 = new Empty_1.Empty();
237
+ this.io3 = new Empty_1.Empty();
238
+ this.io4 = new Empty_1.Empty();
239
+ this.io5 = new Empty_1.Empty();
240
+ this.io6 = new Empty_1.Empty();
241
+ this.io7 = new Empty_1.Empty();
242
+ this.io8 = new Empty_1.Empty();
141
243
  }
142
- this.cpu.reset();
143
- }
144
- start() {
145
- this.cpu.reset();
146
- this.startTime = Date.now();
147
- this.isRunning = true;
148
- this.isAlive = true;
149
- this.loop();
150
- }
151
- end() {
152
- this.isRunning = false;
153
- this.isAlive = false;
154
244
  }
155
245
  run() {
156
246
  this.isRunning = true;
247
+ this.loop();
157
248
  }
158
249
  stop() {
159
250
  this.isRunning = false;
251
+ if (this.loopHandle) {
252
+ if (typeof clearImmediate !== 'undefined') {
253
+ clearImmediate(this.loopHandle);
254
+ }
255
+ else {
256
+ clearTimeout(this.loopHandle);
257
+ }
258
+ this.loopHandle = undefined;
259
+ }
160
260
  }
161
261
  step() {
162
262
  // Step through one complete instruction
163
263
  const cyclesExecuted = this.cpu.step();
164
264
  // Tick IO cards for each cycle of the instruction
165
265
  for (let i = 0; i < cyclesExecuted; i++) {
166
- // SerialCard must be cycle-accurate
266
+ // ACIA must be cycle-accurate
167
267
  this.io5.tick(this.frequency);
168
268
  this.ioCycleAccumulator++;
169
269
  if (this.ioCycleAccumulator >= this.ioTickInterval) {
170
- // Skip ticking RAMCard IO1 and IO2 since they have no timing behavior
270
+ // Skip ticking RAMBank IO1 and IO2 since they have no timing behavior
171
271
  this.io3.tick(this.frequency);
172
272
  this.io4.tick(this.frequency);
173
273
  this.io6.tick(this.frequency);
@@ -177,15 +277,27 @@ class Machine {
177
277
  }
178
278
  }
179
279
  }
280
+ reset(coldStart) {
281
+ this.cpu.reset();
282
+ this.ram.reset(coldStart);
283
+ this.io1.reset(coldStart);
284
+ this.io2.reset(coldStart);
285
+ this.io3.reset(coldStart);
286
+ this.io4.reset(coldStart);
287
+ this.io5.reset(coldStart);
288
+ this.io6.reset(coldStart);
289
+ this.io7.reset(coldStart);
290
+ this.io8.reset(coldStart);
291
+ }
180
292
  tick() {
181
293
  // Execute one CPU clock cycle
182
294
  this.cpu.tick();
183
- // SerialCard must be cycle-accurate
295
+ // ACIA must be cycle-accurate
184
296
  this.io5.tick(this.frequency);
185
297
  // Tick other IO cards at intervals
186
298
  this.ioCycleAccumulator++;
187
299
  if (this.ioCycleAccumulator >= this.ioTickInterval) {
188
- // Skip ticking RAMCard IO1 and IO2 since they have no timing behavior
300
+ // Skip ticking RAMBank IO1 and IO2 since they have no timing behavior
189
301
  this.io3.tick(this.frequency);
190
302
  this.io4.tick(this.frequency);
191
303
  this.io6.tick(this.frequency);
@@ -195,22 +307,25 @@ class Machine {
195
307
  }
196
308
  }
197
309
  onReceive(data) {
198
- this.io5.onData(data); // Pass data to Serial card
310
+ if (this.target !== 'vcs') {
311
+ this.io5.onData(data); // Pass data to Serial card
312
+ }
199
313
  }
200
314
  onKeyDown(scancode) {
201
- var _a;
202
- if (this.kim) {
315
+ var _a, _b, _c;
316
+ if (this.target === 'kim') {
203
317
  (_a = this.keypadAttachment) === null || _a === void 0 ? void 0 : _a.updateKey(scancode, true);
204
318
  }
205
319
  else {
206
- this.keyboardMatrixAttachment.updateKey(scancode, true);
207
- this.keyboardEncoderAttachment.updateKey(scancode, true);
320
+ (_b = this.keyboardMatrixAttachment) === null || _b === void 0 ? void 0 : _b.updateKey(scancode, true);
321
+ (_c = this.keyboardEncoderAttachment) === null || _c === void 0 ? void 0 : _c.updateKey(scancode, true);
208
322
  }
209
323
  }
210
324
  onKeyUp(scancode) {
211
- if (!this.kim) {
212
- this.keyboardMatrixAttachment.updateKey(scancode, false);
213
- this.keyboardEncoderAttachment.updateKey(scancode, false);
325
+ var _a, _b;
326
+ if (this.target !== 'kim') {
327
+ (_a = this.keyboardMatrixAttachment) === null || _a === void 0 ? void 0 : _a.updateKey(scancode, false);
328
+ (_b = this.keyboardEncoderAttachment) === null || _b === void 0 ? void 0 : _b.updateKey(scancode, false);
214
329
  }
215
330
  }
216
331
  onJoystickA(buttons) {
@@ -226,9 +341,6 @@ class Machine {
226
341
  //
227
342
  loop() {
228
343
  var _a;
229
- if (!this.isAlive) {
230
- return;
231
- }
232
344
  const now = performance.now();
233
345
  const elapsedMs = now - this.previousTime;
234
346
  this.previousTime = now;
@@ -243,11 +355,11 @@ class Machine {
243
355
  if (ticksToRun > 0) {
244
356
  for (let i = 0; i < ticksToRun; i++) {
245
357
  this.cpu.tick();
246
- // SerialCard must be cycle-accurate
358
+ // ACIA must be cycle-accurate
247
359
  this.io5.tick(this.frequency);
248
360
  this.ioCycleAccumulator++;
249
361
  if (this.ioCycleAccumulator >= this.ioTickInterval) {
250
- // Skip ticking RAMCard IO1 and IO2 since they have no timing behavior
362
+ // Skip ticking RAMBank IO1 and IO2 since they have no timing behavior
251
363
  this.io3.tick(this.frequency);
252
364
  this.io4.tick(this.frequency);
253
365
  this.io6.tick(this.frequency);
@@ -260,35 +372,30 @@ class Machine {
260
372
  }
261
373
  this._accumulatorMs = accumulator;
262
374
  }
263
- if (this.render && !this.kim) {
264
- const videoCard = this.io8;
265
- if (videoCard.frameReady) {
266
- videoCard.frameReady = false;
375
+ if (this.render && (this.target === 'kim' || this.target === 'dev')) {
376
+ this.render();
377
+ this.frames += 1;
378
+ }
379
+ else if (this.render && (this.target === 'cob' || this.target === 'vcs')) {
380
+ const Video = this.io8;
381
+ if (Video.frameReady) {
382
+ Video.frameReady = false;
267
383
  this.render();
268
384
  this.frames += 1;
269
385
  }
270
386
  }
271
- else if (this.render && this.kim) {
272
- this.render();
273
- this.frames += 1;
387
+ if (this.isRunning) {
388
+ if (typeof setImmediate !== 'undefined') {
389
+ this.loopHandle = setImmediate(() => this.loop());
390
+ }
391
+ else {
392
+ this.loopHandle = setTimeout(() => this.loop(), 0);
393
+ }
274
394
  }
275
- setImmediate(() => this.loop());
276
395
  }
277
396
  //
278
397
  // Bus Operations
279
398
  //
280
- reset(coldStart) {
281
- this.cpu.reset();
282
- this.ram.reset(coldStart);
283
- this.io1.reset(coldStart);
284
- this.io2.reset(coldStart);
285
- this.io3.reset(coldStart);
286
- this.io4.reset(coldStart);
287
- this.io5.reset(coldStart);
288
- this.io6.reset(coldStart);
289
- this.io7.reset(coldStart);
290
- this.io8.reset(coldStart);
291
- }
292
399
  read(address) {
293
400
  switch (true) {
294
401
  case (this.cart && address >= Cart_1.Cart.CODE && address <= Cart_1.Cart.END):
@@ -1 +1 @@
1
- {"version":3,"file":"Machine.js","sourceRoot":"","sources":["../../src/components/Machine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Machine.js","sourceRoot":"","sources":["../../src/components/Machine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class RAM {
2
+ static START: number;
3
+ static END: number;
4
+ static SIZE: number;
5
+ data: number[];
6
+ read(address: number): number;
7
+ write(address: number, data: number): void;
8
+ reset(coldStart: boolean): void;
9
+ }
@@ -0,0 +1,9 @@
1
+ export declare class ROM {
2
+ static START: number;
3
+ static END: number;
4
+ static CODE: number;
5
+ static SIZE: number;
6
+ data: number[];
7
+ read(address: number): number;
8
+ load(data: number[]): void;
9
+ }
@@ -0,0 +1,2 @@
1
+ #! /usr/bin/env node
2
+ export {};