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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +76 -0
- data/CLAUDE.md +1 -1
- data/README.md +130 -17
- data/doc/media.md +14 -2
- data/doc/pinned-behaviour.md +61 -0
- data/doc/snapshot-format.md +379 -70
- data/doc/snapshots.md +185 -10
- data/lib/badline/cbm2/acia.rb +10 -0
- data/lib/badline/cbm2/bus.rb +263 -0
- data/lib/badline/cbm2/cpu.rb +58 -0
- data/lib/badline/cbm2/crtc_video.rb +133 -0
- data/lib/badline/cbm2/ieee_drive.rb +18 -0
- data/lib/badline/cbm2/ieee_layout.rb +69 -0
- data/lib/badline/cbm2/ieee_ports.rb +104 -0
- data/lib/badline/cbm2/ieee_traps.rb +81 -0
- data/lib/badline/cbm2/keyboard_ports.rb +60 -0
- data/lib/badline/cbm2/keyed_modules.rb +67 -0
- data/lib/badline/cbm2/keyed_state.rb +91 -0
- data/lib/badline/cbm2/model.rb +44 -0
- data/lib/badline/cbm2/p500/control_ports.rb +80 -0
- data/lib/badline/cbm2/p500/ieee_layout.rb +41 -0
- data/lib/badline/cbm2/p500/keyed_state.rb +85 -0
- data/lib/badline/cbm2/p500/model.rb +39 -0
- data/lib/badline/cbm2/p500/pages.rb +57 -0
- data/lib/badline/cbm2/p500.rb +262 -0
- data/lib/badline/cbm2/sid_page.rb +19 -0
- data/lib/badline/cbm2.rb +267 -0
- data/lib/badline/{plus4 → chips}/acia/frames.rb +1 -1
- data/lib/badline/chips/acia/keyed_state.rb +47 -0
- data/lib/badline/chips/acia.rb +307 -0
- data/lib/badline/chips/crtc.rb +3 -2
- data/lib/badline/chips/riot/fast_forward.rb +72 -0
- data/lib/badline/chips/riot/keyed_parts.rb +69 -0
- data/lib/badline/chips/riot/timer.rb +80 -0
- data/lib/badline/chips/riot.rb +162 -0
- data/lib/badline/chips/rriot/keyed_state.rb +30 -0
- data/lib/badline/chips/rriot.rb +132 -0
- data/lib/badline/chips/tpi/keyed_state.rb +38 -0
- data/lib/badline/chips/tpi.rb +233 -0
- data/lib/badline/chips/vic/bank.rb +60 -5
- data/lib/badline/chips/vic/sprite.rb +4 -3
- data/lib/badline/drives/datasette/keyed_state.rb +9 -1
- data/lib/badline/drives/datasette.rb +27 -3
- data/lib/badline/drives/ieee_bus.rb +50 -4
- data/lib/badline/drives/model2031/ieee_port.rb +133 -0
- data/lib/badline/drives/model2031/keyed_state.rb +66 -0
- data/lib/badline/drives/model2031/parts.rb +25 -0
- data/lib/badline/drives/model2031.rb +92 -0
- data/lib/badline/drives/model8050/disk.rb +163 -0
- data/lib/badline/drives/model8050/fdc_bus.rb +102 -0
- data/lib/badline/drives/model8050/idle.rb +177 -0
- data/lib/badline/drives/model8050/ieee_port.rb +147 -0
- data/lib/badline/drives/model8050/ip_bus.rb +93 -0
- data/lib/badline/drives/model8050/keyed_state.rb +160 -0
- data/lib/badline/drives/model8050/mechanism.rb +230 -0
- data/lib/badline/drives/model8050/parts.rb +37 -0
- data/lib/badline/drives/model8050.rb +243 -0
- data/lib/badline/frontend/app.rb +10 -3
- data/lib/badline/frontend/boot.rb +1 -1
- data/lib/badline/frontend/controls.rb +51 -15
- data/lib/badline/frontend/gamepads.rb +3 -3
- data/lib/badline/frontend/keys.rb +61 -2
- data/lib/badline/frontend/media_slots.rb +1 -1
- data/lib/badline/frontend/menu/menu_media.rb +14 -11
- data/lib/badline/frontend/menu/menu_pages.rb +29 -6
- data/lib/badline/frontend/menu/menu_ports.rb +40 -4
- data/lib/badline/frontend/menu/pause_menu.rb +1 -1
- data/lib/badline/frontend/pet_keyboard.rb +23 -7
- data/lib/badline/frontend/timeline.rb +19 -10
- data/lib/badline/kernal_trap/dos/disk_commands.rb +80 -0
- data/lib/badline/kernal_trap/dos/status.rb +3 -0
- data/lib/badline/kernal_trap/dos.rb +18 -5
- data/lib/badline/kernal_trap/ieee.rb +7 -2
- data/lib/badline/kernal_trap/ieee_layout.rb +95 -43
- data/lib/badline/machine/ieee_drives.rb +194 -0
- data/lib/badline/machine/settling.rb +4 -0
- data/lib/badline/machine.rb +26 -8
- data/lib/badline/media/cbm2_media.rb +29 -0
- data/lib/badline/media/pet_media.rb +5 -5
- data/lib/badline/media/program.rb +6 -3
- data/lib/badline/media/true_drive.rb +50 -8
- data/lib/badline/media.rb +21 -8
- data/lib/badline/options/family.rb +15 -3
- data/lib/badline/options/help.rb +24 -6
- data/lib/badline/options/table.rb +25 -5
- data/lib/badline/options/validation.rb +47 -7
- data/lib/badline/options.rb +48 -15
- data/lib/badline/pet/bus/expansion.rb +99 -5
- data/lib/badline/pet/bus.rb +30 -12
- data/lib/badline/pet/cassettes.rb +22 -1
- data/lib/badline/pet/characters.rb +8 -2
- data/lib/badline/pet/crtc_video.rb +20 -7
- data/lib/badline/pet/ieee_drive.rb +17 -0
- data/lib/badline/pet/ieee_ports.rb +19 -1
- data/lib/badline/pet/ieee_traps.rb +10 -5
- data/lib/badline/pet/keyed_modules.rb +4 -1
- data/lib/badline/pet/keyed_parts.rb +10 -6
- data/lib/badline/pet/model.rb +56 -6
- data/lib/badline/pet/rom_sets.rb +30 -6
- data/lib/badline/pet.rb +45 -16
- data/lib/badline/plus4/acia.rb +4 -298
- data/lib/badline/plus4/keyed_parts.rb +0 -44
- data/lib/badline/plus4.rb +1 -0
- data/lib/badline/roms/8050/dos-2.7.rom +0 -0
- data/lib/badline/roms/8050/fdc-901869-01.rom +0 -0
- data/lib/badline/roms/8050/fdc-901885-04.rom +0 -0
- data/lib/badline/roms/README +144 -1
- data/lib/badline/roms/cbm2/basic128-02b.rom +0 -0
- data/lib/badline/roms/cbm2/basic128.rom +0 -0
- data/lib/badline/roms/cbm2/basic256.rom +0 -0
- data/lib/badline/roms/cbm2/characters-600.rom +0 -0
- data/lib/badline/roms/cbm2/characters-700.rom +0 -0
- data/lib/badline/roms/cbm2/kernal-03b.rom +0 -0
- data/lib/badline/roms/cbm2/kernal-04a.rom +0 -0
- data/lib/badline/roms/cbm2/p500-basic.rom +0 -0
- data/lib/badline/roms/cbm2/p500-kernal.rom +0 -0
- data/lib/badline/roms/dos2031.rom +0 -0
- data/lib/badline/roms/pet/characters-din.rom +0 -0
- data/lib/badline/roms/pet/editor4-80-b-50hz-8296.rom +0 -0
- data/lib/badline/snapshot/cbm2_setup.rb +53 -0
- data/lib/badline/snapshot/container.rb +9 -1
- data/lib/badline/snapshot/field_doc/markdown.rb +4 -2
- data/lib/badline/snapshot/field_doc.rb +39 -3
- data/lib/badline/snapshot/image.rb +79 -15
- data/lib/badline/snapshot/pet_setup.rb +30 -13
- data/lib/badline/snapshot/vice/cbm2.rb +93 -0
- data/lib/badline/snapshot/vice/cbm2_acia.rb +75 -0
- data/lib/badline/snapshot/vice/cbm2_crtc.rb +127 -0
- data/lib/badline/snapshot/vice/cbm2_mains.rb +49 -0
- data/lib/badline/snapshot/vice/cbm2_mem.rb +75 -0
- data/lib/badline/snapshot/vice/cbm2_restore.rb +204 -0
- data/lib/badline/snapshot/vice/cbm2_tpi.rb +58 -0
- data/lib/badline/snapshot/vice/cias.rb +13 -9
- data/lib/badline/snapshot/vice/p500.rb +96 -0
- data/lib/badline/snapshot/vice/p500_restore.rb +130 -0
- data/lib/badline/snapshot/vice/p500_vicii.rb +166 -0
- data/lib/badline/snapshot/vice/pet.rb +121 -0
- data/lib/badline/snapshot/vice/pet_cpu.rb +70 -0
- data/lib/badline/snapshot/vice/pet_crtc.rb +241 -0
- data/lib/badline/snapshot/vice/pet_drive.rb +180 -0
- data/lib/badline/snapshot/vice/pet_drive8050.rb +216 -0
- data/lib/badline/snapshot/vice/pet_mem.rb +93 -0
- data/lib/badline/snapshot/vice/pet_pias.rb +56 -0
- data/lib/badline/snapshot/vice/pet_restore.rb +214 -0
- data/lib/badline/snapshot/vice/pet_via.rb +165 -0
- data/lib/badline/snapshot/vice/sid_registers.rb +2 -1
- data/lib/badline/snapshot/vice/vicii_import.rb +10 -6
- data/lib/badline/snapshot/vice.rb +4 -0
- data/lib/badline/snapshot.rb +11 -3
- data/lib/badline/storage/crt_file.rb +7 -1
- data/lib/badline/storage/d64_image.rb +7 -0
- data/lib/badline/storage/d80_image.rb +17 -1
- data/lib/badline/storage/d81_image.rb +14 -0
- data/lib/badline/storage/disk_image/bam.rb +18 -3
- data/lib/badline/storage/disk_image/formatting.rb +69 -0
- data/lib/badline/storage/disk_image/writing.rb +35 -0
- data/lib/badline/storage/disk_image.rb +2 -0
- data/lib/badline/storage.rb +1 -0
- data/lib/badline/support/cbm2_checkpoint.rb +48 -0
- data/lib/badline/support/p500_checkpoint.rb +35 -0
- data/lib/badline/version.rb +1 -1
- data/lib/badline.rb +1 -0
- 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
|
data/lib/badline/storage.rb
CHANGED
|
@@ -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
|
data/lib/badline/version.rb
CHANGED
data/lib/badline.rb
CHANGED
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.
|
|
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
|