ac6502 1.0.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 (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +261 -0
  3. package/dist/components/CPU.js +1170 -0
  4. package/dist/components/CPU.js.map +1 -0
  5. package/dist/components/Cart.js +23 -0
  6. package/dist/components/Cart.js.map +1 -0
  7. package/dist/components/IO/Empty.js +19 -0
  8. package/dist/components/IO/Empty.js.map +1 -0
  9. package/dist/components/IO/GPIOAttachments/GPIOAttachment.js +71 -0
  10. package/dist/components/IO/GPIOAttachments/GPIOAttachment.js.map +1 -0
  11. package/dist/components/IO/GPIOAttachments/GPIOJoystickAttachment.js +90 -0
  12. package/dist/components/IO/GPIOAttachments/GPIOJoystickAttachment.js.map +1 -0
  13. package/dist/components/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.js +489 -0
  14. package/dist/components/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.js.map +1 -0
  15. package/dist/components/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.js +274 -0
  16. package/dist/components/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.js.map +1 -0
  17. package/dist/components/IO/GPIOCard.js +597 -0
  18. package/dist/components/IO/GPIOCard.js.map +1 -0
  19. package/dist/components/IO/InputBoard.js +19 -0
  20. package/dist/components/IO/InputBoard.js.map +1 -0
  21. package/dist/components/IO/LCDCard.js +19 -0
  22. package/dist/components/IO/LCDCard.js.map +1 -0
  23. package/dist/components/IO/RAMCard.js +63 -0
  24. package/dist/components/IO/RAMCard.js.map +1 -0
  25. package/dist/components/IO/RTCCard.js +483 -0
  26. package/dist/components/IO/RTCCard.js.map +1 -0
  27. package/dist/components/IO/SerialCard.js +282 -0
  28. package/dist/components/IO/SerialCard.js.map +1 -0
  29. package/dist/components/IO/SoundCard.js +620 -0
  30. package/dist/components/IO/SoundCard.js.map +1 -0
  31. package/dist/components/IO/StorageCard.js +428 -0
  32. package/dist/components/IO/StorageCard.js.map +1 -0
  33. package/dist/components/IO/VGACard.js +9 -0
  34. package/dist/components/IO/VGACard.js.map +1 -0
  35. package/dist/components/IO/VideoCard.js +623 -0
  36. package/dist/components/IO/VideoCard.js.map +1 -0
  37. package/dist/components/IO.js +3 -0
  38. package/dist/components/IO.js.map +1 -0
  39. package/dist/components/Machine.js +310 -0
  40. package/dist/components/Machine.js.map +1 -0
  41. package/dist/components/RAM.js +24 -0
  42. package/dist/components/RAM.js.map +1 -0
  43. package/dist/components/ROM.js +23 -0
  44. package/dist/components/ROM.js.map +1 -0
  45. package/dist/index.js +441 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/tests/CPU.test.js +1626 -0
  48. package/dist/tests/CPU.test.js.map +1 -0
  49. package/dist/tests/Cart.test.js +119 -0
  50. package/dist/tests/Cart.test.js.map +1 -0
  51. package/dist/tests/IO/GPIOAttachments/GPIOAttachment.test.js +339 -0
  52. package/dist/tests/IO/GPIOAttachments/GPIOAttachment.test.js.map +1 -0
  53. package/dist/tests/IO/GPIOAttachments/GPIOJoystickAttachment.test.js +126 -0
  54. package/dist/tests/IO/GPIOAttachments/GPIOJoystickAttachment.test.js.map +1 -0
  55. package/dist/tests/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.test.js +779 -0
  56. package/dist/tests/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.test.js.map +1 -0
  57. package/dist/tests/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.test.js +355 -0
  58. package/dist/tests/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.test.js.map +1 -0
  59. package/dist/tests/IO/GPIOCard.test.js +503 -0
  60. package/dist/tests/IO/GPIOCard.test.js.map +1 -0
  61. package/dist/tests/IO/RAMCard.test.js +229 -0
  62. package/dist/tests/IO/RAMCard.test.js.map +1 -0
  63. package/dist/tests/IO/RTCCard.test.js +177 -0
  64. package/dist/tests/IO/RTCCard.test.js.map +1 -0
  65. package/dist/tests/IO/SerialCard.test.js +423 -0
  66. package/dist/tests/IO/SerialCard.test.js.map +1 -0
  67. package/dist/tests/IO/SoundCard.test.js +528 -0
  68. package/dist/tests/IO/SoundCard.test.js.map +1 -0
  69. package/dist/tests/IO/StorageCard.test.js +647 -0
  70. package/dist/tests/IO/StorageCard.test.js.map +1 -0
  71. package/dist/tests/IO/VideoCard.test.js +549 -0
  72. package/dist/tests/IO/VideoCard.test.js.map +1 -0
  73. package/dist/tests/Machine.test.js +383 -0
  74. package/dist/tests/Machine.test.js.map +1 -0
  75. package/dist/tests/RAM.test.js +160 -0
  76. package/dist/tests/RAM.test.js.map +1 -0
  77. package/dist/tests/ROM.test.js +123 -0
  78. package/dist/tests/ROM.test.js.map +1 -0
  79. package/jest.config.cjs +9 -0
  80. package/package.json +43 -0
  81. package/src/components/CPU.ts +1371 -0
  82. package/src/components/Cart.ts +20 -0
  83. package/src/components/IO/GPIOAttachments/GPIOAttachment.ts +189 -0
  84. package/src/components/IO/GPIOAttachments/GPIOJoystickAttachment.ts +99 -0
  85. package/src/components/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.ts +465 -0
  86. package/src/components/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.ts +287 -0
  87. package/src/components/IO/GPIOCard.ts +677 -0
  88. package/src/components/IO/RAMCard.ts +68 -0
  89. package/src/components/IO/RTCCard.ts +518 -0
  90. package/src/components/IO/SerialCard.ts +335 -0
  91. package/src/components/IO/SoundCard.ts +711 -0
  92. package/src/components/IO/StorageCard.ts +473 -0
  93. package/src/components/IO/VideoCard.ts +730 -0
  94. package/src/components/IO.ts +11 -0
  95. package/src/components/Machine.ts +364 -0
  96. package/src/components/RAM.ts +23 -0
  97. package/src/components/ROM.ts +19 -0
  98. package/src/index.ts +474 -0
  99. package/src/tests/CPU.test.ts +2045 -0
  100. package/src/tests/Cart.test.ts +149 -0
  101. package/src/tests/IO/GPIOAttachments/GPIOAttachment.test.ts +413 -0
  102. package/src/tests/IO/GPIOAttachments/GPIOJoystickAttachment.test.ts +147 -0
  103. package/src/tests/IO/GPIOAttachments/GPIOKeyboardEncoderAttachment.test.ts +961 -0
  104. package/src/tests/IO/GPIOAttachments/GPIOKeyboardMatrixAttachment.test.ts +449 -0
  105. package/src/tests/IO/GPIOCard.test.ts +644 -0
  106. package/src/tests/IO/RAMCard.test.ts +284 -0
  107. package/src/tests/IO/RTCCard.test.ts +222 -0
  108. package/src/tests/IO/SerialCard.test.ts +530 -0
  109. package/src/tests/IO/SoundCard.test.ts +659 -0
  110. package/src/tests/IO/StorageCard.test.ts +787 -0
  111. package/src/tests/IO/VideoCard.test.ts +668 -0
  112. package/src/tests/Machine.test.ts +437 -0
  113. package/src/tests/RAM.test.ts +196 -0
  114. package/src/tests/ROM.test.ts +154 -0
  115. package/tsconfig.json +12 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CPU.test.js","sourceRoot":"","sources":["../../src/tests/CPU.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Cart_1 = require("../components/Cart");
4
+ describe('Cart', () => {
5
+ let cart;
6
+ beforeEach(() => {
7
+ cart = new Cart_1.Cart();
8
+ });
9
+ describe('Static Properties', () => {
10
+ test('should have correct START address', () => {
11
+ expect(Cart_1.Cart.START).toBe(0x8000);
12
+ });
13
+ test('should have correct END address', () => {
14
+ expect(Cart_1.Cart.END).toBe(0xFFFF);
15
+ });
16
+ test('should have correct CODE address', () => {
17
+ expect(Cart_1.Cart.CODE).toBe(0xC000);
18
+ });
19
+ test('should have correct SIZE', () => {
20
+ expect(Cart_1.Cart.SIZE).toBe(0x8000);
21
+ expect(Cart_1.Cart.SIZE).toBe(Cart_1.Cart.END - Cart_1.Cart.START + 1);
22
+ });
23
+ });
24
+ describe('Initialization', () => {
25
+ test('should create a new Cart instance', () => {
26
+ expect(cart).not.toBeNull();
27
+ expect(cart).toBeInstanceOf(Cart_1.Cart);
28
+ });
29
+ test('should initialize data array with correct size', () => {
30
+ expect(cart.data).toHaveLength(Cart_1.Cart.SIZE);
31
+ });
32
+ test('should initialize all data to 0x00', () => {
33
+ for (let i = 0; i < cart.data.length; i++) {
34
+ expect(cart.data[i]).toBe(0x00);
35
+ }
36
+ });
37
+ });
38
+ describe('read()', () => {
39
+ test('should read data from address', () => {
40
+ cart.data[0x0000] = 0x42;
41
+ expect(cart.read(0x0000)).toBe(0x42);
42
+ });
43
+ test('should read 0x00 from uninitialized address', () => {
44
+ expect(cart.read(0x1000)).toBe(0x00);
45
+ });
46
+ test('should read from first address', () => {
47
+ cart.data[0] = 0xAA;
48
+ expect(cart.read(0)).toBe(0xAA);
49
+ });
50
+ test('should read from last address', () => {
51
+ cart.data[Cart_1.Cart.SIZE - 1] = 0xBB;
52
+ expect(cart.read(Cart_1.Cart.SIZE - 1)).toBe(0xBB);
53
+ });
54
+ test('should read multiple different values', () => {
55
+ cart.data[0x1000] = 0x12;
56
+ cart.data[0x2000] = 0x34;
57
+ cart.data[0x3000] = 0x56;
58
+ expect(cart.read(0x1000)).toBe(0x12);
59
+ expect(cart.read(0x2000)).toBe(0x34);
60
+ expect(cart.read(0x3000)).toBe(0x56);
61
+ });
62
+ });
63
+ describe('load()', () => {
64
+ test('should load data array with correct size', () => {
65
+ const testData = new Array(Cart_1.Cart.SIZE).fill(0xFF);
66
+ cart.load(testData);
67
+ expect(cart.data).toBe(testData);
68
+ expect(cart.data[0]).toBe(0xFF);
69
+ expect(cart.data[Cart_1.Cart.SIZE - 1]).toBe(0xFF);
70
+ });
71
+ test('should not load data array with incorrect size (too small)', () => {
72
+ const originalData = [...cart.data];
73
+ const testData = new Array(Cart_1.Cart.SIZE - 1).fill(0xFF);
74
+ cart.load(testData);
75
+ expect(cart.data).toEqual(originalData);
76
+ expect(cart.data).not.toBe(testData);
77
+ });
78
+ test('should not load data array with incorrect size (too large)', () => {
79
+ const originalData = [...cart.data];
80
+ const testData = new Array(Cart_1.Cart.SIZE + 1).fill(0xFF);
81
+ cart.load(testData);
82
+ expect(cart.data).toEqual(originalData);
83
+ expect(cart.data).not.toBe(testData);
84
+ });
85
+ test('should not load empty array', () => {
86
+ const originalData = [...cart.data];
87
+ cart.load([]);
88
+ expect(cart.data).toEqual(originalData);
89
+ });
90
+ test('should load data with specific pattern', () => {
91
+ const testData = new Array(Cart_1.Cart.SIZE).fill(0x00).map((_, i) => i & 0xFF);
92
+ cart.load(testData);
93
+ for (let i = 0; i < 256; i++) {
94
+ expect(cart.read(i)).toBe(i);
95
+ }
96
+ });
97
+ test('should replace existing data when loading', () => {
98
+ // Set some initial data directly
99
+ cart.data[0x0000] = 0xAA;
100
+ cart.data[0x1000] = 0xBB;
101
+ cart.data[0x2000] = 0xCC;
102
+ // Load new data
103
+ const testData = new Array(Cart_1.Cart.SIZE).fill(0x55);
104
+ cart.load(testData);
105
+ expect(cart.read(0x0000)).toBe(0x55);
106
+ expect(cart.read(0x1000)).toBe(0x55);
107
+ expect(cart.read(0x2000)).toBe(0x55);
108
+ });
109
+ test('should allow reading loaded data', () => {
110
+ const testData = new Array(Cart_1.Cart.SIZE).fill(0x00);
111
+ testData[0x1234] = 0xAB;
112
+ testData[0x5678] = 0xCD;
113
+ cart.load(testData);
114
+ expect(cart.read(0x1234)).toBe(0xAB);
115
+ expect(cart.read(0x5678)).toBe(0xCD);
116
+ });
117
+ });
118
+ });
119
+ //# sourceMappingURL=Cart.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cart.test.js","sourceRoot":"","sources":["../../src/tests/Cart.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,339 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const GPIOAttachment_1 = require("../../../components/IO/GPIOAttachments/GPIOAttachment");
4
+ /**
5
+ * Concrete implementation of GPIOAttachmentBase for testing
6
+ */
7
+ class TestGPIOAttachment extends GPIOAttachment_1.GPIOAttachmentBase {
8
+ constructor(priority = 0, ca1Interrupt = false, ca2Interrupt = false, cb1Interrupt = false, cb2Interrupt = false) {
9
+ super(priority, ca1Interrupt, ca2Interrupt, cb1Interrupt, cb2Interrupt);
10
+ this.portAValue = 0xFF;
11
+ this.portBValue = 0xFF;
12
+ this.tickCount = 0;
13
+ this.writeAValue = 0;
14
+ this.writeBValue = 0;
15
+ }
16
+ readPortA(ddr, or) {
17
+ return this.portAValue;
18
+ }
19
+ readPortB(ddr, or) {
20
+ return this.portBValue;
21
+ }
22
+ writePortA(value, ddr) {
23
+ this.writeAValue = value;
24
+ }
25
+ writePortB(value, ddr) {
26
+ this.writeBValue = value;
27
+ }
28
+ tick(cpuFrequency) {
29
+ this.tickCount++;
30
+ }
31
+ // Expose protected members for testing
32
+ setCA1Interrupt(value) {
33
+ this.ca1Interrupt = value;
34
+ }
35
+ setCA2Interrupt(value) {
36
+ this.ca2Interrupt = value;
37
+ }
38
+ setCB1Interrupt(value) {
39
+ this.cb1Interrupt = value;
40
+ }
41
+ setCB2Interrupt(value) {
42
+ this.cb2Interrupt = value;
43
+ }
44
+ setEnabled(value) {
45
+ this.enabled = value;
46
+ }
47
+ }
48
+ describe('GPIOAttachmentBase', () => {
49
+ let attachment;
50
+ beforeEach(() => {
51
+ attachment = new TestGPIOAttachment();
52
+ });
53
+ describe('Initialization', () => {
54
+ it('should initialize with default priority 0', () => {
55
+ expect(attachment.getPriority()).toBe(0);
56
+ });
57
+ it('should initialize with custom priority', () => {
58
+ const customAttachment = new TestGPIOAttachment(5);
59
+ expect(customAttachment.getPriority()).toBe(5);
60
+ });
61
+ it('should initialize as enabled', () => {
62
+ expect(attachment.isEnabled()).toBe(true);
63
+ });
64
+ it('should initialize with no interrupts pending', () => {
65
+ expect(attachment.hasCA1Interrupt()).toBe(false);
66
+ expect(attachment.hasCA2Interrupt()).toBe(false);
67
+ expect(attachment.hasCB1Interrupt()).toBe(false);
68
+ expect(attachment.hasCB2Interrupt()).toBe(false);
69
+ });
70
+ it('should initialize with specified interrupt states', () => {
71
+ const interruptAttachment = new TestGPIOAttachment(0, true, true, true, true);
72
+ expect(interruptAttachment.hasCA1Interrupt()).toBe(true);
73
+ expect(interruptAttachment.hasCA2Interrupt()).toBe(true);
74
+ expect(interruptAttachment.hasCB1Interrupt()).toBe(true);
75
+ expect(interruptAttachment.hasCB2Interrupt()).toBe(true);
76
+ });
77
+ });
78
+ describe('Reset', () => {
79
+ it('should reset to enabled state', () => {
80
+ attachment.setEnabled(false);
81
+ attachment.reset();
82
+ expect(attachment.isEnabled()).toBe(true);
83
+ });
84
+ it('should clear all interrupt flags', () => {
85
+ attachment.setCA1Interrupt(true);
86
+ attachment.setCA2Interrupt(true);
87
+ attachment.setCB1Interrupt(true);
88
+ attachment.setCB2Interrupt(true);
89
+ attachment.reset();
90
+ expect(attachment.hasCA1Interrupt()).toBe(false);
91
+ expect(attachment.hasCA2Interrupt()).toBe(false);
92
+ expect(attachment.hasCB1Interrupt()).toBe(false);
93
+ expect(attachment.hasCB2Interrupt()).toBe(false);
94
+ });
95
+ it('should maintain priority after reset', () => {
96
+ const priorityAttachment = new TestGPIOAttachment(10);
97
+ priorityAttachment.reset();
98
+ expect(priorityAttachment.getPriority()).toBe(10);
99
+ });
100
+ });
101
+ describe('Priority', () => {
102
+ it('should return correct priority value', () => {
103
+ const lowPriority = new TestGPIOAttachment(0);
104
+ const highPriority = new TestGPIOAttachment(10);
105
+ expect(lowPriority.getPriority()).toBe(0);
106
+ expect(highPriority.getPriority()).toBe(10);
107
+ });
108
+ it('should support negative priority values', () => {
109
+ const negativePriority = new TestGPIOAttachment(-5);
110
+ expect(negativePriority.getPriority()).toBe(-5);
111
+ });
112
+ });
113
+ describe('Enable/Disable', () => {
114
+ it('should start enabled', () => {
115
+ expect(attachment.isEnabled()).toBe(true);
116
+ });
117
+ it('should be disableable', () => {
118
+ attachment.setEnabled(false);
119
+ expect(attachment.isEnabled()).toBe(false);
120
+ });
121
+ it('should be re-enableable', () => {
122
+ attachment.setEnabled(false);
123
+ attachment.setEnabled(true);
124
+ expect(attachment.isEnabled()).toBe(true);
125
+ });
126
+ });
127
+ describe('Tick', () => {
128
+ it('should call tick method', () => {
129
+ attachment.tick(1000000);
130
+ expect(attachment.tickCount).toBe(1);
131
+ });
132
+ it('should call tick multiple times', () => {
133
+ attachment.tick(1000000);
134
+ attachment.tick(1000000);
135
+ attachment.tick(1000000);
136
+ expect(attachment.tickCount).toBe(3);
137
+ });
138
+ it('should accept different CPU frequencies', () => {
139
+ attachment.tick(1000000);
140
+ attachment.tick(2000000);
141
+ attachment.tick(4000000);
142
+ expect(attachment.tickCount).toBe(3);
143
+ });
144
+ });
145
+ describe('Port Reading', () => {
146
+ it('should read from Port A', () => {
147
+ attachment.portAValue = 0xAA;
148
+ expect(attachment.readPortA(0xFF, 0x00)).toBe(0xAA);
149
+ });
150
+ it('should read from Port B', () => {
151
+ attachment.portBValue = 0x55;
152
+ expect(attachment.readPortB(0xFF, 0x00)).toBe(0x55);
153
+ });
154
+ it('should handle DDR parameter in Port A read', () => {
155
+ attachment.portAValue = 0xFF;
156
+ expect(attachment.readPortA(0x00, 0x00)).toBe(0xFF);
157
+ expect(attachment.readPortA(0xFF, 0x00)).toBe(0xFF);
158
+ });
159
+ it('should handle OR parameter in Port A read', () => {
160
+ attachment.portAValue = 0xFF;
161
+ expect(attachment.readPortA(0xFF, 0x00)).toBe(0xFF);
162
+ expect(attachment.readPortA(0xFF, 0xFF)).toBe(0xFF);
163
+ });
164
+ });
165
+ describe('Port Writing', () => {
166
+ it('should write to Port A', () => {
167
+ attachment.writePortA(0xAA, 0xFF);
168
+ expect(attachment.writeAValue).toBe(0xAA);
169
+ });
170
+ it('should write to Port B', () => {
171
+ attachment.writePortB(0x55, 0xFF);
172
+ expect(attachment.writeBValue).toBe(0x55);
173
+ });
174
+ it('should handle DDR parameter in Port A write', () => {
175
+ attachment.writePortA(0xAA, 0x0F);
176
+ expect(attachment.writeAValue).toBe(0xAA);
177
+ });
178
+ it('should handle DDR parameter in Port B write', () => {
179
+ attachment.writePortB(0x55, 0xF0);
180
+ expect(attachment.writeBValue).toBe(0x55);
181
+ });
182
+ it('should handle multiple writes to same port', () => {
183
+ attachment.writePortA(0xAA, 0xFF);
184
+ attachment.writePortA(0x55, 0xFF);
185
+ expect(attachment.writeAValue).toBe(0x55);
186
+ });
187
+ });
188
+ describe('Interrupt Management - CA1', () => {
189
+ it('should check CA1 interrupt flag', () => {
190
+ expect(attachment.hasCA1Interrupt()).toBe(false);
191
+ attachment.setCA1Interrupt(true);
192
+ expect(attachment.hasCA1Interrupt()).toBe(true);
193
+ });
194
+ it('should clear CA1 interrupt', () => {
195
+ attachment.setCA1Interrupt(true);
196
+ attachment.clearInterrupts(true, false, false, false);
197
+ expect(attachment.hasCA1Interrupt()).toBe(false);
198
+ });
199
+ it('should not clear CA1 when clearing other interrupts', () => {
200
+ attachment.setCA1Interrupt(true);
201
+ attachment.clearInterrupts(false, true, true, true);
202
+ expect(attachment.hasCA1Interrupt()).toBe(true);
203
+ });
204
+ });
205
+ describe('Interrupt Management - CA2', () => {
206
+ it('should check CA2 interrupt flag', () => {
207
+ expect(attachment.hasCA2Interrupt()).toBe(false);
208
+ attachment.setCA2Interrupt(true);
209
+ expect(attachment.hasCA2Interrupt()).toBe(true);
210
+ });
211
+ it('should clear CA2 interrupt', () => {
212
+ attachment.setCA2Interrupt(true);
213
+ attachment.clearInterrupts(false, true, false, false);
214
+ expect(attachment.hasCA2Interrupt()).toBe(false);
215
+ });
216
+ it('should not clear CA2 when clearing other interrupts', () => {
217
+ attachment.setCA2Interrupt(true);
218
+ attachment.clearInterrupts(true, false, true, true);
219
+ expect(attachment.hasCA2Interrupt()).toBe(true);
220
+ });
221
+ });
222
+ describe('Interrupt Management - CB1', () => {
223
+ it('should check CB1 interrupt flag', () => {
224
+ expect(attachment.hasCB1Interrupt()).toBe(false);
225
+ attachment.setCB1Interrupt(true);
226
+ expect(attachment.hasCB1Interrupt()).toBe(true);
227
+ });
228
+ it('should clear CB1 interrupt', () => {
229
+ attachment.setCB1Interrupt(true);
230
+ attachment.clearInterrupts(false, false, true, false);
231
+ expect(attachment.hasCB1Interrupt()).toBe(false);
232
+ });
233
+ it('should not clear CB1 when clearing other interrupts', () => {
234
+ attachment.setCB1Interrupt(true);
235
+ attachment.clearInterrupts(true, true, false, true);
236
+ expect(attachment.hasCB1Interrupt()).toBe(true);
237
+ });
238
+ });
239
+ describe('Interrupt Management - CB2', () => {
240
+ it('should check CB2 interrupt flag', () => {
241
+ expect(attachment.hasCB2Interrupt()).toBe(false);
242
+ attachment.setCB2Interrupt(true);
243
+ expect(attachment.hasCB2Interrupt()).toBe(true);
244
+ });
245
+ it('should clear CB2 interrupt', () => {
246
+ attachment.setCB2Interrupt(true);
247
+ attachment.clearInterrupts(false, false, false, true);
248
+ expect(attachment.hasCB2Interrupt()).toBe(false);
249
+ });
250
+ it('should not clear CB2 when clearing other interrupts', () => {
251
+ attachment.setCB2Interrupt(true);
252
+ attachment.clearInterrupts(true, true, true, false);
253
+ expect(attachment.hasCB2Interrupt()).toBe(true);
254
+ });
255
+ });
256
+ describe('Interrupt Management - Multiple', () => {
257
+ it('should clear multiple interrupts at once', () => {
258
+ attachment.setCA1Interrupt(true);
259
+ attachment.setCA2Interrupt(true);
260
+ attachment.setCB1Interrupt(true);
261
+ attachment.setCB2Interrupt(true);
262
+ attachment.clearInterrupts(true, true, false, false);
263
+ expect(attachment.hasCA1Interrupt()).toBe(false);
264
+ expect(attachment.hasCA2Interrupt()).toBe(false);
265
+ expect(attachment.hasCB1Interrupt()).toBe(true);
266
+ expect(attachment.hasCB2Interrupt()).toBe(true);
267
+ });
268
+ it('should clear all interrupts', () => {
269
+ attachment.setCA1Interrupt(true);
270
+ attachment.setCA2Interrupt(true);
271
+ attachment.setCB1Interrupt(true);
272
+ attachment.setCB2Interrupt(true);
273
+ attachment.clearInterrupts(true, true, true, true);
274
+ expect(attachment.hasCA1Interrupt()).toBe(false);
275
+ expect(attachment.hasCA2Interrupt()).toBe(false);
276
+ expect(attachment.hasCB1Interrupt()).toBe(false);
277
+ expect(attachment.hasCB2Interrupt()).toBe(false);
278
+ });
279
+ it('should handle clearing when no interrupts are set', () => {
280
+ attachment.clearInterrupts(true, true, true, true);
281
+ expect(attachment.hasCA1Interrupt()).toBe(false);
282
+ expect(attachment.hasCA2Interrupt()).toBe(false);
283
+ expect(attachment.hasCB1Interrupt()).toBe(false);
284
+ expect(attachment.hasCB2Interrupt()).toBe(false);
285
+ });
286
+ });
287
+ describe('Control Lines', () => {
288
+ it('should call updateControlLines', () => {
289
+ // Default implementation does nothing, just verify it doesn't crash
290
+ expect(() => {
291
+ attachment.updateControlLines(true, false, true, false);
292
+ }).not.toThrow();
293
+ });
294
+ it('should accept all control line combinations', () => {
295
+ expect(() => {
296
+ attachment.updateControlLines(false, false, false, false);
297
+ attachment.updateControlLines(true, true, true, true);
298
+ attachment.updateControlLines(true, false, true, false);
299
+ attachment.updateControlLines(false, true, false, true);
300
+ }).not.toThrow();
301
+ });
302
+ });
303
+ describe('Edge Cases', () => {
304
+ it('should handle rapid enable/disable cycles', () => {
305
+ for (let i = 0; i < 100; i++) {
306
+ attachment.setEnabled(i % 2 === 0);
307
+ }
308
+ // Last iteration (i=99) sets enabled to false (99 % 2 !== 0)
309
+ expect(attachment.isEnabled()).toBe(false);
310
+ });
311
+ it('should handle rapid interrupt set/clear cycles', () => {
312
+ for (let i = 0; i < 100; i++) {
313
+ attachment.setCA1Interrupt(true);
314
+ attachment.clearInterrupts(true, false, false, false);
315
+ }
316
+ expect(attachment.hasCA1Interrupt()).toBe(false);
317
+ });
318
+ it('should handle reset during active interrupts', () => {
319
+ attachment.setCA1Interrupt(true);
320
+ attachment.setCA2Interrupt(true);
321
+ attachment.setCB1Interrupt(true);
322
+ attachment.setCB2Interrupt(true);
323
+ attachment.reset();
324
+ expect(attachment.hasCA1Interrupt()).toBe(false);
325
+ expect(attachment.hasCA2Interrupt()).toBe(false);
326
+ expect(attachment.hasCB1Interrupt()).toBe(false);
327
+ expect(attachment.hasCB2Interrupt()).toBe(false);
328
+ });
329
+ it('should maintain state across multiple operations', () => {
330
+ attachment.setCA1Interrupt(true);
331
+ attachment.tick(1000000);
332
+ attachment.writePortA(0xAA, 0xFF);
333
+ expect(attachment.hasCA1Interrupt()).toBe(true);
334
+ expect(attachment.tickCount).toBe(1);
335
+ expect(attachment.writeAValue).toBe(0xAA);
336
+ });
337
+ });
338
+ });
339
+ //# sourceMappingURL=GPIOAttachment.test.js.map