badline 0.11.1 → 0.12.1

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 (175) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/CLAUDE.md +8 -7
  4. data/CONTRIBUTING.md +7 -6
  5. data/README.md +12 -5
  6. data/doc/media.md +28 -1
  7. data/doc/pinned-behaviour.md +31 -1
  8. data/exe/badline-ruby +1 -1
  9. data/lib/badline/address_bus/saved_state.rb +4 -10
  10. data/lib/badline/address_bus.rb +8 -27
  11. data/lib/badline/audio/bare_player.rb +1 -1
  12. data/lib/badline/c128/bus.rb +17 -52
  13. data/lib/badline/c128/bus_state.rb +5 -5
  14. data/lib/badline/c128/drives.rb +35 -22
  15. data/lib/badline/c128/fast_serial.rb +1 -0
  16. data/lib/badline/c128/io_pages.rb +35 -0
  17. data/lib/badline/c128/mmu.rb +9 -7
  18. data/lib/badline/c128/modes.rb +17 -4
  19. data/lib/badline/c128/saved_state.rb +22 -0
  20. data/lib/badline/c128/z80.rb +49 -0
  21. data/lib/badline/c128/z80_pages.rb +118 -0
  22. data/lib/badline/c128/z80_turns.rb +106 -0
  23. data/lib/badline/c128.rb +21 -83
  24. data/lib/badline/cartridge/action_replay.rb +2 -2
  25. data/lib/badline/cartridge/comal80.rb +1 -7
  26. data/lib/badline/cartridge/dinamic.rb +0 -8
  27. data/lib/badline/cartridge/final_cartridge3.rb +6 -6
  28. data/lib/badline/cartridge/fun_play.rb +0 -8
  29. data/lib/badline/cartridge/game_system.rb +0 -8
  30. data/lib/badline/cartridge/kcs_power.rb +10 -7
  31. data/lib/badline/cartridge/mach5.rb +2 -4
  32. data/lib/badline/cartridge/magic_desk.rb +0 -8
  33. data/lib/badline/cartridge/ocean.rb +0 -8
  34. data/lib/badline/cartridge/pagefox.rb +2 -2
  35. data/lib/badline/cartridge/retro_replay.rb +7 -6
  36. data/lib/badline/cartridge/rex_utility.rb +2 -6
  37. data/lib/badline/cartridge/rgcd.rb +2 -2
  38. data/lib/badline/cartridge/simons_basic.rb +0 -5
  39. data/lib/badline/cartridge/super_games.rb +4 -2
  40. data/lib/badline/cartridge/westermann.rb +2 -6
  41. data/lib/badline/cartridge.rb +37 -9
  42. data/lib/badline/cia/fast_forward.rb +21 -3
  43. data/lib/badline/cia.rb +8 -5
  44. data/lib/badline/computer/attachments.rb +14 -95
  45. data/lib/badline/computer/common.rb +34 -0
  46. data/lib/badline/computer/kernal_traps.rb +65 -5
  47. data/lib/badline/computer/true_drives.rb +69 -0
  48. data/lib/badline/computer.rb +9 -68
  49. data/lib/badline/core.rb +4 -2
  50. data/lib/badline/cpu_port.rb +112 -0
  51. data/lib/badline/drive/core.rb +8 -33
  52. data/lib/badline/drive/fast_serial.rb +73 -0
  53. data/lib/badline/drive/idle.rb +1 -11
  54. data/lib/badline/drive/orbit.rb +2 -5
  55. data/lib/badline/drive/sleep.rb +0 -2
  56. data/lib/badline/drive/vias.rb +84 -0
  57. data/lib/badline/drive.rb +2 -0
  58. data/lib/badline/drive1541/disk.rb +14 -17
  59. data/lib/badline/drive1541/disk_state.rb +7 -15
  60. data/lib/badline/drive1541.rb +1 -0
  61. data/lib/badline/drive1571/wd1770.rb +94 -8
  62. data/lib/badline/drive1571.rb +8 -58
  63. data/lib/badline/drive1581/bus.rb +137 -0
  64. data/lib/badline/drive1581/cpu.rb +11 -0
  65. data/lib/badline/drive1581/disk.rb +135 -0
  66. data/lib/badline/drive1581/disk_state.rb +87 -0
  67. data/lib/badline/drive1581/mechanism.rb +117 -0
  68. data/lib/badline/drive1581/serial_port.rb +52 -0
  69. data/lib/badline/drive1581/slot.rb +78 -0
  70. data/lib/badline/drive1581/track.rb +100 -0
  71. data/lib/badline/drive1581/track_bytes.rb +75 -0
  72. data/lib/badline/drive1581/wd1772/registers.rb +89 -0
  73. data/lib/badline/drive1581/wd1772/sector_writes.rb +73 -0
  74. data/lib/badline/drive1581/wd1772/sectors.rb +150 -0
  75. data/lib/badline/drive1581/wd1772/state.rb +66 -0
  76. data/lib/badline/drive1581/wd1772/stepping.rb +109 -0
  77. data/lib/badline/drive1581/wd1772/tracks.rb +125 -0
  78. data/lib/badline/drive1581/wd1772/turn.rb +73 -0
  79. data/lib/badline/drive1581/wd1772.rb +216 -0
  80. data/lib/badline/drive1581.rb +233 -0
  81. data/lib/badline/frontend/app.rb +1 -3
  82. data/lib/badline/frontend/audio_device.rb +67 -0
  83. data/lib/badline/frontend/audio_sink.rb +16 -50
  84. data/lib/badline/frontend/boot.rb +24 -67
  85. data/lib/badline/frontend/buttons.rb +7 -7
  86. data/lib/badline/frontend/keys.rb +33 -8
  87. data/lib/badline/frontend/media_slots.rb +42 -0
  88. data/lib/badline/frontend/{confirmation.rb → menu/confirmation.rb} +4 -4
  89. data/lib/badline/frontend/{file_browser.rb → menu/file_browser.rb} +18 -34
  90. data/lib/badline/frontend/{menu_dialogs.rb → menu/menu_dialogs.rb} +3 -7
  91. data/lib/badline/frontend/{menu_media.rb → menu/menu_media.rb} +26 -51
  92. data/lib/badline/frontend/{menu_pages.rb → menu/menu_pages.rb} +5 -8
  93. data/lib/badline/frontend/{name_field.rb → menu/name_field.rb} +11 -24
  94. data/lib/badline/frontend/{pause_menu.rb → menu/pause_menu.rb} +13 -28
  95. data/lib/badline/frontend/menu/theme.rb +18 -0
  96. data/lib/badline/frontend/{filter_view.rb → player/filter_view.rb} +4 -4
  97. data/lib/badline/frontend/{info_view.rb → player/info_view.rb} +3 -3
  98. data/lib/badline/frontend/{player_window.rb → player/player_controller.rb} +17 -25
  99. data/lib/badline/frontend/{player_footer.rb → player/player_footer.rb} +8 -8
  100. data/lib/badline/frontend/{player_header.rb → player/player_header.rb} +5 -5
  101. data/lib/badline/frontend/{player_screen.rb → player/player_screen.rb} +4 -5
  102. data/lib/badline/frontend/{scope.rb → player/scope.rb} +1 -1
  103. data/lib/badline/frontend/{sid_view.rb → player/sid_view.rb} +16 -20
  104. data/lib/badline/frontend/player/theme.rb +18 -0
  105. data/lib/badline/frontend/{visualizer_view.rb → player/visualizer_view.rb} +8 -8
  106. data/lib/badline/frontend/sound.rb +19 -38
  107. data/lib/badline/frontend/timeline.rb +3 -14
  108. data/lib/badline/frontend.rb +24 -20
  109. data/lib/badline/iec_bus.rb +14 -2
  110. data/lib/badline/kernal_trap/{file.rb → file_routine.rb} +1 -1
  111. data/lib/badline/kernal_trap/load.rb +1 -1
  112. data/lib/badline/kernal_trap/save.rb +1 -1
  113. data/lib/badline/kernal_trap.rb +1 -1
  114. data/lib/badline/machine/clocking.rb +50 -0
  115. data/lib/badline/machine.rb +63 -6
  116. data/lib/badline/media/boot_disk.rb +50 -0
  117. data/lib/badline/media/disk_list.rb +3 -3
  118. data/lib/badline/media/disk_set.rb +1 -1
  119. data/lib/badline/media/extensions.rb +33 -0
  120. data/lib/badline/media/not_disk.rb +8 -0
  121. data/lib/badline/media/program.rb +28 -0
  122. data/lib/badline/media/true_drive.rb +38 -17
  123. data/lib/badline/media/tune.rb +35 -0
  124. data/lib/badline/media/vic20_cartridge.rb +1 -7
  125. data/lib/badline/media/vic20_media.rb +38 -80
  126. data/lib/badline/media.rb +90 -81
  127. data/lib/badline/options/event.rb +4 -2
  128. data/lib/badline/options/family.rb +3 -9
  129. data/lib/badline/options/help.rb +2 -1
  130. data/lib/badline/roms/README +9 -0
  131. data/lib/badline/roms/dos1581.rom +0 -0
  132. data/lib/badline/sdl.rb +37 -20
  133. data/lib/badline/sid.rb +1 -1
  134. data/lib/badline/snapshot/machine_state.rb +9 -1
  135. data/lib/badline/snapshot/state.rb +6 -4
  136. data/lib/badline/snapshot.rb +11 -9
  137. data/lib/badline/storage/d64_image.rb +15 -7
  138. data/lib/badline/storage/disk_image/writing.rb +2 -2
  139. data/lib/badline/storage/disk_image.rb +1 -1
  140. data/lib/badline/storage/host_directory.rb +1 -1
  141. data/lib/badline/storage/p00.rb +8 -0
  142. data/lib/badline/storage/t64.rb +1 -1
  143. data/lib/badline/time_of_day.rb +3 -3
  144. data/lib/badline/version.rb +1 -1
  145. data/lib/badline/vic/bank.rb +1 -1
  146. data/lib/badline/vic/border_mask.rb +1 -1
  147. data/lib/badline/vic/collisions.rb +1 -1
  148. data/lib/badline/vic/color_patches.rb +1 -1
  149. data/lib/badline/vic/display_state.rb +1 -1
  150. data/lib/badline/vic/graphics_mode.rb +1 -1
  151. data/lib/badline/vic/graphics_shifter.rb +1 -1
  152. data/lib/badline/vic/register_log.rb +1 -1
  153. data/lib/badline/vic/registers.rb +1 -1
  154. data/lib/badline/vic/sequencer.rb +1 -1
  155. data/lib/badline/vic/sequencer_output.rb +1 -1
  156. data/lib/badline/vic/sequencer_state.rb +1 -1
  157. data/lib/badline/vic/sprite/internal_bus.rb +1 -1
  158. data/lib/badline/vic/sprite/saved_state.rb +1 -1
  159. data/lib/badline/vic/sprite/shifter.rb +1 -1
  160. data/lib/badline/vic/sprite/timing.rb +1 -1
  161. data/lib/badline/vic/sprite.rb +1 -1
  162. data/lib/badline/vic/sprites.rb +1 -1
  163. data/lib/badline/vic/sprites_state.rb +1 -1
  164. data/lib/badline/vic.rb +6 -5
  165. data/lib/badline/vic20/attachments.rb +15 -71
  166. data/lib/badline/vic20/saved_state.rb +2 -30
  167. data/lib/badline/vic20.rb +4 -37
  168. data/lib/badline/z80/core.rb +2 -0
  169. data/lib/badline/z80/saved_state.rb +69 -0
  170. metadata +61 -23
  171. data/lib/badline/cycleable.rb +0 -38
  172. /data/lib/badline/frontend/{menu_ports.rb → menu/menu_ports.rb} +0 -0
  173. /data/lib/badline/frontend/{player_commands.rb → player/player_commands.rb} +0 -0
  174. /data/lib/badline/frontend/{player_state.rb → player/player_state.rb} +0 -0
  175. /data/lib/badline/frontend/{sid_history.rb → player/sid_history.rb} +0 -0
@@ -78,6 +78,7 @@ module Badline
78
78
  @datasette.save_state(out)
79
79
  save_trap_drive(out)
80
80
  save_drive1541(out)
81
+ save_drive1581(out)
81
82
  end
82
83
 
83
84
  def load_state(input)
@@ -99,31 +100,11 @@ module Badline
99
100
  @datasette.load_state(input)
100
101
  load_trap_drive(input)
101
102
  load_drive1541(input)
103
+ load_drive1581(input)
102
104
  end
103
105
 
104
106
  private
105
107
 
106
- # The disk device 8 serves through the traps, with its channels.
107
- def save_trap_drive(out)
108
- out.boolean(!@drive.nil?)
109
- return unless @drive
110
-
111
- @drive.save_state(out)
112
- @serial_trap.save_state(out)
113
- @save_trap.save_state(out)
114
- end
115
-
116
- def load_trap_drive(input)
117
- return unmount unless input.boolean?
118
-
119
- storage = Storage.reopen(input)
120
- unmount
121
- mount(storage)
122
- @drive.load_state(input)
123
- @serial_trap.load_state(input)
124
- @save_trap.load_state(input)
125
- end
126
-
127
108
  # A true 1541 on the serial bus, with its device number.
128
109
  def save_drive1541(out)
129
110
  out.boolean(!@drive1541.nil?)
@@ -133,15 +114,6 @@ module Badline
133
114
  @drive1541.save_state(out)
134
115
  end
135
116
 
136
- def load_drive1541(input)
137
- return detach_drive1541 unless input.boolean?
138
-
139
- device = input.int
140
- detach_drive1541 if @drive1541 && @drive1541.device != device
141
- attach_drive1541(Drive1541.new(device:)) unless @drive1541
142
- @drive1541.load_state(input)
143
- end
144
-
145
117
  def check_ram(ram)
146
118
  return if ram == @ram_configuration
147
119
 
data/lib/badline/vic20.rb CHANGED
@@ -23,6 +23,7 @@ module Badline
23
23
  class Vic20
24
24
  include IntegerHelper
25
25
  include KeyboardBuffer
26
+ include Machine::Clocking
26
27
  include Attachments
27
28
  include PortWiring
28
29
  include SavedState
@@ -33,10 +34,6 @@ module Badline
33
34
  # The RAM expansion it was built with, a key of Bus::RAM_CONFIGURATIONS.
34
35
  attr_reader :ram_configuration
35
36
 
36
- # The path of the disk or directory device 8 serves through the traps
37
- # (Attachments), or an empty one.
38
- def mounted_path = @drive.nil? ? "" : @drive.path
39
-
40
37
  def ram = @bus.ram
41
38
 
42
39
  def family = :vic20
@@ -75,6 +72,7 @@ module Badline
75
72
  @save_trap = nil
76
73
  @capture_output = nil
77
74
  @drive1541 = nil
75
+ @drive1581 = nil
78
76
  @init_threshold = boot_cycles
79
77
  wire_ports
80
78
  end
@@ -94,35 +92,11 @@ module Badline
94
92
  drive_nmi
95
93
  @cpu.cycle!
96
94
  @drive1541&.host_cycle!
95
+ @drive1581&.host_cycle!
97
96
 
98
97
  @cycles += 1
99
98
  end
100
99
 
101
- # Runs `count` cycles, one #cycle! after another.
102
- def run_cycles(count)
103
- i = 0
104
- while i < count
105
- cycle!
106
- i += 1
107
- end
108
- end
109
-
110
- # Runs cycles until the block returns true or the cycle count passes
111
- # `limit`, checking before each cycle.
112
- def run_until(limit)
113
- cycle! until yield || @cycles > limit
114
- end
115
-
116
- # Runs the block once the KERNAL has booted (see init_threshold), or
117
- # now if it has.
118
- def on_init(&block)
119
- if @cycles < @init_threshold
120
- @init_handlers << block
121
- else
122
- block.call
123
- end
124
- end
125
-
126
100
  # The chip whose #display a front end shows.
127
101
  def video = @vic
128
102
 
@@ -176,6 +150,7 @@ module Badline
176
150
  via_written
177
151
  @drive&.reset!
178
152
  @drive1541&.reset!
153
+ @drive1581&.reset!
179
154
  @nmi_asserted = false
180
155
  @cpu.reset!
181
156
  end
@@ -189,10 +164,6 @@ module Badline
189
164
  reset!
190
165
  end
191
166
 
192
- def inspect
193
- "#<#{self.class.name} cycles=#{@cycles} cpu=(#{@cpu.inspect})>"
194
- end
195
-
196
167
  private
197
168
 
198
169
  # The cycle by which the KERNAL has booted and BASIC printed READY,
@@ -212,9 +183,5 @@ module Badline
212
183
  @cpu.nmi = true if nmi && !@nmi_asserted
213
184
  @nmi_asserted = nmi
214
185
  end
215
-
216
- def handle_init
217
- @init_handlers.each(&:call)
218
- end
219
186
  end
220
187
  end
@@ -14,6 +14,7 @@ require "badline/z80/extended_page"
14
14
  require "badline/z80/block_transfers"
15
15
  require "badline/z80/block_io"
16
16
  require "badline/z80/interrupt_acceptance"
17
+ require "badline/z80/saved_state"
17
18
 
18
19
  module Badline
19
20
  class Z80
@@ -42,6 +43,7 @@ module Badline
42
43
  include BlockTransfers
43
44
  include BlockIO
44
45
  include InterruptAcceptance
46
+ include SavedState
45
47
 
46
48
  attr_reader :bus, :cycles, :nmi
47
49
  attr_accessor :int
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Badline
4
+ class Z80
5
+ # The registers, the T-state count and the interrupt latches for a
6
+ # snapshot, taken between instructions.
7
+ module SavedState
8
+ def save_state(out)
9
+ out.marker("Z80")
10
+ out.int(@a).int(@f).int(@b).int(@c).int(@d).int(@e).int(@h).int(@l)
11
+ out.int(@af_alt).int(@bc_alt).int(@de_alt).int(@hl_alt)
12
+ out.int(@i).int(@r).int(@pc).int(@sp).int(@ix).int(@iy).int(@wz).int(@q).int(@last_q).int(@im)
13
+ out.int(@cycles)
14
+ out.boolean(@iff1).boolean(@iff2).boolean(@halted).boolean(@after_ei).boolean(@after_ld_a_ir)
15
+ out.boolean(@int).boolean(@nmi).boolean(@nmi_pending)
16
+ end
17
+
18
+ def load_state(input)
19
+ input.marker("Z80")
20
+ load_main_registers(input)
21
+ @af_alt = input.int
22
+ @bc_alt = input.int
23
+ @de_alt = input.int
24
+ @hl_alt = input.int
25
+ load_special_registers(input)
26
+ @cycles = input.int
27
+ load_latches(input)
28
+ @prefix = 0
29
+ end
30
+
31
+ private
32
+
33
+ def load_main_registers(input)
34
+ @a = input.int
35
+ @f = input.int
36
+ @b = input.int
37
+ @c = input.int
38
+ @d = input.int
39
+ @e = input.int
40
+ @h = input.int
41
+ @l = input.int
42
+ end
43
+
44
+ def load_special_registers(input)
45
+ @i = input.int
46
+ @r = input.int
47
+ @pc = input.int
48
+ @sp = input.int
49
+ @ix = input.int
50
+ @iy = input.int
51
+ @wz = input.int
52
+ @q = input.int
53
+ @last_q = input.int
54
+ @im = input.int
55
+ end
56
+
57
+ def load_latches(input)
58
+ @iff1 = input.boolean?
59
+ @iff2 = input.boolean?
60
+ @halted = input.boolean?
61
+ @after_ei = input.boolean?
62
+ @after_ld_a_ir = input.boolean?
63
+ @int = input.boolean?
64
+ @nmi = input.boolean?
65
+ @nmi_pending = input.boolean?
66
+ end
67
+ end
68
+ end
69
+ end
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.11.1
4
+ version: 0.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inge Jørgensen
@@ -79,6 +79,7 @@ files:
79
79
  - lib/badline/c128/cpu.rb
80
80
  - lib/badline/c128/drives.rb
81
81
  - lib/badline/c128/fast_serial.rb
82
+ - lib/badline/c128/io_pages.rb
82
83
  - lib/badline/c128/keys.rb
83
84
  - lib/badline/c128/mmu.rb
84
85
  - lib/badline/c128/mmu_pages.rb
@@ -90,6 +91,9 @@ files:
90
91
  - lib/badline/c128/vdc/painter.rb
91
92
  - lib/badline/c128/vdc/raster.rb
92
93
  - lib/badline/c128/vdc/window.rb
94
+ - lib/badline/c128/z80.rb
95
+ - lib/badline/c128/z80_pages.rb
96
+ - lib/badline/c128/z80_turns.rb
93
97
  - lib/badline/cartridge.rb
94
98
  - lib/badline/cartridge/action_replay.rb
95
99
  - lib/badline/cartridge/atomic_power.rb
@@ -129,8 +133,10 @@ files:
129
133
  - lib/badline/color_memory.rb
130
134
  - lib/badline/computer.rb
131
135
  - lib/badline/computer/attachments.rb
136
+ - lib/badline/computer/common.rb
132
137
  - lib/badline/computer/kernal_traps.rb
133
138
  - lib/badline/computer/saved_state.rb
139
+ - lib/badline/computer/true_drives.rb
134
140
  - lib/badline/control_ports.rb
135
141
  - lib/badline/core.rb
136
142
  - lib/badline/cpu.rb
@@ -141,17 +147,19 @@ files:
141
147
  - lib/badline/cpu/operations.rb
142
148
  - lib/badline/cpu/saved_state.rb
143
149
  - lib/badline/cpu/stack_operations.rb
144
- - lib/badline/cycleable.rb
150
+ - lib/badline/cpu_port.rb
145
151
  - lib/badline/data_path.rb
146
152
  - lib/badline/datasette.rb
147
153
  - lib/badline/debug_register.rb
148
154
  - lib/badline/drive.rb
149
155
  - lib/badline/drive/core.rb
156
+ - lib/badline/drive/fast_serial.rb
150
157
  - lib/badline/drive/idle.rb
151
158
  - lib/badline/drive/idle_cpu.rb
152
159
  - lib/badline/drive/orbit.rb
153
160
  - lib/badline/drive/serial_lines.rb
154
161
  - lib/badline/drive/sleep.rb
162
+ - lib/badline/drive/vias.rb
155
163
  - lib/badline/drive/watch.rb
156
164
  - lib/badline/drive1541.rb
157
165
  - lib/badline/drive1541/bus.rb
@@ -173,48 +181,70 @@ files:
173
181
  - lib/badline/drive1571/serial_port.rb
174
182
  - lib/badline/drive1571/serial_via.rb
175
183
  - lib/badline/drive1571/wd1770.rb
184
+ - lib/badline/drive1581.rb
185
+ - lib/badline/drive1581/bus.rb
186
+ - lib/badline/drive1581/cpu.rb
187
+ - lib/badline/drive1581/disk.rb
188
+ - lib/badline/drive1581/disk_state.rb
189
+ - lib/badline/drive1581/mechanism.rb
190
+ - lib/badline/drive1581/serial_port.rb
191
+ - lib/badline/drive1581/slot.rb
192
+ - lib/badline/drive1581/track.rb
193
+ - lib/badline/drive1581/track_bytes.rb
194
+ - lib/badline/drive1581/wd1772.rb
195
+ - lib/badline/drive1581/wd1772/registers.rb
196
+ - lib/badline/drive1581/wd1772/sector_writes.rb
197
+ - lib/badline/drive1581/wd1772/sectors.rb
198
+ - lib/badline/drive1581/wd1772/state.rb
199
+ - lib/badline/drive1581/wd1772/stepping.rb
200
+ - lib/badline/drive1581/wd1772/tracks.rb
201
+ - lib/badline/drive1581/wd1772/turn.rb
176
202
  - lib/badline/ffi.rb
177
203
  - lib/badline/frontend.rb
178
204
  - lib/badline/frontend/app.rb
205
+ - lib/badline/frontend/audio_device.rb
179
206
  - lib/badline/frontend/audio_sink.rb
180
207
  - lib/badline/frontend/boot.rb
181
208
  - lib/badline/frontend/buttons.rb
182
- - lib/badline/frontend/confirmation.rb
183
209
  - lib/badline/frontend/controls.rb
184
210
  - lib/badline/frontend/drive_led.rb
185
- - lib/badline/frontend/file_browser.rb
186
- - lib/badline/frontend/filter_view.rb
187
211
  - lib/badline/frontend/frame_rate.rb
188
212
  - lib/badline/frontend/frame_report.rb
189
213
  - lib/badline/frontend/gamepads.rb
190
- - lib/badline/frontend/info_view.rb
191
214
  - lib/badline/frontend/keys.rb
192
215
  - lib/badline/frontend/machine_window.rb
193
- - lib/badline/frontend/menu_dialogs.rb
194
- - lib/badline/frontend/menu_media.rb
195
- - lib/badline/frontend/menu_pages.rb
196
- - lib/badline/frontend/menu_ports.rb
197
- - lib/badline/frontend/name_field.rb
216
+ - lib/badline/frontend/media_slots.rb
217
+ - lib/badline/frontend/menu/confirmation.rb
218
+ - lib/badline/frontend/menu/file_browser.rb
219
+ - lib/badline/frontend/menu/menu_dialogs.rb
220
+ - lib/badline/frontend/menu/menu_media.rb
221
+ - lib/badline/frontend/menu/menu_pages.rb
222
+ - lib/badline/frontend/menu/menu_ports.rb
223
+ - lib/badline/frontend/menu/name_field.rb
224
+ - lib/badline/frontend/menu/pause_menu.rb
225
+ - lib/badline/frontend/menu/theme.rb
198
226
  - lib/badline/frontend/pacer.rb
199
227
  - lib/badline/frontend/pad_port.rb
200
228
  - lib/badline/frontend/painter.rb
201
- - lib/badline/frontend/pause_menu.rb
202
- - lib/badline/frontend/player_commands.rb
203
- - lib/badline/frontend/player_footer.rb
204
- - lib/badline/frontend/player_header.rb
205
- - lib/badline/frontend/player_screen.rb
206
- - lib/badline/frontend/player_state.rb
207
- - lib/badline/frontend/player_window.rb
208
- - lib/badline/frontend/scope.rb
229
+ - lib/badline/frontend/player/filter_view.rb
230
+ - lib/badline/frontend/player/info_view.rb
231
+ - lib/badline/frontend/player/player_commands.rb
232
+ - lib/badline/frontend/player/player_controller.rb
233
+ - lib/badline/frontend/player/player_footer.rb
234
+ - lib/badline/frontend/player/player_header.rb
235
+ - lib/badline/frontend/player/player_screen.rb
236
+ - lib/badline/frontend/player/player_state.rb
237
+ - lib/badline/frontend/player/scope.rb
238
+ - lib/badline/frontend/player/sid_history.rb
239
+ - lib/badline/frontend/player/sid_view.rb
240
+ - lib/badline/frontend/player/theme.rb
241
+ - lib/badline/frontend/player/visualizer_view.rb
209
242
  - lib/badline/frontend/screen.rb
210
243
  - lib/badline/frontend/screens.rb
211
244
  - lib/badline/frontend/screenshot.rb
212
- - lib/badline/frontend/sid_history.rb
213
- - lib/badline/frontend/sid_view.rb
214
245
  - lib/badline/frontend/snapshots.rb
215
246
  - lib/badline/frontend/sound.rb
216
247
  - lib/badline/frontend/timeline.rb
217
- - lib/badline/frontend/visualizer_view.rb
218
248
  - lib/badline/iec_bus.rb
219
249
  - lib/badline/input.rb
220
250
  - lib/badline/input/mouse1351.rb
@@ -242,7 +272,7 @@ files:
242
272
  - lib/badline/kernal_trap/drive/status.rb
243
273
  - lib/badline/kernal_trap/drive/write_file.rb
244
274
  - lib/badline/kernal_trap/drive/writes.rb
245
- - lib/badline/kernal_trap/file.rb
275
+ - lib/badline/kernal_trap/file_routine.rb
246
276
  - lib/badline/kernal_trap/layout.rb
247
277
  - lib/badline/kernal_trap/load.rb
248
278
  - lib/badline/kernal_trap/routine.rb
@@ -251,11 +281,17 @@ files:
251
281
  - lib/badline/keyboard.rb
252
282
  - lib/badline/keyboard_buffer.rb
253
283
  - lib/badline/machine.rb
284
+ - lib/badline/machine/clocking.rb
254
285
  - lib/badline/media.rb
286
+ - lib/badline/media/boot_disk.rb
255
287
  - lib/badline/media/disk_list.rb
256
288
  - lib/badline/media/disk_set.rb
289
+ - lib/badline/media/extensions.rb
290
+ - lib/badline/media/not_disk.rb
291
+ - lib/badline/media/program.rb
257
292
  - lib/badline/media/queue.rb
258
293
  - lib/badline/media/true_drive.rb
294
+ - lib/badline/media/tune.rb
259
295
  - lib/badline/media/vic20_basic.rb
260
296
  - lib/badline/media/vic20_cartridge.rb
261
297
  - lib/badline/media/vic20_media.rb
@@ -290,6 +326,7 @@ files:
290
326
  - lib/badline/roms/character.rom
291
327
  - lib/badline/roms/dos1541.rom
292
328
  - lib/badline/roms/dos1571.rom
329
+ - lib/badline/roms/dos1581.rom
293
330
  - lib/badline/roms/eapi/LICENSE.md
294
331
  - lib/badline/roms/eapi/README
295
332
  - lib/badline/roms/eapi/eapi-am29f040-14
@@ -416,6 +453,7 @@ files:
416
453
  - lib/badline/z80/loads.rb
417
454
  - lib/badline/z80/main_page.rb
418
455
  - lib/badline/z80/registers.rb
456
+ - lib/badline/z80/saved_state.rb
419
457
  - lib/badline/z80/shifts.rb
420
458
  - packaging/homebrew/badline.rb
421
459
  homepage: https://github.com/elektronaut/badline
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Badline
4
- class Cycleable
5
- attr_reader :cycles
6
-
7
- def initialize
8
- @loop = Fiber.new { loop { main_loop } }
9
- @cycles = 0
10
- @pending_write = false
11
- end
12
-
13
- def cycle!
14
- @loop.resume
15
- nil
16
- end
17
-
18
- def pending_write? = @pending_write
19
-
20
- private
21
-
22
- def cycle(write: false)
23
- @pending_write = write
24
- Fiber.yield
25
- poll
26
- result = yield if block_given?
27
- @cycles += 1
28
- @pending_write = false
29
- result
30
- end
31
-
32
- def poll; end
33
-
34
- def main_loop
35
- Fiber.yield
36
- end
37
- end
38
- end