@henols/vice-mcp 0.2.0 → 0.2.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.
Files changed (49) hide show
  1. package/README.md +2 -1
  2. package/THIRD-PARTY-NOTICES.md +1 -1
  3. package/anno-acme-ident.ts +97 -0
  4. package/anno-cli.ts +1465 -0
  5. package/anno-confidence.ts +233 -0
  6. package/anno-coverage.ts +2465 -0
  7. package/anno-d64.ts +310 -0
  8. package/anno-derive.ts +590 -0
  9. package/anno-details.ts +169 -0
  10. package/anno-enum-gen.ts +533 -0
  11. package/anno-export-asm.ts +1310 -0
  12. package/anno-index.ts +150 -0
  13. package/anno-memmap-render.ts +672 -0
  14. package/anno-regbits-gen.ts +421 -0
  15. package/anno-regbits.json +1370 -0
  16. package/anno-register.ts +240 -0
  17. package/anno-store.ts +3486 -0
  18. package/anno-symbols.ts +266 -0
  19. package/anno-tools.ts +2111 -0
  20. package/anno-types.ts +1636 -0
  21. package/block-class.ts +201 -0
  22. package/build.ts +1 -1
  23. package/capability-registry.ts +3 -1
  24. package/disasm-decoder.ts +14 -14
  25. package/disasm-opcodes.ts +4 -4
  26. package/disasm-renderer.ts +2 -2
  27. package/hostpath.ts +1 -1
  28. package/install-resources.ts +1 -1
  29. package/package.json +23 -3
  30. package/prg-image.ts +119 -0
  31. package/repo-root.ts +20 -5
  32. package/resources/broker-launch.mjs +8 -4
  33. package/resources/vice-launcher.sh +3 -3
  34. package/stock-address.ts +5 -5
  35. package/stock-cia.ts +2 -2
  36. package/stock-condition.ts +7 -7
  37. package/stock-connect.ts +1 -1
  38. package/stock-dispatch.ts +35 -5
  39. package/stock-execution.ts +5 -3
  40. package/stock-input.ts +9 -9
  41. package/stock-machine.ts +17 -6
  42. package/stock-protocol.ts +16 -11
  43. package/stock-registers.ts +54 -29
  44. package/stock-sprites.ts +3 -3
  45. package/stock-symbols.ts +33 -9
  46. package/stock-timing.ts +1 -1
  47. package/stock-vicii.ts +1 -1
  48. package/version.ts +1 -1
  49. package/vice-proxy.ts +168 -0
@@ -0,0 +1,1370 @@
1
+ {
2
+ "_generated": {
3
+ "generator": "anno-regbits-gen.ts",
4
+ "memmapSha256": "60a517c1833a44e6dc1a99a949554fa39834b558371d9f1e98531499fe3642fe",
5
+ "warning": "GENERATED FILE -- do not hand-edit. Regenerate via `node anno-regbits-gen.ts` from src/mcp/vice."
6
+ },
7
+ "$0001": {
8
+ "label": "MOS 6510 Micro-Processor On-Chip I/O Port",
9
+ "fields": [
10
+ {
11
+ "mask": 1,
12
+ "shift": 0,
13
+ "name": "LORAM_SIGNAL",
14
+ "kind": "numeric"
15
+ },
16
+ {
17
+ "mask": 2,
18
+ "shift": 1,
19
+ "name": "HIRAM_SIGNAL",
20
+ "kind": "numeric"
21
+ },
22
+ {
23
+ "mask": 4,
24
+ "shift": 2,
25
+ "name": "CHAREN_SIGNAL",
26
+ "kind": "numeric"
27
+ },
28
+ {
29
+ "mask": 8,
30
+ "shift": 3,
31
+ "name": "CASSETTE_DATA_OUTPUT_LINE",
32
+ "kind": "numeric"
33
+ },
34
+ {
35
+ "mask": 16,
36
+ "shift": 4,
37
+ "name": "CASSETTE_SWITCH_SENSE_1_SWITCH_CLOSED",
38
+ "kind": "numeric"
39
+ },
40
+ {
41
+ "mask": 32,
42
+ "shift": 5,
43
+ "name": "CASSETTE_MOTOR_CONTROL_O_ON_1_OFF",
44
+ "kind": "numeric"
45
+ },
46
+ {
47
+ "mask": 192,
48
+ "shift": 6,
49
+ "name": "UNDEFINED",
50
+ "kind": "numeric"
51
+ }
52
+ ]
53
+ },
54
+ "$D011": {
55
+ "label": "VIC Control Register",
56
+ "fields": [
57
+ {
58
+ "mask": 7,
59
+ "shift": 0,
60
+ "name": "YSCROLL",
61
+ "kind": "numeric"
62
+ },
63
+ {
64
+ "mask": 8,
65
+ "shift": 3,
66
+ "name": "ROWS",
67
+ "kind": "flag",
68
+ "tokens": {
69
+ "0": "ROW24",
70
+ "1": "ROW25"
71
+ }
72
+ },
73
+ {
74
+ "mask": 16,
75
+ "shift": 4,
76
+ "name": "SCREENON",
77
+ "kind": "flag",
78
+ "tokens": {
79
+ "0": "SCREENOFF",
80
+ "1": "SCREENON"
81
+ }
82
+ },
83
+ {
84
+ "mask": 32,
85
+ "shift": 5,
86
+ "name": "MODE",
87
+ "kind": "flag",
88
+ "tokens": {
89
+ "0": "TEXT",
90
+ "1": "BITMAP"
91
+ }
92
+ },
93
+ {
94
+ "mask": 64,
95
+ "shift": 6,
96
+ "name": "ECM",
97
+ "kind": "flag",
98
+ "tokens": {
99
+ "0": "",
100
+ "1": "ECM"
101
+ }
102
+ },
103
+ {
104
+ "mask": 128,
105
+ "shift": 7,
106
+ "name": "RST8",
107
+ "kind": "flag",
108
+ "tokens": {
109
+ "0": "",
110
+ "1": "RST8"
111
+ }
112
+ }
113
+ ]
114
+ },
115
+ "$D015": {
116
+ "label": "Sprite Enable",
117
+ "fields": [
118
+ {
119
+ "mask": 1,
120
+ "shift": 0,
121
+ "name": "SPR0EN",
122
+ "kind": "flag",
123
+ "tokens": {
124
+ "0": "",
125
+ "1": "SPR0EN"
126
+ }
127
+ },
128
+ {
129
+ "mask": 2,
130
+ "shift": 1,
131
+ "name": "SPR1EN",
132
+ "kind": "flag",
133
+ "tokens": {
134
+ "0": "",
135
+ "1": "SPR1EN"
136
+ }
137
+ },
138
+ {
139
+ "mask": 4,
140
+ "shift": 2,
141
+ "name": "SPR2EN",
142
+ "kind": "flag",
143
+ "tokens": {
144
+ "0": "",
145
+ "1": "SPR2EN"
146
+ }
147
+ },
148
+ {
149
+ "mask": 8,
150
+ "shift": 3,
151
+ "name": "SPR3EN",
152
+ "kind": "flag",
153
+ "tokens": {
154
+ "0": "",
155
+ "1": "SPR3EN"
156
+ }
157
+ },
158
+ {
159
+ "mask": 16,
160
+ "shift": 4,
161
+ "name": "SPR4EN",
162
+ "kind": "flag",
163
+ "tokens": {
164
+ "0": "",
165
+ "1": "SPR4EN"
166
+ }
167
+ },
168
+ {
169
+ "mask": 32,
170
+ "shift": 5,
171
+ "name": "SPR5EN",
172
+ "kind": "flag",
173
+ "tokens": {
174
+ "0": "",
175
+ "1": "SPR5EN"
176
+ }
177
+ },
178
+ {
179
+ "mask": 64,
180
+ "shift": 6,
181
+ "name": "SPR6EN",
182
+ "kind": "flag",
183
+ "tokens": {
184
+ "0": "",
185
+ "1": "SPR6EN"
186
+ }
187
+ },
188
+ {
189
+ "mask": 128,
190
+ "shift": 7,
191
+ "name": "SPR7EN",
192
+ "kind": "flag",
193
+ "tokens": {
194
+ "0": "",
195
+ "1": "SPR7EN"
196
+ }
197
+ }
198
+ ]
199
+ },
200
+ "$D016": {
201
+ "label": "VIC Control Register",
202
+ "fields": [
203
+ {
204
+ "mask": 7,
205
+ "shift": 0,
206
+ "name": "SMOOTH_SCROLL_TO_X_POS",
207
+ "kind": "numeric"
208
+ },
209
+ {
210
+ "mask": 8,
211
+ "shift": 3,
212
+ "name": "SELECT_38_40_COLUMN_TEXT_DISPLAY_1_40_COLS",
213
+ "kind": "numeric"
214
+ },
215
+ {
216
+ "mask": 16,
217
+ "shift": 4,
218
+ "name": "MULTI_COLOR_MODE_1_ENABLE",
219
+ "kind": "numeric"
220
+ },
221
+ {
222
+ "mask": 32,
223
+ "shift": 5,
224
+ "name": "ALWAYS_SET_THIS_BIT_TO_0",
225
+ "kind": "numeric"
226
+ },
227
+ {
228
+ "mask": 192,
229
+ "shift": 6,
230
+ "name": "UNUSED",
231
+ "kind": "numeric"
232
+ }
233
+ ]
234
+ },
235
+ "$D017": {
236
+ "label": "Sprite Y-Expand",
237
+ "fields": [
238
+ {
239
+ "mask": 1,
240
+ "shift": 0,
241
+ "name": "SPR0YEXP",
242
+ "kind": "flag",
243
+ "tokens": {
244
+ "0": "",
245
+ "1": "SPR0YEXP"
246
+ }
247
+ },
248
+ {
249
+ "mask": 2,
250
+ "shift": 1,
251
+ "name": "SPR1YEXP",
252
+ "kind": "flag",
253
+ "tokens": {
254
+ "0": "",
255
+ "1": "SPR1YEXP"
256
+ }
257
+ },
258
+ {
259
+ "mask": 4,
260
+ "shift": 2,
261
+ "name": "SPR2YEXP",
262
+ "kind": "flag",
263
+ "tokens": {
264
+ "0": "",
265
+ "1": "SPR2YEXP"
266
+ }
267
+ },
268
+ {
269
+ "mask": 8,
270
+ "shift": 3,
271
+ "name": "SPR3YEXP",
272
+ "kind": "flag",
273
+ "tokens": {
274
+ "0": "",
275
+ "1": "SPR3YEXP"
276
+ }
277
+ },
278
+ {
279
+ "mask": 16,
280
+ "shift": 4,
281
+ "name": "SPR4YEXP",
282
+ "kind": "flag",
283
+ "tokens": {
284
+ "0": "",
285
+ "1": "SPR4YEXP"
286
+ }
287
+ },
288
+ {
289
+ "mask": 32,
290
+ "shift": 5,
291
+ "name": "SPR5YEXP",
292
+ "kind": "flag",
293
+ "tokens": {
294
+ "0": "",
295
+ "1": "SPR5YEXP"
296
+ }
297
+ },
298
+ {
299
+ "mask": 64,
300
+ "shift": 6,
301
+ "name": "SPR6YEXP",
302
+ "kind": "flag",
303
+ "tokens": {
304
+ "0": "",
305
+ "1": "SPR6YEXP"
306
+ }
307
+ },
308
+ {
309
+ "mask": 128,
310
+ "shift": 7,
311
+ "name": "SPR7YEXP",
312
+ "kind": "flag",
313
+ "tokens": {
314
+ "0": "",
315
+ "1": "SPR7YEXP"
316
+ }
317
+ }
318
+ ]
319
+ },
320
+ "$D018": {
321
+ "label": "VIC Memory Control Register",
322
+ "fields": [
323
+ {
324
+ "mask": 1,
325
+ "shift": 0,
326
+ "name": "SELECT_UPPER_LOWER_CHARACTER_SET",
327
+ "kind": "numeric"
328
+ },
329
+ {
330
+ "mask": 14,
331
+ "shift": 1,
332
+ "name": "CHARACTER_DOT_DATA_BASE_ADDRESS",
333
+ "kind": "numeric"
334
+ },
335
+ {
336
+ "mask": 240,
337
+ "shift": 4,
338
+ "name": "VIDEO_MATRIX_BASE_ADDRESS",
339
+ "kind": "numeric"
340
+ }
341
+ ]
342
+ },
343
+ "$D019": {
344
+ "label": "VIC Interrupt Flag Register (Bit = 1",
345
+ "fields": [
346
+ {
347
+ "mask": 1,
348
+ "shift": 0,
349
+ "name": "RASTER_COMPARE_IRQ_FLAG",
350
+ "kind": "numeric"
351
+ },
352
+ {
353
+ "mask": 2,
354
+ "shift": 1,
355
+ "name": "SPRITE_TO_BACKGROUND_COLLISION_IRQ_FLAG",
356
+ "kind": "numeric"
357
+ },
358
+ {
359
+ "mask": 4,
360
+ "shift": 2,
361
+ "name": "SPRITE_TO_SPRITE_COLLISION_IRQ_FLAG",
362
+ "kind": "numeric"
363
+ },
364
+ {
365
+ "mask": 8,
366
+ "shift": 3,
367
+ "name": "LIGHT_PEN_TRIGGERED_IRQ_FLAG",
368
+ "kind": "numeric"
369
+ },
370
+ {
371
+ "mask": 128,
372
+ "shift": 7,
373
+ "name": "SET_ON_ANY_ENABLED_VIC_IRQ_CONDITION",
374
+ "kind": "numeric"
375
+ }
376
+ ]
377
+ },
378
+ "$D01A": {
379
+ "label": "VIC Interrupt Enable Register",
380
+ "fields": [
381
+ {
382
+ "mask": 1,
383
+ "shift": 0,
384
+ "name": "RSTIRQEN",
385
+ "kind": "numeric"
386
+ },
387
+ {
388
+ "mask": 2,
389
+ "shift": 1,
390
+ "name": "SPRBGIRQEN",
391
+ "kind": "numeric"
392
+ },
393
+ {
394
+ "mask": 4,
395
+ "shift": 2,
396
+ "name": "SPRSPRIRQEN",
397
+ "kind": "numeric"
398
+ },
399
+ {
400
+ "mask": 8,
401
+ "shift": 3,
402
+ "name": "LPIRQEN",
403
+ "kind": "numeric"
404
+ },
405
+ {
406
+ "mask": 240,
407
+ "shift": 4,
408
+ "name": "IRQENUNUSED",
409
+ "kind": "numeric"
410
+ }
411
+ ]
412
+ },
413
+ "$D01B": {
414
+ "label": "Sprite Data Priority",
415
+ "fields": [
416
+ {
417
+ "mask": 1,
418
+ "shift": 0,
419
+ "name": "SPR0BG",
420
+ "kind": "flag",
421
+ "tokens": {
422
+ "0": "",
423
+ "1": "SPR0BG"
424
+ }
425
+ },
426
+ {
427
+ "mask": 2,
428
+ "shift": 1,
429
+ "name": "SPR1BG",
430
+ "kind": "flag",
431
+ "tokens": {
432
+ "0": "",
433
+ "1": "SPR1BG"
434
+ }
435
+ },
436
+ {
437
+ "mask": 4,
438
+ "shift": 2,
439
+ "name": "SPR2BG",
440
+ "kind": "flag",
441
+ "tokens": {
442
+ "0": "",
443
+ "1": "SPR2BG"
444
+ }
445
+ },
446
+ {
447
+ "mask": 8,
448
+ "shift": 3,
449
+ "name": "SPR3BG",
450
+ "kind": "flag",
451
+ "tokens": {
452
+ "0": "",
453
+ "1": "SPR3BG"
454
+ }
455
+ },
456
+ {
457
+ "mask": 16,
458
+ "shift": 4,
459
+ "name": "SPR4BG",
460
+ "kind": "flag",
461
+ "tokens": {
462
+ "0": "",
463
+ "1": "SPR4BG"
464
+ }
465
+ },
466
+ {
467
+ "mask": 32,
468
+ "shift": 5,
469
+ "name": "SPR5BG",
470
+ "kind": "flag",
471
+ "tokens": {
472
+ "0": "",
473
+ "1": "SPR5BG"
474
+ }
475
+ },
476
+ {
477
+ "mask": 64,
478
+ "shift": 6,
479
+ "name": "SPR6BG",
480
+ "kind": "flag",
481
+ "tokens": {
482
+ "0": "",
483
+ "1": "SPR6BG"
484
+ }
485
+ },
486
+ {
487
+ "mask": 128,
488
+ "shift": 7,
489
+ "name": "SPR7BG",
490
+ "kind": "flag",
491
+ "tokens": {
492
+ "0": "",
493
+ "1": "SPR7BG"
494
+ }
495
+ }
496
+ ]
497
+ },
498
+ "$D01C": {
499
+ "label": "Sprite Multicolor",
500
+ "fields": [
501
+ {
502
+ "mask": 1,
503
+ "shift": 0,
504
+ "name": "SPR0MC",
505
+ "kind": "flag",
506
+ "tokens": {
507
+ "0": "",
508
+ "1": "SPR0MC"
509
+ }
510
+ },
511
+ {
512
+ "mask": 2,
513
+ "shift": 1,
514
+ "name": "SPR1MC",
515
+ "kind": "flag",
516
+ "tokens": {
517
+ "0": "",
518
+ "1": "SPR1MC"
519
+ }
520
+ },
521
+ {
522
+ "mask": 4,
523
+ "shift": 2,
524
+ "name": "SPR2MC",
525
+ "kind": "flag",
526
+ "tokens": {
527
+ "0": "",
528
+ "1": "SPR2MC"
529
+ }
530
+ },
531
+ {
532
+ "mask": 8,
533
+ "shift": 3,
534
+ "name": "SPR3MC",
535
+ "kind": "flag",
536
+ "tokens": {
537
+ "0": "",
538
+ "1": "SPR3MC"
539
+ }
540
+ },
541
+ {
542
+ "mask": 16,
543
+ "shift": 4,
544
+ "name": "SPR4MC",
545
+ "kind": "flag",
546
+ "tokens": {
547
+ "0": "",
548
+ "1": "SPR4MC"
549
+ }
550
+ },
551
+ {
552
+ "mask": 32,
553
+ "shift": 5,
554
+ "name": "SPR5MC",
555
+ "kind": "flag",
556
+ "tokens": {
557
+ "0": "",
558
+ "1": "SPR5MC"
559
+ }
560
+ },
561
+ {
562
+ "mask": 64,
563
+ "shift": 6,
564
+ "name": "SPR6MC",
565
+ "kind": "flag",
566
+ "tokens": {
567
+ "0": "",
568
+ "1": "SPR6MC"
569
+ }
570
+ },
571
+ {
572
+ "mask": 128,
573
+ "shift": 7,
574
+ "name": "SPR7MC",
575
+ "kind": "flag",
576
+ "tokens": {
577
+ "0": "",
578
+ "1": "SPR7MC"
579
+ }
580
+ }
581
+ ]
582
+ },
583
+ "$D01D": {
584
+ "label": "Sprite X-Expand",
585
+ "fields": [
586
+ {
587
+ "mask": 1,
588
+ "shift": 0,
589
+ "name": "SPR0XEXP",
590
+ "kind": "flag",
591
+ "tokens": {
592
+ "0": "",
593
+ "1": "SPR0XEXP"
594
+ }
595
+ },
596
+ {
597
+ "mask": 2,
598
+ "shift": 1,
599
+ "name": "SPR1XEXP",
600
+ "kind": "flag",
601
+ "tokens": {
602
+ "0": "",
603
+ "1": "SPR1XEXP"
604
+ }
605
+ },
606
+ {
607
+ "mask": 4,
608
+ "shift": 2,
609
+ "name": "SPR2XEXP",
610
+ "kind": "flag",
611
+ "tokens": {
612
+ "0": "",
613
+ "1": "SPR2XEXP"
614
+ }
615
+ },
616
+ {
617
+ "mask": 8,
618
+ "shift": 3,
619
+ "name": "SPR3XEXP",
620
+ "kind": "flag",
621
+ "tokens": {
622
+ "0": "",
623
+ "1": "SPR3XEXP"
624
+ }
625
+ },
626
+ {
627
+ "mask": 16,
628
+ "shift": 4,
629
+ "name": "SPR4XEXP",
630
+ "kind": "flag",
631
+ "tokens": {
632
+ "0": "",
633
+ "1": "SPR4XEXP"
634
+ }
635
+ },
636
+ {
637
+ "mask": 32,
638
+ "shift": 5,
639
+ "name": "SPR5XEXP",
640
+ "kind": "flag",
641
+ "tokens": {
642
+ "0": "",
643
+ "1": "SPR5XEXP"
644
+ }
645
+ },
646
+ {
647
+ "mask": 64,
648
+ "shift": 6,
649
+ "name": "SPR6XEXP",
650
+ "kind": "flag",
651
+ "tokens": {
652
+ "0": "",
653
+ "1": "SPR6XEXP"
654
+ }
655
+ },
656
+ {
657
+ "mask": 128,
658
+ "shift": 7,
659
+ "name": "SPR7XEXP",
660
+ "kind": "flag",
661
+ "tokens": {
662
+ "0": "",
663
+ "1": "SPR7XEXP"
664
+ }
665
+ }
666
+ ]
667
+ },
668
+ "$D403": {
669
+ "label": "7-4 Unused",
670
+ "fields": [
671
+ {
672
+ "mask": 15,
673
+ "shift": 0,
674
+ "name": "VOICE_1_PULSE_WAVEFORM_WIDTH_HIGH_NYBBLE",
675
+ "kind": "numeric"
676
+ }
677
+ ]
678
+ },
679
+ "$D404": {
680
+ "label": "Voice 1",
681
+ "fields": [
682
+ {
683
+ "mask": 1,
684
+ "shift": 0,
685
+ "name": "GATE_BIT_1_START_ATT_DEC_SUS_0_START_RELEASE",
686
+ "kind": "numeric"
687
+ },
688
+ {
689
+ "mask": 2,
690
+ "shift": 1,
691
+ "name": "SYNCHRONIZE_OSC_1_WITH_OSC_3_FREQUENCY_1_ON",
692
+ "kind": "numeric"
693
+ },
694
+ {
695
+ "mask": 4,
696
+ "shift": 2,
697
+ "name": "RING_MODULATE_OSC_1_WITH_OSC_3_OUTPUT_1_ON",
698
+ "kind": "numeric"
699
+ },
700
+ {
701
+ "mask": 8,
702
+ "shift": 3,
703
+ "name": "TEST_BIT_1_DISABLE_OSCILLATOR_1",
704
+ "kind": "numeric"
705
+ },
706
+ {
707
+ "mask": 16,
708
+ "shift": 4,
709
+ "name": "SELECT_TRIANGLE_WAVEFORM_1_ON",
710
+ "kind": "numeric"
711
+ },
712
+ {
713
+ "mask": 32,
714
+ "shift": 5,
715
+ "name": "SELECT_SAWTOOTH_WAVEFORM_1_ON",
716
+ "kind": "numeric"
717
+ },
718
+ {
719
+ "mask": 64,
720
+ "shift": 6,
721
+ "name": "SELECT_PULSE_WAVEFORM_1_ON",
722
+ "kind": "numeric"
723
+ },
724
+ {
725
+ "mask": 128,
726
+ "shift": 7,
727
+ "name": "SELECT_RANDOM_NOISE_WAVEFORM_1_ON",
728
+ "kind": "numeric"
729
+ }
730
+ ]
731
+ },
732
+ "$D405": {
733
+ "label": "Envelope Generator 1",
734
+ "fields": [
735
+ {
736
+ "mask": 15,
737
+ "shift": 0,
738
+ "name": "SELECT_DECAY_CYCLE_DURATION_0_15",
739
+ "kind": "numeric"
740
+ },
741
+ {
742
+ "mask": 240,
743
+ "shift": 4,
744
+ "name": "SELECT_ATTACK_CYCLE_DURATION_O_15",
745
+ "kind": "numeric"
746
+ }
747
+ ]
748
+ },
749
+ "$D406": {
750
+ "label": "Envelope Generator 1",
751
+ "fields": [
752
+ {
753
+ "mask": 15,
754
+ "shift": 0,
755
+ "name": "SELECT_RELEASE_CYCLE_DURATION_O_15",
756
+ "kind": "numeric"
757
+ },
758
+ {
759
+ "mask": 240,
760
+ "shift": 4,
761
+ "name": "SELECT_SUSTAIN_CYCLE_DURATION_O_15",
762
+ "kind": "numeric"
763
+ }
764
+ ]
765
+ },
766
+ "$D40A": {
767
+ "label": "7-4 Unused",
768
+ "fields": [
769
+ {
770
+ "mask": 15,
771
+ "shift": 0,
772
+ "name": "VOICE_2_PULSE_WAVEFORM_WIDTH_HIGH_NYBBLE",
773
+ "kind": "numeric"
774
+ }
775
+ ]
776
+ },
777
+ "$D40B": {
778
+ "label": "Voice 2",
779
+ "fields": [
780
+ {
781
+ "mask": 1,
782
+ "shift": 0,
783
+ "name": "GATE_BIT_1_START_ATT_DEC_SUS_0_START_RELEASE",
784
+ "kind": "numeric"
785
+ },
786
+ {
787
+ "mask": 2,
788
+ "shift": 1,
789
+ "name": "SYNCHRONIZE_OSC_2_WITH_OSC_1_FREQUENCY_1_ON",
790
+ "kind": "numeric"
791
+ },
792
+ {
793
+ "mask": 4,
794
+ "shift": 2,
795
+ "name": "RING_MODULATE_OSC_2_WITH_OSC_1_OUTPUT_1_ON",
796
+ "kind": "numeric"
797
+ },
798
+ {
799
+ "mask": 8,
800
+ "shift": 3,
801
+ "name": "TEST_BIT_1_DISABLE_OSCILLATOR_1",
802
+ "kind": "numeric"
803
+ },
804
+ {
805
+ "mask": 16,
806
+ "shift": 4,
807
+ "name": "SELECT_TRIANGLE_WAVEFORM_1_ON",
808
+ "kind": "numeric"
809
+ },
810
+ {
811
+ "mask": 32,
812
+ "shift": 5,
813
+ "name": "SELECT_SAWTOOTH_WAVEFORM_1_ON",
814
+ "kind": "numeric"
815
+ },
816
+ {
817
+ "mask": 64,
818
+ "shift": 6,
819
+ "name": "SELECT_PULSE_WAVEFORM_1_ON",
820
+ "kind": "numeric"
821
+ },
822
+ {
823
+ "mask": 128,
824
+ "shift": 7,
825
+ "name": "SELECT_RANDOM_NOISE_WAVEFORM_1_ON",
826
+ "kind": "numeric"
827
+ }
828
+ ]
829
+ },
830
+ "$D40C": {
831
+ "label": "Envelope Generator 2",
832
+ "fields": [
833
+ {
834
+ "mask": 15,
835
+ "shift": 0,
836
+ "name": "SELECT_DECAY_CYCLE_DURATION_0_15",
837
+ "kind": "numeric"
838
+ },
839
+ {
840
+ "mask": 240,
841
+ "shift": 4,
842
+ "name": "SELECT_ATTACK_CYCLE_DURATION_O_15",
843
+ "kind": "numeric"
844
+ }
845
+ ]
846
+ },
847
+ "$D40D": {
848
+ "label": "Envelope Generator 2",
849
+ "fields": [
850
+ {
851
+ "mask": 15,
852
+ "shift": 0,
853
+ "name": "SELECT_RELEASE_CYCLE_DURATION_O_15",
854
+ "kind": "numeric"
855
+ },
856
+ {
857
+ "mask": 240,
858
+ "shift": 4,
859
+ "name": "SELECT_SUSTAIN_CYCLE_DURATION_O_15",
860
+ "kind": "numeric"
861
+ }
862
+ ]
863
+ },
864
+ "$D411": {
865
+ "label": "7-4 Unused",
866
+ "fields": [
867
+ {
868
+ "mask": 15,
869
+ "shift": 0,
870
+ "name": "VOICE_3_PULSE_WAVEFORM_WIDTH_HIGH_NYBBLE",
871
+ "kind": "numeric"
872
+ }
873
+ ]
874
+ },
875
+ "$D412": {
876
+ "label": "Voice 3",
877
+ "fields": [
878
+ {
879
+ "mask": 1,
880
+ "shift": 0,
881
+ "name": "GATE_BIT_1_START_ATT_DEC_SUS_0_START_RELEASE",
882
+ "kind": "numeric"
883
+ },
884
+ {
885
+ "mask": 2,
886
+ "shift": 1,
887
+ "name": "SYNCHRONIZE_OSC_3_WITH_OSC_2_FREQUENCY_1_ON",
888
+ "kind": "numeric"
889
+ },
890
+ {
891
+ "mask": 4,
892
+ "shift": 2,
893
+ "name": "RING_MODULATE_OSC_3_WITH_OSC_2_OUTPUT_1_ON",
894
+ "kind": "numeric"
895
+ },
896
+ {
897
+ "mask": 8,
898
+ "shift": 3,
899
+ "name": "TEST_BIT_1_DISABLE_OSCILLATOR_1",
900
+ "kind": "numeric"
901
+ },
902
+ {
903
+ "mask": 16,
904
+ "shift": 4,
905
+ "name": "SELECT_TRIANGLE_WAVEFORM_1_ON",
906
+ "kind": "numeric"
907
+ },
908
+ {
909
+ "mask": 32,
910
+ "shift": 5,
911
+ "name": "SELECT_SAWTOOTH_WAVEFORM_1_ON",
912
+ "kind": "numeric"
913
+ },
914
+ {
915
+ "mask": 64,
916
+ "shift": 6,
917
+ "name": "SELECT_PULSE_WAVEFORM_1_ON",
918
+ "kind": "numeric"
919
+ },
920
+ {
921
+ "mask": 128,
922
+ "shift": 7,
923
+ "name": "SELECT_RANDOM_NOISE_WAVEFORM_1_ON",
924
+ "kind": "numeric"
925
+ }
926
+ ]
927
+ },
928
+ "$D413": {
929
+ "label": "Envelope Generator 3",
930
+ "fields": [
931
+ {
932
+ "mask": 15,
933
+ "shift": 0,
934
+ "name": "SELECT_DECAY_CYCLE_DURATION_0_15",
935
+ "kind": "numeric"
936
+ },
937
+ {
938
+ "mask": 240,
939
+ "shift": 4,
940
+ "name": "SELECT_ATTACK_CYCLE_DURATION_O_15",
941
+ "kind": "numeric"
942
+ }
943
+ ]
944
+ },
945
+ "$D414": {
946
+ "label": "Envelope Generator 3",
947
+ "fields": [
948
+ {
949
+ "mask": 15,
950
+ "shift": 0,
951
+ "name": "SELECT_RELEASE_CYCLE_DURATION_O_15",
952
+ "kind": "numeric"
953
+ },
954
+ {
955
+ "mask": 240,
956
+ "shift": 4,
957
+ "name": "SELECT_SUSTAIN_CYCLE_DURATION_O_15",
958
+ "kind": "numeric"
959
+ }
960
+ ]
961
+ },
962
+ "$D417": {
963
+ "label": "Filter Resonance Control / Voice Input Control",
964
+ "fields": [
965
+ {
966
+ "mask": 1,
967
+ "shift": 0,
968
+ "name": "FILTER_VOICE_1_OUTPUT_1_YES_0_NO",
969
+ "kind": "numeric"
970
+ },
971
+ {
972
+ "mask": 4,
973
+ "shift": 2,
974
+ "name": "FILTER_VOICE_3_OUTPUT_1_YES_0_NO_FILTER_VOICE_2_OUTPUT_1_YES_0_NO",
975
+ "kind": "numeric"
976
+ },
977
+ {
978
+ "mask": 8,
979
+ "shift": 3,
980
+ "name": "FILTER_EXTERNAL_INPUT_1_YES_0_NO",
981
+ "kind": "numeric"
982
+ },
983
+ {
984
+ "mask": 240,
985
+ "shift": 4,
986
+ "name": "SELECT_FILTER_RESONANCE_0_15",
987
+ "kind": "numeric"
988
+ }
989
+ ]
990
+ },
991
+ "$D418": {
992
+ "label": "Select Filter Mode and Volume",
993
+ "fields": [
994
+ {
995
+ "mask": 15,
996
+ "shift": 0,
997
+ "name": "SELECT_OUTPUT_VOLUME_0_15",
998
+ "kind": "numeric"
999
+ },
1000
+ {
1001
+ "mask": 16,
1002
+ "shift": 4,
1003
+ "name": "SELECT_FILTER_LOW_PASS_MODE_1_ON",
1004
+ "kind": "numeric"
1005
+ },
1006
+ {
1007
+ "mask": 32,
1008
+ "shift": 5,
1009
+ "name": "SELECT_FILTER_BAND_PASS_MODE_1_ON",
1010
+ "kind": "numeric"
1011
+ },
1012
+ {
1013
+ "mask": 64,
1014
+ "shift": 6,
1015
+ "name": "SELECT_FILTER_HIGH_PASS_MODE_1_ON",
1016
+ "kind": "numeric"
1017
+ },
1018
+ {
1019
+ "mask": 128,
1020
+ "shift": 7,
1021
+ "name": "CUT_OFF_VOICE_3_OUTPUT_1_OFF_O_ON",
1022
+ "kind": "numeric"
1023
+ }
1024
+ ]
1025
+ },
1026
+ "$DC00": {
1027
+ "label": "Data Port A (Keyboard, Joystick, Paddles, Light-Pen)",
1028
+ "fields": [
1029
+ {
1030
+ "mask": 255,
1031
+ "shift": 0,
1032
+ "name": "WRITE_KEYBOARD_COLUMN_VALUES_FOR_KEYBOARD_SCAN",
1033
+ "kind": "numeric"
1034
+ }
1035
+ ]
1036
+ },
1037
+ "$DC01": {
1038
+ "label": "Data Port B (Keyboard, Joystick, Paddles)",
1039
+ "fields": [
1040
+ {
1041
+ "mask": 255,
1042
+ "shift": 0,
1043
+ "name": "READ_KEYBOARD_ROW_VALUES_FOR_KEYBOARD_SCAN",
1044
+ "kind": "numeric"
1045
+ }
1046
+ ]
1047
+ },
1048
+ "$DC0D": {
1049
+ "label": "CIA Interrupt Control Register (Read IRQs/Write Mask)",
1050
+ "fields": [
1051
+ {
1052
+ "mask": 1,
1053
+ "shift": 0,
1054
+ "name": "TIMER_A_INTERRUPT",
1055
+ "kind": "numeric"
1056
+ },
1057
+ {
1058
+ "mask": 2,
1059
+ "shift": 1,
1060
+ "name": "TIMER_B_INTERRUPT",
1061
+ "kind": "numeric"
1062
+ },
1063
+ {
1064
+ "mask": 4,
1065
+ "shift": 2,
1066
+ "name": "TIME_OF_DAY_CLOCK_ALARM_INTERRUPT",
1067
+ "kind": "numeric"
1068
+ },
1069
+ {
1070
+ "mask": 8,
1071
+ "shift": 3,
1072
+ "name": "SERIAL_PORT_INTERRUPT",
1073
+ "kind": "numeric"
1074
+ },
1075
+ {
1076
+ "mask": 16,
1077
+ "shift": 4,
1078
+ "name": "FLAG1_IRQ",
1079
+ "kind": "numeric"
1080
+ },
1081
+ {
1082
+ "mask": 128,
1083
+ "shift": 7,
1084
+ "name": "IRQ_FLAG_SET_CLEAR_FLAG",
1085
+ "kind": "numeric"
1086
+ }
1087
+ ]
1088
+ },
1089
+ "$DC0E": {
1090
+ "label": "CIA Control Register A",
1091
+ "fields": [
1092
+ {
1093
+ "mask": 1,
1094
+ "shift": 0,
1095
+ "name": "START_STOP_TIMER_A_1_START_0_STOP",
1096
+ "kind": "numeric"
1097
+ },
1098
+ {
1099
+ "mask": 2,
1100
+ "shift": 1,
1101
+ "name": "TIMER_A_OUTPUT_ON_PB6_1_YES_0_NO",
1102
+ "kind": "numeric"
1103
+ },
1104
+ {
1105
+ "mask": 4,
1106
+ "shift": 2,
1107
+ "name": "TIMER_A_OUTPUT_MODE_TO_PB6_1_TOGGLE_0_PULSE",
1108
+ "kind": "numeric"
1109
+ },
1110
+ {
1111
+ "mask": 8,
1112
+ "shift": 3,
1113
+ "name": "TIMER_A_RUN_MODE_1_ONE_SHOT_0_CONTINUOUS",
1114
+ "kind": "numeric"
1115
+ },
1116
+ {
1117
+ "mask": 16,
1118
+ "shift": 4,
1119
+ "name": "FORCE_LOAD_TIMER_A_1_YES",
1120
+ "kind": "numeric"
1121
+ },
1122
+ {
1123
+ "mask": 32,
1124
+ "shift": 5,
1125
+ "name": "TIMER_A_COUNTS_1_CNT_SIGNALS_0_SYSTEM_02_CLOCK",
1126
+ "kind": "numeric"
1127
+ },
1128
+ {
1129
+ "mask": 64,
1130
+ "shift": 6,
1131
+ "name": "SERIAL_PORT_I_O_MODE_OUTPUT_0_INPUT",
1132
+ "kind": "numeric"
1133
+ },
1134
+ {
1135
+ "mask": 128,
1136
+ "shift": 7,
1137
+ "name": "TIME_OF_DAY_CLOCK_FREQUENCY_1_50_HZ_0_60_HZ",
1138
+ "kind": "numeric"
1139
+ }
1140
+ ]
1141
+ },
1142
+ "$DC0F": {
1143
+ "label": "CIA Control Register B",
1144
+ "fields": [
1145
+ {
1146
+ "mask": 31,
1147
+ "shift": 0,
1148
+ "name": "SAME_AS_CIA_CONTROL_REG_A_FOR_TIMER_B",
1149
+ "kind": "numeric"
1150
+ },
1151
+ {
1152
+ "mask": 96,
1153
+ "shift": 5,
1154
+ "name": "TIMER_B_MODE_SELECT_00_COUNT_SYSTEM_02_CLOCK_PULSES_01_COUNT_POSITIVE_CNT_TRANSITIONS_10_COUNT_TIMER_A_UNDERFLOW_PULSES_11_COUNT_TIMER_A_UNDERFLOWS_WHILE_CNT_POSITIVE",
1155
+ "kind": "numeric"
1156
+ },
1157
+ {
1158
+ "mask": 128,
1159
+ "shift": 7,
1160
+ "name": "SET_ALARM_TOD_CLOCK_1_ALARM_0_CLOCK",
1161
+ "kind": "numeric"
1162
+ }
1163
+ ]
1164
+ },
1165
+ "$DD00": {
1166
+ "label": "Data Port A (Serial Bus, RS-232, VIC Memory Control)",
1167
+ "fields": [
1168
+ {
1169
+ "mask": 4,
1170
+ "shift": 2,
1171
+ "name": "RS_232_DATA_OUTPUT",
1172
+ "kind": "numeric"
1173
+ },
1174
+ {
1175
+ "mask": 8,
1176
+ "shift": 3,
1177
+ "name": "SERIAL_BUS_ATN_SIGNAL_OUTPUT",
1178
+ "kind": "numeric"
1179
+ },
1180
+ {
1181
+ "mask": 16,
1182
+ "shift": 4,
1183
+ "name": "SERIAL_BUS_CLOCK_PULSE_OUTPUT",
1184
+ "kind": "numeric"
1185
+ },
1186
+ {
1187
+ "mask": 32,
1188
+ "shift": 5,
1189
+ "name": "SERIAL_BUS_DATA_OUTPUT",
1190
+ "kind": "numeric"
1191
+ },
1192
+ {
1193
+ "mask": 64,
1194
+ "shift": 6,
1195
+ "name": "SERIAL_BUS_CLOCK_PULSE_INPUT",
1196
+ "kind": "numeric"
1197
+ },
1198
+ {
1199
+ "mask": 128,
1200
+ "shift": 7,
1201
+ "name": "SERIAL_BUS_DATA_INPUT",
1202
+ "kind": "numeric"
1203
+ }
1204
+ ]
1205
+ },
1206
+ "$DD01": {
1207
+ "label": "Data Port B (User Port, RS-232)",
1208
+ "fields": [
1209
+ {
1210
+ "mask": 1,
1211
+ "shift": 0,
1212
+ "name": "USER_RS_232_RECEIVED_DATA",
1213
+ "kind": "numeric"
1214
+ },
1215
+ {
1216
+ "mask": 2,
1217
+ "shift": 1,
1218
+ "name": "USER_RS_232_REQUEST_TO_SEND",
1219
+ "kind": "numeric"
1220
+ },
1221
+ {
1222
+ "mask": 4,
1223
+ "shift": 2,
1224
+ "name": "USER_RS_232_DATA_TERMINAL_READY",
1225
+ "kind": "numeric"
1226
+ },
1227
+ {
1228
+ "mask": 8,
1229
+ "shift": 3,
1230
+ "name": "USER_RS_232_RING_INDICATOR",
1231
+ "kind": "numeric"
1232
+ },
1233
+ {
1234
+ "mask": 16,
1235
+ "shift": 4,
1236
+ "name": "USER_RS_232_CARRIER_DETECT",
1237
+ "kind": "numeric"
1238
+ },
1239
+ {
1240
+ "mask": 32,
1241
+ "shift": 5,
1242
+ "name": "USER",
1243
+ "kind": "numeric"
1244
+ },
1245
+ {
1246
+ "mask": 64,
1247
+ "shift": 6,
1248
+ "name": "USER_RS_232_CLEAR_TO_SEND",
1249
+ "kind": "numeric"
1250
+ },
1251
+ {
1252
+ "mask": 128,
1253
+ "shift": 7,
1254
+ "name": "USER_RS_232_DATA_SET_READY",
1255
+ "kind": "numeric"
1256
+ }
1257
+ ]
1258
+ },
1259
+ "$DD0D": {
1260
+ "label": "CIA Interrupt Control Register (Read NMIs/Write Mask)",
1261
+ "fields": [
1262
+ {
1263
+ "mask": 1,
1264
+ "shift": 0,
1265
+ "name": "TIMER_A_INTERRUPT",
1266
+ "kind": "numeric"
1267
+ },
1268
+ {
1269
+ "mask": 2,
1270
+ "shift": 1,
1271
+ "name": "TIMER_B_INTERRUPT",
1272
+ "kind": "numeric"
1273
+ },
1274
+ {
1275
+ "mask": 8,
1276
+ "shift": 3,
1277
+ "name": "SERIAL_PORT_INTERRUPT",
1278
+ "kind": "numeric"
1279
+ },
1280
+ {
1281
+ "mask": 16,
1282
+ "shift": 4,
1283
+ "name": "FLAG1_NMI",
1284
+ "kind": "numeric"
1285
+ },
1286
+ {
1287
+ "mask": 128,
1288
+ "shift": 7,
1289
+ "name": "NMI_FLAG_SET_CLEAR_FLAG",
1290
+ "kind": "numeric"
1291
+ }
1292
+ ]
1293
+ },
1294
+ "$DD0E": {
1295
+ "label": "CIA Control Register A",
1296
+ "fields": [
1297
+ {
1298
+ "mask": 1,
1299
+ "shift": 0,
1300
+ "name": "START_STOP_TIMER_A_1_START_0_STOP",
1301
+ "kind": "numeric"
1302
+ },
1303
+ {
1304
+ "mask": 2,
1305
+ "shift": 1,
1306
+ "name": "TIMER_A_OUTPUT_ON_PB6_1_YES_0_NO",
1307
+ "kind": "numeric"
1308
+ },
1309
+ {
1310
+ "mask": 4,
1311
+ "shift": 2,
1312
+ "name": "TIMER_A_OUTPUT_MODE_TO_PB6_1_TOGGLE_0_PULSE",
1313
+ "kind": "numeric"
1314
+ },
1315
+ {
1316
+ "mask": 8,
1317
+ "shift": 3,
1318
+ "name": "TIMER_A_RUN_MODE_1_ONE_SHOT_0_CONTINUOUS",
1319
+ "kind": "numeric"
1320
+ },
1321
+ {
1322
+ "mask": 16,
1323
+ "shift": 4,
1324
+ "name": "FORCE_LOAD_TIMER_A_1_YES",
1325
+ "kind": "numeric"
1326
+ },
1327
+ {
1328
+ "mask": 32,
1329
+ "shift": 5,
1330
+ "name": "TIMER_A_COUNTS_1_CNT_SIGNALS_0_SYSTEM_02_CLOCK",
1331
+ "kind": "numeric"
1332
+ },
1333
+ {
1334
+ "mask": 64,
1335
+ "shift": 6,
1336
+ "name": "SERIAL_PORT_I_O_MODE_OUTPUT_0_INPUT",
1337
+ "kind": "numeric"
1338
+ },
1339
+ {
1340
+ "mask": 128,
1341
+ "shift": 7,
1342
+ "name": "TIME_OF_DAY_CLOCK_FREQUENCY_1_50_HZ_0_60_HZ",
1343
+ "kind": "numeric"
1344
+ }
1345
+ ]
1346
+ },
1347
+ "$DD0F": {
1348
+ "label": "CIA Control Register B",
1349
+ "fields": [
1350
+ {
1351
+ "mask": 31,
1352
+ "shift": 0,
1353
+ "name": "SAME_AS_CIA_CONTROL_REG_A_FOR_TIMER_B",
1354
+ "kind": "numeric"
1355
+ },
1356
+ {
1357
+ "mask": 96,
1358
+ "shift": 5,
1359
+ "name": "TIMER_B_MODE_SELECT_00_COUNT_SYSTEM_02_CLOCK_PULSES_01_COUNT_POSITIVE_CNT_TRANSITIONS_10_COUNT_TIMER_A_UNDERFLOW_PULSES_11_COUNT_TIMER_A_UNDERFLOWS_WHILE_CNT_POSITIVE",
1360
+ "kind": "numeric"
1361
+ },
1362
+ {
1363
+ "mask": 128,
1364
+ "shift": 7,
1365
+ "name": "SET_ALARM_TOD_CLOCK_1_ALARM_0_CLOCK",
1366
+ "kind": "numeric"
1367
+ }
1368
+ ]
1369
+ }
1370
+ }