ac6502 1.4.0 → 1.5.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.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # 6502 Emulator
1
+ # 6502 EMULATOR
2
2
 
3
3
  A comprehensive, cycle-accurate emulator for the [A.C. Wright 6502](https://github.com/acwright/6502) computer system, built with TypeScript and Node.js.
4
4
 
5
5
  ## Overview
6
6
 
7
- This emulator provides a complete software implementation of a 65C02-based computer system, designed to run the same code as the hardware implementation. It features full I/O peripheral support, including video, sound, serial communication, storage, and GPIO interfaces.
7
+ This emulator provides a complete software implementation of a 65C02-based computer system, designed to run the same code as the hardware implementation. It features full I/O peripheral support, including video, sound, serial communication, storage, and GPIO interfaces. The emulator supports four different system configurations (targets) to accommodate various use cases from full-featured systems to minimal development boards.
8
8
 
9
9
  ## Features
10
10
 
@@ -26,22 +26,24 @@ This emulator provides a complete software implementation of a 65C02-based compu
26
26
  - Real-time rendering via SDL
27
27
 
28
28
  - **Audio Output**
29
- - MOS 6518 SID Sound card emulation with sample generation
29
+ - MOS 6581 SID Sound card emulation with sample generation
30
30
  - 44.1 kHz audio output
31
31
  - SDL audio integration
32
32
 
33
33
  - **I/O Peripherals**
34
- - **Serial Card**: 6551 UART communication with configurable baud rate, parity, data/stop bits
34
+ - **Serial Card (ACIA)**: 6551 UART communication with configurable baud rate, parity, data/stop bits
35
35
  - **Storage Card**: Compact Flash 8-bit IDE mode persistent storage emulation
36
36
  - **RTC Card**: DS1511Y real-time clock emulation with IRQ/NMI support
37
- - **GPIO Card**: 65C22 VIA (Versatile Interface Adapter) emulation
37
+ - **GPIO Card (VIA)**: 65C22 VIA (Versatile Interface Adapter) emulation
38
38
  - Two 8-bit bidirectional I/O ports
39
39
  - Two 16-bit timers with interrupts
40
40
  - Shift register for serial I/O
41
+ - **Terminal Card**: VTAC fantasy terminal emulation for text-based development
41
42
 
42
43
  - **Input Devices**
43
44
  - Keyboard support (matrix and encoder modes)
44
- - Joystick/gamepad support with button mapping
45
+ - Joystick/gamepad support with button mapping (dual controller support)
46
+ - Keypad support (KIM mode)
45
47
  - SDL input handling
46
48
 
47
49
  - **Development Features**
@@ -58,11 +60,16 @@ Get up and running in seconds:
58
60
  # Install globally
59
61
  npm install -g ac6502
60
62
 
61
- # Run the emulator
63
+ # Run the emulator (default COB target)
62
64
  ac6502
63
65
 
64
66
  # Load a ROM
65
67
  ac6502 --rom /path/to/rom.bin
68
+
69
+ # Run in different system configurations
70
+ ac6502 --target kim --rom /path/to/kim.bin
71
+ ac6502 --target dev --cart /path/to/program.bin
72
+ ac6502 --target vcs --cart /path/to/game.bin
66
73
  ```
67
74
 
68
75
  ## Installation
@@ -88,7 +95,7 @@ npm install -g ac6502
88
95
  npm install
89
96
  ```
90
97
 
91
- ### Build
98
+ #### Build
92
99
 
93
100
  ```bash
94
101
  npm run build
@@ -112,14 +119,17 @@ ac6502 [options]
112
119
 
113
120
  - `-c, --cart <path>` - Load a cartridge ROM file
114
121
  - `-r, --rom <path>` - Load a system ROM file
115
- - `-f, --freq <frequency>` - Set CPU frequency in Hz (default: 2000000)
116
- - `-s, --scale <factor>` - Set display scale factor (default: 2)
122
+ - `-f, --freq <frequency>` - Set CPU frequency in Hz (default: 1000000)
123
+ - `-s, --scale <factor>` - Set display scale factor (default: 1)
124
+ - `-T, --target <target>` - System target: cob, vcs, kim, dev (default: cob)
117
125
  - `-p, --port <device>` - Serial port device path
118
126
  - `-b, --baudrate <rate>` - Serial baud rate (default: 9600)
119
127
  - `-a, --parity <type>` - Serial parity: none, even, odd (default: none)
120
128
  - `-d, --databits <bits>` - Serial data bits: 5, 6, 7, 8 (default: 8)
121
129
  - `-t, --stopbits <bits>` - Serial stop bits: 1, 1.5, 2 (default: 1)
122
130
  - `-S, --storage <path>` - Set storage file path for Compact Flash card persistence
131
+ - `-v, --version` - Output the current emulator version
132
+ - `-h, --help` - Output help / options
123
133
 
124
134
  ### Examples
125
135
 
@@ -135,12 +145,36 @@ Connect to serial hardware:
135
145
  ac6502 --port /dev/ttyUSB0 --baudrate 9600 --rom /path/to/monitor.bin
136
146
  ```
137
147
 
148
+ Run in KIM mode with LCD and keypad:
149
+
150
+ ```bash
151
+ ac6502 --target kim --rom /path/to/kim.bin --scale 2
152
+ ```
153
+
154
+ Run in development mode with terminal:
155
+
156
+ ```bash
157
+ ac6502 --target dev --cart /path/to/program.bin
158
+ ```
159
+
160
+ Set custom CPU frequency and storage:
161
+
162
+ ```bash
163
+ ac6502 --freq 2000000 --storage ./disk.img --cart /path/to/program.bin
164
+ ```
165
+
138
166
  ## Architecture
139
167
 
140
- ### Component Structure
168
+ ### System Targets
169
+
170
+ The emulator supports four different system configurations via the `--target` option:
171
+
172
+ #### COB (Complete On-Board) - Default
173
+
174
+ Full-featured system with all peripherals:
141
175
 
142
176
  ```
143
- Machine
177
+ Machine (COB)
144
178
  ├── CPU (65C02)
145
179
  ├── RAM (System Memory)
146
180
  ├── ROM (System BIOS/Monitor)
@@ -148,21 +182,79 @@ Machine
148
182
  └── I/O Cards (8 slots)
149
183
  ├── IO1: RAM Card (Expansion)
150
184
  ├── IO2: RAM Card (Expansion)
151
- ├── IO3: RTC Card (Real-Time Clock)
185
+ ├── IO3: RTC Card (DS1511Y Real-Time Clock)
152
186
  ├── IO4: Storage Card (Compact Flash 8-bit IDE Mode)
153
- ├── IO5: Serial Card (6551 UART)
154
- ├── IO6: GPIO Card (65C22 VIA)
187
+ ├── IO5: Serial Card (6551 ACIA)
188
+ ├── IO6: VIA Card (65C22 GPIO)
189
+ ├── IO7: Sound Card (6581 SID)
190
+ └── IO8: Video Card (TMS9918)
191
+ ```
192
+
193
+ #### VCS (Video Computer System)
194
+
195
+ Minimal system focused on video and sound:
196
+
197
+ ```
198
+ Machine (VCS)
199
+ ├── CPU (65C02)
200
+ ├── RAM (System Memory)
201
+ ├── ROM (System BIOS/Monitor)
202
+ ├── Cart (Optional Cartridge)
203
+ └── I/O Cards (8 slots)
204
+ ├── IO6: VIA Card (65C22 GPIO)
155
205
  ├── IO7: Sound Card (6581 SID)
156
206
  └── IO8: Video Card (TMS9918)
157
207
  ```
158
208
 
159
- ### GPIO Attachments
209
+ #### KIM (Keyboard Input Monitor)
160
210
 
161
- The GPIO card supports multiple attachment types:
211
+ Single-board computer with LCD and keypad:
162
212
 
213
+ ```
214
+ Machine (KIM)
215
+ ├── CPU (65C02)
216
+ ├── RAM (System Memory)
217
+ ├── ROM (System BIOS/Monitor)
218
+ ├── Cart (Optional Cartridge)
219
+ └── I/O Cards (8 slots)
220
+ ├── IO5: Serial Card (6551 ACIA)
221
+ └── IO8: VIA Card (65C22 GPIO)
222
+ ├── LCD Attachment (HD44780 16×2 character display)
223
+ └── Keypad Attachment (4×6 matrix keypad)
224
+ ```
225
+
226
+ #### DEV (Development)
227
+
228
+ System for software development with terminal interface:
229
+
230
+ ```
231
+ Machine (DEV)
232
+ ├── CPU (65C02)
233
+ ├── RAM (System Memory)
234
+ ├── ROM (System BIOS/Monitor)
235
+ ├── Cart (Optional Cartridge)
236
+ └── I/O Cards (8 slots)
237
+ ├── IO1: RAM Card (Expansion)
238
+ ├── IO2: RAM Card (Expansion)
239
+ ├── IO3: RTC Card (DS1511Y Real-Time Clock)
240
+ ├── IO4: Storage Card (Compact Flash 8-bit IDE Mode)
241
+ ├── IO5: Serial Card (6551 ACIA)
242
+ ├── IO6: VIA Card (65C22 GPIO)
243
+ └── IO8: Terminal Card (VTAC)
244
+ ```
245
+
246
+ ### VIA (GPIO) Attachments
247
+
248
+ The VIA card supports multiple attachment types depending on the target:
249
+
250
+ #### Standard Attachments (COB/DEV/VCS)
163
251
  - **Keyboard Matrix**: PS/2-style keyboard matrix scanning
164
252
  - **Keyboard Encoder**: Parallel keyboard encoder
165
- - **Joystick**: Game controller with 8 buttons and directional input
253
+ - **Joystick A/B**: Game controllers with 8 buttons and directional input
254
+
255
+ #### KIM Attachments
256
+ - **LCD Display**: HD44780-compatible 16×2 character LCD with 5×8 pixel characters
257
+ - **Keypad**: 4×6 matrix keypad with 24-key layout
166
258
 
167
259
  ### Memory Map
168
260
 
@@ -175,26 +267,31 @@ The system uses a standard 6502 memory layout with I/O cards mapped into the add
175
267
  ```
176
268
  src/
177
269
  ├── index.ts # Main entry point and emulator loop
270
+ ├── lib.ts # Library exports
178
271
  ├── components/
179
272
  │ ├── CPU.ts # 65C02 CPU implementation
180
- │ ├── Machine.ts # System integration
273
+ │ ├── Machine.ts # System integration and target configuration
181
274
  │ ├── RAM.ts # RAM module
182
275
  │ ├── ROM.ts # ROM module
183
276
  │ ├── Cart.ts # Cartridge support
184
277
  │ ├── IO.ts # I/O interface
185
278
  │ └── IO/ # I/O peripheral implementations
186
- │ ├── VIA.ts
187
- │ ├── RAMBank.ts
188
- │ ├── RTC.ts
189
- │ ├── ACIA.ts
190
- │ ├── Sound.ts
191
- │ ├── Storage.ts
192
- │ ├── Video.ts
279
+ │ ├── ACIA.ts # 6551 Serial card
280
+ │ ├── VIA.ts # 65C22 GPIO card
281
+ │ ├── RAMBank.ts # RAM expansion card
282
+ │ ├── RTC.ts # Real-time clock card
283
+ │ ├── Sound.ts # 6581 SID sound card
284
+ │ ├── Storage.ts # Compact Flash storage card
285
+ │ ├── Video.ts # TMS9918 video card
286
+ │ ├── Terminal.ts # VTAC terminal card
287
+ │ ├── Empty.ts # Empty slot placeholder
193
288
  │ └── Attachments/
194
289
  │ ├── Attachment.ts
195
290
  │ ├── JoystickAttachment.ts
196
291
  │ ├── KeyboardEncoderAttachment.ts
197
- └── KeyboardMatrixAttachment.ts
292
+ ├── KeyboardMatrixAttachment.ts
293
+ │ ├── KeypadAttachment.ts
294
+ │ └── LCDAttachment.ts
198
295
  └── tests/ # Comprehensive test suite
199
296
  ```
200
297
 
@@ -220,7 +317,7 @@ npm run test:coverage
220
317
 
221
318
  ### Release Build
222
319
 
223
- ```
320
+ ```bash
224
321
  git tag vX.Y.Z
225
322
  git push origin main --tags
226
323
  npm publish
@@ -234,15 +331,25 @@ npm publish
234
331
  - **Graphics**: SDL via @kmamal/sdl
235
332
  - **Serial**: SerialPort library
236
333
  - **CLI**: Commander.js
334
+ - **Terminal**: VTAC Terminal library
237
335
 
238
336
  ## Performance
239
337
 
240
- The emulator targets 2 MHz operation by default (configurable) and attempts to maintain accurate timing by synchronizing with real-time clock cycles. The frame rate is capped at 60 FPS for video output.
338
+ The emulator targets 1 MHz operation by default (configurable) and attempts to maintain accurate timing by synchronizing with real-time clock cycles. The frame rate is capped at 60 FPS for video output.
339
+
340
+ ## Supported Input Devices
341
+
342
+ - **Keyboard**: Full keyboard support via SDL for all targets
343
+ - **Game Controllers**: Dual controller support (Player A and Player B) for VCS and COB targets
344
+ - D-pad and analog stick support
345
+ - 8 buttons: Up, Down, Left, Right, A, B, Select, Start
346
+ - **Keypad**: 4×6 matrix keypad for KIM target (24 keys including arrows, numbers, and function keys)
241
347
 
242
348
  ## Credits
243
349
 
244
350
  - CPU implementation adapted from [OneLoneCoder's olcNES](https://github.com/OneLoneCoder/olcNES)
245
351
  - TMS9918 implementation based on [vrEmuTms9918](https://github.com/visrealm/vrEmuTms9918) by Troy Schrapel
352
+ - LCD implementation based on [vrEmuLcd](https://github.com/visrealm/vrEmuLcd) by Troy Schrapel
246
353
 
247
354
  ## License
248
355
 
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.4.0';
23
+ const VERSION = '1.5.0';
24
24
  const WIDTH = 320;
25
25
  const HEIGHT = 240;
26
26
  // Audio constants
@@ -58,6 +58,7 @@ class Emulator {
58
58
  this.setupAudio();
59
59
  this.setupWindow();
60
60
  this.setupControllers();
61
+ this.machine.reset(true);
61
62
  });
62
63
  }
63
64
  validateOptions() {
@@ -172,7 +173,7 @@ class Emulator {
172
173
  };
173
174
  }
174
175
  setupAudio() {
175
- if (this.options.target === 'kim' || this.options.target === 'dev')
176
+ if (this.options.target === 'kim')
176
177
  return;
177
178
  try {
178
179
  this.audioDevice = sdl_1.default.audio.openDevice({ type: 'playback' }, {
@@ -181,7 +182,11 @@ class Emulator {
181
182
  format: AUDIO_FORMAT,
182
183
  buffered: AUDIO_BUFFERED,
183
184
  });
184
- this.machine.io7.sampleRate = this.audioDevice.frequency;
185
+ // Configure Sound sample rate to match audio device (not needed for dev target)
186
+ if (this.options.target !== 'dev') {
187
+ ;
188
+ this.machine.io7.sampleRate = this.audioDevice.frequency;
189
+ }
185
190
  // Connect the Machine's audio callback to the SDL audio device
186
191
  this.machine.play = (samples) => {
187
192
  if (!this.audioDevice || this.audioDevice.closed)
@@ -326,12 +331,31 @@ class Emulator {
326
331
  for (let i = 0; i < WIDTH * HEIGHT; i++) {
327
332
  const v = src[i];
328
333
  const off = i * 4;
329
- rgbaBuffer[off] = v;
330
- rgbaBuffer[off + 1] = v;
331
- rgbaBuffer[off + 2] = v;
334
+ const r3 = (v >> 5) & 0x07;
335
+ const g3 = (v >> 2) & 0x07;
336
+ const b2 = v & 0x03;
337
+ rgbaBuffer[off] = (r3 << 5) | (r3 << 2) | (r3 >> 1);
338
+ rgbaBuffer[off + 1] = (g3 << 5) | (g3 << 2) | (g3 >> 1);
339
+ rgbaBuffer[off + 2] = (b2 << 6) | (b2 << 4) | (b2 << 2) | b2;
332
340
  rgbaBuffer[off + 3] = 0xFF;
333
341
  }
334
342
  this.window.render(WIDTH, HEIGHT, WIDTH * 4, 'rgba32', rgbaBuffer);
343
+ // Synthesize and play any queued VTAC bell tones
344
+ if (this.machine.play && this.audioDevice) {
345
+ const sampleRate = this.audioDevice.frequency;
346
+ while (devBoard.vtac.hasQueuedBells()) {
347
+ const bell = devBoard.vtac.getNextBell();
348
+ if (bell) {
349
+ const numSamples = Math.floor((bell.duration / 60) * sampleRate);
350
+ const samples = new Float32Array(numSamples);
351
+ const twoPiF = 2 * Math.PI * bell.frequency;
352
+ for (let i = 0; i < numSamples; i++) {
353
+ samples[i] = Math.sin(twoPiF * i / sampleRate);
354
+ }
355
+ this.machine.play(samples);
356
+ }
357
+ }
358
+ }
335
359
  };
336
360
  }
337
361
  this.window.on('close', () => this.shutdown());
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ac6502",
3
- "version": "1.4.0",
3
+ "version": "1.5.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",
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.4.0'
15
+ const VERSION = '1.5.0'
16
16
  const WIDTH = 320
17
17
  const HEIGHT = 240
18
18
 
@@ -76,6 +76,7 @@ class Emulator {
76
76
  this.setupAudio()
77
77
  this.setupWindow()
78
78
  this.setupControllers()
79
+ this.machine.reset(true)
79
80
  }
80
81
 
81
82
  private validateOptions(): void {
@@ -195,7 +196,7 @@ class Emulator {
195
196
  }
196
197
 
197
198
  private setupAudio(): void {
198
- if (this.options.target === 'kim' || this.options.target === 'dev') return
199
+ if (this.options.target === 'kim') return
199
200
  try {
200
201
  this.audioDevice = sdl.audio.openDevice({ type: 'playback' }, {
201
202
  channels: AUDIO_CHANNELS as 1,
@@ -204,8 +205,10 @@ class Emulator {
204
205
  buffered: AUDIO_BUFFERED,
205
206
  })
206
207
 
207
- // Configure Sound sample rate to match audio device
208
- ;(this.machine.io7 as Sound).sampleRate = this.audioDevice.frequency
208
+ // Configure Sound sample rate to match audio device (not needed for dev target)
209
+ if (this.options.target !== 'dev') {
210
+ ;(this.machine.io7 as Sound).sampleRate = this.audioDevice.frequency
211
+ }
209
212
 
210
213
  // Connect the Machine's audio callback to the SDL audio device
211
214
  this.machine.play = (samples: Float32Array) => {
@@ -347,12 +350,32 @@ class Emulator {
347
350
  for (let i = 0; i < WIDTH * HEIGHT; i++) {
348
351
  const v = src[i]
349
352
  const off = i * 4
350
- rgbaBuffer[off] = v
351
- rgbaBuffer[off + 1] = v
352
- rgbaBuffer[off + 2] = v
353
+ const r3 = (v >> 5) & 0x07
354
+ const g3 = (v >> 2) & 0x07
355
+ const b2 = v & 0x03
356
+ rgbaBuffer[off] = (r3 << 5) | (r3 << 2) | (r3 >> 1)
357
+ rgbaBuffer[off + 1] = (g3 << 5) | (g3 << 2) | (g3 >> 1)
358
+ rgbaBuffer[off + 2] = (b2 << 6) | (b2 << 4) | (b2 << 2) | b2
353
359
  rgbaBuffer[off + 3] = 0xFF
354
360
  }
355
361
  this.window.render(WIDTH, HEIGHT, WIDTH * 4, 'rgba32', rgbaBuffer)
362
+
363
+ // Synthesize and play any queued VTAC bell tones
364
+ if (this.machine.play && this.audioDevice) {
365
+ const sampleRate = this.audioDevice.frequency
366
+ while (devBoard.vtac.hasQueuedBells()) {
367
+ const bell = devBoard.vtac.getNextBell()
368
+ if (bell) {
369
+ const numSamples = Math.floor((bell.duration / 60) * sampleRate)
370
+ const samples = new Float32Array(numSamples)
371
+ const twoPiF = 2 * Math.PI * bell.frequency
372
+ for (let i = 0; i < numSamples; i++) {
373
+ samples[i] = Math.sin(twoPiF * i / sampleRate)
374
+ }
375
+ this.machine.play(samples)
376
+ }
377
+ }
378
+ }
356
379
  }
357
380
  }
358
381