badline 0.13.0 → 0.14.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 +49 -1
- data/CLAUDE.md +27 -7
- data/CONTRIBUTING.md +4 -3
- data/README.md +8 -5
- data/doc/media.md +2 -1
- data/doc/pinned-behaviour.md +29 -0
- data/doc/snapshot-format.md +1047 -0
- data/doc/snapshots.md +72 -39
- data/lib/badline/audio/bare_player.rb +50 -17
- data/lib/badline/audio/machine_player.rb +15 -9
- data/lib/badline/audio/renderer.rb +32 -21
- data/lib/badline/c128/banks.rb +6 -3
- data/lib/badline/c128/bus/keyed_state.rb +45 -0
- data/lib/badline/c128/bus.rb +17 -3
- data/lib/badline/c128/drives.rb +6 -25
- data/lib/badline/c128/keyed_modules.rb +117 -0
- data/lib/badline/c128/keyed_state.rb +91 -0
- data/lib/badline/c128/keys.rb +9 -0
- data/lib/badline/c128/mmu.rb +9 -8
- data/lib/badline/c128/mmu_pages.rb +20 -0
- data/lib/badline/c128/modes.rb +19 -9
- data/lib/badline/c128/z80_turns.rb +1 -1
- data/lib/badline/c128.rb +8 -8
- data/lib/badline/c64/attachments.rb +0 -44
- data/lib/badline/c64/banked_ram/plus256k.rb +18 -10
- data/lib/badline/c64/banked_ram/plus60k.rb +8 -6
- data/lib/badline/c64/banked_ram/unexpanded.rb +2 -2
- data/lib/badline/c64/bus/debug_register.rb +32 -0
- data/lib/badline/c64/bus/keyed_state.rb +41 -0
- data/lib/badline/c64/bus.rb +2 -1
- data/lib/badline/c64/cartridge/action_replay.rb +0 -13
- data/lib/badline/c64/cartridge/easy_flash.rb +0 -15
- data/lib/badline/c64/cartridge/epyx_fastload.rb +0 -8
- data/lib/badline/c64/cartridge/final_cartridge3.rb +0 -12
- data/lib/badline/c64/cartridge/flash.rb +3 -3
- data/lib/badline/c64/cartridge/g_mod2.rb +0 -12
- data/lib/badline/c64/cartridge/geo_ram.rb +0 -16
- data/lib/badline/c64/cartridge/kcs_power.rb +0 -8
- data/lib/badline/c64/cartridge/keyed_state.rb +393 -0
- data/lib/badline/c64/cartridge/pagefox.rb +0 -10
- data/lib/badline/c64/cartridge/retro_replay.rb +0 -8
- data/lib/badline/c64/cartridge/rgcd.rb +0 -10
- data/lib/badline/c64/cartridge/super_games.rb +0 -10
- data/lib/badline/c64/cartridge/zaxxon.rb +0 -16
- data/lib/badline/c64/cartridge.rb +1 -27
- data/lib/badline/c64/kernal_traps.rb +28 -25
- data/lib/badline/c64/keyed_modules.rb +111 -0
- data/lib/badline/c64/keyed_state.rb +68 -0
- data/lib/badline/c64/reu/dma.rb +0 -4
- data/lib/badline/c64/reu/keyed_state.rb +140 -0
- data/lib/badline/c64/reu/ram.rb +0 -15
- data/lib/badline/c64/reu.rb +1 -3
- data/lib/badline/c64/true_drives.rb +56 -5
- data/lib/badline/c64.rb +7 -3
- data/lib/badline/chips/cia/interrupt_register.rb +0 -17
- data/lib/badline/chips/cia/keyed_parts.rb +213 -0
- data/lib/badline/chips/cia/serial.rb +0 -4
- data/lib/badline/chips/cia/time_of_day.rb +0 -22
- data/lib/badline/chips/cia/timer.rb +0 -20
- data/lib/badline/chips/cia.rb +2 -2
- data/lib/badline/chips/cpu/core.rb +18 -2
- data/lib/badline/chips/cpu/keyed_state.rb +177 -0
- data/lib/badline/chips/cpu/microcode.rb +16 -0
- data/lib/badline/chips/cpu/port.rb +20 -3
- data/lib/badline/chips/cpu.rb +5 -0
- data/lib/badline/chips/sid/decimator.rb +10 -8
- data/lib/badline/chips/sid/envelope.rb +1 -6
- data/lib/badline/chips/sid/filter.rb +0 -14
- data/lib/badline/chips/sid/keyed_parts.rb +286 -0
- data/lib/badline/chips/sid/voice.rb +0 -10
- data/lib/badline/chips/sid/waveform.rb +0 -2
- data/lib/badline/chips/sid.rb +1 -2
- data/lib/badline/chips/ted/beam.rb +119 -0
- data/lib/badline/chips/ted/timers.rb +66 -0
- data/lib/badline/chips/ted.rb +143 -0
- data/lib/badline/chips/tia.rb +49 -0
- data/lib/badline/chips/vdc/keyed_parts.rb +105 -0
- data/lib/badline/chips/vdc/painter.rb +0 -12
- data/lib/badline/chips/vdc/raster.rb +0 -16
- data/lib/badline/chips/vdc/window.rb +0 -9
- data/lib/badline/chips/vdc.rb +1 -2
- data/lib/badline/chips/via/control_lines.rb +0 -15
- data/lib/badline/chips/via/interrupt_register.rb +0 -9
- data/lib/badline/chips/via/keyed_parts.rb +163 -0
- data/lib/badline/chips/via/shift_register.rb +0 -14
- data/lib/badline/chips/via/timer1.rb +0 -13
- data/lib/badline/chips/via/timer2.rb +0 -18
- data/lib/badline/chips/via.rb +1 -2
- data/lib/badline/chips/vic/border_mask.rb +0 -10
- data/lib/badline/chips/vic/collisions.rb +0 -11
- data/lib/badline/chips/vic/color_patches.rb +0 -11
- data/lib/badline/chips/vic/display_state.rb +0 -19
- data/lib/badline/chips/vic/graphics_shifter.rb +0 -4
- data/lib/badline/chips/vic/keyed_parts.rb +228 -0
- data/lib/badline/chips/vic/keyed_sprites.rb +225 -0
- data/lib/badline/chips/vic/keyed_state.rb +102 -0
- data/lib/badline/chips/vic/register_log.rb +0 -18
- data/lib/badline/chips/vic/registers.rb +0 -9
- data/lib/badline/chips/vic/sequencer.rb +0 -2
- data/lib/badline/chips/vic/sprite/internal_bus.rb +0 -11
- data/lib/badline/chips/vic/sprite.rb +0 -2
- data/lib/badline/chips/vic/sprites.rb +0 -3
- data/lib/badline/chips/vic.rb +6 -2
- data/lib/badline/chips/vic_i/keyed_parts.rb +142 -0
- data/lib/badline/chips/vic_i/painter.rb +0 -4
- data/lib/badline/chips/vic_i/sound.rb +38 -46
- data/lib/badline/chips/vic_i.rb +2 -2
- data/lib/badline/chips/z80/core.rb +2 -2
- data/lib/badline/chips/z80/keyed_state.rb +73 -0
- data/lib/badline/chips.rb +10 -0
- data/lib/badline/core.rb +4 -21
- data/lib/badline/drives/datasette/keyed_state.rb +38 -0
- data/lib/badline/drives/datasette.rb +40 -7
- data/lib/badline/drives/engine/core.rb +3 -0
- data/lib/badline/drives/engine/serial_lines.rb +4 -7
- data/lib/badline/drives/model1541/bus.rb +0 -13
- data/lib/badline/drives/model1541/disk.rb +9 -8
- data/lib/badline/drives/model1541/keyed_state.rb +251 -0
- data/lib/badline/drives/model1541/mechanism.rb +0 -2
- data/lib/badline/drives/model1541.rb +1 -2
- data/lib/badline/drives/model1571/bus.rb +0 -13
- data/lib/badline/drives/model1571/keyed_state.rb +108 -0
- data/lib/badline/drives/model1571/wd1770.rb +0 -14
- data/lib/badline/drives/model1571.rb +1 -2
- data/lib/badline/drives/model1581/bus.rb +0 -13
- data/lib/badline/drives/model1581/disk.rb +0 -4
- data/lib/badline/drives/model1581/keyed_state.rb +280 -0
- data/lib/badline/drives/model1581/mechanism.rb +0 -21
- data/lib/badline/drives/model1581/slot.rb +0 -18
- data/lib/badline/drives/model1581/wd1772.rb +0 -2
- data/lib/badline/drives/model1581.rb +2 -2
- data/lib/badline/drives.rb +8 -0
- data/lib/badline/frontend/app.rb +3 -3
- data/lib/badline/frontend/boot.rb +1 -1
- data/lib/badline/frontend/controls.rb +19 -3
- data/lib/badline/frontend/drive_led.rb +44 -21
- data/lib/badline/frontend/menu/menu_dialogs.rb +2 -2
- data/lib/badline/frontend/snapshots.rb +12 -1
- data/lib/badline/frontend/timeline.rb +28 -10
- data/lib/badline/input/matrix_typist.rb +98 -0
- data/lib/badline/input.rb +1 -0
- data/lib/badline/kernal_trap/chrout.rb +45 -0
- data/lib/badline/kernal_trap/dos/channel.rb +0 -27
- data/lib/badline/kernal_trap/dos/channels.rb +0 -25
- data/lib/badline/kernal_trap/dos/memory.rb +0 -9
- data/lib/badline/kernal_trap/dos/status.rb +0 -8
- data/lib/badline/kernal_trap/dos/write_file.rb +0 -18
- data/lib/badline/kernal_trap/dos.rb +0 -19
- data/lib/badline/kernal_trap/file_routine.rb +4 -4
- data/lib/badline/kernal_trap/keyed_state.rb +150 -0
- data/lib/badline/kernal_trap/layout.rb +75 -11
- data/lib/badline/kernal_trap/load.rb +14 -16
- data/lib/badline/kernal_trap/routine.rb +12 -0
- data/lib/badline/kernal_trap/save.rb +8 -18
- data/lib/badline/kernal_trap/serial.rb +1 -17
- data/lib/badline/kernal_trap.rb +2 -0
- data/lib/badline/machine/keyboard_buffer.rb +49 -0
- data/lib/badline/machine/settling.rb +29 -0
- data/lib/badline/machine.rb +5 -2
- data/lib/badline/media/boot_disk.rb +14 -2
- data/lib/badline/media/extensions.rb +10 -0
- data/lib/badline/memory.rb +3 -6
- data/lib/badline/options/family.rb +5 -2
- data/lib/badline/options/help.rb +42 -16
- data/lib/badline/options/table.rb +2 -0
- data/lib/badline/options/validation.rb +2 -0
- data/lib/badline/options.rb +6 -1
- data/lib/badline/plus4/acia.rb +45 -0
- data/lib/badline/plus4/bus.rb +312 -0
- data/lib/badline/plus4/cpu.rb +10 -0
- data/lib/badline/plus4/cpu_port.rb +93 -0
- data/lib/badline/plus4/keyboard_port.rb +51 -0
- data/lib/badline/plus4/model.rb +38 -0
- data/lib/badline/plus4/user_port.rb +31 -0
- data/lib/badline/plus4.rb +164 -0
- data/lib/badline/roms/README +38 -0
- data/lib/badline/roms/plus4/basic.rom +0 -0
- data/lib/badline/roms/plus4/function-high.rom +0 -0
- data/lib/badline/roms/plus4/function-low.rom +0 -0
- data/lib/badline/roms/plus4/kernal-ntsc.rom +0 -0
- data/lib/badline/roms/plus4/kernal-pal.rom +0 -0
- data/lib/badline/snapshot/c128_setup.rb +9 -20
- data/lib/badline/snapshot/c64_setup.rb +28 -24
- data/lib/badline/snapshot/container.rb +4 -0
- data/lib/badline/snapshot/field_doc/markdown.rb +112 -0
- data/lib/badline/snapshot/field_doc.rb +109 -0
- data/lib/badline/snapshot/image.rb +134 -28
- data/lib/badline/snapshot/keyed/cursor.rb +40 -0
- data/lib/badline/snapshot/keyed/modules.rb +66 -0
- data/lib/badline/snapshot/keyed/reader.rb +188 -0
- data/lib/badline/snapshot/keyed/recorder.rb +88 -0
- data/lib/badline/snapshot/keyed/report.rb +26 -0
- data/lib/badline/snapshot/keyed/writer.rb +55 -0
- data/lib/badline/snapshot/keyed.rb +64 -0
- data/lib/badline/snapshot/machine_state.rb +17 -64
- data/lib/badline/snapshot/storage_setup.rb +29 -34
- data/lib/badline/snapshot/vic20_setup.rb +6 -15
- data/lib/badline/snapshot/vice/reu1764.rb +2 -2
- data/lib/badline/snapshot/vice.rb +7 -31
- data/lib/badline/snapshot.rb +43 -20
- data/lib/badline/storage/crt_file.rb +3 -1
- data/lib/badline/storage/g64_image.rb +8 -3
- data/lib/badline/storage/tap.rb +43 -15
- data/lib/badline/version.rb +1 -1
- data/lib/badline/vic20/attachments.rb +3 -0
- data/lib/badline/vic20/bus/keyed_state.rb +52 -0
- data/lib/badline/vic20/bus.rb +1 -2
- data/lib/badline/vic20/keyed_modules.rb +73 -0
- data/lib/badline/vic20/keyed_state.rb +45 -0
- data/lib/badline/vic20.rb +5 -5
- data/lib/badline.rb +1 -0
- metadata +61 -42
- data/lib/badline/c128/bus/saved_state.rb +0 -53
- data/lib/badline/c128/saved_state.rb +0 -117
- data/lib/badline/c64/bus/saved_state.rb +0 -68
- data/lib/badline/c64/cartridge/flash/saved_state.rb +0 -40
- data/lib/badline/c64/cartridge/retro_replay/saved_state.rb +0 -47
- data/lib/badline/c64/cartridge/saved_state.rb +0 -63
- data/lib/badline/c64/reu/dma/saved_state.rb +0 -52
- data/lib/badline/c64/reu/saved_state.rb +0 -55
- data/lib/badline/c64/saved_state.rb +0 -112
- data/lib/badline/chips/cia/saved_state.rb +0 -49
- data/lib/badline/chips/cia/serial/saved_state.rb +0 -45
- data/lib/badline/chips/cpu/saved_state.rb +0 -117
- data/lib/badline/chips/sid/envelope/saved_state.rb +0 -70
- data/lib/badline/chips/sid/filter/saved_state.rb +0 -42
- data/lib/badline/chips/sid/saved_state.rb +0 -52
- data/lib/badline/chips/sid/waveform/saved_state.rb +0 -68
- data/lib/badline/chips/vdc/saved_state.rb +0 -36
- data/lib/badline/chips/via/saved_state.rb +0 -44
- data/lib/badline/chips/vic/graphics_shifter/saved_state.rb +0 -40
- data/lib/badline/chips/vic/saved_state.rb +0 -82
- data/lib/badline/chips/vic/sequencer/saved_state.rb +0 -91
- data/lib/badline/chips/vic/sprite/saved_state.rb +0 -66
- data/lib/badline/chips/vic/sprites/saved_state.rb +0 -59
- data/lib/badline/chips/vic_i/painter/saved_state.rb +0 -40
- data/lib/badline/chips/vic_i/saved_state.rb +0 -55
- data/lib/badline/chips/z80/saved_state.rb +0 -71
- data/lib/badline/chrout_trap.rb +0 -43
- data/lib/badline/debug_register.rb +0 -28
- data/lib/badline/drives/datasette/saved_state.rb +0 -37
- data/lib/badline/drives/model1541/disk/saved_state.rb +0 -88
- data/lib/badline/drives/model1541/mechanism/saved_state.rb +0 -72
- data/lib/badline/drives/model1541/saved_state.rb +0 -44
- data/lib/badline/drives/model1571/saved_state.rb +0 -47
- data/lib/badline/drives/model1581/disk/saved_state.rb +0 -89
- data/lib/badline/drives/model1581/saved_state.rb +0 -42
- data/lib/badline/drives/model1581/wd1772/saved_state.rb +0 -68
- data/lib/badline/keyboard_buffer.rb +0 -33
- data/lib/badline/snapshot/setup.rb +0 -31
- data/lib/badline/snapshot/state.rb +0 -179
- data/lib/badline/vic20/bus/saved_state.rb +0 -35
- data/lib/badline/vic20/saved_state.rb +0 -110
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Badline
|
|
4
|
+
class Vic20
|
|
5
|
+
class Bus
|
|
6
|
+
class ColorRAM
|
|
7
|
+
# The cells in a keyed snapshot module, under `key`.
|
|
8
|
+
def save_fields(out, key) = out.bytes(key, @cells)
|
|
9
|
+
|
|
10
|
+
def load_fields(input, key) = input.bytes_into(key, @cells)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# The bytes each side's data lines hold, under `prefix`, and a
|
|
14
|
+
# cartridge's ROM chips as rom<N>.start and rom<N>.bytes, in a keyed
|
|
15
|
+
# snapshot module (Snapshot::Keyed). The pages are mapped again once
|
|
16
|
+
# they are loaded.
|
|
17
|
+
module KeyedState
|
|
18
|
+
def save_fields(out, prefix)
|
|
19
|
+
out.int("#{prefix}data", @data).int("#{prefix}video_data", @video_data)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def load_fields(input, prefix)
|
|
23
|
+
@data = input.byte("#{prefix}data", @data)
|
|
24
|
+
@video_data = input.byte("#{prefix}video_data", @video_data)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Whether a cartridge's ROM chips are in the expansion blocks.
|
|
28
|
+
def cartridge? = !@roms.empty?
|
|
29
|
+
|
|
30
|
+
def save_rom_fields(out)
|
|
31
|
+
out.int("roms", @roms.length)
|
|
32
|
+
@roms.each_with_index do |rom, number|
|
|
33
|
+
out.int("rom#{number}.start", rom.start)
|
|
34
|
+
rom.save_fields(out, "rom#{number}.bytes")
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def load_rom_fields(input)
|
|
39
|
+
@roms = []
|
|
40
|
+
input.int("roms", 0).times do |number|
|
|
41
|
+
bytes = input.bytes("rom#{number}.bytes", "".b).bytes
|
|
42
|
+
@roms << ROM.new(bytes, length: bytes.length, start: input.word("rom#{number}.start", 0))
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def restored! = map_pages
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
include KeyedState
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
data/lib/badline/vic20/bus.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require "badline/vic20/bus/
|
|
3
|
+
require "badline/vic20/bus/keyed_state"
|
|
4
4
|
|
|
5
5
|
module Badline
|
|
6
6
|
class Vic20
|
|
@@ -29,7 +29,6 @@ module Badline
|
|
|
29
29
|
# Writes to ROM and to empty spots go nowhere.
|
|
30
30
|
class Bus
|
|
31
31
|
include Addressable
|
|
32
|
-
include SavedState
|
|
33
32
|
|
|
34
33
|
# The pages each expansion block covers, as [first page, count].
|
|
35
34
|
BLOCKS = {
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Badline
|
|
4
|
+
class Vic20
|
|
5
|
+
# The whole machine as keyed snapshot modules (Snapshot::Keyed), in the
|
|
6
|
+
# order a load applies them, as C64::KeyedModules: BL-MACHINE with the
|
|
7
|
+
# RAM expansion and the bytes each side's data lines hold under bus.*,
|
|
8
|
+
# the memories, a cartridge's ROM chips, the VIC with its sound, both
|
|
9
|
+
# VIAs, the CPU, the datasette, device 8 through the traps and the true
|
|
10
|
+
# drives.
|
|
11
|
+
module KeyedModules
|
|
12
|
+
def save_modules
|
|
13
|
+
bus = @bus
|
|
14
|
+
sections = [Snapshot::Keyed.section("BL-MACHINE") do |out|
|
|
15
|
+
save_machine_fields(out)
|
|
16
|
+
bus.save_fields(out, "bus.")
|
|
17
|
+
end]
|
|
18
|
+
sections << Snapshot::Keyed.section("BL-RAM") { |out| bus.ram.save_fields(out, "ram") }
|
|
19
|
+
sections << Snapshot::Keyed.section("BL-COLORRAM") { |out| bus.color_ram.save_fields(out, "ram") }
|
|
20
|
+
sections << Snapshot::Keyed.section("BL-CART") { |out| bus.save_rom_fields(out) } if bus.cartridge?
|
|
21
|
+
sections << Snapshot::Keyed.section("BL-CPU") { |out| @cpu.save_fields(out) }
|
|
22
|
+
sections << Snapshot::Keyed.section("BL-VICI") { |out| @vic.save_fields(out) }
|
|
23
|
+
sections << Snapshot::Keyed.section("BL-VIA1") { |out| @via1.save_fields(out) }
|
|
24
|
+
sections << Snapshot::Keyed.section("BL-VIA2") { |out| @via2.save_fields(out) }
|
|
25
|
+
sections << Snapshot::Keyed.section("BL-TAPE") { |out| @datasette.save_fields(out) }
|
|
26
|
+
sections << Snapshot::Keyed.section("BL-TRAPDOS") { |out| save_trap_dos_fields(out) } if mounted?
|
|
27
|
+
save_drive_modules(sections)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Raises Snapshot::FormatError for the modules of a VIC-20 with
|
|
31
|
+
# another RAM expansion.
|
|
32
|
+
def load_modules(modules)
|
|
33
|
+
machine = modules.machine
|
|
34
|
+
check_snapshot_setup(Snapshot::Vic20Setup.read_fields(machine))
|
|
35
|
+
load_machine_fields(machine)
|
|
36
|
+
bus = @bus
|
|
37
|
+
bus.load_fields(machine, "bus.")
|
|
38
|
+
bus.ram.load_fields(modules.required("BL-RAM"), "ram")
|
|
39
|
+
bus.color_ram.load_fields(modules.required("BL-COLORRAM"), "ram")
|
|
40
|
+
bus.load_rom_fields(modules.optional("BL-CART") || Snapshot::Keyed::Reader.new("BL-CART"))
|
|
41
|
+
bus.restored!
|
|
42
|
+
@vic.load_fields(modules.required("BL-VICI"))
|
|
43
|
+
@via1.load_fields(modules.required("BL-VIA1"))
|
|
44
|
+
@via2.load_fields(modules.required("BL-VIA2"))
|
|
45
|
+
@cpu.load_fields(modules.required("BL-CPU"))
|
|
46
|
+
@datasette.load_fields(modules.required("BL-TAPE"))
|
|
47
|
+
trap_dos = modules.optional("BL-TRAPDOS")
|
|
48
|
+
trap_dos ? load_trap_dos_fields(trap_dos, detached: modules.detached?) : unmount
|
|
49
|
+
load_drive_modules(modules)
|
|
50
|
+
modules_restored!
|
|
51
|
+
self
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def modules_restored!
|
|
57
|
+
@cpu.restored!
|
|
58
|
+
@vic.restored!
|
|
59
|
+
@via1.restored!
|
|
60
|
+
@via2.restored!
|
|
61
|
+
machine_restored!
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def check_snapshot_setup(setup)
|
|
65
|
+
return if setup.ram == @ram_configuration
|
|
66
|
+
|
|
67
|
+
raise Snapshot::FormatError, "the snapshot is of a VIC-20 with #{setup.ram} RAM, not #{@ram_configuration}"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
include KeyedModules
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Badline
|
|
4
|
+
class Vic20
|
|
5
|
+
# The machine's own fields in a keyed snapshot module (Snapshot::Keyed,
|
|
6
|
+
# BL-MACHINE): the family, its RAM expansion by name, the cycle count,
|
|
7
|
+
# the RESTORE key's NMI, and the host's typing still to feed and on_init
|
|
8
|
+
# handlers still to run under host.*.
|
|
9
|
+
module KeyedState
|
|
10
|
+
# How many more on_init handlers the machine a snapshot was taken of had
|
|
11
|
+
# yet to run than this one has. Nil until the machine is restored.
|
|
12
|
+
attr_reader :init_handlers_lost
|
|
13
|
+
|
|
14
|
+
# Whether a snapshot saves now (Machine::Settling): the CPU between
|
|
15
|
+
# instructions or jammed.
|
|
16
|
+
def settled_for_snapshot? = @cpu.boundary? || @cpu.jammed?
|
|
17
|
+
|
|
18
|
+
# The sound's voices, run up to this cycle.
|
|
19
|
+
def settle_chips_for_snapshot = @sound.catch_up!
|
|
20
|
+
|
|
21
|
+
def save_machine_fields(out)
|
|
22
|
+
out.text("family", "vic20").text("written_by", VERSION)
|
|
23
|
+
Snapshot::Vic20Setup.new(ram: @ram_configuration).write_fields(out)
|
|
24
|
+
out.int("cycles", @cycles).bool("nmi_asserted", @nmi_asserted)
|
|
25
|
+
pending = @pending_keys
|
|
26
|
+
out.ints("host.pending_keys", pending) if pending
|
|
27
|
+
out.int("host.init_pending", @cycles <= @init_threshold ? @init_handlers.length : 0)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def load_machine_fields(input)
|
|
31
|
+
@cycles = input.int("cycles", @cycles)
|
|
32
|
+
@nmi_asserted = input.bool("nmi_asserted", @nmi_asserted)
|
|
33
|
+
pending = input.ints("host.pending_keys", [])
|
|
34
|
+
@pending_keys = pending.empty? ? nil : pending.dup
|
|
35
|
+
@init_handlers_lost = [input.int("host.init_pending", 0) - @init_handlers.length, 0].max
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# The serial bus's lines and the datasette's motor and write line from
|
|
39
|
+
# the VIAs, once they are loaded.
|
|
40
|
+
def machine_restored! = via_written
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
include KeyedState
|
|
44
|
+
end
|
|
45
|
+
end
|
data/lib/badline/vic20.rb
CHANGED
|
@@ -6,9 +6,9 @@ require "badline/vic20/cpu"
|
|
|
6
6
|
require "badline/vic20/keyboard_via_ports"
|
|
7
7
|
require "badline/vic20/port_wiring"
|
|
8
8
|
require "badline/vic20/user_via_ports"
|
|
9
|
-
require "badline/
|
|
10
|
-
require "badline/
|
|
11
|
-
require "badline/vic20/
|
|
9
|
+
require "badline/snapshot/vic20_setup"
|
|
10
|
+
require "badline/vic20/keyed_state"
|
|
11
|
+
require "badline/vic20/keyed_modules"
|
|
12
12
|
|
|
13
13
|
module Badline
|
|
14
14
|
# The Commodore VIC-20 with the PAL 6561: a 6502 at the VIC's clock, the
|
|
@@ -22,11 +22,11 @@ module Badline
|
|
|
22
22
|
# serves disks through the KERNAL traps or a true 1541.
|
|
23
23
|
class Vic20
|
|
24
24
|
include IntegerHelper
|
|
25
|
-
include KeyboardBuffer
|
|
25
|
+
include Machine::KeyboardBuffer
|
|
26
26
|
include Machine::Clocking
|
|
27
|
+
include Machine::Settling
|
|
27
28
|
include Attachments
|
|
28
29
|
include PortWiring
|
|
29
|
-
include SavedState
|
|
30
30
|
|
|
31
31
|
attr_reader :bus, :cpu, :vic, :via1, :via2, :keyboard, :joystick1, :cycles, :init_threshold, :sound,
|
|
32
32
|
:drive1541, :iec_bus, :datasette
|
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.14.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Inge Jørgensen
|
|
@@ -45,6 +45,7 @@ files:
|
|
|
45
45
|
- doc/media.md
|
|
46
46
|
- doc/pinned-behaviour.md
|
|
47
47
|
- doc/sid-player.md
|
|
48
|
+
- doc/snapshot-format.md
|
|
48
49
|
- doc/snapshots.md
|
|
49
50
|
- exe/badline-ruby
|
|
50
51
|
- lib/badline.rb
|
|
@@ -68,18 +69,19 @@ files:
|
|
|
68
69
|
- lib/badline/c128.rb
|
|
69
70
|
- lib/badline/c128/banks.rb
|
|
70
71
|
- lib/badline/c128/bus.rb
|
|
71
|
-
- lib/badline/c128/bus/
|
|
72
|
+
- lib/badline/c128/bus/keyed_state.rb
|
|
72
73
|
- lib/badline/c128/color_lines.rb
|
|
73
74
|
- lib/badline/c128/cpu.rb
|
|
74
75
|
- lib/badline/c128/drives.rb
|
|
75
76
|
- lib/badline/c128/fast_serial.rb
|
|
76
77
|
- lib/badline/c128/io_pages.rb
|
|
78
|
+
- lib/badline/c128/keyed_modules.rb
|
|
79
|
+
- lib/badline/c128/keyed_state.rb
|
|
77
80
|
- lib/badline/c128/keys.rb
|
|
78
81
|
- lib/badline/c128/mmu.rb
|
|
79
82
|
- lib/badline/c128/mmu_pages.rb
|
|
80
83
|
- lib/badline/c128/model.rb
|
|
81
84
|
- lib/badline/c128/modes.rb
|
|
82
|
-
- lib/badline/c128/saved_state.rb
|
|
83
85
|
- lib/badline/c128/z80.rb
|
|
84
86
|
- lib/badline/c128/z80_pages.rb
|
|
85
87
|
- lib/badline/c128/z80_turns.rb
|
|
@@ -91,11 +93,12 @@ files:
|
|
|
91
93
|
- lib/badline/c64/banked_ram/plus60k.rb
|
|
92
94
|
- lib/badline/c64/banked_ram/unexpanded.rb
|
|
93
95
|
- lib/badline/c64/bus.rb
|
|
96
|
+
- lib/badline/c64/bus/debug_register.rb
|
|
94
97
|
- lib/badline/c64/bus/extra_sids.rb
|
|
95
98
|
- lib/badline/c64/bus/fittings.rb
|
|
99
|
+
- lib/badline/c64/bus/keyed_state.rb
|
|
96
100
|
- lib/badline/c64/bus/pla.rb
|
|
97
101
|
- lib/badline/c64/bus/roms.rb
|
|
98
|
-
- lib/badline/c64/bus/saved_state.rb
|
|
99
102
|
- lib/badline/c64/bus/sid_slots.rb
|
|
100
103
|
- lib/badline/c64/cartridge.rb
|
|
101
104
|
- lib/badline/c64/cartridge/action_replay.rb
|
|
@@ -107,22 +110,20 @@ files:
|
|
|
107
110
|
- lib/badline/c64/cartridge/epyx_fastload.rb
|
|
108
111
|
- lib/badline/c64/cartridge/final_cartridge3.rb
|
|
109
112
|
- lib/badline/c64/cartridge/flash.rb
|
|
110
|
-
- lib/badline/c64/cartridge/flash/saved_state.rb
|
|
111
113
|
- lib/badline/c64/cartridge/freezer.rb
|
|
112
114
|
- lib/badline/c64/cartridge/fun_play.rb
|
|
113
115
|
- lib/badline/c64/cartridge/g_mod2.rb
|
|
114
116
|
- lib/badline/c64/cartridge/game_system.rb
|
|
115
117
|
- lib/badline/c64/cartridge/geo_ram.rb
|
|
116
118
|
- lib/badline/c64/cartridge/kcs_power.rb
|
|
119
|
+
- lib/badline/c64/cartridge/keyed_state.rb
|
|
117
120
|
- lib/badline/c64/cartridge/mach5.rb
|
|
118
121
|
- lib/badline/c64/cartridge/magic_desk.rb
|
|
119
122
|
- lib/badline/c64/cartridge/ocean.rb
|
|
120
123
|
- lib/badline/c64/cartridge/pagefox.rb
|
|
121
124
|
- lib/badline/c64/cartridge/retro_replay.rb
|
|
122
|
-
- lib/badline/c64/cartridge/retro_replay/saved_state.rb
|
|
123
125
|
- lib/badline/c64/cartridge/rex_utility.rb
|
|
124
126
|
- lib/badline/c64/cartridge/rgcd.rb
|
|
125
|
-
- lib/badline/c64/cartridge/saved_state.rb
|
|
126
127
|
- lib/badline/c64/cartridge/simons_basic.rb
|
|
127
128
|
- lib/badline/c64/cartridge/standard.rb
|
|
128
129
|
- lib/badline/c64/cartridge/super_games.rb
|
|
@@ -131,20 +132,20 @@ files:
|
|
|
131
132
|
- lib/badline/c64/color_memory.rb
|
|
132
133
|
- lib/badline/c64/common.rb
|
|
133
134
|
- lib/badline/c64/kernal_traps.rb
|
|
135
|
+
- lib/badline/c64/keyed_modules.rb
|
|
136
|
+
- lib/badline/c64/keyed_state.rb
|
|
134
137
|
- lib/badline/c64/reu.rb
|
|
135
138
|
- lib/badline/c64/reu/dma.rb
|
|
136
|
-
- lib/badline/c64/reu/
|
|
139
|
+
- lib/badline/c64/reu/keyed_state.rb
|
|
137
140
|
- lib/badline/c64/reu/ram.rb
|
|
138
|
-
- lib/badline/c64/reu/saved_state.rb
|
|
139
141
|
- lib/badline/c64/reu/trigger.rb
|
|
140
|
-
- lib/badline/c64/saved_state.rb
|
|
141
142
|
- lib/badline/c64/true_drives.rb
|
|
143
|
+
- lib/badline/chips.rb
|
|
142
144
|
- lib/badline/chips/cia.rb
|
|
143
145
|
- lib/badline/chips/cia/fast_forward.rb
|
|
144
146
|
- lib/badline/chips/cia/interrupt_register.rb
|
|
145
|
-
- lib/badline/chips/cia/
|
|
147
|
+
- lib/badline/chips/cia/keyed_parts.rb
|
|
146
148
|
- lib/badline/chips/cia/serial.rb
|
|
147
|
-
- lib/badline/chips/cia/serial/saved_state.rb
|
|
148
149
|
- lib/badline/chips/cia/time_of_day.rb
|
|
149
150
|
- lib/badline/chips/cia/timer.rb
|
|
150
151
|
- lib/badline/chips/cpu.rb
|
|
@@ -162,37 +163,38 @@ files:
|
|
|
162
163
|
- lib/badline/chips/cpu/instruction_set/stack.rb
|
|
163
164
|
- lib/badline/chips/cpu/instruction_set/transfer.rb
|
|
164
165
|
- lib/badline/chips/cpu/interrupts.rb
|
|
166
|
+
- lib/badline/chips/cpu/keyed_state.rb
|
|
165
167
|
- lib/badline/chips/cpu/microcode.rb
|
|
166
168
|
- lib/badline/chips/cpu/operations.rb
|
|
167
169
|
- lib/badline/chips/cpu/port.rb
|
|
168
|
-
- lib/badline/chips/cpu/saved_state.rb
|
|
169
170
|
- lib/badline/chips/cpu/stack_operations.rb
|
|
170
171
|
- lib/badline/chips/cpu/traps.rb
|
|
171
172
|
- lib/badline/chips/sid.rb
|
|
172
173
|
- lib/badline/chips/sid/catch_up.rb
|
|
173
174
|
- lib/badline/chips/sid/decimator.rb
|
|
174
175
|
- lib/badline/chips/sid/envelope.rb
|
|
175
|
-
- lib/badline/chips/sid/envelope/saved_state.rb
|
|
176
176
|
- lib/badline/chips/sid/filter.rb
|
|
177
|
-
- lib/badline/chips/sid/
|
|
178
|
-
- lib/badline/chips/sid/saved_state.rb
|
|
177
|
+
- lib/badline/chips/sid/keyed_parts.rb
|
|
179
178
|
- lib/badline/chips/sid/voice.rb
|
|
180
179
|
- lib/badline/chips/sid/waveform.rb
|
|
181
180
|
- lib/badline/chips/sid/waveform/combined.rb
|
|
182
181
|
- lib/badline/chips/sid/waveform/fast_forward.rb
|
|
183
182
|
- lib/badline/chips/sid/waveform/noise_writeback.rb
|
|
184
|
-
- lib/badline/chips/
|
|
183
|
+
- lib/badline/chips/ted.rb
|
|
184
|
+
- lib/badline/chips/ted/beam.rb
|
|
185
|
+
- lib/badline/chips/ted/timers.rb
|
|
186
|
+
- lib/badline/chips/tia.rb
|
|
185
187
|
- lib/badline/chips/vdc.rb
|
|
188
|
+
- lib/badline/chips/vdc/keyed_parts.rb
|
|
186
189
|
- lib/badline/chips/vdc/memory.rb
|
|
187
190
|
- lib/badline/chips/vdc/painter.rb
|
|
188
191
|
- lib/badline/chips/vdc/raster.rb
|
|
189
|
-
- lib/badline/chips/vdc/saved_state.rb
|
|
190
192
|
- lib/badline/chips/vdc/window.rb
|
|
191
193
|
- lib/badline/chips/via.rb
|
|
192
194
|
- lib/badline/chips/via/control_lines.rb
|
|
193
195
|
- lib/badline/chips/via/fast_forward.rb
|
|
194
196
|
- lib/badline/chips/via/interrupt_register.rb
|
|
195
|
-
- lib/badline/chips/via/
|
|
197
|
+
- lib/badline/chips/via/keyed_parts.rb
|
|
196
198
|
- lib/badline/chips/via/shift_register.rb
|
|
197
199
|
- lib/badline/chips/via/timer1.rb
|
|
198
200
|
- lib/badline/chips/via/timer2.rb
|
|
@@ -204,24 +206,21 @@ files:
|
|
|
204
206
|
- lib/badline/chips/vic/display_state.rb
|
|
205
207
|
- lib/badline/chips/vic/graphics_mode.rb
|
|
206
208
|
- lib/badline/chips/vic/graphics_shifter.rb
|
|
207
|
-
- lib/badline/chips/vic/
|
|
209
|
+
- lib/badline/chips/vic/keyed_parts.rb
|
|
210
|
+
- lib/badline/chips/vic/keyed_sprites.rb
|
|
211
|
+
- lib/badline/chips/vic/keyed_state.rb
|
|
208
212
|
- lib/badline/chips/vic/register_log.rb
|
|
209
213
|
- lib/badline/chips/vic/registers.rb
|
|
210
|
-
- lib/badline/chips/vic/saved_state.rb
|
|
211
214
|
- lib/badline/chips/vic/sequencer.rb
|
|
212
|
-
- lib/badline/chips/vic/sequencer/saved_state.rb
|
|
213
215
|
- lib/badline/chips/vic/sequencer_output.rb
|
|
214
216
|
- lib/badline/chips/vic/sprite.rb
|
|
215
217
|
- lib/badline/chips/vic/sprite/internal_bus.rb
|
|
216
|
-
- lib/badline/chips/vic/sprite/saved_state.rb
|
|
217
218
|
- lib/badline/chips/vic/sprite/shifter.rb
|
|
218
219
|
- lib/badline/chips/vic/sprite/timing.rb
|
|
219
220
|
- lib/badline/chips/vic/sprites.rb
|
|
220
|
-
- lib/badline/chips/vic/sprites/saved_state.rb
|
|
221
221
|
- lib/badline/chips/vic_i.rb
|
|
222
|
+
- lib/badline/chips/vic_i/keyed_parts.rb
|
|
222
223
|
- lib/badline/chips/vic_i/painter.rb
|
|
223
|
-
- lib/badline/chips/vic_i/painter/saved_state.rb
|
|
224
|
-
- lib/badline/chips/vic_i/saved_state.rb
|
|
225
224
|
- lib/badline/chips/vic_i/sound.rb
|
|
226
225
|
- lib/badline/chips/vic_i/sound/output.rb
|
|
227
226
|
- lib/badline/chips/vic_i/text_window.rb
|
|
@@ -237,17 +236,16 @@ files:
|
|
|
237
236
|
- lib/badline/chips/z80/flags.rb
|
|
238
237
|
- lib/badline/chips/z80/interrupt_acceptance.rb
|
|
239
238
|
- lib/badline/chips/z80/jumps.rb
|
|
239
|
+
- lib/badline/chips/z80/keyed_state.rb
|
|
240
240
|
- lib/badline/chips/z80/loads.rb
|
|
241
241
|
- lib/badline/chips/z80/main_page.rb
|
|
242
242
|
- lib/badline/chips/z80/registers.rb
|
|
243
|
-
- lib/badline/chips/z80/saved_state.rb
|
|
244
243
|
- lib/badline/chips/z80/shifts.rb
|
|
245
|
-
- lib/badline/chrout_trap.rb
|
|
246
244
|
- lib/badline/core.rb
|
|
247
245
|
- lib/badline/data_path.rb
|
|
248
|
-
- lib/badline/
|
|
246
|
+
- lib/badline/drives.rb
|
|
249
247
|
- lib/badline/drives/datasette.rb
|
|
250
|
-
- lib/badline/drives/datasette/
|
|
248
|
+
- lib/badline/drives/datasette/keyed_state.rb
|
|
251
249
|
- lib/badline/drives/engine.rb
|
|
252
250
|
- lib/badline/drives/engine/core.rb
|
|
253
251
|
- lib/badline/drives/engine/fast_serial.rb
|
|
@@ -263,20 +261,18 @@ files:
|
|
|
263
261
|
- lib/badline/drives/model1541/byte_ready.rb
|
|
264
262
|
- lib/badline/drives/model1541/cpu.rb
|
|
265
263
|
- lib/badline/drives/model1541/disk.rb
|
|
266
|
-
- lib/badline/drives/model1541/disk/saved_state.rb
|
|
267
264
|
- lib/badline/drives/model1541/disk_via.rb
|
|
268
265
|
- lib/badline/drives/model1541/gcr.rb
|
|
266
|
+
- lib/badline/drives/model1541/keyed_state.rb
|
|
269
267
|
- lib/badline/drives/model1541/mechanism.rb
|
|
270
|
-
- lib/badline/drives/model1541/mechanism/saved_state.rb
|
|
271
268
|
- lib/badline/drives/model1541/rotation.rb
|
|
272
|
-
- lib/badline/drives/model1541/saved_state.rb
|
|
273
269
|
- lib/badline/drives/model1541/sector_reader.rb
|
|
274
270
|
- lib/badline/drives/model1541/serial_port.rb
|
|
275
271
|
- lib/badline/drives/model1541/track.rb
|
|
276
272
|
- lib/badline/drives/model1571.rb
|
|
277
273
|
- lib/badline/drives/model1571/bus.rb
|
|
278
274
|
- lib/badline/drives/model1571/cpu.rb
|
|
279
|
-
- lib/badline/drives/model1571/
|
|
275
|
+
- lib/badline/drives/model1571/keyed_state.rb
|
|
280
276
|
- lib/badline/drives/model1571/serial_port.rb
|
|
281
277
|
- lib/badline/drives/model1571/serial_via.rb
|
|
282
278
|
- lib/badline/drives/model1571/wd1770.rb
|
|
@@ -284,16 +280,14 @@ files:
|
|
|
284
280
|
- lib/badline/drives/model1581/bus.rb
|
|
285
281
|
- lib/badline/drives/model1581/cpu.rb
|
|
286
282
|
- lib/badline/drives/model1581/disk.rb
|
|
287
|
-
- lib/badline/drives/model1581/
|
|
283
|
+
- lib/badline/drives/model1581/keyed_state.rb
|
|
288
284
|
- lib/badline/drives/model1581/mechanism.rb
|
|
289
|
-
- lib/badline/drives/model1581/saved_state.rb
|
|
290
285
|
- lib/badline/drives/model1581/serial_port.rb
|
|
291
286
|
- lib/badline/drives/model1581/slot.rb
|
|
292
287
|
- lib/badline/drives/model1581/track.rb
|
|
293
288
|
- lib/badline/drives/model1581/track_bytes.rb
|
|
294
289
|
- lib/badline/drives/model1581/wd1772.rb
|
|
295
290
|
- lib/badline/drives/model1581/wd1772/registers.rb
|
|
296
|
-
- lib/badline/drives/model1581/wd1772/saved_state.rb
|
|
297
291
|
- lib/badline/drives/model1581/wd1772/sector_writes.rb
|
|
298
292
|
- lib/badline/drives/model1581/wd1772/sectors.rb
|
|
299
293
|
- lib/badline/drives/model1581/wd1772/stepping.rb
|
|
@@ -350,10 +344,12 @@ files:
|
|
|
350
344
|
- lib/badline/input/control_ports.rb
|
|
351
345
|
- lib/badline/input/joystick.rb
|
|
352
346
|
- lib/badline/input/keyboard.rb
|
|
347
|
+
- lib/badline/input/matrix_typist.rb
|
|
353
348
|
- lib/badline/input/mouse1351.rb
|
|
354
349
|
- lib/badline/input/paddles.rb
|
|
355
350
|
- lib/badline/integer_helper.rb
|
|
356
351
|
- lib/badline/kernal_trap.rb
|
|
352
|
+
- lib/badline/kernal_trap/chrout.rb
|
|
357
353
|
- lib/badline/kernal_trap/dos.rb
|
|
358
354
|
- lib/badline/kernal_trap/dos/block_commands.rb
|
|
359
355
|
- lib/badline/kernal_trap/dos/channel.rb
|
|
@@ -364,14 +360,16 @@ files:
|
|
|
364
360
|
- lib/badline/kernal_trap/dos/write_file.rb
|
|
365
361
|
- lib/badline/kernal_trap/dos/writes.rb
|
|
366
362
|
- lib/badline/kernal_trap/file_routine.rb
|
|
363
|
+
- lib/badline/kernal_trap/keyed_state.rb
|
|
367
364
|
- lib/badline/kernal_trap/layout.rb
|
|
368
365
|
- lib/badline/kernal_trap/load.rb
|
|
369
366
|
- lib/badline/kernal_trap/routine.rb
|
|
370
367
|
- lib/badline/kernal_trap/save.rb
|
|
371
368
|
- lib/badline/kernal_trap/serial.rb
|
|
372
|
-
- lib/badline/keyboard_buffer.rb
|
|
373
369
|
- lib/badline/machine.rb
|
|
374
370
|
- lib/badline/machine/clocking.rb
|
|
371
|
+
- lib/badline/machine/keyboard_buffer.rb
|
|
372
|
+
- lib/badline/machine/settling.rb
|
|
375
373
|
- lib/badline/media.rb
|
|
376
374
|
- lib/badline/media/boot_disk.rb
|
|
377
375
|
- lib/badline/media/disk_list.rb
|
|
@@ -393,6 +391,14 @@ files:
|
|
|
393
391
|
- lib/badline/options/option.rb
|
|
394
392
|
- lib/badline/options/table.rb
|
|
395
393
|
- lib/badline/options/validation.rb
|
|
394
|
+
- lib/badline/plus4.rb
|
|
395
|
+
- lib/badline/plus4/acia.rb
|
|
396
|
+
- lib/badline/plus4/bus.rb
|
|
397
|
+
- lib/badline/plus4/cpu.rb
|
|
398
|
+
- lib/badline/plus4/cpu_port.rb
|
|
399
|
+
- lib/badline/plus4/keyboard_port.rb
|
|
400
|
+
- lib/badline/plus4/model.rb
|
|
401
|
+
- lib/badline/plus4/user_port.rb
|
|
396
402
|
- lib/badline/region.rb
|
|
397
403
|
- lib/badline/rom.rb
|
|
398
404
|
- lib/badline/roms/README
|
|
@@ -411,6 +417,11 @@ files:
|
|
|
411
417
|
- lib/badline/roms/kernal-pet64.rom
|
|
412
418
|
- lib/badline/roms/kernal-sx64.rom
|
|
413
419
|
- lib/badline/roms/kernal.rom
|
|
420
|
+
- lib/badline/roms/plus4/basic.rom
|
|
421
|
+
- lib/badline/roms/plus4/function-high.rom
|
|
422
|
+
- lib/badline/roms/plus4/function-low.rom
|
|
423
|
+
- lib/badline/roms/plus4/kernal-ntsc.rom
|
|
424
|
+
- lib/badline/roms/plus4/kernal-pal.rom
|
|
414
425
|
- lib/badline/roms/vic20/basic.rom
|
|
415
426
|
- lib/badline/roms/vic20/character.rom
|
|
416
427
|
- lib/badline/roms/vic20/kernal-ntsc.rom
|
|
@@ -426,10 +437,17 @@ files:
|
|
|
426
437
|
- lib/badline/snapshot/c128_setup.rb
|
|
427
438
|
- lib/badline/snapshot/c64_setup.rb
|
|
428
439
|
- lib/badline/snapshot/container.rb
|
|
440
|
+
- lib/badline/snapshot/field_doc.rb
|
|
441
|
+
- lib/badline/snapshot/field_doc/markdown.rb
|
|
429
442
|
- lib/badline/snapshot/image.rb
|
|
443
|
+
- lib/badline/snapshot/keyed.rb
|
|
444
|
+
- lib/badline/snapshot/keyed/cursor.rb
|
|
445
|
+
- lib/badline/snapshot/keyed/modules.rb
|
|
446
|
+
- lib/badline/snapshot/keyed/reader.rb
|
|
447
|
+
- lib/badline/snapshot/keyed/recorder.rb
|
|
448
|
+
- lib/badline/snapshot/keyed/report.rb
|
|
449
|
+
- lib/badline/snapshot/keyed/writer.rb
|
|
430
450
|
- lib/badline/snapshot/machine_state.rb
|
|
431
|
-
- lib/badline/snapshot/setup.rb
|
|
432
|
-
- lib/badline/snapshot/state.rb
|
|
433
451
|
- lib/badline/snapshot/storage_setup.rb
|
|
434
452
|
- lib/badline/snapshot/vic20_setup.rb
|
|
435
453
|
- lib/badline/snapshot/vice.rb
|
|
@@ -473,11 +491,12 @@ files:
|
|
|
473
491
|
- lib/badline/vic20.rb
|
|
474
492
|
- lib/badline/vic20/attachments.rb
|
|
475
493
|
- lib/badline/vic20/bus.rb
|
|
476
|
-
- lib/badline/vic20/bus/
|
|
494
|
+
- lib/badline/vic20/bus/keyed_state.rb
|
|
477
495
|
- lib/badline/vic20/cpu.rb
|
|
478
496
|
- lib/badline/vic20/keyboard_via_ports.rb
|
|
497
|
+
- lib/badline/vic20/keyed_modules.rb
|
|
498
|
+
- lib/badline/vic20/keyed_state.rb
|
|
479
499
|
- lib/badline/vic20/port_wiring.rb
|
|
480
|
-
- lib/badline/vic20/saved_state.rb
|
|
481
500
|
- lib/badline/vic20/user_via_ports.rb
|
|
482
501
|
- packaging/homebrew/badline.rb
|
|
483
502
|
homepage: https://github.com/elektronaut/badline
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Badline
|
|
4
|
-
class C128
|
|
5
|
-
class Bus
|
|
6
|
-
# The bus's state for a snapshot, as C64::Bus::SavedState is the
|
|
7
|
-
# C64's.
|
|
8
|
-
module SavedState
|
|
9
|
-
# The machine's memory, the last access and everything on the bus but
|
|
10
|
-
# the keyboard, the joysticks, the pot devices and CAPS LOCK, which the
|
|
11
|
-
# host holds. A cartridge is already in the port, built from its setup.
|
|
12
|
-
def save_state(out)
|
|
13
|
-
out.marker("C128 BUS")
|
|
14
|
-
out.int(@cpu_port.ddr).int(@cpu_port.data).int(@cpu_port.floating).int(@address).int(@data)
|
|
15
|
-
@mmu.save_state(out)
|
|
16
|
-
@ram.save_state(out)
|
|
17
|
-
@color_lines.color_ram(0).save_state(out)
|
|
18
|
-
@color_lines.color_ram(1).save_state(out)
|
|
19
|
-
@cartridge&.save_state(out)
|
|
20
|
-
@datasette.save_state(out)
|
|
21
|
-
@vic.save_state(out)
|
|
22
|
-
@cia1.save_state(out)
|
|
23
|
-
@cia2.save_state(out)
|
|
24
|
-
@sid.save_state(out)
|
|
25
|
-
@vdc.save_state(out)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def load_state(input)
|
|
29
|
-
input.marker("C128 BUS")
|
|
30
|
-
ddr = input.int
|
|
31
|
-
data = input.int
|
|
32
|
-
floating = input.int
|
|
33
|
-
@address = input.int
|
|
34
|
-
@data = input.int
|
|
35
|
-
@mmu.load_state(input)
|
|
36
|
-
@ram.load_state(input)
|
|
37
|
-
@color_lines.color_ram(0).load_state(input)
|
|
38
|
-
@color_lines.color_ram(1).load_state(input)
|
|
39
|
-
@cartridge&.load_state(input)
|
|
40
|
-
@datasette.load_state(input)
|
|
41
|
-
@cpu_port.load(ddr, data, floating)
|
|
42
|
-
update_overlays!
|
|
43
|
-
@vic.load_state(input)
|
|
44
|
-
@control_ports.extra_rows = 0xf8 | @vic.extra_keyboard_lines
|
|
45
|
-
@cia1.load_state(input)
|
|
46
|
-
@cia2.load_state(input)
|
|
47
|
-
@sid.load_state(input)
|
|
48
|
-
@vdc.load_state(input)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|