badline 0.15.0 → 0.16.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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +102 -0
  3. data/CLAUDE.md +15 -7
  4. data/README.md +142 -16
  5. data/doc/media.md +19 -0
  6. data/doc/pinned-behaviour.md +67 -0
  7. data/doc/snapshot-format.md +274 -31
  8. data/doc/snapshots.md +14 -0
  9. data/exe/badline-ruby +1 -1
  10. data/lib/badline/audio/machine_player.rb +2 -14
  11. data/lib/badline/c64/common.rb +1 -1
  12. data/lib/badline/c64/true_drives.rb +13 -1
  13. data/lib/badline/c64.rb +6 -0
  14. data/lib/badline/chips/crtc/keyed_state.rb +46 -0
  15. data/lib/badline/chips/crtc.rb +163 -0
  16. data/lib/badline/chips/pia/control_lines.rb +138 -0
  17. data/lib/badline/chips/pia/keyed_parts.rb +56 -0
  18. data/lib/badline/chips/pia.rb +138 -0
  19. data/lib/badline/chips/tia.rb +16 -0
  20. data/lib/badline/core.rb +3 -0
  21. data/lib/badline/drives/datasette/keyed_state.rb +8 -3
  22. data/lib/badline/drives/engine/core.rb +6 -14
  23. data/lib/badline/drives/engine/idle.rb +42 -4
  24. data/lib/badline/drives/engine/idle_cpu.rb +18 -0
  25. data/lib/badline/drives/engine/serial_connection.rb +25 -0
  26. data/lib/badline/drives/engine/sleep.rb +1 -0
  27. data/lib/badline/drives/engine.rb +1 -0
  28. data/lib/badline/drives/ieee_bus.rb +28 -0
  29. data/lib/badline/drives/model1541/byte_ready.rb +19 -3
  30. data/lib/badline/drives/model1541/mechanism.rb +10 -1
  31. data/lib/badline/drives/model1541.rb +1 -0
  32. data/lib/badline/drives/model1551/bus.rb +138 -0
  33. data/lib/badline/drives/model1551/cable.rb +107 -0
  34. data/lib/badline/drives/model1551/cpu.rb +14 -0
  35. data/lib/badline/drives/model1551/keyed_state.rb +65 -0
  36. data/lib/badline/drives/model1551/port.rb +74 -0
  37. data/lib/badline/drives/model1551/tia.rb +71 -0
  38. data/lib/badline/drives/model1551.rb +192 -0
  39. data/lib/badline/drives/model1571.rb +1 -0
  40. data/lib/badline/drives/model1581.rb +1 -0
  41. data/lib/badline/drives.rb +1 -0
  42. data/lib/badline/frontend/app.rb +1 -1
  43. data/lib/badline/frontend/boot.rb +20 -1
  44. data/lib/badline/frontend/controls.rb +23 -3
  45. data/lib/badline/frontend/gamepads.rb +10 -3
  46. data/lib/badline/frontend/keys.rb +88 -0
  47. data/lib/badline/frontend/media_slots.rb +1 -0
  48. data/lib/badline/frontend/menu/menu_dialogs.rb +15 -6
  49. data/lib/badline/frontend/menu/menu_media.rb +96 -19
  50. data/lib/badline/frontend/menu/menu_pages.rb +25 -7
  51. data/lib/badline/frontend/menu/menu_ports.rb +22 -1
  52. data/lib/badline/frontend/menu/pause_menu.rb +1 -0
  53. data/lib/badline/frontend/pet_keyboard.rb +124 -0
  54. data/lib/badline/frontend/player/player_controller.rb +11 -4
  55. data/lib/badline/frontend/screens.rb +2 -1
  56. data/lib/badline/frontend/timeline.rb +16 -9
  57. data/lib/badline/frontend.rb +1 -0
  58. data/lib/badline/kernal_trap/dos/writes.rb +3 -1
  59. data/lib/badline/kernal_trap/dos.rb +6 -1
  60. data/lib/badline/kernal_trap/frames.rb +117 -0
  61. data/lib/badline/kernal_trap/ieee.rb +148 -0
  62. data/lib/badline/kernal_trap/ieee_layout.rb +113 -0
  63. data/lib/badline/kernal_trap/keyed_state.rb +4 -4
  64. data/lib/badline/kernal_trap/routine.rb +3 -53
  65. data/lib/badline/kernal_trap/serial.rb +4 -102
  66. data/lib/badline/kernal_trap/steps.rb +64 -0
  67. data/lib/badline/kernal_trap.rb +4 -0
  68. data/lib/badline/machine/keyboard_buffer.rb +8 -0
  69. data/lib/badline/machine/settling.rb +1 -1
  70. data/lib/badline/machine.rb +37 -11
  71. data/lib/badline/media/extensions.rb +5 -2
  72. data/lib/badline/media/pet_media.rb +40 -0
  73. data/lib/badline/media/program.rb +14 -2
  74. data/lib/badline/media/true_drive.rb +7 -5
  75. data/lib/badline/media/vic20_media.rb +2 -2
  76. data/lib/badline/media.rb +36 -16
  77. data/lib/badline/options/family.rb +17 -6
  78. data/lib/badline/options/help.rb +23 -5
  79. data/lib/badline/options/option.rb +2 -1
  80. data/lib/badline/options/table.rb +28 -4
  81. data/lib/badline/options/validation.rb +117 -14
  82. data/lib/badline/options.rb +65 -21
  83. data/lib/badline/pet/bus/expansion.rb +106 -0
  84. data/lib/badline/pet/bus.rb +204 -0
  85. data/lib/badline/pet/canvas.rb +97 -0
  86. data/lib/badline/pet/cassettes.rb +63 -0
  87. data/lib/badline/pet/characters.rb +26 -0
  88. data/lib/badline/pet/cpu.rb +10 -0
  89. data/lib/badline/pet/crtc_video.rb +142 -0
  90. data/lib/badline/pet/discrete_video.rb +83 -0
  91. data/lib/badline/pet/ieee_ports.rb +66 -0
  92. data/lib/badline/pet/ieee_traps.rb +75 -0
  93. data/lib/badline/pet/keyboard_ports.rb +74 -0
  94. data/lib/badline/pet/keyed_modules.rb +85 -0
  95. data/lib/badline/pet/keyed_parts.rb +123 -0
  96. data/lib/badline/pet/keyed_state.rb +42 -0
  97. data/lib/badline/pet/model.rb +113 -0
  98. data/lib/badline/pet/rom_sets.rb +65 -0
  99. data/lib/badline/pet/sound.rb +128 -0
  100. data/lib/badline/pet/via.rb +10 -0
  101. data/lib/badline/pet/via_ports.rb +19 -0
  102. data/lib/badline/pet.rb +226 -0
  103. data/lib/badline/plus4/acia/frames.rb +55 -0
  104. data/lib/badline/plus4/acia.rb +276 -16
  105. data/lib/badline/plus4/bus.rb +181 -45
  106. data/lib/badline/plus4/keyed_modules.rb +22 -5
  107. data/lib/badline/plus4/keyed_parts.rb +33 -4
  108. data/lib/badline/plus4/keyed_state.rb +10 -5
  109. data/lib/badline/plus4/ram_expansion.rb +145 -0
  110. data/lib/badline/plus4/sid_card.rb +95 -0
  111. data/lib/badline/plus4/sound_mix.rb +51 -0
  112. data/lib/badline/plus4/tcbm_drive.rb +134 -0
  113. data/lib/badline/plus4/user_port.rb +11 -2
  114. data/lib/badline/plus4.rb +104 -22
  115. data/lib/badline/roms/README +146 -0
  116. data/lib/badline/roms/dos1551.rom +0 -0
  117. data/lib/badline/roms/pet/basic1.rom +0 -0
  118. data/lib/badline/roms/pet/basic2.rom +0 -0
  119. data/lib/badline/roms/pet/basic4.rom +0 -0
  120. data/lib/badline/roms/pet/characters1.rom +0 -0
  121. data/lib/badline/roms/pet/characters2.rom +0 -0
  122. data/lib/badline/roms/pet/editor1.rom +0 -0
  123. data/lib/badline/roms/pet/editor2-b.rom +0 -0
  124. data/lib/badline/roms/pet/editor2-n.rom +0 -0
  125. data/lib/badline/roms/pet/editor4-40-n-50hz.rom +0 -0
  126. data/lib/badline/roms/pet/editor4-40-n-60hz.rom +0 -0
  127. data/lib/badline/roms/pet/editor4-80-b-50hz-0283.rom +0 -0
  128. data/lib/badline/roms/pet/editor4-80-b-50hz.rom +0 -0
  129. data/lib/badline/roms/pet/editor4-80-b-60hz.rom +0 -0
  130. data/lib/badline/roms/pet/editor4-b.rom +0 -0
  131. data/lib/badline/roms/pet/editor4-n.rom +0 -0
  132. data/lib/badline/roms/pet/kernal1.rom +0 -0
  133. data/lib/badline/roms/pet/kernal2.rom +0 -0
  134. data/lib/badline/roms/pet/kernal4.rom +0 -0
  135. data/lib/badline/snapshot/container.rb +2 -0
  136. data/lib/badline/snapshot/field_doc/markdown.rb +1 -1
  137. data/lib/badline/snapshot/field_doc.rb +21 -6
  138. data/lib/badline/snapshot/image.rb +14 -7
  139. data/lib/badline/snapshot/pet_setup.rb +71 -0
  140. data/lib/badline/snapshot/plus4_setup.rb +52 -10
  141. data/lib/badline/snapshot/storage_setup.rb +7 -1
  142. data/lib/badline/snapshot.rb +9 -5
  143. data/lib/badline/storage/d80_image.rb +48 -0
  144. data/lib/badline/storage/d82_image.rb +21 -0
  145. data/lib/badline/storage/g64_image.rb +1 -1
  146. data/lib/badline/storage/tap.rb +16 -3
  147. data/lib/badline/storage.rb +2 -0
  148. data/lib/badline/support/pet_checkpoint.rb +38 -0
  149. data/lib/badline/timing.rb +5 -4
  150. data/lib/badline/version.rb +1 -1
  151. data/lib/badline/vic20/attachments.rb +7 -2
  152. data/lib/badline/vic20/bus/keyed_state.rb +5 -4
  153. data/lib/badline/vic20/bus.rb +5 -0
  154. data/lib/badline/vic20.rb +1 -1
  155. metadata +69 -1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: badline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inge Jørgensen
@@ -169,6 +169,11 @@ files:
169
169
  - lib/badline/chips/cpu/port.rb
170
170
  - lib/badline/chips/cpu/stack_operations.rb
171
171
  - lib/badline/chips/cpu/traps.rb
172
+ - lib/badline/chips/crtc.rb
173
+ - lib/badline/chips/crtc/keyed_state.rb
174
+ - lib/badline/chips/pia.rb
175
+ - lib/badline/chips/pia/control_lines.rb
176
+ - lib/badline/chips/pia/keyed_parts.rb
172
177
  - lib/badline/chips/sid.rb
173
178
  - lib/badline/chips/sid/catch_up.rb
174
179
  - lib/badline/chips/sid/decimator.rb
@@ -259,10 +264,12 @@ files:
259
264
  - lib/badline/drives/engine/idle.rb
260
265
  - lib/badline/drives/engine/idle_cpu.rb
261
266
  - lib/badline/drives/engine/orbit.rb
267
+ - lib/badline/drives/engine/serial_connection.rb
262
268
  - lib/badline/drives/engine/serial_lines.rb
263
269
  - lib/badline/drives/engine/sleep.rb
264
270
  - lib/badline/drives/engine/vias.rb
265
271
  - lib/badline/drives/engine/watch.rb
272
+ - lib/badline/drives/ieee_bus.rb
266
273
  - lib/badline/drives/model1541.rb
267
274
  - lib/badline/drives/model1541/bus.rb
268
275
  - lib/badline/drives/model1541/byte_ready.rb
@@ -276,6 +283,13 @@ files:
276
283
  - lib/badline/drives/model1541/sector_reader.rb
277
284
  - lib/badline/drives/model1541/serial_port.rb
278
285
  - lib/badline/drives/model1541/track.rb
286
+ - lib/badline/drives/model1551.rb
287
+ - lib/badline/drives/model1551/bus.rb
288
+ - lib/badline/drives/model1551/cable.rb
289
+ - lib/badline/drives/model1551/cpu.rb
290
+ - lib/badline/drives/model1551/keyed_state.rb
291
+ - lib/badline/drives/model1551/port.rb
292
+ - lib/badline/drives/model1551/tia.rb
279
293
  - lib/badline/drives/model1571.rb
280
294
  - lib/badline/drives/model1571/bus.rb
281
295
  - lib/badline/drives/model1571/cpu.rb
@@ -328,6 +342,7 @@ files:
328
342
  - lib/badline/frontend/pacer.rb
329
343
  - lib/badline/frontend/pad_port.rb
330
344
  - lib/badline/frontend/painter.rb
345
+ - lib/badline/frontend/pet_keyboard.rb
331
346
  - lib/badline/frontend/player/filter_view.rb
332
347
  - lib/badline/frontend/player/info_view.rb
333
348
  - lib/badline/frontend/player/player_commands.rb
@@ -367,12 +382,16 @@ files:
367
382
  - lib/badline/kernal_trap/dos/write_file.rb
368
383
  - lib/badline/kernal_trap/dos/writes.rb
369
384
  - lib/badline/kernal_trap/file_routine.rb
385
+ - lib/badline/kernal_trap/frames.rb
386
+ - lib/badline/kernal_trap/ieee.rb
387
+ - lib/badline/kernal_trap/ieee_layout.rb
370
388
  - lib/badline/kernal_trap/keyed_state.rb
371
389
  - lib/badline/kernal_trap/layout.rb
372
390
  - lib/badline/kernal_trap/load.rb
373
391
  - lib/badline/kernal_trap/routine.rb
374
392
  - lib/badline/kernal_trap/save.rb
375
393
  - lib/badline/kernal_trap/serial.rb
394
+ - lib/badline/kernal_trap/steps.rb
376
395
  - lib/badline/machine.rb
377
396
  - lib/badline/machine/clocking.rb
378
397
  - lib/badline/machine/keyboard_buffer.rb
@@ -383,6 +402,7 @@ files:
383
402
  - lib/badline/media/disk_set.rb
384
403
  - lib/badline/media/extensions.rb
385
404
  - lib/badline/media/not_disk.rb
405
+ - lib/badline/media/pet_media.rb
386
406
  - lib/badline/media/plus4_media.rb
387
407
  - lib/badline/media/program.rb
388
408
  - lib/badline/media/true_drive.rb
@@ -399,8 +419,29 @@ files:
399
419
  - lib/badline/options/option.rb
400
420
  - lib/badline/options/table.rb
401
421
  - lib/badline/options/validation.rb
422
+ - lib/badline/pet.rb
423
+ - lib/badline/pet/bus.rb
424
+ - lib/badline/pet/bus/expansion.rb
425
+ - lib/badline/pet/canvas.rb
426
+ - lib/badline/pet/cassettes.rb
427
+ - lib/badline/pet/characters.rb
428
+ - lib/badline/pet/cpu.rb
429
+ - lib/badline/pet/crtc_video.rb
430
+ - lib/badline/pet/discrete_video.rb
431
+ - lib/badline/pet/ieee_ports.rb
432
+ - lib/badline/pet/ieee_traps.rb
433
+ - lib/badline/pet/keyboard_ports.rb
434
+ - lib/badline/pet/keyed_modules.rb
435
+ - lib/badline/pet/keyed_parts.rb
436
+ - lib/badline/pet/keyed_state.rb
437
+ - lib/badline/pet/model.rb
438
+ - lib/badline/pet/rom_sets.rb
439
+ - lib/badline/pet/sound.rb
440
+ - lib/badline/pet/via.rb
441
+ - lib/badline/pet/via_ports.rb
402
442
  - lib/badline/plus4.rb
403
443
  - lib/badline/plus4/acia.rb
444
+ - lib/badline/plus4/acia/frames.rb
404
445
  - lib/badline/plus4/bus.rb
405
446
  - lib/badline/plus4/cassette_sense.rb
406
447
  - lib/badline/plus4/cpu.rb
@@ -410,6 +451,10 @@ files:
410
451
  - lib/badline/plus4/keyed_parts.rb
411
452
  - lib/badline/plus4/keyed_state.rb
412
453
  - lib/badline/plus4/model.rb
454
+ - lib/badline/plus4/ram_expansion.rb
455
+ - lib/badline/plus4/sid_card.rb
456
+ - lib/badline/plus4/sound_mix.rb
457
+ - lib/badline/plus4/tcbm_drive.rb
413
458
  - lib/badline/plus4/user_port.rb
414
459
  - lib/badline/region.rb
415
460
  - lib/badline/rom.rb
@@ -421,6 +466,7 @@ files:
421
466
  - lib/badline/roms/c64gs.rom
422
467
  - lib/badline/roms/character.rom
423
468
  - lib/badline/roms/dos1541.rom
469
+ - lib/badline/roms/dos1551.rom
424
470
  - lib/badline/roms/dos1571.rom
425
471
  - lib/badline/roms/dos1581.rom
426
472
  - lib/badline/roms/eapi/LICENSE.md
@@ -429,6 +475,24 @@ files:
429
475
  - lib/badline/roms/kernal-pet64.rom
430
476
  - lib/badline/roms/kernal-sx64.rom
431
477
  - lib/badline/roms/kernal.rom
478
+ - lib/badline/roms/pet/basic1.rom
479
+ - lib/badline/roms/pet/basic2.rom
480
+ - lib/badline/roms/pet/basic4.rom
481
+ - lib/badline/roms/pet/characters1.rom
482
+ - lib/badline/roms/pet/characters2.rom
483
+ - lib/badline/roms/pet/editor1.rom
484
+ - lib/badline/roms/pet/editor2-b.rom
485
+ - lib/badline/roms/pet/editor2-n.rom
486
+ - lib/badline/roms/pet/editor4-40-n-50hz.rom
487
+ - lib/badline/roms/pet/editor4-40-n-60hz.rom
488
+ - lib/badline/roms/pet/editor4-80-b-50hz-0283.rom
489
+ - lib/badline/roms/pet/editor4-80-b-50hz.rom
490
+ - lib/badline/roms/pet/editor4-80-b-60hz.rom
491
+ - lib/badline/roms/pet/editor4-b.rom
492
+ - lib/badline/roms/pet/editor4-n.rom
493
+ - lib/badline/roms/pet/kernal1.rom
494
+ - lib/badline/roms/pet/kernal2.rom
495
+ - lib/badline/roms/pet/kernal4.rom
432
496
  - lib/badline/roms/plus4/basic.rom
433
497
  - lib/badline/roms/plus4/function-high.rom
434
498
  - lib/badline/roms/plus4/function-low.rom
@@ -460,6 +524,7 @@ files:
460
524
  - lib/badline/snapshot/keyed/report.rb
461
525
  - lib/badline/snapshot/keyed/writer.rb
462
526
  - lib/badline/snapshot/machine_state.rb
527
+ - lib/badline/snapshot/pet_setup.rb
463
528
  - lib/badline/snapshot/plus4_setup.rb
464
529
  - lib/badline/snapshot/storage_setup.rb
465
530
  - lib/badline/snapshot/vic20_setup.rb
@@ -482,7 +547,9 @@ files:
482
547
  - lib/badline/storage/crt_file.rb
483
548
  - lib/badline/storage/d64_image.rb
484
549
  - lib/badline/storage/d71_image.rb
550
+ - lib/badline/storage/d80_image.rb
485
551
  - lib/badline/storage/d81_image.rb
552
+ - lib/badline/storage/d82_image.rb
486
553
  - lib/badline/storage/disk_image.rb
487
554
  - lib/badline/storage/disk_image/bam.rb
488
555
  - lib/badline/storage/disk_image/catalog.rb
@@ -498,6 +565,7 @@ files:
498
565
  - lib/badline/support.rb
499
566
  - lib/badline/support/c128_checkpoint.rb
500
567
  - lib/badline/support/checkpoint.rb
568
+ - lib/badline/support/pet_checkpoint.rb
501
569
  - lib/badline/support/plus4_checkpoint.rb
502
570
  - lib/badline/support/vic20_checkpoint.rb
503
571
  - lib/badline/timing.rb