badline 0.16.0 → 0.17.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 (164) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +76 -0
  3. data/CLAUDE.md +1 -1
  4. data/README.md +130 -17
  5. data/doc/media.md +14 -2
  6. data/doc/pinned-behaviour.md +61 -0
  7. data/doc/snapshot-format.md +379 -70
  8. data/doc/snapshots.md +185 -10
  9. data/lib/badline/cbm2/acia.rb +10 -0
  10. data/lib/badline/cbm2/bus.rb +263 -0
  11. data/lib/badline/cbm2/cpu.rb +58 -0
  12. data/lib/badline/cbm2/crtc_video.rb +133 -0
  13. data/lib/badline/cbm2/ieee_drive.rb +18 -0
  14. data/lib/badline/cbm2/ieee_layout.rb +69 -0
  15. data/lib/badline/cbm2/ieee_ports.rb +104 -0
  16. data/lib/badline/cbm2/ieee_traps.rb +81 -0
  17. data/lib/badline/cbm2/keyboard_ports.rb +60 -0
  18. data/lib/badline/cbm2/keyed_modules.rb +67 -0
  19. data/lib/badline/cbm2/keyed_state.rb +91 -0
  20. data/lib/badline/cbm2/model.rb +44 -0
  21. data/lib/badline/cbm2/p500/control_ports.rb +80 -0
  22. data/lib/badline/cbm2/p500/ieee_layout.rb +41 -0
  23. data/lib/badline/cbm2/p500/keyed_state.rb +85 -0
  24. data/lib/badline/cbm2/p500/model.rb +39 -0
  25. data/lib/badline/cbm2/p500/pages.rb +57 -0
  26. data/lib/badline/cbm2/p500.rb +262 -0
  27. data/lib/badline/cbm2/sid_page.rb +19 -0
  28. data/lib/badline/cbm2.rb +267 -0
  29. data/lib/badline/{plus4 → chips}/acia/frames.rb +1 -1
  30. data/lib/badline/chips/acia/keyed_state.rb +47 -0
  31. data/lib/badline/chips/acia.rb +307 -0
  32. data/lib/badline/chips/crtc.rb +3 -2
  33. data/lib/badline/chips/riot/fast_forward.rb +72 -0
  34. data/lib/badline/chips/riot/keyed_parts.rb +69 -0
  35. data/lib/badline/chips/riot/timer.rb +80 -0
  36. data/lib/badline/chips/riot.rb +162 -0
  37. data/lib/badline/chips/rriot/keyed_state.rb +30 -0
  38. data/lib/badline/chips/rriot.rb +132 -0
  39. data/lib/badline/chips/tpi/keyed_state.rb +38 -0
  40. data/lib/badline/chips/tpi.rb +233 -0
  41. data/lib/badline/chips/vic/bank.rb +60 -5
  42. data/lib/badline/chips/vic/sprite.rb +4 -3
  43. data/lib/badline/drives/datasette/keyed_state.rb +9 -1
  44. data/lib/badline/drives/datasette.rb +27 -3
  45. data/lib/badline/drives/ieee_bus.rb +50 -4
  46. data/lib/badline/drives/model2031/ieee_port.rb +133 -0
  47. data/lib/badline/drives/model2031/keyed_state.rb +66 -0
  48. data/lib/badline/drives/model2031/parts.rb +25 -0
  49. data/lib/badline/drives/model2031.rb +92 -0
  50. data/lib/badline/drives/model8050/disk.rb +163 -0
  51. data/lib/badline/drives/model8050/fdc_bus.rb +102 -0
  52. data/lib/badline/drives/model8050/idle.rb +177 -0
  53. data/lib/badline/drives/model8050/ieee_port.rb +147 -0
  54. data/lib/badline/drives/model8050/ip_bus.rb +93 -0
  55. data/lib/badline/drives/model8050/keyed_state.rb +160 -0
  56. data/lib/badline/drives/model8050/mechanism.rb +230 -0
  57. data/lib/badline/drives/model8050/parts.rb +37 -0
  58. data/lib/badline/drives/model8050.rb +243 -0
  59. data/lib/badline/frontend/app.rb +10 -3
  60. data/lib/badline/frontend/boot.rb +1 -1
  61. data/lib/badline/frontend/controls.rb +51 -15
  62. data/lib/badline/frontend/gamepads.rb +3 -3
  63. data/lib/badline/frontend/keys.rb +61 -2
  64. data/lib/badline/frontend/media_slots.rb +1 -1
  65. data/lib/badline/frontend/menu/menu_media.rb +14 -11
  66. data/lib/badline/frontend/menu/menu_pages.rb +29 -6
  67. data/lib/badline/frontend/menu/menu_ports.rb +40 -4
  68. data/lib/badline/frontend/menu/pause_menu.rb +1 -1
  69. data/lib/badline/frontend/pet_keyboard.rb +23 -7
  70. data/lib/badline/frontend/timeline.rb +19 -10
  71. data/lib/badline/kernal_trap/dos/disk_commands.rb +80 -0
  72. data/lib/badline/kernal_trap/dos/status.rb +3 -0
  73. data/lib/badline/kernal_trap/dos.rb +18 -5
  74. data/lib/badline/kernal_trap/ieee.rb +7 -2
  75. data/lib/badline/kernal_trap/ieee_layout.rb +95 -43
  76. data/lib/badline/machine/ieee_drives.rb +194 -0
  77. data/lib/badline/machine/settling.rb +4 -0
  78. data/lib/badline/machine.rb +26 -8
  79. data/lib/badline/media/cbm2_media.rb +29 -0
  80. data/lib/badline/media/pet_media.rb +5 -5
  81. data/lib/badline/media/program.rb +6 -3
  82. data/lib/badline/media/true_drive.rb +50 -8
  83. data/lib/badline/media.rb +21 -8
  84. data/lib/badline/options/family.rb +15 -3
  85. data/lib/badline/options/help.rb +24 -6
  86. data/lib/badline/options/table.rb +25 -5
  87. data/lib/badline/options/validation.rb +47 -7
  88. data/lib/badline/options.rb +48 -15
  89. data/lib/badline/pet/bus/expansion.rb +99 -5
  90. data/lib/badline/pet/bus.rb +30 -12
  91. data/lib/badline/pet/cassettes.rb +22 -1
  92. data/lib/badline/pet/characters.rb +8 -2
  93. data/lib/badline/pet/crtc_video.rb +20 -7
  94. data/lib/badline/pet/ieee_drive.rb +17 -0
  95. data/lib/badline/pet/ieee_ports.rb +19 -1
  96. data/lib/badline/pet/ieee_traps.rb +10 -5
  97. data/lib/badline/pet/keyed_modules.rb +4 -1
  98. data/lib/badline/pet/keyed_parts.rb +10 -6
  99. data/lib/badline/pet/model.rb +56 -6
  100. data/lib/badline/pet/rom_sets.rb +30 -6
  101. data/lib/badline/pet.rb +45 -16
  102. data/lib/badline/plus4/acia.rb +4 -298
  103. data/lib/badline/plus4/keyed_parts.rb +0 -44
  104. data/lib/badline/plus4.rb +1 -0
  105. data/lib/badline/roms/8050/dos-2.7.rom +0 -0
  106. data/lib/badline/roms/8050/fdc-901869-01.rom +0 -0
  107. data/lib/badline/roms/8050/fdc-901885-04.rom +0 -0
  108. data/lib/badline/roms/README +144 -1
  109. data/lib/badline/roms/cbm2/basic128-02b.rom +0 -0
  110. data/lib/badline/roms/cbm2/basic128.rom +0 -0
  111. data/lib/badline/roms/cbm2/basic256.rom +0 -0
  112. data/lib/badline/roms/cbm2/characters-600.rom +0 -0
  113. data/lib/badline/roms/cbm2/characters-700.rom +0 -0
  114. data/lib/badline/roms/cbm2/kernal-03b.rom +0 -0
  115. data/lib/badline/roms/cbm2/kernal-04a.rom +0 -0
  116. data/lib/badline/roms/cbm2/p500-basic.rom +0 -0
  117. data/lib/badline/roms/cbm2/p500-kernal.rom +0 -0
  118. data/lib/badline/roms/dos2031.rom +0 -0
  119. data/lib/badline/roms/pet/characters-din.rom +0 -0
  120. data/lib/badline/roms/pet/editor4-80-b-50hz-8296.rom +0 -0
  121. data/lib/badline/snapshot/cbm2_setup.rb +53 -0
  122. data/lib/badline/snapshot/container.rb +9 -1
  123. data/lib/badline/snapshot/field_doc/markdown.rb +4 -2
  124. data/lib/badline/snapshot/field_doc.rb +39 -3
  125. data/lib/badline/snapshot/image.rb +79 -15
  126. data/lib/badline/snapshot/pet_setup.rb +30 -13
  127. data/lib/badline/snapshot/vice/cbm2.rb +93 -0
  128. data/lib/badline/snapshot/vice/cbm2_acia.rb +75 -0
  129. data/lib/badline/snapshot/vice/cbm2_crtc.rb +127 -0
  130. data/lib/badline/snapshot/vice/cbm2_mains.rb +49 -0
  131. data/lib/badline/snapshot/vice/cbm2_mem.rb +75 -0
  132. data/lib/badline/snapshot/vice/cbm2_restore.rb +204 -0
  133. data/lib/badline/snapshot/vice/cbm2_tpi.rb +58 -0
  134. data/lib/badline/snapshot/vice/cias.rb +13 -9
  135. data/lib/badline/snapshot/vice/p500.rb +96 -0
  136. data/lib/badline/snapshot/vice/p500_restore.rb +130 -0
  137. data/lib/badline/snapshot/vice/p500_vicii.rb +166 -0
  138. data/lib/badline/snapshot/vice/pet.rb +121 -0
  139. data/lib/badline/snapshot/vice/pet_cpu.rb +70 -0
  140. data/lib/badline/snapshot/vice/pet_crtc.rb +241 -0
  141. data/lib/badline/snapshot/vice/pet_drive.rb +180 -0
  142. data/lib/badline/snapshot/vice/pet_drive8050.rb +216 -0
  143. data/lib/badline/snapshot/vice/pet_mem.rb +93 -0
  144. data/lib/badline/snapshot/vice/pet_pias.rb +56 -0
  145. data/lib/badline/snapshot/vice/pet_restore.rb +214 -0
  146. data/lib/badline/snapshot/vice/pet_via.rb +165 -0
  147. data/lib/badline/snapshot/vice/sid_registers.rb +2 -1
  148. data/lib/badline/snapshot/vice/vicii_import.rb +10 -6
  149. data/lib/badline/snapshot/vice.rb +4 -0
  150. data/lib/badline/snapshot.rb +11 -3
  151. data/lib/badline/storage/crt_file.rb +7 -1
  152. data/lib/badline/storage/d64_image.rb +7 -0
  153. data/lib/badline/storage/d80_image.rb +17 -1
  154. data/lib/badline/storage/d81_image.rb +14 -0
  155. data/lib/badline/storage/disk_image/bam.rb +18 -3
  156. data/lib/badline/storage/disk_image/formatting.rb +69 -0
  157. data/lib/badline/storage/disk_image/writing.rb +35 -0
  158. data/lib/badline/storage/disk_image.rb +2 -0
  159. data/lib/badline/storage.rb +1 -0
  160. data/lib/badline/support/cbm2_checkpoint.rb +48 -0
  161. data/lib/badline/support/p500_checkpoint.rb +35 -0
  162. data/lib/badline/version.rb +1 -1
  163. data/lib/badline.rb +1 -0
  164. metadata +87 -2
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Badline
4
+ module Storage
5
+ class DiskImage
6
+ # The DOS's N command. With an ID it formats the disk: every block of
7
+ # the tracks the BAM covers is cleared, and the header, the BAM and an
8
+ # empty directory are written. Without one it only clears the disk:
9
+ # the header takes the new name and keeps its ID and whatever else it
10
+ # held, the BAM marks every block free, and the directory's first
11
+ # block is emptied. Either way the header, the BAM's blocks and the
12
+ # first directory block stay in use. Each format says where these go.
13
+ module Formatting
14
+ # The disk's ID, as the header holds it.
15
+ def disk_id = sector_at(*header_block)[header_name + Catalog::HEADER_ID, 2]
16
+
17
+ # Formats the disk under the name, or with no ID clears it.
18
+ def format(name, id = nil)
19
+ update_image do
20
+ full = !id.nil?
21
+ put_sector(*header_block, []) if full
22
+ id = (id || disk_id).first(2)
23
+ write_header(name, id)
24
+ clear_blocks if full
25
+ headers = bam_headers(id)
26
+ headers.each { |track, sector, bytes| write_at(track, sector, 0, bytes) }
27
+ put_sector(directory_track, directory_sector, [0, 0xff])
28
+ bam_tracks.each { |track| free_track(track) }
29
+ [header_block, *headers.map { |track, sector, _| [track, sector] }, [directory_track, directory_sector]]
30
+ .each { |block| mark(*block, false) }
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ # Every block the BAM covers but the header.
37
+ def clear_blocks
38
+ bam_tracks.each do |track|
39
+ (0...sectors_in(track)).each do |sector|
40
+ put_sector(track, sector, []) unless [track, sector] == header_block
41
+ end
42
+ end
43
+ end
44
+
45
+ # The link to the next block, the format's letter, the name, the ID
46
+ # and the DOS type, each field after the name set off with shifted
47
+ # spaces.
48
+ def write_header(name, id)
49
+ write_at(*header_block, 0, [*header_link, dos_type.getbyte(1), 0])
50
+ write_at(*header_block, header_name,
51
+ encode_name(name) + [NAME_PADDING, NAME_PADDING] + id + [NAME_PADDING] +
52
+ dos_type.bytes + Array.new(header_tail, NAME_PADDING))
53
+ end
54
+
55
+ # A free track counts its sectors and sets a bit for each.
56
+ def free_track(track)
57
+ count = sectors_in(track)
58
+ bits = (1 << count) - 1
59
+ @bytes[count_offset(track)] = count
60
+ bitmap_size.times { |i| @bytes[bitmap_offset(track) + i] = (bits >> (8 * i)) & 0xff }
61
+ end
62
+
63
+ def write_at(track, sector, offset, bytes)
64
+ @bytes[sector_offset(track, sector) + offset, bytes.length] = bytes
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -51,6 +51,39 @@ module Badline
51
51
  files.length
52
52
  end
53
53
 
54
+ # Gives a file a new name in its directory entry. A missing file
55
+ # fails as FILE NOT FOUND, and a new name already on the disk as
56
+ # FILE EXISTS.
57
+ def rename(old_name, new_name)
58
+ entry = existing_entry(old_name)
59
+ raise WriteError, WriteError::FILE_EXISTS if entry_named(new_name)
60
+
61
+ update_image { @bytes[entry[:offset] + 5, Directory::NAME_LENGTH] = encode_name(new_name) }
62
+ end
63
+
64
+ # Writes a new file holding the files named, one after another, as
65
+ # the type of the first. A missing file fails as FILE NOT FOUND, and
66
+ # a new name already on the disk as FILE EXISTS.
67
+ def copy(new_name, names)
68
+ sources = names.map { |name| existing_entry(name) }
69
+ raise WriteError, WriteError::FILE_EXISTS if entry_named(new_name)
70
+
71
+ bytes = sources.flat_map { |entry| read_chain(entry[:track], entry[:sector]) }
72
+ update_image { add_file(new_name, bytes, sources.first[:type]) }
73
+ end
74
+
75
+ # Adds the files named to the end of a SEQ file. A missing file fails
76
+ # as FILE NOT FOUND, and a file of another type as FILE TYPE
77
+ # MISMATCH.
78
+ def concat(name, names)
79
+ entry = existing_entry(name)
80
+ sources = names.map { |source| existing_entry(source) }
81
+ raise WriteError, WriteError::FILE_TYPE_MISMATCH unless entry[:type] == :seq
82
+
83
+ bytes = [entry, *sources].flat_map { |source| read_chain(source[:track], source[:sector]) }
84
+ update_image { rewrite(entry, bytes, :seq) }
85
+ end
86
+
54
87
  # Raw block access for the DOS `U2` command. A block that the error
55
88
  # table marks bad reads cleanly once written.
56
89
  def write_block(track, sector, data)
@@ -81,6 +114,8 @@ module Badline
81
114
 
82
115
  private
83
116
 
117
+ def existing_entry(name) = entry_named(name) || raise(WriteError, WriteError::FILE_NOT_FOUND)
118
+
84
119
  def update_image
85
120
  raise WriteError, WriteError::WRITE_PROTECT_ON unless writable?
86
121
 
@@ -3,6 +3,7 @@
3
3
  require "badline/storage/disk_image/bam"
4
4
  require "badline/storage/disk_image/catalog"
5
5
  require "badline/storage/disk_image/directory"
6
+ require "badline/storage/disk_image/formatting"
6
7
  require "badline/storage/disk_image/writing"
7
8
 
8
9
  module Badline
@@ -15,6 +16,7 @@ module Badline
15
16
  include Bam
16
17
  include Catalog
17
18
  include Directory
19
+ include Formatting
18
20
  include Writing
19
21
 
20
22
  SECTOR_SIZE = 256
@@ -24,6 +24,7 @@ module Badline
24
24
  WRITE_PROTECT_ON = 26
25
25
  FILE_NOT_FOUND = 62
26
26
  FILE_EXISTS = 63
27
+ FILE_TYPE_MISMATCH = 64
27
28
  DISK_FULL = 72
28
29
 
29
30
  attr_reader :code
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Badline
4
+ module Support
5
+ # A Checkpoint of a CBM-II: its CPU with both segment registers, the
6
+ # 2K of segment 15's RAM, the RAM board's segments, the screen RAM, the
7
+ # picture, the CRTC's registers and counters, the CIA, the ACIA's
8
+ # registers and both TPIs.
9
+ module CBM2Checkpoint
10
+ COMPONENTS = %w[cpu ram segments screen display crtc cia acia tpi1 tpi2].freeze
11
+
12
+ def self.take(machine)
13
+ bus = machine.bus
14
+ Checkpoint.new(machine.cycles, [
15
+ Checkpoint.fnv1a(Checkpoint.cpu_state(machine.cpu) +
16
+ [bus.execution_segment, bus.indirect_segment]),
17
+ Checkpoint.fnv1a(Checkpoint.ram(bus.ram, 0x800)),
18
+ Checkpoint.fnv1a(segments(bus)),
19
+ Checkpoint.fnv1a(Array.new(0x800) { |offset| bus.screen.peek(0xd000 + offset) }),
20
+ Checkpoint.fnv1a(machine.video.display),
21
+ Checkpoint.fnv1a(crtc_state(machine.crtc)),
22
+ Checkpoint.fnv1a(Checkpoint.cia_state(machine.cia)),
23
+ Checkpoint.fnv1a(acia_state(machine.acia)),
24
+ Checkpoint.fnv1a(tpi_state(machine.tpi1)),
25
+ Checkpoint.fnv1a(tpi_state(machine.tpi2))
26
+ ], COMPONENTS)
27
+ end
28
+
29
+ def self.parse(line) = Checkpoint.parse(line, COMPONENTS)
30
+
31
+ # Every byte of the segments the RAM board fills, segment by segment.
32
+ def self.segments(bus)
33
+ bytes = []
34
+ bus.segment_ram.each { |memory| bytes.concat(Checkpoint.ram(memory, 0x10000)) if memory }
35
+ bytes
36
+ end
37
+
38
+ def self.crtc_state(crtc) = crtc.registers + [crtc.column, crtc.line, crtc.row]
39
+
40
+ def self.acia_state(acia) = [acia.command, acia.control, acia.status]
41
+
42
+ def self.tpi_state(tpi)
43
+ [tpi.port_a_output, tpi.port_b_output, tpi.port_c_output, tpi.latches, tpi.mask, tpi.control,
44
+ tpi.irq? ? 1 : 0, *tpi.stack]
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Badline
4
+ module Support
5
+ # A Checkpoint of a P500: its CPU with both segment registers, the 2K
6
+ # of segment 15's RAM, segments 0 and 1, the static video matrix, the
7
+ # colour RAM's nibbles, the picture, the VIC's registers and beam, the
8
+ # SID's registers, the CIA, the ACIA's registers and both TPIs, the
9
+ # last three as CBM2Checkpoint digests them.
10
+ module P500Checkpoint
11
+ COMPONENTS = %w[cpu ram segments screen color_ram display vic sid cia acia tpi1 tpi2].freeze
12
+
13
+ def self.take(machine)
14
+ bus = machine.bus
15
+ Checkpoint.new(machine.cycles, [
16
+ Checkpoint.fnv1a(Checkpoint.cpu_state(machine.cpu) +
17
+ [bus.execution_segment, bus.indirect_segment]),
18
+ Checkpoint.fnv1a(Checkpoint.ram(bus.ram, 0x800)),
19
+ Checkpoint.fnv1a(CBM2Checkpoint.segments(bus)),
20
+ Checkpoint.fnv1a(Array.new(0x400) { |offset| bus.screen.peek(0xd000 + offset) }),
21
+ Checkpoint.fnv1a(Checkpoint.color_ram(machine.color_ram, 0xd400)),
22
+ Checkpoint.fnv1a(machine.vic.display),
23
+ Checkpoint.fnv1a(Checkpoint.vic_state(machine.vic)),
24
+ Checkpoint.fnv1a(Array.new(0x20) { |reg| machine.sid.register(reg) }),
25
+ Checkpoint.fnv1a(Checkpoint.cia_state(machine.cia)),
26
+ Checkpoint.fnv1a(CBM2Checkpoint.acia_state(machine.acia)),
27
+ Checkpoint.fnv1a(CBM2Checkpoint.tpi_state(machine.tpi1)),
28
+ Checkpoint.fnv1a(CBM2Checkpoint.tpi_state(machine.tpi2))
29
+ ], COMPONENTS)
30
+ end
31
+
32
+ def self.parse(line) = Checkpoint.parse(line, COMPONENTS)
33
+ end
34
+ end
35
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Badline
4
- VERSION = "0.16.0"
4
+ VERSION = "0.17.0"
5
5
  end
data/lib/badline.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require "badline/core"
4
4
  require "badline/c128"
5
5
  require "badline/plus4"
6
+ require "badline/cbm2"
6
7
  require "badline/options"
7
8
  require "badline/data_path"
8
9
  require "badline/snapshot"
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.16.0
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inge Jørgensen
@@ -140,7 +140,30 @@ files:
140
140
  - lib/badline/c64/reu/ram.rb
141
141
  - lib/badline/c64/reu/trigger.rb
142
142
  - lib/badline/c64/true_drives.rb
143
+ - lib/badline/cbm2.rb
144
+ - lib/badline/cbm2/acia.rb
145
+ - lib/badline/cbm2/bus.rb
146
+ - lib/badline/cbm2/cpu.rb
147
+ - lib/badline/cbm2/crtc_video.rb
148
+ - lib/badline/cbm2/ieee_drive.rb
149
+ - lib/badline/cbm2/ieee_layout.rb
150
+ - lib/badline/cbm2/ieee_ports.rb
151
+ - lib/badline/cbm2/ieee_traps.rb
152
+ - lib/badline/cbm2/keyboard_ports.rb
153
+ - lib/badline/cbm2/keyed_modules.rb
154
+ - lib/badline/cbm2/keyed_state.rb
155
+ - lib/badline/cbm2/model.rb
156
+ - lib/badline/cbm2/p500.rb
157
+ - lib/badline/cbm2/p500/control_ports.rb
158
+ - lib/badline/cbm2/p500/ieee_layout.rb
159
+ - lib/badline/cbm2/p500/keyed_state.rb
160
+ - lib/badline/cbm2/p500/model.rb
161
+ - lib/badline/cbm2/p500/pages.rb
162
+ - lib/badline/cbm2/sid_page.rb
143
163
  - lib/badline/chips.rb
164
+ - lib/badline/chips/acia.rb
165
+ - lib/badline/chips/acia/frames.rb
166
+ - lib/badline/chips/acia/keyed_state.rb
144
167
  - lib/badline/chips/cia.rb
145
168
  - lib/badline/chips/cia/fast_forward.rb
146
169
  - lib/badline/chips/cia/interrupt_register.rb
@@ -174,6 +197,12 @@ files:
174
197
  - lib/badline/chips/pia.rb
175
198
  - lib/badline/chips/pia/control_lines.rb
176
199
  - lib/badline/chips/pia/keyed_parts.rb
200
+ - lib/badline/chips/riot.rb
201
+ - lib/badline/chips/riot/fast_forward.rb
202
+ - lib/badline/chips/riot/keyed_parts.rb
203
+ - lib/badline/chips/riot/timer.rb
204
+ - lib/badline/chips/rriot.rb
205
+ - lib/badline/chips/rriot/keyed_state.rb
177
206
  - lib/badline/chips/sid.rb
178
207
  - lib/badline/chips/sid/catch_up.rb
179
208
  - lib/badline/chips/sid/decimator.rb
@@ -196,6 +225,8 @@ files:
196
225
  - lib/badline/chips/ted/sound/output.rb
197
226
  - lib/badline/chips/ted/timers.rb
198
227
  - lib/badline/chips/tia.rb
228
+ - lib/badline/chips/tpi.rb
229
+ - lib/badline/chips/tpi/keyed_state.rb
199
230
  - lib/badline/chips/vdc.rb
200
231
  - lib/badline/chips/vdc/keyed_parts.rb
201
232
  - lib/badline/chips/vdc/memory.rb
@@ -314,6 +345,19 @@ files:
314
345
  - lib/badline/drives/model1581/wd1772/stepping.rb
315
346
  - lib/badline/drives/model1581/wd1772/tracks.rb
316
347
  - lib/badline/drives/model1581/wd1772/turn.rb
348
+ - lib/badline/drives/model2031.rb
349
+ - lib/badline/drives/model2031/ieee_port.rb
350
+ - lib/badline/drives/model2031/keyed_state.rb
351
+ - lib/badline/drives/model2031/parts.rb
352
+ - lib/badline/drives/model8050.rb
353
+ - lib/badline/drives/model8050/disk.rb
354
+ - lib/badline/drives/model8050/fdc_bus.rb
355
+ - lib/badline/drives/model8050/idle.rb
356
+ - lib/badline/drives/model8050/ieee_port.rb
357
+ - lib/badline/drives/model8050/ip_bus.rb
358
+ - lib/badline/drives/model8050/keyed_state.rb
359
+ - lib/badline/drives/model8050/mechanism.rb
360
+ - lib/badline/drives/model8050/parts.rb
317
361
  - lib/badline/drives/serial_bus.rb
318
362
  - lib/badline/ffi.rb
319
363
  - lib/badline/frontend.rb
@@ -376,6 +420,7 @@ files:
376
420
  - lib/badline/kernal_trap/dos/block_commands.rb
377
421
  - lib/badline/kernal_trap/dos/channel.rb
378
422
  - lib/badline/kernal_trap/dos/channels.rb
423
+ - lib/badline/kernal_trap/dos/disk_commands.rb
379
424
  - lib/badline/kernal_trap/dos/memory.rb
380
425
  - lib/badline/kernal_trap/dos/parameters.rb
381
426
  - lib/badline/kernal_trap/dos/status.rb
@@ -394,10 +439,12 @@ files:
394
439
  - lib/badline/kernal_trap/steps.rb
395
440
  - lib/badline/machine.rb
396
441
  - lib/badline/machine/clocking.rb
442
+ - lib/badline/machine/ieee_drives.rb
397
443
  - lib/badline/machine/keyboard_buffer.rb
398
444
  - lib/badline/machine/settling.rb
399
445
  - lib/badline/media.rb
400
446
  - lib/badline/media/boot_disk.rb
447
+ - lib/badline/media/cbm2_media.rb
401
448
  - lib/badline/media/disk_list.rb
402
449
  - lib/badline/media/disk_set.rb
403
450
  - lib/badline/media/extensions.rb
@@ -428,6 +475,7 @@ files:
428
475
  - lib/badline/pet/cpu.rb
429
476
  - lib/badline/pet/crtc_video.rb
430
477
  - lib/badline/pet/discrete_video.rb
478
+ - lib/badline/pet/ieee_drive.rb
431
479
  - lib/badline/pet/ieee_ports.rb
432
480
  - lib/badline/pet/ieee_traps.rb
433
481
  - lib/badline/pet/keyboard_ports.rb
@@ -441,7 +489,6 @@ files:
441
489
  - lib/badline/pet/via_ports.rb
442
490
  - lib/badline/plus4.rb
443
491
  - lib/badline/plus4/acia.rb
444
- - lib/badline/plus4/acia/frames.rb
445
492
  - lib/badline/plus4/bus.rb
446
493
  - lib/badline/plus4/cassette_sense.rb
447
494
  - lib/badline/plus4/cpu.rb
@@ -458,17 +505,30 @@ files:
458
505
  - lib/badline/plus4/user_port.rb
459
506
  - lib/badline/region.rb
460
507
  - lib/badline/rom.rb
508
+ - lib/badline/roms/8050/dos-2.7.rom
509
+ - lib/badline/roms/8050/fdc-901869-01.rom
510
+ - lib/badline/roms/8050/fdc-901885-04.rom
461
511
  - lib/badline/roms/README
462
512
  - lib/badline/roms/basic.rom
463
513
  - lib/badline/roms/c128/basic.rom
464
514
  - lib/badline/roms/c128/character.rom
465
515
  - lib/badline/roms/c128/kernal.rom
466
516
  - lib/badline/roms/c64gs.rom
517
+ - lib/badline/roms/cbm2/basic128-02b.rom
518
+ - lib/badline/roms/cbm2/basic128.rom
519
+ - lib/badline/roms/cbm2/basic256.rom
520
+ - lib/badline/roms/cbm2/characters-600.rom
521
+ - lib/badline/roms/cbm2/characters-700.rom
522
+ - lib/badline/roms/cbm2/kernal-03b.rom
523
+ - lib/badline/roms/cbm2/kernal-04a.rom
524
+ - lib/badline/roms/cbm2/p500-basic.rom
525
+ - lib/badline/roms/cbm2/p500-kernal.rom
467
526
  - lib/badline/roms/character.rom
468
527
  - lib/badline/roms/dos1541.rom
469
528
  - lib/badline/roms/dos1551.rom
470
529
  - lib/badline/roms/dos1571.rom
471
530
  - lib/badline/roms/dos1581.rom
531
+ - lib/badline/roms/dos2031.rom
472
532
  - lib/badline/roms/eapi/LICENSE.md
473
533
  - lib/badline/roms/eapi/README
474
534
  - lib/badline/roms/eapi/eapi-am29f040-14
@@ -478,6 +538,7 @@ files:
478
538
  - lib/badline/roms/pet/basic1.rom
479
539
  - lib/badline/roms/pet/basic2.rom
480
540
  - lib/badline/roms/pet/basic4.rom
541
+ - lib/badline/roms/pet/characters-din.rom
481
542
  - lib/badline/roms/pet/characters1.rom
482
543
  - lib/badline/roms/pet/characters2.rom
483
544
  - lib/badline/roms/pet/editor1.rom
@@ -486,6 +547,7 @@ files:
486
547
  - lib/badline/roms/pet/editor4-40-n-50hz.rom
487
548
  - lib/badline/roms/pet/editor4-40-n-60hz.rom
488
549
  - lib/badline/roms/pet/editor4-80-b-50hz-0283.rom
550
+ - lib/badline/roms/pet/editor4-80-b-50hz-8296.rom
489
551
  - lib/badline/roms/pet/editor4-80-b-50hz.rom
490
552
  - lib/badline/roms/pet/editor4-80-b-60hz.rom
491
553
  - lib/badline/roms/pet/editor4-b.rom
@@ -512,6 +574,7 @@ files:
512
574
  - lib/badline/snapshot.rb
513
575
  - lib/badline/snapshot/c128_setup.rb
514
576
  - lib/badline/snapshot/c64_setup.rb
577
+ - lib/badline/snapshot/cbm2_setup.rb
515
578
  - lib/badline/snapshot/container.rb
516
579
  - lib/badline/snapshot/field_doc.rb
517
580
  - lib/badline/snapshot/field_doc/markdown.rb
@@ -530,11 +593,30 @@ files:
530
593
  - lib/badline/snapshot/vic20_setup.rb
531
594
  - lib/badline/snapshot/vice.rb
532
595
  - lib/badline/snapshot/vice/c64_mem.rb
596
+ - lib/badline/snapshot/vice/cbm2.rb
597
+ - lib/badline/snapshot/vice/cbm2_acia.rb
598
+ - lib/badline/snapshot/vice/cbm2_crtc.rb
599
+ - lib/badline/snapshot/vice/cbm2_mains.rb
600
+ - lib/badline/snapshot/vice/cbm2_mem.rb
601
+ - lib/badline/snapshot/vice/cbm2_restore.rb
602
+ - lib/badline/snapshot/vice/cbm2_tpi.rb
533
603
  - lib/badline/snapshot/vice/cias.rb
534
604
  - lib/badline/snapshot/vice/cias_import.rb
535
605
  - lib/badline/snapshot/vice/fields.rb
536
606
  - lib/badline/snapshot/vice/main_cpu.rb
607
+ - lib/badline/snapshot/vice/p500.rb
608
+ - lib/badline/snapshot/vice/p500_restore.rb
609
+ - lib/badline/snapshot/vice/p500_vicii.rb
537
610
  - lib/badline/snapshot/vice/peripherals.rb
611
+ - lib/badline/snapshot/vice/pet.rb
612
+ - lib/badline/snapshot/vice/pet_cpu.rb
613
+ - lib/badline/snapshot/vice/pet_crtc.rb
614
+ - lib/badline/snapshot/vice/pet_drive.rb
615
+ - lib/badline/snapshot/vice/pet_drive8050.rb
616
+ - lib/badline/snapshot/vice/pet_mem.rb
617
+ - lib/badline/snapshot/vice/pet_pias.rb
618
+ - lib/badline/snapshot/vice/pet_restore.rb
619
+ - lib/badline/snapshot/vice/pet_via.rb
538
620
  - lib/badline/snapshot/vice/restore.rb
539
621
  - lib/badline/snapshot/vice/reu1764.rb
540
622
  - lib/badline/snapshot/vice/reu_fields.rb
@@ -554,6 +636,7 @@ files:
554
636
  - lib/badline/storage/disk_image/bam.rb
555
637
  - lib/badline/storage/disk_image/catalog.rb
556
638
  - lib/badline/storage/disk_image/directory.rb
639
+ - lib/badline/storage/disk_image/formatting.rb
557
640
  - lib/badline/storage/disk_image/writing.rb
558
641
  - lib/badline/storage/g64_image.rb
559
642
  - lib/badline/storage/host_directory.rb
@@ -564,7 +647,9 @@ files:
564
647
  - lib/badline/storage/unavailable.rb
565
648
  - lib/badline/support.rb
566
649
  - lib/badline/support/c128_checkpoint.rb
650
+ - lib/badline/support/cbm2_checkpoint.rb
567
651
  - lib/badline/support/checkpoint.rb
652
+ - lib/badline/support/p500_checkpoint.rb
568
653
  - lib/badline/support/pet_checkpoint.rb
569
654
  - lib/badline/support/plus4_checkpoint.rb
570
655
  - lib/badline/support/vic20_checkpoint.rb