ac6502 1.7.0 → 1.9.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 (47) hide show
  1. package/README.md +9 -9
  2. package/dist/components/IO/ACIA.d.ts +1 -1
  3. package/dist/components/IO/ACIA.js +1 -1
  4. package/dist/components/IO/Attachments/LCDAttachment.d.ts +1 -1
  5. package/dist/components/IO/Attachments/LCDAttachment.js +1 -1
  6. package/dist/components/IO/RTC.d.ts +3 -5
  7. package/dist/components/IO/RTC.js +35 -49
  8. package/dist/components/IO/RTC.js.map +1 -1
  9. package/dist/components/IO/Storage.js +5 -1
  10. package/dist/components/IO/Storage.js.map +1 -1
  11. package/dist/components/IO/VIA.d.ts +2 -2
  12. package/dist/components/IO/VIA.js +2 -2
  13. package/dist/components/IO/Video.js +3 -2
  14. package/dist/components/IO/Video.js.map +1 -1
  15. package/dist/components/IO.d.ts +1 -1
  16. package/dist/components/Machine.js +30 -20
  17. package/dist/components/Machine.js.map +1 -1
  18. package/dist/index.js +9 -34
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib.d.ts +0 -1
  21. package/dist/lib.js +1 -3
  22. package/dist/lib.js.map +1 -1
  23. package/dist/tests/IO/ACIA.test.js +1 -1
  24. package/dist/tests/IO/ACIA.test.js.map +1 -1
  25. package/dist/tests/IO/RTC.test.js +5 -8
  26. package/dist/tests/IO/RTC.test.js.map +1 -1
  27. package/dist/tests/IO/VIA.test.js +1 -1
  28. package/dist/tests/IO/VIA.test.js.map +1 -1
  29. package/dist/tests/IO/Video.test.js +1 -1
  30. package/dist/tests/Machine.test.js +1 -1
  31. package/package.json +1 -1
  32. package/src/components/IO/ACIA.ts +1 -1
  33. package/src/components/IO/Attachments/LCDAttachment.ts +1 -1
  34. package/src/components/IO/RTC.ts +38 -51
  35. package/src/components/IO/Storage.ts +4 -1
  36. package/src/components/IO/VIA.ts +2 -2
  37. package/src/components/IO/Video.ts +3 -2
  38. package/src/components/IO.ts +1 -1
  39. package/src/components/Machine.ts +32 -20
  40. package/src/index.ts +10 -36
  41. package/src/lib.ts +0 -1
  42. package/src/tests/IO/ACIA.test.ts +1 -1
  43. package/src/tests/IO/RTC.test.ts +5 -9
  44. package/src/tests/IO/VIA.test.ts +1 -1
  45. package/src/tests/IO/Video.test.ts +1 -1
  46. package/src/tests/Machine.test.ts +1 -1
  47. package/src/components/IO/Terminal.ts +0 -34
@@ -1 +1 @@
1
- {"version":3,"file":"VIA.test.js","sourceRoot":"","sources":["../../../src/tests/IO/VIA.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VIA.test.js","sourceRoot":"","sources":["../../../src/tests/IO/VIA.test.ts"],"names":[],"mappings":"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"}
@@ -72,7 +72,7 @@ const setupTextMode = (vdp) => {
72
72
  * Must not overshoot into the next frame (scanline 0 of the next
73
73
  * frame clears the status register during sprite processing).
74
74
  */
75
- const renderOneFrame = (vdp, frequency = 2000000) => {
75
+ const renderOneFrame = (vdp, frequency = 1000000) => {
76
76
  // At 2MHz: cyclesPerFrame ≈ 33333, each tick = 128 cycles → ~261 ticks/frame
77
77
  const ticksPerFrame = Math.ceil((frequency / 60) / 128);
78
78
  for (let i = 0; i < ticksPerFrame; i++) {
@@ -19,7 +19,7 @@ describe('Machine', () => {
19
19
  });
20
20
  test('Machine initializes with correct default properties', () => {
21
21
  expect(machine.isRunning).toBe(false);
22
- expect(machine.frequency).toBe(2000000);
22
+ expect(machine.frequency).toBe(1000000);
23
23
  expect(machine.scale).toBe(2);
24
24
  expect(machine.frames).toBe(0);
25
25
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ac6502",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "description": "Emulator for the A.C. Wright 6502 project",
5
5
  "main": "dist/lib.js",
6
6
  "types": "dist/lib.d.ts",
@@ -1,7 +1,7 @@
1
1
  import { IO } from '../IO'
2
2
 
3
3
  /**
4
- * ACIA - Emulates a 6551 ACIA (Asynchronous Communications Interface Adapter)
4
+ * ACIA - Emulates a R6551 ACIA (Asynchronous Communications Interface Adapter)
5
5
  *
6
6
  * Register Map:
7
7
  * $00: Data Register (read/write)
@@ -4,7 +4,7 @@ import { AttachmentBase } from './Attachment'
4
4
  * HD44780 LCD Controller Emulation — GPIO Attachment
5
5
  *
6
6
  * Emulates a 16×2 (or configurable) character LCD with HD44780 controller
7
- * connected via 8-bit parallel interface on a 65C22 VIA.
7
+ * connected via 8-bit parallel interface on a 6522 VIA.
8
8
  *
9
9
  * Pin mapping (accent on VIA ports):
10
10
  * Port B (D0–D7): 8-bit data bus
@@ -1,7 +1,7 @@
1
1
  import { IO } from '../IO'
2
2
 
3
3
  /**
4
- * DS1511Y Real-Time Clock IC Emulation
4
+ * DS1511Y+ Real-Time Clock IC Emulation
5
5
  *
6
6
  * Register Map (0x00-0x1F):
7
7
  * 0x00: Seconds (BCD, 00-59)
@@ -71,12 +71,10 @@ export class RTC implements IO {
71
71
  private ramData: Uint8Array = new Uint8Array(256) // 256 bytes of extended RAM
72
72
 
73
73
  // Time tracking for incrementing
74
- private cycleCounter: number = 0 // Accumulator for CPU cycles
75
- private cpuFrequency: number = 2000000 // Default 2MHz
76
- private transferCycleCounter: number = 0
74
+ private cycleAccumulator: number = 0 // Accumulated CPU cycles toward next second
75
+ private cpuFrequency: number = 1000000 // Stored for watchdog calculations
77
76
  private pendingUserToInternal: boolean = false
78
77
  private userSyncNeeded: boolean = false
79
- private lastTEEnabled: boolean = false
80
78
 
81
79
  constructor() {
82
80
  this.initializeWithCurrentTime()
@@ -95,12 +93,11 @@ export class RTC implements IO {
95
93
  this.internalMonth = this.decimalToBCD(now.getMonth() + 1)
96
94
  this.internalYear = this.decimalToBCD(now.getFullYear() % 100)
97
95
  this.internalCentury = this.decimalToBCD(Math.floor(now.getFullYear() / 100))
98
- this.monthControl = 0x80 // EOSC enabled by default (bit 7)
96
+ this.monthControl = 0x00 // EOSC=0: oscillator enabled (DS1511Y+ default)
99
97
  this.copyInternalToUser()
100
98
  this.pendingUserToInternal = false
101
99
  this.userSyncNeeded = false
102
- this.transferCycleCounter = 0
103
- this.lastTEEnabled = (this.controlB & 0x80) !== 0
100
+ this.cycleAccumulator = 0
104
101
  }
105
102
 
106
103
  /**
@@ -167,13 +164,8 @@ export class RTC implements IO {
167
164
  }
168
165
 
169
166
  private markUserTimeWrite(): void {
167
+ // Actual copy into internal registers happens on the TE falling edge (1→0)
170
168
  this.pendingUserToInternal = true
171
- if ((this.controlB & 0x80) !== 0 &&
172
- this.transferCycleCounter >= this.getTransferCyclesRequired()) {
173
- this.copyUserToInternal()
174
- this.pendingUserToInternal = false
175
- this.userSyncNeeded = false
176
- }
177
169
  }
178
170
 
179
171
  /**
@@ -320,7 +312,8 @@ export class RTC implements IO {
320
312
  address &= 0x1F
321
313
 
322
314
  switch (address) {
323
- case 0x00: return this.userSeconds
315
+ case 0x00:
316
+ return this.userSeconds
324
317
  case 0x01: return this.userMinutes
325
318
  case 0x02: return this.userHours
326
319
  case 0x03: return this.userDayOfWeek & 0x07
@@ -416,13 +409,28 @@ export class RTC implements IO {
416
409
  // Writing 1 to flag bits (0-3) clears them; control bits (4-7) are written normally
417
410
  this.controlA = (data & 0xF0) | ((this.controlA & 0x0F) & ~(data & 0x0F))
418
411
  break
419
- case 0x0F:
412
+ case 0x0F: {
413
+ const previousTE = (this.controlB & 0x80) !== 0
420
414
  this.controlB = data
415
+ const currentTE = (this.controlB & 0x80) !== 0
416
+ // TE falling edge (1→0): commit buffered user writes into internal counters
417
+ if (previousTE && !currentTE) {
418
+ if (this.pendingUserToInternal) {
419
+ this.copyUserToInternal()
420
+ this.pendingUserToInternal = false
421
+ }
422
+ // Mirror the committed time back so CPU reads it immediately
423
+ this.copyInternalToUser()
424
+ this.userSyncNeeded = false
425
+ // Reset cycle accumulator so the next second is measured from now
426
+ this.cycleAccumulator = 0
427
+ }
421
428
  this.raiseInterruptIfEnabled(0x04, 0x04)
422
429
  if ((this.controlB & 0x02) !== 0) {
423
430
  this.reloadWatchdog()
424
431
  }
425
432
  break
433
+ }
426
434
  case 0x10:
427
435
  this.ramAddress = data // Set RAM address pointer
428
436
  break
@@ -439,53 +447,36 @@ export class RTC implements IO {
439
447
  }
440
448
  }
441
449
 
442
- tick(frequency: number): void {
443
- // Advance RTC based on CPU frequency
444
- // Store the frequency for use in time calculations
445
- this.cpuFrequency = frequency > 0 ? frequency : 2000000
446
-
447
- const teEnabled = (this.controlB & 0x80) !== 0
448
- if (teEnabled !== this.lastTEEnabled) {
449
- this.lastTEEnabled = teEnabled
450
- this.transferCycleCounter = 0
451
- }
452
450
 
453
- if (teEnabled) {
454
- this.transferCycleCounter++
455
- } else {
456
- this.transferCycleCounter = 0
457
- }
458
451
 
459
- const transferReady = teEnabled &&
460
- this.transferCycleCounter >= this.getTransferCyclesRequired()
452
+ tick(frequency: number, cycles: number = 1): void {
453
+ this.cpuFrequency = frequency > 0 ? frequency : 1000000
461
454
 
462
- if (transferReady && this.pendingUserToInternal) {
463
- this.copyUserToInternal()
464
- this.pendingUserToInternal = false
465
- this.userSyncNeeded = false
466
- }
455
+ const teEnabled = (this.controlB & 0x80) !== 0
467
456
 
468
- if ((this.monthControl & 0x80) === 0) {
469
- // Oscillator disabled
457
+ if ((this.monthControl & 0x80) !== 0) {
458
+ // EOSC=1: oscillator disabled (DS1511Y+ active-low enable)
470
459
  this.stepWatchdog()
471
460
  return
472
461
  }
473
462
 
474
- this.cycleCounter++
475
-
476
- // Advance time when we've accumulated enough cycles for 1 second
477
- if (this.cycleCounter >= this.cpuFrequency) {
478
- this.cycleCounter = 0
463
+ // Advance the clock by counting CPU cycles.
464
+ // One emulated second = cpuFrequency cycles.
465
+ this.cycleAccumulator += cycles
466
+ while (this.cycleAccumulator >= this.cpuFrequency) {
467
+ this.cycleAccumulator -= this.cpuFrequency
479
468
  this.incrementTime()
480
469
  this.checkAlarm()
481
470
 
482
- if (transferReady) {
471
+ if (!teEnabled) {
483
472
  this.copyInternalToUser()
484
473
  this.userSyncNeeded = false
485
474
  } else {
486
475
  this.userSyncNeeded = true
487
476
  }
488
- } else if (transferReady && this.userSyncNeeded) {
477
+ }
478
+
479
+ if (!teEnabled && this.userSyncNeeded) {
489
480
  this.copyInternalToUser()
490
481
  this.userSyncNeeded = false
491
482
  }
@@ -497,20 +488,16 @@ export class RTC implements IO {
497
488
  if (coldStart) {
498
489
  // Cold start: Initialize with current time
499
490
  this.initializeWithCurrentTime()
500
- this.cycleCounter = 0
501
491
  this.watchdogCounterCentis = 0
502
492
  this.watchdogCycleCounter = 0
503
- this.transferCycleCounter = 0
504
493
  this.pendingUserToInternal = false
505
494
  this.userSyncNeeded = false
506
495
  this.setKickstartFlag()
507
496
  } else {
508
497
  // Warm start: Keep time, reset some control flags but preserve settings
509
498
  this.controlA &= 0xF0 // Clear interrupt flags
510
- this.cycleCounter = 0
511
499
  this.watchdogCounterCentis = 0
512
500
  this.watchdogCycleCounter = 0
513
- this.transferCycleCounter = 0
514
501
  this.pendingUserToInternal = false
515
502
  this.userSyncNeeded = false
516
503
  }
@@ -450,10 +450,13 @@ export class Storage implements IO {
450
450
  uint8Data = new Uint8Array(data)
451
451
  }
452
452
 
453
- // Ensure the data is exactly the expected size
453
+ // Ensure the data is exactly the expected size, or empty (new file)
454
454
  if (uint8Data.length === Storage.STORAGE_SIZE) {
455
455
  this.storage.set(uint8Data)
456
456
  console.log(`Storage loaded (${Storage.STORAGE_SIZE} bytes)`)
457
+ } else if (uint8Data.length === 0) {
458
+ this.storage.fill(0x00)
459
+ console.log('Storage initialized as new empty image.')
457
460
  } else {
458
461
  console.warn(`Warning: Storage data size mismatch. Expected ${Storage.STORAGE_SIZE} bytes, got ${uint8Data.length} bytes.`)
459
462
  console.warn('Storage will remain empty.')
@@ -2,9 +2,9 @@ import { IO } from '../IO'
2
2
  import { Attachment } from './Attachments/Attachment'
3
3
 
4
4
  /**
5
- * VIA - Emulates the 65C22 VIA (Versatile Interface Adapter)
5
+ * VIA - Emulates the 6522 VIA (Versatile Interface Adapter)
6
6
  *
7
- * The 65C22 VIA provides:
7
+ * The 6522 VIA provides:
8
8
  * - Two 8-bit bidirectional I/O ports (Port A and Port B)
9
9
  * - Two 16-bit timers with interrupt generation
10
10
  * - Shift register for serial I/O
@@ -566,9 +566,10 @@ export class Video implements IO {
566
566
 
567
567
  let spritesShown = 0
568
568
 
569
- // Clear status at start of frame (matches C reference)
569
+ // Clear sprite-related status bits at start of frame, but preserve
570
+ // the interrupt flag (bit 7) — it is only cleared on CPU status read
570
571
  if (y === 0) {
571
- this.status = 0
572
+ this.status &= STATUS_INT
572
573
  }
573
574
 
574
575
  for (let spriteIdx = 0; spriteIdx < MAX_SPRITES; spriteIdx++) {
@@ -5,7 +5,7 @@ export interface IO {
5
5
 
6
6
  read(address: number): number
7
7
  write(address: number, data: number): void
8
- tick(frequency: number): void
8
+ tick(frequency: number, cycles?: number): void
9
9
  reset(coldStart: boolean): void
10
10
 
11
11
  }
@@ -15,7 +15,6 @@ import { JoystickAttachment } from './IO/Attachments/JoystickAttachment'
15
15
  import { LCDAttachment } from './IO/Attachments/LCDAttachment'
16
16
  import { KeypadAttachment } from './IO/Attachments/KeypadAttachment'
17
17
  import { Empty } from './IO/Empty'
18
- import { Terminal } from './IO/Terminal'
19
18
  import { IO } from './IO'
20
19
 
21
20
  export class Machine {
@@ -53,7 +52,7 @@ export class Machine {
53
52
 
54
53
  target: string
55
54
  isRunning: boolean = false
56
- frequency: number = 2000000 // 2 MHz
55
+ frequency: number = 1000000 // 1 MHz
57
56
  scale: number = 2
58
57
  frames: number = 0
59
58
  startTime: number = Date.now()
@@ -146,23 +145,36 @@ export class Machine {
146
145
  const rtc = new RTC()
147
146
  const storage = new Storage()
148
147
  const via = new VIA()
148
+ const sound = new Sound()
149
+ const video = new Video()
149
150
 
150
151
  this.io1 = new RAMBank()
151
152
  this.io2 = new RAMBank()
152
153
  this.io3 = rtc
153
154
  this.io4 = storage
154
155
  this.io6 = via
155
- this.io7 = new Empty()
156
- this.io8 = new Terminal()
156
+ this.io7 = sound
157
+ this.io8 = video
157
158
 
158
159
  // Connect RTC IRQ/NMI to CPU
159
160
  rtc.raiseIRQ = () => this.cpu.irq()
160
161
  rtc.raiseNMI = () => this.cpu.nmi()
161
162
 
162
- // Connect VIA IRQ/NMI to CPU
163
+ // Connect Video IRQ/NMI to CPU
164
+ video.raiseIRQ = () => this.cpu.irq()
165
+ video.raiseNMI = () => this.cpu.nmi()
166
+
167
+ // Connect GPIO VIA IRQ/NMI to CPU
163
168
  via.raiseIRQ = () => this.cpu.irq()
164
169
  via.raiseNMI = () => this.cpu.nmi()
165
170
 
171
+ // Connect Sound pushSamples callback
172
+ sound.pushSamples = (samples: Float32Array) => {
173
+ if (this.play) {
174
+ this.play(samples)
175
+ }
176
+ }
177
+
166
178
  // Create standard GPIO attachments
167
179
  this.keyboardMatrixAttachment = new KeyboardMatrixAttachment(10)
168
180
  this.keyboardEncoderAttachment = new KeyboardEncoderAttachment(20)
@@ -349,11 +361,11 @@ export class Machine {
349
361
  this.ioCycleAccumulator++
350
362
  if (this.ioCycleAccumulator >= this.ioTickInterval) {
351
363
  // Skip ticking RAMBank IO1 and IO2 since they have no timing behavior
352
- this.io3.tick(this.frequency)
353
- this.io4.tick(this.frequency)
354
- this.io6.tick(this.frequency)
355
- this.io7.tick(this.frequency)
356
- this.io8.tick(this.frequency)
364
+ this.io3.tick(this.frequency, this.ioTickInterval)
365
+ this.io4.tick(this.frequency, this.ioTickInterval)
366
+ this.io6.tick(this.frequency, this.ioTickInterval)
367
+ this.io7.tick(this.frequency, this.ioTickInterval)
368
+ this.io8.tick(this.frequency, this.ioTickInterval)
357
369
  this.ioCycleAccumulator = 0
358
370
  }
359
371
  }
@@ -383,11 +395,11 @@ export class Machine {
383
395
  this.ioCycleAccumulator++
384
396
  if (this.ioCycleAccumulator >= this.ioTickInterval) {
385
397
  // Skip ticking RAMBank IO1 and IO2 since they have no timing behavior
386
- this.io3.tick(this.frequency)
387
- this.io4.tick(this.frequency)
388
- this.io6.tick(this.frequency)
389
- this.io7.tick(this.frequency)
390
- this.io8.tick(this.frequency)
398
+ this.io3.tick(this.frequency, this.ioTickInterval)
399
+ this.io4.tick(this.frequency, this.ioTickInterval)
400
+ this.io6.tick(this.frequency, this.ioTickInterval)
401
+ this.io7.tick(this.frequency, this.ioTickInterval)
402
+ this.io8.tick(this.frequency, this.ioTickInterval)
391
403
  this.ioCycleAccumulator = 0
392
404
  }
393
405
  }
@@ -450,11 +462,11 @@ export class Machine {
450
462
  this.ioCycleAccumulator++
451
463
  if (this.ioCycleAccumulator >= this.ioTickInterval) {
452
464
  // Skip ticking RAMBank IO1 and IO2 since they have no timing behavior
453
- this.io3.tick(this.frequency)
454
- this.io4.tick(this.frequency)
455
- this.io6.tick(this.frequency)
456
- this.io7.tick(this.frequency)
457
- this.io8.tick(this.frequency)
465
+ this.io3.tick(this.frequency, this.ioTickInterval)
466
+ this.io4.tick(this.frequency, this.ioTickInterval)
467
+ this.io6.tick(this.frequency, this.ioTickInterval)
468
+ this.io7.tick(this.frequency, this.ioTickInterval)
469
+ this.io8.tick(this.frequency, this.ioTickInterval)
458
470
  this.ioCycleAccumulator = 0
459
471
  }
460
472
  }
package/src/index.ts CHANGED
@@ -5,14 +5,13 @@ import { Machine } from './components/Machine'
5
5
  import { Command, Option } from 'commander'
6
6
  import { SerialPort } from 'serialport'
7
7
  import { Video } from './components/IO/Video'
8
- import { Terminal } from './components/IO/Terminal'
9
8
  import { Storage } from './components/IO/Storage'
10
9
  import { Sound } from './components/IO/Sound'
11
10
  import sdl from '@kmamal/sdl'
12
11
  import { readFile, writeFile } from 'fs/promises'
13
12
  import { existsSync } from 'fs'
14
13
 
15
- const VERSION = '1.7.0'
14
+ const VERSION = '1.9.0'
16
15
  const WIDTH = 320
17
16
  const HEIGHT = 240
18
17
 
@@ -118,8 +117,10 @@ class Emulator {
118
117
  ;(this.machine.io4 as Storage).loadData(new Uint8Array(storageData))
119
118
  } else {
120
119
  console.log(`Storage file not found: ${this.options.storage}`)
121
- console.log('A new storage file will be created on exit.')
122
- ;(this.machine.io4 as Storage).loadData(null)
120
+ console.log('Initializing new storage file...')
121
+ const emptyStorage = (this.machine.io4 as Storage).getData()
122
+ await writeFile(this.options.storage, emptyStorage)
123
+ console.log(`Storage file created: ${this.options.storage}`)
123
124
  }
124
125
  }
125
126
  }
@@ -362,40 +363,10 @@ class Emulator {
362
363
  this.window.render(WIDTH, HEIGHT, WIDTH * 4, 'rgba32', Video.buffer)
363
364
  }
364
365
  } else if (this.options.target === 'dev') {
365
- const devBoard = this.machine.io8 as Terminal
366
- const rgbaBuffer = Buffer.alloc(WIDTH * HEIGHT * 4)
366
+ const video = this.machine.io8 as Video
367
367
  this.machine.render = () => {
368
368
  if (!this.window) { return }
369
- const src = devBoard.vtac.buffer
370
- for (let i = 0; i < WIDTH * HEIGHT; i++) {
371
- const v = src[i]
372
- const off = i * 4
373
- const r3 = (v >> 5) & 0x07
374
- const g3 = (v >> 2) & 0x07
375
- const b2 = v & 0x03
376
- rgbaBuffer[off] = (r3 << 5) | (r3 << 2) | (r3 >> 1)
377
- rgbaBuffer[off + 1] = (g3 << 5) | (g3 << 2) | (g3 >> 1)
378
- rgbaBuffer[off + 2] = (b2 << 6) | (b2 << 4) | (b2 << 2) | b2
379
- rgbaBuffer[off + 3] = 0xFF
380
- }
381
- this.window.render(WIDTH, HEIGHT, WIDTH * 4, 'rgba32', rgbaBuffer)
382
-
383
- // Synthesize and play any queued VTAC bell tones
384
- if (this.machine.play && this.audioDevice) {
385
- const sampleRate = this.audioDevice.frequency
386
- while (devBoard.vtac.hasQueuedBells()) {
387
- const bell = devBoard.vtac.getNextBell()
388
- if (bell) {
389
- const numSamples = Math.floor((bell.duration / 60) * sampleRate)
390
- const samples = new Float32Array(numSamples)
391
- const twoPiF = 2 * Math.PI * bell.frequency
392
- for (let i = 0; i < numSamples; i++) {
393
- samples[i] = Math.sin(twoPiF * i / sampleRate)
394
- }
395
- this.machine.play(samples)
396
- }
397
- }
398
- }
369
+ this.window.render(WIDTH, HEIGHT, WIDTH * 4, 'rgba32', video.buffer)
399
370
  }
400
371
  }
401
372
 
@@ -548,6 +519,9 @@ class Emulator {
548
519
  }
549
520
 
550
521
  private shutdown(): void {
522
+ // Stop the machine loop to prevent further rendering after window close
523
+ this.machine.stop()
524
+
551
525
  // Close all connected controllers
552
526
  for (const [id, controller] of this.controllers.entries()) {
553
527
  if (!controller.closed) {
package/src/lib.ts CHANGED
@@ -15,7 +15,6 @@ export { ACIA } from './components/IO/ACIA'
15
15
  export { SIDVoice, Sound } from './components/IO/Sound'
16
16
  export { Storage } from './components/IO/Storage'
17
17
  export { Video } from './components/IO/Video'
18
- export { Terminal } from './components/IO/Terminal'
19
18
 
20
19
  // GPIO attachments
21
20
  export type { Attachment } from './components/IO/Attachments/Attachment'
@@ -141,7 +141,7 @@ describe('ACIA (6551 ACIA)', () => {
141
141
  const mockIRQ = jest.fn()
142
142
  serialCard.raiseIRQ = mockIRQ
143
143
 
144
- serialCard.write(0x02, 0x02) // RIIE=1: receive IRQ disabled (W65C51N: bit1=1 disables)
144
+ serialCard.write(0x02, 0x02) // RIIE=1: receive IRQ disabled (R6551: bit1=1 disables)
145
145
  serialCard.onData(0x42)
146
146
 
147
147
  expect(mockIRQ).not.toHaveBeenCalled()
@@ -2,11 +2,6 @@ import { RTC } from '../../components/IO/RTC'
2
2
 
3
3
  const bcdToDecimal = (bcd: number): number => (((bcd >> 4) & 0x0f) * 10) + (bcd & 0x0f)
4
4
 
5
- const enableTransfers = (rtc: RTC): void => {
6
- rtc.write(0x0f, 0x80)
7
- rtc.tick(1)
8
- }
9
-
10
5
  const setTime = (rtc: RTC, values: {
11
6
  seconds: number
12
7
  minutes: number
@@ -17,15 +12,16 @@ const setTime = (rtc: RTC, values: {
17
12
  year: number
18
13
  century: number
19
14
  }): void => {
20
- enableTransfers(rtc)
15
+ rtc.write(0x0f, 0x80) // Set TE to inhibit transfers
21
16
  rtc.write(0x00, values.seconds)
22
17
  rtc.write(0x01, values.minutes)
23
18
  rtc.write(0x02, values.hours)
24
19
  rtc.write(0x03, values.dayOfWeek)
25
20
  rtc.write(0x04, values.date)
26
- rtc.write(0x05, values.month | 0x80)
21
+ rtc.write(0x05, values.month) // EOSC=0: oscillator enabled (DS1511Y+ default)
27
22
  rtc.write(0x06, values.year)
28
23
  rtc.write(0x07, values.century)
24
+ rtc.write(0x0f, 0x00) // Clear TE: falling edge commits user to internal
29
25
  }
30
26
 
31
27
  describe('RTC', () => {
@@ -64,7 +60,7 @@ describe('RTC', () => {
64
60
  expect(bcdToDecimal(century)).toBeGreaterThanOrEqual(0)
65
61
  expect(bcdToDecimal(century)).toBeLessThanOrEqual(39)
66
62
 
67
- expect(month & 0x80).toBe(0x80)
63
+ expect(month & 0x80).toBe(0x00)
68
64
  })
69
65
  })
70
66
 
@@ -150,7 +146,7 @@ describe('RTC', () => {
150
146
  century: 0x20
151
147
  })
152
148
 
153
- rtc.write(0x05, 0x01)
149
+ rtc.write(0x05, 0x81) // EOSC=1: oscillator disabled
154
150
  rtc.tick(1)
155
151
 
156
152
  expect(rtc.read(0x00)).toBe(0x10)