ac6502 1.16.0 → 1.16.2

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.
@@ -29,6 +29,9 @@ class ACIA {
29
29
  this.framingError = false;
30
30
  this.irqFlag = false;
31
31
  this.echoMode = false;
32
+ // Receive queue — buffers incoming bytes from host serial port
33
+ // and delivers them one at a time via tick() to the single-byte rxRegister
34
+ this.rxQueue = [];
32
35
  }
33
36
  /**
34
37
  * Read from ACIA register
@@ -160,8 +163,19 @@ class ACIA {
160
163
  if ((this.commandRegister & 0x0C) === 0x04) {
161
164
  this.irqFlag = true;
162
165
  }
163
- // Echo mode: received data echoed back
164
- // (echo of transmitted data is handled in onData)
166
+ }
167
+ // Deliver next queued byte to rxRegister when empty
168
+ if (!this.rxRegFull && this.rxQueue.length > 0) {
169
+ this.rxRegister = this.rxQueue.shift();
170
+ this.rxRegFull = true;
171
+ // Trigger receive IRQ if enabled (bit 1 = 0 means enabled, active low)
172
+ if (!(this.commandRegister & 0x02)) {
173
+ this.irqFlag = true;
174
+ }
175
+ // Echo mode: automatically transmit received data
176
+ if (this.echoMode && this.transmit) {
177
+ this.transmit(this.rxRegister);
178
+ }
165
179
  }
166
180
  // Return IRQ status
167
181
  return this.irqFlag ? 0x80 : 0;
@@ -182,25 +196,13 @@ class ACIA {
182
196
  this.framingError = false;
183
197
  this.irqFlag = false;
184
198
  this.echoMode = false;
199
+ this.rxQueue = [];
185
200
  }
186
201
  /**
187
- * Receive data from external source
202
+ * Receive data from external source — queues the byte for delivery via tick()
188
203
  */
189
204
  onData(data) {
190
- if (this.rxRegFull) {
191
- // Overrun: new data arrived before the previous byte was read
192
- this.overrun = true;
193
- }
194
- this.rxRegister = data & 0xFF;
195
- this.rxRegFull = true;
196
- // Trigger receive IRQ if enabled (bit 1 = 0 means enabled, active low)
197
- if (!(this.commandRegister & 0x02)) {
198
- this.irqFlag = true;
199
- }
200
- // Echo mode: automatically transmit received data
201
- if (this.echoMode && this.transmit) {
202
- this.transmit(data & 0xFF);
203
- }
205
+ this.rxQueue.push(data & 0xFF);
204
206
  }
205
207
  }
206
208
  exports.ACIA = ACIA;
@@ -1 +1 @@
1
- {"version":3,"file":"ACIA.js","sourceRoot":"","sources":["../../../src/components/IO/ACIA.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ACIA.js","sourceRoot":"","sources":["../../../src/components/IO/ACIA.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ const serialport_1 = require("serialport");
20
20
  const sdl_1 = __importDefault(require("@kmamal/sdl"));
21
21
  const promises_1 = require("fs/promises");
22
22
  const fs_1 = require("fs");
23
- const VERSION = '1.16.0';
23
+ const VERSION = '1.16.2';
24
24
  const WIDTH = 320;
25
25
  const HEIGHT = 240;
26
26
  // Audio constants
@@ -262,7 +262,7 @@ class Emulator {
262
262
  }
263
263
  setupWindow() {
264
264
  this.window = sdl_1.default.video.createWindow({
265
- title: '6502 Emulator (COB)',
265
+ title: '6502 Emulator',
266
266
  width: WIDTH * this.machine.scale,
267
267
  height: HEIGHT * this.machine.scale,
268
268
  accelerated: true,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -29,17 +29,20 @@ describe('ACIA (6551 ACIA)', () => {
29
29
  });
30
30
  it('should read data from receive buffer', () => {
31
31
  serialCard.onData(0x42);
32
+ serialCard.tick(1000000);
32
33
  const data = serialCard.read(0x00);
33
34
  expect(data).toBe(0x42);
34
35
  });
35
36
  it('should mask data to 8 bits', () => {
36
37
  serialCard.write(0x00, 0x1FF); // More than 8 bits
37
38
  serialCard.onData(0x1FF);
39
+ serialCard.tick(1000000);
38
40
  const data = serialCard.read(0x00);
39
41
  expect(data).toBe(0xFF);
40
42
  });
41
43
  it('should return last received data if no new data available', () => {
42
44
  serialCard.onData(0x42);
45
+ serialCard.tick(1000000);
43
46
  let data = serialCard.read(0x00); // Read the data
44
47
  data = serialCard.read(0x00); // Read again with empty buffer
45
48
  // Should return last value received
@@ -49,11 +52,13 @@ describe('ACIA (6551 ACIA)', () => {
49
52
  describe('Status Register (0x01)', () => {
50
53
  it('should report Receive Data Register Full when data available', () => {
51
54
  serialCard.onData(0x50);
55
+ serialCard.tick(1000000);
52
56
  const status = serialCard.read(0x01);
53
57
  expect(status & 0x08).toBe(0x08); // RDRF bit set
54
58
  });
55
59
  it('should clear RDRF after reading data', () => {
56
60
  serialCard.onData(0x50);
61
+ serialCard.tick(1000000);
57
62
  serialCard.read(0x00); // Read the data
58
63
  const status = serialCard.read(0x01);
59
64
  expect(status & 0x08).toBe(0); // RDRF bit clear
@@ -109,12 +114,14 @@ describe('ACIA (6551 ACIA)', () => {
109
114
  it('should enable receive IRQ when RIIE bit (bit 1) is clear', () => {
110
115
  serialCard.write(0x02, 0x04); // bit 1 = 0: receive IRQ enabled
111
116
  serialCard.onData(0x42);
117
+ serialCard.tick(1000000);
112
118
  const status = serialCard.read(0x01);
113
119
  expect(status & 0x80).toBe(0x80); // IRQ flag set in status
114
120
  });
115
121
  it('should disable receive IRQ when RIIE bit (bit 1) is set', () => {
116
122
  serialCard.write(0x02, 0x02); // RIIE=1: receive IRQ disabled (R6551: bit1=1 disables)
117
123
  serialCard.onData(0x42);
124
+ serialCard.tick(1000000);
118
125
  const status = serialCard.read(0x01);
119
126
  expect(status & 0x80).toBe(0); // IRQ flag not set
120
127
  });
@@ -123,7 +130,8 @@ describe('ACIA (6551 ACIA)', () => {
123
130
  serialCard.transmit = mockTransmit;
124
131
  serialCard.write(0x02, 0x10); // REM=1: echo mode enabled (bit 4 per 6551 spec)
125
132
  serialCard.onData(0x42);
126
- // In echo mode, received data is echoed immediately via transmit callback
133
+ serialCard.tick(1000000);
134
+ // In echo mode, received data is echoed when delivered to rxRegister via tick
127
135
  expect(mockTransmit).toHaveBeenCalledWith(0x42);
128
136
  });
129
137
  });
@@ -175,23 +183,33 @@ describe('ACIA (6551 ACIA)', () => {
175
183
  describe('Data Reception', () => {
176
184
  it('should receive data from external source', () => {
177
185
  serialCard.onData(0x55);
186
+ serialCard.tick(1000000);
178
187
  const data = serialCard.read(0x00);
179
188
  expect(data).toBe(0x55);
180
189
  });
181
190
  it('should set RDRF flag when data received', () => {
182
191
  serialCard.onData(0x55);
192
+ serialCard.tick(1000000);
183
193
  const status = serialCard.read(0x01);
184
194
  expect(status & 0x08).toBe(0x08);
185
195
  });
186
- it('should handle multiple received bytes (overrun)', () => {
196
+ it('should queue multiple received bytes and deliver them in order', () => {
187
197
  serialCard.onData(0x41); // 'A'
188
- serialCard.onData(0x42); // 'B' - overwrites, causes overrun
189
- serialCard.onData(0x43); // 'C' - overwrites again
190
- // Single-byte RX: only last byte remains
198
+ serialCard.onData(0x42); // 'B'
199
+ serialCard.onData(0x43); // 'C'
200
+ // First byte delivered on tick
201
+ serialCard.tick(1000000);
202
+ expect(serialCard.read(0x00)).toBe(0x41);
203
+ // Second byte delivered on next tick after read
204
+ serialCard.tick(1000000);
205
+ expect(serialCard.read(0x00)).toBe(0x42);
206
+ // Third byte
207
+ serialCard.tick(1000000);
191
208
  expect(serialCard.read(0x00)).toBe(0x43);
192
209
  });
193
210
  it('should mask received data to 8 bits', () => {
194
211
  serialCard.onData(0x1FF);
212
+ serialCard.tick(1000000);
195
213
  const data = serialCard.read(0x00);
196
214
  expect(data).toBe(0xFF);
197
215
  });
@@ -200,6 +218,7 @@ describe('ACIA (6551 ACIA)', () => {
200
218
  it('should set IRQ flag on receive when interrupt enabled', () => {
201
219
  serialCard.write(0x02, 0x00); // bit 1 = 0: receive IRQ enabled
202
220
  serialCard.onData(0x42);
221
+ serialCard.tick(1000000);
203
222
  expect(serialCard.read(0x01) & 0x80).toBe(0x80); // IRQ flag set
204
223
  });
205
224
  it('should return IRQ status from tick on transmit complete when enabled', () => {
@@ -216,36 +235,52 @@ describe('ACIA (6551 ACIA)', () => {
216
235
  it('should not set IRQ flag on receive when disabled', () => {
217
236
  serialCard.write(0x02, 0x02); // RIIE=1: receive IRQ disabled
218
237
  serialCard.onData(0x42);
238
+ serialCard.tick(1000000);
219
239
  const status = serialCard.read(0x01);
220
240
  expect(status & 0x80).toBe(0); // IRQ flag not set
221
241
  });
222
242
  it('should clear IRQ flag when data is read', () => {
223
243
  serialCard.write(0x02, 0x00); // Enable receive IRQ
224
244
  serialCard.onData(0x42);
245
+ serialCard.tick(1000000);
225
246
  expect(serialCard.read(0x01) & 0x80).toBe(0x80); // IRQ set
226
247
  serialCard.read(0x00); // Read data
227
248
  expect(serialCard.read(0x01) & 0x80).toBe(0); // IRQ cleared
228
249
  });
229
250
  });
230
- describe('Overrun Handling', () => {
231
- it('should detect overrun condition', () => {
251
+ describe('Receive Queue', () => {
252
+ it('should buffer multiple bytes and deliver in order', () => {
253
+ serialCard.onData(0x42);
254
+ serialCard.onData(0x43);
255
+ // First byte delivered on tick
256
+ serialCard.tick(1000000);
257
+ expect(serialCard.read(0x01) & 0x08).toBe(0x08); // RDRF set
258
+ expect(serialCard.read(0x00)).toBe(0x42);
259
+ // Second byte delivered on next tick
260
+ serialCard.tick(1000000);
261
+ expect(serialCard.read(0x01) & 0x08).toBe(0x08); // RDRF set
262
+ expect(serialCard.read(0x00)).toBe(0x43);
263
+ // Queue empty
264
+ serialCard.tick(1000000);
265
+ expect(serialCard.read(0x01) & 0x08).toBe(0); // RDRF clear
266
+ });
267
+ it('should not deliver next byte until current is read', () => {
232
268
  serialCard.onData(0x42);
233
- const statusBefore = serialCard.read(0x01);
234
- // Send another byte before first is read
235
269
  serialCard.onData(0x43);
236
- const statusAfter = serialCard.read(0x01);
237
- expect(statusAfter & 0x04).toBe(0x04); // Overrun flag set
270
+ serialCard.tick(1000000); // delivers 0x42
271
+ serialCard.tick(1000000); // rxRegFull still true, 0x43 stays in queue
272
+ serialCard.tick(1000000); // still waiting
273
+ expect(serialCard.read(0x00)).toBe(0x42); // first byte still there
274
+ serialCard.tick(1000000); // NOW delivers 0x43
275
+ expect(serialCard.read(0x00)).toBe(0x43);
238
276
  });
239
- it('should clear overrun when data register is read', () => {
277
+ it('should clear queue on reset', () => {
240
278
  serialCard.onData(0x42);
241
- serialCard.onData(0x43); // Cause overrun (rx still full)
242
- // Overrun flag is set
243
- const statusBefore = serialCard.read(0x01);
244
- expect(statusBefore & 0x04).toBe(0x04);
245
- // Reading data clears overrun
246
- serialCard.read(0x00);
247
- const statusAfter = serialCard.read(0x01);
248
- expect(statusAfter & 0x04).toBe(0);
279
+ serialCard.onData(0x43);
280
+ serialCard.onData(0x44);
281
+ serialCard.reset(true);
282
+ serialCard.tick(1000000);
283
+ expect(serialCard.read(0x01) & 0x08).toBe(0); // RDRF clear queue was emptied
249
284
  });
250
285
  });
251
286
  describe('Echo Mode', () => {
@@ -254,7 +289,8 @@ describe('ACIA (6551 ACIA)', () => {
254
289
  serialCard.transmit = mockTransmit;
255
290
  serialCard.write(0x02, 0x10); // REM=1: echo mode enabled (bit 4 per 6551 spec)
256
291
  serialCard.onData(0x42);
257
- // Echo happens immediately in onData via transmit callback
292
+ serialCard.tick(1000000);
293
+ // Echo happens when byte is delivered from queue to rxRegister in tick
258
294
  expect(mockTransmit).toHaveBeenCalledWith(0x42);
259
295
  });
260
296
  it('should not echo when echo mode disabled', () => {
@@ -262,6 +298,7 @@ describe('ACIA (6551 ACIA)', () => {
262
298
  serialCard.transmit = mockTransmit;
263
299
  serialCard.write(0x02, 0x00); // Echo mode disabled
264
300
  serialCard.onData(0x42);
301
+ serialCard.tick(1000000);
265
302
  expect(mockTransmit).not.toHaveBeenCalled();
266
303
  });
267
304
  it('should not echo data through TX register (echoes directly)', () => {
@@ -269,6 +306,7 @@ describe('ACIA (6551 ACIA)', () => {
269
306
  serialCard.transmit = mockTransmit;
270
307
  serialCard.write(0x02, 0x10); // Echo mode enabled
271
308
  serialCard.onData(0x42);
309
+ serialCard.tick(1000000);
272
310
  // Echo goes directly through transmit callback, TDRE stays set
273
311
  const status = serialCard.read(0x01);
274
312
  expect(status & 0x10).toBe(0x10); // TDRE set (TX register not used for echo)
@@ -294,6 +332,7 @@ describe('ACIA (6551 ACIA)', () => {
294
332
  serialCard.write(0x00, 0x43);
295
333
  serialCard.write(0x02, 0xFF); // Set command register
296
334
  serialCard.onData(0x44);
335
+ serialCard.tick(1000000);
297
336
  // Now perform programmed reset
298
337
  serialCard.write(0x01, 0x00); // Programmed reset via status register write
299
338
  const status = serialCard.read(0x01);
@@ -306,6 +345,7 @@ describe('ACIA (6551 ACIA)', () => {
306
345
  serialCard.write(0x02, 0xFF);
307
346
  serialCard.write(0x03, 0xFF);
308
347
  serialCard.onData(0x42);
348
+ serialCard.tick(1000000);
309
349
  serialCard.reset(true);
310
350
  expect(serialCard.read(0x01) & 0x10).toBe(0x10); // TDRE set
311
351
  expect(serialCard.read(0x01) & 0x08).toBe(0); // RDRF clear
@@ -319,6 +359,7 @@ describe('ACIA (6551 ACIA)', () => {
319
359
  });
320
360
  it('should clear receive buffer on reset', () => {
321
361
  serialCard.onData(0x42);
362
+ serialCard.tick(1000000);
322
363
  serialCard.reset(true);
323
364
  expect(serialCard.read(0x01) & 0x08).toBe(0); // RDRF should be clear (buffer empty)
324
365
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ACIA.test.js","sourceRoot":"","sources":["../../../src/tests/IO/ACIA.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ACIA.test.js","sourceRoot":"","sources":["../../../src/tests/IO/ACIA.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ac6502",
3
- "version": "1.16.0",
3
+ "version": "1.16.2",
4
4
  "description": "Emulator for the A.C. Wright 6502 project",
5
5
  "main": "dist/lib.js",
6
6
  "types": "dist/lib.d.ts",
@@ -32,6 +32,10 @@ export class ACIA implements IO {
32
32
  private irqFlag: boolean = false
33
33
  private echoMode: boolean = false
34
34
 
35
+ // Receive queue — buffers incoming bytes from host serial port
36
+ // and delivers them one at a time via tick() to the single-byte rxRegister
37
+ private rxQueue: number[] = []
38
+
35
39
  /**
36
40
  * Read from ACIA register
37
41
  */
@@ -188,9 +192,22 @@ export class ACIA implements IO {
188
192
  if ((this.commandRegister & 0x0C) === 0x04) {
189
193
  this.irqFlag = true
190
194
  }
195
+ }
191
196
 
192
- // Echo mode: received data echoed back
193
- // (echo of transmitted data is handled in onData)
197
+ // Deliver next queued byte to rxRegister when empty
198
+ if (!this.rxRegFull && this.rxQueue.length > 0) {
199
+ this.rxRegister = this.rxQueue.shift()!
200
+ this.rxRegFull = true
201
+
202
+ // Trigger receive IRQ if enabled (bit 1 = 0 means enabled, active low)
203
+ if (!(this.commandRegister & 0x02)) {
204
+ this.irqFlag = true
205
+ }
206
+
207
+ // Echo mode: automatically transmit received data
208
+ if (this.echoMode && this.transmit) {
209
+ this.transmit(this.rxRegister)
210
+ }
194
211
  }
195
212
 
196
213
  // Return IRQ status
@@ -214,28 +231,13 @@ export class ACIA implements IO {
214
231
  this.framingError = false
215
232
  this.irqFlag = false
216
233
  this.echoMode = false
234
+ this.rxQueue = []
217
235
  }
218
236
 
219
237
  /**
220
- * Receive data from external source
238
+ * Receive data from external source — queues the byte for delivery via tick()
221
239
  */
222
240
  onData(data: number): void {
223
- if (this.rxRegFull) {
224
- // Overrun: new data arrived before the previous byte was read
225
- this.overrun = true
226
- }
227
-
228
- this.rxRegister = data & 0xFF
229
- this.rxRegFull = true
230
-
231
- // Trigger receive IRQ if enabled (bit 1 = 0 means enabled, active low)
232
- if (!(this.commandRegister & 0x02)) {
233
- this.irqFlag = true
234
- }
235
-
236
- // Echo mode: automatically transmit received data
237
- if (this.echoMode && this.transmit) {
238
- this.transmit(data & 0xFF)
239
- }
241
+ this.rxQueue.push(data & 0xFF)
240
242
  }
241
243
  }
package/src/index.ts CHANGED
@@ -12,7 +12,7 @@ import sdl from '@kmamal/sdl'
12
12
  import { readFile, writeFile } from 'fs/promises'
13
13
  import { existsSync } from 'fs'
14
14
 
15
- const VERSION = '1.16.0'
15
+ const VERSION = '1.16.2'
16
16
  const WIDTH = 320
17
17
  const HEIGHT = 240
18
18
 
@@ -287,7 +287,7 @@ class Emulator {
287
287
 
288
288
  private setupWindow(): void {
289
289
  this.window = sdl.video.createWindow({
290
- title: '6502 Emulator (COB)',
290
+ title: '6502 Emulator',
291
291
  width: WIDTH * this.machine.scale,
292
292
  height: HEIGHT * this.machine.scale,
293
293
  accelerated: true,
@@ -34,6 +34,7 @@ describe('ACIA (6551 ACIA)', () => {
34
34
 
35
35
  it('should read data from receive buffer', () => {
36
36
  serialCard.onData(0x42)
37
+ serialCard.tick(1000000)
37
38
  const data = serialCard.read(0x00)
38
39
  expect(data).toBe(0x42)
39
40
  })
@@ -41,12 +42,14 @@ describe('ACIA (6551 ACIA)', () => {
41
42
  it('should mask data to 8 bits', () => {
42
43
  serialCard.write(0x00, 0x1FF) // More than 8 bits
43
44
  serialCard.onData(0x1FF)
45
+ serialCard.tick(1000000)
44
46
  const data = serialCard.read(0x00)
45
47
  expect(data).toBe(0xFF)
46
48
  })
47
49
 
48
50
  it('should return last received data if no new data available', () => {
49
51
  serialCard.onData(0x42)
52
+ serialCard.tick(1000000)
50
53
  let data = serialCard.read(0x00) // Read the data
51
54
  data = serialCard.read(0x00) // Read again with empty buffer
52
55
  // Should return last value received
@@ -57,12 +60,14 @@ describe('ACIA (6551 ACIA)', () => {
57
60
  describe('Status Register (0x01)', () => {
58
61
  it('should report Receive Data Register Full when data available', () => {
59
62
  serialCard.onData(0x50)
63
+ serialCard.tick(1000000)
60
64
  const status = serialCard.read(0x01)
61
65
  expect(status & 0x08).toBe(0x08) // RDRF bit set
62
66
  })
63
67
 
64
68
  it('should clear RDRF after reading data', () => {
65
69
  serialCard.onData(0x50)
70
+ serialCard.tick(1000000)
66
71
  serialCard.read(0x00) // Read the data
67
72
  const status = serialCard.read(0x01)
68
73
  expect(status & 0x08).toBe(0) // RDRF bit clear
@@ -130,6 +135,7 @@ describe('ACIA (6551 ACIA)', () => {
130
135
  it('should enable receive IRQ when RIIE bit (bit 1) is clear', () => {
131
136
  serialCard.write(0x02, 0x04) // bit 1 = 0: receive IRQ enabled
132
137
  serialCard.onData(0x42)
138
+ serialCard.tick(1000000)
133
139
 
134
140
  const status = serialCard.read(0x01)
135
141
  expect(status & 0x80).toBe(0x80) // IRQ flag set in status
@@ -138,6 +144,7 @@ describe('ACIA (6551 ACIA)', () => {
138
144
  it('should disable receive IRQ when RIIE bit (bit 1) is set', () => {
139
145
  serialCard.write(0x02, 0x02) // RIIE=1: receive IRQ disabled (R6551: bit1=1 disables)
140
146
  serialCard.onData(0x42)
147
+ serialCard.tick(1000000)
141
148
 
142
149
  const status = serialCard.read(0x01)
143
150
  expect(status & 0x80).toBe(0) // IRQ flag not set
@@ -149,8 +156,9 @@ describe('ACIA (6551 ACIA)', () => {
149
156
 
150
157
  serialCard.write(0x02, 0x10) // REM=1: echo mode enabled (bit 4 per 6551 spec)
151
158
  serialCard.onData(0x42)
159
+ serialCard.tick(1000000)
152
160
 
153
- // In echo mode, received data is echoed immediately via transmit callback
161
+ // In echo mode, received data is echoed when delivered to rxRegister via tick
154
162
  expect(mockTransmit).toHaveBeenCalledWith(0x42)
155
163
  })
156
164
  })
@@ -218,27 +226,39 @@ describe('ACIA (6551 ACIA)', () => {
218
226
  describe('Data Reception', () => {
219
227
  it('should receive data from external source', () => {
220
228
  serialCard.onData(0x55)
229
+ serialCard.tick(1000000)
221
230
  const data = serialCard.read(0x00)
222
231
  expect(data).toBe(0x55)
223
232
  })
224
233
 
225
234
  it('should set RDRF flag when data received', () => {
226
235
  serialCard.onData(0x55)
236
+ serialCard.tick(1000000)
227
237
  const status = serialCard.read(0x01)
228
238
  expect(status & 0x08).toBe(0x08)
229
239
  })
230
240
 
231
- it('should handle multiple received bytes (overrun)', () => {
241
+ it('should queue multiple received bytes and deliver them in order', () => {
232
242
  serialCard.onData(0x41) // 'A'
233
- serialCard.onData(0x42) // 'B' - overwrites, causes overrun
234
- serialCard.onData(0x43) // 'C' - overwrites again
243
+ serialCard.onData(0x42) // 'B'
244
+ serialCard.onData(0x43) // 'C'
245
+
246
+ // First byte delivered on tick
247
+ serialCard.tick(1000000)
248
+ expect(serialCard.read(0x00)).toBe(0x41)
249
+
250
+ // Second byte delivered on next tick after read
251
+ serialCard.tick(1000000)
252
+ expect(serialCard.read(0x00)).toBe(0x42)
235
253
 
236
- // Single-byte RX: only last byte remains
254
+ // Third byte
255
+ serialCard.tick(1000000)
237
256
  expect(serialCard.read(0x00)).toBe(0x43)
238
257
  })
239
258
 
240
259
  it('should mask received data to 8 bits', () => {
241
260
  serialCard.onData(0x1FF)
261
+ serialCard.tick(1000000)
242
262
  const data = serialCard.read(0x00)
243
263
  expect(data).toBe(0xFF)
244
264
  })
@@ -248,6 +268,7 @@ describe('ACIA (6551 ACIA)', () => {
248
268
  it('should set IRQ flag on receive when interrupt enabled', () => {
249
269
  serialCard.write(0x02, 0x00) // bit 1 = 0: receive IRQ enabled
250
270
  serialCard.onData(0x42)
271
+ serialCard.tick(1000000)
251
272
 
252
273
  expect(serialCard.read(0x01) & 0x80).toBe(0x80) // IRQ flag set
253
274
  })
@@ -270,6 +291,7 @@ describe('ACIA (6551 ACIA)', () => {
270
291
  it('should not set IRQ flag on receive when disabled', () => {
271
292
  serialCard.write(0x02, 0x02) // RIIE=1: receive IRQ disabled
272
293
  serialCard.onData(0x42)
294
+ serialCard.tick(1000000)
273
295
 
274
296
  const status = serialCard.read(0x01)
275
297
  expect(status & 0x80).toBe(0) // IRQ flag not set
@@ -278,6 +300,7 @@ describe('ACIA (6551 ACIA)', () => {
278
300
  it('should clear IRQ flag when data is read', () => {
279
301
  serialCard.write(0x02, 0x00) // Enable receive IRQ
280
302
  serialCard.onData(0x42)
303
+ serialCard.tick(1000000)
281
304
 
282
305
  expect(serialCard.read(0x01) & 0x80).toBe(0x80) // IRQ set
283
306
 
@@ -287,30 +310,49 @@ describe('ACIA (6551 ACIA)', () => {
287
310
  })
288
311
  })
289
312
 
290
- describe('Overrun Handling', () => {
291
- it('should detect overrun condition', () => {
313
+ describe('Receive Queue', () => {
314
+ it('should buffer multiple bytes and deliver in order', () => {
292
315
  serialCard.onData(0x42)
293
- const statusBefore = serialCard.read(0x01)
294
-
295
- // Send another byte before first is read
296
316
  serialCard.onData(0x43)
297
- const statusAfter = serialCard.read(0x01)
298
317
 
299
- expect(statusAfter & 0x04).toBe(0x04) // Overrun flag set
318
+ // First byte delivered on tick
319
+ serialCard.tick(1000000)
320
+ expect(serialCard.read(0x01) & 0x08).toBe(0x08) // RDRF set
321
+ expect(serialCard.read(0x00)).toBe(0x42)
322
+
323
+ // Second byte delivered on next tick
324
+ serialCard.tick(1000000)
325
+ expect(serialCard.read(0x01) & 0x08).toBe(0x08) // RDRF set
326
+ expect(serialCard.read(0x00)).toBe(0x43)
327
+
328
+ // Queue empty
329
+ serialCard.tick(1000000)
330
+ expect(serialCard.read(0x01) & 0x08).toBe(0) // RDRF clear
300
331
  })
301
332
 
302
- it('should clear overrun when data register is read', () => {
333
+ it('should not deliver next byte until current is read', () => {
303
334
  serialCard.onData(0x42)
304
- serialCard.onData(0x43) // Cause overrun (rx still full)
305
-
306
- // Overrun flag is set
307
- const statusBefore = serialCard.read(0x01)
308
- expect(statusBefore & 0x04).toBe(0x04)
309
-
310
- // Reading data clears overrun
311
- serialCard.read(0x00)
312
- const statusAfter = serialCard.read(0x01)
313
- expect(statusAfter & 0x04).toBe(0)
335
+ serialCard.onData(0x43)
336
+
337
+ serialCard.tick(1000000) // delivers 0x42
338
+ serialCard.tick(1000000) // rxRegFull still true, 0x43 stays in queue
339
+ serialCard.tick(1000000) // still waiting
340
+
341
+ expect(serialCard.read(0x00)).toBe(0x42) // first byte still there
342
+
343
+ serialCard.tick(1000000) // NOW delivers 0x43
344
+ expect(serialCard.read(0x00)).toBe(0x43)
345
+ })
346
+
347
+ it('should clear queue on reset', () => {
348
+ serialCard.onData(0x42)
349
+ serialCard.onData(0x43)
350
+ serialCard.onData(0x44)
351
+
352
+ serialCard.reset(true)
353
+
354
+ serialCard.tick(1000000)
355
+ expect(serialCard.read(0x01) & 0x08).toBe(0) // RDRF clear — queue was emptied
314
356
  })
315
357
  })
316
358
 
@@ -321,8 +363,9 @@ describe('ACIA (6551 ACIA)', () => {
321
363
 
322
364
  serialCard.write(0x02, 0x10) // REM=1: echo mode enabled (bit 4 per 6551 spec)
323
365
  serialCard.onData(0x42)
366
+ serialCard.tick(1000000)
324
367
 
325
- // Echo happens immediately in onData via transmit callback
368
+ // Echo happens when byte is delivered from queue to rxRegister in tick
326
369
  expect(mockTransmit).toHaveBeenCalledWith(0x42)
327
370
  })
328
371
 
@@ -332,6 +375,7 @@ describe('ACIA (6551 ACIA)', () => {
332
375
 
333
376
  serialCard.write(0x02, 0x00) // Echo mode disabled
334
377
  serialCard.onData(0x42)
378
+ serialCard.tick(1000000)
335
379
 
336
380
  expect(mockTransmit).not.toHaveBeenCalled()
337
381
  })
@@ -342,6 +386,7 @@ describe('ACIA (6551 ACIA)', () => {
342
386
 
343
387
  serialCard.write(0x02, 0x10) // Echo mode enabled
344
388
  serialCard.onData(0x42)
389
+ serialCard.tick(1000000)
345
390
 
346
391
  // Echo goes directly through transmit callback, TDRE stays set
347
392
  const status = serialCard.read(0x01)
@@ -371,6 +416,7 @@ describe('ACIA (6551 ACIA)', () => {
371
416
  serialCard.write(0x00, 0x43)
372
417
  serialCard.write(0x02, 0xFF) // Set command register
373
418
  serialCard.onData(0x44)
419
+ serialCard.tick(1000000)
374
420
 
375
421
  // Now perform programmed reset
376
422
  serialCard.write(0x01, 0x00) // Programmed reset via status register write
@@ -386,6 +432,7 @@ describe('ACIA (6551 ACIA)', () => {
386
432
  serialCard.write(0x02, 0xFF)
387
433
  serialCard.write(0x03, 0xFF)
388
434
  serialCard.onData(0x42)
435
+ serialCard.tick(1000000)
389
436
 
390
437
  serialCard.reset(true)
391
438
 
@@ -405,6 +452,7 @@ describe('ACIA (6551 ACIA)', () => {
405
452
 
406
453
  it('should clear receive buffer on reset', () => {
407
454
  serialCard.onData(0x42)
455
+ serialCard.tick(1000000)
408
456
 
409
457
  serialCard.reset(true)
410
458
 
package/tsconfig.json CHANGED
@@ -7,7 +7,6 @@
7
7
  "module": "commonjs",
8
8
  "sourceMap": true,
9
9
  "esModuleInterop": true,
10
- "moduleResolution": "node",
11
- "ignoreDeprecations": "6.0"
10
+ "moduleResolution": "node"
12
11
  }
13
12
  }