badline 0.17.0 → 0.18.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 (166) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +153 -0
  3. data/CLAUDE.md +11 -7
  4. data/CONTRIBUTING.md +7 -1
  5. data/README.md +169 -20
  6. data/doc/pinned-behaviour.md +128 -0
  7. data/doc/snapshot-format.md +253 -18
  8. data/doc/snapshots.md +57 -23
  9. data/exe/badline-ruby +5 -0
  10. data/lib/badline/audio/terminal.rb +34 -2
  11. data/lib/badline/c128/keyed_state.rb +2 -0
  12. data/lib/badline/c128.rb +1 -0
  13. data/lib/badline/c64/keyed_state.rb +2 -0
  14. data/lib/badline/c64.rb +1 -0
  15. data/lib/badline/cbm2/keyed_state.rb +4 -0
  16. data/lib/badline/cbm2/p500.rb +5 -3
  17. data/lib/badline/cbm2.rb +6 -3
  18. data/lib/badline/chips/cia/timer.rb +2 -2
  19. data/lib/badline/chips/cpu/instruction_set.rb +1 -1
  20. data/lib/badline/chips/m6809/arithmetic.rb +140 -0
  21. data/lib/badline/chips/m6809/bus_steps.rb +223 -0
  22. data/lib/badline/chips/m6809/core.rb +149 -0
  23. data/lib/badline/chips/m6809/indexed.rb +82 -0
  24. data/lib/badline/chips/m6809/interrupts.rb +159 -0
  25. data/lib/badline/chips/m6809/keyed_state.rb +147 -0
  26. data/lib/badline/chips/m6809/opcodes.rb +159 -0
  27. data/lib/badline/chips/m6809/operations.rb +258 -0
  28. data/lib/badline/chips/m6809/plans.rb +143 -0
  29. data/lib/badline/chips/m6809/registers.rb +82 -0
  30. data/lib/badline/chips/m6809/stack.rb +140 -0
  31. data/lib/badline/chips/m6809.rb +13 -0
  32. data/lib/badline/chips/riot/timer.rb +14 -3
  33. data/lib/badline/chips/rriot.rb +4 -2
  34. data/lib/badline/chips/sid/filter.rb +4 -4
  35. data/lib/badline/chips/sid/waveform.rb +6 -6
  36. data/lib/badline/chips/vic_i/keyed_parts.rb +7 -2
  37. data/lib/badline/chips/vic_i.rb +84 -21
  38. data/lib/badline/data_path.rb +3 -3
  39. data/lib/badline/drives/ieee_models.rb +54 -0
  40. data/lib/badline/drives/model1001.rb +37 -0
  41. data/lib/badline/drives/model2031.rb +6 -0
  42. data/lib/badline/drives/model4040/disk.rb +62 -0
  43. data/lib/badline/drives/model4040/ip_bus.rb +46 -0
  44. data/lib/badline/drives/model4040/keyed_state.rb +57 -0
  45. data/lib/badline/drives/model4040/mechanism.rb +192 -0
  46. data/lib/badline/drives/model4040/parts.rb +20 -0
  47. data/lib/badline/drives/model4040.rb +179 -0
  48. data/lib/badline/drives/model8050/board.rb +77 -0
  49. data/lib/badline/drives/model8050/dos_board.rb +91 -0
  50. data/lib/badline/drives/model8050/idle.rb +11 -7
  51. data/lib/badline/drives/model8050/keyed_state.rb +5 -2
  52. data/lib/badline/drives/model8050.rb +18 -130
  53. data/lib/badline/drives/model9060/idle.rb +149 -0
  54. data/lib/badline/drives/model9060/keyed_state.rb +123 -0
  55. data/lib/badline/drives/model9060/parts.rb +98 -0
  56. data/lib/badline/drives/model9060/sasi_bus.rb +88 -0
  57. data/lib/badline/drives/model9060/sasi_commands.rb +168 -0
  58. data/lib/badline/drives/model9060/sasi_target.rb +161 -0
  59. data/lib/badline/drives/model9060.rb +195 -0
  60. data/lib/badline/frontend/app.rb +8 -0
  61. data/lib/badline/frontend/boot.rb +3 -2
  62. data/lib/badline/frontend/controls.rb +62 -6
  63. data/lib/badline/frontend/keys.rb +36 -0
  64. data/lib/badline/frontend/kim1_panel.rb +208 -0
  65. data/lib/badline/frontend/media_slots.rb +8 -1
  66. data/lib/badline/frontend/menu/drive_types.rb +56 -0
  67. data/lib/badline/frontend/menu/menu_dialogs.rb +61 -14
  68. data/lib/badline/frontend/menu/menu_media.rb +42 -12
  69. data/lib/badline/frontend/menu/menu_pages.rb +97 -2
  70. data/lib/badline/frontend/menu/menu_ports.rb +38 -1
  71. data/lib/badline/frontend/menu/pause_menu.rb +5 -1
  72. data/lib/badline/frontend/pet_keyboard.rb +23 -1
  73. data/lib/badline/frontend/screen.rb +1 -1
  74. data/lib/badline/frontend/screens.rb +40 -2
  75. data/lib/badline/frontend/teletype_pane.rb +152 -0
  76. data/lib/badline/frontend/timeline.rb +31 -2
  77. data/lib/badline/frontend.rb +3 -0
  78. data/lib/badline/kim1/bus.rb +117 -0
  79. data/lib/badline/kim1/cpu.rb +25 -0
  80. data/lib/badline/kim1/host_terminal.rb +74 -0
  81. data/lib/badline/kim1/key_entry.rb +74 -0
  82. data/lib/badline/kim1/keyed_modules.rb +53 -0
  83. data/lib/badline/kim1/keyed_state.rb +133 -0
  84. data/lib/badline/kim1/panel.rb +176 -0
  85. data/lib/badline/kim1/rriots.rb +28 -0
  86. data/lib/badline/kim1/sound.rb +29 -0
  87. data/lib/badline/kim1/tape.rb +116 -0
  88. data/lib/badline/kim1/teletype.rb +193 -0
  89. data/lib/badline/kim1.rb +190 -0
  90. data/lib/badline/machine/ieee_drives.rb +94 -117
  91. data/lib/badline/machine/keyboard_buffer.rb +20 -3
  92. data/lib/badline/machine/line_sound.rb +122 -0
  93. data/lib/badline/machine.rb +46 -15
  94. data/lib/badline/media/extensions.rb +8 -4
  95. data/lib/badline/media/kim1_media.rb +150 -0
  96. data/lib/badline/media/pet_media.rb +3 -1
  97. data/lib/badline/media/true_drive.rb +42 -45
  98. data/lib/badline/media.rb +12 -6
  99. data/lib/badline/options/family.rb +98 -8
  100. data/lib/badline/options/help.rb +44 -12
  101. data/lib/badline/options/table.rb +43 -11
  102. data/lib/badline/options/validation.rb +44 -8
  103. data/lib/badline/options.rb +27 -8
  104. data/lib/badline/pet/bus.rb +16 -2
  105. data/lib/badline/pet/keyboard_ports.rb +9 -2
  106. data/lib/badline/pet/keyed_state.rb +4 -0
  107. data/lib/badline/pet/model.rb +11 -2
  108. data/lib/badline/pet/rom_sets.rb +1 -0
  109. data/lib/badline/pet/sound.rb +5 -105
  110. data/lib/badline/pet/superpet/acia.rb +12 -0
  111. data/lib/badline/pet/superpet/board.rb +221 -0
  112. data/lib/badline/pet/superpet/dongle.rb +81 -0
  113. data/lib/badline/pet/superpet/keyed_modules.rb +63 -0
  114. data/lib/badline/pet/superpet/keyed_parts.rb +76 -0
  115. data/lib/badline/pet/superpet/m6809.rb +32 -0
  116. data/lib/badline/pet/superpet/waterloo_traps.rb +199 -0
  117. data/lib/badline/pet/superpet.rb +216 -0
  118. data/lib/badline/pet.rb +19 -3
  119. data/lib/badline/plus4/keyed_state.rb +2 -0
  120. data/lib/badline/plus4.rb +1 -0
  121. data/lib/badline/roms/1001/fdc-251257-02a.rom +0 -0
  122. data/lib/badline/roms/4040/dos-1.2.rom +0 -0
  123. data/lib/badline/roms/4040/dos-2.1-rev.rom +0 -0
  124. data/lib/badline/roms/4040/dos-2.1.rom +0 -0
  125. data/lib/badline/roms/4040/fdc-901466-02.rom +0 -0
  126. data/lib/badline/roms/4040/fdc-901466-04.rom +0 -0
  127. data/lib/badline/roms/9060/dos-3.0.rom +0 -0
  128. data/lib/badline/roms/9060/sasi-300515-revb.rom +0 -0
  129. data/lib/badline/roms/README +166 -0
  130. data/lib/badline/roms/kim1/6530-002.rom +0 -0
  131. data/lib/badline/roms/kim1/6530-003.rom +0 -0
  132. data/lib/badline/roms/pet/characters-superpet.rom +0 -0
  133. data/lib/badline/roms/pet/superpet-a000.rom +0 -0
  134. data/lib/badline/roms/pet/superpet-c000.rom +0 -0
  135. data/lib/badline/roms/pet/superpet-e000-50hz.rom +0 -0
  136. data/lib/badline/roms/pet/superpet-e000.rom +0 -0
  137. data/lib/badline/snapshot/container.rb +2 -0
  138. data/lib/badline/snapshot/field_doc/markdown.rb +1 -1
  139. data/lib/badline/snapshot/field_doc.rb +27 -6
  140. data/lib/badline/snapshot/image.rb +4 -1
  141. data/lib/badline/snapshot/kim1_setup.rb +28 -0
  142. data/lib/badline/snapshot/pet_setup.rb +27 -11
  143. data/lib/badline/snapshot/storage_setup.rb +4 -1
  144. data/lib/badline/snapshot/vic20_setup.rb +11 -7
  145. data/lib/badline/snapshot/vice/pet.rb +13 -7
  146. data/lib/badline/snapshot/vice/pet_cpu.rb +39 -5
  147. data/lib/badline/snapshot/vice/pet_crtc.rb +15 -2
  148. data/lib/badline/snapshot/vice/pet_drive8050.rb +188 -68
  149. data/lib/badline/snapshot/vice/pet_mem.rb +49 -5
  150. data/lib/badline/snapshot/vice/pet_restore.rb +40 -11
  151. data/lib/badline/snapshot.rb +4 -0
  152. data/lib/badline/status.rb +30 -30
  153. data/lib/badline/storage/d67_image.rb +55 -0
  154. data/lib/badline/storage/d90_image.rb +180 -0
  155. data/lib/badline/storage/disk_image/writing.rb +2 -2
  156. data/lib/badline/storage/kim_tape.rb +254 -0
  157. data/lib/badline/storage/papertape.rb +90 -0
  158. data/lib/badline/storage.rb +4 -0
  159. data/lib/badline/support/kim1_checkpoint.rb +41 -0
  160. data/lib/badline/support/superpet_checkpoint.rb +35 -0
  161. data/lib/badline/version.rb +1 -1
  162. data/lib/badline/vic20/keyed_modules.rb +6 -3
  163. data/lib/badline/vic20/keyed_state.rb +6 -4
  164. data/lib/badline/vic20.rb +26 -12
  165. data/lib/badline.rb +1 -0
  166. metadata +77 -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.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inge Jørgensen
@@ -194,6 +194,18 @@ files:
194
194
  - lib/badline/chips/cpu/traps.rb
195
195
  - lib/badline/chips/crtc.rb
196
196
  - lib/badline/chips/crtc/keyed_state.rb
197
+ - lib/badline/chips/m6809.rb
198
+ - lib/badline/chips/m6809/arithmetic.rb
199
+ - lib/badline/chips/m6809/bus_steps.rb
200
+ - lib/badline/chips/m6809/core.rb
201
+ - lib/badline/chips/m6809/indexed.rb
202
+ - lib/badline/chips/m6809/interrupts.rb
203
+ - lib/badline/chips/m6809/keyed_state.rb
204
+ - lib/badline/chips/m6809/opcodes.rb
205
+ - lib/badline/chips/m6809/operations.rb
206
+ - lib/badline/chips/m6809/plans.rb
207
+ - lib/badline/chips/m6809/registers.rb
208
+ - lib/badline/chips/m6809/stack.rb
197
209
  - lib/badline/chips/pia.rb
198
210
  - lib/badline/chips/pia/control_lines.rb
199
211
  - lib/badline/chips/pia/keyed_parts.rb
@@ -301,6 +313,8 @@ files:
301
313
  - lib/badline/drives/engine/vias.rb
302
314
  - lib/badline/drives/engine/watch.rb
303
315
  - lib/badline/drives/ieee_bus.rb
316
+ - lib/badline/drives/ieee_models.rb
317
+ - lib/badline/drives/model1001.rb
304
318
  - lib/badline/drives/model1541.rb
305
319
  - lib/badline/drives/model1541/bus.rb
306
320
  - lib/badline/drives/model1541/byte_ready.rb
@@ -349,8 +363,16 @@ files:
349
363
  - lib/badline/drives/model2031/ieee_port.rb
350
364
  - lib/badline/drives/model2031/keyed_state.rb
351
365
  - lib/badline/drives/model2031/parts.rb
366
+ - lib/badline/drives/model4040.rb
367
+ - lib/badline/drives/model4040/disk.rb
368
+ - lib/badline/drives/model4040/ip_bus.rb
369
+ - lib/badline/drives/model4040/keyed_state.rb
370
+ - lib/badline/drives/model4040/mechanism.rb
371
+ - lib/badline/drives/model4040/parts.rb
352
372
  - lib/badline/drives/model8050.rb
373
+ - lib/badline/drives/model8050/board.rb
353
374
  - lib/badline/drives/model8050/disk.rb
375
+ - lib/badline/drives/model8050/dos_board.rb
354
376
  - lib/badline/drives/model8050/fdc_bus.rb
355
377
  - lib/badline/drives/model8050/idle.rb
356
378
  - lib/badline/drives/model8050/ieee_port.rb
@@ -358,6 +380,13 @@ files:
358
380
  - lib/badline/drives/model8050/keyed_state.rb
359
381
  - lib/badline/drives/model8050/mechanism.rb
360
382
  - lib/badline/drives/model8050/parts.rb
383
+ - lib/badline/drives/model9060.rb
384
+ - lib/badline/drives/model9060/idle.rb
385
+ - lib/badline/drives/model9060/keyed_state.rb
386
+ - lib/badline/drives/model9060/parts.rb
387
+ - lib/badline/drives/model9060/sasi_bus.rb
388
+ - lib/badline/drives/model9060/sasi_commands.rb
389
+ - lib/badline/drives/model9060/sasi_target.rb
361
390
  - lib/badline/drives/serial_bus.rb
362
391
  - lib/badline/ffi.rb
363
392
  - lib/badline/frontend.rb
@@ -372,9 +401,11 @@ files:
372
401
  - lib/badline/frontend/frame_report.rb
373
402
  - lib/badline/frontend/gamepads.rb
374
403
  - lib/badline/frontend/keys.rb
404
+ - lib/badline/frontend/kim1_panel.rb
375
405
  - lib/badline/frontend/machine_window.rb
376
406
  - lib/badline/frontend/media_slots.rb
377
407
  - lib/badline/frontend/menu/confirmation.rb
408
+ - lib/badline/frontend/menu/drive_types.rb
378
409
  - lib/badline/frontend/menu/file_browser.rb
379
410
  - lib/badline/frontend/menu/menu_dialogs.rb
380
411
  - lib/badline/frontend/menu/menu_media.rb
@@ -405,6 +436,7 @@ files:
405
436
  - lib/badline/frontend/screenshot.rb
406
437
  - lib/badline/frontend/snapshots.rb
407
438
  - lib/badline/frontend/sound.rb
439
+ - lib/badline/frontend/teletype_pane.rb
408
440
  - lib/badline/frontend/timeline.rb
409
441
  - lib/badline/input.rb
410
442
  - lib/badline/input/control_ports.rb
@@ -437,10 +469,23 @@ files:
437
469
  - lib/badline/kernal_trap/save.rb
438
470
  - lib/badline/kernal_trap/serial.rb
439
471
  - lib/badline/kernal_trap/steps.rb
472
+ - lib/badline/kim1.rb
473
+ - lib/badline/kim1/bus.rb
474
+ - lib/badline/kim1/cpu.rb
475
+ - lib/badline/kim1/host_terminal.rb
476
+ - lib/badline/kim1/key_entry.rb
477
+ - lib/badline/kim1/keyed_modules.rb
478
+ - lib/badline/kim1/keyed_state.rb
479
+ - lib/badline/kim1/panel.rb
480
+ - lib/badline/kim1/rriots.rb
481
+ - lib/badline/kim1/sound.rb
482
+ - lib/badline/kim1/tape.rb
483
+ - lib/badline/kim1/teletype.rb
440
484
  - lib/badline/machine.rb
441
485
  - lib/badline/machine/clocking.rb
442
486
  - lib/badline/machine/ieee_drives.rb
443
487
  - lib/badline/machine/keyboard_buffer.rb
488
+ - lib/badline/machine/line_sound.rb
444
489
  - lib/badline/machine/settling.rb
445
490
  - lib/badline/media.rb
446
491
  - lib/badline/media/boot_disk.rb
@@ -448,6 +493,7 @@ files:
448
493
  - lib/badline/media/disk_list.rb
449
494
  - lib/badline/media/disk_set.rb
450
495
  - lib/badline/media/extensions.rb
496
+ - lib/badline/media/kim1_media.rb
451
497
  - lib/badline/media/not_disk.rb
452
498
  - lib/badline/media/pet_media.rb
453
499
  - lib/badline/media/plus4_media.rb
@@ -485,6 +531,14 @@ files:
485
531
  - lib/badline/pet/model.rb
486
532
  - lib/badline/pet/rom_sets.rb
487
533
  - lib/badline/pet/sound.rb
534
+ - lib/badline/pet/superpet.rb
535
+ - lib/badline/pet/superpet/acia.rb
536
+ - lib/badline/pet/superpet/board.rb
537
+ - lib/badline/pet/superpet/dongle.rb
538
+ - lib/badline/pet/superpet/keyed_modules.rb
539
+ - lib/badline/pet/superpet/keyed_parts.rb
540
+ - lib/badline/pet/superpet/m6809.rb
541
+ - lib/badline/pet/superpet/waterloo_traps.rb
488
542
  - lib/badline/pet/via.rb
489
543
  - lib/badline/pet/via_ports.rb
490
544
  - lib/badline/plus4.rb
@@ -505,9 +559,17 @@ files:
505
559
  - lib/badline/plus4/user_port.rb
506
560
  - lib/badline/region.rb
507
561
  - lib/badline/rom.rb
562
+ - lib/badline/roms/1001/fdc-251257-02a.rom
563
+ - lib/badline/roms/4040/dos-1.2.rom
564
+ - lib/badline/roms/4040/dos-2.1-rev.rom
565
+ - lib/badline/roms/4040/dos-2.1.rom
566
+ - lib/badline/roms/4040/fdc-901466-02.rom
567
+ - lib/badline/roms/4040/fdc-901466-04.rom
508
568
  - lib/badline/roms/8050/dos-2.7.rom
509
569
  - lib/badline/roms/8050/fdc-901869-01.rom
510
570
  - lib/badline/roms/8050/fdc-901885-04.rom
571
+ - lib/badline/roms/9060/dos-3.0.rom
572
+ - lib/badline/roms/9060/sasi-300515-revb.rom
511
573
  - lib/badline/roms/README
512
574
  - lib/badline/roms/basic.rom
513
575
  - lib/badline/roms/c128/basic.rom
@@ -535,10 +597,13 @@ files:
535
597
  - lib/badline/roms/kernal-pet64.rom
536
598
  - lib/badline/roms/kernal-sx64.rom
537
599
  - lib/badline/roms/kernal.rom
600
+ - lib/badline/roms/kim1/6530-002.rom
601
+ - lib/badline/roms/kim1/6530-003.rom
538
602
  - lib/badline/roms/pet/basic1.rom
539
603
  - lib/badline/roms/pet/basic2.rom
540
604
  - lib/badline/roms/pet/basic4.rom
541
605
  - lib/badline/roms/pet/characters-din.rom
606
+ - lib/badline/roms/pet/characters-superpet.rom
542
607
  - lib/badline/roms/pet/characters1.rom
543
608
  - lib/badline/roms/pet/characters2.rom
544
609
  - lib/badline/roms/pet/editor1.rom
@@ -555,6 +620,10 @@ files:
555
620
  - lib/badline/roms/pet/kernal1.rom
556
621
  - lib/badline/roms/pet/kernal2.rom
557
622
  - lib/badline/roms/pet/kernal4.rom
623
+ - lib/badline/roms/pet/superpet-a000.rom
624
+ - lib/badline/roms/pet/superpet-c000.rom
625
+ - lib/badline/roms/pet/superpet-e000-50hz.rom
626
+ - lib/badline/roms/pet/superpet-e000.rom
558
627
  - lib/badline/roms/plus4/basic.rom
559
628
  - lib/badline/roms/plus4/function-high.rom
560
629
  - lib/badline/roms/plus4/function-low.rom
@@ -586,6 +655,7 @@ files:
586
655
  - lib/badline/snapshot/keyed/recorder.rb
587
656
  - lib/badline/snapshot/keyed/report.rb
588
657
  - lib/badline/snapshot/keyed/writer.rb
658
+ - lib/badline/snapshot/kim1_setup.rb
589
659
  - lib/badline/snapshot/machine_state.rb
590
660
  - lib/badline/snapshot/pet_setup.rb
591
661
  - lib/badline/snapshot/plus4_setup.rb
@@ -628,10 +698,12 @@ files:
628
698
  - lib/badline/storage.rb
629
699
  - lib/badline/storage/crt_file.rb
630
700
  - lib/badline/storage/d64_image.rb
701
+ - lib/badline/storage/d67_image.rb
631
702
  - lib/badline/storage/d71_image.rb
632
703
  - lib/badline/storage/d80_image.rb
633
704
  - lib/badline/storage/d81_image.rb
634
705
  - lib/badline/storage/d82_image.rb
706
+ - lib/badline/storage/d90_image.rb
635
707
  - lib/badline/storage/disk_image.rb
636
708
  - lib/badline/storage/disk_image/bam.rb
637
709
  - lib/badline/storage/disk_image/catalog.rb
@@ -640,8 +712,10 @@ files:
640
712
  - lib/badline/storage/disk_image/writing.rb
641
713
  - lib/badline/storage/g64_image.rb
642
714
  - lib/badline/storage/host_directory.rb
715
+ - lib/badline/storage/kim_tape.rb
643
716
  - lib/badline/storage/listing.rb
644
717
  - lib/badline/storage/p00.rb
718
+ - lib/badline/storage/papertape.rb
645
719
  - lib/badline/storage/t64.rb
646
720
  - lib/badline/storage/tap.rb
647
721
  - lib/badline/storage/unavailable.rb
@@ -649,9 +723,11 @@ files:
649
723
  - lib/badline/support/c128_checkpoint.rb
650
724
  - lib/badline/support/cbm2_checkpoint.rb
651
725
  - lib/badline/support/checkpoint.rb
726
+ - lib/badline/support/kim1_checkpoint.rb
652
727
  - lib/badline/support/p500_checkpoint.rb
653
728
  - lib/badline/support/pet_checkpoint.rb
654
729
  - lib/badline/support/plus4_checkpoint.rb
730
+ - lib/badline/support/superpet_checkpoint.rb
655
731
  - lib/badline/support/vic20_checkpoint.rb
656
732
  - lib/badline/timing.rb
657
733
  - lib/badline/version.rb