ac6502 1.3.0 → 1.4.1
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/README.md +139 -32
- package/dist/components/IO/ACIA.d.ts +76 -0
- package/dist/components/IO/ACIA.js +282 -0
- package/dist/components/IO/ACIA.js.map +1 -0
- package/dist/components/IO/Attachments/Attachment.d.ts +112 -0
- package/dist/components/IO/Attachments/Attachment.js +71 -0
- package/dist/components/IO/Attachments/Attachment.js.map +1 -0
- package/dist/components/IO/Attachments/JoystickAttachment.d.ts +53 -0
- package/dist/components/IO/Attachments/JoystickAttachment.js +90 -0
- package/dist/components/IO/Attachments/JoystickAttachment.js.map +1 -0
- package/dist/components/IO/Attachments/KeyboardEncoderAttachment.d.ts +63 -0
- package/dist/components/IO/Attachments/KeyboardEncoderAttachment.js +489 -0
- package/dist/components/IO/Attachments/KeyboardEncoderAttachment.js.map +1 -0
- package/dist/components/IO/Attachments/KeyboardMatrixAttachment.d.ts +44 -0
- package/dist/components/IO/Attachments/KeyboardMatrixAttachment.js +274 -0
- package/dist/components/IO/Attachments/KeyboardMatrixAttachment.js.map +1 -0
- package/dist/components/IO/Attachments/KeypadAttachment.d.ts +47 -0
- package/dist/components/IO/Attachments/KeypadAttachment.js +141 -0
- package/dist/components/IO/Attachments/KeypadAttachment.js.map +1 -0
- package/dist/components/IO/Attachments/LCDAttachment.d.ts +110 -0
- package/dist/components/IO/Attachments/LCDAttachment.js +716 -0
- package/dist/components/IO/Attachments/LCDAttachment.js.map +1 -0
- package/dist/components/IO/Attachments/SNESAttachment.d.ts +85 -0
- package/dist/components/IO/Attachments/SNESAttachment.js +184 -0
- package/dist/components/IO/Attachments/SNESAttachment.js.map +1 -0
- package/dist/components/IO/Empty.d.ts +9 -0
- package/dist/components/IO/Empty.js +5 -7
- package/dist/components/IO/Empty.js.map +1 -1
- package/dist/components/IO/GPIOCard.d.ts +5 -5
- package/dist/components/IO/GPIOCard.js.map +1 -1
- package/dist/components/IO/RAMBank.d.ts +37 -0
- package/dist/components/IO/RAMBank.js +63 -0
- package/dist/components/IO/RAMBank.js.map +1 -0
- package/dist/components/IO/RTC.d.ts +107 -0
- package/dist/components/IO/RTC.js +483 -0
- package/dist/components/IO/RTC.js.map +1 -0
- package/dist/components/IO/Sound.d.ts +120 -0
- package/dist/components/IO/Sound.js +622 -0
- package/dist/components/IO/Sound.js.map +1 -0
- package/dist/components/IO/Storage.d.ts +74 -0
- package/dist/components/IO/Storage.js +409 -0
- package/dist/components/IO/Storage.js.map +1 -0
- package/dist/components/IO/Terminal.d.ts +19 -0
- package/dist/components/IO/Terminal.js +33 -0
- package/dist/components/IO/Terminal.js.map +1 -0
- package/dist/components/IO/VIA.d.ts +105 -0
- package/dist/components/IO/VIA.js +597 -0
- package/dist/components/IO/VIA.js.map +1 -0
- package/dist/components/IO/Video.d.ts +141 -0
- package/dist/components/IO/Video.js +630 -0
- package/dist/components/IO/Video.js.map +1 -0
- package/dist/components/Machine.d.ts +20 -24
- package/dist/components/Machine.js +249 -166
- package/dist/components/Machine.js.map +1 -1
- package/dist/index.js +28 -14
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +16 -16
- package/dist/lib.js +32 -32
- package/dist/lib.js.map +1 -1
- package/dist/tests/IO/ACIA.test.d.ts +1 -0
- package/dist/tests/IO/ACIA.test.js +423 -0
- package/dist/tests/IO/ACIA.test.js.map +1 -0
- package/dist/tests/IO/Attachments/Attachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/Attachment.test.js +339 -0
- package/dist/tests/IO/Attachments/Attachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/JoystickAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/JoystickAttachment.test.js +126 -0
- package/dist/tests/IO/Attachments/JoystickAttachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.js +779 -0
- package/dist/tests/IO/Attachments/KeyboardEncoderAttachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/KeyboardMatrixAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/KeyboardMatrixAttachment.test.js +355 -0
- package/dist/tests/IO/Attachments/KeyboardMatrixAttachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/KeypadAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/KeypadAttachment.test.js +323 -0
- package/dist/tests/IO/Attachments/KeypadAttachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/LCDAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/LCDAttachment.test.js +627 -0
- package/dist/tests/IO/Attachments/LCDAttachment.test.js.map +1 -0
- package/dist/tests/IO/Attachments/SNESAttachment.test.d.ts +1 -0
- package/dist/tests/IO/Attachments/SNESAttachment.test.js +331 -0
- package/dist/tests/IO/Attachments/SNESAttachment.test.js.map +1 -0
- package/dist/tests/IO/Empty.test.d.ts +1 -0
- package/dist/tests/IO/Empty.test.js +121 -0
- package/dist/tests/IO/Empty.test.js.map +1 -0
- package/dist/tests/IO/GPIOCard.test.js.map +1 -1
- package/dist/tests/IO/RAMBank.test.d.ts +1 -0
- package/dist/tests/IO/RAMBank.test.js +229 -0
- package/dist/tests/IO/RAMBank.test.js.map +1 -0
- package/dist/tests/IO/RTC.test.d.ts +1 -0
- package/dist/tests/IO/RTC.test.js +177 -0
- package/dist/tests/IO/RTC.test.js.map +1 -0
- package/dist/tests/IO/Sound.test.d.ts +1 -0
- package/dist/tests/IO/Sound.test.js +528 -0
- package/dist/tests/IO/Sound.test.js.map +1 -0
- package/dist/tests/IO/Storage.test.d.ts +1 -0
- package/dist/tests/IO/Storage.test.js +656 -0
- package/dist/tests/IO/Storage.test.js.map +1 -0
- package/dist/tests/IO/VIA.test.d.ts +1 -0
- package/dist/tests/IO/VIA.test.js +503 -0
- package/dist/tests/IO/VIA.test.js.map +1 -0
- package/dist/tests/IO/Video.test.d.ts +1 -0
- package/dist/tests/IO/Video.test.js +549 -0
- package/dist/tests/IO/Video.test.js.map +1 -0
- package/dist/tests/Machine.test.js +27 -42
- package/dist/tests/Machine.test.js.map +1 -1
- package/package.json +1 -1
- package/src/components/IO/{SerialCard.ts → ACIA.ts} +2 -2
- package/src/components/IO/{GPIOAttachments/GPIOAttachment.ts → Attachments/Attachment.ts} +2 -2
- package/src/components/IO/{GPIOAttachments/GPIOJoystickAttachment.ts → Attachments/JoystickAttachment.ts} +3 -3
- package/src/components/IO/{GPIOAttachments/GPIOKeyboardEncoderAttachment.ts → Attachments/KeyboardEncoderAttachment.ts} +3 -3
- package/src/components/IO/{GPIOAttachments/GPIOKeyboardMatrixAttachment.ts → Attachments/KeyboardMatrixAttachment.ts} +5 -5
- package/src/components/IO/{GPIOAttachments/GPIOKeypadAttachment.ts → Attachments/KeypadAttachment.ts} +3 -3
- package/src/components/IO/{GPIOAttachments/GPIOLCDAttachment.ts → Attachments/LCDAttachment.ts} +7 -7
- package/src/components/IO/{EmptyCard.ts → Empty.ts} +1 -1
- package/src/components/IO/{RAMCard.ts → RAMBank.ts} +8 -8
- package/src/components/IO/{RTCCard.ts → RTC.ts} +1 -1
- package/src/components/IO/{SoundCard.ts → Sound.ts} +2 -2
- package/src/components/IO/{StorageCard.ts → Storage.ts} +70 -73
- package/src/components/IO/{DevOutputBoard.ts → Terminal.ts} +2 -2
- package/src/components/IO/{GPIOCard.ts → VIA.ts} +64 -64
- package/src/components/IO/{VideoCard.ts → Video.ts} +1 -1
- package/src/components/Machine.ts +276 -176
- package/src/index.ts +34 -21
- package/src/lib.ts +16 -16
- package/src/tests/IO/{SerialCard.test.ts → ACIA.test.ts} +5 -5
- package/src/tests/IO/{GPIOAttachments/GPIOAttachment.test.ts → Attachments/Attachment.test.ts} +12 -12
- package/src/tests/IO/{GPIOAttachments/GPIOJoystickAttachment.test.ts → Attachments/JoystickAttachment.test.ts} +23 -23
- package/src/tests/IO/{GPIOAttachments/GPIOKeyboardEncoderAttachment.test.ts → Attachments/KeyboardEncoderAttachment.test.ts} +4 -4
- package/src/tests/IO/{GPIOAttachments/GPIOKeyboardMatrixAttachment.test.ts → Attachments/KeyboardMatrixAttachment.test.ts} +5 -5
- package/src/tests/IO/{GPIOAttachments/GPIOKeypadAttachment.test.ts → Attachments/KeypadAttachment.test.ts} +38 -38
- package/src/tests/IO/{GPIOAttachments/GPIOLCDAttachment.test.ts → Attachments/LCDAttachment.test.ts} +12 -12
- package/src/tests/IO/Empty.test.ts +143 -0
- package/src/tests/IO/{RAMCard.test.ts → RAMBank.test.ts} +33 -33
- package/src/tests/IO/{RTCCard.test.ts → RTC.test.ts} +6 -6
- package/src/tests/IO/{SoundCard.test.ts → Sound.test.ts} +6 -6
- package/src/tests/IO/{StorageCard.test.ts → Storage.test.ts} +34 -25
- package/src/tests/IO/{GPIOCard.test.ts → VIA.test.ts} +7 -7
- package/src/tests/IO/{VideoCard.test.ts → Video.test.ts} +13 -13
- package/src/tests/Machine.test.ts +31 -38
|
@@ -1,13 +1,4 @@
|
|
|
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
|
const Machine_1 = require("../components/Machine");
|
|
13
4
|
const RAM_1 = require("../components/RAM");
|
|
@@ -15,11 +6,11 @@ const ROM_1 = require("../components/ROM");
|
|
|
15
6
|
describe('Machine', () => {
|
|
16
7
|
let machine;
|
|
17
8
|
beforeEach(() => {
|
|
18
|
-
machine = new Machine_1.Machine();
|
|
9
|
+
machine = new Machine_1.Machine('cob');
|
|
19
10
|
});
|
|
20
11
|
afterEach(() => {
|
|
21
12
|
// Ensure the machine loop is stopped after each test
|
|
22
|
-
machine.
|
|
13
|
+
machine.stop();
|
|
23
14
|
});
|
|
24
15
|
describe('Initialization', () => {
|
|
25
16
|
test('Constructor creates a Machine instance', () => {
|
|
@@ -27,7 +18,6 @@ describe('Machine', () => {
|
|
|
27
18
|
expect(machine).toBeInstanceOf(Machine_1.Machine);
|
|
28
19
|
});
|
|
29
20
|
test('Machine initializes with correct default properties', () => {
|
|
30
|
-
expect(machine.isAlive).toBe(false);
|
|
31
21
|
expect(machine.isRunning).toBe(false);
|
|
32
22
|
expect(machine.frequency).toBe(2000000);
|
|
33
23
|
expect(machine.scale).toBe(2);
|
|
@@ -55,24 +45,11 @@ describe('Machine', () => {
|
|
|
55
45
|
});
|
|
56
46
|
});
|
|
57
47
|
describe('State Management', () => {
|
|
58
|
-
test('start() sets isRunning and isAlive to true', () => {
|
|
59
|
-
expect(machine.isRunning).toBe(false);
|
|
60
|
-
expect(machine.isAlive).toBe(false);
|
|
61
|
-
machine.start();
|
|
62
|
-
expect(machine.isRunning).toBe(true);
|
|
63
|
-
expect(machine.isAlive).toBe(true);
|
|
64
|
-
});
|
|
65
|
-
test('end() sets isRunning and isAlive to false', () => {
|
|
66
|
-
machine.start();
|
|
67
|
-
expect(machine.isRunning).toBe(true);
|
|
68
|
-
machine.end();
|
|
69
|
-
expect(machine.isRunning).toBe(false);
|
|
70
|
-
expect(machine.isAlive).toBe(false);
|
|
71
|
-
});
|
|
72
48
|
test('run() sets isRunning to true', () => {
|
|
73
49
|
expect(machine.isRunning).toBe(false);
|
|
74
50
|
machine.run();
|
|
75
51
|
expect(machine.isRunning).toBe(true);
|
|
52
|
+
machine.stop(); // Cleanup
|
|
76
53
|
});
|
|
77
54
|
test('stop() sets isRunning to false', () => {
|
|
78
55
|
machine.run();
|
|
@@ -189,20 +166,20 @@ describe('Machine', () => {
|
|
|
189
166
|
test('Cart is initially undefined', () => {
|
|
190
167
|
expect(machine.cart).toBeUndefined();
|
|
191
168
|
});
|
|
192
|
-
test('loadCart should load cart data', () =>
|
|
193
|
-
//
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
expect(machine.cart).
|
|
197
|
-
})
|
|
169
|
+
test('loadCart should load cart data', () => {
|
|
170
|
+
// Load cart with test data
|
|
171
|
+
const testData = new Uint8Array(16384).fill(0xEA); // NOP instruction
|
|
172
|
+
machine.loadCart(testData);
|
|
173
|
+
expect(machine.cart).toBeDefined();
|
|
174
|
+
});
|
|
198
175
|
});
|
|
199
176
|
describe('ROM Operations', () => {
|
|
200
|
-
test('loadROM should load ROM data', () =>
|
|
201
|
-
//
|
|
202
|
-
|
|
203
|
-
|
|
177
|
+
test('loadROM should load ROM data', () => {
|
|
178
|
+
// Load ROM with test data
|
|
179
|
+
const testData = new Uint8Array(16384).fill(0xEA); // NOP instruction
|
|
180
|
+
machine.loadROM(testData);
|
|
204
181
|
expect(machine.rom).toBeDefined();
|
|
205
|
-
})
|
|
182
|
+
});
|
|
206
183
|
});
|
|
207
184
|
describe('CPU Execution', () => {
|
|
208
185
|
test('step() executes one instruction', () => {
|
|
@@ -234,12 +211,15 @@ describe('Machine', () => {
|
|
|
234
211
|
});
|
|
235
212
|
describe('Input Handling', () => {
|
|
236
213
|
test('onReceive() passes data to Serial card', () => {
|
|
237
|
-
const
|
|
214
|
+
const acia = machine.io5;
|
|
215
|
+
const spy = jest.spyOn(acia, 'onData');
|
|
238
216
|
machine.onReceive(0x41);
|
|
239
217
|
expect(spy).toHaveBeenCalledWith(0x41);
|
|
240
218
|
spy.mockRestore();
|
|
241
219
|
});
|
|
242
220
|
test('onKeyDown() routes key to GPIO attachments', () => {
|
|
221
|
+
expect(machine.keyboardMatrixAttachment).toBeDefined();
|
|
222
|
+
expect(machine.keyboardEncoderAttachment).toBeDefined();
|
|
243
223
|
const matrixSpy = jest.spyOn(machine.keyboardMatrixAttachment, 'updateKey');
|
|
244
224
|
const encoderSpy = jest.spyOn(machine.keyboardEncoderAttachment, 'updateKey');
|
|
245
225
|
machine.onKeyDown(0x52); // Arrow Up USB HID keycode
|
|
@@ -249,6 +229,8 @@ describe('Machine', () => {
|
|
|
249
229
|
encoderSpy.mockRestore();
|
|
250
230
|
});
|
|
251
231
|
test('onKeyUp() routes key to GPIO attachments', () => {
|
|
232
|
+
expect(machine.keyboardMatrixAttachment).toBeDefined();
|
|
233
|
+
expect(machine.keyboardEncoderAttachment).toBeDefined();
|
|
252
234
|
const matrixSpy = jest.spyOn(machine.keyboardMatrixAttachment, 'updateKey');
|
|
253
235
|
const encoderSpy = jest.spyOn(machine.keyboardEncoderAttachment, 'updateKey');
|
|
254
236
|
machine.onKeyUp(0x52); // Arrow Up USB HID keycode
|
|
@@ -258,12 +240,14 @@ describe('Machine', () => {
|
|
|
258
240
|
encoderSpy.mockRestore();
|
|
259
241
|
});
|
|
260
242
|
test('onJoystickA() routes button state to joystick A attachment', () => {
|
|
243
|
+
expect(machine.joystickAttachmentA).toBeDefined();
|
|
261
244
|
const spy = jest.spyOn(machine.joystickAttachmentA, 'updateJoystick');
|
|
262
245
|
machine.onJoystickA(0xFF);
|
|
263
246
|
expect(spy).toHaveBeenCalledWith(0xFF);
|
|
264
247
|
spy.mockRestore();
|
|
265
248
|
});
|
|
266
249
|
test('onJoystickB() routes button state to joystick B attachment', () => {
|
|
250
|
+
expect(machine.joystickAttachmentB).toBeDefined();
|
|
267
251
|
const spy = jest.spyOn(machine.joystickAttachmentB, 'updateJoystick');
|
|
268
252
|
machine.onJoystickB(0xFF);
|
|
269
253
|
expect(spy).toHaveBeenCalledWith(0xFF);
|
|
@@ -328,12 +312,13 @@ describe('Machine', () => {
|
|
|
328
312
|
machine.render = mockRender;
|
|
329
313
|
expect(machine.render).toBe(mockRender);
|
|
330
314
|
});
|
|
331
|
-
test('
|
|
332
|
-
var _a
|
|
315
|
+
test('ACIA uses transmit callback when set', () => {
|
|
316
|
+
var _a;
|
|
333
317
|
const mockTransmit = jest.fn();
|
|
334
318
|
machine.transmit = mockTransmit;
|
|
335
|
-
// Trigger
|
|
336
|
-
|
|
319
|
+
// Trigger ACIA to transmit if possible
|
|
320
|
+
const acia = machine.io5;
|
|
321
|
+
(_a = acia.transmit) === null || _a === void 0 ? void 0 : _a.call(acia, 0x41);
|
|
337
322
|
expect(mockTransmit).toHaveBeenCalledWith(0x41);
|
|
338
323
|
});
|
|
339
324
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Machine.test.js","sourceRoot":"","sources":["../../src/tests/Machine.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mDAA+C;AAC/C,2CAAuC;AACvC,2CAAuC;AAGvC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,IAAI,OAAgB,CAAA;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,qDAAqD;QACrD,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,iBAAO,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC/D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACnC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACvC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC7B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACvD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;YAClC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC7C,mDAAmD;YACnD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;QACnC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACnC,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACrD,OAAO,CAAC,KAAK,EAAE,CAAA;YACf,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpC,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrC,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC1C,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpC,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAClD,MAAM,OAAO,GAAG,MAAM,CAAA;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACpD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC1C,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC1C,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAChD,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACpD,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACnD,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;YACjD,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAClD,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAClD,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAClD,oCAAoC;YACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC1C,MAAM,UAAU,GAAG,MAAM,CAAA;YACzB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACvC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAChD,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,OAAO,GAAG,MAAM,CAAA;YACtB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC5B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAC9B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAC9B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,MAAM,CAAA;YACxB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACrD,MAAM,UAAU,GAAG,MAAM,CAAA;YACzB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAC7D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,gCAAgC,EAAE,GAAS,EAAE;YAChD,mEAAmE;YACnE,MAAM,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;YAC/C,iDAAiD;YACjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;QACtC,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAI,CAAC,8BAA8B,EAAE,GAAS,EAAE;YAC9C,kEAAkE;YAClE,MAAM,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAA;YAC9C,iDAAiD;YACjD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;QACnC,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAA;YACxC,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,yCAAyC;YACzC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC/C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAA;YACxC,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,uEAAuE;YACvE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACxD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAA;YACxC,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,OAAO,CAAC,IAAI,EAAE,CAAA;YACd,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;QAC3D,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAClD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAA;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,EAAE,CAAA;YAChB,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;QAC3D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YAC7C,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACvB,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YACtC,GAAG,CAAC,WAAW,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAA;YAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAA;YAC7E,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAC,2BAA2B;YACnD,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAClD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACnD,SAAS,CAAC,WAAW,EAAE,CAAA;YACvB,UAAU,CAAC,WAAW,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAA;YAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAA;YAC7E,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA,CAAC,2BAA2B;YACjD,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACnD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACpD,SAAS,CAAC,WAAW,EAAE,CAAA;YACvB,UAAU,CAAC,WAAW,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACtE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAA;YACrE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YACtC,GAAG,CAAC,WAAW,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACtE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAA;YACrE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YACtC,GAAG,CAAC,WAAW,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC5C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAA;YAC9B,GAAG,CAAC,WAAW,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC/B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC3C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACnB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACpB,2BAA2B;YAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAE/C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAEnB,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAA;YACjC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAA;YAEjC,MAAM,CAAC,WAAW,EAAE,CAAA;YACpB,MAAM,CAAC,WAAW,EAAE,CAAA;YACpB,MAAM,CAAC,WAAW,EAAE,CAAA;YACpB,MAAM,CAAC,WAAW,EAAE,CAAA;YACpB,MAAM,CAAC,WAAW,EAAE,CAAA;YACpB,MAAM,CAAC,WAAW,EAAE,CAAA;YACpB,MAAM,CAAC,WAAW,EAAE,CAAA;YACpB,MAAM,CAAC,WAAW,EAAE,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;YAC9B,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAA;YAC/B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;YAC5B,OAAO,CAAC,MAAM,GAAG,UAAU,CAAA;YAC3B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;;YACtD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;YAC9B,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAA;YAC/B,6CAA6C;YAC7C,MAAA,MAAA,OAAO,CAAC,GAAG,EAAC,QAAQ,mDAAG,IAAI,CAAC,CAAA;YAC5B,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAA;YACtC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAA;YAC3B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACvC,OAAO,CAAC,SAAS,GAAG,YAAY,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC1C,OAAO,CAAC,KAAK,GAAG,CAAC,CAAA;YACjB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,iBAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAChC,MAAM,CAAC,iBAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;YAC5E,MAAM,WAAW,GAAG,MAAM,CAAA;YAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;YAC1D,MAAM,UAAU,GAAG,MAAM,CAAA;YACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACvC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC7C,OAAO,CAAC,KAAK,CAAC,SAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE1C,OAAO,CAAC,KAAK,CAAC,SAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACxD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEtC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACxD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEtC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"Machine.test.js","sourceRoot":"","sources":["../../src/tests/Machine.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IO } from '../IO'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* ACIA - Emulates a 6551 ACIA (Asynchronous Communications Interface Adapter)
|
|
5
5
|
*
|
|
6
6
|
* Register Map:
|
|
7
7
|
* $00: Data Register (read/write)
|
|
@@ -9,7 +9,7 @@ import { IO } from '../IO'
|
|
|
9
9
|
* $02: Command Register (write)
|
|
10
10
|
* $03: Control Register (write)
|
|
11
11
|
*/
|
|
12
|
-
export class
|
|
12
|
+
export class ACIA implements IO {
|
|
13
13
|
|
|
14
14
|
raiseIRQ = () => {}
|
|
15
15
|
raiseNMI = () => {}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Interface for devices that can be attached to GPIO ports
|
|
3
3
|
*/
|
|
4
|
-
export interface
|
|
4
|
+
export interface Attachment {
|
|
5
5
|
/**
|
|
6
6
|
* Reset the attachment to its initial state
|
|
7
7
|
*/
|
|
@@ -101,7 +101,7 @@ export interface GPIOAttachment {
|
|
|
101
101
|
/**
|
|
102
102
|
* Base abstract class for GPIO attachments with common functionality
|
|
103
103
|
*/
|
|
104
|
-
export abstract class
|
|
104
|
+
export abstract class AttachmentBase implements Attachment {
|
|
105
105
|
protected priority: number
|
|
106
106
|
protected enabled: boolean
|
|
107
107
|
protected ca1Interrupt: boolean
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AttachmentBase } from './Attachment'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* JoystickAttachment - Emulates a joystick/gamepad connected to GPIO port
|
|
5
5
|
*
|
|
6
6
|
* Buttons are active-low (0 = pressed, 1 = released)
|
|
7
7
|
* Can be attached to either Port A or Port B
|
|
8
8
|
*/
|
|
9
|
-
export class
|
|
9
|
+
export class JoystickAttachment extends AttachmentBase {
|
|
10
10
|
// Joystick button bit masks
|
|
11
11
|
static readonly BUTTON_UP = 0x01
|
|
12
12
|
static readonly BUTTON_DOWN = 0x02
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AttachmentBase } from './Attachment'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* USB HID Keycode to ASCII mapping table
|
|
@@ -66,7 +66,7 @@ const USB_HID_TO_ASCII: { [key: number]: number } = {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
|
-
*
|
|
69
|
+
* KeyboardEncoderAttachment - Emulates a keyboard encoder that provides ASCII-encoded
|
|
70
70
|
* key data on both GPIO ports A and B.
|
|
71
71
|
*
|
|
72
72
|
* This attachment uses the VIA control lines to signal data availability:
|
|
@@ -83,7 +83,7 @@ const USB_HID_TO_ASCII: { [key: number]: number } = {
|
|
|
83
83
|
* - Alt: Extended character set 0xE0-0xFF
|
|
84
84
|
* - Shift: Uppercase letters and shifted symbols
|
|
85
85
|
*/
|
|
86
|
-
export class
|
|
86
|
+
export class KeyboardEncoderAttachment extends AttachmentBase {
|
|
87
87
|
// Port A state
|
|
88
88
|
private asciiDataA: number = 0x00
|
|
89
89
|
private dataReadyA: boolean = false
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AttachmentBase } from './Attachment'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* USB HID Keycode to ASCII mapping table
|
|
@@ -66,7 +66,7 @@ const USB_HID_TO_ASCII: { [key: number]: number } = {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
|
-
*
|
|
69
|
+
* KeyboardMatrixAttachment - Emulates a keyboard matrix connected to GPIO ports
|
|
70
70
|
*
|
|
71
71
|
* The keyboard matrix uses:
|
|
72
72
|
* - Port A (PA0-PA7): Rows (8 rows)
|
|
@@ -75,7 +75,7 @@ const USB_HID_TO_ASCII: { [key: number]: number } = {
|
|
|
75
75
|
* Keys are active-low: when a key is pressed, the corresponding row/column intersection
|
|
76
76
|
* pulls the row line low when the column is selected (low).
|
|
77
77
|
*/
|
|
78
|
-
export class
|
|
78
|
+
export class KeyboardMatrixAttachment extends AttachmentBase {
|
|
79
79
|
// Keyboard matrix layout mapping
|
|
80
80
|
// Rows are PA0-PA7, Columns are PB0-PB7
|
|
81
81
|
private static readonly KEYBOARD_LAYOUT: number[][] = [
|
|
@@ -205,7 +205,7 @@ export class GPIOKeyboardMatrixAttachment extends GPIOAttachmentBase {
|
|
|
205
205
|
// Find and set the number key in the matrix
|
|
206
206
|
for (let row = 0; row < 8; row++) {
|
|
207
207
|
for (let col = 0; col < 8; col++) {
|
|
208
|
-
if (
|
|
208
|
+
if (KeyboardMatrixAttachment.KEYBOARD_LAYOUT[row][col] === numberKey) {
|
|
209
209
|
if (pressed) {
|
|
210
210
|
this.keyboardMatrix[row] |= (1 << col)
|
|
211
211
|
} else {
|
|
@@ -231,7 +231,7 @@ export class GPIOKeyboardMatrixAttachment extends GPIOAttachmentBase {
|
|
|
231
231
|
// Find the ASCII key in the keyboard layout
|
|
232
232
|
for (let row = 0; row < 8; row++) {
|
|
233
233
|
for (let col = 0; col < 8; col++) {
|
|
234
|
-
if (
|
|
234
|
+
if (KeyboardMatrixAttachment.KEYBOARD_LAYOUT[row][col] === asciiKey) {
|
|
235
235
|
targetRow = row
|
|
236
236
|
targetCol = col
|
|
237
237
|
break
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AttachmentBase } from './Attachment'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* USB HID keycode to keypad value mapping
|
|
@@ -41,7 +41,7 @@ const USB_HID_TO_KEYPAD: { [key: number]: number } = {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
44
|
+
* KeypadAttachment - Emulates a 4×6 matrix keypad with a built-in hardware encoder
|
|
45
45
|
*
|
|
46
46
|
* The encoder converts a key press into a 5-bit code (PA0–PA4) that appears on the GPIO
|
|
47
47
|
* port. Bits 5–7 are never driven by the keypad and always read as 0 when data is present.
|
|
@@ -57,7 +57,7 @@ const USB_HID_TO_KEYPAD: { [key: number]: number } = {
|
|
|
57
57
|
* CA2/CB2 is connected to the 74C922 OE (Output Enable) pin; data is only driven onto the
|
|
58
58
|
* bus when OE is asserted LOW by the 6522.
|
|
59
59
|
*/
|
|
60
|
-
export class
|
|
60
|
+
export class KeypadAttachment extends AttachmentBase {
|
|
61
61
|
private keypadValue: number = 0x00
|
|
62
62
|
private dataReady: boolean = false
|
|
63
63
|
private interruptPending: boolean = false
|
package/src/components/IO/{GPIOAttachments/GPIOLCDAttachment.ts → Attachments/LCDAttachment.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AttachmentBase } from './Attachment'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* HD44780 LCD Controller Emulation — GPIO Attachment
|
|
@@ -315,7 +315,7 @@ const FONT_A00: ReadonlyArray<readonly [number, number, number, number, number]>
|
|
|
315
315
|
[0xff,0xff,0xff,0xff,0xff], // 255
|
|
316
316
|
]
|
|
317
317
|
|
|
318
|
-
export class
|
|
318
|
+
export class LCDAttachment extends AttachmentBase {
|
|
319
319
|
|
|
320
320
|
// ── Display geometry ───────────────────────────────────────────
|
|
321
321
|
readonly cols: number
|
|
@@ -371,7 +371,7 @@ export class GPIOLCDAttachment extends GPIOAttachmentBase {
|
|
|
371
371
|
this.reset()
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
-
// ──
|
|
374
|
+
// ── Attachment interface ───────────────────────────────────
|
|
375
375
|
|
|
376
376
|
reset(): void {
|
|
377
377
|
super.reset()
|
|
@@ -398,8 +398,8 @@ export class GPIOLCDAttachment extends GPIOAttachmentBase {
|
|
|
398
398
|
// Advance cursor blink timer
|
|
399
399
|
const msPerTick = (128 / cpuFrequency) * 1000
|
|
400
400
|
this.blinkAccumulator += msPerTick
|
|
401
|
-
if (this.blinkAccumulator >=
|
|
402
|
-
this.blinkAccumulator -=
|
|
401
|
+
if (this.blinkAccumulator >= LCDAttachment.BLINK_PERIOD_MS) {
|
|
402
|
+
this.blinkAccumulator -= LCDAttachment.BLINK_PERIOD_MS
|
|
403
403
|
this.blinkState = !this.blinkState
|
|
404
404
|
}
|
|
405
405
|
}
|
|
@@ -462,11 +462,11 @@ export class GPIOLCDAttachment extends GPIOAttachmentBase {
|
|
|
462
462
|
// — but the VIA card calls writePortB with the actual value. By the time
|
|
463
463
|
// E falls the data on the bus is the Port B output register value.
|
|
464
464
|
// We need the data value — it's available from the last writePortB call.
|
|
465
|
-
// However, writePortB doesn't store anything here. The
|
|
465
|
+
// However, writePortB doesn't store anything here. The VIA resolves
|
|
466
466
|
// the actual output from OR & DDR and passes it to us.
|
|
467
467
|
//
|
|
468
468
|
// For writes, the data on Port B is the value written by the CPU.
|
|
469
|
-
// The
|
|
469
|
+
// The VIA will have called writePortB with the data already.
|
|
470
470
|
// We need to capture it — store it via writePortB override.
|
|
471
471
|
|
|
472
472
|
// Actually — we need to capture the Port B value. Let's store it.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IO } from '../IO'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* RAMBank - Emulates banked RAM with 256KB total capacity
|
|
5
5
|
*
|
|
6
6
|
* Provides 256KB of banked RAM divided into 256 banks of 1KB each.
|
|
7
7
|
* A bank control register at address 0x3FF selects which bank is currently visible.
|
|
@@ -10,14 +10,14 @@ import { IO } from '../IO'
|
|
|
10
10
|
* $000-$3FE: Bank data (1K window into selected bank)
|
|
11
11
|
* $3FF: Bank control register (read/write)
|
|
12
12
|
*/
|
|
13
|
-
export class
|
|
13
|
+
export class RAMBank implements IO {
|
|
14
14
|
|
|
15
15
|
static TOTAL_SIZE: number = 256 * 1024 // 256k bytes
|
|
16
16
|
static BANK_SIZE: number = 1024 // 1k per bank
|
|
17
|
-
static NUM_BANKS: number =
|
|
17
|
+
static NUM_BANKS: number = RAMBank.TOTAL_SIZE / RAMBank.BANK_SIZE // 256 banks
|
|
18
18
|
static BANK_CONTROL_REGISTER: number = 0x3FF // Last byte in 1k window
|
|
19
19
|
|
|
20
|
-
data: number[] = [...Array(
|
|
20
|
+
data: number[] = [...Array(RAMBank.TOTAL_SIZE)].fill(0x00)
|
|
21
21
|
currentBank: number = 0
|
|
22
22
|
|
|
23
23
|
raiseIRQ = () => {}
|
|
@@ -28,12 +28,12 @@ export class RAMCard implements IO {
|
|
|
28
28
|
*/
|
|
29
29
|
read(address: number): number {
|
|
30
30
|
// Reading from bank control register returns current bank number
|
|
31
|
-
if (address ===
|
|
31
|
+
if (address === RAMBank.BANK_CONTROL_REGISTER) {
|
|
32
32
|
return this.currentBank
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
// Calculate actual address in RAM: bank * bank_size + offset and return data
|
|
36
|
-
return this.data[this.currentBank *
|
|
36
|
+
return this.data[this.currentBank * RAMBank.BANK_SIZE + address]
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
/**
|
|
@@ -41,13 +41,13 @@ export class RAMCard implements IO {
|
|
|
41
41
|
*/
|
|
42
42
|
write(address: number, data: number): void {
|
|
43
43
|
// Writing to bank control register switches banks
|
|
44
|
-
if (address ===
|
|
44
|
+
if (address === RAMBank.BANK_CONTROL_REGISTER) {
|
|
45
45
|
this.currentBank = data & 0xFF // Ensure 0-255 range
|
|
46
46
|
return
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
// Calculate actual address in RAM: bank * bank_size + offset and store data
|
|
50
|
-
this.data[this.currentBank *
|
|
50
|
+
this.data[this.currentBank * RAMBank.BANK_SIZE + address] = data & 0xFF
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/**
|
|
@@ -157,10 +157,10 @@ export class SIDVoice {
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
// ================================================================
|
|
160
|
-
//
|
|
160
|
+
// Sound (SID)
|
|
161
161
|
// ================================================================
|
|
162
162
|
|
|
163
|
-
export class
|
|
163
|
+
export class Sound implements IO {
|
|
164
164
|
|
|
165
165
|
raiseIRQ = () => {}
|
|
166
166
|
raiseNMI = () => {}
|