diff --git a/AGENTS.md b/AGENTS.md index 3e6b01a..96909ea 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,5 +1,9 @@ # Local Agent Notes +- C64 Ultimate REST/FTP access from Codex must be run from a separate + Terminal-owned/background bash, for example via `osascript` opening Terminal + and writing logs/status files. Plain foreground `exec_command` curls can fail + with false "no route"/connection errors even when the C64U is reachable. - REL file access debugging: do **not** use `src/apps/dizzy/dizzy.c` as a reference implementation for REL open/position/read/write behavior. - For CAL26 REL work, use the `xrelchk` harness and proven CAL26-specific test results as the source of truth. @@ -14,7 +18,7 @@ ## ReadyOS Architecture Rules - App working region is `$1000-$C5FF` (`$B600` bytes); REU save/restore also targets this range. -- Shim jump table/data is resident at `$C800-$C9FF`; never place app data/code assumptions there unless intentionally using shim ABI. +- The full resident shim region is `$C600-$C9FF` (1 KB). `$C600-$C7FF` is reserved expansion space and the public jump-table/data ABI remains at `$C800-$C9FF`; never place app data/code assumptions anywhere in this region. - Assume KERNAL/disk I/O can clobber app memory in the active region; keep persistent control state in defined safe areas only. - ReadyBASIC module packages are generated SEQ files named `rbm.`; preserve/restore disk-image logic must treat names beginning with `rbm.` as build-owned artifacts, not user files to restore from an older disk image. - ReadyBASIC refactors must follow `src/apps/readybasic/readyBASICrefactorguidelines.md`. In particular, do not replace BASIC ROM expression/assignment helpers with ReadyBASIC command evaluators unless the normal BASIC cases are proven unchanged; the module-refactor regression broke `I%=I%+1` by doing this and caused `REPEAT`/`UNTIL` failures. @@ -23,6 +27,21 @@ - Never call `run.sh` with a specific app name such as `launcher`, `editor`, or any other single-app mode; those paths are not valid for normal ReadyOS verification. - Avoid ad-hoc `make`, direct artifact launches, and single-app run modes so all generated assets and preserved D71 user files are included and restored correctly. +### ReadyOS Launch Cookbook + +- `run.sh` is not guaranteed to be executable in this checkout; invoke it as `/bin/bash ./run.sh ...`, not `./run.sh ...`. +- Interactive regular D81, current built artifacts, fast disk mode: `/bin/bash ./run.sh --profile precog-d81 --vice-fast --skipbuild`. +- Interactive regular D81 with rebuild first: `/bin/bash ./run.sh --profile precog-d81 --vice-fast`. +- Interactive default profile, current artifacts: `/bin/bash ./run.sh --skipbuild`; add `--vice-fast` for fast disk mode. +- Do **not** use `kff2-fast` unless the user explicitly asks for the Kung Fu Flash 2 D81 SKU; it is not the regular D81 build. +- To leave a visible VICE window open from Codex, run the interactive command in a long-running background shell/session and do not run any VICE cleanup or harness prelaunch cleanup afterward. +- Headless ReadyBASIC regular automation: `make readybasic-vice-suites`; focused hotkey probe: `/bin/bash build_support/run_readybasic_hotkey_probe.sh`. +- Headless ReadyBASIC cartridge automation: `make easyflash-readybasic-vice-suites`. +- Harness scripts close VICE by default; only use their `KEEP_VICE`/non-headless options when deliberately debugging automation, not for normal interactive launch. +- C64 Ultimate hardware automation must be launched from a long-running/background + bash shell. One-shot foreground shell calls from Codex may not reach the C64U + REST/FTP endpoints even when the device is reachable. + ## CAL26 REL Debugging Discipline - Use `xrelchk` first; prove behavior in harness before porting to `cal26`. diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e84424..6dc1729 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,39 @@ # Changelog +## 0.2.5 (development) + +### ReadyBASIC Graphics/Sound, C64 Ultimate DMA, Documentation + +- Expanded ReadyBASIC through five graphics phases and Sound Phase 1. The + built-in module set now covers modes, pixels and primitives, REU surfaces, + sprites/input, polygon buffers, display lists, tiles/tilemaps, multicolor + bitmap operations, and immediate SID voice/filter commands, accompanied by + 32 graphics demos and 6 sound demos plus regular/EasyFlash probes. +- Added the opt-in regular-launcher C64 Ultimate DOS/UCI direct-to-REU loader. + It obtains exact PRG payload sizes, supports packed ReadyShell resources, + reuses a mounted D81 when possible, exposes `DMA:YES`/`DMA:ON`/`DMA:NO` + launcher state, and falls back to KERNAL/disk loading on unavailable or + failed DMA paths. The default `LAUNCHER_DMA_LOAD=0` build remains portable. +- Added focused UCI protocol/timing probes, C64 Ultimate launcher and + ReadyShell hardware smoke coverage, valid/empty/bad-path acceptance fixtures, + and preserved hardware investigation evidence. +- Reconciled current public/private documentation with dynamic REU allocation, + ReadyOS-bank schema 5, shim token lookup, the nine-overlay ReadyShell layout, + current ReadyBASIC memory/modules/examples, the 21-app EasyFlash layout, and + opt-in DMA behavior. Historical release and dated evidence documents remain + preserved as snapshots. +- Combined the launcher snapshot and authoritative operating-system metadata in + physical `Skip`, now named the ReadyOS bank. Physical `Skip+1` becomes the + first dynamic allocation bank. The app snapshot remains `$1000-$C5FF` + (`$B600`), while `$C600-$C9FF` is restored as a 1 KB resident shim region; + its stable 512-byte ABI resolves nonzero tokens through the ReadyOS `$B740` + map instead of arithmetic placement or a resident bitmap. +- Reduced launcher warm-resume duplication to a compact `RSM1` UI record. The + launcher reconstructs banks, drives, hotkeys, resources, loaded state, and + sizes from the ReadyOS `LS` settings and 64-app registry. Runtime testing + also fixed catalog scratch-pointer invalidation during first allocation and + delayed menu-selection validation until after registry restoration. + ## 0.2.4 ### ReadyBASIC, REU Control Bank, Dynamic Resources, Cartridge, Apps diff --git a/Makefile b/Makefile index 7b233ad..8cd44e6 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,13 @@ SIMPLEFILES_CFLAGS = -t c64 -I$(LIB_DIR) -C $(CFG_DIR)/ready_app_simplefiles.cfg SIMPLECELLS_CFLAGS = -t c64 -I$(LIB_DIR) -C $(CFG_DIR)/ready_app_simplecells.cfg -Os CAL26_CFLAGS = $(APP_CFLAGS) -Os LAUNCHER_CFG_VERBOSE ?= 0 -LAUNCHER_CFLAGS = $(APP_CFLAGS) -Os -DLAUNCHER_CFG_VERBOSE=$(LAUNCHER_CFG_VERBOSE) +LAUNCHER_DMA_LOAD ?= 0 +LAUNCHER_CFLAGS = $(APP_CFLAGS) -Os -DLAUNCHER_CFG_VERBOSE=$(LAUNCHER_CFG_VERBOSE) -DLAUNCHER_DMA_LOAD=$(LAUNCHER_DMA_LOAD) +ifeq ($(LAUNCHER_DMA_LOAD),1) +LAUNCHER_DMA_SRCS = $(APPS_DIR)/launcher/launcher_uci_dma.s +else +LAUNCHER_DMA_SRCS = +endif # Output files BOOT = $(BIN_DIR)/boot.prg @@ -76,6 +82,10 @@ READYBASIC = $(BIN_DIR)/readybasic.prg READYBASIC_RBTEST1 = $(OBJ_DIR)/rbtest1.prg READYBASIC_RBPROC1 = $(OBJ_DIR)/rbproc1.prg READYBASIC_RBPROCERR = $(OBJ_DIR)/rbprocerr.prg +READYBASIC_GFX_DEMO_NAMES = rbgfx01_modes rbgfx02_hires_plot rbgfx03_hires_lines rbgfx04_rects rbgfx05_point_read rbgfx06_reu_surface rbgfx07_mbitmap rbgfx08_tile rbgfx09_sprites rbgfx10_collision rbgfx11_input rbgfx12_showcase rbgfx13_sprite_steps rbgfx14_phase2_prims rbgfx15_phase2_tiles rbgfx16_phase2_sprite_ctrl rbgfx17_poly_array rbgfx18_fpoly_array rbgfx19_poly_reu rbgfx20_fpoly_reu_showcase rbgfx21_mbitmap_prims rbgfx22_mbitmap_point rbgfx23_dlist rbgfx24_tilemap rbgfx25_mbcells rbgfx26_mode_matrix rbgfx27_target_blit rbgfx28_tile_visible rbgfx29_mtile_visible rbgfx30_mbitmap_dlist rbgfx31_sync_blit rbgfx32_convex_poly +READYBASIC_GFX_DEMOS = $(addprefix $(OBJ_DIR)/,$(addsuffix .prg,$(READYBASIC_GFX_DEMO_NAMES))) +READYBASIC_SOUND_DEMO_NAMES = rbsnd01_sid_basics rbsnd02_voice_state rbsnd03_notes rbsnd04_filter rbsnd05_voice_batch rbsnd06_three_voice +READYBASIC_SOUND_DEMOS = $(addprefix $(OBJ_DIR)/,$(addsuffix .prg,$(READYBASIC_SOUND_DEMO_NAMES))) READYBASIC_MODULE_DIR = $(OBJ_DIR)/readybasic_modules READYBASIC_RBM_SAMPLE1 = $(READYBASIC_MODULE_DIR)/rbm.sample1.seq READYBASIC_RBM_SAMPLE2 = $(READYBASIC_MODULE_DIR)/rbm.sample2.seq @@ -84,13 +94,27 @@ READYBASIC_MODULES = $(READYBASIC_RBM_SAMPLE1) $(READYBASIC_RBM_SAMPLE2) $(READY READYBASIC_VICE_SCRIPTS = \ $(BUILD_SUPPORT_DIR)/run_readybasic_demo_suite.sh \ $(BUILD_SUPPORT_DIR)/run_readybasic_full_suite_visual_verification.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_hotkey_probe.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_keyboard_regression_probe.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_reuviewer_f2_chain_probe.sh \ $(BUILD_SUPPORT_DIR)/run_readybasic_cross_app_resume_probe.sh \ $(BUILD_SUPPORT_DIR)/run_readybasic_large_vars_probe.sh \ $(BUILD_SUPPORT_DIR)/run_readybasic_lifecycle_probe.sh \ $(BUILD_SUPPORT_DIR)/run_readybasic_module_overlay_probe.sh \ $(BUILD_SUPPORT_DIR)/run_readybasic_plugin_command_probe.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase1_probe.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase2_demo.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase3_demo.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase4_demo.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase5_demo.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_mbitmap_demo.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_sprite_steps_demo.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_sound_phase1_demo.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_readyos_loaded_apps_suite.sh \ $(BUILD_SUPPORT_DIR)/run_readybasic_program_probe.sh \ $(BUILD_SUPPORT_DIR)/run_readybasic_rbtest1_probe.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_resume_min_probe.sh \ + $(BUILD_SUPPORT_DIR)/run_readybasic_screen_reu_temp_probe.sh \ $(BUILD_SUPPORT_DIR)/run_readybasic_second_entry_editor_probe.sh \ $(BUILD_SUPPORT_DIR)/run_readybasic_state_probe.sh \ $(BUILD_SUPPORT_DIR)/vice_readybasic_repeat_label_probe.sh @@ -114,6 +138,7 @@ BOOT_EASYFLASH_ROMH = $(BIN_DIR)/boot_easyflash_romh.bin EASYFLASH_SMOKE_MON = $(OBJ_DIR)/easyflash_smoke.mon EASYFLASH_SMOKE_LOG = $(OBJ_DIR)/easyflash_smoke.log EASYFLASH_SMOKE_RUNTIME_CRT = $(OBJ_DIR)/easyflash_smoke.runtime.crt +EASYFLASH_SMOKE_REU_IMAGE = $(OBJ_DIR)/easyflash_smoke.reu EASYFLASH_BOOT_MAP = $(OBJ_DIR)/boot_easyflash_roml.map IP65_DIR = $(THIRD_PARTY_DIR)/ip65 IP65_TCP_OBJ_DIR = $(OBJ_DIR)/ip65/tcp @@ -197,7 +222,10 @@ TUI_WINDOW_SRC = $(LIB_DIR)/tui_window.c TUI_MENU_SRC = $(LIB_DIR)/tui_menu.c TUI_INPUT_SRC = $(LIB_DIR)/tui_input.c TUI_NAV_SRC = $(LIB_DIR)/tui_nav.c -TUI_HOTKEY_SRC = $(LIB_DIR)/tui_hotkeys.c +TUI_READYOS_LITE_SRC = $(LIB_DIR)/tui_readyos.c +TUI_READYOS_SRC = $(LIB_DIR)/tui_readyos_alias.s +TUI_HOTKEY_SRC = $(LIB_DIR)/tui_hotkeys.c $(TUI_READYOS_SRC) +TUI_HOTKEY_LITE_SRC = $(LIB_DIR)/tui_hotkeys.c $(TUI_READYOS_LITE_SRC) TUI_MISC_SRC = $(LIB_DIR)/tui_misc.c TUI_CONTROLS_SRC = $(LIB_DIR)/tui_controls.c TUI_SPLIT_SRC = $(LIB_DIR)/tui_split.c @@ -214,11 +242,13 @@ REU_CONTROL_REGISTRY_SRC = $(LIB_DIR)/reu_control_registry.c STORAGE_DEVICE_SRC = $(LIB_DIR)/storage_device.c FILE_BROWSER_SRC = $(LIB_DIR)/file_browser.c DIR_PAGE_SRC = $(LIB_DIR)/dir_page.c +LAUNCHER_DIR_PAGE_SRC = $(APPS_DIR)/launcher/launcher_dir_page.c FILE_DIALOG_SRC = $(LIB_DIR)/file_dialog.c CLIP_COPY_SRC = $(LIB_DIR)/clipboard_copy.c CLIP_PASTE_SRC = $(LIB_DIR)/clipboard_paste.c CLIP_COUNT_SRC = $(LIB_DIR)/clipboard_count.c CLIP_ADMIN_SRC = $(LIB_DIR)/clipboard_admin.c +CLIP_INSERT_SRC = $(LIB_DIR)/clipboard_insert.c RESUME_STATE_CTX_SRC = $(LIB_DIR)/resume_state_ctx.c RESUME_STATE_CORE_SRC = $(LIB_DIR)/resume_state_core.c RESUME_STATE_SEGMENTS_SRC = $(LIB_DIR)/resume_state_segments.c @@ -321,7 +351,8 @@ READYSHELL_RESIDENT_EASYFLASH_SRCS = \ $(REU_DMA_SRC) \ $(RESUME_STATE_SIMPLE_SRCS) READYSHELL_RESIDENT_ASM_SRCS = \ - $(READYSHELL_PLATFORM_C64_DIR)/rs_runtime_c64.s + $(READYSHELL_PLATFORM_C64_DIR)/rs_runtime_c64.s \ + $(TUI_READYOS_SRC) READYSHELL_RESIDENT_C_OBJS = $(patsubst %.c,$(READYSHELL_OBJ_DIR)/resident/%.o,$(READYSHELL_RESIDENT_SRCS)) READYSHELL_RESIDENT_ASM_OBJS = $(patsubst %.s,$(READYSHELL_OBJ_DIR)/resident/%.o,$(READYSHELL_RESIDENT_ASM_SRCS)) READYSHELL_RESIDENT_OBJS = $(READYSHELL_RESIDENT_C_OBJS) $(READYSHELL_RESIDENT_ASM_OBJS) @@ -354,26 +385,26 @@ TUI_BASE_MENU_INPUT_NAV_MISC = $(TUI_BASE) $(TUI_MENU_SRC) $(TUI_INPUT_SRC) $(TU TUI_UCITEST = $(TUI_BASE_NAV) $(TUI_CONTROLS_SRC) $(TUI_SPLIT_SRC) $(TUI_OUTPUT_SRC) LIB_LAUNCHER = $(TUI_BASE_MENU_MISC) $(TUI_HOTKEY_SRC) $(REU_DMA_SRC) $(REU_PHYS_SRC) $(REU_PHYS_PROBE_SRC) $(REU_CONTROL_BANK_SRC) $(REU_CONTROL_REGISTRY_SRC) $(RESUME_STATE_SEGMENT_SRCS) -LIB_LAUNCHER_DISK = $(LIB_LAUNCHER) $(STORAGE_DEVICE_SRC) $(DIR_PAGE_SRC) $(FILE_DIALOG_SRC) +LIB_LAUNCHER_DISK = $(LIB_LAUNCHER) $(STORAGE_DEVICE_SRC) $(LAUNCHER_DIR_PAGE_SRC) $(FILE_DIALOG_SRC) LIB_REU_BASE = $(REU_INIT_SRC) LIB_REU_DMA = $(REU_INIT_SRC) $(REU_ALLOC_SRC) $(REU_DMA_SRC) LIB_REU_STATS = $(REU_INIT_SRC) $(REU_STATS_SRC) LIB_REU_DMA_STATS = $(REU_INIT_SRC) $(REU_ALLOC_SRC) $(REU_DMA_SRC) $(REU_STATS_SRC) -LIB_CLIP_COPY = $(CLIP_COPY_SRC) +LIB_CLIP_COPY = $(CLIP_COPY_SRC) $(CLIP_INSERT_SRC) $(CLIP_COUNT_SRC) LIB_CLIP_PASTE = $(CLIP_PASTE_SRC) LIB_CLIP_COUNT = $(CLIP_COUNT_SRC) LIB_CLIP_PASTE_COUNT = $(CLIP_PASTE_SRC) $(CLIP_COUNT_SRC) -LIB_CLIP_COPY_PASTE_COUNT = $(CLIP_COPY_SRC) $(CLIP_PASTE_SRC) $(CLIP_COUNT_SRC) +LIB_CLIP_COPY_PASTE_COUNT = $(CLIP_COPY_SRC) $(CLIP_INSERT_SRC) $(CLIP_PASTE_SRC) $(CLIP_COUNT_SRC) LIB_EDITOR = $(TUI_BASE_MENU_INPUT_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA) $(LIB_CLIP_COPY_PASTE_COUNT) $(RESUME_STATE_SEGMENT_SRCS) $(STORAGE_DEVICE_SRC) $(DIR_PAGE_SRC) $(FILE_DIALOG_SRC) LIB_QUICKNOTES = $(TUI_BASE_MENU_INPUT_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA_STATS) $(REU_OWNED_ALLOC_SRC) $(LIB_CLIP_COPY_PASTE_COUNT) $(RESUME_STATE_ALL_SRCS) $(STORAGE_DEVICE_SRC) $(DIR_PAGE_SRC) $(FILE_DIALOG_SRC) LIB_CALCPLUS = $(TUI_BASE_NAV) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA) $(LIB_CLIP_COPY_PASTE_COUNT) $(RESUME_STATE_SEGMENT_SRCS) LIB_HEXVIEW = $(TUI_BASE_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA) $(LIB_CLIP_COPY) $(RESUME_STATE_SIMPLE_SRCS) -LIB_CLIPMGR = $(TUI_BASE_MENU_INPUT_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA_STATS) $(LIB_CLIP_PASTE_COUNT) $(CLIP_ADMIN_SRC) $(RESUME_STATE_SIMPLE_SRCS) $(STORAGE_DEVICE_SRC) $(DIR_PAGE_SRC) +LIB_CLIPMGR = $(TUI_BASE_MENU_INPUT_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA_STATS) $(LIB_CLIP_PASTE_COUNT) $(CLIP_ADMIN_SRC) $(CLIP_INSERT_SRC) $(RESUME_STATE_SIMPLE_SRCS) $(STORAGE_DEVICE_SRC) $(DIR_PAGE_SRC) LIB_REUVIEWER = $(TUI_BASE_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA_STATS) $(REU_PHYS_SRC) $(REU_CONTROL_BANK_SRC) $(RESUME_STATE_SIMPLE_SRCS) -LIB_SYSINFO = $(TUI_BASE_NAV_MISC) $(TUI_HOTKEY_SRC) +LIB_SYSINFO = $(TUI_BASE_NAV_MISC) $(TUI_HOTKEY_LITE_SRC) LIB_TASKLIST = $(TUI_BASE_MENU_INPUT_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA) $(LIB_CLIP_COPY_PASTE_COUNT) $(RESUME_STATE_ALL_SRCS) $(STORAGE_DEVICE_SRC) $(DIR_PAGE_SRC) LIB_SIMPLEFILES = $(TUI_BASE_MENU_INPUT_NAV_MISC) $(TUI_HOTKEY_SRC) $(REU_DMA_SRC) $(RESUME_STATE_SIMPLE_SRCS) $(STORAGE_DEVICE_SRC) $(FILE_BROWSER_SRC) -LIB_SIMPLECELLS = $(TUI_BASE_MENU_INPUT_NAV_MISC) $(LIB_REU_DMA) $(RESUME_STATE_SEGMENT_SRCS) $(STORAGE_DEVICE_SRC) $(DIR_PAGE_SRC) +LIB_SIMPLECELLS = $(TUI_BASE_MENU_INPUT_NAV_MISC) $(TUI_READYOS_SRC) $(LIB_REU_DMA) $(RESUME_STATE_SEGMENT_SRCS) $(STORAGE_DEVICE_SRC) $(DIR_PAGE_SRC) LIB_GAME2048 = $(TUI_BASE_NAV) $(TUI_HOTKEY_SRC) $(REU_DMA_SRC) $(RESUME_STATE_SIMPLE_SRCS) LIB_DEMINER = $(TUI_BASE_NAV) $(TUI_HOTKEY_SRC) $(REU_DMA_SRC) $(RESUME_STATE_SIMPLE_SRCS) LIB_SIDETRIS = $(TUI_BASE_NAV) $(TUI_HOTKEY_SRC) $(REU_DMA_SRC) $(RESUME_STATE_SIMPLE_SRCS) @@ -381,13 +412,13 @@ LIB_CAL26 = $(TUI_BASE_INPUT_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA) $(LIB_CL LIB_DIZZY = $(TUI_BASE_INPUT_NAV) $(TUI_HOTKEY_SRC) $(REU_DMA_SRC) $(RESUME_STATE_SEGMENT_SRCS) LIB_README = $(TUI_BASE_NAV_MISC) $(TUI_HOTKEY_SRC) $(REU_DMA_SRC) $(RESUME_STATE_SIMPLE_SRCS) LIB_READYSHELL = $(REU_DMA_SRC) $(RESUME_STATE_SIMPLE_SRCS) -LIB_READYIRC = $(TUI_BASE_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA) $(REU_OWNED_ALLOC_SRC) $(RESUME_STATE_SIMPLE_SRCS) +LIB_READYIRC = $(TUI_BASE_INPUT_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA) $(REU_OWNED_ALLOC_SRC) $(RESUME_STATE_SIMPLE_SRCS) LIB_RIRC_RRNET = $(TUI_BASE_NAV_MISC) $(TUI_HOTKEY_SRC) $(LIB_REU_DMA) $(REU_OWNED_ALLOC_SRC) $(RESUME_STATE_SIMPLE_SRCS) $(IP65_TCP_LIB) $(IP65_C64_LIB) -LIB_UCITEST = $(TUI_UCITEST) $(TUI_HOTKEY_SRC) +LIB_UCITEST = $(TUI_UCITEST) $(TUI_HOTKEY_LITE_SRC) EASYFLASH_PAYLOADS = $(LAUNCHER_EASYFLASH) $(READYSHELL_EASYFLASH) $(EDITOR) $(QUICKNOTES) $(CALCPLUS) $(HEXVIEW) $(CLIPMGR) $(REUVIEWER) $(SYSINFO) $(TASKLIST) $(SIMPLEFILES) $(SIMPLECELLS) $(GAME2048) $(DEMINER) $(SIDETRIS) $(CAL26) $(DIZZY) $(READYIRC) $(RIRC_RRNET) $(READYBASIC) $(UCITEST) $(READMEAPP) $(READYSHELL_OVL1_PRG) $(READYSHELL_OVL2_PRG) $(READYSHELL_OVL3_PRG) $(READYSHELL_OVL4_PRG) $(READYSHELL_OVL5_PRG) $(READYSHELL_OVL6_PRG) $(READYSHELL_OVL7_PRG) $(READYSHELL_OVL8_PRG) $(READYSHELL_OVL9_PRG) # Primary binaries shared across profiles -PROGRAMS = $(BOOT) $(PREBOOT) $(SETD71) $(SHOWCFG) $(TEST_REU) $(LAUNCHER) $(EDITOR) $(QUICKNOTES) $(CALCPLUS) $(HEXVIEW) $(CLIPMGR) $(REUVIEWER) $(SYSINFO) $(TASKLIST) $(SIMPLEFILES) $(SIMPLECELLS) $(GAME2048) $(DEMINER) $(SIDETRIS) $(CAL26) $(DIZZY) $(READYIRC) $(RIRC_RRNET) $(READYBASIC) $(READYBASIC_RBTEST1) $(READYBASIC_RBPROC1) $(READYBASIC_RBPROCERR) $(READYBASIC_MODULES) $(UCITEST) $(READMEAPP) $(READYSHELL) +PROGRAMS = $(BOOT) $(PREBOOT) $(SETD71) $(SHOWCFG) $(TEST_REU) $(LAUNCHER) $(EDITOR) $(QUICKNOTES) $(CALCPLUS) $(HEXVIEW) $(CLIPMGR) $(REUVIEWER) $(SYSINFO) $(TASKLIST) $(SIMPLEFILES) $(SIMPLECELLS) $(GAME2048) $(DEMINER) $(SIDETRIS) $(CAL26) $(DIZZY) $(READYIRC) $(RIRC_RRNET) $(READYBASIC) $(READYBASIC_RBTEST1) $(READYBASIC_RBPROC1) $(READYBASIC_RBPROCERR) $(READYBASIC_GFX_DEMOS) $(READYBASIC_SOUND_DEMOS) $(READYBASIC_MODULES) $(UCITEST) $(READMEAPP) $(READYSHELL) $(BIN_DIR): @mkdir -p "$@" @@ -484,8 +515,8 @@ $(TEST_REU): $(SRC_DIR)/test_reu.c $(CC) $(CFLAGS) -o $@ $< # Launcher app (loads at $1000) -$(LAUNCHER): $(APPS_DIR)/launcher/launcher.c $(LIB_LAUNCHER_DISK) $(VERSION_HEADER) - $(CC) $(LAUNCHER_CFLAGS) -m $(OBJ_DIR)/launcher.map -o $@ $(APPS_DIR)/launcher/launcher.c $(LIB_LAUNCHER_DISK) +$(LAUNCHER): $(APPS_DIR)/launcher/launcher.c $(LAUNCHER_DMA_SRCS) $(LIB_LAUNCHER_DISK) $(VERSION_HEADER) + $(CC) $(LAUNCHER_CFLAGS) -m $(OBJ_DIR)/launcher.map -o $@ $(APPS_DIR)/launcher/launcher.c $(LAUNCHER_DMA_SRCS) $(LIB_LAUNCHER_DISK) $(LAUNCHER_EASYFLASH): $(APPS_DIR)/launcher/launcher_easyflash.c $(LIB_LAUNCHER) $(VERSION_HEADER) $(EASYFLASH_LAUNCHER_HEADER) $(CC) $(LAUNCHER_CFLAGS) $(EASYFLASH_LAUNCHER_CPPFLAGS) -m $(OBJ_DIR)/launcher_easyflash.map -o $@ $(APPS_DIR)/launcher/launcher_easyflash.c $(LIB_LAUNCHER) @@ -664,6 +695,15 @@ readybasic-demo-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_demo_suite.sh readybasic-full-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_full_suite_visual_verification.sh $(BUILD_SUPPORT_DIR)/run_readybasic_full_suite_visual_verification.sh +readybasic-hotkey-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_hotkey_probe.sh + READYBASIC_HOTKEY_BOOT_MODE=launcher READYBASIC_HOTKEY_SCENARIO=launcher_cycle $(BUILD_SUPPORT_DIR)/run_readybasic_hotkey_probe.sh + +readybasic-keyboard-regression-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_keyboard_regression_probe.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_keyboard_regression_probe.sh + +readybasic-reuviewer-f2-chain-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_reuviewer_f2_chain_probe.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_reuviewer_f2_chain_probe.sh + readybasic-cross-app-resume-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_cross_app_resume_probe.sh $(BUILD_SUPPORT_DIR)/run_readybasic_cross_app_resume_probe.sh @@ -676,6 +716,33 @@ readybasic-lifecycle-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_lifecycle_probe.s readybasic-plugin-command-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_plugin_command_probe.sh $(BUILD_SUPPORT_DIR)/run_readybasic_plugin_command_probe.sh +readybasic-gfx-phase1-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase1_probe.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase1_probe.sh + +readybasic-sprite-steps-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_sprite_steps_demo.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_sprite_steps_demo.sh + +readybasic-gfx-phase2-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase2_demo.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase2_demo.sh + +readybasic-gfx-phase3-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase3_demo.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase3_demo.sh + +readybasic-gfx-mbitmap-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_mbitmap_demo.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_mbitmap_demo.sh + +readybasic-gfx-phase4-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase4_demo.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase4_demo.sh + +readybasic-gfx-phase5-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase5_demo.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_gfx_phase5_demo.sh + +readybasic-sound-phase1-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_sound_phase1_demo.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_sound_phase1_demo.sh + +readybasic-readyos-loaded-apps-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_readyos_loaded_apps_suite.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_readyos_loaded_apps_suite.sh + readybasic-module-overlay-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_module_overlay_probe.sh $(BUILD_SUPPORT_DIR)/run_readybasic_module_overlay_probe.sh @@ -685,12 +752,24 @@ readybasic-program-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_program_probe.sh readybasic-rbtest1-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_rbtest1_probe.sh $(BUILD_SUPPORT_DIR)/run_readybasic_rbtest1_probe.sh +readybasic-resume-min-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_resume_min_probe.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_resume_min_probe.sh + +readybasic-screen-reu-temp-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_screen_reu_temp_probe.sh + $(BUILD_SUPPORT_DIR)/run_readybasic_screen_reu_temp_probe.sh + launcher-reu-state-vice: $(BUILD_SUPPORT_DIR)/run_launcher_reu_state_probe.sh $(BUILD_SUPPORT_DIR)/run_launcher_reu_state_probe.sh quicknotes-owned-reu-vice: $(BUILD_SUPPORT_DIR)/run_quicknotes_owned_reu_probe.sh $(BUILD_SUPPORT_DIR)/run_quicknotes_owned_reu_probe.sh +readyshell-cross-app-resume-vice: $(BUILD_SUPPORT_DIR)/run_readyshell_cross_app_resume_probe.sh + $(BUILD_SUPPORT_DIR)/run_readyshell_cross_app_resume_probe.sh + +readyshell-cross-app-resume-c64u: $(BUILD_SUPPORT_DIR)/run_readyshell_cross_app_resume_c64u.sh + $(BUILD_SUPPORT_DIR)/run_readyshell_cross_app_resume_c64u.sh + readybasic-second-entry-editor-vice: $(BUILD_SUPPORT_DIR)/run_readybasic_second_entry_editor_probe.sh $(BUILD_SUPPORT_DIR)/run_readybasic_second_entry_editor_probe.sh @@ -702,7 +781,7 @@ readybasic-vice-plans: $(READYBASIC_VICE_SCRIPTS) READYBASIC_SKIP_BUILD=1 READYBASIC_GENERATE_PLAN_ONLY=1 "$$script"; \ done -readybasic-vice-suites: readybasic-demo-vice readybasic-repeat-label-vice readybasic-lifecycle-vice readybasic-module-overlay-vice readybasic-plugin-command-vice readybasic-program-vice readybasic-rbtest1-vice readybasic-state-vice readybasic-large-vars-vice readybasic-cross-app-resume-vice readybasic-second-entry-editor-vice readybasic-full-vice +readybasic-vice-suites: readybasic-demo-vice readybasic-repeat-label-vice readybasic-lifecycle-vice readybasic-module-overlay-vice readybasic-plugin-command-vice readybasic-program-vice readybasic-rbtest1-vice readybasic-resume-min-vice readybasic-screen-reu-temp-vice readybasic-state-vice readybasic-large-vars-vice readybasic-hotkey-vice readybasic-keyboard-regression-vice readybasic-reuviewer-f2-chain-vice readybasic-cross-app-resume-vice readybasic-second-entry-editor-vice readybasic-gfx-phase1-vice readybasic-sprite-steps-vice readybasic-gfx-phase2-vice readybasic-gfx-phase3-vice readybasic-gfx-mbitmap-vice readybasic-gfx-phase4-vice readybasic-gfx-phase5-vice readybasic-sound-phase1-vice readybasic-readyos-loaded-apps-vice readybasic-full-vice readybasic-memory-report: $(READYBASIC) $(BUILD_SUPPORT_DIR)/readybasic_memory_report.py $(PYTHON) $(BUILD_SUPPORT_DIR)/readybasic_memory_report.py --html-out docs/readybasic_memory_diagrams.html @@ -720,6 +799,14 @@ $(READYBASIC_RBPROCERR): $(APPS_DIR)/readybasic/rbprocerr.bas @mkdir -p "$(OBJ_DIR)" $(PETCAT) -w2 -l 2ac1 -o $@ -- $< +$(OBJ_DIR)/rbgfx%.prg: $(APPS_DIR)/readybasic/rbgfx%.bas + @mkdir -p "$(OBJ_DIR)" + $(PETCAT) -w2 -l 2ac1 -o $@ -- $< + +$(OBJ_DIR)/rbsnd%.prg: $(APPS_DIR)/readybasic/rbsnd%.bas + @mkdir -p "$(OBJ_DIR)" + $(PETCAT) -w2 -l 2ac1 -o $@ -- $< + $(READYBASIC_MODULES): $(BUILD_SUPPORT_DIR)/build_readybasic_disk_modules.py @mkdir -p "$(READYBASIC_MODULE_DIR)" $(PYTHON) $(BUILD_SUPPORT_DIR)/build_readybasic_disk_modules.py --out-dir "$(READYBASIC_MODULE_DIR)" @@ -973,8 +1060,9 @@ easyflash-verify: easyflash $(PYTHON) $(BUILD_SUPPORT_DIR)/vice_easyflash_smoke.py write-monitor --output "$(EASYFLASH_SMOKE_MON)" --launcher-map "$(OBJ_DIR)/launcher_easyflash.map" --boot-map "$(EASYFLASH_BOOT_MAP)" --include-preload cp "$(EASYFLASH_OUTPUT_DIR)/readyos_easyflash.crt" "$(EASYFLASH_SMOKE_RUNTIME_CRT)" rm -f "$(EASYFLASH_SMOKE_LOG)" - script -q /dev/null x64sc -console -default +sound -warp -reu -reusize 16384 -cartcrt "$(EASYFLASH_SMOKE_RUNTIME_CRT)" -drive8type 1541 -devicebackend8 0 +busdevice8 -8 "$(EASYFLASH_OUTPUT_DIR)/readyos_data.d64" -moncommands "$(EASYFLASH_SMOKE_MON)" -monlog -monlogname "$(EASYFLASH_SMOKE_LOG)" -initbreak 0xe000 -limitcycles 120000000 || true - $(PYTHON) $(BUILD_SUPPORT_DIR)/vice_easyflash_smoke.py verify-log --layout "$(EASYFLASH_LAYOUT_JSON)" --output-dir "$(EASYFLASH_OUTPUT_DIR)" --log "$(EASYFLASH_SMOKE_LOG)" --launcher-map "$(OBJ_DIR)/launcher_easyflash.map" --verify-preload + dd if=/dev/zero of="$(EASYFLASH_SMOKE_REU_IMAGE)" bs=1048576 count=16 + script -q /dev/null x64sc -console -default +sound -warp -reu -reusize 16384 -reuimage "$(EASYFLASH_SMOKE_REU_IMAGE)" -reuimagerw -cartcrt "$(EASYFLASH_SMOKE_RUNTIME_CRT)" -drive8type 1541 -devicebackend8 0 +busdevice8 -8 "$(EASYFLASH_OUTPUT_DIR)/readyos_data.d64" -moncommands "$(EASYFLASH_SMOKE_MON)" -monlog -monlogname "$(EASYFLASH_SMOKE_LOG)" -initbreak 0xe000 -limitcycles 120000000 || true + $(PYTHON) $(BUILD_SUPPORT_DIR)/vice_easyflash_smoke.py verify-log --layout "$(EASYFLASH_LAYOUT_JSON)" --output-dir "$(EASYFLASH_OUTPUT_DIR)" --log "$(EASYFLASH_SMOKE_LOG)" --launcher-map "$(OBJ_DIR)/launcher_easyflash.map" --reu-image "$(EASYFLASH_SMOKE_REU_IMAGE)" --verify-preload easyflash-report: easyflash $(PYTHON) $(BUILD_SUPPORT_DIR)/readyos_easyflash.py report \ @@ -987,8 +1075,9 @@ easyflash-smoke: easyflash $(PYTHON) $(BUILD_SUPPORT_DIR)/vice_easyflash_smoke.py write-monitor --output "$(EASYFLASH_SMOKE_MON)" --launcher-map "$(OBJ_DIR)/launcher_easyflash.map" --boot-map "$(EASYFLASH_BOOT_MAP)" --include-preload cp "$(EASYFLASH_OUTPUT_DIR)/readyos_easyflash.crt" "$(EASYFLASH_SMOKE_RUNTIME_CRT)" rm -f "$(EASYFLASH_SMOKE_LOG)" - script -q /dev/null x64sc -console -default +sound -warp -reu -reusize 16384 -cartcrt "$(EASYFLASH_SMOKE_RUNTIME_CRT)" -drive8type 1541 -devicebackend8 0 +busdevice8 -8 "$(EASYFLASH_OUTPUT_DIR)/readyos_data.d64" -moncommands "$(EASYFLASH_SMOKE_MON)" -monlog -monlogname "$(EASYFLASH_SMOKE_LOG)" -initbreak 0xe000 -limitcycles 120000000 || true - $(PYTHON) $(BUILD_SUPPORT_DIR)/vice_easyflash_smoke.py verify-log --layout "$(EASYFLASH_LAYOUT_JSON)" --output-dir "$(EASYFLASH_OUTPUT_DIR)" --log "$(EASYFLASH_SMOKE_LOG)" --launcher-map "$(OBJ_DIR)/launcher_easyflash.map" --verify-preload + dd if=/dev/zero of="$(EASYFLASH_SMOKE_REU_IMAGE)" bs=1048576 count=16 + script -q /dev/null x64sc -console -default +sound -warp -reu -reusize 16384 -reuimage "$(EASYFLASH_SMOKE_REU_IMAGE)" -reuimagerw -cartcrt "$(EASYFLASH_SMOKE_RUNTIME_CRT)" -drive8type 1541 -devicebackend8 0 +busdevice8 -8 "$(EASYFLASH_OUTPUT_DIR)/readyos_data.d64" -moncommands "$(EASYFLASH_SMOKE_MON)" -monlog -monlogname "$(EASYFLASH_SMOKE_LOG)" -initbreak 0xe000 -limitcycles 120000000 || true + $(PYTHON) $(BUILD_SUPPORT_DIR)/vice_easyflash_smoke.py verify-log --layout "$(EASYFLASH_LAYOUT_JSON)" --output-dir "$(EASYFLASH_OUTPUT_DIR)" --log "$(EASYFLASH_SMOKE_LOG)" --launcher-map "$(OBJ_DIR)/launcher_easyflash.map" --reu-image "$(EASYFLASH_SMOKE_REU_IMAGE)" --verify-preload easyflash-smoke-long: easyflash-smoke @@ -1095,6 +1184,8 @@ verify: profile python3 $(BUILD_SUPPORT_DIR)/verify_memory_map.py python3 $(BUILD_SUPPORT_DIR)/verify_reu_control_bank.py python3 $(BUILD_SUPPORT_DIR)/verify_dynamic_launcher.py + python3 $(BUILD_SUPPORT_DIR)/verify_documentation_contract.py + python3 $(BUILD_SUPPORT_DIR)/verify_shim_html_source.py # Full rebuild + deep verification fullcheck: clean verify @@ -1225,6 +1316,8 @@ help: @echo " readyshell-overlay-report - Generate ReadyShell overlay Markdown + HTML docs" @echo " launcher-reu-state-vice - Run focused launcher unload/reload REU-state VICE probe" @echo " quicknotes-owned-reu-vice - Run QuickNotes app-owned REU unload/viewer VICE probe" + @echo " readyshell-cross-app-resume-vice - Run ReadyShell cross-app resume VICE probe" + @echo " readyshell-cross-app-resume-c64u - Run ReadyShell cross-app resume probe on C64 Ultimate" @echo " readybasic-vice-plans - Regenerate tracked ReadyBASIC VICE YAML plans" @echo " readybasic-vice-suites - Run all repo-owned ReadyBASIC VICE suites" @echo " readybasic-full-vice - Run the full ReadyBASIC VICE visual suite" @@ -1285,5 +1378,5 @@ probe-rel: launcher-verbose: $(MAKE) LAUNCHER_CFG_VERBOSE=1 $(LAUNCHER) -.PHONY: all clean verify verify-resume shim-verify fullcheck help run run-test seed-cal26 probe-rel launcher-verbose readybasic-plugin-static-check launcher-reu-state-vice quicknotes-owned-reu-vice readybasic-demo-vice readybasic-repeat-label-vice readybasic-full-vice readybasic-cross-app-resume-vice readybasic-large-vars-vice readybasic-lifecycle-vice readybasic-module-overlay-vice readybasic-plugin-command-vice readybasic-program-vice readybasic-rbtest1-vice readybasic-second-entry-editor-vice readybasic-state-vice readybasic-vice-plans readybasic-vice-suites readybasic-memory-report readyshell-host-tests readyshell-parse-smoke-host readyshell-vm-smoke-host readyshell-reu-tests-host editor-smoke-host tasklist-smoke-host programs prepare-version profile profiles release-all easyflash easyflash-verify easyflash-smoke easyflash-smoke-long easyflash-preload-verify easyflash-clean FORCE +.PHONY: all clean verify verify-resume shim-verify fullcheck help run run-test seed-cal26 probe-rel launcher-verbose readybasic-plugin-static-check launcher-reu-state-vice quicknotes-owned-reu-vice readyshell-cross-app-resume-vice readyshell-cross-app-resume-c64u readybasic-demo-vice readybasic-repeat-label-vice readybasic-full-vice readybasic-hotkey-vice readybasic-keyboard-regression-vice readybasic-reuviewer-f2-chain-vice readybasic-cross-app-resume-vice readybasic-large-vars-vice readybasic-lifecycle-vice readybasic-module-overlay-vice readybasic-plugin-command-vice readybasic-gfx-phase1-vice readybasic-gfx-phase2-vice readybasic-gfx-phase3-vice readybasic-gfx-phase4-vice readybasic-gfx-phase5-vice readybasic-gfx-mbitmap-vice readybasic-sound-phase1-vice readybasic-sprite-steps-vice readybasic-readyos-loaded-apps-vice readybasic-program-vice readybasic-rbtest1-vice readybasic-second-entry-editor-vice readybasic-state-vice readybasic-vice-plans readybasic-vice-suites readybasic-memory-report readyshell-host-tests readyshell-parse-smoke-host readyshell-vm-smoke-host readyshell-reu-tests-host editor-smoke-host tasklist-smoke-host programs prepare-version profile profiles release-all easyflash easyflash-verify easyflash-smoke easyflash-smoke-long easyflash-preload-verify easyflash-clean FORCE EASYFLASH_LAUNCHER_CPPFLAGS ?= diff --git a/README.md b/README.md index 0f74b4e..fac7192 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,20 @@ Commodore 64 setup. Its long-term center of gravity is the new Commodore 64 Ultimate and related Ultimate-family hardware, but it is intended to support a wide range of C64 setups that have a reasonably large REU. That includes VICE, Ultimate-family hardware, and other practical REU-capable modern paths. PRECOG -`0.2.4` is the current development line. +`0.2.5` is the current development line. -The current `0.2.4` development line is still comparatively generic rather +The current `0.2.5` development line is still comparatively generic rather than being explicitly tailored to the new C64 Ultimate. This cycle is expected to push further in that Ultimate-first direction while still trying to stay usable on other REU-capable C64 setups. +The current tree also contains an opt-in C64 Ultimate DOS DMA launcher path. +It loads disk PRGs directly into loader-assigned REU destinations when built +with `LAUNCHER_DMA_LOAD=1`; normal release builds leave it disabled, and an +enabled build falls back to the established disk loader whenever UCI, image +mounting, file lookup, or transfer verification is unavailable. See +[`docs/ultimate_dos_dma_loading.md`](docs/ultimate_dos_dma_loading.md). + ## The Concept What if a Commodore 64 could feel ready, not just nostalgic? ReadyOS treats @@ -81,19 +88,19 @@ Boot note: ## Current Status -- Base release: `0.2.4` +- Base release: `0.2.5` - Local builds use the existing rolling suffix flow for artifact filenames only - Builds release media per profile - Full-content profiles currently include about `20` launcher-visible entries depending on media capacity; the catalog table below is the current app-token union across profiles. - App snapshots and app-owned resource banks are allocated on demand and - recorded in logical REU bank `0`; ReadyOS no longer pre-reserves a fixed - 24-bank app-slot gap. + recorded in the schema-v5 ReadyOS bank at physical `Skip`; ReadyOS does + not reserve a fixed app-slot gap or keep an allocation mirror in C64 RAM. -## What's New In 0.2.4 +## What's New In 0.2.5 -- Development version bump from the `0.2.3` release-candidate line. +- Development version bump from the `0.2.4` development line. - New `precog-easyflash` cartridge SKU for VICE and Ultimate-family setups. It boots from an EasyFlash `CRT`, keeps a companion `D64` on drive `8`, and preloads the launcher, app snapshots, and ReadyShell overlays into the REU. @@ -113,14 +120,20 @@ Boot note: Ultimate UCI status, and drive status for devices `8` through `11`; on the C64 Ultimate it shows a variety of Ultimate machine details, including networking information and IP addresses. -- The launcher and cartridge loaders now use logical REU bank `0` as the - ReadyOS control bank for app snapshot lookup, resource-bank relationships, +- The launcher and cartridge loaders use the physical `Skip` ReadyOS bank as + the source of truth for the launcher snapshot, explicit app-token mapping, + loaded/resumable status, clipboard metadata, hotkeys, resource relationships, app catalog metadata, and REU Viewer ownership details. ReadyShell overlays, ReadyShell state/scratch, and ReadyBASIC core/code banks are loader-assigned resources rather than fixed physical banks. +- Launcher return state is intentionally small: an `RSM1` UI record at + ReadyOS `$FC40` keeps selection/scroll/one-shot state, while the `LS` record + at `$B9D9` and app registry at `$BA00` reconstruct the app-bank, drive, + hotkey, resource, loaded-state, and size arrays. Those arrays are not kept as + a second authoritative copy in the launcher resume payload. - Apps can opt into owner-recorded runtime REU allocation without growing the primitive allocator or shim. QuickNotes note banks and the IRC scrollback - banks now publish compact ownership records in logical REU bank `0`, so REU + banks now publish compact ownership records in the ReadyOS bank, so REU Viewer can identify the owner and launcher unload can free those banks with the app. @@ -305,12 +318,15 @@ Notes: - ReadyShell tutorial: [src/apps/readyshell/ReadyShelltutorial.md](src/apps/readyshell/ReadyShelltutorial.md) - ReadyShell architecture: [docs/ReadyShellArchitecture.md](docs/ReadyShellArchitecture.md) - ReadyShell overlay inventory: [docs/readyshell_overlay_inventory.md](docs/readyshell_overlay_inventory.md) -- ReadyShell now ships eight overlays allowing language and command functionality that otherwise couldn't fit into the memory of a c64: `rsparser`, `rsvm`, `rsdrvilst`, - `rsldv`, `rsstv`, `rsfops`, `rscat`, and `rscopy`. +- ReadyShell now ships nine overlays allowing language and command + functionality that otherwise could not fit into C64 memory: `rsparser`, + `rsvm`, `rsdrvilst`, `rsldv`, `rsstv`, `rsfops`, `rscat`, `rscopy`, and + `rsedit`. - ReadyShell overlays are loader-assigned resources. The profile `rsovl+` line records which overlay PRGs are packed into each resource bank - and at which bank-relative offset, while logical REU bank `0` records the - runtime owner/resource relationship for REU Viewer, unload, and diagnostics. + and at which bank-relative offset, while the schema-v5 ReadyOS bank at + physical `Skip` records the runtime owner/resource relationship for REU + Viewer, unload, and diagnostics. - Current ReadyShell command set: `PRT`, `MORE`, `TOP`, `SEL`, `GEN`, `TAP`, `DRVI`, `LST`, `LDV`, `STV`, `CAT`, `PUT`, `ADD`, `DEL`, `REN`, and `COPY`. - `LST` accepts wildcard patterns, optional drive selection, and optional @@ -324,15 +340,40 @@ Notes: - `showcfg.prg` is a BASIC inspector for the generated `apps.cfg` payload on drive `8`. +### ReadyBASIC examples and current guides + +ReadyBASIC now builds 32 graphics example PRGs (`rbgfx01_modes` through +`rbgfx32_convex_poly`) and 6 sound examples (`rbsnd01_sid_basics` through +`rbsnd06_three_voice`). They progress from mode setup and immediate drawing +through REU surfaces, sprites/input, polygons, display lists, tilemaps, +multicolor bitmap operations, and three-voice SID use. The Makefile lists the +canonical filenames; the regular and EasyFlash demo/probe suites exercise the +same generated programs. + +- [current ReadyBASIC design and measured memory](src/apps/readybasic/READYBASIC_CURRENT_DESIGN.md) +- [graphics/event commands and demo coverage](src/apps/readybasic/READYBASIC_GRAPHICS_COMMAND_DESIGN.md) +- [sound commands and examples](src/apps/readybasic/READYBASIC_SOUND_COMMAND_DESIGN.md) +- [lifecycle and REU architecture](src/apps/readybasic/READYBASIC_LIFECYCLE_AND_REU_ARCHITECTURE.md) +- [making module commands](src/apps/readybasic/READYBASIC_MAKING_COMMAND_GUIDE.md) + ## Architecture Snapshot Runtime memory layout: -- app runtime window: `$1000-$C5FF` -- REU metadata/system table: `$C600-$C7FF` -- resident shim: `$C800-$C9FF` +- app runtime window: `$1000-$C5FF` (`$B600` bytes) +- resident shim: `$C600-$C9FF` (1 KB); `$C600-$C7FF` is reserved expansion + capacity and the public ABI remains at `$C800-$C9FF` +- ReadyShell/ReadyBASIC high-RAM workspace: `$CA00-$CFFF` when owned by the + active app; it is outside the app snapshot and must be managed by that app - hardware I/O region: `$D000-$DFFF` +Spatially, the core RAM contract is: + +```text +$1000 $C5FF $C600 $C9FF $CA00 $CFFF $D000 +|<--------------- active app snapshot: $B600 bytes -------------->|<-- 1 KB shim ------>|<- app high RAM ->|<-- I/O +``` + Runtime model: - the active app owns `$1000-$C5FF` @@ -343,30 +384,43 @@ Runtime model: REU layout: -- logical bank `0`: ReadyOS control/global bank, including the compact bank - type mirror, 64-entry app registry, app/catalog metadata, resource records, - copied dependency/source lines, and the shim token-to-physical-bank lookup - page -- launcher snapshot/resume bank at `Start+1`: loader-owned system resource -- `Start+2` and above: available to dynamic allocation; no launcher overlay - bank is reserved there +- physical `Skip`: the ReadyOS bank; launcher snapshot at `$0000-$B5FF`, + followed by schema-v5 system state at `$B600-$FFFF` +- physical `Skip+1` and above: dynamic allocation pool for app snapshots and resources - app snapshots: allocated on demand by the launcher, then resolved by token - through logical REU bank `0` + through the ReadyOS bank's explicit `$B740` mapping table - clipboard payload banks: allocated from the dynamic pool - app-owned runtime banks: allocated from the dynamic pool by apps that opt into - the owned-allocation micromodule, recorded in bank `0`, and reclaimed by + the owned-allocation micromodule, recorded in the ReadyOS bank, and reclaimed by launcher unload - ReadyShell overlay banks: loader-assigned resources described by the profile - overlay list and mirrored into bank `0` rich resource records + overlay list and published as ReadyOS-bank rich resource records - ReadyShell state/scratch/value/CAT/diagnostic bank: one loader-assigned resource bank with fixed relative subranges inside that bank - ReadyBASIC core/code banks: loader-assigned resources, not fixed `$44/$45` physical banks - unavailable physical tail banks: detected by the launcher once at startup and - marked as `REU_UNAVAIL` in the resident table plus bank `0` header, so REU + marked as `REU_UNAVAIL` in the ReadyOS-bank table/header, so REU Viewer reports correct totals on smaller REU sizes - remaining banks: dynamic allocation pool +The shim's logical token is not a fixed physical app-bank number. Token `0` +resolves directly to the ReadyOS bank at physical `Skip`; nonzero app tokens +resolve through its `$B740` lookup page. Loaded/resumable status is authoritative +at `$B840`, not in the retired `$C836-$C838` bitmap. This lets snapshots and +resources move while preserving the 512-byte public shim ABI inside the full +1 KB resident shim region. +The current shim has 129 verifier-checked executable-padding bytes (largest +contiguous run: 42 bytes) plus 11 ABI/data bytes that remain reserved rather +than general feature space; the exact accounting is in the current shim +architecture report. + +The ReadyOS bank also contains the active launcher catalog-shape settings at +`$B9D9-$B9FF` and a 128-byte validated launcher runtime envelope at +`$FC40-$FCBF`. The latter stores only compact UI state (and the bounded +Ultimate DMA image path in DMA-enabled builds); the launcher restores its +working registry arrays from the ReadyOS app records after every return. + Disk layout: - media shape depends on the selected release profile @@ -394,10 +448,16 @@ Main entry points: print the known release profile ids - `bash ./run.sh --build-all` build every release profile and exit +- `bash ./run.sh --profile precog-d81 --build-only` + build and package only the selected profile, then exit without starting VICE; + this is useful for hardware-test artifacts and custom `--config` builds - `bash ./run.sh --force-artifacts-from-d71 --build-all` promote non-excluded `SEQ` files and current `REL` files from the latest built `precog-dual-d71` images into `cfg/authoritative/`, then rebuild all profiles from that updated authoritative set +- `LAUNCHER_DMA_LOAD=1 bash ./run.sh --profile precog-d81` + build the opt-in C64 Ultimate UCI/Ultimate DOS direct-to-REU launcher path; + disk fallback remains available - `make seed-cal26` seed CAL26 REL data into the latest built `precog-dual-d71` drive `8` image - `bash ./run.sh --vice-fast` @@ -480,6 +540,9 @@ plus the generated `apps.cfg`. Public supporting docs in `docs/` currently include: +- [documentation index and freshness policy](docs/DOCUMENTATION_INDEX.md) +- [C64 Ultimate DOS DMA loading](docs/ultimate_dos_dma_loading.md) +- [current 0.2.5 shim and ReadyOS-bank architecture](docs/ReadyOS_SHIM_ARCHITECTURE_0.2.5.md) - `docs/clipboard_bundle_seq_format.md` - `docs/quicknotes_seq_format.md` - `docs/simplecells_seq_format.md` @@ -488,7 +551,10 @@ Public supporting docs in `docs/` currently include: Rendered documentation exports in `docs/` currently include: -- [ReadyOS SHIM Architecture Report (HTML)](docs/ReadyOS%20SHIM%20Architecture%20Report%20%280.2%29.html) +- [Documentation Index (HTML)](docs/DOCUMENTATION_INDEX.html) +- [C64 Ultimate DOS DMA Loading (HTML)](docs/ultimate_dos_dma_loading.html) +- [Current 0.2.5 SHIM Architecture Report (HTML)](docs/ReadyOS_SHIM_ARCHITECTURE_0.2.5.html) +- [Preserved 0.2.4 SHIM Architecture Report (HTML)](docs/ReadyOS%20SHIM%20Architecture%20Report%20%280.2%29.html) - [ReadyShell Overlay Inventory (HTML)](docs/readyshell_overlay_inventory.html) - [ReadyShell Architecture (HTML)](docs/ReadyShellArchitecture.html) diff --git a/ReadyOSREUPhase1Completed.html b/ReadyOSREUPhase1Completed.html index a4cb868..6f614b3 100644 --- a/ReadyOSREUPhase1Completed.html +++ b/ReadyOSREUPhase1Completed.html @@ -1,3 +1,16 @@ + + + + +

ReadyOS REU Enhancement Refactor - Phase 1 Completed

Phase 1 Completion Note

@@ -1088,300 +1101,290 @@

Full Commented Resident because this branch changed the resident shim mapping contract while keeping the final image at 512 bytes.

;-----------------------------------------------------------------------------
-; Shared ReadyOS shim image ($C800-$C9FF, 512 bytes)
-; This file is the canonical shim byte layout used by both the disk boot path
-; and the EasyFlash cartridge flavor. Keep it identical across all variants.
-;-----------------------------------------------------------------------------
-
-;-----------------------------------------------------------------------------
-; Page 1: $C800-$C8FF - Jump table, data, and helper routines
-;-----------------------------------------------------------------------------
-
-; $C800-$C817: Jump Table (24 bytes, 8 entries)
-jt_load_disk    = $C800     ; Load from disk, run
-jt_load_reu     = $C803     ; Fetch from REU, run
-jt_run_app      = $C806     ; Just run app
-jt_preload      = $C809     ; Preload to REU, return
-jt_return       = $C80C     ; Return to launcher
-jt_switch       = $C80F     ; Switch to another app
-jt_stash_cur    = $C812     ; Helper: stash current app
-jt_fetch_bank   = $C815     ; Helper: fetch from bank in A
-
-.byte $4C, $40, $C8         ; $C800: JMP load_disk ($C840)
-.byte $4C, $60, $C8         ; $C803: JMP load_reu ($C860)
-.byte $4C, $00, $10         ; $C806: JMP $1000 (run app)
-.byte $4C, $80, $C8         ; $C809: JMP preload ($C880)
-.byte $4C, $00, $C9         ; $C80C: JMP return_to_launcher ($C900)
-.byte $4C, $40, $C9         ; $C80F: JMP switch_app ($C940)
-.byte $4C, $C0, $C8         ; $C812: JMP stash_current ($C8C0) - placeholder
-.byte $4C, $F0, $C8         ; $C815: JMP fetch_bank ($C8F0)
-
-; $C818: JMP log_byte ($C9E0)
-.byte $4C, $E0, $C9         ; $C818: JMP log_byte
-.byte $00,$00,$00,$00,$00   ; $C81B-$C81F: Padding
-
-; $C820-$C83F: Data Area (32 bytes)
-; $C820: target_bank - bank to load/switch to
-; $C821: filename_len
-; $C822-$C823: unused
-; $C824-$C82F: filename (12 bytes)
-; $C830: load_end_lo (KERNAL LOAD end addr low byte, saved by preload)
-; $C831: load_end_hi (KERNAL LOAD end addr high byte, saved by preload)
-; $C832-$C833: unused
-; $C834: current_bank - currently running app
-; $C835: last_saved
-; $C836: reu_bitmap_lo (banks 0-7)
-; $C837: reu_bitmap_hi (banks 8-15)
-; $C838: reu_bitmap_xhi (banks 16-23)
-; $C839: storage_drive - shim-global default storage drive for D8/D9 app dialogs
-;        This persists across app switches and is shared by apps that use the
-;        common file-dialog default-drive contract.
-; $C83A: log_index - debug byte ring head
-; $C83B: reu_bank_skip - physical 64K banks reserved before ReadyOS bank start
-; $C83C: launcher_flags - launcher-owned one-shot state flags
-; $C83D: reu_lookup_scratch - one-byte physical bank fetched from REU bank 0
-; $C83E-$C83F: reserved
-
-.byte $00                   ; $C820: target_bank
-.byte $08                   ; $C821: filename_len
-.byte $00, $00              ; $C822-$C823: unused
-.byte "LAUNCHER    "        ; $C824-$C82F: filename (12 bytes)
-.byte $00,$00               ; $C830-$C831: load_end_lo, load_end_hi
-.byte $00,$00               ; $C832-$C833: unused
-.byte $00                   ; $C834: current_bank
-.byte $FF                   ; $C835: last_saved
-.byte $00                   ; $C836: reu_bitmap_lo
-.byte $00                   ; $C837: reu_bitmap_hi
-.byte $00                   ; $C838: reu_bitmap_xhi
-.byte $08                   ; $C839: storage_drive (default drive 8)
-.byte $00                   ; $C83A: log_index (for debug buffer)
-.byte READYOS_REU_BANK_SKIP ; $C83B: reu_bank_skip (compiled into boot image)
-.byte $00                   ; $C83C: launcher_flags
-.byte $00                   ; $C83D: reu_lookup_scratch
-.byte $00,$00               ; $C83E-$C83F: reserved
-
-;-----------------------------------------------------------------------------
-; $C840: load_disk - Load app from disk and run (32 bytes)
-;-----------------------------------------------------------------------------
-.byte $AD, $21, $C8         ; LDA $C821 (filename len)
-.byte $A2, $24              ; LDX #$24
-.byte $A0, $C8              ; LDY #$C8 (filename at $C824)
-.byte $20, $BD, $FF         ; JSR $FFBD (SETNAM)
-.byte $A9, $00              ; LDA #0
-.byte $A2, $08              ; LDX #8
-.byte $A0, $01              ; LDY #1
-.byte $20, $BA, $FF         ; JSR $FFBA (SETLFS)
-.byte $A9, $00              ; LDA #0
-.byte $20, $D5, $FF         ; JSR $FFD5 (LOAD)
-.byte $4C, $00, $10         ; JMP $1000
-.byte $00,$00,$00,$00,$00   ; Padding to $C860
-
-;-----------------------------------------------------------------------------
-; $C860: load_reu - Fetch app from REU and run (32 bytes)
-;-----------------------------------------------------------------------------
-.byte $AD, $20, $C8         ; LDA $C820 (target bank)
-.byte $20, $F0, $C8         ; JSR fetch_bank ($C8F0)
-.byte $4C, $00, $10         ; JMP $1000
-.byte $00,$00,$00,$00,$00,$00,$00,$00
-.byte $00,$00,$00,$00,$00,$00,$00,$00
-.byte $00,$00,$00,$00,$00,$00,$00
-
-;-----------------------------------------------------------------------------
-; $C880: preload - Load to REU, return to launcher
-; Called via JSR $C809
-; DEBUG: writes markers to $C007-$C00C
-;-----------------------------------------------------------------------------
-.byte $A9, $AA              ; LDA #$AA (170 = "preload entered")
-.byte $8D, $07, $C0         ; STA $C007
-
-.byte $A9, $00              ; LDA #0 (bank 0)
-.byte $20, $E0, $C8         ; JSR stash_to_bank ($C8E0)
-
-.byte $A9, $BB              ; LDA #$BB (187 = "launcher stashed")
-.byte $8D, $08, $C0         ; STA $C008
-
-.byte $AD, $21, $C8         ; LDA $C821 (len)
-.byte $A2, $24              ; LDX #$24
-.byte $A0, $C8              ; LDY #$C8 (filename at $C824)
-.byte $20, $BD, $FF         ; JSR SETNAM
-
-.byte $A9, $00              ; LDA #0
-.byte $A2, $08              ; LDX #8
-.byte $A0, $01              ; LDY #1
-.byte $20, $BA, $FF         ; JSR SETLFS
-
-.byte $A9, $CC              ; LDA #$CC (204 = "about to LOAD")
-.byte $8D, $09, $C0         ; STA $C009
-
-.byte $A9, $00              ; LDA #0
-.byte $20, $D5, $FF         ; JSR LOAD
-
-.byte $8E, $30, $C8         ; STX $C830 (end addr lo)
-.byte $8C, $31, $C8         ; STY $C831 (end addr hi)
-
-.byte $AD, $20, $C8         ; LDA $C820 (target bank)
-.byte $20, $E0, $C8         ; JSR stash_to_bank ($C8E0)
-
-.byte $A9, $EE              ; LDA #$EE (238 = "app stashed")
-.byte $8D, $0B, $C0         ; STA $C00B
-
-.byte $AD, $20, $C8         ; LDA $C820 (target bank)
-.byte $20, $C0, $C9         ; JSR set_bitmap ($C9C0)
-
-.byte $A9, $00              ; LDA #0
-.byte $20, $F0, $C8         ; JSR fetch_bank ($C8F0)
-
-.byte $A9, $FF              ; LDA #$FF (255 = "launcher restored")
-.byte $8D, $0C, $C0         ; STA $C00C
-
-.byte $60                   ; RTS
-
-.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
-.byte $00,$00,$00,$00,$00,$00,$00,$00
-
-;-----------------------------------------------------------------------------
-; $C8E0: stash_to_bank - Stash $1000-$C5FF to REU bank in A (16 bytes)
-;-----------------------------------------------------------------------------
-.byte $20, $60, $C9         ; JSR reu_setup_logical ($C960)
-.byte $A9, $90              ; LDA #$90 (STASH command)
-.byte $8D, $01, $DF         ; STA $DF01 - execute transfer
-.byte $60                   ; RTS
-.byte $00,$00,$00,$00,$00,$00,$00
-
-;-----------------------------------------------------------------------------
-; $C8F0: fetch_bank - Fetch from REU bank in A to $1000-$C5FF (16 bytes)
-;-----------------------------------------------------------------------------
-.byte $20, $60, $C9         ; JSR reu_setup_logical ($C960)
-.byte $A9, $91              ; LDA #$91 (FETCH command)
-.byte $8D, $01, $DF         ; STA $DF01 - execute transfer
-.byte $60                   ; RTS
-.byte $00,$00,$00,$00,$00,$00,$00
-
-;-----------------------------------------------------------------------------
-; Page 2: $C900-$C9FF - Main routines
-;-----------------------------------------------------------------------------
-
-;-----------------------------------------------------------------------------
-; $C900: return_to_launcher (64 bytes)
-;-----------------------------------------------------------------------------
-.byte $AD, $34, $C8         ; LDA $C834 (current bank)
-.byte $20, $E0, $C8         ; JSR stash_to_bank ($C8E0)
-.byte $AD, $34, $C8         ; LDA $C834 (current bank)
-.byte $20, $C0, $C9         ; JSR set_bitmap ($C9C0)
-.byte $AD, $34, $C8         ; LDA $C834
-.byte $8D, $35, $C8         ; STA $C835
-.byte $A9, $00              ; LDA #0
-.byte $20, $F0, $C8         ; JSR fetch_bank ($C8F0)
-.byte $A9, $00              ; LDA #0
-.byte $8D, $34, $C8         ; STA $C834
-.byte $4C, $00, $10         ; JMP $1000
-.byte $00,$00,$00,$00,$00,$00,$00,$00
-.byte $00,$00,$00,$00,$00,$00,$00,$00
-.byte $00,$00,$00,$00,$00,$00,$00,$00
-.byte $00,$00,$00,$00,$00,$00,$00,$00
-.byte $00
-
-;-----------------------------------------------------------------------------
-; $C940: switch_app (64 bytes)
-;-----------------------------------------------------------------------------
-.byte $AD, $34, $C8         ; LDA $C834 (current bank)
-.byte $20, $E0, $C8         ; JSR stash_to_bank ($C8E0)
-.byte $AD, $34, $C8         ; LDA $C834 (current bank)
-.byte $20, $C0, $C9         ; JSR set_bitmap ($C9C0)
-.byte $AD, $20, $C8         ; LDA $C820 (target bank)
-.byte $20, $F0, $C8         ; JSR fetch_bank ($C8F0)
-.byte $AD, $20, $C8         ; LDA $C820
-.byte $8D, $34, $C8         ; STA $C834
-.byte $4C, $00, $10         ; JMP $1000
-.byte $00,$00,$00,$00,$00
-
-;-----------------------------------------------------------------------------
-; $C960: reu_setup_logical - Resolve logical token via REU bank 0, then setup regs
-;-----------------------------------------------------------------------------
-.byte $C9, $00              ; CMP #0 (logical launcher bank?)
-.byte $D0, $09              ; BNE lookup_app_bank
-.byte $AD, $3B, $C8         ; LDA $C83B (reu_bank_skip)
-.byte $18                   ; CLC
-.byte $69, $01              ; ADC #$01 (launcher is Start+1)
-.byte $4C, $A0, $C9         ; JMP reu_setup ($C9A0)
-.byte $AA                   ; lookup_app_bank: TAX (preserve logical token)
-.byte $A9, $3D              ; LDA #<$C83D
-.byte $8D, $02, $DF         ; STA $DF02 (C64 addr lo)
-.byte $A9, $C8              ; LDA #>$C83D
-.byte $8D, $03, $DF         ; STA $DF03 (C64 addr hi)
-.byte $8A                   ; TXA
-.byte $8D, $04, $DF         ; STA $DF04 (REU offset lo = logical token)
-.byte $A9, $2F              ; LDA #$2F
-.byte $8D, $05, $DF         ; STA $DF05 (REU offset hi = lookup page)
-.byte $AD, $3B, $C8         ; LDA $C83B (ReadyOS global physical bank)
-.byte $8D, $06, $DF         ; STA $DF06
-.byte $A9, $01              ; LDA #1
-.byte $8D, $07, $DF         ; STA $DF07 (length lo)
-.byte $A9, $00              ; LDA #0
-.byte $8D, $08, $DF         ; STA $DF08 (length hi)
-.byte $A9, $91              ; LDA #$91 (FETCH command)
-.byte $8D, $01, $DF         ; STA $DF01 - fetch physical bank byte
-.byte $AD, $3D, $C8         ; LDA $C83D (resolved physical bank)
-.byte $4C, $A0, $C9         ; JMP reu_setup ($C9A0)
-.byte $00,$00,$00,$00       ; Padding to $C9A0
-
-;-----------------------------------------------------------------------------
-; $C9A0: reu_setup - Set up REU registers for $B600 transfer at $1000
-;-----------------------------------------------------------------------------
-.byte $8D, $06, $DF         ; STA $DF06 (bank)
-.byte $A9, $00              ; LDA #$00
-.byte $8D, $02, $DF         ; STA $DF02 (C64 addr lo = $00)
-.byte $A9, $10              ; LDA #$10
-.byte $8D, $03, $DF         ; STA $DF03 (C64 addr hi = $10, so $1000)
-.byte $A9, $00              ; LDA #$00
-.byte $8D, $04, $DF         ; STA $DF04 (REU addr lo)
-.byte $8D, $05, $DF         ; STA $DF05 (REU addr hi)
-.byte $8D, $07, $DF         ; STA $DF07 (len lo = $00)
-.byte $A9, $B6              ; LDA #$B6
-.byte $8D, $08, $DF         ; STA $DF08 (len hi = $B6, so $B600 bytes)
-.byte $60                   ; RTS
-.byte $00,$00
-
-;-----------------------------------------------------------------------------
-; $C9C0: set_bitmap - Set bit for bank in A in reu_bitmap ($C836-$C838)
-;-----------------------------------------------------------------------------
-.byte $C9, $18              ; CMP #$18 (only banks 0-23 are tracked)
-.byte $B0, $17              ; BCS done
-.byte $AA                   ; TAX - preserve full bank
-.byte $29, $07              ; AND #$07 - bit index within byte
-.byte $A8                   ; TAY - Y = bit index
-.byte $8A                   ; TXA - restore full bank
-.byte $4A                   ; LSR A
-.byte $4A                   ; LSR A
-.byte $4A                   ; LSR A
-.byte $AA                   ; TAX - X = byte offset 0..2
-.byte $A9, $01              ; LDA #$01
-.byte $88                   ; DEY
-.byte $30, $03              ; BMI store_bit
-.byte $0A                   ; ASL A
-.byte $10, $FA              ; BPL shift_loop
-.byte $1D, $36, $C8         ; ORA $C836,X
-.byte $9D, $36, $C8         ; STA $C836,X
-.byte $60                   ; RTS
-.byte $00,$00,$00,$00
-
-;-----------------------------------------------------------------------------
-; $C9E0: log_byte - Write debug marker to buffer at $C980
-;-----------------------------------------------------------------------------
-.byte $48                   ; PHA - save the byte to log
-.byte $8E, $FC, $00         ; STX $00FC - save X to ZP temp
-.byte $AE, $3A, $C8         ; LDX $C83A - get log_index
-.byte $68                   ; PLA - get byte back
-.byte $9D, $80, $C9         ; STA $C980,X - write to buffer
-.byte $E8                   ; INX - increment index
-.byte $E0, $20              ; CPX #$20 - wrap at 32
-.byte $D0, $02              ; BNE +2 (skip reset)
-.byte $A2, $00              ; LDX #$00 - reset to 0
-.byte $8E, $3A, $C8         ; STX $C83A - store new index
-.byte $AE, $FC, $00         ; LDX $00FC - restore X
-.byte $60                   ; RTS
-.byte $00,$00,$00,$00,$00,$00,$00
+class="sourceCode asm">;----------------------------------------------------------------------------- +; Shared ReadyOS shim image ($C600-$C9FF, 1024 bytes) +; This file is the canonical shim byte layout used by both the disk boot path +; and the EasyFlash cartridge flavor. Keep it identical across all variants. +;----------------------------------------------------------------------------- + +;----------------------------------------------------------------------------- +; Pages 1-2: $C600-$C7FF - reserved resident expansion space +;----------------------------------------------------------------------------- +; This space used to contain the C64-RAM REU allocation/metadata mirror. The +; authoritative state now lives in the ReadyOS REU bank, but the RAM remains +; resident shim-owned capacity rather than becoming app snapshot memory. +.ifndef READYOS_SHIM_ABI_ONLY +.res $0200, $00 +.endif + +;----------------------------------------------------------------------------- +; Page 3: $C800-$C8FF - Jump table, data, and helper routines +;----------------------------------------------------------------------------- + +; $C800-$C817: Jump Table (24 bytes, 8 entries) +jt_load_disk = $C800 ; Load from disk, run +jt_load_reu = $C803 ; Fetch from REU, run +jt_run_app = $C806 ; Just run app +jt_preload = $C809 ; Preload to REU, return +jt_return = $C80C ; Return to launcher +jt_switch = $C80F ; Switch to another app +jt_reserved = $C812 ; Reserved compatibility slot (safe no-op) +jt_fetch_bank = $C815 ; Helper: fetch from bank in A + +.byte $4C, $40, $C8 ; $C800: JMP load_disk ($C840) +.byte $4C, $60, $C8 ; $C803: JMP load_reu ($C860) +.byte $4C, $00, $10 ; $C806: JMP $1000 (run app) +.byte $4C, $80, $C8 ; $C809: JMP preload ($C880) +.byte $4C, $00, $C9 ; $C80C: JMP return_to_launcher ($C900) +.byte $4C, $40, $C9 ; $C80F: JMP switch_app ($C940) +.byte $4C, $FF, $C9 ; $C812: reserved helper -> safe RTS +.byte $4C, $F0, $C8 ; $C815: JMP fetch_bank ($C8F0) + +; $C818: deprecated logger compatibility slot +.byte $4C, $FF, $C9 ; $C818: deprecated logger -> safe RTS +.byte $4C, $C0, $C9 ; $C81B: JMP mark_loaded (token in A) +.byte $00,$00 ; $C81E-$C81F: reserved + +; $C820-$C83F: Data Area (32 bytes) +; $C820: target_bank - bank to load/switch to +; $C821: filename_len +; $C822-$C823: launcher-side app-size scratch (not consumed by the shim) +; $C824-$C82F: filename (12 bytes) +; $C830: load_end_lo (KERNAL LOAD end addr low byte, saved by preload) +; $C831: load_end_hi (KERNAL LOAD end addr high byte, saved by preload) +; $C832-$C833: unused +; $C834: current_bank - currently running app +; $C835: last_saved +; $C836-$C838: retired bitmap bytes (reserved; authoritative state is in REU) +; $C839: storage_drive - shim-global default storage drive for D8/D9 app dialogs +; This persists across app switches and is shared by apps that use the +; common file-dialog default-drive contract. +; $C83A: reserved (formerly log_index) +; $C83B: readyos_bank - direct physical ReadyOS bank number (Skip) +; $C83C: launcher_flags - launcher-owned one-shot state flags +; $C83D: reu_lookup_scratch - one-byte ReadyOS-bank DMA scratch +; $C83E: token_scratch; $C83F: reserved + +.byte $00 ; $C820: target_bank +.byte $08 ; $C821: filename_len +.byte $00, $00 ; $C822-$C823: launcher app-size scratch +.byte "LAUNCHER " ; $C824-$C82F: filename (12 bytes) +.byte $00,$00 ; $C830-$C831: load_end_lo, load_end_hi +.byte $00,$00 ; $C832-$C833: unused +.byte $00 ; $C834: current_bank +.byte $FF ; $C835: last_saved +.byte $00 ; $C836: reserved (retired bitmap byte) +.byte $00 ; $C837: reserved (retired bitmap byte) +.byte $00 ; $C838: reserved (retired bitmap byte) +.byte $08 ; $C839: storage_drive (default drive 8) +.byte $00 ; $C83A: reserved (retired debug-ring head) +.byte READYOS_REU_BANK_SKIP ; $C83B: readyos_bank (physical Skip) +.byte $00 ; $C83C: launcher_flags +.byte $00 ; $C83D: reu_lookup_scratch +.byte $00,$00 ; $C83E-$C83F: reserved + +;----------------------------------------------------------------------------- +; $C840: load_disk - Load app from disk and run (32 bytes) +;----------------------------------------------------------------------------- +.byte $AD, $21, $C8 ; LDA $C821 (filename len) +.byte $A2, $24 ; LDX #$24 +.byte $A0, $C8 ; LDY #$C8 (filename at $C824) +.byte $20, $BD, $FF ; JSR $FFBD (SETNAM) +.byte $A9, $00 ; LDA #0 +.byte $AE, $39, $C8 ; LDX $C839 (storage drive) +.byte $A0, $01 ; LDY #1 +.byte $20, $BA, $FF ; JSR $FFBA (SETLFS) +.byte $A9, $00 ; LDA #0 +.byte $20, $D5, $FF ; JSR $FFD5 (LOAD) +.byte $4C, $00, $10 ; JMP $1000 +.byte $00,$00,$00,$00 ; Padding to $C860 + +;----------------------------------------------------------------------------- +; $C860: load_reu - Fetch app from REU and run (32 bytes) +;----------------------------------------------------------------------------- +.byte $AD, $20, $C8 ; LDA $C820 (target bank) +.byte $20, $F0, $C8 ; JSR fetch_bank ($C8F0) +.byte $4C, $00, $10 ; JMP $1000 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00 + +;----------------------------------------------------------------------------- +; $C880: preload - Load to REU, return to launcher +; Called via JSR $C809 +;----------------------------------------------------------------------------- +.byte $A9, $00 ; LDA #0 (launcher token -> ReadyOS bank) +.byte $20, $E0, $C8 ; JSR stash_to_bank ($C8E0) + +.byte $AD, $21, $C8 ; LDA $C821 (len) +.byte $A2, $24 ; LDX #$24 +.byte $A0, $C8 ; LDY #$C8 (filename at $C824) +.byte $20, $BD, $FF ; JSR SETNAM + +.byte $A9, $00 ; LDA #0 +.byte $AE, $39, $C8 ; LDX $C839 (storage drive) +.byte $A0, $01 ; LDY #1 +.byte $20, $BA, $FF ; JSR SETLFS + +.byte $A9, $00 ; LDA #0 +.byte $20, $D5, $FF ; JSR LOAD + +.byte $8E, $30, $C8 ; STX $C830 (end addr lo) +.byte $8C, $31, $C8 ; STY $C831 (end addr hi) + +.byte $AD, $20, $C8 ; LDA $C820 (target bank) +.byte $20, $E0, $C8 ; JSR stash_to_bank ($C8E0) + +.byte $AD, $20, $C8 ; LDA $C820 (target bank) +.byte $20, $C0, $C9 ; JSR mark_loaded ($C9C0) + +.byte $A9, $00 ; LDA #0 +.byte $20, $F0, $C8 ; JSR fetch_bank ($C8F0) + +.byte $60 ; RTS + +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00 + +;----------------------------------------------------------------------------- +; $C8E0: stash_to_bank - Stash $1000-$C5FF to REU bank in A (16 bytes) +;----------------------------------------------------------------------------- +.byte $20, $60, $C9 ; JSR reu_setup_logical ($C960) +.byte $A9, $90 ; LDA #$90 (STASH command) +.byte $8D, $01, $DF ; STA $DF01 - execute transfer +.byte $60 ; RTS +.byte $00,$00,$00,$00,$00,$00,$00 + +;----------------------------------------------------------------------------- +; $C8F0: fetch_bank - Fetch from REU bank in A to $1000-$C5FF (16 bytes) +;----------------------------------------------------------------------------- +.byte $20, $60, $C9 ; JSR reu_setup_logical ($C960) +.byte $A9, $91 ; LDA #$91 (FETCH command) +.byte $8D, $01, $DF ; STA $DF01 - execute transfer +.byte $60 ; RTS +.byte $00,$00,$00,$00,$00,$00,$00 + +;----------------------------------------------------------------------------- +; Page 4: $C900-$C9FF - Main routines +;----------------------------------------------------------------------------- + +;----------------------------------------------------------------------------- +; $C900: return_to_launcher (64 bytes) +;----------------------------------------------------------------------------- +.byte $AD, $34, $C8 ; LDA $C834 (current bank) +.byte $20, $E0, $C8 ; JSR stash_to_bank ($C8E0) +.byte $AD, $34, $C8 ; LDA $C834 (current bank) +.byte $20, $C0, $C9 ; JSR mark_loaded ($C9C0) +.byte $AD, $34, $C8 ; LDA $C834 +.byte $8D, $35, $C8 ; STA $C835 +.byte $A9, $00 ; LDA #0 +.byte $20, $F0, $C8 ; JSR fetch_bank ($C8F0) +.byte $A9, $00 ; LDA #0 +.byte $8D, $34, $C8 ; STA $C834 +.byte $4C, $00, $10 ; JMP $1000 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00 + +;----------------------------------------------------------------------------- +; $C940: switch_app (64 bytes) +;----------------------------------------------------------------------------- +.byte $AD, $34, $C8 ; LDA $C834 (current bank) +.byte $20, $E0, $C8 ; JSR stash_to_bank ($C8E0) +.byte $AD, $34, $C8 ; LDA $C834 (current bank) +.byte $20, $C0, $C9 ; JSR mark_loaded ($C9C0) +.byte $AD, $20, $C8 ; LDA $C820 (target bank) +.byte $20, $F0, $C8 ; JSR fetch_bank ($C8F0) +.byte $AD, $20, $C8 ; LDA $C820 +.byte $8D, $34, $C8 ; STA $C834 +.byte $4C, $00, $10 ; JMP $1000 +.byte $00,$00,$00,$00,$00 + +;----------------------------------------------------------------------------- +; $C960: reu_setup_logical - Resolve token via the ReadyOS bank, then setup regs +;----------------------------------------------------------------------------- +.byte $C9, $00 ; CMP #0 (logical launcher bank?) +.byte $D0, $06 ; BNE lookup_app_bank +.byte $AD, $3B, $C8 ; LDA $C83B (ReadyOS bank contains launcher) +.byte $4C, $A0, $C9 ; JMP reu_setup ($C9A0) +.byte $AA ; lookup_app_bank: TAX (preserve logical token) +.byte $A9, $3D ; LDA #<$C83D +.byte $8D, $02, $DF ; STA $DF02 (C64 addr lo) +.byte $A9, $C8 ; LDA #>$C83D +.byte $8D, $03, $DF ; STA $DF03 (C64 addr hi) +.byte $8A ; TXA +.byte $18 ; CLC +.byte $69, $40 ; ADC #<$B740 (mapping offset + token) +.byte $8D, $04, $DF ; STA $DF04 (REU offset lo) +.byte $A9, $B7 ; LDA #>$B740 +.byte $69, $00 ; ADC #0 (include low-byte carry) +.byte $8D, $05, $DF ; STA $DF05 (REU offset hi) +.byte $AD, $3B, $C8 ; LDA $C83B (ReadyOS global physical bank) +.byte $8D, $06, $DF ; STA $DF06 +.byte $A9, $01 ; LDA #1 +.byte $8D, $07, $DF ; STA $DF07 (length lo) +.byte $A9, $00 ; LDA #0 +.byte $8D, $08, $DF ; STA $DF08 (length hi) +.byte $A9, $91 ; LDA #$91 (FETCH command) +.byte $8D, $01, $DF ; STA $DF01 - fetch physical bank byte +.byte $AD, $3D, $C8 ; LDA $C83D (resolved physical bank) +.byte $4C, $A0, $C9 ; JMP reu_setup ($C9A0) +.byte $00,$00 ; Padding to $C9A0 + +;----------------------------------------------------------------------------- +; $C9A0: reu_setup - Set up REU registers for $B600 transfer at $1000 +;----------------------------------------------------------------------------- +.byte $8D, $06, $DF ; STA $DF06 (bank) +.byte $A9, $00 ; LDA #$00 +.byte $8D, $02, $DF ; STA $DF02 (C64 addr lo = $00) +.byte $A9, $10 ; LDA #$10 +.byte $8D, $03, $DF ; STA $DF03 (C64 addr hi = $10, so $1000) +.byte $A9, $00 ; LDA #$00 +.byte $8D, $04, $DF ; STA $DF04 (REU addr lo) +.byte $8D, $05, $DF ; STA $DF05 (REU addr hi) +.byte $8D, $07, $DF ; STA $DF07 (len lo = $00) +.byte $A9, $B6 ; LDA #$B6 +.byte $8D, $08, $DF ; STA $DF08 (len hi = $B6, so $B600 bytes) +.byte $60 ; RTS +.byte $00,$00 + +;----------------------------------------------------------------------------- +; $C9C0: mark_loaded - Commit token status after a successful snapshot stash +; A = logical token. Status $07 means valid, loaded, and resumable. +;----------------------------------------------------------------------------- +.byte $8D, $3E, $C8 ; STA $C83E (preserve token) +.byte $A9, $07 ; LDA #VALID|LOADED|RESUMABLE +.byte $8D, $3D, $C8 ; STA $C83D +.byte $A9, $3D ; C64 source = $C83D +.byte $8D, $02, $DF +.byte $A9, $C8 +.byte $8D, $03, $DF +.byte $AD, $3E, $C8 ; token +.byte $18 ; CLC +.byte $69, $40 ; + <$B840 (token status table) +.byte $8D, $04, $DF +.byte $A9, $B8 ; >$B840 +.byte $69, $00 ; include low-byte carry +.byte $8D, $05, $DF +.byte $AD, $3B, $C8 ; ReadyOS physical bank +.byte $8D, $06, $DF +.byte $A9, $01 ; one byte +.byte $8D, $07, $DF +.byte $A9, $00 +.byte $8D, $08, $DF +.byte $A9, $90 ; STASH C64 byte to ReadyOS bank +.byte $8D, $01, $DF +.byte $AD, $3E, $C8 ; preserve caller-visible token in A +.byte $60 ; RTS +.byte $00,$00,$00,$00 ; reserved through $C9FE +.byte $60 ; $C9FF: compatibility no-op RTS +

Implemented Logical Bank 0 Layout

The implemented v4 layout deliberately separates "hot, cheap to copy" diff --git a/ReadyOSREUPhase1Completed.md b/ReadyOSREUPhase1Completed.md index cddd7e6..e2cba5f 100644 --- a/ReadyOSREUPhase1Completed.md +++ b/ReadyOSREUPhase1Completed.md @@ -1,5 +1,21 @@ # ReadyOS REU Enhancement Refactor - Phase 1 Completed + +> **Current ReadyOS contract (2026-08-02):** Physical `Skip` is the ReadyOS +> bank and `Skip+1` is the first dynamic bank. The launcher snapshot occupies +> ReadyOS `$0000-$B5FF`; schema v5 occupies `$B600-$FFFF`, including the token +> map at `$B740` and status at `$B840`. C64 app RAM is `$1000-$C5FF` (`$B600`), +> and the resident 1 KB shim owns `$C600-$C9FF` with its public ABI at `$C800`. +> Dated layouts and measurements below are retained as historical evidence. + +> Superseded architecture note (2026-08-01): this remains the Phase 1 evidence +> record, but its logical-bank-0 control bank and `$C600-$C7FF` RAM mirror were +> replaced by schema v5. The current design uses one combined ReadyOS bank at +> physical `Skip+1`, keeps its launcher snapshot at `$0000-$B7FF`, stores all +> mapping/status/registry data from `$B800` onward, and treats `$C600-$C7FF` as +> app-private snapshot RAM. See `docs/ReadyOS_SHIM_ARCHITECTURE_0.2.5.md` and +> `privatedocs/top_level_md/MEMORY_MAP.md` for the active contract. + ## Phase 1 Completion Note This document is the completed Phase 1 implementation record for the REU @@ -676,13 +692,23 @@ contract while keeping the final image at `512` bytes. ```asm ;----------------------------------------------------------------------------- -; Shared ReadyOS shim image ($C800-$C9FF, 512 bytes) +; Shared ReadyOS shim image ($C600-$C9FF, 1024 bytes) ; This file is the canonical shim byte layout used by both the disk boot path ; and the EasyFlash cartridge flavor. Keep it identical across all variants. ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- -; Page 1: $C800-$C8FF - Jump table, data, and helper routines +; Pages 1-2: $C600-$C7FF - reserved resident expansion space +;----------------------------------------------------------------------------- +; This space used to contain the C64-RAM REU allocation/metadata mirror. The +; authoritative state now lives in the ReadyOS REU bank, but the RAM remains +; resident shim-owned capacity rather than becoming app snapshot memory. +.ifndef READYOS_SHIM_ABI_ONLY +.res $0200, $00 +.endif + +;----------------------------------------------------------------------------- +; Page 3: $C800-$C8FF - Jump table, data, and helper routines ;----------------------------------------------------------------------------- ; $C800-$C817: Jump Table (24 bytes, 8 entries) @@ -692,7 +718,7 @@ jt_run_app = $C806 ; Just run app jt_preload = $C809 ; Preload to REU, return jt_return = $C80C ; Return to launcher jt_switch = $C80F ; Switch to another app -jt_stash_cur = $C812 ; Helper: stash current app +jt_reserved = $C812 ; Reserved compatibility slot (safe no-op) jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $4C, $40, $C8 ; $C800: JMP load_disk ($C840) @@ -701,49 +727,48 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $4C, $80, $C8 ; $C809: JMP preload ($C880) .byte $4C, $00, $C9 ; $C80C: JMP return_to_launcher ($C900) .byte $4C, $40, $C9 ; $C80F: JMP switch_app ($C940) -.byte $4C, $C0, $C8 ; $C812: JMP stash_current ($C8C0) - placeholder +.byte $4C, $FF, $C9 ; $C812: reserved helper -> safe RTS .byte $4C, $F0, $C8 ; $C815: JMP fetch_bank ($C8F0) -; $C818: JMP log_byte ($C9E0) -.byte $4C, $E0, $C9 ; $C818: JMP log_byte -.byte $00,$00,$00,$00,$00 ; $C81B-$C81F: Padding +; $C818: deprecated logger compatibility slot +.byte $4C, $FF, $C9 ; $C818: deprecated logger -> safe RTS +.byte $4C, $C0, $C9 ; $C81B: JMP mark_loaded (token in A) +.byte $00,$00 ; $C81E-$C81F: reserved ; $C820-$C83F: Data Area (32 bytes) ; $C820: target_bank - bank to load/switch to ; $C821: filename_len -; $C822-$C823: unused +; $C822-$C823: launcher-side app-size scratch (not consumed by the shim) ; $C824-$C82F: filename (12 bytes) ; $C830: load_end_lo (KERNAL LOAD end addr low byte, saved by preload) ; $C831: load_end_hi (KERNAL LOAD end addr high byte, saved by preload) ; $C832-$C833: unused ; $C834: current_bank - currently running app ; $C835: last_saved -; $C836: reu_bitmap_lo (banks 0-7) -; $C837: reu_bitmap_hi (banks 8-15) -; $C838: reu_bitmap_xhi (banks 16-23) +; $C836-$C838: retired bitmap bytes (reserved; authoritative state is in REU) ; $C839: storage_drive - shim-global default storage drive for D8/D9 app dialogs ; This persists across app switches and is shared by apps that use the ; common file-dialog default-drive contract. -; $C83A: log_index - debug byte ring head -; $C83B: reu_bank_skip - physical 64K banks reserved before ReadyOS bank start +; $C83A: reserved (formerly log_index) +; $C83B: readyos_bank - direct physical ReadyOS bank number (Skip) ; $C83C: launcher_flags - launcher-owned one-shot state flags -; $C83D: reu_lookup_scratch - one-byte physical bank fetched from REU bank 0 -; $C83E-$C83F: reserved +; $C83D: reu_lookup_scratch - one-byte ReadyOS-bank DMA scratch +; $C83E: token_scratch; $C83F: reserved .byte $00 ; $C820: target_bank .byte $08 ; $C821: filename_len -.byte $00, $00 ; $C822-$C823: unused +.byte $00, $00 ; $C822-$C823: launcher app-size scratch .byte "LAUNCHER " ; $C824-$C82F: filename (12 bytes) .byte $00,$00 ; $C830-$C831: load_end_lo, load_end_hi .byte $00,$00 ; $C832-$C833: unused .byte $00 ; $C834: current_bank .byte $FF ; $C835: last_saved -.byte $00 ; $C836: reu_bitmap_lo -.byte $00 ; $C837: reu_bitmap_hi -.byte $00 ; $C838: reu_bitmap_xhi +.byte $00 ; $C836: reserved (retired bitmap byte) +.byte $00 ; $C837: reserved (retired bitmap byte) +.byte $00 ; $C838: reserved (retired bitmap byte) .byte $08 ; $C839: storage_drive (default drive 8) -.byte $00 ; $C83A: log_index (for debug buffer) -.byte READYOS_REU_BANK_SKIP ; $C83B: reu_bank_skip (compiled into boot image) +.byte $00 ; $C83A: reserved (retired debug-ring head) +.byte READYOS_REU_BANK_SKIP ; $C83B: readyos_bank (physical Skip) .byte $00 ; $C83C: launcher_flags .byte $00 ; $C83D: reu_lookup_scratch .byte $00,$00 ; $C83E-$C83F: reserved @@ -756,13 +781,13 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $A0, $C8 ; LDY #$C8 (filename at $C824) .byte $20, $BD, $FF ; JSR $FFBD (SETNAM) .byte $A9, $00 ; LDA #0 -.byte $A2, $08 ; LDX #8 +.byte $AE, $39, $C8 ; LDX $C839 (storage drive) .byte $A0, $01 ; LDY #1 .byte $20, $BA, $FF ; JSR $FFBA (SETLFS) .byte $A9, $00 ; LDA #0 .byte $20, $D5, $FF ; JSR $FFD5 (LOAD) .byte $4C, $00, $10 ; JMP $1000 -.byte $00,$00,$00,$00,$00 ; Padding to $C860 +.byte $00,$00,$00,$00 ; Padding to $C860 ;----------------------------------------------------------------------------- ; $C860: load_reu - Fetch app from REU and run (32 bytes) @@ -777,30 +802,20 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A ;----------------------------------------------------------------------------- ; $C880: preload - Load to REU, return to launcher ; Called via JSR $C809 -; DEBUG: writes markers to $C007-$C00C ;----------------------------------------------------------------------------- -.byte $A9, $AA ; LDA #$AA (170 = "preload entered") -.byte $8D, $07, $C0 ; STA $C007 - -.byte $A9, $00 ; LDA #0 (bank 0) +.byte $A9, $00 ; LDA #0 (launcher token -> ReadyOS bank) .byte $20, $E0, $C8 ; JSR stash_to_bank ($C8E0) -.byte $A9, $BB ; LDA #$BB (187 = "launcher stashed") -.byte $8D, $08, $C0 ; STA $C008 - .byte $AD, $21, $C8 ; LDA $C821 (len) .byte $A2, $24 ; LDX #$24 .byte $A0, $C8 ; LDY #$C8 (filename at $C824) .byte $20, $BD, $FF ; JSR SETNAM .byte $A9, $00 ; LDA #0 -.byte $A2, $08 ; LDX #8 +.byte $AE, $39, $C8 ; LDX $C839 (storage drive) .byte $A0, $01 ; LDY #1 .byte $20, $BA, $FF ; JSR SETLFS -.byte $A9, $CC ; LDA #$CC (204 = "about to LOAD") -.byte $8D, $09, $C0 ; STA $C009 - .byte $A9, $00 ; LDA #0 .byte $20, $D5, $FF ; JSR LOAD @@ -810,22 +825,20 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $AD, $20, $C8 ; LDA $C820 (target bank) .byte $20, $E0, $C8 ; JSR stash_to_bank ($C8E0) -.byte $A9, $EE ; LDA #$EE (238 = "app stashed") -.byte $8D, $0B, $C0 ; STA $C00B - .byte $AD, $20, $C8 ; LDA $C820 (target bank) -.byte $20, $C0, $C9 ; JSR set_bitmap ($C9C0) +.byte $20, $C0, $C9 ; JSR mark_loaded ($C9C0) .byte $A9, $00 ; LDA #0 .byte $20, $F0, $C8 ; JSR fetch_bank ($C8F0) -.byte $A9, $FF ; LDA #$FF (255 = "launcher restored") -.byte $8D, $0C, $C0 ; STA $C00C - .byte $60 ; RTS -.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00,$00,$00,$00,$00 +.byte $00,$00 ;----------------------------------------------------------------------------- ; $C8E0: stash_to_bank - Stash $1000-$C5FF to REU bank in A (16 bytes) @@ -846,7 +859,7 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $00,$00,$00,$00,$00,$00,$00 ;----------------------------------------------------------------------------- -; Page 2: $C900-$C9FF - Main routines +; Page 4: $C900-$C9FF - Main routines ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- @@ -855,7 +868,7 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $AD, $34, $C8 ; LDA $C834 (current bank) .byte $20, $E0, $C8 ; JSR stash_to_bank ($C8E0) .byte $AD, $34, $C8 ; LDA $C834 (current bank) -.byte $20, $C0, $C9 ; JSR set_bitmap ($C9C0) +.byte $20, $C0, $C9 ; JSR mark_loaded ($C9C0) .byte $AD, $34, $C8 ; LDA $C834 .byte $8D, $35, $C8 ; STA $C835 .byte $A9, $00 ; LDA #0 @@ -875,7 +888,7 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $AD, $34, $C8 ; LDA $C834 (current bank) .byte $20, $E0, $C8 ; JSR stash_to_bank ($C8E0) .byte $AD, $34, $C8 ; LDA $C834 (current bank) -.byte $20, $C0, $C9 ; JSR set_bitmap ($C9C0) +.byte $20, $C0, $C9 ; JSR mark_loaded ($C9C0) .byte $AD, $20, $C8 ; LDA $C820 (target bank) .byte $20, $F0, $C8 ; JSR fetch_bank ($C8F0) .byte $AD, $20, $C8 ; LDA $C820 @@ -884,13 +897,11 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $00,$00,$00,$00,$00 ;----------------------------------------------------------------------------- -; $C960: reu_setup_logical - Resolve logical token via REU bank 0, then setup regs +; $C960: reu_setup_logical - Resolve token via the ReadyOS bank, then setup regs ;----------------------------------------------------------------------------- .byte $C9, $00 ; CMP #0 (logical launcher bank?) -.byte $D0, $09 ; BNE lookup_app_bank -.byte $AD, $3B, $C8 ; LDA $C83B (reu_bank_skip) -.byte $18 ; CLC -.byte $69, $01 ; ADC #$01 (launcher is Start+1) +.byte $D0, $06 ; BNE lookup_app_bank +.byte $AD, $3B, $C8 ; LDA $C83B (ReadyOS bank contains launcher) .byte $4C, $A0, $C9 ; JMP reu_setup ($C9A0) .byte $AA ; lookup_app_bank: TAX (preserve logical token) .byte $A9, $3D ; LDA #<$C83D @@ -898,9 +909,12 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $A9, $C8 ; LDA #>$C83D .byte $8D, $03, $DF ; STA $DF03 (C64 addr hi) .byte $8A ; TXA -.byte $8D, $04, $DF ; STA $DF04 (REU offset lo = logical token) -.byte $A9, $2F ; LDA #$2F -.byte $8D, $05, $DF ; STA $DF05 (REU offset hi = lookup page) +.byte $18 ; CLC +.byte $69, $40 ; ADC #<$B740 (mapping offset + token) +.byte $8D, $04, $DF ; STA $DF04 (REU offset lo) +.byte $A9, $B7 ; LDA #>$B740 +.byte $69, $00 ; ADC #0 (include low-byte carry) +.byte $8D, $05, $DF ; STA $DF05 (REU offset hi) .byte $AD, $3B, $C8 ; LDA $C83B (ReadyOS global physical bank) .byte $8D, $06, $DF ; STA $DF06 .byte $A9, $01 ; LDA #1 @@ -911,7 +925,7 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $8D, $01, $DF ; STA $DF01 - fetch physical bank byte .byte $AD, $3D, $C8 ; LDA $C83D (resolved physical bank) .byte $4C, $A0, $C9 ; JMP reu_setup ($C9A0) -.byte $00,$00,$00,$00 ; Padding to $C9A0 +.byte $00,$00 ; Padding to $C9A0 ;----------------------------------------------------------------------------- ; $C9A0: reu_setup - Set up REU registers for $B600 transfer at $1000 @@ -931,44 +945,35 @@ jt_fetch_bank = $C815 ; Helper: fetch from bank in A .byte $00,$00 ;----------------------------------------------------------------------------- -; $C9C0: set_bitmap - Set bit for bank in A in reu_bitmap ($C836-$C838) +; $C9C0: mark_loaded - Commit token status after a successful snapshot stash +; A = logical token. Status $07 means valid, loaded, and resumable. ;----------------------------------------------------------------------------- -.byte $C9, $18 ; CMP #$18 (only banks 0-23 are tracked) -.byte $B0, $17 ; BCS done -.byte $AA ; TAX - preserve full bank -.byte $29, $07 ; AND #$07 - bit index within byte -.byte $A8 ; TAY - Y = bit index -.byte $8A ; TXA - restore full bank -.byte $4A ; LSR A -.byte $4A ; LSR A -.byte $4A ; LSR A -.byte $AA ; TAX - X = byte offset 0..2 -.byte $A9, $01 ; LDA #$01 -.byte $88 ; DEY -.byte $30, $03 ; BMI store_bit -.byte $0A ; ASL A -.byte $10, $FA ; BPL shift_loop -.byte $1D, $36, $C8 ; ORA $C836,X -.byte $9D, $36, $C8 ; STA $C836,X -.byte $60 ; RTS -.byte $00,$00,$00,$00 - -;----------------------------------------------------------------------------- -; $C9E0: log_byte - Write debug marker to buffer at $C980 -;----------------------------------------------------------------------------- -.byte $48 ; PHA - save the byte to log -.byte $8E, $FC, $00 ; STX $00FC - save X to ZP temp -.byte $AE, $3A, $C8 ; LDX $C83A - get log_index -.byte $68 ; PLA - get byte back -.byte $9D, $80, $C9 ; STA $C980,X - write to buffer -.byte $E8 ; INX - increment index -.byte $E0, $20 ; CPX #$20 - wrap at 32 -.byte $D0, $02 ; BNE +2 (skip reset) -.byte $A2, $00 ; LDX #$00 - reset to 0 -.byte $8E, $3A, $C8 ; STX $C83A - store new index -.byte $AE, $FC, $00 ; LDX $00FC - restore X +.byte $8D, $3E, $C8 ; STA $C83E (preserve token) +.byte $A9, $07 ; LDA #VALID|LOADED|RESUMABLE +.byte $8D, $3D, $C8 ; STA $C83D +.byte $A9, $3D ; C64 source = $C83D +.byte $8D, $02, $DF +.byte $A9, $C8 +.byte $8D, $03, $DF +.byte $AD, $3E, $C8 ; token +.byte $18 ; CLC +.byte $69, $40 ; + <$B840 (token status table) +.byte $8D, $04, $DF +.byte $A9, $B8 ; >$B840 +.byte $69, $00 ; include low-byte carry +.byte $8D, $05, $DF +.byte $AD, $3B, $C8 ; ReadyOS physical bank +.byte $8D, $06, $DF +.byte $A9, $01 ; one byte +.byte $8D, $07, $DF +.byte $A9, $00 +.byte $8D, $08, $DF +.byte $A9, $90 ; STASH C64 byte to ReadyOS bank +.byte $8D, $01, $DF +.byte $AD, $3E, $C8 ; preserve caller-visible token in A .byte $60 ; RTS -.byte $00,$00,$00,$00,$00,$00,$00 +.byte $00,$00,$00,$00 ; reserved through $C9FE +.byte $60 ; $C9FF: compatibility no-op RTS ``` ### Implemented Logical Bank 0 Layout diff --git a/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/README.md b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/README.md new file mode 100644 index 0000000..9860dc1 --- /dev/null +++ b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/README.md @@ -0,0 +1,79 @@ +# precog (kung fu flash 2 d81) + +- Release Line: `0.2.4` +- Artifact Build: `0.2.4` +- Kind: `kung-fu-flash-2-d81` + +## Why This Variant Exists + +- Full-content single-D81 profile tuned for Kung Fu Flash 2 disk loading with a 1MB REU and no skipped REU banks. + +## Artifacts + +- Drive 8: `readyos-v0.2.4-kung-fu-flash-2-d81.d81` +- Host-Side Boot PRG: `readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.4-kung-fu-flash-2-d81-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 8: `calcplus` - calc plus +- Drive 8: `hexview` - hex viewer +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer +- Drive 8: `dizzy` - dizzy kanban +- Drive 8: `readyirc` - readyirc +- Drive 8: `ucitest` - uci tester +- Drive 8: `rirc-rrnet` - readyirc rrnet +- Drive 8: `readme` - read.me + +## VICE Setup + +- Enable REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1581` and attach `readyos-v0.2.4-kung-fu-flash-2-d81.d81`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg` + +```sh +x64sc -reu -reusize 1024 -drive8type 1581 -devicebackend8 0 +busdevice8 -8 readyos-v0.2.4-kung-fu-flash-2-d81.d81 -autostart readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg +``` + +## 1MB REU Budget + +- This SKU is intentionally limited to `1MB` REU, which is `16` physical `64KB` REU banks. +- It uses `reu_bank_skip=0`, so ReadyOS can use all 16 physical banks instead of skipping the lower bank range used by the normal test profiles. +- Fresh launcher state uses `2` banks by default: bank `0` for ReadyOS control/global metadata and bank `1` for the launcher snapshot. That leaves `14` banks for suspended apps and app resources. +- Each suspended app normally costs `1` additional bank. +- ReadyShell costs `5` banks when loaded: `1` app snapshot bank, `3` overlay cache banks, and `1` state/scratch bank. With only ReadyShell loaded, expect about `7/16` banks in use. +- ReadyBasic costs `3` banks when loaded: `1` app snapshot bank plus `2` ReadyBasic core/code resource banks. With only ReadyBasic loaded, expect about `5/16` banks in use. +- ReadyShell and ReadyBasic loaded at the same time can use about `10/16` banks before any other suspended apps are counted. +- When REU Viewer or the launcher shows the 1MB REU getting close to full, unload suspended apps before launching more. Unloading frees their app snapshot and resource banks. +- If all REU banks are full, launching another app may simply do nothing instead of showing an error. Unload one or more apps to make room, then launch the app again. + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/help.md b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/help.md new file mode 100644 index 0000000..9860dc1 --- /dev/null +++ b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/help.md @@ -0,0 +1,79 @@ +# precog (kung fu flash 2 d81) + +- Release Line: `0.2.4` +- Artifact Build: `0.2.4` +- Kind: `kung-fu-flash-2-d81` + +## Why This Variant Exists + +- Full-content single-D81 profile tuned for Kung Fu Flash 2 disk loading with a 1MB REU and no skipped REU banks. + +## Artifacts + +- Drive 8: `readyos-v0.2.4-kung-fu-flash-2-d81.d81` +- Host-Side Boot PRG: `readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.4-kung-fu-flash-2-d81-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 8: `calcplus` - calc plus +- Drive 8: `hexview` - hex viewer +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer +- Drive 8: `dizzy` - dizzy kanban +- Drive 8: `readyirc` - readyirc +- Drive 8: `ucitest` - uci tester +- Drive 8: `rirc-rrnet` - readyirc rrnet +- Drive 8: `readme` - read.me + +## VICE Setup + +- Enable REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1581` and attach `readyos-v0.2.4-kung-fu-flash-2-d81.d81`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg` + +```sh +x64sc -reu -reusize 1024 -drive8type 1581 -devicebackend8 0 +busdevice8 -8 readyos-v0.2.4-kung-fu-flash-2-d81.d81 -autostart readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg +``` + +## 1MB REU Budget + +- This SKU is intentionally limited to `1MB` REU, which is `16` physical `64KB` REU banks. +- It uses `reu_bank_skip=0`, so ReadyOS can use all 16 physical banks instead of skipping the lower bank range used by the normal test profiles. +- Fresh launcher state uses `2` banks by default: bank `0` for ReadyOS control/global metadata and bank `1` for the launcher snapshot. That leaves `14` banks for suspended apps and app resources. +- Each suspended app normally costs `1` additional bank. +- ReadyShell costs `5` banks when loaded: `1` app snapshot bank, `3` overlay cache banks, and `1` state/scratch bank. With only ReadyShell loaded, expect about `7/16` banks in use. +- ReadyBasic costs `3` banks when loaded: `1` app snapshot bank plus `2` ReadyBasic core/code resource banks. With only ReadyBasic loaded, expect about `5/16` banks in use. +- ReadyShell and ReadyBasic loaded at the same time can use about `10/16` banks before any other suspended apps are counted. +- When REU Viewer or the launcher shows the 1MB REU getting close to full, unload suspended apps before launching more. Unloading frees their app snapshot and resource banks. +- If all REU banks are full, launching another app may simply do nothing instead of showing an error. Unload one or more apps to make room, then launch the app again. + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/helpme.md b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/helpme.md new file mode 100644 index 0000000..9860dc1 --- /dev/null +++ b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/helpme.md @@ -0,0 +1,79 @@ +# precog (kung fu flash 2 d81) + +- Release Line: `0.2.4` +- Artifact Build: `0.2.4` +- Kind: `kung-fu-flash-2-d81` + +## Why This Variant Exists + +- Full-content single-D81 profile tuned for Kung Fu Flash 2 disk loading with a 1MB REU and no skipped REU banks. + +## Artifacts + +- Drive 8: `readyos-v0.2.4-kung-fu-flash-2-d81.d81` +- Host-Side Boot PRG: `readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.4-kung-fu-flash-2-d81-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 8: `calcplus` - calc plus +- Drive 8: `hexview` - hex viewer +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer +- Drive 8: `dizzy` - dizzy kanban +- Drive 8: `readyirc` - readyirc +- Drive 8: `ucitest` - uci tester +- Drive 8: `rirc-rrnet` - readyirc rrnet +- Drive 8: `readme` - read.me + +## VICE Setup + +- Enable REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1581` and attach `readyos-v0.2.4-kung-fu-flash-2-d81.d81`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg` + +```sh +x64sc -reu -reusize 1024 -drive8type 1581 -devicebackend8 0 +busdevice8 -8 readyos-v0.2.4-kung-fu-flash-2-d81.d81 -autostart readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg +``` + +## 1MB REU Budget + +- This SKU is intentionally limited to `1MB` REU, which is `16` physical `64KB` REU banks. +- It uses `reu_bank_skip=0`, so ReadyOS can use all 16 physical banks instead of skipping the lower bank range used by the normal test profiles. +- Fresh launcher state uses `2` banks by default: bank `0` for ReadyOS control/global metadata and bank `1` for the launcher snapshot. That leaves `14` banks for suspended apps and app resources. +- Each suspended app normally costs `1` additional bank. +- ReadyShell costs `5` banks when loaded: `1` app snapshot bank, `3` overlay cache banks, and `1` state/scratch bank. With only ReadyShell loaded, expect about `7/16` banks in use. +- ReadyBasic costs `3` banks when loaded: `1` app snapshot bank plus `2` ReadyBasic core/code resource banks. With only ReadyBasic loaded, expect about `5/16` banks in use. +- ReadyShell and ReadyBasic loaded at the same time can use about `10/16` banks before any other suspended apps are counted. +- When REU Viewer or the launcher shows the 1MB REU getting close to full, unload suspended apps before launching more. Unloading frees their app snapshot and resource banks. +- If all REU banks are full, launching another app may simply do nothing instead of showing an error. Unload one or more apps to make room, then launch the app again. + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/manifest.json b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/manifest.json new file mode 100644 index 0000000..a7b0ff1 --- /dev/null +++ b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/manifest.json @@ -0,0 +1,158 @@ +{ + "id": "precog-kung-fu-flash-2-d81", + "display_name": "precog (kung fu flash 2 d81)", + "kind": "kung-fu-flash-2-d81", + "variant_boot_name": "precog kung fu flash 2 d81", + "version_text": "0.2.4", + "reu_size_kb": 1024, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-kung-fu-flash-2-d81.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-kung-fu-flash-2-d81/readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d81", + "vice_drive_type": "1581", + "true_drive": false, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-kung-fu-flash-2-d81/readyos-v0.2.4-kung-fu-flash-2-d81.d81" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-kung-fu-flash-2-d81/readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-kung-fu-flash-2-d81/readyos-v0.2.4-kung-fu-flash-2-d81-boot.prg" + } + ], + "apps": [ + { + "drive": 8, + "prg": "editor", + "label": "editor", + "desc": "text editor with clipboard" + }, + { + "drive": 8, + "prg": "readyshell", + "label": "readyshell (beta)", + "desc": "command shell poc scaffold" + }, + { + "drive": 8, + "prg": "simplefiles", + "label": "simple files", + "desc": "dual pane file manager and seq viewer" + }, + { + "drive": 8, + "prg": "clipmgr", + "label": "clipboard", + "desc": "manage clipboard items" + }, + { + "drive": 8, + "prg": "readybasic", + "label": "ready basic (alpha)", + "desc": "scoped basic v2 bridge poc" + }, + { + "drive": 8, + "prg": "cal26", + "label": "calendar 26", + "desc": "calendar for 2026 with appointments" + }, + { + "drive": 8, + "prg": "tasklist", + "label": "task list", + "desc": "outliner with notes and search" + }, + { + "drive": 8, + "prg": "reuviewer", + "label": "reu viewer", + "desc": "view reu memory usage" + }, + { + "drive": 8, + "prg": "sysinfo", + "label": "system info", + "desc": "system, reu, and ultimate status" + }, + { + "drive": 8, + "prg": "quicknotes", + "label": "quicknotes", + "desc": "reu-backed note editor" + }, + { + "drive": 8, + "prg": "calcplus", + "label": "calc plus", + "desc": "keyboard-first expression calculator" + }, + { + "drive": 8, + "prg": "hexview", + "label": "hex viewer", + "desc": "browse memory in hex format" + }, + { + "drive": 8, + "prg": "simplecells", + "label": "simple cells (alpha)", + "desc": "spreadsheet with formulas and colors" + }, + { + "drive": 8, + "prg": "game2048", + "label": "2048 game", + "desc": "2048 tile puzzle" + }, + { + "drive": 8, + "prg": "deminer", + "label": "deminer", + "desc": "minesweeper-style puzzle" + }, + { + "drive": 8, + "prg": "dizzy", + "label": "dizzy kanban", + "desc": "fizzy inspired kanban app" + }, + { + "drive": 8, + "prg": "readyirc", + "label": "readyirc", + "desc": "ultimate tcp irc client" + }, + { + "drive": 8, + "prg": "ucitest", + "label": "uci tester", + "desc": "ultimate command interface lab" + }, + { + "drive": 8, + "prg": "rirc-rrnet", + "label": "readyirc rrnet", + "desc": "rr-net tcp irc client" + }, + { + "drive": 8, + "prg": "readme", + "label": "read.me", + "desc": "readyos, ultimate buddy, precog poc os" + } + ] +} diff --git a/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/readyos-v0.2.4-kung-fu-flash-2-d81-boot.prg b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/readyos-v0.2.4-kung-fu-flash-2-d81-boot.prg new file mode 100644 index 0000000..a5f4eca Binary files /dev/null and b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/readyos-v0.2.4-kung-fu-flash-2-d81-boot.prg differ diff --git a/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/readyos-v0.2.4-kung-fu-flash-2-d81-preboot.prg differ diff --git a/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/readyos-v0.2.4-kung-fu-flash-2-d81.d81 b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/readyos-v0.2.4-kung-fu-flash-2-d81.d81 new file mode 100644 index 0000000..4bdc0d4 Binary files /dev/null and b/Releases/0.2.4/precog-kung-fu-flash-2-d81 2/readyos-v0.2.4-kung-fu-flash-2-d81.d81 differ diff --git a/Releases/0.2.4/readyos-v0.2.4-kung-fu-flash-2-d81.zip b/Releases/0.2.4/readyos-v0.2.4-kung-fu-flash-2-d81.zip new file mode 100644 index 0000000..f6b46f2 Binary files /dev/null and b/Releases/0.2.4/readyos-v0.2.4-kung-fu-flash-2-d81.zip differ diff --git a/Releases/0.2.5/README.md b/Releases/0.2.5/README.md new file mode 100644 index 0000000..40783da --- /dev/null +++ b/Releases/0.2.5/README.md @@ -0,0 +1,199 @@ +# ReadyOS 0.2.5 Release Guide + +ReadyOS PRECOG is an experimental REU-first environment for a modern Commodore +64 setup. Its long-term center of gravity is the new Commodore 64 Ultimate and +related Ultimate-family hardware, but it is intended to support a wide range of +C64 setups that have a reasonably large REU. This release line is organized as +multiple disk-image variants so the same ReadyOS runtime can fit different +real-world C64 environments without pretending every machine, cartridge, +loader, or emulator mounts the same media. + +- Public release line: `0.2.5` +- Current artifact build in this tree: `0.2.5Y` +- Main site: [readyos64.com](https://readyos64.com) +- Wiki / working knowledge base: [readyos.notion.site](https://readyos.notion.site) +- GitHub source and issues: [ReadyOS-C64/ReadyOs](https://github.com/ReadyOS-C64/ReadyOs) + +If this folder is distributed as a GitHub release or a packaged download, this +README is the landing page for the whole release line. The profile folders next +to it are the actual ReadyOS SKUs for different disk and drive constraints. + +The current public `0.2.5` release is still comparatively generic +rather than being explicitly tailored to the new C64 Ultimate. The next release +is expected to push further in that Ultimate-first direction while still trying +to stay usable on other REU-capable C64 setups. + +The source tree may also contain an experimental C64 Ultimate DOS DMA launcher +build. It is not implied by choosing a D81 SKU: normal public artifacts use the +portable disk path unless explicitly built with `LAUNCHER_DMA_LOAD=1`, and the +experimental path retains disk fallback. + +## What ReadyOS Is + +ReadyOS is not trying to be a generic desktop shell squeezed into a C64. It is +an opinionated, keyboard-first environment built around the idea that a modern +C64 workflow should feel immediate once the machine is up: + +- fast app switching instead of cold-starting every tool from BASIC +- suspend and resume across apps instead of constantly reloading state +- shared clipboard and common interaction patterns across tools +- full-screen, terminal-style apps that favor repeatable keyboard workflows +- REU-backed state so the machine can behave more like a ready workspace than a + single-program-at-a-time disk menu + +The current public release line is `0.2.5`. Full-content ReadyOS +profiles currently expose `16` launcher-visible apps, with +the exact app mix depending on the variant you choose. + +## Runtime And REU Contract + +- The active app snapshot is `$1000-$C5FF` (`$B600` bytes). The resident 1 KB + shim owns `$C600-$C9FF`; its public ABI remains at `$C800-$C9FF`. +- Physical REU bank `Skip` is the **ReadyOS bank** and is never allocated to an + app/resource. Physical `Skip+1` is the first dynamic bank. +- The ReadyOS bank contains the launcher snapshot at `$0000-$B5FF` and + schema-v5 mappings, status, clipboard, hotkeys, registry/catalog, audit, and + launcher runtime state at `$B600-$FFFF`. +- Logical app tokens resolve through the explicit `$B740` table; they are not + physical bank numbers and must not be converted with arithmetic. +- ReadyShell and ReadyBASIC resource banks are loader-assigned and recorded in + the ReadyOS bank. ReadyBASIC retains its custom ca65/ld65 compact-image shape. + +## Why There Are Multiple Variants + +The short answer is that C64 storage and loader realities are not uniform. + +ReadyOS wants to run on: + +- C64 Ultimate and Ultimate 64 setups +- VICE on modern desktops +- real C64 hardware with REU-capable cartridges or other REU-capable expansions +- THEC64 Mini and Maxi style workflows +- web C64 emulators and simplified loaders that may only mount a single `D64` + +Those environments differ in three important ways: + +1. Drive type support. + Some setups are happy with `1571` or `1581` style media, while others are + effectively limited to `1541` / `D64`. + +2. Number of simultaneously mounted images. + Some environments can keep two drives online all the time. Others can only + mount one disk image at once, which forces ReadyOS into smaller curated + subsets. + +3. REU path and convenience model. + ReadyOS is designed for an REU-capable path. VICE can emulate that cleanly, + Ultimate-family hardware can provide it directly, and some other modern + setups can approximate it well enough to be practical. But the storage SKU + still has to match the drive and media constraints of the environment. + +That is why this release line ships multiple folders instead of pretending one +image is universally correct. The runtime philosophy is shared. The disk-image +packaging changes to match the target. + +## Quick Recommendation By Environment + +- If you are on C64 Ultimate, Ultimate 64, or VICE and want the fullest, + easiest default: start with `precog-d81` or `precog-dual-d71`. +- If your setup wants the main local verification target and is comfortable with + two mounted `1571` drives: use `precog-dual-d71`. +- If your setup prefers one full-content image on a `1581` / `D81` path: use + `precog-d81`. +- If you only have `1541`-class compatibility but can mount two disks: use + `precog-dual-d64`. +- If you can only mount one `D64` at a time, especially in simpler emulators, + loaders, THEC64-style flows, or web environments: choose one of the solo + `D64` subsets based on the app group you care about. + +## Public Variant Matrix + +This release line currently has `9` public variants. + +| Folder | Media | Best Fit | Why It Exists | Boot | +| --- | --- | --- | --- | --- | +| `precog-dual-d71` | 2x `D71` on drives `8` and `9` | C64 Ultimate, Ultimate 64, or VICE setups that can keep two 1571-class drives mounted. | Default full-content profile for two 1571-class drives and the main local verification target. | `PREBOOT -> SETD71 -> BOOT` | +| `precog-d81` | 1x `D81` on drive `8` | C64 Ultimate, VICE, or other 1581-capable setups that prefer one full-content image. | Full-content single-disk profile for 1581 and D81 setups where the whole current app catalog fits on one image. | `PREBOOT -> BOOT` | +| `precog-kung-fu-flash-2-d81` | 1x `D81` on drive `8` | Kung Fu Flash 2 users who want one full-content D81 and the cartridge's 1MB REU mode instead of CRT cartridge mode. | Full-content single-D81 profile tuned for Kung Fu Flash 2 disk loading with a 1MB REU and no skipped REU banks. | `PREBOOT -> BOOT` | +| `precog-dual-d64` | 2x `D64` on drives `8` and `9` | Real or emulated 1541-only setups that can mount two disks but not D71 or D81 media. | Reduced dual-disk profile for 1541-class environments that can mount two D64 images but not higher-capacity media. | `PREBOOT -> BOOT` | +| `precog-solo-d64-a` | 1x `D64` on drive `8` | THEC64, web emulators, or simple loaders that can mount only one D64 at a time. | Single-D64 subset focused on editor, reference, and dizzy for one-disk-only environments. | `PREBOOT -> BOOT` | +| `precog-solo-d64-b` | 1x `D64` on drive `8` | THEC64, web emulators, or simple loaders that can mount only one D64 at a time. | Single-D64 productivity subset centered on quicknotes, clipboard, calculator, and files. | `PREBOOT -> BOOT` | +| `precog-solo-d64-c` | 1x `D64` on drive `8` | THEC64, web emulators, or simple loaders that can mount only one D64 at a time. | Single-D64 planning subset centered on tasklist, calendar, and REU viewer. | `PREBOOT -> BOOT` | +| `precog-solo-d64-d` | 1x `D64` on drive `8` | THEC64, web emulators, or simple loaders that can mount only one D64 at a time. | Single-D64 experimental subset for simple cells, calculator, 2048, and deminer. | `PREBOOT -> BOOT` | +| `precog-solo-d64-e` | 1x `D64` on drive `8` | THEC64, web emulators, or simple loaders that can mount only one D64 at a time. | Single-D64 shell-focused subset for readyshell and its overlay payloads in one-disk-only environments. | `PREBOOT -> BOOT` | + +## What The Release Root Contains + +The release line is centered on these public folders: + +- `precog-dual-d71/` +- `precog-d81/` +- `precog-kung-fu-flash-2-d81/` +- `precog-dual-d64/` +- `precog-solo-d64-a/` +- `precog-solo-d64-b/` +- `precog-solo-d64-c/` +- `precog-solo-d64-d/` +- `precog-solo-d64-e/` + +Depending on whether a local workflow built one profile or all profiles, a +working tree may not contain every folder until the full multi-profile build has +been run. The intended GitHub release layout is this shared root README plus the +variant folders that carry the actual images, boot PRGs, `manifest.json`, and +per-variant `help.md` / `helpme.md`. + +## How To Think About The Variants + +The variants are not random repacks. They are different answers to the same +question: "What is the best ReadyOS shape for this storage environment?" + +- `precog-dual-d71` is the broadest "mainline" profile when two `1571`-class + drives are available. It remains the primary local verification target. +- `precog-d81` is the cleanest single-image full-content option when `1581` + support is available. +- `precog-dual-d64` exists because many C64-adjacent environments still top out + at `D64`, but can at least keep two images mounted. +- The solo `D64` variants exist for the environments that cannot do more than + one `D64` at a time. Instead of forcing a bloated or broken one-disk build, + ReadyOS splits into intentional subsets. + +That last category matters more than it may seem. A web emulator that only +mounts one `D64` is a very different target from VICE on a desktop with REU and +multiple virtual drives. THEC64 Mini / Maxi style workflows can also be more +pleasant with smaller, direct, single-image choices. A release that pretends all +of those paths are identical would be harder to understand and harder to boot. + +## REU Expectation + +ReadyOS is still an REU-first environment. The disk-image variants solve storage +shape, not the absence of an REU-capable path. + +Recommended baseline: + +- enable the REU +- use at least `1MB`; use `8MB` or `16MB` where the environment supports it +- treat VICE and Ultimate-family hardware as the smoothest targets today + +On real C64 hardware, the exact cartridge or expansion path can vary. The main +question is not the brand of REU-capable device, but whether the setup can +deliver the REU behavior the runtime expects and whether the chosen media SKU +matches the drive constraints of that setup. + +## Debug Variants + +This release line also ships debug-trace variants for ReadyShell development: `precog-d81-rsdebug`, `precog-dual-d71-rsdebug`, `precog-solo-d64-e-rsdebug`. They are intended for debugging and instrumentation, not as the default end-user choice. + +If you are just trying to run ReadyOS, prefer the non-debug variants first. + +## Where To Go Next + +- Start with the variant folder that matches your environment. +- Read that folder's `helpme.md` for exact boot and VICE setup details. +- Use [readyos64.com](https://readyos64.com) as the public front door. +- Use [readyos.notion.site](https://readyos.notion.site) for the more wiki-like working docs. +- Use [GitHub](https://github.com/ReadyOS-C64/ReadyOs) for source, issues, and future packaged releases. + +ReadyOS `0.2.5` is still explicitly experimental, but the purpose +of this release layout is simple: make it easier to pick the right image for the +hardware or emulator in front of you, instead of assuming every C64 environment +looks the same. diff --git a/Releases/0.2.5/precog-d81-rsdebug/help.md b/Releases/0.2.5/precog-d81-rsdebug/help.md new file mode 100644 index 0000000..7ea69b3 --- /dev/null +++ b/Releases/0.2.5/precog-d81-rsdebug/help.md @@ -0,0 +1,68 @@ +# precog (d81, readyshell debug trace) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `d81` + +## Why This Variant Exists + +- Full-content single-disk profile for 1581 and D81 setups where the whole current app catalog fits on one image. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-d81.d81` +- Host-Side Boot PRG: `readyos-v0.2.5y-d81-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-d81-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 8: `calcplus` - calc plus +- Drive 8: `hexview` - hex viewer +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer +- Drive 8: `dizzy` - dizzy kanban +- Drive 8: `readyirc` - readyirc +- Drive 8: `ucitest` - uci tester +- Drive 8: `rirc-rrnet` - readyirc rrnet +- Drive 8: `readme` - read.me + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1581` with true drive enabled and attach `readyos-v0.2.5y-d81.d81`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-d81-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1581 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-d81.d81 -autostart readyos-v0.2.5y-d81-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-d81-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-d81-rsdebug/helpme.md b/Releases/0.2.5/precog-d81-rsdebug/helpme.md new file mode 100644 index 0000000..7ea69b3 --- /dev/null +++ b/Releases/0.2.5/precog-d81-rsdebug/helpme.md @@ -0,0 +1,68 @@ +# precog (d81, readyshell debug trace) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `d81` + +## Why This Variant Exists + +- Full-content single-disk profile for 1581 and D81 setups where the whole current app catalog fits on one image. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-d81.d81` +- Host-Side Boot PRG: `readyos-v0.2.5y-d81-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-d81-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 8: `calcplus` - calc plus +- Drive 8: `hexview` - hex viewer +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer +- Drive 8: `dizzy` - dizzy kanban +- Drive 8: `readyirc` - readyirc +- Drive 8: `ucitest` - uci tester +- Drive 8: `rirc-rrnet` - readyirc rrnet +- Drive 8: `readme` - read.me + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1581` with true drive enabled and attach `readyos-v0.2.5y-d81.d81`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-d81-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1581 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-d81.d81 -autostart readyos-v0.2.5y-d81-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-d81-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-d81-rsdebug/manifest.json b/Releases/0.2.5/precog-d81-rsdebug/manifest.json new file mode 100644 index 0000000..f96a553 --- /dev/null +++ b/Releases/0.2.5/precog-d81-rsdebug/manifest.json @@ -0,0 +1,158 @@ +{ + "id": "precog-d81-rsdebug", + "display_name": "precog (d81, readyshell debug trace)", + "kind": "d81", + "variant_boot_name": "precog d81", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-d81.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d81", + "vice_drive_type": "1581", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81.d81" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81-boot.prg" + } + ], + "apps": [ + { + "drive": 8, + "prg": "editor", + "label": "editor", + "desc": "text editor with clipboard" + }, + { + "drive": 8, + "prg": "readyshell", + "label": "readyshell (beta)", + "desc": "command shell poc scaffold" + }, + { + "drive": 8, + "prg": "simplefiles", + "label": "simple files", + "desc": "dual pane file manager and seq viewer" + }, + { + "drive": 8, + "prg": "clipmgr", + "label": "clipboard", + "desc": "manage clipboard items" + }, + { + "drive": 8, + "prg": "readybasic", + "label": "ready basic (alpha)", + "desc": "scoped basic v2 bridge poc" + }, + { + "drive": 8, + "prg": "cal26", + "label": "calendar 26", + "desc": "calendar for 2026 with appointments" + }, + { + "drive": 8, + "prg": "tasklist", + "label": "task list", + "desc": "outliner with notes and search" + }, + { + "drive": 8, + "prg": "reuviewer", + "label": "reu viewer", + "desc": "view reu memory usage" + }, + { + "drive": 8, + "prg": "sysinfo", + "label": "system info", + "desc": "system, reu, and ultimate status" + }, + { + "drive": 8, + "prg": "quicknotes", + "label": "quicknotes", + "desc": "reu-backed note editor" + }, + { + "drive": 8, + "prg": "calcplus", + "label": "calc plus", + "desc": "keyboard-first expression calculator" + }, + { + "drive": 8, + "prg": "hexview", + "label": "hex viewer", + "desc": "browse memory in hex format" + }, + { + "drive": 8, + "prg": "simplecells", + "label": "simple cells (alpha)", + "desc": "spreadsheet with formulas and colors" + }, + { + "drive": 8, + "prg": "game2048", + "label": "2048 game", + "desc": "2048 tile puzzle" + }, + { + "drive": 8, + "prg": "deminer", + "label": "deminer", + "desc": "minesweeper-style puzzle" + }, + { + "drive": 8, + "prg": "dizzy", + "label": "dizzy kanban", + "desc": "fizzy inspired kanban app" + }, + { + "drive": 8, + "prg": "readyirc", + "label": "readyirc", + "desc": "ultimate tcp irc client" + }, + { + "drive": 8, + "prg": "ucitest", + "label": "uci tester", + "desc": "ultimate command interface lab" + }, + { + "drive": 8, + "prg": "rirc-rrnet", + "label": "readyirc rrnet", + "desc": "rr-net tcp irc client" + }, + { + "drive": 8, + "prg": "readme", + "label": "read.me", + "desc": "readyos, ultimate buddy, precog poc os" + } + ] +} diff --git a/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5i-d81-boot.prg b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5i-d81-boot.prg new file mode 100644 index 0000000..198a89e Binary files /dev/null and b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5i-d81-boot.prg differ diff --git a/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5i-d81-preboot.prg b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5i-d81-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5i-d81-preboot.prg differ diff --git a/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5i-d81.d81 b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5i-d81.d81 new file mode 100644 index 0000000..b4a64c9 Binary files /dev/null and b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5i-d81.d81 differ diff --git a/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81-boot.prg b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81-boot.prg new file mode 100644 index 0000000..5477a72 Binary files /dev/null and b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81-boot.prg differ diff --git a/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81-preboot.prg b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81-preboot.prg differ diff --git a/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81.d81 b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81.d81 new file mode 100644 index 0000000..843e3cd Binary files /dev/null and b/Releases/0.2.5/precog-d81-rsdebug/readyos-v0.2.5y-d81.d81 differ diff --git a/Releases/0.2.5/precog-d81/help.md b/Releases/0.2.5/precog-d81/help.md new file mode 100644 index 0000000..f0b1a5c --- /dev/null +++ b/Releases/0.2.5/precog-d81/help.md @@ -0,0 +1,68 @@ +# precog (d81) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `d81` + +## Why This Variant Exists + +- Full-content single-disk profile for 1581 and D81 setups where the whole current app catalog fits on one image. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-d81.d81` +- Host-Side Boot PRG: `readyos-v0.2.5y-d81-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-d81-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 8: `calcplus` - calc plus +- Drive 8: `hexview` - hex viewer +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer +- Drive 8: `dizzy` - dizzy kanban +- Drive 8: `readyirc` - readyirc +- Drive 8: `ucitest` - uci tester +- Drive 8: `rirc-rrnet` - readyirc rrnet +- Drive 8: `readme` - read.me + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1581` with true drive enabled and attach `readyos-v0.2.5y-d81.d81`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-d81-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1581 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-d81.d81 -autostart readyos-v0.2.5y-d81-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-d81-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-d81/helpme.md b/Releases/0.2.5/precog-d81/helpme.md new file mode 100644 index 0000000..f0b1a5c --- /dev/null +++ b/Releases/0.2.5/precog-d81/helpme.md @@ -0,0 +1,68 @@ +# precog (d81) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `d81` + +## Why This Variant Exists + +- Full-content single-disk profile for 1581 and D81 setups where the whole current app catalog fits on one image. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-d81.d81` +- Host-Side Boot PRG: `readyos-v0.2.5y-d81-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-d81-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 8: `calcplus` - calc plus +- Drive 8: `hexview` - hex viewer +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer +- Drive 8: `dizzy` - dizzy kanban +- Drive 8: `readyirc` - readyirc +- Drive 8: `ucitest` - uci tester +- Drive 8: `rirc-rrnet` - readyirc rrnet +- Drive 8: `readme` - read.me + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1581` with true drive enabled and attach `readyos-v0.2.5y-d81.d81`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-d81-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1581 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-d81.d81 -autostart readyos-v0.2.5y-d81-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-d81-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-d81/manifest.json b/Releases/0.2.5/precog-d81/manifest.json new file mode 100644 index 0000000..d204d33 --- /dev/null +++ b/Releases/0.2.5/precog-d81/manifest.json @@ -0,0 +1,158 @@ +{ + "id": "precog-d81", + "display_name": "precog (d81)", + "kind": "d81", + "variant_boot_name": "precog d81", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-d81.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d81", + "vice_drive_type": "1581", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81.d81" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-boot.prg" + } + ], + "apps": [ + { + "drive": 8, + "prg": "editor", + "label": "editor", + "desc": "text editor with clipboard" + }, + { + "drive": 8, + "prg": "readyshell", + "label": "readyshell (beta)", + "desc": "command shell poc scaffold" + }, + { + "drive": 8, + "prg": "simplefiles", + "label": "simple files", + "desc": "dual pane file manager and seq viewer" + }, + { + "drive": 8, + "prg": "clipmgr", + "label": "clipboard", + "desc": "manage clipboard items" + }, + { + "drive": 8, + "prg": "readybasic", + "label": "ready basic (alpha)", + "desc": "scoped basic v2 bridge poc" + }, + { + "drive": 8, + "prg": "cal26", + "label": "calendar 26", + "desc": "calendar for 2026 with appointments" + }, + { + "drive": 8, + "prg": "tasklist", + "label": "task list", + "desc": "outliner with notes and search" + }, + { + "drive": 8, + "prg": "reuviewer", + "label": "reu viewer", + "desc": "view reu memory usage" + }, + { + "drive": 8, + "prg": "sysinfo", + "label": "system info", + "desc": "system, reu, and ultimate status" + }, + { + "drive": 8, + "prg": "quicknotes", + "label": "quicknotes", + "desc": "reu-backed note editor" + }, + { + "drive": 8, + "prg": "calcplus", + "label": "calc plus", + "desc": "keyboard-first expression calculator" + }, + { + "drive": 8, + "prg": "hexview", + "label": "hex viewer", + "desc": "browse memory in hex format" + }, + { + "drive": 8, + "prg": "simplecells", + "label": "simple cells (alpha)", + "desc": "spreadsheet with formulas and colors" + }, + { + "drive": 8, + "prg": "game2048", + "label": "2048 game", + "desc": "2048 tile puzzle" + }, + { + "drive": 8, + "prg": "deminer", + "label": "deminer", + "desc": "minesweeper-style puzzle" + }, + { + "drive": 8, + "prg": "dizzy", + "label": "dizzy kanban", + "desc": "fizzy inspired kanban app" + }, + { + "drive": 8, + "prg": "readyirc", + "label": "readyirc", + "desc": "ultimate tcp irc client" + }, + { + "drive": 8, + "prg": "ucitest", + "label": "uci tester", + "desc": "ultimate command interface lab" + }, + { + "drive": 8, + "prg": "rirc-rrnet", + "label": "readyirc rrnet", + "desc": "rr-net tcp irc client" + }, + { + "drive": 8, + "prg": "readme", + "label": "read.me", + "desc": "readyos, ultimate buddy, precog poc os" + } + ] +} diff --git a/Releases/0.2.5/precog-d81/readyos-v0.2.5i-d81-boot.prg b/Releases/0.2.5/precog-d81/readyos-v0.2.5i-d81-boot.prg new file mode 100644 index 0000000..198a89e Binary files /dev/null and b/Releases/0.2.5/precog-d81/readyos-v0.2.5i-d81-boot.prg differ diff --git a/Releases/0.2.5/precog-d81/readyos-v0.2.5i-d81-preboot.prg b/Releases/0.2.5/precog-d81/readyos-v0.2.5i-d81-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-d81/readyos-v0.2.5i-d81-preboot.prg differ diff --git a/Releases/0.2.5/precog-d81/readyos-v0.2.5i-d81.d81 b/Releases/0.2.5/precog-d81/readyos-v0.2.5i-d81.d81 new file mode 100644 index 0000000..c31adf7 Binary files /dev/null and b/Releases/0.2.5/precog-d81/readyos-v0.2.5i-d81.d81 differ diff --git a/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-boot.prg b/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-boot.prg new file mode 100644 index 0000000..5477a72 Binary files /dev/null and b/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-boot.prg differ diff --git a/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-preboot.prg b/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-preboot.prg differ diff --git a/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81.d81 b/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81.d81 new file mode 100644 index 0000000..844a3bf Binary files /dev/null and b/Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81.d81 differ diff --git a/Releases/0.2.5/precog-dual-d64/help.md b/Releases/0.2.5/precog-dual-d64/help.md new file mode 100644 index 0000000..6909ad9 --- /dev/null +++ b/Releases/0.2.5/precog-dual-d64/help.md @@ -0,0 +1,58 @@ +# precog (dual d64) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `dual-d64` + +## Why This Variant Exists + +- Reduced dual-disk profile for 1541-class environments that can mount two D64 images but not higher-capacity media. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-dual-d64_1.d64` +- Drive 9: `readyos-v0.2.5y-dual-d64_2.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d64-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d64-boot.prg` + +## Included Apps + +- Drive 9: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 9: `simplefiles` - simple files +- Drive 9: `clipmgr` - clipboard +- Drive 8: `cal26` - calendar 26 +- Drive 9: `tasklist` - task list +- Drive 8: `quicknotes` - quicknotes +- Drive 9: `calcplus` - calc plus + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-dual-d64_1.d64`. +- Configure drive 9 as `1541` with true drive enabled and attach `readyos-v0.2.5y-dual-d64_2.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-dual-d64-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-dual-d64_1.d64 -drive9type 1541 -drive9truedrive -devicebackend9 0 +busdevice9 -9 readyos-v0.2.5y-dual-d64_2.d64 -autostart readyos-v0.2.5y-dual-d64-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach all listed disks before boot, then autostart `readyos-v0.2.5y-dual-d64-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach all listed disk images to their matching drives before boot, then run `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-dual-d64/helpme.md b/Releases/0.2.5/precog-dual-d64/helpme.md new file mode 100644 index 0000000..6909ad9 --- /dev/null +++ b/Releases/0.2.5/precog-dual-d64/helpme.md @@ -0,0 +1,58 @@ +# precog (dual d64) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `dual-d64` + +## Why This Variant Exists + +- Reduced dual-disk profile for 1541-class environments that can mount two D64 images but not higher-capacity media. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-dual-d64_1.d64` +- Drive 9: `readyos-v0.2.5y-dual-d64_2.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d64-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d64-boot.prg` + +## Included Apps + +- Drive 9: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 9: `simplefiles` - simple files +- Drive 9: `clipmgr` - clipboard +- Drive 8: `cal26` - calendar 26 +- Drive 9: `tasklist` - task list +- Drive 8: `quicknotes` - quicknotes +- Drive 9: `calcplus` - calc plus + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-dual-d64_1.d64`. +- Configure drive 9 as `1541` with true drive enabled and attach `readyos-v0.2.5y-dual-d64_2.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-dual-d64-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-dual-d64_1.d64 -drive9type 1541 -drive9truedrive -devicebackend9 0 +busdevice9 -9 readyos-v0.2.5y-dual-d64_2.d64 -autostart readyos-v0.2.5y-dual-d64-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach all listed disks before boot, then autostart `readyos-v0.2.5y-dual-d64-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach all listed disk images to their matching drives before boot, then run `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-dual-d64/manifest.json b/Releases/0.2.5/precog-dual-d64/manifest.json new file mode 100644 index 0000000..2c5337d --- /dev/null +++ b/Releases/0.2.5/precog-dual-d64/manifest.json @@ -0,0 +1,94 @@ +{ + "id": "precog-dual-d64", + "display_name": "precog (dual d64)", + "kind": "dual-d64", + "variant_boot_name": "precog dual d64", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-dual-d64.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d64", + "vice_drive_type": "1541", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64_1.d64" + }, + { + "index": 2, + "drive": 9, + "image_type": "d64", + "vice_drive_type": "1541", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64_2.d64" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64-boot.prg" + } + ], + "apps": [ + { + "drive": 9, + "prg": "editor", + "label": "editor", + "desc": "text editor with clipboard" + }, + { + "drive": 8, + "prg": "readyshell", + "label": "readyshell (beta)", + "desc": "command shell poc scaffold" + }, + { + "drive": 9, + "prg": "simplefiles", + "label": "simple files", + "desc": "dual pane file manager and seq viewer" + }, + { + "drive": 9, + "prg": "clipmgr", + "label": "clipboard", + "desc": "manage clipboard items" + }, + { + "drive": 8, + "prg": "cal26", + "label": "calendar 26", + "desc": "calendar for 2026 with appointments" + }, + { + "drive": 9, + "prg": "tasklist", + "label": "task list", + "desc": "outliner with notes and search" + }, + { + "drive": 8, + "prg": "quicknotes", + "label": "quicknotes", + "desc": "reu-backed note editor" + }, + { + "drive": 9, + "prg": "calcplus", + "label": "calc plus", + "desc": "keyboard-first expression calculator" + } + ] +} diff --git a/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64-boot.prg b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64-boot.prg new file mode 100644 index 0000000..8ed8dff Binary files /dev/null and b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64-boot.prg differ diff --git a/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64-preboot.prg b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64-preboot.prg differ diff --git a/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64_1.d64 b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64_1.d64 new file mode 100644 index 0000000..3d1f005 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64_1.d64 differ diff --git a/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64_2.d64 b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64_2.d64 new file mode 100644 index 0000000..dc0fced Binary files /dev/null and b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5i-dual-d64_2.d64 differ diff --git a/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64-boot.prg b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64-boot.prg new file mode 100644 index 0000000..ca58320 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64-boot.prg differ diff --git a/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64-preboot.prg b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64-preboot.prg differ diff --git a/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64_1.d64 b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64_1.d64 new file mode 100644 index 0000000..0f544ef Binary files /dev/null and b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64_1.d64 differ diff --git a/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64_2.d64 b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64_2.d64 new file mode 100644 index 0000000..e194b1f Binary files /dev/null and b/Releases/0.2.5/precog-dual-d64/readyos-v0.2.5y-dual-d64_2.d64 differ diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/help.md b/Releases/0.2.5/precog-dual-d71-rsdebug/help.md new file mode 100644 index 0000000..38c037d --- /dev/null +++ b/Releases/0.2.5/precog-dual-d71-rsdebug/help.md @@ -0,0 +1,69 @@ +# precog (dual d71, readyshell debug trace) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `dual-d71` + +## Why This Variant Exists + +- Default full-content profile for two 1571-class drives and the main local verification target. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-dual-d71_1.d71` +- Drive 9: `readyos-v0.2.5y-dual-d71_2.d71` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-boot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-setd71.prg` + +## Included Apps + +- Drive 9: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 9: `simplefiles` - simple files +- Drive 9: `clipmgr` - clipboard +- Drive 9: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 9: `tasklist` - task list +- Drive 9: `reuviewer` - reu viewer +- Drive 9: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 9: `calcplus` - calc plus +- Drive 9: `hexview` - hex viewer +- Drive 9: `simplecells` - simple cells (alpha) +- Drive 9: `game2048` - 2048 game +- Drive 8: `dizzy` - dizzy kanban +- Drive 9: `readyirc` - readyirc +- `readme` is intentionally omitted from the dual-D71 variants to preserve disk space for app growth. + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1571` with true drive enabled and attach `readyos-v0.2.5y-dual-d71_1.d71`. +- Configure drive 9 as `1571` with true drive enabled and attach `readyos-v0.2.5y-dual-d71_2.d71`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-dual-d71-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1571 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-dual-d71_1.d71 -drive9type 1571 -drive9truedrive -devicebackend9 0 +busdevice9 -9 readyos-v0.2.5y-dual-d71_2.d71 -autostart readyos-v0.2.5y-dual-d71-preboot.prg +``` + +## Boot + +- This profile uses the dual-stage boot chain `PREBOOT -> SETD71 -> BOOT`. +- Both disks must already be attached before boot, and both drives must be configured as `1571`. +- `SETD71` is part of this variant and reasserts the dual-1571 setup before loading `BOOT`. +- In VICE, autostart `readyos-v0.2.5y-dual-d71-preboot.prg`, or manually run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach both disk images before boot and use `1571`-compatible drive assignments for the two-disk set. +- Boot with `LOAD "PREBOOT",8` then `RUN`; this variant then chains through `SETD71` before loading `BOOT`. + diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/helpme.md b/Releases/0.2.5/precog-dual-d71-rsdebug/helpme.md new file mode 100644 index 0000000..38c037d --- /dev/null +++ b/Releases/0.2.5/precog-dual-d71-rsdebug/helpme.md @@ -0,0 +1,69 @@ +# precog (dual d71, readyshell debug trace) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `dual-d71` + +## Why This Variant Exists + +- Default full-content profile for two 1571-class drives and the main local verification target. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-dual-d71_1.d71` +- Drive 9: `readyos-v0.2.5y-dual-d71_2.d71` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-boot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-setd71.prg` + +## Included Apps + +- Drive 9: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 9: `simplefiles` - simple files +- Drive 9: `clipmgr` - clipboard +- Drive 9: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 9: `tasklist` - task list +- Drive 9: `reuviewer` - reu viewer +- Drive 9: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 9: `calcplus` - calc plus +- Drive 9: `hexview` - hex viewer +- Drive 9: `simplecells` - simple cells (alpha) +- Drive 9: `game2048` - 2048 game +- Drive 8: `dizzy` - dizzy kanban +- Drive 9: `readyirc` - readyirc +- `readme` is intentionally omitted from the dual-D71 variants to preserve disk space for app growth. + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1571` with true drive enabled and attach `readyos-v0.2.5y-dual-d71_1.d71`. +- Configure drive 9 as `1571` with true drive enabled and attach `readyos-v0.2.5y-dual-d71_2.d71`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-dual-d71-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1571 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-dual-d71_1.d71 -drive9type 1571 -drive9truedrive -devicebackend9 0 +busdevice9 -9 readyos-v0.2.5y-dual-d71_2.d71 -autostart readyos-v0.2.5y-dual-d71-preboot.prg +``` + +## Boot + +- This profile uses the dual-stage boot chain `PREBOOT -> SETD71 -> BOOT`. +- Both disks must already be attached before boot, and both drives must be configured as `1571`. +- `SETD71` is part of this variant and reasserts the dual-1571 setup before loading `BOOT`. +- In VICE, autostart `readyos-v0.2.5y-dual-d71-preboot.prg`, or manually run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach both disk images before boot and use `1571`-compatible drive assignments for the two-disk set. +- Boot with `LOAD "PREBOOT",8` then `RUN`; this variant then chains through `SETD71` before loading `BOOT`. + diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/manifest.json b/Releases/0.2.5/precog-dual-d71-rsdebug/manifest.json new file mode 100644 index 0000000..86df447 --- /dev/null +++ b/Releases/0.2.5/precog-dual-d71-rsdebug/manifest.json @@ -0,0 +1,148 @@ +{ + "id": "precog-dual-d71-rsdebug", + "display_name": "precog (dual d71, readyshell debug trace)", + "kind": "dual-d71", + "variant_boot_name": "precog dual d71", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-dual-d71.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "setd71", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d71", + "vice_drive_type": "1571", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71_1.d71" + }, + { + "index": 2, + "drive": 9, + "image_type": "d71", + "vice_drive_type": "1571", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71_2.d71" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-boot.prg" + }, + { + "stem": "setd71", + "disk_name": "setd71", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/setd71.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-setd71.prg" + } + ], + "apps": [ + { + "drive": 9, + "prg": "editor", + "label": "editor", + "desc": "text editor with clipboard" + }, + { + "drive": 8, + "prg": "readyshell", + "label": "readyshell (beta)", + "desc": "command shell poc scaffold" + }, + { + "drive": 9, + "prg": "simplefiles", + "label": "simple files", + "desc": "dual pane file manager and seq viewer" + }, + { + "drive": 9, + "prg": "clipmgr", + "label": "clipboard", + "desc": "manage clipboard items" + }, + { + "drive": 9, + "prg": "readybasic", + "label": "ready basic (alpha)", + "desc": "scoped basic v2 bridge poc" + }, + { + "drive": 8, + "prg": "cal26", + "label": "calendar 26", + "desc": "calendar for 2026 with appointments" + }, + { + "drive": 9, + "prg": "tasklist", + "label": "task list", + "desc": "outliner with notes and search" + }, + { + "drive": 9, + "prg": "reuviewer", + "label": "reu viewer", + "desc": "view reu memory usage" + }, + { + "drive": 9, + "prg": "sysinfo", + "label": "system info", + "desc": "system, reu, and ultimate status" + }, + { + "drive": 8, + "prg": "quicknotes", + "label": "quicknotes", + "desc": "reu-backed note editor" + }, + { + "drive": 9, + "prg": "calcplus", + "label": "calc plus", + "desc": "keyboard-first expression calculator" + }, + { + "drive": 9, + "prg": "hexview", + "label": "hex viewer", + "desc": "browse memory in hex format" + }, + { + "drive": 9, + "prg": "simplecells", + "label": "simple cells (alpha)", + "desc": "spreadsheet with formulas and colors" + }, + { + "drive": 9, + "prg": "game2048", + "label": "2048 game", + "desc": "2048 tile puzzle" + }, + { + "drive": 8, + "prg": "dizzy", + "label": "dizzy kanban", + "desc": "fizzy inspired kanban app" + }, + { + "drive": 9, + "prg": "readyirc", + "label": "readyirc", + "desc": "ultimate tcp irc client" + } + ] +} diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71-boot.prg b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71-boot.prg new file mode 100644 index 0000000..74d5fd2 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71-boot.prg differ diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71-preboot.prg b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71-preboot.prg new file mode 100644 index 0000000..2567d06 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71-preboot.prg differ diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71-setd71.prg b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71-setd71.prg new file mode 100644 index 0000000..6c04d19 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71-setd71.prg differ diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71_1.d71 b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71_1.d71 new file mode 100644 index 0000000..cb595c3 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71_1.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71_2.d71 b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71_2.d71 new file mode 100644 index 0000000..efc942b Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5i-dual-d71_2.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-boot.prg b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-boot.prg new file mode 100644 index 0000000..7031154 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-boot.prg differ diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-preboot.prg b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-preboot.prg new file mode 100644 index 0000000..2567d06 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-preboot.prg differ diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-setd71.prg b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-setd71.prg new file mode 100644 index 0000000..6c04d19 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71-setd71.prg differ diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71_1.d71 b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71_1.d71 new file mode 100644 index 0000000..68534ed Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71_1.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71_2.d71 b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71_2.d71 new file mode 100644 index 0000000..7fb834c Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71-rsdebug/readyos-v0.2.5y-dual-d71_2.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71/help.md b/Releases/0.2.5/precog-dual-d71/help.md new file mode 100644 index 0000000..91e1c02 --- /dev/null +++ b/Releases/0.2.5/precog-dual-d71/help.md @@ -0,0 +1,69 @@ +# precog (dual d71) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `dual-d71` + +## Why This Variant Exists + +- Default full-content profile for two 1571-class drives and the main local verification target. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-dual-d71_1.d71` +- Drive 9: `readyos-v0.2.5y-dual-d71_2.d71` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-boot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-setd71.prg` + +## Included Apps + +- Drive 9: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 9: `simplefiles` - simple files +- Drive 9: `clipmgr` - clipboard +- Drive 9: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 9: `tasklist` - task list +- Drive 9: `reuviewer` - reu viewer +- Drive 9: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 9: `calcplus` - calc plus +- Drive 9: `hexview` - hex viewer +- Drive 9: `simplecells` - simple cells (alpha) +- Drive 9: `game2048` - 2048 game +- Drive 8: `dizzy` - dizzy kanban +- Drive 9: `readyirc` - readyirc +- `readme` is intentionally omitted from the dual-D71 variants to preserve disk space for app growth. + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1571` with true drive enabled and attach `readyos-v0.2.5y-dual-d71_1.d71`. +- Configure drive 9 as `1571` with true drive enabled and attach `readyos-v0.2.5y-dual-d71_2.d71`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-dual-d71-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1571 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-dual-d71_1.d71 -drive9type 1571 -drive9truedrive -devicebackend9 0 +busdevice9 -9 readyos-v0.2.5y-dual-d71_2.d71 -autostart readyos-v0.2.5y-dual-d71-preboot.prg +``` + +## Boot + +- This profile uses the dual-stage boot chain `PREBOOT -> SETD71 -> BOOT`. +- Both disks must already be attached before boot, and both drives must be configured as `1571`. +- `SETD71` is part of this variant and reasserts the dual-1571 setup before loading `BOOT`. +- In VICE, autostart `readyos-v0.2.5y-dual-d71-preboot.prg`, or manually run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach both disk images before boot and use `1571`-compatible drive assignments for the two-disk set. +- Boot with `LOAD "PREBOOT",8` then `RUN`; this variant then chains through `SETD71` before loading `BOOT`. + diff --git a/Releases/0.2.5/precog-dual-d71/helpme.md b/Releases/0.2.5/precog-dual-d71/helpme.md new file mode 100644 index 0000000..91e1c02 --- /dev/null +++ b/Releases/0.2.5/precog-dual-d71/helpme.md @@ -0,0 +1,69 @@ +# precog (dual d71) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `dual-d71` + +## Why This Variant Exists + +- Default full-content profile for two 1571-class drives and the main local verification target. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-dual-d71_1.d71` +- Drive 9: `readyos-v0.2.5y-dual-d71_2.d71` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-boot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-dual-d71-setd71.prg` + +## Included Apps + +- Drive 9: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 9: `simplefiles` - simple files +- Drive 9: `clipmgr` - clipboard +- Drive 9: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 9: `tasklist` - task list +- Drive 9: `reuviewer` - reu viewer +- Drive 9: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 9: `calcplus` - calc plus +- Drive 9: `hexview` - hex viewer +- Drive 9: `simplecells` - simple cells (alpha) +- Drive 9: `game2048` - 2048 game +- Drive 8: `dizzy` - dizzy kanban +- Drive 9: `readyirc` - readyirc +- `readme` is intentionally omitted from the dual-D71 variants to preserve disk space for app growth. + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1571` with true drive enabled and attach `readyos-v0.2.5y-dual-d71_1.d71`. +- Configure drive 9 as `1571` with true drive enabled and attach `readyos-v0.2.5y-dual-d71_2.d71`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-dual-d71-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1571 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-dual-d71_1.d71 -drive9type 1571 -drive9truedrive -devicebackend9 0 +busdevice9 -9 readyos-v0.2.5y-dual-d71_2.d71 -autostart readyos-v0.2.5y-dual-d71-preboot.prg +``` + +## Boot + +- This profile uses the dual-stage boot chain `PREBOOT -> SETD71 -> BOOT`. +- Both disks must already be attached before boot, and both drives must be configured as `1571`. +- `SETD71` is part of this variant and reasserts the dual-1571 setup before loading `BOOT`. +- In VICE, autostart `readyos-v0.2.5y-dual-d71-preboot.prg`, or manually run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach both disk images before boot and use `1571`-compatible drive assignments for the two-disk set. +- Boot with `LOAD "PREBOOT",8` then `RUN`; this variant then chains through `SETD71` before loading `BOOT`. + diff --git a/Releases/0.2.5/precog-dual-d71/manifest.json b/Releases/0.2.5/precog-dual-d71/manifest.json new file mode 100644 index 0000000..d1c681e --- /dev/null +++ b/Releases/0.2.5/precog-dual-d71/manifest.json @@ -0,0 +1,148 @@ +{ + "id": "precog-dual-d71", + "display_name": "precog (dual d71)", + "kind": "dual-d71", + "variant_boot_name": "precog dual d71", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-dual-d71.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "setd71", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d71", + "vice_drive_type": "1571", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71_1.d71" + }, + { + "index": 2, + "drive": 9, + "image_type": "d71", + "vice_drive_type": "1571", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71_2.d71" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-boot.prg" + }, + { + "stem": "setd71", + "disk_name": "setd71", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/setd71.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-setd71.prg" + } + ], + "apps": [ + { + "drive": 9, + "prg": "editor", + "label": "editor", + "desc": "text editor with clipboard" + }, + { + "drive": 8, + "prg": "readyshell", + "label": "readyshell (beta)", + "desc": "command shell poc scaffold" + }, + { + "drive": 9, + "prg": "simplefiles", + "label": "simple files", + "desc": "dual pane file manager and seq viewer" + }, + { + "drive": 9, + "prg": "clipmgr", + "label": "clipboard", + "desc": "manage clipboard items" + }, + { + "drive": 9, + "prg": "readybasic", + "label": "ready basic (alpha)", + "desc": "scoped basic v2 bridge poc" + }, + { + "drive": 8, + "prg": "cal26", + "label": "calendar 26", + "desc": "calendar for 2026 with appointments" + }, + { + "drive": 9, + "prg": "tasklist", + "label": "task list", + "desc": "outliner with notes and search" + }, + { + "drive": 9, + "prg": "reuviewer", + "label": "reu viewer", + "desc": "view reu memory usage" + }, + { + "drive": 9, + "prg": "sysinfo", + "label": "system info", + "desc": "system, reu, and ultimate status" + }, + { + "drive": 8, + "prg": "quicknotes", + "label": "quicknotes", + "desc": "reu-backed note editor" + }, + { + "drive": 9, + "prg": "calcplus", + "label": "calc plus", + "desc": "keyboard-first expression calculator" + }, + { + "drive": 9, + "prg": "hexview", + "label": "hex viewer", + "desc": "browse memory in hex format" + }, + { + "drive": 9, + "prg": "simplecells", + "label": "simple cells (alpha)", + "desc": "spreadsheet with formulas and colors" + }, + { + "drive": 9, + "prg": "game2048", + "label": "2048 game", + "desc": "2048 tile puzzle" + }, + { + "drive": 8, + "prg": "dizzy", + "label": "dizzy kanban", + "desc": "fizzy inspired kanban app" + }, + { + "drive": 9, + "prg": "readyirc", + "label": "readyirc", + "desc": "ultimate tcp irc client" + } + ] +} diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71-boot.prg b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71-boot.prg new file mode 100644 index 0000000..8f02db0 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71-boot.prg differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71-preboot.prg b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71-preboot.prg new file mode 100644 index 0000000..2567d06 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71-preboot.prg differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71-setd71.prg b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71-setd71.prg new file mode 100644 index 0000000..6c04d19 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71-setd71.prg differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71_1.d71 b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71_1.d71 new file mode 100644 index 0000000..c49fd3d Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71_1.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71_2.d71 b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71_2.d71 new file mode 100644 index 0000000..efc942b Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5j-dual-d71_2.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71-boot.prg b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71-boot.prg new file mode 100644 index 0000000..06e2bd0 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71-boot.prg differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71-preboot.prg b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71-preboot.prg new file mode 100644 index 0000000..2567d06 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71-preboot.prg differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71-setd71.prg b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71-setd71.prg new file mode 100644 index 0000000..6c04d19 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71-setd71.prg differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71_1.d71 b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71_1.d71 new file mode 100644 index 0000000..c999cee Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71_1.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71_2.d71 b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71_2.d71 new file mode 100644 index 0000000..efc81b9 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5k-dual-d71_2.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5l-dual-d71_1.d71 b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5l-dual-d71_1.d71 new file mode 100644 index 0000000..2eb667b Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5l-dual-d71_1.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5l-dual-d71_2.d71 b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5l-dual-d71_2.d71 new file mode 100644 index 0000000..2cad64f Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5l-dual-d71_2.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-boot.prg b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-boot.prg new file mode 100644 index 0000000..7031154 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-boot.prg differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-preboot.prg b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-preboot.prg new file mode 100644 index 0000000..2567d06 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-preboot.prg differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-setd71.prg b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-setd71.prg new file mode 100644 index 0000000..6c04d19 Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71-setd71.prg differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71_1.d71 b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71_1.d71 new file mode 100644 index 0000000..b57096b Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71_1.d71 differ diff --git a/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71_2.d71 b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71_2.d71 new file mode 100644 index 0000000..7fb834c Binary files /dev/null and b/Releases/0.2.5/precog-dual-d71/readyos-v0.2.5y-dual-d71_2.d71 differ diff --git a/Releases/0.2.5/precog-easyflash/help.md b/Releases/0.2.5/precog-easyflash/help.md new file mode 100644 index 0000000..9ffce02 --- /dev/null +++ b/Releases/0.2.5/precog-easyflash/help.md @@ -0,0 +1,12 @@ +# readyos easyflash + +- attach `readyos_easyflash.crt` as an easyflash cartridge +- mount `readyos_data.d64` on drive `8` +- enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available +- if an app snapshot preloaded from the cartridge is unloaded from REU, ReadyOS cannot load it again from the cartridge until you restart ReadyOS + +## vice example + +```sh +x64sc -reu -reusize 16384 -cartcrt readyos_easyflash.crt -drive8type 1541 -devicebackend8 0 +busdevice8 -8 readyos_data.d64 +``` diff --git a/Releases/0.2.5/precog-easyflash/helpme.md b/Releases/0.2.5/precog-easyflash/helpme.md new file mode 100644 index 0000000..9ffce02 --- /dev/null +++ b/Releases/0.2.5/precog-easyflash/helpme.md @@ -0,0 +1,12 @@ +# readyos easyflash + +- attach `readyos_easyflash.crt` as an easyflash cartridge +- mount `readyos_data.d64` on drive `8` +- enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available +- if an app snapshot preloaded from the cartridge is unloaded from REU, ReadyOS cannot load it again from the cartridge until you restart ReadyOS + +## vice example + +```sh +x64sc -reu -reusize 16384 -cartcrt readyos_easyflash.crt -drive8type 1541 -devicebackend8 0 +busdevice8 -8 readyos_data.d64 +``` diff --git a/Releases/0.2.5/precog-easyflash/layout.json b/Releases/0.2.5/precog-easyflash/layout.json new file mode 100644 index 0000000..03f5dd1 --- /dev/null +++ b/Releases/0.2.5/precog-easyflash/layout.json @@ -0,0 +1,428 @@ +{ + "reu_bank_skip": 32, + "launcher": { + "artifact": "bin/launcher_easyflash.prg", + "start_bank": 1, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 26977, + "checksum16": 29934 + }, + "apps": [ + { + "bank": 1, + "reu_bank": 33, + "prg": "editor", + "label": "editor", + "artifact": "bin/editor.prg", + "start_bank": 3, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 24518, + "checksum16": 16078, + "default_slot": 1, + "resource_set": 0 + }, + { + "bank": 2, + "reu_bank": 34, + "prg": "readyshell", + "label": "readyshell (beta)", + "artifact": "bin/readyshell_easyflash.prg", + "start_bank": 5, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 28037, + "checksum16": 2385, + "default_slot": 2, + "resource_set": 1 + }, + { + "bank": 3, + "reu_bank": 35, + "prg": "simplefiles", + "label": "simple files", + "artifact": "bin/simplefiles.prg", + "start_bank": 7, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 29755, + "checksum16": 54942, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 4, + "reu_bank": 36, + "prg": "clipmgr", + "label": "clipboard", + "artifact": "bin/clipmgr.prg", + "start_bank": 9, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 30893, + "checksum16": 56578, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 5, + "reu_bank": 37, + "prg": "readybasic", + "label": "ready basic (alpha)", + "artifact": "bin/readybasic.prg", + "start_bank": 11, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 28672, + "checksum16": 41909, + "default_slot": 3, + "resource_set": 2 + }, + { + "bank": 6, + "reu_bank": 38, + "prg": "cal26", + "label": "calendar 26", + "artifact": "bin/cal26.prg", + "start_bank": 13, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 32616, + "checksum16": 9689, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 7, + "reu_bank": 39, + "prg": "tasklist", + "label": "task list", + "artifact": "bin/tasklist.prg", + "start_bank": 15, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 31267, + "checksum16": 60758, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 8, + "reu_bank": 40, + "prg": "reuviewer", + "label": "reu viewer", + "artifact": "bin/reuviewer.prg", + "start_bank": 17, + "bank_span": 1, + "load_addr": 4096, + "payload_len": 15151, + "checksum16": 35503, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 9, + "reu_bank": 41, + "prg": "sysinfo", + "label": "system info", + "artifact": "bin/sysinfo.prg", + "start_bank": 18, + "bank_span": 1, + "load_addr": 4096, + "payload_len": 16231, + "checksum16": 55115, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 10, + "reu_bank": 42, + "prg": "quicknotes", + "label": "quicknotes", + "artifact": "bin/quicknotes.prg", + "start_bank": 19, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 31253, + "checksum16": 63323, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 11, + "reu_bank": 43, + "prg": "calcplus", + "label": "calc plus", + "artifact": "bin/calcplus.prg", + "start_bank": 21, + "bank_span": 3, + "load_addr": 4096, + "payload_len": 37521, + "checksum16": 15975, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 12, + "reu_bank": 44, + "prg": "hexview", + "label": "hex viewer", + "artifact": "bin/hexview.prg", + "start_bank": 24, + "bank_span": 1, + "load_addr": 4096, + "payload_len": 12839, + "checksum16": 26671, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 13, + "reu_bank": 45, + "prg": "simplecells", + "label": "simple cells (alpha)", + "artifact": "bin/simplecells.prg", + "start_bank": 25, + "bank_span": 3, + "load_addr": 4096, + "payload_len": 34950, + "checksum16": 64587, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 14, + "reu_bank": 46, + "prg": "game2048", + "label": "2048 game", + "artifact": "bin/game2048.prg", + "start_bank": 28, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 16884, + "checksum16": 45595, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 15, + "reu_bank": 47, + "prg": "sidetris", + "label": "sidetris", + "artifact": "bin/sidetris.prg", + "start_bank": 30, + "bank_span": 1, + "load_addr": 4096, + "payload_len": 15543, + "checksum16": 40474, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 16, + "reu_bank": 48, + "prg": "deminer", + "label": "deminer", + "artifact": "bin/deminer.prg", + "start_bank": 31, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 20224, + "checksum16": 19712, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 17, + "reu_bank": 49, + "prg": "dizzy", + "label": "dizzy kanban", + "artifact": "bin/dizzy.prg", + "start_bank": 33, + "bank_span": 3, + "load_addr": 4096, + "payload_len": 38685, + "checksum16": 45022, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 18, + "reu_bank": 50, + "prg": "readyirc", + "label": "readyirc", + "artifact": "bin/readyirc.prg", + "start_bank": 36, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 21929, + "checksum16": 61089, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 19, + "reu_bank": 51, + "prg": "ucitest", + "label": "uci tester", + "artifact": "bin/ucitest.prg", + "start_bank": 38, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 22591, + "checksum16": 3348, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 20, + "reu_bank": 52, + "prg": "rirc-rrnet", + "label": "readyirc rrnet", + "artifact": "bin/rirc-rrnet.prg", + "start_bank": 40, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 21505, + "checksum16": 17195, + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 21, + "reu_bank": 53, + "prg": "readme", + "label": "read.me", + "artifact": "bin/readme.prg", + "start_bank": 42, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 24151, + "checksum16": 12301, + "default_slot": 0, + "resource_set": 0 + } + ], + "overlays": [ + { + "name": "rsparser", + "artifact": "bin/rsparser.prg", + "start_bank": 44, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 13005, + "checksum16": 24021, + "reu_bank": 54, + "reu_off": 0, + "valid_bit": 1 + }, + { + "name": "rsvm", + "artifact": "bin/rsvm.prg", + "start_bank": 45, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 14028, + "checksum16": 19620, + "reu_bank": 54, + "reu_off": 14336, + "valid_bit": 2 + }, + { + "name": "rsdrvilst", + "artifact": "bin/rsdrvilst.prg", + "start_bank": 46, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 11258, + "checksum16": 52473, + "reu_bank": 54, + "reu_off": 28672, + "valid_bit": 4 + }, + { + "name": "rsldv", + "artifact": "bin/rsldv.prg", + "start_bank": 47, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 11894, + "checksum16": 62081, + "reu_bank": 55, + "reu_off": 0, + "valid_bit": 8 + }, + { + "name": "rsstv", + "artifact": "bin/rsstv.prg", + "start_bank": 48, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 10249, + "checksum16": 23078, + "reu_bank": 54, + "reu_off": 43008, + "valid_bit": 16 + }, + { + "name": "rsfops", + "artifact": "bin/rsfops.prg", + "start_bank": 49, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 14325, + "checksum16": 20202, + "reu_bank": 55, + "reu_off": 14336, + "valid_bit": 32 + }, + { + "name": "rscat", + "artifact": "bin/rscat.prg", + "start_bank": 50, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 8081, + "checksum16": 28204, + "reu_bank": 55, + "reu_off": 28672, + "valid_bit": 64 + }, + { + "name": "rscopy", + "artifact": "bin/rscopy.prg", + "start_bank": 51, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 6599, + "checksum16": 43284, + "reu_bank": 55, + "reu_off": 43008, + "valid_bit": 128 + }, + { + "name": "rsedit", + "artifact": "bin/rsedit.prg", + "start_bank": 52, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 2002, + "checksum16": 13, + "reu_bank": 56, + "reu_off": 0, + "valid_bit": 256 + } + ], + "readyshell_cache_banks": [ + 54, + 55, + 56 + ], + "readyshell_state_bank": 57, + "readybasic_banks": [ + 58, + 59 + ], + "last_used_bank": 52 +} diff --git a/Releases/0.2.5/precog-easyflash/manifest.json b/Releases/0.2.5/precog-easyflash/manifest.json new file mode 100644 index 0000000..ce634a6 --- /dev/null +++ b/Releases/0.2.5/precog-easyflash/manifest.json @@ -0,0 +1,301 @@ +{ + "id": "precog-easyflash", + "display_name": "precog easyflash", + "kind": "easyflash", + "version_text": "0.2.5Y", + "catalog_source": "cfg/flavors/readyos_easyflash.ini", + "artifacts": { + "crt": "Releases/0.2.5/precog-easyflash/readyos_easyflash.crt", + "data_disk": "Releases/0.2.5/precog-easyflash/readyos_data.d64", + "raw_bin": "Releases/0.2.5/precog-easyflash/readyos_easyflash.bin", + "layout": "Releases/0.2.5/precog-easyflash/layout.json" + }, + "apps": [ + { + "bank": 1, + "prg": "editor", + "label": "editor", + "desc": "text editor with clipboard", + "default_slot": 1, + "resource_set": 0 + }, + { + "bank": 2, + "prg": "readyshell", + "label": "readyshell (beta)", + "desc": "command shell poc scaffold", + "default_slot": 2, + "resource_set": 1 + }, + { + "bank": 3, + "prg": "simplefiles", + "label": "simple files", + "desc": "dual pane file manager and seq viewer", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 4, + "prg": "clipmgr", + "label": "clipboard", + "desc": "manage clipboard items", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 5, + "prg": "readybasic", + "label": "ready basic (alpha)", + "desc": "scoped basic v2 bridge poc", + "default_slot": 3, + "resource_set": 2 + }, + { + "bank": 6, + "prg": "cal26", + "label": "calendar 26", + "desc": "calendar for 2026 with appointments", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 7, + "prg": "tasklist", + "label": "task list", + "desc": "outliner with notes and search", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 8, + "prg": "reuviewer", + "label": "reu viewer", + "desc": "view reu memory usage", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 9, + "prg": "sysinfo", + "label": "system info", + "desc": "system, reu, and ultimate status", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 10, + "prg": "quicknotes", + "label": "quicknotes", + "desc": "reu-backed note editor", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 11, + "prg": "calcplus", + "label": "calc plus", + "desc": "keyboard-first expression calculator", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 12, + "prg": "hexview", + "label": "hex viewer", + "desc": "browse memory in hex format", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 13, + "prg": "simplecells", + "label": "simple cells (alpha)", + "desc": "spreadsheet with formulas and colors", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 14, + "prg": "game2048", + "label": "2048 game", + "desc": "2048 tile puzzle", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 15, + "prg": "sidetris", + "label": "sidetris", + "desc": "sideways tetris", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 16, + "prg": "deminer", + "label": "deminer", + "desc": "minesweeper-style puzzle", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 17, + "prg": "dizzy", + "label": "dizzy kanban", + "desc": "fizzy inspired kanban app", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 18, + "prg": "readyirc", + "label": "readyirc", + "desc": "ultimate tcp irc client", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 19, + "prg": "ucitest", + "label": "uci tester", + "desc": "ultimate command interface lab", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 20, + "prg": "rirc-rrnet", + "label": "readyirc rrnet", + "desc": "rr-net tcp irc client", + "default_slot": 0, + "resource_set": 0 + }, + { + "bank": 21, + "prg": "readme", + "label": "read.me", + "desc": "readyos, ultimate buddy, precog poc os", + "default_slot": 0, + "resource_set": 0 + } + ], + "launcher": { + "artifact": "bin/launcher_easyflash.prg", + "start_bank": 1, + "bank_span": 2, + "load_addr": 4096, + "payload_len": 26977, + "checksum16": 29934 + }, + "overlays": [ + { + "name": "rsparser", + "artifact": "bin/rsparser.prg", + "start_bank": 44, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 13005, + "checksum16": 24021, + "reu_bank": 54, + "reu_off": 0, + "valid_bit": 1 + }, + { + "name": "rsvm", + "artifact": "bin/rsvm.prg", + "start_bank": 45, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 14028, + "checksum16": 19620, + "reu_bank": 54, + "reu_off": 14336, + "valid_bit": 2 + }, + { + "name": "rsdrvilst", + "artifact": "bin/rsdrvilst.prg", + "start_bank": 46, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 11258, + "checksum16": 52473, + "reu_bank": 54, + "reu_off": 28672, + "valid_bit": 4 + }, + { + "name": "rsldv", + "artifact": "bin/rsldv.prg", + "start_bank": 47, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 11894, + "checksum16": 62081, + "reu_bank": 55, + "reu_off": 0, + "valid_bit": 8 + }, + { + "name": "rsstv", + "artifact": "bin/rsstv.prg", + "start_bank": 48, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 10249, + "checksum16": 23078, + "reu_bank": 54, + "reu_off": 43008, + "valid_bit": 16 + }, + { + "name": "rsfops", + "artifact": "bin/rsfops.prg", + "start_bank": 49, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 14325, + "checksum16": 20202, + "reu_bank": 55, + "reu_off": 14336, + "valid_bit": 32 + }, + { + "name": "rscat", + "artifact": "bin/rscat.prg", + "start_bank": 50, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 8081, + "checksum16": 28204, + "reu_bank": 55, + "reu_off": 28672, + "valid_bit": 64 + }, + { + "name": "rscopy", + "artifact": "bin/rscopy.prg", + "start_bank": 51, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 6599, + "checksum16": 43284, + "reu_bank": 55, + "reu_off": 43008, + "valid_bit": 128 + }, + { + "name": "rsedit", + "artifact": "bin/rsedit.prg", + "start_bank": 52, + "bank_span": 1, + "load_addr": 36352, + "payload_len": 2002, + "checksum16": 13, + "reu_bank": 56, + "reu_off": 0, + "valid_bit": 256 + } + ] +} diff --git a/agentworking/easyflash_focus_largevars/readyos_data.easyflash-vice.d64 b/Releases/0.2.5/precog-easyflash/readyos_data.d64 similarity index 100% rename from agentworking/easyflash_focus_largevars/readyos_data.easyflash-vice.d64 rename to Releases/0.2.5/precog-easyflash/readyos_data.d64 diff --git a/Releases/0.2.5/precog-easyflash/readyos_easyflash.bin b/Releases/0.2.5/precog-easyflash/readyos_easyflash.bin new file mode 100644 index 0000000..ab25a58 Binary files /dev/null and b/Releases/0.2.5/precog-easyflash/readyos_easyflash.bin differ diff --git a/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt b/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt new file mode 100644 index 0000000..2fd2b50 Binary files /dev/null and b/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt differ diff --git a/Releases/0.2.5/precog-kung-fu-flash-2-d81/README.md b/Releases/0.2.5/precog-kung-fu-flash-2-d81/README.md new file mode 100644 index 0000000..cac4f70 --- /dev/null +++ b/Releases/0.2.5/precog-kung-fu-flash-2-d81/README.md @@ -0,0 +1,80 @@ +# precog (kung fu flash 2 d81) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `kung-fu-flash-2-d81` + +## Why This Variant Exists + +- Full-content single-D81 profile tuned for Kung Fu Flash 2 disk loading with a 1MB REU and no skipped REU banks. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-kung-fu-flash-2-d81.d81` +- Host-Side Boot PRG: `readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-kung-fu-flash-2-d81-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 8: `calcplus` - calc plus +- Drive 8: `hexview` - hex viewer +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer +- Drive 8: `dizzy` - dizzy kanban +- Drive 8: `readyirc` - readyirc +- Drive 8: `ucitest` - uci tester +- Drive 8: `rirc-rrnet` - readyirc rrnet +- Drive 8: `readme` - read.me + +## VICE Setup + +- Enable REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1581` and attach `readyos-v0.2.5y-kung-fu-flash-2-d81.d81`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg` + +```sh +x64sc -reu -reusize 1024 -drive8type 1581 -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-kung-fu-flash-2-d81.d81 -autostart readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg +``` + +## 1MB REU Budget + +- This SKU is intentionally limited to `1MB` REU, which is `16` physical `64KB` REU banks. +- It uses `reu_bank_skip=0`, so ReadyOS can use all 16 physical banks instead of skipping the lower bank range used by the normal test profiles. +- Fresh launcher state uses `1` bank by default: bank `0` is the combined ReadyOS bank, holding both the launcher snapshot and schema-v5 system state. That leaves `15` banks for suspended apps and app resources. +- Each suspended app normally costs `1` additional bank. +- ReadyShell costs `5` additional banks when loaded: `1` app snapshot bank, `3` overlay cache banks, and `1` state/scratch bank. With only ReadyShell loaded, expect about `6/16` banks in use including the ReadyOS bank. +- ReadyBasic costs `3` additional banks when loaded: `1` app snapshot bank plus `2` ReadyBasic core/code resource banks. With only ReadyBasic loaded, expect about `4/16` banks in use including the ReadyOS bank. +- ReadyShell and ReadyBasic loaded at the same time can use about `9/16` banks including the ReadyOS bank, before any other suspended apps are counted. +- When REU Viewer or the launcher shows the 1MB REU getting close to full, unload suspended apps before launching more. Unloading frees their app snapshot and resource banks. +- If all REU banks are full, launching another app may simply do nothing instead of showing an error. Unload one or more apps to make room, then launch the app again. + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-kung-fu-flash-2-d81/help.md b/Releases/0.2.5/precog-kung-fu-flash-2-d81/help.md new file mode 100644 index 0000000..cac4f70 --- /dev/null +++ b/Releases/0.2.5/precog-kung-fu-flash-2-d81/help.md @@ -0,0 +1,80 @@ +# precog (kung fu flash 2 d81) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `kung-fu-flash-2-d81` + +## Why This Variant Exists + +- Full-content single-D81 profile tuned for Kung Fu Flash 2 disk loading with a 1MB REU and no skipped REU banks. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-kung-fu-flash-2-d81.d81` +- Host-Side Boot PRG: `readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-kung-fu-flash-2-d81-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 8: `calcplus` - calc plus +- Drive 8: `hexview` - hex viewer +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer +- Drive 8: `dizzy` - dizzy kanban +- Drive 8: `readyirc` - readyirc +- Drive 8: `ucitest` - uci tester +- Drive 8: `rirc-rrnet` - readyirc rrnet +- Drive 8: `readme` - read.me + +## VICE Setup + +- Enable REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1581` and attach `readyos-v0.2.5y-kung-fu-flash-2-d81.d81`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg` + +```sh +x64sc -reu -reusize 1024 -drive8type 1581 -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-kung-fu-flash-2-d81.d81 -autostart readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg +``` + +## 1MB REU Budget + +- This SKU is intentionally limited to `1MB` REU, which is `16` physical `64KB` REU banks. +- It uses `reu_bank_skip=0`, so ReadyOS can use all 16 physical banks instead of skipping the lower bank range used by the normal test profiles. +- Fresh launcher state uses `1` bank by default: bank `0` is the combined ReadyOS bank, holding both the launcher snapshot and schema-v5 system state. That leaves `15` banks for suspended apps and app resources. +- Each suspended app normally costs `1` additional bank. +- ReadyShell costs `5` additional banks when loaded: `1` app snapshot bank, `3` overlay cache banks, and `1` state/scratch bank. With only ReadyShell loaded, expect about `6/16` banks in use including the ReadyOS bank. +- ReadyBasic costs `3` additional banks when loaded: `1` app snapshot bank plus `2` ReadyBasic core/code resource banks. With only ReadyBasic loaded, expect about `4/16` banks in use including the ReadyOS bank. +- ReadyShell and ReadyBasic loaded at the same time can use about `9/16` banks including the ReadyOS bank, before any other suspended apps are counted. +- When REU Viewer or the launcher shows the 1MB REU getting close to full, unload suspended apps before launching more. Unloading frees their app snapshot and resource banks. +- If all REU banks are full, launching another app may simply do nothing instead of showing an error. Unload one or more apps to make room, then launch the app again. + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-kung-fu-flash-2-d81/helpme.md b/Releases/0.2.5/precog-kung-fu-flash-2-d81/helpme.md new file mode 100644 index 0000000..cac4f70 --- /dev/null +++ b/Releases/0.2.5/precog-kung-fu-flash-2-d81/helpme.md @@ -0,0 +1,80 @@ +# precog (kung fu flash 2 d81) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `kung-fu-flash-2-d81` + +## Why This Variant Exists + +- Full-content single-D81 profile tuned for Kung Fu Flash 2 disk loading with a 1MB REU and no skipped REU banks. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-kung-fu-flash-2-d81.d81` +- Host-Side Boot PRG: `readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-kung-fu-flash-2-d81-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `readyshell` - readyshell (beta) +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `readybasic` - ready basic (alpha) +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info +- Drive 8: `quicknotes` - quicknotes +- Drive 8: `calcplus` - calc plus +- Drive 8: `hexview` - hex viewer +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer +- Drive 8: `dizzy` - dizzy kanban +- Drive 8: `readyirc` - readyirc +- Drive 8: `ucitest` - uci tester +- Drive 8: `rirc-rrnet` - readyirc rrnet +- Drive 8: `readme` - read.me + +## VICE Setup + +- Enable REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1581` and attach `readyos-v0.2.5y-kung-fu-flash-2-d81.d81`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg` + +```sh +x64sc -reu -reusize 1024 -drive8type 1581 -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-kung-fu-flash-2-d81.d81 -autostart readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg +``` + +## 1MB REU Budget + +- This SKU is intentionally limited to `1MB` REU, which is `16` physical `64KB` REU banks. +- It uses `reu_bank_skip=0`, so ReadyOS can use all 16 physical banks instead of skipping the lower bank range used by the normal test profiles. +- Fresh launcher state uses `1` bank by default: bank `0` is the combined ReadyOS bank, holding both the launcher snapshot and schema-v5 system state. That leaves `15` banks for suspended apps and app resources. +- Each suspended app normally costs `1` additional bank. +- ReadyShell costs `5` additional banks when loaded: `1` app snapshot bank, `3` overlay cache banks, and `1` state/scratch bank. With only ReadyShell loaded, expect about `6/16` banks in use including the ReadyOS bank. +- ReadyBasic costs `3` additional banks when loaded: `1` app snapshot bank plus `2` ReadyBasic core/code resource banks. With only ReadyBasic loaded, expect about `4/16` banks in use including the ReadyOS bank. +- ReadyShell and ReadyBasic loaded at the same time can use about `9/16` banks including the ReadyOS bank, before any other suspended apps are counted. +- When REU Viewer or the launcher shows the 1MB REU getting close to full, unload suspended apps before launching more. Unloading frees their app snapshot and resource banks. +- If all REU banks are full, launching another app may simply do nothing instead of showing an error. Unload one or more apps to make room, then launch the app again. + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; this SKU targets KFF2's 1MB REU mode. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-kung-fu-flash-2-d81/manifest.json b/Releases/0.2.5/precog-kung-fu-flash-2-d81/manifest.json new file mode 100644 index 0000000..fcfcd19 --- /dev/null +++ b/Releases/0.2.5/precog-kung-fu-flash-2-d81/manifest.json @@ -0,0 +1,158 @@ +{ + "id": "precog-kung-fu-flash-2-d81", + "display_name": "precog (kung fu flash 2 d81)", + "kind": "kung-fu-flash-2-d81", + "variant_boot_name": "precog kung fu flash 2 d81", + "version_text": "0.2.5Y", + "reu_size_kb": 1024, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-kung-fu-flash-2-d81.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d81", + "vice_drive_type": "1581", + "true_drive": false, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81.d81" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81-boot.prg" + } + ], + "apps": [ + { + "drive": 8, + "prg": "editor", + "label": "editor", + "desc": "text editor with clipboard" + }, + { + "drive": 8, + "prg": "readyshell", + "label": "readyshell (beta)", + "desc": "command shell poc scaffold" + }, + { + "drive": 8, + "prg": "simplefiles", + "label": "simple files", + "desc": "dual pane file manager and seq viewer" + }, + { + "drive": 8, + "prg": "clipmgr", + "label": "clipboard", + "desc": "manage clipboard items" + }, + { + "drive": 8, + "prg": "readybasic", + "label": "ready basic (alpha)", + "desc": "scoped basic v2 bridge poc" + }, + { + "drive": 8, + "prg": "cal26", + "label": "calendar 26", + "desc": "calendar for 2026 with appointments" + }, + { + "drive": 8, + "prg": "tasklist", + "label": "task list", + "desc": "outliner with notes and search" + }, + { + "drive": 8, + "prg": "reuviewer", + "label": "reu viewer", + "desc": "view reu memory usage" + }, + { + "drive": 8, + "prg": "sysinfo", + "label": "system info", + "desc": "system, reu, and ultimate status" + }, + { + "drive": 8, + "prg": "quicknotes", + "label": "quicknotes", + "desc": "reu-backed note editor" + }, + { + "drive": 8, + "prg": "calcplus", + "label": "calc plus", + "desc": "keyboard-first expression calculator" + }, + { + "drive": 8, + "prg": "hexview", + "label": "hex viewer", + "desc": "browse memory in hex format" + }, + { + "drive": 8, + "prg": "simplecells", + "label": "simple cells (alpha)", + "desc": "spreadsheet with formulas and colors" + }, + { + "drive": 8, + "prg": "game2048", + "label": "2048 game", + "desc": "2048 tile puzzle" + }, + { + "drive": 8, + "prg": "deminer", + "label": "deminer", + "desc": "minesweeper-style puzzle" + }, + { + "drive": 8, + "prg": "dizzy", + "label": "dizzy kanban", + "desc": "fizzy inspired kanban app" + }, + { + "drive": 8, + "prg": "readyirc", + "label": "readyirc", + "desc": "ultimate tcp irc client" + }, + { + "drive": 8, + "prg": "ucitest", + "label": "uci tester", + "desc": "ultimate command interface lab" + }, + { + "drive": 8, + "prg": "rirc-rrnet", + "label": "readyirc rrnet", + "desc": "rr-net tcp irc client" + }, + { + "drive": 8, + "prg": "readme", + "label": "read.me", + "desc": "readyos, ultimate buddy, precog poc os" + } + ] +} diff --git a/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5i-kung-fu-flash-2-d81-boot.prg b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5i-kung-fu-flash-2-d81-boot.prg new file mode 100644 index 0000000..f0c1fcb Binary files /dev/null and b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5i-kung-fu-flash-2-d81-boot.prg differ diff --git a/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5i-kung-fu-flash-2-d81-preboot.prg b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5i-kung-fu-flash-2-d81-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5i-kung-fu-flash-2-d81-preboot.prg differ diff --git a/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5i-kung-fu-flash-2-d81.d81 b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5i-kung-fu-flash-2-d81.d81 new file mode 100644 index 0000000..b004d78 Binary files /dev/null and b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5i-kung-fu-flash-2-d81.d81 differ diff --git a/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81-boot.prg b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81-boot.prg new file mode 100644 index 0000000..84163bd Binary files /dev/null and b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81-boot.prg differ diff --git a/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81-preboot.prg differ diff --git a/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81.d81 b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81.d81 new file mode 100644 index 0000000..b8e38c3 Binary files /dev/null and b/Releases/0.2.5/precog-kung-fu-flash-2-d81/readyos-v0.2.5y-kung-fu-flash-2-d81.d81 differ diff --git a/Releases/0.2.5/precog-solo-d64-a/help.md b/Releases/0.2.5/precog-solo-d64-a/help.md new file mode 100644 index 0000000..35bdf8d --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-a/help.md @@ -0,0 +1,52 @@ +# precog (solo d64 subset a) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-a` + +## Why This Variant Exists + +- Single-D64 subset focused on editor, reference, and dizzy for one-disk-only environments. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-a.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-a-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-a-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `hexview` - hex viewer +- Drive 8: `readme` - read.me +- Drive 8: `dizzy` - dizzy kanban + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-a.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-a-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-a.d64 -autostart readyos-v0.2.5y-solo-d64-a-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-a-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-a/helpme.md b/Releases/0.2.5/precog-solo-d64-a/helpme.md new file mode 100644 index 0000000..35bdf8d --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-a/helpme.md @@ -0,0 +1,52 @@ +# precog (solo d64 subset a) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-a` + +## Why This Variant Exists + +- Single-D64 subset focused on editor, reference, and dizzy for one-disk-only environments. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-a.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-a-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-a-boot.prg` + +## Included Apps + +- Drive 8: `editor` - editor +- Drive 8: `hexview` - hex viewer +- Drive 8: `readme` - read.me +- Drive 8: `dizzy` - dizzy kanban + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-a.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-a-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-a.d64 -autostart readyos-v0.2.5y-solo-d64-a-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-a-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-a/manifest.json b/Releases/0.2.5/precog-solo-d64-a/manifest.json new file mode 100644 index 0000000..acb0a7a --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-a/manifest.json @@ -0,0 +1,62 @@ +{ + "id": "precog-solo-d64-a", + "display_name": "precog (solo d64 subset a)", + "kind": "solo-d64-a", + "variant_boot_name": "precog solo d64 subset a", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-solo-d64-a.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d64", + "vice_drive_type": "1541", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a.d64" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a-boot.prg" + } + ], + "apps": [ + { + "drive": 8, + "prg": "editor", + "label": "editor", + "desc": "text editor with clipboard" + }, + { + "drive": 8, + "prg": "hexview", + "label": "hex viewer", + "desc": "browse memory in hex format" + }, + { + "drive": 8, + "prg": "readme", + "label": "read.me", + "desc": "readyos, ultimate buddy, precog poc os" + }, + { + "drive": 8, + "prg": "dizzy", + "label": "dizzy kanban", + "desc": "fizzy inspired kanban app" + } + ] +} diff --git a/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5i-solo-d64-a-boot.prg b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5i-solo-d64-a-boot.prg new file mode 100644 index 0000000..c3e2a97 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5i-solo-d64-a-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5i-solo-d64-a-preboot.prg b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5i-solo-d64-a-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5i-solo-d64-a-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5i-solo-d64-a.d64 b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5i-solo-d64-a.d64 new file mode 100644 index 0000000..d068426 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5i-solo-d64-a.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a-boot.prg b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a-boot.prg new file mode 100644 index 0000000..b1ef748 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a-preboot.prg b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a.d64 b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a.d64 new file mode 100644 index 0000000..ef21d03 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-a/readyos-v0.2.5y-solo-d64-a.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-b/help.md b/Releases/0.2.5/precog-solo-d64-b/help.md new file mode 100644 index 0000000..027c41b --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-b/help.md @@ -0,0 +1,51 @@ +# precog (solo d64 subset b) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-b` + +## Why This Variant Exists + +- Single-D64 productivity subset centered on quicknotes, clipboard, calculator, and files. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-b.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-b-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-b-boot.prg` + +## Included Apps + +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `quicknotes` - quicknotes + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-b.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-b-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-b.d64 -autostart readyos-v0.2.5y-solo-d64-b-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-b-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-b/helpme.md b/Releases/0.2.5/precog-solo-d64-b/helpme.md new file mode 100644 index 0000000..027c41b --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-b/helpme.md @@ -0,0 +1,51 @@ +# precog (solo d64 subset b) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-b` + +## Why This Variant Exists + +- Single-D64 productivity subset centered on quicknotes, clipboard, calculator, and files. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-b.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-b-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-b-boot.prg` + +## Included Apps + +- Drive 8: `simplefiles` - simple files +- Drive 8: `clipmgr` - clipboard +- Drive 8: `quicknotes` - quicknotes + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-b.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-b-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-b.d64 -autostart readyos-v0.2.5y-solo-d64-b-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-b-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-b/manifest.json b/Releases/0.2.5/precog-solo-d64-b/manifest.json new file mode 100644 index 0000000..ad46c53 --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-b/manifest.json @@ -0,0 +1,56 @@ +{ + "id": "precog-solo-d64-b", + "display_name": "precog (solo d64 subset b)", + "kind": "solo-d64-b", + "variant_boot_name": "precog solo d64 subset b", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-solo-d64-b.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d64", + "vice_drive_type": "1541", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b.d64" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b-boot.prg" + } + ], + "apps": [ + { + "drive": 8, + "prg": "simplefiles", + "label": "simple files", + "desc": "dual pane file manager and seq viewer" + }, + { + "drive": 8, + "prg": "clipmgr", + "label": "clipboard", + "desc": "manage clipboard items" + }, + { + "drive": 8, + "prg": "quicknotes", + "label": "quicknotes", + "desc": "reu-backed note editor" + } + ] +} diff --git a/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5i-solo-d64-b-boot.prg b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5i-solo-d64-b-boot.prg new file mode 100644 index 0000000..713e823 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5i-solo-d64-b-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5i-solo-d64-b-preboot.prg b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5i-solo-d64-b-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5i-solo-d64-b-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5i-solo-d64-b.d64 b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5i-solo-d64-b.d64 new file mode 100644 index 0000000..c5599f0 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5i-solo-d64-b.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b-boot.prg b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b-boot.prg new file mode 100644 index 0000000..d77f97c Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b-preboot.prg b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b.d64 b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b.d64 new file mode 100644 index 0000000..7cc88dc Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-b/readyos-v0.2.5y-solo-d64-b.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-c/help.md b/Releases/0.2.5/precog-solo-d64-c/help.md new file mode 100644 index 0000000..1a5e509 --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-c/help.md @@ -0,0 +1,52 @@ +# precog (solo d64 subset c) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-c` + +## Why This Variant Exists + +- Single-D64 planning subset centered on tasklist, calendar, and REU viewer. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-c.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-c-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-c-boot.prg` + +## Included Apps + +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-c.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-c-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-c.d64 -autostart readyos-v0.2.5y-solo-d64-c-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-c-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-c/helpme.md b/Releases/0.2.5/precog-solo-d64-c/helpme.md new file mode 100644 index 0000000..1a5e509 --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-c/helpme.md @@ -0,0 +1,52 @@ +# precog (solo d64 subset c) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-c` + +## Why This Variant Exists + +- Single-D64 planning subset centered on tasklist, calendar, and REU viewer. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-c.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-c-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-c-boot.prg` + +## Included Apps + +- Drive 8: `cal26` - calendar 26 +- Drive 8: `tasklist` - task list +- Drive 8: `reuviewer` - reu viewer +- Drive 8: `sysinfo` - system info + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-c.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-c-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-c.d64 -autostart readyos-v0.2.5y-solo-d64-c-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-c-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-c/manifest.json b/Releases/0.2.5/precog-solo-d64-c/manifest.json new file mode 100644 index 0000000..6095a4b --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-c/manifest.json @@ -0,0 +1,62 @@ +{ + "id": "precog-solo-d64-c", + "display_name": "precog (solo d64 subset c)", + "kind": "solo-d64-c", + "variant_boot_name": "precog solo d64 subset c", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-solo-d64-c.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d64", + "vice_drive_type": "1541", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c.d64" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c-boot.prg" + } + ], + "apps": [ + { + "drive": 8, + "prg": "cal26", + "label": "calendar 26", + "desc": "calendar for 2026 with appointments" + }, + { + "drive": 8, + "prg": "tasklist", + "label": "task list", + "desc": "outliner with notes and search" + }, + { + "drive": 8, + "prg": "reuviewer", + "label": "reu viewer", + "desc": "view reu memory usage" + }, + { + "drive": 8, + "prg": "sysinfo", + "label": "system info", + "desc": "system, reu, and ultimate status" + } + ] +} diff --git a/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5i-solo-d64-c-boot.prg b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5i-solo-d64-c-boot.prg new file mode 100644 index 0000000..6f9a6cb Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5i-solo-d64-c-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5i-solo-d64-c-preboot.prg b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5i-solo-d64-c-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5i-solo-d64-c-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5i-solo-d64-c.d64 b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5i-solo-d64-c.d64 new file mode 100644 index 0000000..1b577e8 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5i-solo-d64-c.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c-boot.prg b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c-boot.prg new file mode 100644 index 0000000..a4bf45b Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c-preboot.prg b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c.d64 b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c.d64 new file mode 100644 index 0000000..032c3cc Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-c/readyos-v0.2.5y-solo-d64-c.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-d/help.md b/Releases/0.2.5/precog-solo-d64-d/help.md new file mode 100644 index 0000000..eaa956f --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-d/help.md @@ -0,0 +1,52 @@ +# precog (solo d64 subset d) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-d` + +## Why This Variant Exists + +- Single-D64 experimental subset for simple cells, calculator, 2048, and deminer. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-d.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-d-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-d-boot.prg` + +## Included Apps + +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `calcplus` - calc plus +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-d.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-d-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-d.d64 -autostart readyos-v0.2.5y-solo-d64-d-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-d-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-d/helpme.md b/Releases/0.2.5/precog-solo-d64-d/helpme.md new file mode 100644 index 0000000..eaa956f --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-d/helpme.md @@ -0,0 +1,52 @@ +# precog (solo d64 subset d) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-d` + +## Why This Variant Exists + +- Single-D64 experimental subset for simple cells, calculator, 2048, and deminer. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-d.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-d-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-d-boot.prg` + +## Included Apps + +- Drive 8: `simplecells` - simple cells (alpha) +- Drive 8: `calcplus` - calc plus +- Drive 8: `game2048` - 2048 game +- Drive 8: `deminer` - deminer + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-d.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-d-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-d.d64 -autostart readyos-v0.2.5y-solo-d64-d-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-d-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-d/manifest.json b/Releases/0.2.5/precog-solo-d64-d/manifest.json new file mode 100644 index 0000000..7095537 --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-d/manifest.json @@ -0,0 +1,62 @@ +{ + "id": "precog-solo-d64-d", + "display_name": "precog (solo d64 subset d)", + "kind": "solo-d64-d", + "variant_boot_name": "precog solo d64 subset d", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-solo-d64-d.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d64", + "vice_drive_type": "1541", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d.d64" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d-boot.prg" + } + ], + "apps": [ + { + "drive": 8, + "prg": "simplecells", + "label": "simple cells (alpha)", + "desc": "spreadsheet with formulas and colors" + }, + { + "drive": 8, + "prg": "calcplus", + "label": "calc plus", + "desc": "keyboard-first expression calculator" + }, + { + "drive": 8, + "prg": "game2048", + "label": "2048 game", + "desc": "2048 tile puzzle" + }, + { + "drive": 8, + "prg": "deminer", + "label": "deminer", + "desc": "minesweeper-style puzzle" + } + ] +} diff --git a/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5i-solo-d64-d-boot.prg b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5i-solo-d64-d-boot.prg new file mode 100644 index 0000000..ee515f3 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5i-solo-d64-d-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5i-solo-d64-d-preboot.prg b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5i-solo-d64-d-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5i-solo-d64-d-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5i-solo-d64-d.d64 b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5i-solo-d64-d.d64 new file mode 100644 index 0000000..f2ec1c2 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5i-solo-d64-d.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d-boot.prg b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d-boot.prg new file mode 100644 index 0000000..481d338 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d-preboot.prg b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d.d64 b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d.d64 new file mode 100644 index 0000000..7c730db Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-d/readyos-v0.2.5y-solo-d64-d.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-e-rsdebug/help.md b/Releases/0.2.5/precog-solo-d64-e-rsdebug/help.md new file mode 100644 index 0000000..29f513d --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-e-rsdebug/help.md @@ -0,0 +1,49 @@ +# precog (solo d64 subset e, readyshell debug trace) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-e` + +## Why This Variant Exists + +- Single-D64 shell-focused subset for readyshell and its overlay payloads in one-disk-only environments. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-e.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-e-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-e-boot.prg` + +## Included Apps + +- Drive 8: `readyshell` - readyshell (beta) + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-e.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-e-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-e.d64 -autostart readyos-v0.2.5y-solo-d64-e-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-e-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-e-rsdebug/helpme.md b/Releases/0.2.5/precog-solo-d64-e-rsdebug/helpme.md new file mode 100644 index 0000000..29f513d --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-e-rsdebug/helpme.md @@ -0,0 +1,49 @@ +# precog (solo d64 subset e, readyshell debug trace) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-e` + +## Why This Variant Exists + +- Single-D64 shell-focused subset for readyshell and its overlay payloads in one-disk-only environments. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-e.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-e-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-e-boot.prg` + +## Included Apps + +- Drive 8: `readyshell` - readyshell (beta) + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-e.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-e-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-e.d64 -autostart readyos-v0.2.5y-solo-d64-e-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-e-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-e-rsdebug/manifest.json b/Releases/0.2.5/precog-solo-d64-e-rsdebug/manifest.json new file mode 100644 index 0000000..7655496 --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-e-rsdebug/manifest.json @@ -0,0 +1,44 @@ +{ + "id": "precog-solo-d64-e-rsdebug", + "display_name": "precog (solo d64 subset e, readyshell debug trace)", + "kind": "solo-d64-e", + "variant_boot_name": "precog solo d64 subset e", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-solo-d64-e.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d64", + "vice_drive_type": "1541", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e.d64" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e-boot.prg" + } + ], + "apps": [ + { + "drive": 8, + "prg": "readyshell", + "label": "readyshell (beta)", + "desc": "overlay-backed shell command test" + } + ] +} diff --git a/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5i-solo-d64-e-boot.prg b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5i-solo-d64-e-boot.prg new file mode 100644 index 0000000..859e9ca Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5i-solo-d64-e-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5i-solo-d64-e-preboot.prg b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5i-solo-d64-e-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5i-solo-d64-e-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5i-solo-d64-e.d64 b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5i-solo-d64-e.d64 new file mode 100644 index 0000000..45314e2 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5i-solo-d64-e.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e-boot.prg b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e-boot.prg new file mode 100644 index 0000000..d9ed31b Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e-preboot.prg b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e.d64 b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e.d64 new file mode 100644 index 0000000..22975ec Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e-rsdebug/readyos-v0.2.5y-solo-d64-e.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-e/help.md b/Releases/0.2.5/precog-solo-d64-e/help.md new file mode 100644 index 0000000..9d3521c --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-e/help.md @@ -0,0 +1,49 @@ +# precog (solo d64 subset e) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-e` + +## Why This Variant Exists + +- Single-D64 shell-focused subset for readyshell and its overlay payloads in one-disk-only environments. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-e.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-e-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-e-boot.prg` + +## Included Apps + +- Drive 8: `readyshell` - readyshell (beta) + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-e.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-e-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-e.d64 -autostart readyos-v0.2.5y-solo-d64-e-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-e-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-e/helpme.md b/Releases/0.2.5/precog-solo-d64-e/helpme.md new file mode 100644 index 0000000..9d3521c --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-e/helpme.md @@ -0,0 +1,49 @@ +# precog (solo d64 subset e) + +- Release Line: `0.2.5` +- Artifact Build: `0.2.5Y` +- Kind: `solo-d64-e` + +## Why This Variant Exists + +- Single-D64 shell-focused subset for readyshell and its overlay payloads in one-disk-only environments. + +## Artifacts + +- Drive 8: `readyos-v0.2.5y-solo-d64-e.d64` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-e-preboot.prg` +- Host-Side Boot PRG: `readyos-v0.2.5y-solo-d64-e-boot.prg` + +## Included Apps + +- Drive 8: `readyshell` - readyshell (beta) + +## VICE Setup + +- Enable REU with at least `1MB`; `8MB` or `16MB` is recommended where available. +- The host-side boot PRGs are convenience autostart files. The disk copy of `PREBOOT` is still the normal disk-side bootstrap. +- Configure drive 8 as `1541` with true drive enabled and attach `readyos-v0.2.5y-solo-d64-e.d64`. + +### VICE Command Example + +- Autostart target: `readyos-v0.2.5y-solo-d64-e-preboot.prg` + +```sh +x64sc -reu -reusize 16384 -drive8type 1541 -drive8truedrive -devicebackend8 0 +busdevice8 -8 readyos-v0.2.5y-solo-d64-e.d64 -autostart readyos-v0.2.5y-solo-d64-e-preboot.prg +``` + +## Boot + +- This profile uses the direct boot chain `PREBOOT -> BOOT`. +- There is no `SETD71` stage for this variant. +- Attach the single disk on drive `8`, then autostart `readyos-v0.2.5y-solo-d64-e-preboot.prg` or run `LOAD "PREBOOT",8` then `RUN`. + +## C64 Ultimate + +- Copy the listed disk image files to the target storage. +- Enable the REU with at least `1MB`; use `8MB` or `16MB` where available. +- The host-side boot PRGs are optional convenience files for emulator launching; the disk-side `PREBOOT` entry is the standard hardware boot path. +- Choosing a disk SKU does not enable the experimental Ultimate DOS DMA launcher. Normal release artifacts use the portable disk loader; DMA requires an explicit `LAUNCHER_DMA_LOAD=1` source build and retains disk fallback. +- Attach the single disk image on drive `8`, then boot with `LOAD "PREBOOT",8` and `RUN`. +- This variant boots directly from `PREBOOT` into `BOOT` and does not use `SETD71`. + diff --git a/Releases/0.2.5/precog-solo-d64-e/manifest.json b/Releases/0.2.5/precog-solo-d64-e/manifest.json new file mode 100644 index 0000000..ab11b83 --- /dev/null +++ b/Releases/0.2.5/precog-solo-d64-e/manifest.json @@ -0,0 +1,44 @@ +{ + "id": "precog-solo-d64-e", + "display_name": "precog (solo d64 subset e)", + "kind": "solo-d64-e", + "variant_boot_name": "precog solo d64 subset e", + "version_text": "0.2.5Y", + "reu_size_kb": 16384, + "catalog_source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/cfg/profiles/precog-solo-d64-e.ini", + "autostart_prg": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e-preboot.prg", + "autostart_disk_prg": "preboot.prg", + "preboot_mode": "boot", + "disks": [ + { + "index": 1, + "drive": 8, + "image_type": "d64", + "vice_drive_type": "1541", + "true_drive": true, + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e.d64" + } + ], + "boot_prgs": [ + { + "stem": "preboot", + "disk_name": "preboot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/preboot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e-preboot.prg" + }, + { + "stem": "boot", + "disk_name": "boot", + "source": "/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/boot.prg", + "path": "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e-boot.prg" + } + ], + "apps": [ + { + "drive": 8, + "prg": "readyshell", + "label": "readyshell (beta)", + "desc": "overlay-backed shell command test" + } + ] +} diff --git a/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5i-solo-d64-e-boot.prg b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5i-solo-d64-e-boot.prg new file mode 100644 index 0000000..859e9ca Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5i-solo-d64-e-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5i-solo-d64-e-preboot.prg b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5i-solo-d64-e-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5i-solo-d64-e-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5i-solo-d64-e.d64 b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5i-solo-d64-e.d64 new file mode 100644 index 0000000..81489ed Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5i-solo-d64-e.d64 differ diff --git a/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e-boot.prg b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e-boot.prg new file mode 100644 index 0000000..d9ed31b Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e-boot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e-preboot.prg b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e-preboot.prg new file mode 100644 index 0000000..67aec11 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e-preboot.prg differ diff --git a/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e.d64 b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e.d64 new file mode 100644 index 0000000..46024d0 Binary files /dev/null and b/Releases/0.2.5/precog-solo-d64-e/readyos-v0.2.5y-solo-d64-e.d64 differ diff --git a/Releases/thec64-vice-d81/README.md b/Releases/thec64-vice-d81/README.md index a323ac2..dc3cfdd 100644 --- a/Releases/thec64-vice-d81/README.md +++ b/Releases/thec64-vice-d81/README.md @@ -16,3 +16,7 @@ available. This experimental staging copy deliberately requests C64, PAL, and - `RM` = 16 MB REU The CJM repeats the same baseline with `X:64,pal,reu16384`, adds explicit joystick mappings so THEC64 controllers remain active, and leaves accurate disk mode off because THEC64 documents `accuratedisk` as applying to `d64`/`g64`. + +This staging copy uses the normal disk loader. The C64 Ultimate DOS DMA path is +hardware-specific, opt-in at source-build time, and is not available on +THEC64/VICE. diff --git a/Releases/thec64-vice-easyflash/README.md b/Releases/thec64-vice-easyflash/README.md index 75fb0b9..fd155fc 100644 --- a/Releases/thec64-vice-easyflash/README.md +++ b/Releases/thec64-vice-easyflash/README.md @@ -19,3 +19,7 @@ available. This experimental staging copy deliberately requests C64, PAL, and The CJM repeats the same baseline with `X:64,pal,reu16384` and adds explicit joystick mappings so THEC64 controllers remain active. `readyos_data.d64` is included beside the cartridge for runtime app data access; the CJM cannot auto-mount it. If an app snapshot preloaded from the cartridge is unloaded from REU, ReadyOS cannot load it again from the cartridge until you restart ReadyOS. + +EasyFlash uses cartridge-to-RAM-to-REU cold preload and never links the regular +launcher's experimental Ultimate DOS DMA module. THEC64/VICE also does not +provide the required C64 Ultimate UCI service. diff --git a/ULTIMATEDOS_DMA_LOADING_LESSONS_LEARNT.md b/ULTIMATEDOS_DMA_LOADING_LESSONS_LEARNT.md new file mode 100644 index 0000000..984ec38 --- /dev/null +++ b/ULTIMATEDOS_DMA_LOADING_LESSONS_LEARNT.md @@ -0,0 +1,1287 @@ +# Ultimate DOS DMA Loading Lessons Learnt + +This note records what was learned from the standalone C64 Ultimate DMA probe +and the launcher-local DMA experiments. It is specifically about Ultimate DOS +UCI technique; the launcher integration remains gated behind +`LAUNCHER_DMA_LOAD=1`. + +> **Schema-v5 update (2026-08-02):** current main-app DMA destinations and +> shim transfers cover `$1000-$C5FF` (`$B600`). Older `$C7FF/$B800` values in +> dated hardware experiments below are retained only where they describe the +> artifact tested at that time. + +## Current Proven Shape + +- Use Ultimate DOS UCI calls for the actual DMA load path. +- Treat SoftIEC as a capability to detect/report, not as the loading transport. +- Put the probe program and payload files inside a mounted disk image. +- Mount the image as drive 8/A with the correct drive type (`d64` as 1541, + `d81` as 1581). +- Load from the mounted image context, not from `/USB0/...` or `/USB1/...` + paths in the final loading path. +- Use lowercase PETSCII directory names for probe payload files. +- Keep ReadyOS-side launcher filenames and C64U paths as lowercase PETSCII. + BASIC/DOS may display those bytes as uppercase; do not normalize them to + shifted-uppercase PETSCII. +- The DOS target expects ASCII file and directory bytes. For the lower-PETSCII + ReadyOS names used here, preserving the raw bytes sends the equivalent + uppercase ASCII spellings (`USB1`, `READYOS.D81`, `EDITOR`) that the C64U + storage view and disk entries resolve. Do not force ASCII lowercase. +- Use fresh image names during automation to avoid stale mounted-image state. +- Prime the launcher DMA UI state from the configured image path at launcher + startup. Do not show a lazy `DMA:??` state that depends on whichever action + happens to ask about DMA first. +- The launcher startup check is intentionally path/config-only. A hardware run + that probed the UCI command-interface ID during launcher init cleared the + screen and never reached the first launcher draw. The actual load path still + probes UCI before using Ultimate DOS; startup must not touch UCI. + +The official Ultimate UCI documentation matters for the boundary here: + +- Ultimate DOS target `$01/$02` has its own current-directory and open-file + state. `DOS_CMD_LOAD_REU` (`$21`) reads from the currently opened Ultimate + DOS file; it does not name an IEC drive. +- `DOS_CMD_COPY_UI_PATH` (`$15`) is documented as deprecated since firmware 3.0, + so it cannot be treated as a production bridge from "whatever is mounted as + drive 8" to the Ultimate DOS current directory. +- Control `CTRL_CMD_LOAD_REU` (`$04 $08`) loads an REU image file from storage + into the Ultimate's REU memory. It is not an arbitrary per-file, per-offset + app/resource DMA loader. +- Control `CTRL_CMD_GET_DRVINFO` (`$04 $29`) returns drive count plus + type/bus/power triples. It does not expose the mounted image path that the + launcher would need to synthesize an absolute Ultimate DOS path. +- The hyperspeed KERNAL reference implementation + (`roms/c64rom/kernal/uci.s` in GideonZ/1541ultimate) is the protocol model: + write the target/command bytes and payload bytes to `CMD_IF_COMMAND`, push + the command through `CMD_IF_CONTROL`, wait for data/status state, then ack or + abort explicitly. The launcher micromodule follows that raw command-interface + pattern rather than using KERNAL or SoftIEC for the DMA transfer. + +The fresh D81 artifact is: + +```text +build/uci_dma_probe/uci_dma_probe.d81 +sha256 f3f84122a7380635b9d30d6367893ddcab32d707b662a513b956e9fa3824be05 +``` + +Its verified directory entries are: + +```text +"probe" prg +"udma1" prg +"udma2" prg +"udma3" prg +``` + +## Working Probe Flow + +The probe does this: + +1. Detects UCI by probing the Ultimate command interface base addresses. +2. Reads and reports the SoftIEC bus byte. +3. Uses Ultimate DOS commands to access files from the mounted image. +4. Opens each payload file. +5. Reads/verifies the PRG load address header. +6. Seeks past the two-byte PRG header. +7. Uses Ultimate DOS `LOAD_REU` (`$21`) to DMA payload bytes into REU. +8. Fetches REU data back into RAM and verifies the expected byte patterns. +9. Writes compact result bytes and screen debug output for automation capture. + +The current D81 C64U REST run reported: + +```text +SUM USB:01 P:42 C:51 F1:55 F2:55 F3:55 +PROBE DONE +``` + +`F1/F2/F3 = $55` proves that the batched Ultimate DOS `LOAD_REU` flow works +after Ultimate DOS has changed into the D81 filesystem. `P = $42` proves that a +plain filename stat before that directory change did not resolve as a valid +file stat, even though the same D81 was mounted as IEC drive 8/A. `C = $51` +proves that `COPY_UI_PATH` did not return a usable success status in this +REST-mounted D81 case, so it is not a proven pathless bridge. + +The C64U REST automation that proved reliable uses this discipline: + +- Upload the disk image by FTP. +- Reset to BASIC before mounting. +- Set Drive A type to match the image type. +- Mount the image explicitly with `type=d64` or `type=d81`. +- Reset to BASIC again after the mount. +- Type BASIC input one byte at a time. +- Wait for the keyboard buffer to drain between typed bytes. +- Wait for the probe screen to show `PROBE DONE`. +- Capture screen RAM and result buffers through REST. +- Analyze result bytes plus RAM/REU snapshots. + +The VICE/dotnet sanity path is intentionally narrower: + +- Build the D81 and mount it as drive 8 under VICE. +- Do not rely on `-autostart` deriving a useful filename from + `uci_dma_probe.prg`; that tried `LOAD"UCI.DMA.PROBE",8,1`, while the disk + file is named `probe`. +- Type `LOAD"PROBE",8,1` and `RUN` through the dotnet input sequence. +- Expect `UCI NOT FOUND` and validate the `$3000` result block as version + `$41`, no-UCI mode. +- Use this only as a regression/smoke check. It cannot prove C64U Ultimate DOS + DMA because stock VICE does not expose the C64U UCI device. + +## Why Earlier Attempts Failed Or Misled Us + +### SoftIEC Was The Wrong Loading Path + +SoftIEC detection can be true on the C64U, but using SoftIEC as the load path +was not the thing we were trying to prove. The requested path is Ultimate DOS +DMA from files inside the mounted disk image. + +SoftIEC is useful as a presence/capability indicator. It should not be the +launcher/app DMA transport unless a separate design explicitly chooses that. + +### D81 Needed Correct Drive-Type Handling + +The D81 case is more sensitive to the mounted drive type. The automation now +sets Drive A to 1581 for D81 and mounts with `type=d81`. Relying on a generic +mount state or a stale emulator/config assumption caused confusing failures. + +### Reset Timing Mattered + +The C64U state after mount was not always clean. The reliable automation resets +before the mount and again after the mount before typing `LOAD"PROBE",8`. + +Without that, the machine could sit at BASIC, half-load, or show stale boot +screens that looked like code failure but were really automation/state failure. + +### Keyboard Injection Was Too Coarse + +Bulk-writing the C64 keyboard buffer was unreliable on the C64U. The probe +automation switched to one byte at a time and waits for `$C6` to drain after +each byte. + +This made BASIC commands reproducible. + +### REST Memory Polling Can Disturb KERNAL Loads + +The ReadyOS C64U automation originally polled screen/RAM every second while the +booter was still inside KERNAL `LOAD "launcher",8`. That reproduced a stable +stuck `LOADING LAUNCHER...` screen. RAM captured during the stuck state matched +`launcher.prg` only through C64 address `$3C08`, and a second sample did not +advance. + +After adding a quiet wait before the first REST memory capture, the same normal +`LAUNCHER_DMA_LOAD=0` D81 booted to the launcher and launched Editor. So do not +classify a boot-screen hang from automation unless the automation avoided REST +memory reads during active disk I/O. + +### Stale Image Names Hid The Real Result + +Reusing the same remote filename and mount state made it too easy to test an +old D64/D81 image while thinking a new one was mounted. The probe automation +uses distinct image names for D64 and D81 (`UCI40.D64`, `UCI41.D81`) and +rebuilds/uploads before testing. + +### Case Was Easy To Misread + +C64 BASIC displays uppercase for text that may actually be lowercase PETSCII. +The disk builder verifies the raw directory bytes for lowercase PETSCII names, +not just what the screen or `c1541` display appears to say. + +This also applies to the launcher-side C64U image path. The launcher must +preserve lowercase PETSCII path bytes such as `/usb1/readyos.d81` while parsing +ReadyOS config/catalog data and while emitting the current DOS-target command +bytes. Those byte values are valid ASCII uppercase spellings for the C64U path +and disk entries. Converting the ReadyOS strings to shifted-uppercase PETSCII or +ASCII lowercase is not equivalent. + +### Launcher Experiments Drifted From The Probe + +The standalone probe used the known-good Ultimate DOS sequence. A later launcher +experiment drifted from that sequence and also introduced startup/boot noise, +making the result hard to interpret. Launcher integration should stay directly +aligned with the proven probe sequence, with any deviation verified on hardware. + +## Rules For Launcher Integration + +- Start from the working D81 probe sequence, not from a new interpretation. +- Keep all launcher changes behind a small, obvious feature boundary until + hardware proof exists. +- Treat the config path as the startup UI gate (`DMA:YES`/`DMA:NO`). The first + actual app/resource load probes UCI, performs the Ultimate DOS transaction, + and changes the status to `DMA:ON` only after a successful DMA load. +- Persist the `DMA:ON` display bit through the launcher resume payload. The + mounted-image-ready bit stays process-local and is re-established by the next + Ultimate DOS load, because apps may leave the DOS target in a different + state. +- When DMA is positively available, do not silently fall back to KERNAL/chunked + loading after an Ultimate DOS load failure. Falling back is still correct when + UCI is unavailable, but on C64U hardware a DMA failure must stay visible so we + do not confuse a slow disk preload with a working DMA preload. +- Do not insert helper routines into the middle of the proven UCI transaction + code. One hardware build hung on the first cold DMA load at stage `250.3834` + after a helper was inserted before the DOS identify path. Moving helper code + to the end of the code segment restored the original transaction layout and + keeps future diffs easier to audit. +- Any settle/quiesce helper should run only after a transaction path has + returned. It should synchronize the command interface and wait for idle; it + is not a startup probe and it should not touch the mount/path state. +- Do not mark an app as loaded unless the Ultimate DOS command status and REU + verification path prove the data landed. +- Keep the shim, boot, and app binaries out of scope. +- First prove one standalone app payload, then ReadyShell overlay/resource + payloads, then ReadyBASIC/ReadyShell launch behavior. + +### Main App Snapshot Size Rule + +The Ultimate DOS `LOAD_REU` byte count and the ReadyOS shim restore byte count +are different pieces of state: + +- `LOAD_REU` should use the exact PRG payload length reported by Ultimate DOS + `FILE_INFO` minus the two-byte PRG load header, after seeking to payload + offset 2. Loading a fixed window length from a shorter file is not a safe + EOF strategy. +- For normal DMA-loaded app PRGs, the launcher records the exact payload size + for the shim REU launch, matching the pre-existing launcher/shim behavior. +- A tested ReadyShell hypothesis tried clearing the full target snapshot window + and then asking the shim to restore the full `$B600` ReadyOS app window. On + C64U hardware, that moved the failure earlier: the DMA preload still reported + `DMA:ON`, but launching ReadyShell dropped to BASIC `READY.` instead of + drawing the shell UI. + +Current intentional guardrail: + +- Ultimate DOS DMA remains enabled for normal main app PRGs. +- ReadyShell main PRG DMA is enabled when the experimental launcher is built + with `LAUNCHER_DMA_LOAD=1`; the top-level build gate still defaults off for + normal builds. +- ReadyShell overlay/resource PRG DMA is also enabled under + `LAUNCHER_DMA_LOAD=1`, with KERNAL/chunked fallback if the Ultimate DOS call + fails. +- This must stay covered by C64U hardware UI automation. VICE can prove normal + launcher behavior, but not the Ultimate DOS timing and mounted-image path. + +## Temporary Launcher Config Bridge + +The experimental launcher now has a deliberately temporary config key: + +```text +[launcher] +c64u_image_path=/usb1/readyos.d81 +``` + +This is read from the normal `apps.cfg` path and cached inside the launcher. +When `LAUNCHER_DMA_LOAD=1`, the launcher passes that string to the +launcher-local Ultimate DOS micromodule before each DMA load. The current split +for `/usb1/readyos.d81` is: + +1. `CHANGE_DIR /` +2. `CHANGE_DIR /USB1` +3. `MOUNT8 readyos.d81` +4. `CHANGE_DIR readyos.d81` +5. `OPEN` plain filenames such as `editor`, `readybasic`, `rsparser`, and + `rbcore` +6. `READ` the two-byte PRG header and validate the expected load address +7. `SEEK` to payload offset 2 +8. `LOAD_REU` the known destination window/slot length + +All names sent to the Ultimate DOS target in those commands must be ASCII +bytes. The launcher currently preserves the ReadyOS lowercase PETSCII byte +values because, for these names, they are also the uppercase ASCII spellings the +C64U resolves. + +For the current hardware experiment, the DMA-enabled launcher also seeds the +same path as its experimental default before reading `apps.cfg`. The config key +should still be the intended control point, but the default avoids blocking the +DMA transport test on a config-parse/cache issue. + +This is not the final desired design. It exists to verify the rest of the +launcher DMA loader against real hardware while the pathless "currently mounted +drive 8/A image" bridge remains unproven. The test image uploaded by automation +must use the same C64U-side name as the config value, currently +`/usb1/readyos.d81`. The known-good probe used short image names and paths +without a trailing slash, so the launcher test should match that spelling. + +One important mount nuance remains: `MOUNT8` may transport successfully while +returning no status bytes. The standalone probe did not require a status packet +immediately after mount; it treated the following `CHANGE_DIR` into the mounted +image as the validation step. The launcher micromodule follows that discipline +and does not fail the mount solely because the status buffer is empty. + +## Launcher Size / Memory Impact + +Measured on the experimental branch after rebuilding only `bin/launcher.prg`: + +```text +default launcher: + PRG bytes 38902 + CODE $1033..$A1E7 + RODATA $A1E8..$A77F + DATA $A780..$A7B1 + ONCE $A7CE..$A7F3 + BSS $A7F4..$B185 + +LAUNCHER_DMA_LOAD=1 fixed-window build: + PRG bytes 42171 + CODE $1033..$AE78 + RODATA $AE79..$B444 + DATA $B445..$B476 + ONCE $B493..$B4B8 + BSS $B4B9..$C023 +``` + +The default build was rebuilt after this measurement and confirmed to have no +`launcher_uci_dma` symbols in `obj/launcher.map`. + +## Launcher Integration Follow-Up + +The launcher integration remains experimental and disabled by default. + +What changed the interpretation: + +- The working probe was not a proof that plain Ultimate DOS filenames resolve + through IEC drive 8/A's mounted image. Ultimate DOS has its own current + directory state. +- The revised probe made this explicit after forcing Ultimate DOS to `/` so + sticky state from prior runs could not mask the result: pre-CD `STAT "udma1"` + returned `P:42`, `COPY_UI_PATH` then returned `C:51`, while the later + CD-into-image batch load still returned `F1:55 F2:55 F3:55`. +- REST mounting a D81 as drive A made IEC/KERNAL access see the image, but did + not make launcher-side Ultimate DOS `OPEN`/`STAT` reliably resolve `editor` + from that mounted IEC context. +- Adding Ultimate DOS `COPY_UI_PATH` before `STAT`/`OPEN` did not make the + REST-mounted launcher case work. The probe now records this as `C:51`. It may + still be useful when a human has navigated/mounted through the Ultimate UI, + but that is not proven. +- The successful launcher shape uses the explicit config bridge: + `CD /`, `CD usb1`, `MOUNT8 readyos.d81`, `CD readyos.d81`, then plain + filenames. +- After those failures, normal builds were changed so `LAUNCHER_DMA_LOAD` + defaults to `0`. The UCI assembly module links only when explicitly building + with `LAUNCHER_DMA_LOAD=1`. + +Current safe conclusion: + +- Do not ship or publish the launcher UCI DMA path without hardware proof for + the app/resource set being enabled. +- A pathless, production-safe Ultimate DOS load from "whatever disk image is + mounted as drive 8" is not proven. +- The currently documented UCI commands do not expose a mounted-drive-to-DOS-path + bridge. The only proven DMA path is after Ultimate DOS itself has changed into + the disk-image filesystem. +- If the final design must avoid absolute `/USB0` or `/USB1` paths and must not + use SoftIEC, the missing piece is a proven Ultimate DOS mechanism that binds + its filesystem context to the currently mounted IEC image. +- Until that exists, the normal shim/KERNAL loader path is the safe launcher + behavior. + +## C64U Launcher Automation Notes + +The C64U REST automation can prove useful states, but failures must be +classified from the captured screen: + +- A long `LOADING LAUNCHER...` screen with changing animation is not + necessarily a lockup. On a known-safe `LAUNCHER_DMA_LOAD=0` D81, the launcher + appeared after a brief blank transition. +- A final BASIC `READY.` screen after `LOAD"BOOT",8` means the booter did not + actually run in that attempt. Treat this as mount/input/run sequencing noise, + not launcher init evidence. +- For app-launch checks, wait for app-specific text such as `EDITOR:`. Matching + the launcher menu row `8 EDITOR` is a false positive. + +## Historical Launcher No-STAT / Fixed-Window Experiment + +The launcher integration exposed a C64U-side hazard that the standalone probe +did not originally make obvious: after `CD`/`MOUNT`/`CD image`, issuing Ultimate +DOS `FILE_STAT` for `editor` consistently stopped at the launcher's debug marker +`55` and the C64U REST endpoint stopped responding. + +The launcher checkpoint tested in this section therefore avoided `FILE_STAT` +entirely: + +- open the file by Ultimate DOS name +- read and validate the two-byte PRG load address +- seek back to payload offset 2 +- zero the destination REU window/slot first +- issue Ultimate DOS `LOAD_REU` for the known destination window/slot length + +At that checkpoint, main app snapshots used the then-current `$1000-$C7FF` +window (`$B800`). The later, hardware-proven implementation below superseded +this experiment: it uses open-handle `FILE_INFO`, validates the PRG header, and +loads the exact payload length into a pre-zeroed destination. The current +schema-v5 app-window ceiling is `$1000-$C5FF` (`$B600`). + +Current measured launcher map impact, forced rebuilds: + +```text +default launcher: + CODE $1033..$A1E7 size $91B5 + RODATA $A1E8..$A77F size $0598 + DATA $A780..$A7B1 size $0032 + ONCE $A7CE..$A7F3 size $0026 + BSS $A7F4..$B185 size $0992 + +LAUNCHER_DMA_LOAD=1 fixed-window build: + PRG bytes 42171 + CODE $1033..$AE78 size $9E46 + RODATA $AE79..$B444 size $05CC + DATA $B445..$B476 size $0032 + ONCE $B493..$B4B8 size $0026 + BSS $B4B9..$C023 size $0B6B +``` + +## 2026-06-27 Launcher Hardware Result + +The launcher DMA path was proven on a C64U for the regular D81 profile when +the D81 path is supplied in launcher config as `c64u_image_path=/usb1/readyos.d81` +and the launcher is built with `LAUNCHER_DMA_LOAD=1`. + +The working Ultimate DOS sequence is: + +```text +DOS target only, not SoftIEC +CD / +CD USB1 +MOUNT8 READYOS.D81 +CD READYOS.D81 +OPEN plain file name +READ 2-byte PRG load address +SEEK payload offset 2 +LOAD_REU fixed destination length +``` + +The important correction was to mirror the working probe: after `CD /`, change +Ultimate DOS into `USB1`, then mount and enter the image by its short image name. +Mounting with an absolute path and then trying `CD READYOS.D81` was not enough +on the tested C64U; it returned `21,UNKNOWN`. + +This result was from the earlier fixed-window checkpoint: the launcher cleared +the target and loaded its then-current `$B800` app window. The current loader +supersedes that detail by using open-handle `FILE_INFO` and loading the exact +payload length, bounded by the schema-v5 `$B600` app window. ReadyShell +resources likewise use measured payload lengths, with the documented narrow +rounding workaround for edge-of-slot overlays. + +Hardware evidence from C64U REST automation: + +- Final rebuilt artifact `readyos-v0.2.5u-d81.d81`, Editor: load dialog showed + `OK - 45 KB`, launcher showed `DMA:ON`, and Editor opened. +- `readyos-v0.2.5d-d81.d81`, Editor: load dialog showed `OK - 45 KB`, launcher + showed `DMA:ON`, and Editor opened. +- `readyos-v0.2.5z-d81.d81`, ReadyShell: load dialog showed `OK - 45 KB`, + launcher showed `DMA:ON`, and ReadyShell reached `READYOS READYSHELL` / + `LOADING DONE`. +- `readyos-v0.2.5d-d81.d81`, ReadyBASIC: load dialog showed `OK - 45 KB`, + launcher showed `DMA:ON`, and ReadyBASIC reached its `READY.` prompt. + +One C64U quirk remains in the launcher implementation: the successful hardware +shape keeps volatile stage/status writes during the UCI transaction. They are +cleared from the normal success dialog before `OK - 45 KB` is drawn, but if DMA +fails they intentionally remain as short diagnostic breadcrumbs on the load +dialog. Removing those writes made the same logical path fall back to the +KERNAL loader on hardware. + +### UCI Timing / Code-Shape Sensitivity + +This is the most surprising lesson from the Launcher integration. The UCI +loader is not merely "logically correct"; on the tested C64U it is sensitive to +the exact pacing/code shape around the Ultimate DOS transaction. + +External research context: + +- The official UCI documentation describes UCI as a small state machine exposed + through `$DF1C-$DF1F`. Commands may only be pushed while the interface is + idle. After the Ultimate prepares a response, the C64-side code must read any + data/status bytes it needs and then write `DATA_ACC` to release the response + and return the state machine to idle or busy for the next block. +- The upstream `roms/c64rom/kernal/uci.s` code is conservative even though it + targets the SoftIEC/KERNAL path rather than Ultimate DOS. Before each command + setup it aborts any pending command, pushes the new command, waits while the + interface is busy, acknowledges data with `DATA_ACC`, and waits for the + accept bit to clear before continuing. +- The official Ultimate64 firmware notes for `3.14d` dated 2026-03-01 include + "Fixes race condition in UCI" under general bugfixes. Treat plain `3.14.0` + / Commodore `1.0.0` separately from `3.14d`; the Commodore `1.1.0` changelog + says earlier `3.14.0` is the initial `1.0.0` firmware, but does not call out + that UCI race fix by name. +- Public C64U/Ultimate documentation also distinguishes Software IEC from UCI. + Software IEC is the serial-bus virtual drive path. The launcher DMA path must + remain on the Ultimate DOS UCI target, where `LOAD_REU` reads from the + currently opened Ultimate DOS file into REU. + +Observed hardware evidence: + +- With stage/status stores to screen RAM (`$052C-$0533`) in place, the launcher + DMA path works on C64U. +- Removing those stores made the same logical path fall back to the normal + KERNAL loader. The load dialog showed `OK - 24 KB`, the launcher showed + `DMA:NO`, and no Ultimate DOS REU load was used. +- Replacing the stores with private BSS breadcrumbs did not restore the working + behavior. +- Restoring the screen stores restored DMA. The success dialog is now cleared + wide enough that the user sees clean `OK - 45 KB`; on failure the diagnostic + bytes remain visible. + +Interpretation: + +- Treat this as **C64U UCI transaction pacing/code-shape sensitivity**, not as a + fully understood protocol rule. +- The current best guess is that the extra absolute stores provide enough + spacing and/or preserve enough code-generation shape between command setup, + UCI status polling, response draining, path changes, open/read/seek, and + `LOAD_REU` for the C64U firmware/FPGA state machine to remain happy. +- It may also relate to where the writes go. Private BSS writes were not an + equivalent substitute, so this is not proven to be "any delay will do". +- It is also possible that the C compiler/assembler layout and register usage + around the C/asm boundary is part of the sensitivity. The screen writes are + volatile absolute stores, so they constrain generated code more strongly than + ordinary local/state writes. +- The screen writes are not part of the payload path. The payload path is: + Ultimate DOS file -> `LOAD_REU` -> REU. The screen writes are small volatile + breadcrumbs around command setup/status capture and may be changing timing, + bus visibility, code layout, or C/asm boundary behavior enough to avoid a UCI + race on the tested firmware. + +Rules for future changes: + +- Do not remove or relocate the `$052C-$0533` stage/status writes unless the + replacement is retested on real C64U hardware. +- If the visible diagnostics become undesirable, prefer clearing the affected + row after success, as the current code does, rather than removing the stores. +- If we want a cleaner design, build a dedicated UCI pacing primitive and prove + it on hardware with Editor, ReadyShell, and ReadyBASIC before replacing the + screen breadcrumbs. +- A cleaner pacing primitive should copy the upstream discipline rather than + merely burning cycles: on entry, clear errors/abort stale transactions; before + each command, drain data/status queues and require stable idle; after each + response, write `DATA_ACC`, wait for `DATA_ACC` to clear, then require stable + idle before the next command. +- Do not use the destination slot size as the `LOAD_REU` length unless the file + is known to be exactly that size. ReadyShell overlays are short PRGs packed + into fixed `$3800` REU slots; the normal KERNAL/resource path reads until EOF + and leaves the pre-zeroed tail alone. The DMA path must query Ultimate DOS + `FILE_INFO`, subtract the two-byte PRG header, then `SEEK 2` and `LOAD_REU` + exactly that payload length. +- A launcher experiment with named `FILE_STAT` failed on C64U firmware 3.14 in + the mounted-D81 path with stage `6`, `ERR_STAT`, debug `84`, before the main + ReadyShell PRG opened. Do not switch the launcher sizing path from + open-handle `FILE_INFO` back to named `FILE_STAT` without reproving it on + hardware. +- ReadyShell has edge-of-slot overlays such as `rsfops`, whose real PRG payload + fits in `$3800` but is close enough that rounded/allocated-size answers can + trip the size guard. Preserve reported size bytes in diagnostics before + closing the Ultimate DOS handle; `CLOSE` can overwrite the status/debug bytes. +- On the C64U D81 run, `rsfops` failed at stage `7` with `ERR_SIZE` and + reported size bytes `$8E,$38` (`$388E`). That matches 57 D81 blocks times + 254 bytes, not the actual host PRG size. The launcher therefore allows an + overlay-only clipped transfer when the target is the ReadyShell overlay slot + (`load address $8E00`, slot `$3800`) and the reported size is within the + next 512-byte rounding window. Main app PRGs still require exact reported + sizes. +- Do not trust restored `app_resource_loaded` state when a main app is freshly + preloaded. A C64U reboot can preserve launcher bank-0 state while the REU + cache banks contain stale contents from a previous experiment/session. The + failure signature was ReadyShell drawing its header and `LOADING DONE`, then + hanging before the `>` prompt because overlay 9 (`rsedit`) metadata pointed at + a stale app snapshot bank. The launcher fix is to invalidate resource preload + state on every fresh main-app load, reload the resources, and reassert all + ReadyShell cache/state bank allocation types before restoring metadata. +- Do not blindly reuse restored `app_rs_bank*` values. On C64U cross-app runs, + Editor and ReadyBASIC could load correctly, ReadyShell could reach its prompt, + and then an overlay command such as `LST "RSHELP"` could drop to BASIC if the + restored ReadyShell resource bank slots conflicted with banks now marked for + another app/resource type. Before reusing restored resource-bank slots, compare + them against the allocation table, discard conflicting or duplicate slots, and + allocate fresh banks before reloading overlays/modules. +- ReadyShell currently clears its high-RAM runtime area at startup, which can + clear the launcher's `$CFF2` cached state-bank pointer before ReadyShell asks + for the REU state bank. In that case ReadyShell scans the allocation table for + the first `REU_RS_SCRATCH` bank. The launcher therefore must prune stale + ReadyShell cache/scratch allocation-table marks so only the current + ReadyShell cache banks and state/scratch bank are advertised before launch. +- Keep the REU allocation table authoritative for loaded app snapshots as well + as resource banks. The DMA preload path updates the shim bitmap directly; it + must also mark the loaded app's physical REU bank as `REU_APP_STATE`, and the + launcher should reassert all currently loaded snapshot banks before allocating + resource banks. Otherwise ReadyShell overlay banks can be allocated over a + loaded app snapshot; later returning from that app can overwrite an overlay + bank and make commands such as `LST "RSHELP"` fail even though the ReadyShell + prompt and lighter commands still work. +- On this experiment branch, Enter on an unloaded app should go through the + launcher preload path first, then launch from REU. That keeps DMA-capable app + loads, KERNAL fallback loads, and resource preparation on the same launcher + code path as F3/load-all instead of using the older direct disk-launch path. +- Do not poll screen/RAM through the REST API while the C64 side is in the + boot/UCI-critical section. Earlier automation did this and produced stuck + boot screens that looked like launcher crashes but were really + automation/state interference. +- Record the exact firmware version when testing. Behavior on `3.14.0`, + `3.14d`, Commodore `1.0.0`, and Commodore `1.1.0` may differ in precisely the + area this loader stresses. +- VICE cannot prove this aspect. The failure mode only showed up on hardware. + +Final measured launcher map impact after the verified build: + +```text +LAUNCHER_DMA_LOAD=1 verified build: + PRG bytes 43521 + CODE $1033..$B3B1 + RODATA $B3B2..$B98A + DATA $B98B..$B9BC + INIT $B9BD..$B9D8 + ONCE $B9D9..$B9FE + BSS $B9FF..$C56E +``` + +Verification: + +- `python3 build_support/verify_memory_map.py` passed. +- `python3 build_support/verify_launcher_dma_gate.py` passed. +- C64U D81 artifact `readyos-v0.2.5q-d81.d81` was deployed as + `USB1/automation/vice_tasks_dotnet/readyos-readyshell-c64u-q.d81`; the FTP + listing was checked so no older experiment D81 from this series remained. +- F3/load-selected ReadyShell path passed: + `READYOS_READYSHELL_OVERLAY_SMOKE_PASS`. The captured loading screen showed + `OK - 27 KB`, then ReadyShell passed `VER`, `LST "RSHELP"`, + `CAT "RSHELP" ! TOP 1`, and another `VER`. +- Enter on unloaded ReadyShell path passed: + `READYOS_READYSHELL_ENTER_SMOKE_PASS`. The five-second early capture showed + `LOADING TO REU` with the ReadyShell selection and a UCI stage marker, then + ReadyShell passed the same overlay command smoke. + +## Launcher Startup/Resume Lessons + +- The launcher may reuse its cached catalog/resume payload instead of rereading + `apps.cfg` on every entry. Any config value that changes DMA behavior must be + part of that resume payload, or the cached path can silently fall back to the + compiled default. This specifically bit `c64u_image_path`: after a cached + launcher resume, first Enter/F1 paths could try the wrong image path and then + fall back to KERNAL disk I/O. +- Bump the launcher resume schema whenever the resume payload layout changes. + That forces old hardware REU cache state to be discarded and makes the next + launcher run reread `apps.cfg` before it saves a new payload. +- DMA status should be initialized during launcher startup without touching the + UCI registers. A real startup UCI detect can run too early in the + boot-to-launcher lifecycle and hang before the first menu draw. `DMA:YES` + therefore means a C64U image path is configured and the launcher will attempt + DMA; `DMA:ON` means at least one Ultimate DOS DMA transfer has succeeded in + the current launcher session; `DMA:NO` means no path is configured or a later + no-UCI/path/mount/image error disabled the DMA path. +- A failed per-file transfer should not automatically disable DMA globally. + Only no-UCI/path/mount/image errors should flip global status to unavailable. + Size/header/open/read errors should fall back for that file while allowing + later files to attempt DMA. +- Repeatedly remounting the same configured D81 for every app and overlay is + risky on the tested C64U. After one successful Ultimate DOS DMA load, the + launcher keeps a volatile in-session "image is mounted" flag and subsequent + DMA transfers open the next file from the current image directory instead of + issuing another root/CD/mount/CD-image sequence. The flag is not saved in the + resume payload and is cleared on startup and on no-UCI/path/mount/image + failures, so a retry can fall back to the full mount path when the mounted + image is genuinely suspect. File-level failures keep the mounted-image state: + ReadyShell can legitimately fall back to KERNAL for an overlay/resource while + Ultimate DOS is still positioned inside the D81, and forcing the next app back + through the full mount path reproduced the `330.3834` C64U stall. + +## 2026-07-07 Acceptance Verification + +This acceptance pass used fresh C64U runs with `READYOS_CLEAR_REU=1` before +each reboot. C64U REST/FTP orchestration was launched from a Terminal-owned +background bash, not from the foreground Codex shell. + +Hardware evidence: + +- Valid configured path, current-source DMA build: + `/tmp/readyos_c64u_accept_valid_y_20260707_001219`. + D81 `readyos-v0.2.5y-d81.d81` contained + `C64U_IMAGE_PATH=/USB1/READYOS-V0.2.5Y-D81.D81`. + Result: `READYOS_EDITOR_DIRECT_DMA_RETURN_PASS`, rc `0`; launcher returned + with Editor marked loaded and `DMA:ON`. Captured screens contained `DMA:ON` + four times. +- Empty configured path, current-source DMA-capable build: + `/tmp/readyos_c64u_accept_empty_z_quietboot_20260707_002532`. + D81 `readyos-v0.2.5z-d81.d81` contained `C64U_IMAGE_PATH=`. + Result: `READYOS_EDITOR_DIRECT_DMA_RETURN_PASS`, rc `0`; launcher showed + `DMA:NO`, Editor loaded by the normal disk path, and the launcher returned + still showing `DMA:NO`. Captured screens contained no `DMA:ON`. +- Short invalid configured path, current-source DMA-capable build: + `/tmp/readyos_c64u_accept_bad_b_quietboot_20260707_003405`. + D81 `readyos-v0.2.5b-d81.d81` contained + `C64U_IMAGE_PATH=/USB1/MISS.D81`. + Result: `READYOS_EDITOR_DIRECT_DMA_RETURN_PASS`, rc `0`; Editor opened and + returned to the launcher, `editor-direct matched EDITOR: ... saw_dma=0`, and + captured screens contained no `DMA:ON` or `DMA LOADING`. + +Automation lesson: + +- For non-DMA/fallback paths, give the C64U a long quiet window before the + first launcher screen poll and before app-ready polling. A current empty-path + D81 booted in VICE immediately, but on hardware the same image could sit on a + blank/boot-loading state when REST polled screen RAM too early. The passing + hardware fallback runs used `READYOS_BOOT_INITIAL_WAIT_S=220` and + `READYOS_QUIET_AFTER_APP_ENTER_S=95`. +- The quiet waits are test-harness discipline, not ReadyOS product behavior. + They avoid REST/memory reads while the C64 side may be inside KERNAL disk I/O. +- A long bad path is a separate config-parser failure mode. A 47-character + `C64U_IMAGE_PATH=...` line produced `CFG ERROR`/`ERR:2`; use a short invalid + path such as `/usb1/miss.d81` when testing missing-image fallback. + +Focused VICE regressions after these launcher/harness changes: + +- Regular D81 ReadyShell cross-app/overlay probe passed: + `logs/vice_auto_20260707_004150`, `"Status": "success"`. +- EasyFlash ReadyShell-only converted probe passed: + `logs/vice_auto_20260707_004251`, `"Status": "success"`. +- Empty-path D81 startup sanity in VICE passed: + `logs/vice_auto_20260707_002512`, `"Status": "success"`, asserting launcher + `DMA:NO`. + +## 2026-06-27 Launcher DMA Verification + +- Current tested branch build: `readyos-v0.2.5z-d81.d81`. + Local and FTP-downloaded `USB1/readyos-v0.2.5z-d81.d81` both hashed to + `42fd4f6e148aa5cab95972199324174acb807e219ff102c71b0eb444dab87c54` + before the hardware editor-direct run and again after the dotnet C64U suite. +- `apps.cfg` for this run deliberately used + `c64u_image_path=/usb1/readyos-v0.2.5z-d81.d81` and + `load_all_to_reu=0`, so the booter did not auto-preload everything. The + human/user-world rule remains: the D81 can be mounted normally by the user, + while launcher DMA only needs a configured C64U storage path when it must + remount/recover the image itself. +- The C64U path handling now sends Ultimate DOS storage path bytes in uppercase + for `CD`/`MOUNT` only, and leaves D81 file names for `OPEN` untouched. That + preserves the PETSCII/lowercase app/resource filename discipline inside the + mounted image while satisfying C64U storage-path matching for `/USB1`. +- The working mount recovery shape is `CD /`, then try `CD

` exactly as + configured, and if that status fails and the configured directory starts with + `/`, retry once without the leading slash. This fixed the previous + `ERR_PATH`/status `84` failure for `/usb1/...`. +- Do not add temporary top-left screen markers to launcher startup. They helped + diagnose draw progress, but they are not part of the working loader and can + look like the classic C64 blinking-cursor failure symptom. The remaining + `$052C-$0533` writes are the proven UCI pacing/status breadcrumbs inside the + loading screen area and are cleared on successful DMA. + +Measured launcher map for the verified `0.2.5Z` build: + +```text +LAUNCHER_DMA_LOAD=1 verified build: + SHA256 bin/launcher.prg 50e00ec57be0f2905ae25a003c2bcc58c539110fe22d630031a49ccb8ebd7ceb + CODE $1033..$B380 + RODATA $B381..$B957 + DATA $B958..$B989 + INIT $B98A..$B9A5 + ONCE $B9A6..$B9CB + BSS $B9CC..$C3F6 +``` + +Verification on C64U: + +- Static gates passed: `python3 build_support/verify_memory_map.py` and + `python3 build_support/verify_launcher_dma_gate.py`. +- Shell/REST editor-direct smoke passed with + `READYOS_EDITOR_DIRECT_PASS`. It booted the fresh D81 from `USB1`, reached + the launcher with `DMA:YES`, pressed Enter on Editor, showed the REU loading + progress, and landed in Editor. +- Dotnet C64U cross-app suite passed with `"Status": "success"` using + `/tmp/readyos_c64u_readyshell_dotnet_z3_20260627_131943` and trace + `logs/ultimate_auto_20260627_131952/trace.md`. It verified launcher + `DMA:YES`, direct Editor load returning to launcher as `DMA:ON`, ReadyBASIC + load returning as `DMA:ON`, and ReadyShell reaching its prompt after + ReadyBASIC. +- The same dotnet suite exercised ReadyShell overlays with `VER`, + `LST "RSHELP"`, another `VER`, and `CAT "RSHELP" . TOP 1`; the decoded + capture showed `NAME:RSHELP,BLOCKS:5,TYPE:SEQ` and `VERSION 0.2`, so the + previous ReadyShell overlay preload hang was not reproduced in this build. + +## 2026-06-29 Launcher-Shape UCI Timing Probe + +- The timing probe must use the launcher loader shape, not the older standalone + named `FILE_STAT` probe. The working shape is still: detect UCI, identify, + drive-info, optional root/CD/mount/CD-image, open filename inside the mounted + image, `FILE_INFO` on the open handle, read the two-byte PRG load header, + seek to payload offset 2, `LOAD_REU`, close. +- For per-stage timing, the probe now generates an instrumented copy of + `src/apps/launcher/launcher_uci_dma.s` at build time. The product launcher + source is not modified. The instrumented wrappers preserve the underlying + carry result with `php`/`plp`, so the launcher loader control flow remains + equivalent while accumulating stage timings in the probe result block. +- Use the low/mid jiffy bytes (`$A2/$A1`) for timing. Reading `$A0/$A1` + produced coarse `$0100`-tick steps and made stage timings look falsely + quantized. +- C64U run `USB1/UTV201111.D81` completed 29/29 launcher-style DMA loads: + `DONE:01`, `FAIL:00`, `SUCCESS:1D`, `loaded_kb=611`, `total_ms=83167`. +- Stage timing for the 29 loads, including the first-load mount path and + subsequent mounted-image opens: + +```text +load_reu 11.883s 14.3% +open 10.733s 12.9% +file_info 10.583s 12.7% +identify 9.717s 11.7% +read_header 9.683s 11.6% +drvinfo 9.667s 11.6% +close 9.650s 11.6% +seek_payload 9.650s 11.6% +mount 0.533s 0.6% +cd_image 0.367s 0.4% +cd_dir 0.350s 0.4% +cd_root 0.333s 0.4% +detect 0.000s 0.0% +``` + +- Interpretation: fixed per-file UCI command overhead dominates. The actual + `LOAD_REU` transfer was only about 14% of measured loader time for this + workload. The currently expensive per-file steps are open, file-info, + read-header, seek, close, and the repeated identify/drive-info calls. The + one-time path/mount/CD work is tiny after the launcher keeps the image + mounted for the session. + +## 2026-06-29 Fast-Raw Timing Variant + +- A second probe variant tested the aggressive hot path: after the image is + mounted, skip repeated detect/identify/drive-info and skip per-file + `FILE_INFO`, PRG header read, and seek. Each file uses the known PRG file + length from the build side, then does `OPEN`, one `LOAD_REU` from file offset + 0, and `CLOSE`. This deliberately loads the two-byte PRG address header into + REU too; it is a timing experiment, not a valid launcher contract yet. +- C64U run `USB1/UTF201821.D81` completed 29/29 fast-raw DMA loads: + `DONE:01`, `FAIL:00`, `SUCCESS:1D`, `loaded_kb=607`, `total_ms=33300`. +- Fast-raw stage timing for the 29 loads: + +```text +load_reu 11.483s 34.5% +open 10.233s 30.7% +close 9.367s 28.1% +mount 0.517s 1.6% +cd_image 0.367s 1.1% +cd_dir 0.350s 1.1% +drvinfo 0.333s 1.0% +cd_root 0.317s 1.0% +identify 0.317s 1.0% +detect 0.000s 0.0% +file_info 0.000s 0.0% +read_header 0.000s 0.0% +seek_payload 0.000s 0.0% +``` + +- Interpretation: `LOAD_REU` is not a standalone filename-based operation in + the command shape we are using; the file still has to be selected/opened + first. So the practical minimal per-file hot path is `OPEN + LOAD_REU + + CLOSE`, not just `LOAD_REU`. This cut total measured load time from 83.167s + to 33.300s for the same 29-item workload, about a 2.5x improvement, before + any future contract change to handle the two-byte PRG header correctly. + +## 2026-07-04 Launcher UI And C64U Verification + +- Current deployed manual-test artifact: `USB1/readyos-v0.2.5e-d81.d81`. + The release-side config for this build uses + `c64u_image_path=/usb1/readyos-v0.2.5e-d81.d81`, so the launcher and the + automation are testing the same fresh-named D81 rather than a reused + `readyos.d81` mount. +- The C64U automation deletes the same remote filename before upload, uploads + by FTP, verifies the FTP listing, sets Drive A to 1581, clears all 256 REU + banks with a tiny REST-run PRG, resets before mount, mounts the D81 as drive + A with `type=d81`, resets again, and only then starts ReadyOS. +- The boot path used by the shell harness is not an autoload configuration + path. After the hard reset it reaches BASIC and types `LOAD"BOOT",8` then + `RUN`; app loading is triggered later by launcher UI actions. +- Do not poll REST screen/RAM during the active booter/launcher disk load. The + harness waits through the boot window first, then captures screens. During + app DMA loads it is safe to capture screen RAM because the C64 side is showing + the launcher loading UI. +- The visible UCI breadcrumb was reduced to one stage digit on the bottom + loading line. The working UI form is now: + `DMA LOADING 1/1 - 9` for simple apps and + `DMA LOADING 6/10 - 1` style progress for ReadyShell main plus overlays. + The old second debug digit in the middle of the screen was removed. +- The bottom loading line explicitly says `DMA LOADING` or `DISK LOADING`. + A hardware regression run should search for `DISK LOADING` in captured + screens/logs when DMA is expected; none appeared in the verified `0.2.5E` + runs below. + +Measured launcher map for the verified `0.2.5E` build: + +```text +LAUNCHER_DMA_LOAD=1 verified build: + CODE $1033..$B482 size $A450 + RODATA $B483..$BA6F + DATA $BA70..$BAA1 + INIT $BAA2..$BABD + ONCE $BABE..$BAE3 + BSS $BAE4..$C514 size $0A31 +``` + +Verification on C64U, all from Terminal-owned/background shells: + +- Static checks passed: + `python3 build_support/verify_launcher_dma_gate.py`, + `python3 build_support/verify_memory_map.py`, + `python3 build_support/verify_resume_contract.py`, + and `bash -n build_support/run_readyos_boot_c64u_rest.sh`. +- Enter on Editor passed: + `READYOS_EDITOR_DIRECT_DMA_RETURN_PASS`. Captures showed + `DMA LOADING 1/1 - 2`, then `- 7`, then `- 9`, Editor opened, STOP + returned to the launcher, and the launcher showed `DMA:ON`. +- F3/load-selected Editor passed: + `READYOS_EDITOR_LOAD_SELECTED_PASS`. The load-selected screen showed + `DMA LOADING 1/1 - 9`, then `PRESS ANY KEY`; the launcher returned with + `DMA:ON`, and Enter opened Editor from REU. +- Load-all plus ReadyShell overlays passed: + `READYOS_LOADALL_READYSHELL_OVERLAY_PASS`. Captures showed ReadyShell + overlay progress such as `DMA LOADING 6/10`, `7/10`, `8/10`, `9/10`, and + `10/10`, then later simple apps as `1/1`. ReadyShell reached + `READYOS READYSHELL` / `LOADING DONE` and passed `VER`, `LST "RSHELP"`, + `CAT "RSHELP" . TOP 1`, and another `VER`. +- Browse/app-manifest load passed: + `READYOS_MANIFEST_SIDETRIS_PASS`. The manifest browser selected Sidetris, + the load screen showed `DMA LOADING 1/1 - 9`, the launcher returned with + `DMA:ON`, and Sidetris launched. +- ReadyBASIC F3/load-selected passed: + `READYOS_READYBASIC_LOAD_SELECTED_PASS`. The load-selected screen showed + `DMA LOADING 1/1 - 9`, the launcher returned with `DMA:ON`, and + ReadyBASIC reached its `READY.` prompt. + +Current automation caveat: + +- The harness can briefly look like it is still at BASIC after `LOAD"BOOT",8` + because it intentionally sleeps through the boot window before capturing the + launcher. Do not classify that as a launcher crash unless the later + `launcher_wait` capture fails and the final screen/memory dump also show no + ReadyOS progress. + +## 2026-07-05 DMA Must Not Fall Through To Disk + +The C64U manual test exposed a launcher integration bug that the earlier UI +checks were too weak to catch. The launcher showed `DMA:YES`, then a selected +app showed `DMA LOADING`, but after the Ultimate DOS attempt returned failure +the same load fell through to the normal disk/KERNAL loader. To a human this +looked like: + +- Editor: `DMA LOADING`, then slow `DISK LOADING` for the same app. +- ReadyShell: each `1/10`, `2/10`, etc. overlay could show a DMA stage and + then load the same file through disk, making the overlay preload extremely + slow and ambiguous. + +Correct launcher behavior: + +- If DMA is not available at all, the normal disk/chunked loader remains the + right fallback. This keeps regular VICE and non-Ultimate hardware working. +- If the launcher actually attempts an Ultimate DOS DMA load for the current + app/resource, a failure must be a failure for that item. Do not continue into + the disk path for the same item, and do not let `load all to REU` retry that + same item through disk. +- ReadyShell resources must follow the same rule as the main app PRG. A failed + DMA attempt for an overlay must not silently fall through to the chunked disk + resource loader. +- The UI distinction matters: `DMA:YES` means configured/available, `DMA:ON` + means at least one successful DMA transfer has completed, `DMA LOADING` means + the current transfer is using the Ultimate DOS path, and `DISK LOADING` means + the normal disk loader is active. + +Implementation lesson: + +- Keep one small launcher-local flag for "the current load attempted DMA". + Clear it when starting `load_app_to_reu()`, set it immediately before calling + the Ultimate DOS loader for either the main PRG or a resource PRG, and use it + to suppress load-all's historical retry path after a DMA-attempted failure. + This cost one BSS byte and kept the behavior contained inside the launcher. +- Do not mark an app/resource as loaded unless the DMA path completed and the + expected REU/control metadata was updated. Showing a DMA progress digit is + not proof that the app is usable. + +Automation lesson: + +- A quiet sleep followed by "did the app eventually load?" is not enough for + this feature. It can pass while hiding the exact bug we care about. +- Hardware tests must capture the loading screen repeatedly and treat + `DISK LOADING` as a failure whenever DMA is expected. They should also retain + the screen text that caused the failure. +- The useful C64U checks are now: + - Load all to REU plus ReadyShell overlay smoke. + - Enter on a single-file app such as Editor. + - F3/load-selected or equivalent background load for ReadyShell overlays. + - Browse/app-manifest load, then launch the selected app. +- A post-run grep across captured screens is a good sanity check: successful + DMA runs should have many `DMA LOADING` sightings and zero `DISK LOADING` + sightings. + +Verified C64U regression evidence for the corrected launcher: + +```text +READYOS_LOADALL_READYSHELL_OVERLAY_PASS +READYOS_EDITOR_DIRECT_DMA_RETURN_PASS +READYOS_READYSHELL_OVERLAY_SMOKE_PASS +READYOS_MANIFEST_SIDETRIS_PASS +``` + +The captured hardware artifacts for that run contained 267 `DMA LOADING` +matches and 0 `DISK LOADING` matches across the load-all, Enter, F3/load- +selected, and manifest-load paths. + +Fresh DMA launcher map after the fix: + +```text +LAUNCHER_DMA_LOAD=1 verified build: + CODE $1033..$B49E size $A46C + RODATA $B49F..$BA8B + DATA $BA8C..$BABD + ONCE $BADA..$BAFF + BSS $BB00..$C531 size $0A32 +``` + +## 2026-07-06 DMA Launcher Headroom Cliff + +The hardware blank-screen regression after the boot animation was not a boot, +preboot, or shim failure. The launcher had loaded and begun initialization, but +the DMA-enabled build had become too tight at the top of app RAM. It could +reach screen-clear/draw work and then fall over before the launcher menu became +visible. + +The important lesson is that the linker map's apparent end address is not the +whole safety story on C64/cc65. The launcher also needs real runtime stack +headroom below the ReadyOS app ceiling. A small assembler guard added during +the progress-display cleanup was enough to expose the cliff, but the underlying +problem was the DMA launcher's total footprint. + +Corrective approach: + +- Keep the Ultimate DOS stage-write code in the C64U-proven shape unless a new + hardware test proves a replacement. The visible write to `$07AE` is ugly, but + it has timing/transaction value on the real Ultimate hardware path. +- For `LAUNCHER_DMA_LOAD=1`, reduce the launcher catalog capacity from 64 app + slots to 32 app slots. The current D81 catalog has 20 apps, so this preserves + the SKU's practical behavior while freeing enough BSS for stable stack space. +- Leave non-DMA launcher builds at 64 app slots. +- Do not touch boot, preboot, shim, or app binaries for this class of fix; the + instability was in the launcher's own initialization/runtime footprint. + +Verified headroom build: + +```text +0.2.5X LAUNCHER_DMA_LOAD=1: + CODE $1033..$B4B7 size $A485 + RODATA $B4B8..$BAD6 size $061F + DATA $BAD7..$BB08 size $0032 + ONCE $BB25..$BB4A size $0026 + BSS $BB4B..$C3DA size $0890 + margin to $C590: 437 bytes + margin to $C600: 549 bytes +``` + +C64U verification for this corrected build: + +```text +/USB1/READYOS.D81 = readyos-v0.2.5x-d81.d81 +READYOS_EDITOR_DIRECT_DMA_RETURN_PASS +READYOS_BOOT_PASS +``` + +The packaged `apps.cfg` for the deployed D81 had: + +```text +LOAD_ALL_TO_REU=0 +RUNAPPFIRST= +C64U_IMAGE_PATH=/USB1/READYOS.D81 +``` + +Bad-path note: + +- A deliberately wrong `C64U_IMAGE_PATH` correctly produced `DMA:NO` and the + visible notice `UDOS MOUNT FAILED; DMA OFF`. +- That same bad-path test then hung after beginning the normal disk fallback + for Editor (`DISK LOADING 1/1 -`). Treat this as a separate follow-up before + claiming the UCI-failure fallback is fully robust. + +## 2026-07-06 DMA Open Failure Fallback + +The C64U hardware can report a usable UCI/DMA path during launcher startup and +still fail the later per-file Ultimate DOS open. In the reproduced Editor case, +the launcher reached the app menu with `DMA:YES`, but the direct DMA load failed +at the `OPEN "editor"` stage with Ultimate DOS status `84,NO FILE`. The same D81 +was mounted as drive 8 and the regular disk loader could load the app, so this +must be treated as an Ultimate DOS context/open failure rather than proof that +the image or app catalog is missing. + +The robust launcher behavior is therefore: + +- Probe UCI and the configured image path at startup, so the UI can still show + whether the DMA path appears available. +- Attempt DMA first when enabled and configured. +- If the actual file open fails (`launcher_uci_dma_last_error == $02`, with the + debug status bytes showing the Ultimate DOS error), disable the current DMA + attempt and fall through to the normal disk/shim loader. +- Do not surface this as `APP LOAD FAILED` unless the normal disk fallback also + fails. + +The first hardware-confirmed fallback build was `0.2.5T`: + +```text +/USB1/READYOS.D81 = readyos-v0.2.5t-d81.d81 +READYOS_EDITOR_DIRECT_DMA_RETURN_PASS +Observed sequence: DMA LOADING 1/1 - 5, then DISK LOADING 1/1 -, then Editor. +``` + +This does not solve the root cause of the intermittent `84,NO FILE` response +from Ultimate DOS, but it restores the user-facing happy path: selecting an app +loads it instead of bouncing back to the launcher with `APP LOAD FAILED`. + +Automation note: + +- `build_support/run_readyos_boot_c64u_rest.sh` now accepts + `C64U_MACHINE_REBOOT=1`. With that set, the harness uses + `PUT /v1/machine:reboot` instead of only `machine:reset` before the run. This + gives cleaner C64U hardware state for reproducing DMA/open behavior, while the + default remains the older reset path. + +## 2026-07-06 Reverted UCI-Failure Fallback + +The later hardware repro showed the `DMA open failed -> normal KERNAL disk +fallback` path was not actually robust. After an Ultimate DOS open failure with +status `84`, the launcher could enter the shim/KERNAL load markers and then hang +at `DISK LOADING 1/1 -`. That means the failed UCI transaction can leave enough +device/channel state behind that immediately falling into the normal disk path +is unsafe on the C64U. + +Corrected rule: + +- Keep the verified DMA load path from the `7107bef` hardware run intact. +- Do not alter `_launcher_uci_dma_load_prg` for UI niceties. +- Do not fall through to KERNAL disk loading after a real UCI file-open error + unless a future probe proves the cleanup sequence is safe on hardware. +- The only safe UX improvement at this stage is a startup mount probe: if UCI is + present but the configured `c64u_image_path` cannot be mounted, disable DMA and + display `UDOS MOUNT FAILED; DMA OFF` before the user tries to load an app. +- Even after a successful startup mount probe, leave + `launcher_dma_image_ready=0` so the real app/resource load still follows the + verified mount-and-load path rather than a new "already mounted" shortcut. + +Memory note for the restored launcher in the current tree: + +- The old 64-slot catalog shape now overflows the DMA-enabled launcher BSS. + Keep `APP_SLOT_CAPACITY=32` when `LAUNCHER_DMA_LOAD=1`; this is a memory + containment change, not a DMA transaction change. + +## 2026-07-06 Verified Restore: Versioned Path Matters + +The current branch was restored to a passing C64U Editor DMA smoke only after +matching all of these constraints: + +- Restore `src/apps/launcher/launcher_uci_dma.s` to the exact UCI load path from + the verified `7107bef` build. The later shared mount/probe helper looked + equivalent, but the hardware still failed at stage `55` with Ultimate DOS + status `84,NO FILE`. +- Do not let startup probing set `launcher_dma_image_ready=1`; skipping the + load-side mount/open sequence is not the verified path. +- Keep the volatile screen stage writes in both C and assembler. They are part + of the hardware-proven transaction shape, not disposable debug UI. +- Copy the DMA filename into launcher-owned RAM before calling the UCI loader. + The catalog text buffer is shared and may later contain app descriptions. +- The configured `c64u_image_path` must exactly match the actual file placed on + the C64U USB drive. The passing run used: + +```text +/USB1/readyos-v0.2.5g-d81.d81 +C64U_IMAGE_PATH=/usb1/readyos-v0.2.5g-d81.d81 +READYOS_EDITOR_DIRECT_DMA_RETURN_PASS +``` + +The generic `/usb1/readyos.d81` path repeatedly failed the restored current +branch at the UCI open stage. Treat the config/deployed-name match as a required +precondition for DMA until a smaller probe proves otherwise. + +Bad-path status: + +- The earlier negative startup mount probe is not currently safe to keep in the + launcher. It changed enough UCI/load state to break the good path. +- Reintroduce bad-path UI only after a standalone probe proves the sequence can + detect a missing image without altering the subsequent real app load path. + +## 2026-07-06 Hardware Restore Follow-up: Do Not Replace Mounted Images + +The fresh positive C64U smoke for `0.2.5K` passed with: + +```text +/USB1/readyos-v0.2.5k-d81.d81 +C64U_IMAGE_PATH=/usb1/readyos-v0.2.5k-d81.d81 +READYOS_EDITOR_DIRECT_DMA_RETURN_PASS +``` + +After that, a safe-looking negative build with an empty `c64u_image_path` did +not prove safe on hardware. It booted past BASIC `LOAD"BOOT",8`/`RUN` into a +blank ReadyOS-colored screen and never reached the launcher. Treat the empty +path negative as failed/unproven until it has its own smaller C64U probe or a +launcher-side diagnosis. Do not use it as evidence that the good path is safe. + +The important artifact-handling lesson came next. Rebuilding another `0.2.5K` +and letting the REST runner delete/re-upload `/USB1/readyos-v0.2.5k-d81.d81` +while that filename had recently been mounted produced the same blank boot +screen. Captured launcher/code memory matched the previous passing run, which +can simply be stale C64 RAM after reboot; screen state is the authority here. + +Using a new versioned remote filename avoided the problem: + +```text +/USB1/readyos-v0.2.5m-d81.d81 +C64U_IMAGE_PATH=/usb1/readyos-v0.2.5m-d81.d81 +READYOS_EDITOR_DIRECT_DMA_RETURN_PASS +``` + +Operational rule for C64U hardware automation: + +- Clear REU with the standalone automation program before boot. +- Hard reboot and remount the image after REU clear. +- Do not delete/re-upload the same D81 path if it may still be mounted or cached + by the C64U drive emulation. +- Prefer a fresh versioned D81 filename for each hardware proof, or explicitly + unmount/eject the previous image by a known-good C64U API/menu path before + replacing it. +- Keep the `c64u_image_path` inside `apps.cfg` matched exactly to the remote + filename being mounted. + +## 2026-07-06 Restore Verification: Positive Path vs Empty-Path Negative + +After reverting the fragile fallback/UI work, the restored launcher path was +proved again on fresh C64U filenames: + +```text +/USB1/readyos-v0.2.5n-d81.d81 +C64U_IMAGE_PATH=/usb1/readyos-v0.2.5n-d81.d81 +READYOS_EDITOR_DIRECT_DMA_RETURN_PASS + +/USB1/readyos-v0.2.5p-d81.d81 +C64U_IMAGE_PATH=/usb1/readyos-v0.2.5p-d81.d81 +READYOS_EDITOR_DIRECT_DMA_RETURN_PASS +``` + +Both runs used the standalone automation REU clear before reboot/mount/boot. +`READYOS_CLEAR_REU=1` is a harness environment variable, not an `apps.cfg` +setting and not a ReadyOS runtime feature. + +The launcher screen for the passing hardware build showed `DMA:YES` before the +first app load, then `DMA:ON` after Editor returned to the launcher with the +loaded marker. This is the current hardware proof of the restored DMA path. + +The empty `C64U_IMAGE_PATH=` negative remains nuanced: + +- The exact `0.2.5O` D81 with `C64U_IMAGE_PATH=` booted in VICE, displayed + `DMA:NO`, loaded Editor through the normal disk path, returned to the + launcher, then loaded ReadyShell through the normal disk/resource path and + reached the ReadyShell prompt. +- The same empty-path style still blanked on C64U after `LOAD"BOOT",8` and + `RUN`. That reproduces the hardware-side blank symptom, but VICE proves the + launcher parser/startup path itself is not generally broken by the empty + value. + +Do not use the C64U empty-path failure to justify changing the proven DMA +transaction. Treat it as a separate hardware/mount/runner investigation unless +it can be reduced to a launcher-only repro. + +Focused regression evidence from this restore: + +- C64U positive DMA Editor direct-load/return: + `/tmp/readyos_c64u_positive_p_20260706_220449` +- VICE no-DMA disk Editor plus ReadyShell: + `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260706_220237` +- VICE current `0.2.5P` no-UCI/no-DMA Editor plus ReadyShell, with + `$00CC == $01` proving the KERNAL cursor blink is disabled on the launcher: + `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260706_221238` +- EasyFlash ReadyShell cross-app suite: + `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260706_220333` diff --git a/agentworking/easyflash_focus_largevars/readybasic_large_vars_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_focus_largevars/readybasic_large_vars_probe.easyflash.yaml similarity index 100% rename from agentworking/easyflash_focus_largevars/readybasic_large_vars_probe.easyflash.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_focus_largevars/readybasic_large_vars_probe.easyflash.yaml diff --git a/agentworking/easyflash_focus_largevars/readybasic_large_vars_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_focus_largevars/readybasic_large_vars_probe.regular.yaml similarity index 100% rename from agentworking/easyflash_focus_largevars/readybasic_large_vars_probe.regular.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_focus_largevars/readybasic_large_vars_probe.regular.yaml diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_focus_largevars/readyos_data.easyflash-vice.d64 b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_focus_largevars/readyos_data.easyflash-vice.d64 new file mode 100644 index 0000000..61aa86d Binary files /dev/null and b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_focus_largevars/readyos_data.easyflash-vice.d64 differ diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.easyflash.yaml new file mode 100644 index 0000000..a5cf7e8 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.easyflash.yaml @@ -0,0 +1,1173 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_cross_app_resume_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 240 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 180 + capture_label: readybasic_prompt + - id: build_program_lines + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,80,82,73,78,84,32,34,79,78,69,34,13,50,48,32,80,82,73,78,84,32,34,84,87,79,34,13,51,48,32,80,82,73,78,84,32,34,84,72,82,69,69,34,13,52,48,32,80,82,73,78,84,32,34,70,79,85,82,34,13,53,48,32,80,82,73,78,84,32,34,70,73,86,69,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: clear_variables_after_program_entry + type: input.sequence + params: + keys: [67,76,82,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: seed_large_direct_vars + type: input.sequence + params: + keys: [65,36,61,34,65,76,80,72,65,34,13,66,36,61,34,66,82,65,86,79,34,13,71,36,61,34,67,72,65,82,76,73,69,34,13,68,36,61,34,68,69,76,84,65,34,13,68,73,77,32,69,40,50,48,48,41,13,69,40,49,57,57,41,61,49,50,51,52,13,80,82,73,78,84,32,65,36,13,80,82,73,78,84,32,66,36,13,80,82,73,78,84,32,71,36,13,80,82,73,78,84,32,68,36,13,80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: assert_setup_alpha + type: assert.screen + params: + contains: "ALPHA" + - id: assert_setup_bravo + type: assert.screen + params: + contains: "BRAVO" + - id: assert_setup_charlie + type: assert.screen + params: + contains: "CHARLIE" + - id: assert_setup_delta + type: assert.screen + params: + contains: "DELTA" + - id: assert_setup_array + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_1 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_1 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_1 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_1 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_1 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_1 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_1 + - id: list_after_cross_app_1 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_1 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_1 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_1 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_1 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_1 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_1 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_2 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_2 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_2 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_2 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_2 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_2 + - id: list_after_cross_app_2 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_2 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_2 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_2 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_2 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_2 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_2 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_3 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_3 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_3 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_3 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_3 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_3 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_3 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_3 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_3 + - id: list_after_cross_app_3 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_3 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_3 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_3 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_3 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_3 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_3 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_4 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_4 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_4 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_4 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_4 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_4 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_4 + - id: list_after_cross_app_4 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_4 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_4 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_4 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_4 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_4 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_4 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_5 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_5 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_5 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_5 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_5 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_5 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_5 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_5 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_5 + - id: list_after_cross_app_5 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_5 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_5 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_5 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_5 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_5 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_5 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_6 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_6 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_6 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_6 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_6 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_6 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_6 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_6 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_6 + - id: list_after_cross_app_6 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_6 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_6 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_6 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_6 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_6 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_6 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_6 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_6 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_6 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_6 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_6 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_7 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_7 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_7 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_7 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_7 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_7 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_7 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_7 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_7 + - id: list_after_cross_app_7 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_7 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_7 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_7 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_7 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_7 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_7 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_7 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_7 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_7 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_7 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_7 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_8 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_8 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_8 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_8 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_8 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_8 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_8 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_8 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_8 + - id: list_after_cross_app_8 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_8 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_8 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_8 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_8 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_8 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_8 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_8 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_8 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_8 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_8 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_8 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_9 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_9 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_9 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_9 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_9 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_9 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_9 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_9 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_9 + - id: list_after_cross_app_9 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_9 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_9 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_9 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_9 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_9 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_9 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_9 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_9 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_9 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_9 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_9 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_10 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_10 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_10 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_10 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_10 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_10 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_10 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_10 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_10 + - id: list_after_cross_app_10 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_10 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_10 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_10 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_10 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_10 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_10 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_10 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_10 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_10 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_10 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_10 + type: assert.screen + params: + contains: "1234" + - id: dump_final_state + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_text_and_vars_1200, start: 0x1200, end: 0x1700 } + - { label: string_heap_9400, start: 0x9400, end: 0x9600 } + - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.regular.yaml new file mode 100644 index 0000000..fbe9e7a --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.regular.yaml @@ -0,0 +1,1158 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_cross_app_resume_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 240 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 180 + capture_label: readybasic_prompt + - id: build_program_lines + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,80,82,73,78,84,32,34,79,78,69,34,13,50,48,32,80,82,73,78,84,32,34,84,87,79,34,13,51,48,32,80,82,73,78,84,32,34,84,72,82,69,69,34,13,52,48,32,80,82,73,78,84,32,34,70,79,85,82,34,13,53,48,32,80,82,73,78,84,32,34,70,73,86,69,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: clear_variables_after_program_entry + type: input.sequence + params: + keys: [67,76,82,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: seed_large_direct_vars + type: input.sequence + params: + keys: [65,36,61,34,65,76,80,72,65,34,13,66,36,61,34,66,82,65,86,79,34,13,71,36,61,34,67,72,65,82,76,73,69,34,13,68,36,61,34,68,69,76,84,65,34,13,68,73,77,32,69,40,50,48,48,41,13,69,40,49,57,57,41,61,49,50,51,52,13,80,82,73,78,84,32,65,36,13,80,82,73,78,84,32,66,36,13,80,82,73,78,84,32,71,36,13,80,82,73,78,84,32,68,36,13,80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: assert_setup_alpha + type: assert.screen + params: + contains: "ALPHA" + - id: assert_setup_bravo + type: assert.screen + params: + contains: "BRAVO" + - id: assert_setup_charlie + type: assert.screen + params: + contains: "CHARLIE" + - id: assert_setup_delta + type: assert.screen + params: + contains: "DELTA" + - id: assert_setup_array + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_1 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_1 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_1 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_1 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_1 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_1 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_1 + - id: list_after_cross_app_1 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_1 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_1 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_1 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_1 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_1 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_1 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_2 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_2 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_2 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_2 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_2 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_2 + - id: list_after_cross_app_2 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_2 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_2 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_2 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_2 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_2 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_2 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_3 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_3 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_3 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_3 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_3 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_3 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_3 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_3 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_3 + - id: list_after_cross_app_3 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_3 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_3 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_3 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_3 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_3 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_3 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_4 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_4 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_4 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_4 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_4 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_4 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_4 + - id: list_after_cross_app_4 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_4 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_4 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_4 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_4 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_4 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_4 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_5 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_5 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_5 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_5 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_5 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_5 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_5 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_5 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_5 + - id: list_after_cross_app_5 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_5 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_5 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_5 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_5 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_5 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_5 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_6 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_6 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_6 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_6 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_6 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_6 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_6 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_6 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_6 + - id: list_after_cross_app_6 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_6 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_6 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_6 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_6 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_6 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_6 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_6 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_6 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_6 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_6 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_6 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_7 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_7 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_7 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_7 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_7 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_7 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_7 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_7 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_7 + - id: list_after_cross_app_7 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_7 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_7 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_7 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_7 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_7 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_7 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_7 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_7 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_7 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_7 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_7 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_8 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_8 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_8 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_8 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_8 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_8 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_8 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_8 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_8 + - id: list_after_cross_app_8 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_8 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_8 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_8 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_8 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_8 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_8 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_8 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_8 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_8 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_8 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_8 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_9 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_9 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_9 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_9 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_9 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_9 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_9 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_9 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_9 + - id: list_after_cross_app_9 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_9 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_9 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_9 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_9 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_9 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_9 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_9 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_9 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_9 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_9 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_9 + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic_10 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit_10 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + # The cross-app leg deliberately uses Editor as the deterministic + # "other app" so this probe tests ReadyBASIC suspend/resume only. + - id: move_from_readybasic_to_editor_10 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_10 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: ctrl_b_to_launcher_from_editor_10 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_10 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_from_editor_to_readybasic_10 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_10 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_10 + - id: list_after_cross_app_10 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_after_cross_app_10 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_cross_app_10 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_a_after_cross_app_10 + type: assert.screen + params: + contains: "ALPHA" + - id: print_b_after_cross_app_10 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_b_after_cross_app_10 + type: assert.screen + params: + contains: "BRAVO" + - id: print_g_after_cross_app_10 + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_g_after_cross_app_10 + type: assert.screen + params: + contains: "CHARLIE" + - id: print_d_after_cross_app_10 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_d_after_cross_app_10 + type: assert.screen + params: + contains: "DELTA" + - id: print_e_after_cross_app_10 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: assert_e_after_cross_app_10 + type: assert.screen + params: + contains: "1234" + - id: dump_final_state + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_text_and_vars_1200, start: 0x1200, end: 0x1700 } + - { label: string_heap_9400, start: 0x9400, end: 0x9600 } + - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_demo_suite.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_demo_suite.easyflash.yaml new file mode 100644 index 0000000..b03998c --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_demo_suite.easyflash.yaml @@ -0,0 +1,452 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_demo_suite_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 240 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "FREE:" + wait_timeout_s: 180 + capture_label: demo_readybasic_prompt + - id: warp_off_for_visible_demo + type: warp.set + params: + enabled: false + capture_after: false + - id: demo_01_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,49,58,32,82,69,65,68,89,66,65,83,73,67,32,66,65,83,73,67,83,34,13,80,82,73,78,84,32,34,70,82,69,69,77,69,77,44,32,86,65,82,73,65,66,76,69,83,44,32,65,78,68,32,65,32,80,82,79,71,82,65,77,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_01_setup + type: input.sequence + params: + keys: [70,82,69,69,77,69,77,40,41,13,78,69,87,13,65,37,61,52,50,13,49,48,32,66,37,61,90,65,68,68,49,54,40,52,50,44,56,41,13,50,48,32,80,82,73,78,84,32,34,80,82,79,71,82,65,77,32,83,85,77,34,59,66,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_01_list + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_01_basics + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,82,85,78,32,80,82,73,78,84,83,32,80,82,79,71,82,65,77,32,83,85,77,32,53,48,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13,65,37,61,52,50,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_01_program_sum + type: assert.screen + params: + contains: "PROGRAM SUM 50" + - id: demo_02_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,50,58,32,83,85,83,80,69,78,68,32,65,78,68,32,82,69,83,84,79,82,69,34,13,80,82,73,78,84,32,34,69,88,73,84,32,84,79,32,82,69,65,68,89,79,83,44,32,86,73,83,73,84,32,69,68,73,84,79,82,44,32,82,69,84,85,82,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_02_exit_to_launcher + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: capture_after_demo_02_exit + type: screen.capture + params: + label: after_demo_02_exit + - id: wait_launcher_after_demo_02_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_demo + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.05 + post_delay_s: 3.5 + - id: wait_editor_demo + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_demo_sentence + type: input.sequence + params: + keys: [82,69,65,68,89,66,65,83,73,67,32,68,69,77,79,32,86,73,83,73,84,69,68,32,69,68,73,84,79,82,32,65,78,68,32,82,69,84,85,82,78,69,68,46,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: ctrl_b_editor_demo + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.05 + post_delay_s: 3.5 + - id: wait_launcher_after_editor_demo + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_demo + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.05 + post_delay_s: 3.5 + - id: wait_readybasic_after_editor_demo + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 60 + - id: demo_03_resume_liveness + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,82,69,83,85,77,69,32,76,73,86,69,34,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_03_resume_liveness + type: assert.screen + params: + contains: "RESUME LIVE" + - id: demo_03_resume_intro_clear + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,66,65,67,75,32,73,78,32,82,69,65,68,89,66,65,83,73,67,34,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_03_resume_intro_detail + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,86,65,82,73,65,66,76,69,83,32,65,78,68,32,80,82,79,71,82,65,77,32,84,69,88,84,32,83,72,79,85,76,68,32,82,69,77,65,73,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_03_resume_var_proof + type: input.sequence + params: + keys: [70,82,69,69,77,69,77,40,41,13,80,82,73,78,84,32,34,65,32,83,84,73,76,76,34,59,65,37,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,65,32,73,83,32,52,50,32,65,78,68,32,82,85,78,32,83,84,73,76,76,32,87,79,82,75,83,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: capture_demo_03_resume_var_proof + type: screen.capture + params: + label: demo_03_resume_var_proof + - id: assert_demo_03_var_restored + type: assert.screen + params: + contains: "A STILL 42" + - id: demo_03_resume_run_proof + type: input.sequence + params: + keys: [82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_03_program_restored + type: assert.screen + params: + contains: "PROGRAM SUM 50" + - id: demo_04_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,51,58,32,65,83,83,69,77,66,76,69,82,32,67,79,77,77,65,78,68,83,34,13,80,82,73,78,84,32,34,67,79,77,77,65,78,68,83,32,82,69,84,85,82,78,32,86,65,76,85,69,83,32,65,83,32,69,88,80,82,69,83,83,73,79,78,83,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_04_assembler_setup + type: input.sequence + params: + keys: [78,37,61,90,65,68,68,49,54,40,55,44,56,41,13,84,36,61,85,80,80,69,82,40,34,114,101,97,100,121,34,41,13,76,36,61,76,79,87,69,82,40,34,76,79,85,68,34,41,13,72,37,61,90,72,73,68,68,69,78,82,65,77,40,34,65,66,34,41,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,49,53,44,32,82,69,65,68,89,44,32,76,79,87,69,82,44,32,49,51,49,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_04_zadd_print + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,90,65,68,68,34,59,78,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_04_upper_print + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,85,80,80,69,82,32,34,59,84,36,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_04_lower_print + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,76,79,87,65,83,67,34,59,65,83,67,40,76,36,41,59,65,83,67,40,77,73,68,36,40,76,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,51,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,52,44,49,41,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_04_hidden_print + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,73,68,68,69,78,34,59,72,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_04_zadd + type: assert.screen + params: + contains: "ZADD 15" + - id: assert_demo_04_upper + type: assert.screen + params: + contains: "UPPER READY" + - id: assert_demo_04_hidden + type: assert.screen + params: + contains: "HIDDEN 131" + - id: demo_05_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,52,58,32,80,82,79,67,32,79,78,76,89,34,13,80,82,73,78,84,32,34,80,82,79,67,32,84,65,75,69,83,32,80,65,82,65,77,69,84,69,82,83,32,65,78,68,32,68,79,69,83,32,87,79,82,75,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05_program + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,69,88,69,67,32,83,72,79,87,40,34,82,69,65,68,89,34,41,13,50,48,32,69,78,68,13,49,48,48,32,80,82,79,67,32,83,72,79,87,40,83,36,41,13,49,49,48,32,32,80,82,73,78,84,32,34,80,82,79,67,32,34,59,83,36,13,49,50,48,32,69,78,68,80,13,76,73,83,84,32,49,48,48,45,49,50,48,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05_proc_func + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,80,82,79,67,32,82,69,65,68,89,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_05_proc + type: assert.screen + params: + contains: "PROC READY" + - id: demo_05b_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,53,58,32,73,78,84,69,71,69,82,32,70,85,78,67,34,13,80,82,73,78,84,32,34,70,85,78,67,32,82,69,84,85,82,78,83,32,84,72,82,79,85,71,72,32,82,69,84,32,65,83,32,65,78,32,69,88,80,82,69,83,83,73,79,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05b_program + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,65,37,61,65,68,68,73,40,52,44,53,41,13,50,48,32,80,82,73,78,84,32,34,65,68,68,73,34,59,65,37,13,51,48,32,69,78,68,13,49,48,48,32,70,85,78,67,32,65,68,68,73,40,88,37,44,89,37,41,13,49,49,48,32,32,82,69,84,32,88,37,43,89,37,13,49,50,48,32,69,78,68,80,13,76,73,83,84,32,49,48,48,45,49,50,48,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05b_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,65,68,68,73,32,57,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_05_addi + type: assert.screen + params: + contains: "ADDI 9" + - id: demo_05c_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,54,58,32,83,84,82,73,78,71,32,65,78,68,32,70,76,79,65,84,32,70,85,78,67,83,34,13,80,82,73,78,84,32,34,82,69,84,32,75,69,69,80,83,32,83,84,82,73,78,71,32,65,78,68,32,80,76,65,73,78,32,78,85,77,69,82,73,67,32,84,89,80,69,83,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05c_program + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,84,36,61,72,69,76,76,79,40,34,75,65,82,76,34,41,13,50,48,32,80,82,73,78,84,32,84,36,13,51,48,32,70,61,83,67,65,76,69,40,50,46,53,41,13,52,48,32,80,82,73,78,84,32,34,83,67,65,76,69,34,59,70,13,53,48,32,69,78,68,13,49,48,48,32,70,85,78,67,32,72,69,76,76,79,40,78,36,41,13,49,49,48,32,32,82,69,84,32,34,72,73,32,34,43,78,36,13,49,50,48,32,69,78,68,80,13,49,51,48,32,70,85,78,67,32,83,67,65,76,69,40,88,41,13,49,52,48,32,32,82,69,84,32,88,42,49,46,53,13,49,53,48,32,69,78,68,80,13,76,73,83,84,32,49,48,48,45,49,53,48,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05c_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,72,73,32,75,65,82,76,32,65,78,68,32,83,67,65,76,69,32,51,46,55,53,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_05_hello + type: assert.screen + params: + contains: "HI KARL" + - id: assert_demo_05_scale + type: assert.screen + params: + contains: "SCALE 3.75" + - id: demo_06_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,55,58,32,80,65,82,65,77,69,84,69,82,32,71,82,79,85,80,83,34,13,80,82,73,78,84,32,34,65,82,82,65,89,83,44,32,73,78,84,69,71,69,82,32,82,69,84,85,82,78,83,44,32,65,78,68,32,70,76,79,65,84,83,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_06_parameter_groups + type: input.sequence + params: + keys: [68,73,77,32,65,37,40,51,41,58,65,37,40,48,41,61,49,58,65,37,40,49,41,61,50,58,65,37,40,50,41,61,51,13,83,37,61,90,83,85,77,78,85,77,65,82,82,65,89,40,65,37,40,48,41,44,51,41,13,68,73,77,32,82,37,40,52,41,58,90,82,65,78,71,69,78,85,77,65,82,82,65,89,40,55,44,52,44,82,37,40,48,41,41,13,70,61,70,65,68,68,40,49,46,50,44,50,46,51,41,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,83,85,77,32,54,44,32,82,65,78,71,69,32,55,46,46,49,48,44,32,70,65,68,68,32,51,46,53,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,80,82,73,78,84,32,34,83,85,77,34,59,83,37,13,80,82,73,78,84,32,34,82,65,78,71,69,34,59,82,37,40,48,41,59,82,37,40,51,41,13,80,82,73,78,84,32,34,70,65,68,68,34,59,70,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_06_sum + type: assert.screen + params: + contains: "SUM 6" + - id: assert_demo_06_range + type: assert.screen + params: + contains: "RANGE 7 10" + - id: assert_demo_06_fadd + type: assert.screen + params: + contains: "FADD 3.5" + - id: demo_07_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,56,58,32,82,69,85,32,66,85,70,70,69,82,32,67,79,77,77,65,78,68,83,34,13,80,82,73,78,84,32,34,66,85,70,78,69,87,32,82,69,84,85,82,78,83,59,32,70,73,76,76,32,65,78,68,32,70,82,69,69,32,68,79,32,87,79,82,75,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_07_reu + type: input.sequence + params: + keys: [72,37,61,66,85,70,78,69,87,40,54,52,41,13,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,72,65,78,68,76,69,32,49,44,32,84,72,69,78,32,70,82,69,69,68,32,49,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,80,82,73,78,84,32,34,72,65,78,68,76,69,34,59,72,37,13,66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,68,34,59,72,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_07_handle + type: assert.screen + params: + contains: "HANDLE 1" + - id: assert_demo_07_freed + type: assert.screen + params: + contains: "FREED 1" + - id: demo_08_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,57,58,32,83,67,82,69,69,78,32,84,72,82,79,85,71,72,32,82,69,85,34,13,80,82,73,78,84,32,34,83,67,82,67,65,80,32,83,65,86,69,83,59,32,83,67,82,80,85,84,32,82,69,83,84,79,82,69,83,32,83,67,82,69,69,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_08_screen_reu_a + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,68,73,77,32,72,37,40,52,41,13,50,48,32,70,79,82,32,83,61,49,32,84,79,32,52,13,51,48,32,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,82,69,85,32,83,67,82,69,69,78,34,59,83,13,52,48,32,80,82,73,78,84,32,67,72,82,36,40,53,41,59,34,77,65,82,75,34,59,83,59,34,32,84,69,88,84,32,65,78,68,32,67,79,76,79,82,34,13,53,48,32,70,79,82,32,73,61,48,32,84,79,32,51,57,13,54,48,32,80,79,75,69,49,48,50,52,43,56,48,43,73,44,54,52,43,83,13,55,48,32,80,79,75,69,53,53,50,57,54,43,56,48,43,73,44,83,43,49,13,56,48,32,78,69,88,84,32,73,13,57,48,32,72,37,40,83,41,61,83,67,82,67,65,80,40,41,13,49,48,48,32,78,69,88,84,32,83,13,49,49,48,32,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,82,69,85,32,70,76,73,80,66,79,79,75,34,13,49,50,48,32,80,82,73,78,84,32,67,72,82,36,40,53,41,59,34,69,88,80,69,67,84,58,32,70,79,85,82,32,82,69,83,84,79,82,69,68,32,83,67,82,69,69,78,83,34,13,49,51,48,32,70,79,82,32,83,61,49,32,84,79,32,52,13,49,52,48,32,83,67,82,80,85,84,40,72,37,40,83,41,41,13,49,53,48,32,80,82,73,78,84,32,67,72,82,36,40,49,57,41,59,34,82,69,83,84,79,82,69,68,34,59,83,59,34,47,52,34,13,49,54,48,32,90,80,65,85,83,69,40,51,48,41,13,49,55,48,32,78,69,88,84,32,83,13,49,56,48,32,80,82,73,78,84,32,67,72,82,36,40,49,57,41,59,34,82,69,83,84,79,82,69,68,32,52,32,82,69,85,32,83,67,82,69,69,78,83,34,13,49,57,48,32,69,78,68,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_08_screen_reu_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,70,79,85,82,32,68,73,70,70,69,82,69,78,84,32,83,67,82,69,69,78,83,32,70,76,73,80,32,66,65,67,75,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: wait_demo_08_reu_flipbook + type: screen.wait_contains + params: + text: "RESTORED 4 REU SCREENS" + wait_timeout_s: 90 + - id: assert_demo_08_reu_flipbook + type: assert.screen + params: + contains: "RESTORED 4 REU SCREENS" + - id: demo_09_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,49,48,58,32,67,79,78,84,82,79,76,76,69,68,32,69,82,82,79,82,34,13,80,82,73,78,84,32,34,90,70,65,73,76,32,83,72,79,87,83,32,82,69,65,68,89,66,65,83,73,67,32,69,82,82,79,82,32,67,76,69,65,78,85,80,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_09_zfail + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,82,66,32,69,82,82,79,82,32,55,32,65,78,68,32,88,37,32,66,69,67,79,77,69,83,32,90,69,82,79,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,88,37,61,57,57,13,90,70,65,73,76,40,55,44,88,37,41,13,80,82,73,78,84,32,34,65,70,84,69,82,32,70,65,73,76,34,59,88,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_09_rb_error + type: assert.screen + params: + contains: "RB ERROR 7" + - id: assert_demo_09_fail_clear + type: assert.screen + params: + contains: "AFTER FAIL 0" + - id: demo_10_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,49,49,58,32,78,69,83,84,69,68,32,69,88,80,82,69,83,83,73,79,78,83,34,13,80,82,73,78,84,32,34,67,79,77,77,65,78,68,83,32,65,78,68,32,70,85,78,67,83,32,70,69,69,68,32,79,84,72,69,82,32,69,88,80,82,69,83,83,73,79,78,83,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_10_program + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,70,85,78,67,32,65,68,68,73,40,88,37,44,89,37,41,13,50,48,32,32,82,69,84,32,88,37,43,89,37,13,51,48,32,69,78,68,80,13,52,48,32,70,85,78,67,32,71,82,69,69,84,40,78,36,41,13,53,48,32,32,82,69,84,32,34,72,73,32,34,43,78,36,13,54,48,32,69,78,68,80,13,55,48,32,80,82,73,78,84,32,34,65,66,83,34,59,65,66,83,40,90,65,68,68,49,54,40,49,44,54,41,45,49,48,41,13,56,48,32,80,82,73,78,84,32,34,76,69,70,84,32,34,59,76,69,70,84,36,40,85,80,80,69,82,40,34,114,101,97,100,121,34,41,44,50,41,13,57,48,32,80,82,73,78,84,32,34,78,69,83,84,34,59,90,65,68,68,49,54,40,49,44,90,65,68,68,49,54,40,50,44,51,41,41,13,49,48,48,32,80,82,73,78,84,32,34,70,65,66,83,34,59,65,66,83,40,70,65,68,68,40,49,46,50,44,50,46,51,41,45,51,41,13,49,49,48,32,80,82,73,78,84,32,34,70,76,69,70,84,32,34,59,76,69,70,84,36,40,71,82,69,69,84,40,34,82,69,65,68,89,34,41,43,34,33,34,44,51,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_10_expressions + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,65,66,83,32,51,44,32,76,69,70,84,32,82,69,44,32,78,69,83,84,32,54,44,32,70,76,69,70,84,32,72,73,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_10_abs + type: assert.screen + params: + contains: "ABS 3" + - id: assert_demo_10_left + type: assert.screen + params: + contains: "LEFT RE" + - id: assert_demo_10_nest + type: assert.screen + params: + contains: "NEST 6" + - id: assert_demo_10_fleft + type: assert.screen + params: + contains: "FLEFT HI" + - id: demo_done + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,67,79,77,80,76,69,84,69,34,13,80,82,73,78,84,32,34,67,79,77,77,65,78,68,83,44,32,80,82,79,67,47,70,85,78,67,44,32,82,69,85,44,32,69,82,82,79,82,83,32,80,65,83,83,69,68,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,80,82,73,78,84,32,34,82,69,65,68,89,66,65,83,73,67,32,68,69,77,79,32,67,79,77,80,76,69,84,69,34,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_done + type: assert.screen + params: + contains: "READYBASIC DEMO COMPLETE" + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_demo_suite.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_demo_suite.regular.yaml new file mode 100644 index 0000000..91618fe --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_demo_suite.regular.yaml @@ -0,0 +1,437 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_demo_suite +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 240 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: false + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "FREE:" + wait_timeout_s: 180 + capture_label: demo_readybasic_prompt + - id: warp_off_for_visible_demo + type: warp.set + params: + enabled: false + capture_after: false + - id: demo_01_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,49,58,32,82,69,65,68,89,66,65,83,73,67,32,66,65,83,73,67,83,34,13,80,82,73,78,84,32,34,70,82,69,69,77,69,77,44,32,86,65,82,73,65,66,76,69,83,44,32,65,78,68,32,65,32,80,82,79,71,82,65,77,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_01_setup + type: input.sequence + params: + keys: [70,82,69,69,77,69,77,40,41,13,78,69,87,13,65,37,61,52,50,13,49,48,32,66,37,61,90,65,68,68,49,54,40,52,50,44,56,41,13,50,48,32,80,82,73,78,84,32,34,80,82,79,71,82,65,77,32,83,85,77,34,59,66,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_01_list + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_01_basics + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,82,85,78,32,80,82,73,78,84,83,32,80,82,79,71,82,65,77,32,83,85,77,32,53,48,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13,65,37,61,52,50,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_01_program_sum + type: assert.screen + params: + contains: "PROGRAM SUM 50" + - id: demo_02_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,50,58,32,83,85,83,80,69,78,68,32,65,78,68,32,82,69,83,84,79,82,69,34,13,80,82,73,78,84,32,34,69,88,73,84,32,84,79,32,82,69,65,68,89,79,83,44,32,86,73,83,73,84,32,69,68,73,84,79,82,44,32,82,69,84,85,82,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_02_exit_to_launcher + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: capture_after_demo_02_exit + type: screen.capture + params: + label: after_demo_02_exit + - id: wait_launcher_after_demo_02_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_demo + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.05 + post_delay_s: 3.5 + - id: wait_editor_demo + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_demo_sentence + type: input.sequence + params: + keys: [82,69,65,68,89,66,65,83,73,67,32,68,69,77,79,32,86,73,83,73,84,69,68,32,69,68,73,84,79,82,32,65,78,68,32,82,69,84,85,82,78,69,68,46,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: ctrl_b_editor_demo + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.05 + post_delay_s: 3.5 + - id: wait_launcher_after_editor_demo + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_demo + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.05 + post_delay_s: 3.5 + - id: wait_readybasic_after_editor_demo + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 60 + - id: demo_03_resume_liveness + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,82,69,83,85,77,69,32,76,73,86,69,34,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_03_resume_liveness + type: assert.screen + params: + contains: "RESUME LIVE" + - id: demo_03_resume_intro_clear + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,66,65,67,75,32,73,78,32,82,69,65,68,89,66,65,83,73,67,34,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_03_resume_intro_detail + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,86,65,82,73,65,66,76,69,83,32,65,78,68,32,80,82,79,71,82,65,77,32,84,69,88,84,32,83,72,79,85,76,68,32,82,69,77,65,73,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_03_resume_var_proof + type: input.sequence + params: + keys: [70,82,69,69,77,69,77,40,41,13,80,82,73,78,84,32,34,65,32,83,84,73,76,76,34,59,65,37,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,65,32,73,83,32,52,50,32,65,78,68,32,82,85,78,32,83,84,73,76,76,32,87,79,82,75,83,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: capture_demo_03_resume_var_proof + type: screen.capture + params: + label: demo_03_resume_var_proof + - id: assert_demo_03_var_restored + type: assert.screen + params: + contains: "A STILL 42" + - id: demo_03_resume_run_proof + type: input.sequence + params: + keys: [82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_03_program_restored + type: assert.screen + params: + contains: "PROGRAM SUM 50" + - id: demo_04_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,51,58,32,65,83,83,69,77,66,76,69,82,32,67,79,77,77,65,78,68,83,34,13,80,82,73,78,84,32,34,67,79,77,77,65,78,68,83,32,82,69,84,85,82,78,32,86,65,76,85,69,83,32,65,83,32,69,88,80,82,69,83,83,73,79,78,83,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_04_assembler_setup + type: input.sequence + params: + keys: [78,37,61,90,65,68,68,49,54,40,55,44,56,41,13,84,36,61,85,80,80,69,82,40,34,114,101,97,100,121,34,41,13,76,36,61,76,79,87,69,82,40,34,76,79,85,68,34,41,13,72,37,61,90,72,73,68,68,69,78,82,65,77,40,34,65,66,34,41,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,49,53,44,32,82,69,65,68,89,44,32,76,79,87,69,82,44,32,49,51,49,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_04_zadd_print + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,90,65,68,68,34,59,78,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_04_upper_print + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,85,80,80,69,82,32,34,59,84,36,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_04_lower_print + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,76,79,87,65,83,67,34,59,65,83,67,40,76,36,41,59,65,83,67,40,77,73,68,36,40,76,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,51,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,52,44,49,41,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_04_hidden_print + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,73,68,68,69,78,34,59,72,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_04_zadd + type: assert.screen + params: + contains: "ZADD 15" + - id: assert_demo_04_upper + type: assert.screen + params: + contains: "UPPER READY" + - id: assert_demo_04_hidden + type: assert.screen + params: + contains: "HIDDEN 131" + - id: demo_05_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,52,58,32,80,82,79,67,32,79,78,76,89,34,13,80,82,73,78,84,32,34,80,82,79,67,32,84,65,75,69,83,32,80,65,82,65,77,69,84,69,82,83,32,65,78,68,32,68,79,69,83,32,87,79,82,75,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05_program + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,69,88,69,67,32,83,72,79,87,40,34,82,69,65,68,89,34,41,13,50,48,32,69,78,68,13,49,48,48,32,80,82,79,67,32,83,72,79,87,40,83,36,41,13,49,49,48,32,32,80,82,73,78,84,32,34,80,82,79,67,32,34,59,83,36,13,49,50,48,32,69,78,68,80,13,76,73,83,84,32,49,48,48,45,49,50,48,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05_proc_func + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,80,82,79,67,32,82,69,65,68,89,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_05_proc + type: assert.screen + params: + contains: "PROC READY" + - id: demo_05b_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,53,58,32,73,78,84,69,71,69,82,32,70,85,78,67,34,13,80,82,73,78,84,32,34,70,85,78,67,32,82,69,84,85,82,78,83,32,84,72,82,79,85,71,72,32,82,69,84,32,65,83,32,65,78,32,69,88,80,82,69,83,83,73,79,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05b_program + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,65,37,61,65,68,68,73,40,52,44,53,41,13,50,48,32,80,82,73,78,84,32,34,65,68,68,73,34,59,65,37,13,51,48,32,69,78,68,13,49,48,48,32,70,85,78,67,32,65,68,68,73,40,88,37,44,89,37,41,13,49,49,48,32,32,82,69,84,32,88,37,43,89,37,13,49,50,48,32,69,78,68,80,13,76,73,83,84,32,49,48,48,45,49,50,48,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05b_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,65,68,68,73,32,57,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_05_addi + type: assert.screen + params: + contains: "ADDI 9" + - id: demo_05c_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,54,58,32,83,84,82,73,78,71,32,65,78,68,32,70,76,79,65,84,32,70,85,78,67,83,34,13,80,82,73,78,84,32,34,82,69,84,32,75,69,69,80,83,32,83,84,82,73,78,71,32,65,78,68,32,80,76,65,73,78,32,78,85,77,69,82,73,67,32,84,89,80,69,83,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05c_program + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,84,36,61,72,69,76,76,79,40,34,75,65,82,76,34,41,13,50,48,32,80,82,73,78,84,32,84,36,13,51,48,32,70,61,83,67,65,76,69,40,50,46,53,41,13,52,48,32,80,82,73,78,84,32,34,83,67,65,76,69,34,59,70,13,53,48,32,69,78,68,13,49,48,48,32,70,85,78,67,32,72,69,76,76,79,40,78,36,41,13,49,49,48,32,32,82,69,84,32,34,72,73,32,34,43,78,36,13,49,50,48,32,69,78,68,80,13,49,51,48,32,70,85,78,67,32,83,67,65,76,69,40,88,41,13,49,52,48,32,32,82,69,84,32,88,42,49,46,53,13,49,53,48,32,69,78,68,80,13,76,73,83,84,32,49,48,48,45,49,53,48,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_05c_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,72,73,32,75,65,82,76,32,65,78,68,32,83,67,65,76,69,32,51,46,55,53,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_05_hello + type: assert.screen + params: + contains: "HI KARL" + - id: assert_demo_05_scale + type: assert.screen + params: + contains: "SCALE 3.75" + - id: demo_06_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,55,58,32,80,65,82,65,77,69,84,69,82,32,71,82,79,85,80,83,34,13,80,82,73,78,84,32,34,65,82,82,65,89,83,44,32,73,78,84,69,71,69,82,32,82,69,84,85,82,78,83,44,32,65,78,68,32,70,76,79,65,84,83,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_06_parameter_groups + type: input.sequence + params: + keys: [68,73,77,32,65,37,40,51,41,58,65,37,40,48,41,61,49,58,65,37,40,49,41,61,50,58,65,37,40,50,41,61,51,13,83,37,61,90,83,85,77,78,85,77,65,82,82,65,89,40,65,37,40,48,41,44,51,41,13,68,73,77,32,82,37,40,52,41,58,90,82,65,78,71,69,78,85,77,65,82,82,65,89,40,55,44,52,44,82,37,40,48,41,41,13,70,61,70,65,68,68,40,49,46,50,44,50,46,51,41,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,83,85,77,32,54,44,32,82,65,78,71,69,32,55,46,46,49,48,44,32,70,65,68,68,32,51,46,53,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,80,82,73,78,84,32,34,83,85,77,34,59,83,37,13,80,82,73,78,84,32,34,82,65,78,71,69,34,59,82,37,40,48,41,59,82,37,40,51,41,13,80,82,73,78,84,32,34,70,65,68,68,34,59,70,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_06_sum + type: assert.screen + params: + contains: "SUM 6" + - id: assert_demo_06_range + type: assert.screen + params: + contains: "RANGE 7 10" + - id: assert_demo_06_fadd + type: assert.screen + params: + contains: "FADD 3.5" + - id: demo_07_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,56,58,32,82,69,85,32,66,85,70,70,69,82,32,67,79,77,77,65,78,68,83,34,13,80,82,73,78,84,32,34,66,85,70,78,69,87,32,82,69,84,85,82,78,83,59,32,70,73,76,76,32,65,78,68,32,70,82,69,69,32,68,79,32,87,79,82,75,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_07_reu + type: input.sequence + params: + keys: [72,37,61,66,85,70,78,69,87,40,54,52,41,13,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,72,65,78,68,76,69,32,49,44,32,84,72,69,78,32,70,82,69,69,68,32,49,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,80,82,73,78,84,32,34,72,65,78,68,76,69,34,59,72,37,13,66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,68,34,59,72,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_07_handle + type: assert.screen + params: + contains: "HANDLE 1" + - id: assert_demo_07_freed + type: assert.screen + params: + contains: "FREED 1" + - id: demo_08_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,57,58,32,83,67,82,69,69,78,32,84,72,82,79,85,71,72,32,82,69,85,34,13,80,82,73,78,84,32,34,83,67,82,67,65,80,32,83,65,86,69,83,59,32,83,67,82,80,85,84,32,82,69,83,84,79,82,69,83,32,83,67,82,69,69,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_08_screen_reu_a + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,68,73,77,32,72,37,40,52,41,13,50,48,32,70,79,82,32,83,61,49,32,84,79,32,52,13,51,48,32,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,82,69,85,32,83,67,82,69,69,78,34,59,83,13,52,48,32,80,82,73,78,84,32,67,72,82,36,40,53,41,59,34,77,65,82,75,34,59,83,59,34,32,84,69,88,84,32,65,78,68,32,67,79,76,79,82,34,13,53,48,32,70,79,82,32,73,61,48,32,84,79,32,51,57,13,54,48,32,80,79,75,69,49,48,50,52,43,56,48,43,73,44,54,52,43,83,13,55,48,32,80,79,75,69,53,53,50,57,54,43,56,48,43,73,44,83,43,49,13,56,48,32,78,69,88,84,32,73,13,57,48,32,72,37,40,83,41,61,83,67,82,67,65,80,40,41,13,49,48,48,32,78,69,88,84,32,83,13,49,49,48,32,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,82,69,85,32,70,76,73,80,66,79,79,75,34,13,49,50,48,32,80,82,73,78,84,32,67,72,82,36,40,53,41,59,34,69,88,80,69,67,84,58,32,70,79,85,82,32,82,69,83,84,79,82,69,68,32,83,67,82,69,69,78,83,34,13,49,51,48,32,70,79,82,32,83,61,49,32,84,79,32,52,13,49,52,48,32,83,67,82,80,85,84,40,72,37,40,83,41,41,13,49,53,48,32,80,82,73,78,84,32,67,72,82,36,40,49,57,41,59,34,82,69,83,84,79,82,69,68,34,59,83,59,34,47,52,34,13,49,54,48,32,90,80,65,85,83,69,40,51,48,41,13,49,55,48,32,78,69,88,84,32,83,13,49,56,48,32,80,82,73,78,84,32,67,72,82,36,40,49,57,41,59,34,82,69,83,84,79,82,69,68,32,52,32,82,69,85,32,83,67,82,69,69,78,83,34,13,49,57,48,32,69,78,68,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_08_screen_reu_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,70,79,85,82,32,68,73,70,70,69,82,69,78,84,32,83,67,82,69,69,78,83,32,70,76,73,80,32,66,65,67,75,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: wait_demo_08_reu_flipbook + type: screen.wait_contains + params: + text: "RESTORED 4 REU SCREENS" + wait_timeout_s: 90 + - id: assert_demo_08_reu_flipbook + type: assert.screen + params: + contains: "RESTORED 4 REU SCREENS" + - id: demo_09_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,49,48,58,32,67,79,78,84,82,79,76,76,69,68,32,69,82,82,79,82,34,13,80,82,73,78,84,32,34,90,70,65,73,76,32,83,72,79,87,83,32,82,69,65,68,89,66,65,83,73,67,32,69,82,82,79,82,32,67,76,69,65,78,85,80,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_09_zfail + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,82,66,32,69,82,82,79,82,32,55,32,65,78,68,32,88,37,32,66,69,67,79,77,69,83,32,90,69,82,79,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,88,37,61,57,57,13,90,70,65,73,76,40,55,44,88,37,41,13,80,82,73,78,84,32,34,65,70,84,69,82,32,70,65,73,76,34,59,88,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_09_rb_error + type: assert.screen + params: + contains: "RB ERROR 7" + - id: assert_demo_09_fail_clear + type: assert.screen + params: + contains: "AFTER FAIL 0" + - id: demo_10_intro + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,49,49,58,32,78,69,83,84,69,68,32,69,88,80,82,69,83,83,73,79,78,83,34,13,80,82,73,78,84,32,34,67,79,77,77,65,78,68,83,32,65,78,68,32,70,85,78,67,83,32,70,69,69,68,32,79,84,72,69,82,32,69,88,80,82,69,83,83,73,79,78,83,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_10_program + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,70,85,78,67,32,65,68,68,73,40,88,37,44,89,37,41,13,50,48,32,32,82,69,84,32,88,37,43,89,37,13,51,48,32,69,78,68,80,13,52,48,32,70,85,78,67,32,71,82,69,69,84,40,78,36,41,13,53,48,32,32,82,69,84,32,34,72,73,32,34,43,78,36,13,54,48,32,69,78,68,80,13,55,48,32,80,82,73,78,84,32,34,65,66,83,34,59,65,66,83,40,90,65,68,68,49,54,40,49,44,54,41,45,49,48,41,13,56,48,32,80,82,73,78,84,32,34,76,69,70,84,32,34,59,76,69,70,84,36,40,85,80,80,69,82,40,34,114,101,97,100,121,34,41,44,50,41,13,57,48,32,80,82,73,78,84,32,34,78,69,83,84,34,59,90,65,68,68,49,54,40,49,44,90,65,68,68,49,54,40,50,44,51,41,41,13,49,48,48,32,80,82,73,78,84,32,34,70,65,66,83,34,59,65,66,83,40,70,65,68,68,40,49,46,50,44,50,46,51,41,45,51,41,13,49,49,48,32,80,82,73,78,84,32,34,70,76,69,70,84,32,34,59,76,69,70,84,36,40,71,82,69,69,84,40,34,82,69,65,68,89,34,41,43,34,33,34,44,51,41,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_10_expressions + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,65,66,83,32,51,44,32,76,69,70,84,32,82,69,44,32,78,69,83,84,32,54,44,32,70,76,69,70,84,32,72,73,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,82,85,78,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_10_abs + type: assert.screen + params: + contains: "ABS 3" + - id: assert_demo_10_left + type: assert.screen + params: + contains: "LEFT RE" + - id: assert_demo_10_nest + type: assert.screen + params: + contains: "NEST 6" + - id: assert_demo_10_fleft + type: assert.screen + params: + contains: "FLEFT HI" + - id: demo_done + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,67,79,77,80,76,69,84,69,34,13,80,82,73,78,84,32,34,67,79,77,77,65,78,68,83,44,32,80,82,79,67,47,70,85,78,67,44,32,82,69,85,44,32,69,82,82,79,82,83,32,80,65,83,83,69,68,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,80,82,73,78,84,32,34,82,69,65,68,89,66,65,83,73,67,32,68,69,77,79,32,67,79,77,80,76,69,84,69,34,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_done + type: assert.screen + params: + contains: "READYBASIC DEMO COMPLETE" + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.easyflash.yaml new file mode 100644 index 0000000..5a93288 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.easyflash.yaml @@ -0,0 +1,992 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_full_suite_visual_verification_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 1 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 120 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_full_suite_visual_prompt + - id: dump_initial_plugin_state + type: dump.memory_ranges + params: + ranges: &plugin_ranges + - { label: entry_1000, start: 0x1000, end: 0x1120 } + - { label: resident_1200, start: 0x1200, end: 0x1BFF } + - { label: low_overlay_1c00, start: 0x1C00, end: 0x23FF } + - { label: shared_frames_2400, start: 0x2400, end: 0x27FF } + - { label: hidden_shadow_9a00, start: 0x9A00, end: 0x9FFF } + - { label: hidden_visible_a000, start: 0xA000, end: 0xA5FF } + - { label: hidden_overlay_a800, start: 0xA800, end: 0xA8FF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - { label: reu_alloc_table_c600, start: 0xC600, end: 0xC6FF } + + - id: direct_ping + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,90,69,67,72,79,32,72,69,65,76,84,72,32,76,79,87,32,79,86,76,32,83,84,65,84,69,77,69,78,84,32,83,84,79,82,69,83,32,80,37,61,49,32,83,67,82,69,69,78,32,68,45,90,69,67,72,79,13,90,69,67,72,79,49,40,80,37,41,13,80,82,73,78,84,32,34,68,45,90,69,67,72,79,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_ping + type: assert.screen + params: + contains: "D-ZECHO 1" + - id: dump_direct_ping + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: direct_add16 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,65,68,68,32,78,85,77,32,80,65,82,65,77,83,32,82,69,84,85,82,78,32,65,37,61,49,53,32,83,67,82,69,69,78,32,68,45,65,68,68,13,65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13,80,82,73,78,84,32,34,68,45,65,68,68,34,59,65,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_add16 + type: assert.screen + params: + contains: "D-ADD 15" + + - id: direct_module_slots + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,76,79,84,83,32,66,85,73,76,84,73,78,32,77,79,68,85,76,69,32,83,76,79,84,32,80,82,79,79,70,83,13,80,82,73,78,84,32,34,68,45,83,48,34,59,90,83,76,79,84,48,40,41,13,80,82,73,78,84,32,34,68,45,83,49,34,59,90,83,76,79,84,49,40,41,13,80,82,73,78,84,32,34,68,45,83,50,34,59,90,83,76,79,84,50,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_module_slot0 + type: assert.screen + params: + contains: "D-S0 30" + - id: assert_direct_module_slot1 + type: assert.screen + params: + contains: "D-S1 31" + - id: assert_direct_module_slot2 + type: assert.screen + params: + contains: "D-S2 32" + + - id: direct_module_span_overlay_copy + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,77,79,68,32,83,80,65,78,32,79,86,69,82,76,65,89,32,67,79,80,89,32,80,82,79,79,70,83,13,80,82,73,78,84,32,34,68,45,82,83,84,34,59,90,67,80,89,82,83,84,40,41,13,80,82,73,78,84,32,34,68,45,83,80,65,78,34,59,90,83,80,65,78,40,41,13,80,82,73,78,84,32,34,68,45,79,86,76,34,59,90,79,86,76,49,40,41,59,34,47,34,59,90,79,86,76,50,40,41,13,80,82,73,78,84,32,34,68,45,82,83,84,34,59,90,67,80,89,82,83,84,40,41,13,65,61,90,83,76,79,84,49,40,41,13,66,61,90,83,76,79,84,49,40,41,13,80,82,73,78,84,32,34,68,45,67,79,80,89,34,59,90,67,79,80,89,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_module_span + type: assert.screen + params: + contains: "D-SPAN 40" + - id: assert_direct_module_overlay + type: assert.screen + params: + contains: "D-OVL 51 / 52" + - id: assert_direct_module_copy_skip + type: assert.screen + params: + contains: "D-COPY 2" + + - id: direct_disk_module_load12 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,68,73,83,75,77,79,68,85,76,69,32,76,79,65,68,32,80,82,79,79,70,83,13,80,82,73,78,84,32,34,68,45,76,68,49,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,49,34,41,13,80,82,73,78,84,32,34,68,45,68,77,49,34,59,90,68,77,49,40,41,13,80,82,73,78,84,32,34,68,45,76,68,50,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,50,34,41,13,80,82,73,78,84,32,34,68,45,68,77,50,34,59,90,68,77,50,83,40,41,13,80,82,73,78,84,32,34,68,45,68,79,86,34,59,90,68,79,86,49,40,41,59,34,47,34,59,90,68,79,86,50,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_disk_module_load1 + type: assert.screen + params: + contains: "D-LD1 1" + - id: assert_direct_disk_module_cmd1 + type: assert.screen + params: + contains: "D-DM1 61" + - id: assert_direct_disk_module_load2 + type: assert.screen + params: + contains: "D-LD2 3" + - id: assert_direct_disk_module_span + type: assert.screen + params: + contains: "D-DM2 74" + - id: assert_direct_disk_module_overlay + type: assert.screen + params: + contains: "D-DOV 72 / 73" + + - id: direct_disk_module_load3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,68,73,83,75,77,79,68,85,76,69,32,82,66,77,51,32,80,82,79,79,70,83,13,80,82,73,78,84,32,34,68,45,76,68,51,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,51,34,41,13,80,82,73,78,84,32,34,68,45,77,51,34,59,90,83,65,65,40,41,59,34,47,34,59,90,85,69,66,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_disk_module_load3 + type: assert.screen + params: + contains: "D-LD3 30" + - id: assert_direct_disk_module_rbm3 + type: assert.screen + params: + contains: "D-M3 4 / 113" + + - id: direct_strup_variable + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,84,82,32,86,65,82,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,84,36,61,65,66,67,32,83,67,82,69,69,78,32,68,45,83,84,82,13,83,36,61,34,97,98,99,34,13,84,36,61,85,80,80,69,82,40,83,36,41,13,80,82,73,78,84,32,34,68,45,83,84,82,34,59,84,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_strup_variable + type: assert.screen + params: + contains: "D-STRABC" + + - id: direct_strup_literal + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,76,73,84,32,81,85,79,84,69,68,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,85,36,61,68,69,70,32,83,67,82,69,69,78,32,68,45,76,73,84,13,85,36,61,85,80,80,69,82,40,34,100,101,102,34,41,13,80,82,73,78,84,32,34,68,45,76,73,84,34,59,85,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_strup_literal + type: assert.screen + params: + contains: "D-LITDEF" + + - id: direct_lower_variable + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,76,79,87,69,82,32,86,65,82,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,76,36,61,97,98,99,32,83,67,82,69,69,78,32,68,45,76,79,87,13,83,36,61,34,65,66,67,34,13,76,36,61,76,79,87,69,82,40,83,36,41,13,80,82,73,78,84,32,34,68,45,76,79,87,65,83,67,34,59,65,83,67,40,76,36,41,59,65,83,67,40,77,73,68,36,40,76,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,51,44,49,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_lower_variable + type: assert.screen + params: + contains: "D-LOWASC 97 98 99" + + - id: direct_lower_literal + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,76,79,87,69,82,32,76,73,84,69,82,65,76,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,76,36,61,103,104,105,32,83,67,82,69,69,78,32,68,45,76,76,79,87,13,76,36,61,76,79,87,69,82,40,34,71,72,73,34,41,13,80,82,73,78,84,32,34,68,45,76,76,79,87,65,83,67,34,59,65,83,67,40,76,36,41,59,65,83,67,40,77,73,68,36,40,76,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,51,44,49,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_lower_literal + type: assert.screen + params: + contains: "D-LLOWASC 103 104 105" + + - id: direct_hcrc_hidden + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,90,72,73,68,68,69,78,82,65,77,32,72,73,68,68,69,78,32,65,48,48,48,32,87,79,82,75,69,82,32,82,69,84,85,82,78,32,72,37,61,49,51,49,32,83,67,82,69,69,78,32,68,45,90,72,73,68,68,69,78,82,65,77,13,72,37,61,90,72,73,68,68,69,78,82,65,77,40,34,65,66,34,41,13,80,82,73,78,84,32,34,68,45,90,72,73,68,68,69,78,82,65,77,34,59,72,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_hcrc_hidden + type: assert.screen + params: + contains: "D-ZHIDDENRAM 131" + - id: dump_direct_hidden_worker + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: direct_sumai + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,85,77,32,73,78,84,32,65,82,82,65,89,32,80,84,82,32,67,79,85,78,84,32,82,69,84,85,82,78,32,83,37,61,54,32,83,67,82,69,69,78,32,68,45,83,85,77,13,68,73,77,32,65,37,40,51,41,13,65,37,40,48,41,61,49,58,65,37,40,49,41,61,50,58,65,37,40,50,41,61,51,13,83,37,61,90,83,85,77,78,85,77,65,82,82,65,89,40,65,37,40,48,41,44,51,41,13,80,82,73,78,84,32,34,68,45,83,85,77,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_sumai + type: assert.screen + params: + contains: "D-SUM 6" + + - id: direct_rangeai + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,82,65,78,71,69,32,82,69,83,85,76,84,32,70,82,65,77,69,32,84,79,32,73,78,84,32,65,82,82,65,89,32,83,67,82,69,69,78,32,68,45,82,65,78,71,69,13,68,73,77,32,82,37,40,52,41,13,90,82,65,78,71,69,78,85,77,65,82,82,65,89,40,55,44,52,44,82,37,40,48,41,41,13,80,82,73,78,84,32,34,68,45,82,65,78,71,69,34,59,82,37,40,48,41,59,82,37,40,51,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_rangeai + type: assert.screen + params: + contains: "D-RANGE 7 10" + + - id: direct_bufnew + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,78,69,87,32,82,69,85,32,72,65,78,68,76,69,32,84,65,66,76,69,32,82,69,84,85,82,78,32,72,37,61,49,32,83,67,82,69,69,78,32,68,45,66,85,70,13,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,80,82,73,78,84,32,34,68,45,66,85,70,34,59,72,37,59,34,58,69,78,68,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_bufnew + type: assert.screen + params: + contains: "D-BUF 1 :END" + - id: dump_direct_bufnew + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: direct_buffill + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,73,76,76,32,82,69,85,32,72,65,78,68,76,69,32,72,37,32,66,89,84,69,32,49,55,48,32,83,67,82,69,69,78,32,68,45,70,73,76,76,13,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,80,82,73,78,84,32,34,68,45,70,73,76,76,32,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_buffill + type: assert.screen + params: + contains: "D-FILL OK" + - id: assert_direct_buffill_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_buffree + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,82,69,69,32,82,69,76,69,65,83,69,32,82,69,85,32,72,65,78,68,76,69,32,72,37,32,83,67,82,69,69,78,32,68,45,70,82,69,69,13,66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,68,45,70,82,69,69,32,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_buffree + type: assert.screen + params: + contains: "D-FREE OK" + - id: assert_direct_buffree_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_scrcap_scrput_slot128 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,67,82,67,65,80,32,84,69,88,84,32,67,79,76,79,82,32,72,65,78,68,76,69,32,82,69,84,85,82,78,32,65,78,68,32,83,76,79,84,49,50,56,32,83,67,82,80,85,84,13,80,82,73,78,84,32,34,68,45,83,67,82,77,65,82,75,34,13,83,37,61,83,67,82,67,65,80,40,41,13,80,82,73,78,84,32,34,68,45,67,72,65,78,71,69,68,34,13,83,67,82,80,85,84,40,83,37,41,13,80,82,73,78,84,32,34,68,45,83,67,82,80,85,84,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_scrcap_restored_text + type: assert.screen + params: + contains: "D-SCRMARK" + - id: assert_direct_scrput_slot128 + type: assert.screen + params: + contains: "D-SCRPUT 1" + - id: direct_buffill_rejects_screen_handle + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,73,76,76,32,77,85,83,84,32,82,69,74,69,67,84,32,83,67,82,69,69,78,32,72,65,78,68,76,69,32,84,89,80,69,13,66,85,70,70,73,76,76,40,83,37,44,49,55,48,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_buffill_rejects_screen_handle + type: assert.screen + params: + contains: "?RB ERROR 40" + - id: direct_buffree_screen_handle + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,82,69,69,32,82,69,76,69,65,83,69,83,32,83,67,82,69,69,78,32,72,65,78,68,76,69,32,84,89,80,69,13,66,85,70,70,82,69,69,40,83,37,41,13,80,82,73,78,84,32,34,68,45,83,67,82,70,82,69,69,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_buffree_screen_handle + type: assert.screen + params: + contains: "D-SCRFREE 1" + - id: assert_direct_buffree_screen_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + - id: direct_scrput_rejects_buffer_handle + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,67,82,80,85,84,32,77,85,83,84,32,82,69,74,69,67,84,32,66,85,70,70,69,82,32,72,65,78,68,76,69,32,84,89,80,69,13,66,37,61,66,85,70,78,69,87,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_scrput_rejects_buffer_handle + type: assert.screen + params: + contains: "?RB ERROR 40" + - id: direct_free_buffer_after_type_error + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,66,37,41,13,80,82,73,78,84,32,34,68,45,66,85,70,82,69,69,34,59,66,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_free_buffer_after_type_error + type: assert.screen + params: + contains: "D-BUFREE 1" + - id: assert_direct_free_buffer_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_handle_128_edge + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,78,69,87,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,77,65,88,34,59,72,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 5.0 + - id: assert_direct_handle_128_edge + type: assert.screen + params: + contains: "D-HMAX 128" + - id: assert_direct_handle_128_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + - id: direct_handle_129_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,78,69,87,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_handle_129_rejected + type: assert.screen + params: + contains: "?RB ERROR 33" + - id: direct_free_128_handles + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,70,82,69,69,68,34,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 5.0 + - id: assert_direct_free_128_handles + type: assert.screen + params: + contains: "D-HFREED" + - id: assert_direct_free_128_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + - id: direct_48k_heap_edge + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,77,37,61,66,85,70,78,69,87,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,68,45,77,65,88,66,85,70,34,59,77,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_48k_heap_edge + type: assert.screen + params: + contains: "D-MAXBUF 1" + - id: direct_48k_heap_full + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,78,69,87,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_48k_heap_full + type: assert.screen + params: + contains: "?RB ERROR 34" + - id: direct_free_48k_heap + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,77,37,41,13,80,82,73,78,84,32,34,68,45,77,65,88,70,82,69,69,34,59,77,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_free_48k_heap + type: assert.screen + params: + contains: "D-MAXFREE 1" + - id: assert_direct_free_48k_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + - id: direct_screen_heap_edge + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,83,37,61,83,67,82,67,65,80,40,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,83,77,65,88,34,59,83,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 5.0 + - id: assert_direct_screen_heap_edge + type: assert.screen + params: + contains: "D-SMAX 24" + - id: direct_screen_heap_full + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,83,37,61,83,67,82,67,65,80,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_screen_heap_full + type: assert.screen + params: + contains: "?RB ERROR 34" + - id: direct_free_screen_heap + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,83,70,82,69,69,68,34,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 5.0 + - id: assert_direct_free_screen_heap + type: assert.screen + params: + contains: "D-SFREED" + - id: assert_direct_free_screen_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_tempscratch + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,84,69,77,80,32,82,69,85,32,84,69,77,80,32,80,65,71,69,83,32,82,69,84,85,82,78,32,84,37,61,51,32,83,67,82,69,69,78,32,68,45,84,69,77,80,13,84,37,61,90,84,69,77,80,83,67,82,65,84,67,72,40,53,49,51,41,13,80,82,73,78,84,32,34,68,45,84,69,77,80,34,59,84,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_tempscratch + type: assert.screen + params: + contains: "D-TEMP 3" + + - id: direct_fail_clears_output + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,90,70,65,73,76,32,69,82,82,79,82,32,80,65,84,72,32,67,76,69,65,82,83,32,88,37,32,84,72,69,78,32,82,66,32,69,82,82,79,82,32,55,13,88,37,61,57,57,13,90,70,65,73,76,40,55,44,88,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_fail_error + type: assert.screen + params: + contains: "?RB ERROR 7" + - id: direct_fail_print_cleared + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,68,45,70,67,76,82,34,59,88,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_fail_cleared + type: assert.screen + params: + contains: "D-FCLR 0" + + - id: direct_unknown_command + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,78,79,80,69,32,82,69,71,73,83,84,82,89,32,77,73,83,83,32,83,72,79,85,76,68,32,82,66,32,69,82,82,79,82,32,49,13,78,79,80,69,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_unknown_command + type: assert.screen + params: + contains: "SYNTAX" + + - id: direct_old_ping_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,83,67,65,76,65,82,32,72,65,83,32,78,79,32,65,76,73,65,83,13,83,67,65,76,65,82,40,80,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_ping_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_old_add16_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,65,68,68,49,54,32,72,65,83,32,78,79,32,65,76,73,65,83,13,65,68,68,49,54,40,49,44,50,44,65,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_add16_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_old_strup_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,83,84,82,85,80,32,72,65,83,32,78,79,32,65,76,73,65,83,13,83,84,82,85,80,40,34,97,98,99,34,44,84,36,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_strup_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_old_hcrc_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,72,67,82,67,32,72,65,83,32,78,79,32,65,76,73,65,83,13,72,67,82,67,40,34,65,66,34,44,72,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_hcrc_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_old_sumai_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,83,85,77,65,73,32,72,65,83,32,78,79,32,65,76,73,65,83,13,83,85,77,65,73,40,65,37,40,48,41,44,49,44,83,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_sumai_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_old_rangeai_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,82,65,78,71,69,65,73,32,72,65,83,32,78,79,32,65,76,73,65,83,13,82,65,78,71,69,65,73,40,49,44,49,44,65,37,40,48,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_rangeai_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_command_name_in_string + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,67,79,77,77,65,78,68,32,78,65,77,69,32,73,78,32,83,84,82,73,78,71,32,83,72,79,85,76,68,32,78,79,84,32,68,73,83,80,65,84,67,72,13,80,82,73,78,84,32,34,78,79,80,69,40,41,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_command_name_in_string + type: assert.screen + params: + contains: "NOPE()" + - id: assert_direct_command_name_in_string_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_command_name_in_rem + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,78,79,80,69,40,41,13,80,82,73,78,84,32,34,68,45,82,69,77,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_command_name_in_rem + type: assert.screen + params: + contains: "D-REMOK" + - id: assert_direct_command_name_in_rem_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_first_comma_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,70,73,82,83,84,32,65,82,71,32,67,79,77,77,65,32,73,83,32,78,79,84,32,67,65,78,79,78,73,67,65,76,13,90,65,68,68,49,54,40,44,49,44,50,44,65,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_first_comma_rejected + type: assert.screen + params: + contains: "SYNTAX" + + - id: direct_missing_out_marker_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,76,69,71,65,67,89,32,83,80,65,67,69,32,70,79,82,77,32,82,69,74,69,67,84,69,68,13,90,65,68,68,49,54,32,49,44,50,44,65,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_missing_out_marker_rejected + type: assert.screen + params: + contains: "SYNTAX" + + - id: direct_seed_resume_vars + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,82,69,83,85,77,69,32,83,65,86,69,32,66,65,83,73,67,32,86,65,82,83,32,84,72,82,79,85,71,72,32,82,69,65,68,89,79,83,32,69,88,73,84,13,86,37,61,51,50,49,58,86,83,36,61,34,79,75,34,13,80,82,73,78,84,32,34,68,45,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_seed_resume_vars + type: assert.screen + params: + contains: "D-SEED 321 :OK" + - id: direct_exit_to_launcher + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: wait_launcher_after_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_after_exit + type: input.sequence + params: + keys: [145,17,13] + inter_key_delay_s: 0.10 + post_delay_s: 3.0 + - id: wait_readybasic_after_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + capture_label: readybasic_full_suite_visual_after_resume + - id: direct_registry_after_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,80,79,83,84,82,69,83,32,66,65,83,73,67,32,86,65,82,83,32,65,78,68,32,82,69,71,73,83,84,82,89,32,83,84,73,76,76,32,65,67,84,73,86,69,13,80,82,73,78,84,32,34,68,45,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,80,82,73,78,84,32,34,68,45,82,69,83,85,77,69,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_state_after_resume + type: assert.screen + params: + contains: "D-STATE 321 :OK" + - id: assert_direct_registry_after_resume + type: assert.screen + params: + contains: "D-RESUME 1" + + - id: program_ping_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,90,69,67,72,79,49,32,72,69,65,76,84,72,32,76,79,87,32,79,86,76,32,83,84,65,84,69,77,69,78,84,32,83,84,79,82,69,83,32,80,37,61,49,32,83,67,82,69,69,78,32,80,45,90,69,67,72,79,13,50,48,32,90,69,67,72,79,49,40,80,37,41,13,51,48,32,80,82,73,78,84,32,34,80,45,90,69,67,72,79,34,59,80,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_ping_rem + type: assert.screen + params: + contains: "REM ZECHO1 HEALTH" + - id: program_ping_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_ping_run + type: assert.screen + params: + contains: "P-ZECHO 1" + + - id: program_chain_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,65,68,68,32,78,85,77,32,80,65,82,65,77,83,32,83,65,77,69,32,76,73,78,69,32,82,69,84,85,82,78,32,65,37,61,51,32,83,67,82,69,69,78,32,80,45,67,72,65,73,78,13,50,48,32,65,37,61,90,65,68,68,49,54,40,49,44,50,41,58,80,82,73,78,84,32,34,80,45,67,72,65,73,78,34,59,65,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_chain_rem + type: assert.screen + params: + contains: "REM ADD NUM PARAMS" + - id: program_chain_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_chain_run + type: assert.screen + params: + contains: "P-CHAIN 3" + + - id: program_if_true_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,73,70,32,84,82,85,69,32,84,72,69,78,32,82,69,84,85,82,78,32,67,79,77,77,65,78,68,32,83,67,82,69,69,78,32,80,45,73,70,84,82,85,69,13,50,48,32,80,37,61,48,13,51,48,32,73,70,32,49,32,84,72,69,78,32,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,52,48,32,80,82,73,78,84,32,34,80,45,73,70,84,82,85,69,34,59,80,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_if_true_run + type: assert.screen + params: + contains: "P-IFTRUE 1" + + - id: program_if_false_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,73,70,32,70,65,76,83,69,32,83,75,73,80,83,32,82,69,84,85,82,78,32,67,79,77,77,65,78,68,32,83,67,82,69,69,78,32,80,45,73,70,70,65,76,83,69,13,50,48,32,80,37,61,48,13,51,48,32,73,70,32,48,32,84,72,69,78,32,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,52,48,32,80,82,73,78,84,32,34,80,45,73,70,70,65,76,83,69,34,59,80,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_if_false_run + type: assert.screen + params: + contains: "P-IFFALSE 0" + + - id: program_for_next_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,70,79,82,32,78,69,88,84,32,67,79,77,77,65,78,68,32,82,69,84,85,82,78,32,83,67,82,69,69,78,32,80,45,70,79,82,13,50,48,32,70,79,82,32,73,61,49,32,84,79,32,51,13,51,48,32,65,37,61,90,65,68,68,49,54,40,73,44,49,48,41,13,52,48,32,78,69,88,84,13,53,48,32,80,82,73,78,84,32,34,80,45,70,79,82,34,59,65,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_for_next_run + type: assert.screen + params: + contains: "P-FOR 13" + + - id: program_strup_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,85,80,80,69,82,32,86,65,82,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,84,36,61,65,66,67,32,83,67,82,69,69,78,32,80,45,83,84,82,13,50,48,32,83,36,61,34,97,98,99,34,13,51,48,32,84,36,61,85,80,80,69,82,40,83,36,41,13,52,48,32,80,82,73,78,84,32,34,80,45,83,84,82,34,59,84,36,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_strup_rem + type: assert.screen + params: + contains: "REM UPPER VAR STRING" + - id: program_strup_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_strup_run + type: assert.screen + params: + contains: "P-STRABC" + + - id: program_lower_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,76,79,87,69,82,32,86,65,82,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,84,36,61,97,98,99,32,83,67,82,69,69,78,32,80,45,76,79,87,13,50,48,32,83,36,61,34,65,66,67,34,13,51,48,32,84,36,61,76,79,87,69,82,40,83,36,41,13,52,48,32,80,82,73,78,84,32,34,80,45,76,79,87,65,83,67,34,59,65,83,67,40,84,36,41,59,65,83,67,40,77,73,68,36,40,84,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,84,36,44,51,44,49,41,41,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_lower_rem + type: assert.screen + params: + contains: "REM LOWER VAR STRING" + - id: program_lower_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_lower_run + type: assert.screen + params: + contains: "P-LOWASC 97 98 99" + + - id: program_hcrc_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,90,72,73,68,68,69,78,82,65,77,32,72,73,68,68,69,78,32,65,48,48,48,32,87,79,82,75,69,82,32,82,69,84,85,82,78,32,72,37,61,49,51,49,32,83,67,82,69,69,78,32,80,45,90,72,73,68,68,69,78,82,65,77,13,50,48,32,72,37,61,90,72,73,68,68,69,78,82,65,77,40,34,65,66,34,41,13,51,48,32,80,82,73,78,84,32,34,80,45,90,72,73,68,68,69,78,82,65,77,34,59,72,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_hcrc_rem + type: assert.screen + params: + contains: "REM ZHIDDENRAM HIDDEN" + - id: program_hcrc_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_hcrc_run + type: assert.screen + params: + contains: "P-ZHIDDENRAM 131" + - id: dump_program_hidden_worker + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: program_sumai_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,90,83,85,77,78,85,77,65,82,82,65,89,32,73,78,84,32,65,82,82,65,89,32,80,84,82,32,67,79,85,78,84,32,82,69,84,85,82,78,32,83,37,61,54,32,83,67,82,69,69,78,32,80,45,83,85,77,13,50,48,32,68,73,77,32,65,37,40,51,41,13,51,48,32,65,37,40,48,41,61,49,58,65,37,40,49,41,61,50,58,65,37,40,50,41,61,51,13,52,48,32,83,37,61,90,83,85,77,78,85,77,65,82,82,65,89,40,65,37,40,48,41,44,51,41,13,53,48,32,80,82,73,78,84,32,34,80,45,83,85,77,34,59,83,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_sumai_rem + type: assert.screen + params: + contains: "REM ZSUMNUMARRAY INT ARRAY" + - id: program_sumai_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_sumai_run + type: assert.screen + params: + contains: "P-SUM 6" + + - id: program_range_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,82,65,78,71,69,32,82,69,83,85,76,84,32,70,82,65,77,69,32,84,79,32,73,78,84,32,65,82,82,65,89,32,83,67,82,69,69,78,32,80,45,82,65,78,71,69,13,50,48,32,68,73,77,32,82,37,40,52,41,13,51,48,32,90,82,65,78,71,69,78,85,77,65,82,82,65,89,40,55,44,52,44,82,37,40,48,41,41,13,52,48,32,80,82,73,78,84,32,34,80,45,82,65,78,71,69,34,59,82,37,40,48,41,59,82,37,40,51,41,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_range_rem + type: assert.screen + params: + contains: "REM RANGE RESULT FRAME" + - id: program_range_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_range_run + type: assert.screen + params: + contains: "P-RANGE 7 10" + + - id: program_handle_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,66,85,70,32,82,69,85,32,72,65,78,68,76,69,32,65,76,76,79,67,32,82,69,84,85,82,78,32,70,73,76,76,32,70,82,69,69,32,72,37,61,49,32,83,67,82,69,69,78,32,80,45,66,85,70,13,50,48,32,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,51,48,32,80,82,73,78,84,32,34,80,45,66,85,70,34,59,72,37,13,52,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,53,48,32,66,85,70,70,82,69,69,40,72,37,41,13,54,48,32,80,82,73,78,84,32,34,80,45,70,82,69,69,34,59,72,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_handle_rem + type: assert.screen + params: + contains: "REM BUF REU HANDLE" + - id: program_handle_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_handle_new + type: assert.screen + params: + contains: "P-BUF 1" + - id: assert_program_handle_free + type: assert.screen + params: + contains: "P-FREE 1" + - id: dump_program_handle + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: program_fail_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,90,70,65,73,76,32,69,82,82,79,82,32,67,76,69,65,82,83,32,88,37,32,66,69,70,79,82,69,32,82,66,32,69,82,82,79,82,32,55,32,83,67,82,69,69,78,32,80,45,70,67,76,82,13,50,48,32,88,37,61,57,57,13,51,48,32,90,70,65,73,76,40,55,44,88,37,41,13,52,48,32,80,82,73,78,84,32,34,80,45,65,70,84,69,82,34,59,88,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_fail_rem + type: assert.screen + params: + contains: "REM ZFAIL ERROR" + - id: program_fail_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_fail_error + type: assert.screen + params: + contains: "?RB ERROR 7" + - id: program_fail_print_cleared + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,80,45,70,67,76,82,34,59,88,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_fail_cleared + type: assert.screen + params: + contains: "P-FCLR 0" + + - id: procfunc_load_rbproc1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,79,65,68,32,34,82,66,80,82,79,67,49,34,44,56,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: procfunc_list_rbproc1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,73,83,84,32,49,48,48,48,45,49,48,50,48,13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: assert_procfunc_list_proc + type: assert.screen + params: + contains: "PROC SHOW0" + - id: assert_procfunc_list_endp + type: assert.screen + params: + contains: "ENDP" + - id: procfunc_list_func_addi + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,73,83,84,32,49,51,48,48,45,49,51,50,48,13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: assert_procfunc_list_func + type: assert.screen + params: + contains: "FUNC ADDI" + - id: procfunc_list_nested_func + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,73,83,84,32,49,54,48,48,45,49,54,51,48,13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: assert_procfunc_list_exec_out + type: assert.screen + params: + contains: "R%=INNER(X%)" + - id: procfunc_run_rbproc1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 4.0 + - id: assert_procfunc_run_float_nested + type: assert.screen + params: + contains: "NFADD" + - id: assert_procfunc_run_string_nested + type: assert.screen + params: + contains: "NGS MIX" + - id: assert_procfunc_run_float_statement + type: assert.screen + params: + contains: "SFADD" + + - id: dump_final_plugin_state + type: dump.memory_ranges + params: + ranges: *plugin_ranges + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.regular.yaml new file mode 100644 index 0000000..0168c0b --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.regular.yaml @@ -0,0 +1,977 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_full_suite_visual_verification +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 1 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 120 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_full_suite_visual_prompt + - id: dump_initial_plugin_state + type: dump.memory_ranges + params: + ranges: &plugin_ranges + - { label: entry_1000, start: 0x1000, end: 0x1120 } + - { label: resident_1200, start: 0x1200, end: 0x1BFF } + - { label: low_overlay_1c00, start: 0x1C00, end: 0x23FF } + - { label: shared_frames_2400, start: 0x2400, end: 0x27FF } + - { label: hidden_shadow_9a00, start: 0x9A00, end: 0x9FFF } + - { label: hidden_visible_a000, start: 0xA000, end: 0xA5FF } + - { label: hidden_overlay_a800, start: 0xA800, end: 0xA8FF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - { label: reu_alloc_table_c600, start: 0xC600, end: 0xC6FF } + + - id: direct_ping + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,90,69,67,72,79,32,72,69,65,76,84,72,32,76,79,87,32,79,86,76,32,83,84,65,84,69,77,69,78,84,32,83,84,79,82,69,83,32,80,37,61,49,32,83,67,82,69,69,78,32,68,45,90,69,67,72,79,13,90,69,67,72,79,49,40,80,37,41,13,80,82,73,78,84,32,34,68,45,90,69,67,72,79,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_ping + type: assert.screen + params: + contains: "D-ZECHO 1" + - id: dump_direct_ping + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: direct_add16 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,65,68,68,32,78,85,77,32,80,65,82,65,77,83,32,82,69,84,85,82,78,32,65,37,61,49,53,32,83,67,82,69,69,78,32,68,45,65,68,68,13,65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13,80,82,73,78,84,32,34,68,45,65,68,68,34,59,65,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_add16 + type: assert.screen + params: + contains: "D-ADD 15" + + - id: direct_module_slots + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,76,79,84,83,32,66,85,73,76,84,73,78,32,77,79,68,85,76,69,32,83,76,79,84,32,80,82,79,79,70,83,13,80,82,73,78,84,32,34,68,45,83,48,34,59,90,83,76,79,84,48,40,41,13,80,82,73,78,84,32,34,68,45,83,49,34,59,90,83,76,79,84,49,40,41,13,80,82,73,78,84,32,34,68,45,83,50,34,59,90,83,76,79,84,50,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_module_slot0 + type: assert.screen + params: + contains: "D-S0 30" + - id: assert_direct_module_slot1 + type: assert.screen + params: + contains: "D-S1 31" + - id: assert_direct_module_slot2 + type: assert.screen + params: + contains: "D-S2 32" + + - id: direct_module_span_overlay_copy + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,77,79,68,32,83,80,65,78,32,79,86,69,82,76,65,89,32,67,79,80,89,32,80,82,79,79,70,83,13,80,82,73,78,84,32,34,68,45,82,83,84,34,59,90,67,80,89,82,83,84,40,41,13,80,82,73,78,84,32,34,68,45,83,80,65,78,34,59,90,83,80,65,78,40,41,13,80,82,73,78,84,32,34,68,45,79,86,76,34,59,90,79,86,76,49,40,41,59,34,47,34,59,90,79,86,76,50,40,41,13,80,82,73,78,84,32,34,68,45,82,83,84,34,59,90,67,80,89,82,83,84,40,41,13,65,61,90,83,76,79,84,49,40,41,13,66,61,90,83,76,79,84,49,40,41,13,80,82,73,78,84,32,34,68,45,67,79,80,89,34,59,90,67,79,80,89,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_module_span + type: assert.screen + params: + contains: "D-SPAN 40" + - id: assert_direct_module_overlay + type: assert.screen + params: + contains: "D-OVL 51 / 52" + - id: assert_direct_module_copy_skip + type: assert.screen + params: + contains: "D-COPY 2" + + - id: direct_disk_module_load12 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,68,73,83,75,77,79,68,85,76,69,32,76,79,65,68,32,80,82,79,79,70,83,13,80,82,73,78,84,32,34,68,45,76,68,49,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,49,34,41,13,80,82,73,78,84,32,34,68,45,68,77,49,34,59,90,68,77,49,40,41,13,80,82,73,78,84,32,34,68,45,76,68,50,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,50,34,41,13,80,82,73,78,84,32,34,68,45,68,77,50,34,59,90,68,77,50,83,40,41,13,80,82,73,78,84,32,34,68,45,68,79,86,34,59,90,68,79,86,49,40,41,59,34,47,34,59,90,68,79,86,50,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_disk_module_load1 + type: assert.screen + params: + contains: "D-LD1 1" + - id: assert_direct_disk_module_cmd1 + type: assert.screen + params: + contains: "D-DM1 61" + - id: assert_direct_disk_module_load2 + type: assert.screen + params: + contains: "D-LD2 3" + - id: assert_direct_disk_module_span + type: assert.screen + params: + contains: "D-DM2 74" + - id: assert_direct_disk_module_overlay + type: assert.screen + params: + contains: "D-DOV 72 / 73" + + - id: direct_disk_module_load3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,68,73,83,75,77,79,68,85,76,69,32,82,66,77,51,32,80,82,79,79,70,83,13,80,82,73,78,84,32,34,68,45,76,68,51,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,51,34,41,13,80,82,73,78,84,32,34,68,45,77,51,34,59,90,83,65,65,40,41,59,34,47,34,59,90,85,69,66,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_disk_module_load3 + type: assert.screen + params: + contains: "D-LD3 30" + - id: assert_direct_disk_module_rbm3 + type: assert.screen + params: + contains: "D-M3 4 / 113" + + - id: direct_strup_variable + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,84,82,32,86,65,82,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,84,36,61,65,66,67,32,83,67,82,69,69,78,32,68,45,83,84,82,13,83,36,61,34,97,98,99,34,13,84,36,61,85,80,80,69,82,40,83,36,41,13,80,82,73,78,84,32,34,68,45,83,84,82,34,59,84,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_strup_variable + type: assert.screen + params: + contains: "D-STRABC" + + - id: direct_strup_literal + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,76,73,84,32,81,85,79,84,69,68,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,85,36,61,68,69,70,32,83,67,82,69,69,78,32,68,45,76,73,84,13,85,36,61,85,80,80,69,82,40,34,100,101,102,34,41,13,80,82,73,78,84,32,34,68,45,76,73,84,34,59,85,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_strup_literal + type: assert.screen + params: + contains: "D-LITDEF" + + - id: direct_lower_variable + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,76,79,87,69,82,32,86,65,82,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,76,36,61,97,98,99,32,83,67,82,69,69,78,32,68,45,76,79,87,13,83,36,61,34,65,66,67,34,13,76,36,61,76,79,87,69,82,40,83,36,41,13,80,82,73,78,84,32,34,68,45,76,79,87,65,83,67,34,59,65,83,67,40,76,36,41,59,65,83,67,40,77,73,68,36,40,76,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,51,44,49,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_lower_variable + type: assert.screen + params: + contains: "D-LOWASC 97 98 99" + + - id: direct_lower_literal + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,76,79,87,69,82,32,76,73,84,69,82,65,76,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,76,36,61,103,104,105,32,83,67,82,69,69,78,32,68,45,76,76,79,87,13,76,36,61,76,79,87,69,82,40,34,71,72,73,34,41,13,80,82,73,78,84,32,34,68,45,76,76,79,87,65,83,67,34,59,65,83,67,40,76,36,41,59,65,83,67,40,77,73,68,36,40,76,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,51,44,49,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_lower_literal + type: assert.screen + params: + contains: "D-LLOWASC 103 104 105" + + - id: direct_hcrc_hidden + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,90,72,73,68,68,69,78,82,65,77,32,72,73,68,68,69,78,32,65,48,48,48,32,87,79,82,75,69,82,32,82,69,84,85,82,78,32,72,37,61,49,51,49,32,83,67,82,69,69,78,32,68,45,90,72,73,68,68,69,78,82,65,77,13,72,37,61,90,72,73,68,68,69,78,82,65,77,40,34,65,66,34,41,13,80,82,73,78,84,32,34,68,45,90,72,73,68,68,69,78,82,65,77,34,59,72,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_hcrc_hidden + type: assert.screen + params: + contains: "D-ZHIDDENRAM 131" + - id: dump_direct_hidden_worker + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: direct_sumai + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,85,77,32,73,78,84,32,65,82,82,65,89,32,80,84,82,32,67,79,85,78,84,32,82,69,84,85,82,78,32,83,37,61,54,32,83,67,82,69,69,78,32,68,45,83,85,77,13,68,73,77,32,65,37,40,51,41,13,65,37,40,48,41,61,49,58,65,37,40,49,41,61,50,58,65,37,40,50,41,61,51,13,83,37,61,90,83,85,77,78,85,77,65,82,82,65,89,40,65,37,40,48,41,44,51,41,13,80,82,73,78,84,32,34,68,45,83,85,77,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_sumai + type: assert.screen + params: + contains: "D-SUM 6" + + - id: direct_rangeai + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,82,65,78,71,69,32,82,69,83,85,76,84,32,70,82,65,77,69,32,84,79,32,73,78,84,32,65,82,82,65,89,32,83,67,82,69,69,78,32,68,45,82,65,78,71,69,13,68,73,77,32,82,37,40,52,41,13,90,82,65,78,71,69,78,85,77,65,82,82,65,89,40,55,44,52,44,82,37,40,48,41,41,13,80,82,73,78,84,32,34,68,45,82,65,78,71,69,34,59,82,37,40,48,41,59,82,37,40,51,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_rangeai + type: assert.screen + params: + contains: "D-RANGE 7 10" + + - id: direct_bufnew + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,78,69,87,32,82,69,85,32,72,65,78,68,76,69,32,84,65,66,76,69,32,82,69,84,85,82,78,32,72,37,61,49,32,83,67,82,69,69,78,32,68,45,66,85,70,13,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,80,82,73,78,84,32,34,68,45,66,85,70,34,59,72,37,59,34,58,69,78,68,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_bufnew + type: assert.screen + params: + contains: "D-BUF 1 :END" + - id: dump_direct_bufnew + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: direct_buffill + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,73,76,76,32,82,69,85,32,72,65,78,68,76,69,32,72,37,32,66,89,84,69,32,49,55,48,32,83,67,82,69,69,78,32,68,45,70,73,76,76,13,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,80,82,73,78,84,32,34,68,45,70,73,76,76,32,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_buffill + type: assert.screen + params: + contains: "D-FILL OK" + - id: assert_direct_buffill_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_buffree + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,82,69,69,32,82,69,76,69,65,83,69,32,82,69,85,32,72,65,78,68,76,69,32,72,37,32,83,67,82,69,69,78,32,68,45,70,82,69,69,13,66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,68,45,70,82,69,69,32,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_buffree + type: assert.screen + params: + contains: "D-FREE OK" + - id: assert_direct_buffree_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_scrcap_scrput_slot128 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,67,82,67,65,80,32,84,69,88,84,32,67,79,76,79,82,32,72,65,78,68,76,69,32,82,69,84,85,82,78,32,65,78,68,32,83,76,79,84,49,50,56,32,83,67,82,80,85,84,13,80,82,73,78,84,32,34,68,45,83,67,82,77,65,82,75,34,13,83,37,61,83,67,82,67,65,80,40,41,13,80,82,73,78,84,32,34,68,45,67,72,65,78,71,69,68,34,13,83,67,82,80,85,84,40,83,37,41,13,80,82,73,78,84,32,34,68,45,83,67,82,80,85,84,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_scrcap_restored_text + type: assert.screen + params: + contains: "D-SCRMARK" + - id: assert_direct_scrput_slot128 + type: assert.screen + params: + contains: "D-SCRPUT 1" + - id: direct_buffill_rejects_screen_handle + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,73,76,76,32,77,85,83,84,32,82,69,74,69,67,84,32,83,67,82,69,69,78,32,72,65,78,68,76,69,32,84,89,80,69,13,66,85,70,70,73,76,76,40,83,37,44,49,55,48,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_buffill_rejects_screen_handle + type: assert.screen + params: + contains: "?RB ERROR 40" + - id: direct_buffree_screen_handle + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,82,69,69,32,82,69,76,69,65,83,69,83,32,83,67,82,69,69,78,32,72,65,78,68,76,69,32,84,89,80,69,13,66,85,70,70,82,69,69,40,83,37,41,13,80,82,73,78,84,32,34,68,45,83,67,82,70,82,69,69,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_buffree_screen_handle + type: assert.screen + params: + contains: "D-SCRFREE 1" + - id: assert_direct_buffree_screen_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + - id: direct_scrput_rejects_buffer_handle + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,67,82,80,85,84,32,77,85,83,84,32,82,69,74,69,67,84,32,66,85,70,70,69,82,32,72,65,78,68,76,69,32,84,89,80,69,13,66,37,61,66,85,70,78,69,87,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_scrput_rejects_buffer_handle + type: assert.screen + params: + contains: "?RB ERROR 40" + - id: direct_free_buffer_after_type_error + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,66,37,41,13,80,82,73,78,84,32,34,68,45,66,85,70,82,69,69,34,59,66,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_free_buffer_after_type_error + type: assert.screen + params: + contains: "D-BUFREE 1" + - id: assert_direct_free_buffer_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_handle_128_edge + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,78,69,87,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,77,65,88,34,59,72,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 5.0 + - id: assert_direct_handle_128_edge + type: assert.screen + params: + contains: "D-HMAX 128" + - id: assert_direct_handle_128_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + - id: direct_handle_129_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,78,69,87,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_handle_129_rejected + type: assert.screen + params: + contains: "?RB ERROR 33" + - id: direct_free_128_handles + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,70,82,69,69,68,34,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 5.0 + - id: assert_direct_free_128_handles + type: assert.screen + params: + contains: "D-HFREED" + - id: assert_direct_free_128_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + - id: direct_48k_heap_edge + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,77,37,61,66,85,70,78,69,87,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,68,45,77,65,88,66,85,70,34,59,77,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_48k_heap_edge + type: assert.screen + params: + contains: "D-MAXBUF 1" + - id: direct_48k_heap_full + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,78,69,87,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_48k_heap_full + type: assert.screen + params: + contains: "?RB ERROR 34" + - id: direct_free_48k_heap + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,77,37,41,13,80,82,73,78,84,32,34,68,45,77,65,88,70,82,69,69,34,59,77,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_free_48k_heap + type: assert.screen + params: + contains: "D-MAXFREE 1" + - id: assert_direct_free_48k_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + - id: direct_screen_heap_edge + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,83,37,61,83,67,82,67,65,80,40,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,83,77,65,88,34,59,83,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 5.0 + - id: assert_direct_screen_heap_edge + type: assert.screen + params: + contains: "D-SMAX 24" + - id: direct_screen_heap_full + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,83,37,61,83,67,82,67,65,80,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_screen_heap_full + type: assert.screen + params: + contains: "?RB ERROR 34" + - id: direct_free_screen_heap + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,83,70,82,69,69,68,34,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 5.0 + - id: assert_direct_free_screen_heap + type: assert.screen + params: + contains: "D-SFREED" + - id: assert_direct_free_screen_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_tempscratch + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,84,69,77,80,32,82,69,85,32,84,69,77,80,32,80,65,71,69,83,32,82,69,84,85,82,78,32,84,37,61,51,32,83,67,82,69,69,78,32,68,45,84,69,77,80,13,84,37,61,90,84,69,77,80,83,67,82,65,84,67,72,40,53,49,51,41,13,80,82,73,78,84,32,34,68,45,84,69,77,80,34,59,84,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_tempscratch + type: assert.screen + params: + contains: "D-TEMP 3" + + - id: direct_fail_clears_output + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,90,70,65,73,76,32,69,82,82,79,82,32,80,65,84,72,32,67,76,69,65,82,83,32,88,37,32,84,72,69,78,32,82,66,32,69,82,82,79,82,32,55,13,88,37,61,57,57,13,90,70,65,73,76,40,55,44,88,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_fail_error + type: assert.screen + params: + contains: "?RB ERROR 7" + - id: direct_fail_print_cleared + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,68,45,70,67,76,82,34,59,88,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_fail_cleared + type: assert.screen + params: + contains: "D-FCLR 0" + + - id: direct_unknown_command + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,78,79,80,69,32,82,69,71,73,83,84,82,89,32,77,73,83,83,32,83,72,79,85,76,68,32,82,66,32,69,82,82,79,82,32,49,13,78,79,80,69,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_unknown_command + type: assert.screen + params: + contains: "SYNTAX" + + - id: direct_old_ping_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,83,67,65,76,65,82,32,72,65,83,32,78,79,32,65,76,73,65,83,13,83,67,65,76,65,82,40,80,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_ping_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_old_add16_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,65,68,68,49,54,32,72,65,83,32,78,79,32,65,76,73,65,83,13,65,68,68,49,54,40,49,44,50,44,65,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_add16_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_old_strup_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,83,84,82,85,80,32,72,65,83,32,78,79,32,65,76,73,65,83,13,83,84,82,85,80,40,34,97,98,99,34,44,84,36,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_strup_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_old_hcrc_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,72,67,82,67,32,72,65,83,32,78,79,32,65,76,73,65,83,13,72,67,82,67,40,34,65,66,34,44,72,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_hcrc_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_old_sumai_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,83,85,77,65,73,32,72,65,83,32,78,79,32,65,76,73,65,83,13,83,85,77,65,73,40,65,37,40,48,41,44,49,44,83,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_sumai_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_old_rangeai_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,79,76,68,32,82,65,78,71,69,65,73,32,72,65,83,32,78,79,32,65,76,73,65,83,13,82,65,78,71,69,65,73,40,49,44,49,44,65,37,40,48,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_old_rangeai_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: direct_command_name_in_string + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,67,79,77,77,65,78,68,32,78,65,77,69,32,73,78,32,83,84,82,73,78,71,32,83,72,79,85,76,68,32,78,79,84,32,68,73,83,80,65,84,67,72,13,80,82,73,78,84,32,34,78,79,80,69,40,41,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_command_name_in_string + type: assert.screen + params: + contains: "NOPE()" + - id: assert_direct_command_name_in_string_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_command_name_in_rem + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,78,79,80,69,40,41,13,80,82,73,78,84,32,34,68,45,82,69,77,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_command_name_in_rem + type: assert.screen + params: + contains: "D-REMOK" + - id: assert_direct_command_name_in_rem_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: direct_first_comma_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,70,73,82,83,84,32,65,82,71,32,67,79,77,77,65,32,73,83,32,78,79,84,32,67,65,78,79,78,73,67,65,76,13,90,65,68,68,49,54,40,44,49,44,50,44,65,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_first_comma_rejected + type: assert.screen + params: + contains: "SYNTAX" + + - id: direct_missing_out_marker_rejected + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,76,69,71,65,67,89,32,83,80,65,67,69,32,70,79,82,77,32,82,69,74,69,67,84,69,68,13,90,65,68,68,49,54,32,49,44,50,44,65,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_missing_out_marker_rejected + type: assert.screen + params: + contains: "SYNTAX" + + - id: direct_seed_resume_vars + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,82,69,83,85,77,69,32,83,65,86,69,32,66,65,83,73,67,32,86,65,82,83,32,84,72,82,79,85,71,72,32,82,69,65,68,89,79,83,32,69,88,73,84,13,86,37,61,51,50,49,58,86,83,36,61,34,79,75,34,13,80,82,73,78,84,32,34,68,45,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_seed_resume_vars + type: assert.screen + params: + contains: "D-SEED 321 :OK" + - id: direct_exit_to_launcher + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: wait_launcher_after_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_after_exit + type: input.sequence + params: + keys: [145,17,13] + inter_key_delay_s: 0.10 + post_delay_s: 3.0 + - id: wait_readybasic_after_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + capture_label: readybasic_full_suite_visual_after_resume + - id: direct_registry_after_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,80,79,83,84,82,69,83,32,66,65,83,73,67,32,86,65,82,83,32,65,78,68,32,82,69,71,73,83,84,82,89,32,83,84,73,76,76,32,65,67,84,73,86,69,13,80,82,73,78,84,32,34,68,45,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,80,82,73,78,84,32,34,68,45,82,69,83,85,77,69,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_direct_state_after_resume + type: assert.screen + params: + contains: "D-STATE 321 :OK" + - id: assert_direct_registry_after_resume + type: assert.screen + params: + contains: "D-RESUME 1" + + - id: program_ping_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,90,69,67,72,79,49,32,72,69,65,76,84,72,32,76,79,87,32,79,86,76,32,83,84,65,84,69,77,69,78,84,32,83,84,79,82,69,83,32,80,37,61,49,32,83,67,82,69,69,78,32,80,45,90,69,67,72,79,13,50,48,32,90,69,67,72,79,49,40,80,37,41,13,51,48,32,80,82,73,78,84,32,34,80,45,90,69,67,72,79,34,59,80,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_ping_rem + type: assert.screen + params: + contains: "REM ZECHO1 HEALTH" + - id: program_ping_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_ping_run + type: assert.screen + params: + contains: "P-ZECHO 1" + + - id: program_chain_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,65,68,68,32,78,85,77,32,80,65,82,65,77,83,32,83,65,77,69,32,76,73,78,69,32,82,69,84,85,82,78,32,65,37,61,51,32,83,67,82,69,69,78,32,80,45,67,72,65,73,78,13,50,48,32,65,37,61,90,65,68,68,49,54,40,49,44,50,41,58,80,82,73,78,84,32,34,80,45,67,72,65,73,78,34,59,65,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_chain_rem + type: assert.screen + params: + contains: "REM ADD NUM PARAMS" + - id: program_chain_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_chain_run + type: assert.screen + params: + contains: "P-CHAIN 3" + + - id: program_if_true_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,73,70,32,84,82,85,69,32,84,72,69,78,32,82,69,84,85,82,78,32,67,79,77,77,65,78,68,32,83,67,82,69,69,78,32,80,45,73,70,84,82,85,69,13,50,48,32,80,37,61,48,13,51,48,32,73,70,32,49,32,84,72,69,78,32,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,52,48,32,80,82,73,78,84,32,34,80,45,73,70,84,82,85,69,34,59,80,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_if_true_run + type: assert.screen + params: + contains: "P-IFTRUE 1" + + - id: program_if_false_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,73,70,32,70,65,76,83,69,32,83,75,73,80,83,32,82,69,84,85,82,78,32,67,79,77,77,65,78,68,32,83,67,82,69,69,78,32,80,45,73,70,70,65,76,83,69,13,50,48,32,80,37,61,48,13,51,48,32,73,70,32,48,32,84,72,69,78,32,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,52,48,32,80,82,73,78,84,32,34,80,45,73,70,70,65,76,83,69,34,59,80,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_if_false_run + type: assert.screen + params: + contains: "P-IFFALSE 0" + + - id: program_for_next_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,70,79,82,32,78,69,88,84,32,67,79,77,77,65,78,68,32,82,69,84,85,82,78,32,83,67,82,69,69,78,32,80,45,70,79,82,13,50,48,32,70,79,82,32,73,61,49,32,84,79,32,51,13,51,48,32,65,37,61,90,65,68,68,49,54,40,73,44,49,48,41,13,52,48,32,78,69,88,84,13,53,48,32,80,82,73,78,84,32,34,80,45,70,79,82,34,59,65,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_for_next_run + type: assert.screen + params: + contains: "P-FOR 13" + + - id: program_strup_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,85,80,80,69,82,32,86,65,82,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,84,36,61,65,66,67,32,83,67,82,69,69,78,32,80,45,83,84,82,13,50,48,32,83,36,61,34,97,98,99,34,13,51,48,32,84,36,61,85,80,80,69,82,40,83,36,41,13,52,48,32,80,82,73,78,84,32,34,80,45,83,84,82,34,59,84,36,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_strup_rem + type: assert.screen + params: + contains: "REM UPPER VAR STRING" + - id: program_strup_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_strup_run + type: assert.screen + params: + contains: "P-STRABC" + + - id: program_lower_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,76,79,87,69,82,32,86,65,82,32,83,84,82,73,78,71,32,82,69,84,85,82,78,32,84,36,61,97,98,99,32,83,67,82,69,69,78,32,80,45,76,79,87,13,50,48,32,83,36,61,34,65,66,67,34,13,51,48,32,84,36,61,76,79,87,69,82,40,83,36,41,13,52,48,32,80,82,73,78,84,32,34,80,45,76,79,87,65,83,67,34,59,65,83,67,40,84,36,41,59,65,83,67,40,77,73,68,36,40,84,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,84,36,44,51,44,49,41,41,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_lower_rem + type: assert.screen + params: + contains: "REM LOWER VAR STRING" + - id: program_lower_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_lower_run + type: assert.screen + params: + contains: "P-LOWASC 97 98 99" + + - id: program_hcrc_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,90,72,73,68,68,69,78,82,65,77,32,72,73,68,68,69,78,32,65,48,48,48,32,87,79,82,75,69,82,32,82,69,84,85,82,78,32,72,37,61,49,51,49,32,83,67,82,69,69,78,32,80,45,90,72,73,68,68,69,78,82,65,77,13,50,48,32,72,37,61,90,72,73,68,68,69,78,82,65,77,40,34,65,66,34,41,13,51,48,32,80,82,73,78,84,32,34,80,45,90,72,73,68,68,69,78,82,65,77,34,59,72,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_hcrc_rem + type: assert.screen + params: + contains: "REM ZHIDDENRAM HIDDEN" + - id: program_hcrc_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_hcrc_run + type: assert.screen + params: + contains: "P-ZHIDDENRAM 131" + - id: dump_program_hidden_worker + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: program_sumai_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,90,83,85,77,78,85,77,65,82,82,65,89,32,73,78,84,32,65,82,82,65,89,32,80,84,82,32,67,79,85,78,84,32,82,69,84,85,82,78,32,83,37,61,54,32,83,67,82,69,69,78,32,80,45,83,85,77,13,50,48,32,68,73,77,32,65,37,40,51,41,13,51,48,32,65,37,40,48,41,61,49,58,65,37,40,49,41,61,50,58,65,37,40,50,41,61,51,13,52,48,32,83,37,61,90,83,85,77,78,85,77,65,82,82,65,89,40,65,37,40,48,41,44,51,41,13,53,48,32,80,82,73,78,84,32,34,80,45,83,85,77,34,59,83,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_sumai_rem + type: assert.screen + params: + contains: "REM ZSUMNUMARRAY INT ARRAY" + - id: program_sumai_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_sumai_run + type: assert.screen + params: + contains: "P-SUM 6" + + - id: program_range_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,82,65,78,71,69,32,82,69,83,85,76,84,32,70,82,65,77,69,32,84,79,32,73,78,84,32,65,82,82,65,89,32,83,67,82,69,69,78,32,80,45,82,65,78,71,69,13,50,48,32,68,73,77,32,82,37,40,52,41,13,51,48,32,90,82,65,78,71,69,78,85,77,65,82,82,65,89,40,55,44,52,44,82,37,40,48,41,41,13,52,48,32,80,82,73,78,84,32,34,80,45,82,65,78,71,69,34,59,82,37,40,48,41,59,82,37,40,51,41,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_range_rem + type: assert.screen + params: + contains: "REM RANGE RESULT FRAME" + - id: program_range_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_range_run + type: assert.screen + params: + contains: "P-RANGE 7 10" + + - id: program_handle_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,66,85,70,32,82,69,85,32,72,65,78,68,76,69,32,65,76,76,79,67,32,82,69,84,85,82,78,32,70,73,76,76,32,70,82,69,69,32,72,37,61,49,32,83,67,82,69,69,78,32,80,45,66,85,70,13,50,48,32,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,51,48,32,80,82,73,78,84,32,34,80,45,66,85,70,34,59,72,37,13,52,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,53,48,32,66,85,70,70,82,69,69,40,72,37,41,13,54,48,32,80,82,73,78,84,32,34,80,45,70,82,69,69,34,59,72,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_handle_rem + type: assert.screen + params: + contains: "REM BUF REU HANDLE" + - id: program_handle_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_handle_new + type: assert.screen + params: + contains: "P-BUF 1" + - id: assert_program_handle_free + type: assert.screen + params: + contains: "P-FREE 1" + - id: dump_program_handle + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: program_fail_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,90,70,65,73,76,32,69,82,82,79,82,32,67,76,69,65,82,83,32,88,37,32,66,69,70,79,82,69,32,82,66,32,69,82,82,79,82,32,55,32,83,67,82,69,69,78,32,80,45,70,67,76,82,13,50,48,32,88,37,61,57,57,13,51,48,32,90,70,65,73,76,40,55,44,88,37,41,13,52,48,32,80,82,73,78,84,32,34,80,45,65,70,84,69,82,34,59,88,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_fail_rem + type: assert.screen + params: + contains: "REM ZFAIL ERROR" + - id: program_fail_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_fail_error + type: assert.screen + params: + contains: "?RB ERROR 7" + - id: program_fail_print_cleared + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,80,45,70,67,76,82,34,59,88,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: assert_program_fail_cleared + type: assert.screen + params: + contains: "P-FCLR 0" + + - id: procfunc_load_rbproc1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,79,65,68,32,34,82,66,80,82,79,67,49,34,44,56,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: procfunc_list_rbproc1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,73,83,84,32,49,48,48,48,45,49,48,50,48,13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: assert_procfunc_list_proc + type: assert.screen + params: + contains: "PROC SHOW0" + - id: assert_procfunc_list_endp + type: assert.screen + params: + contains: "ENDP" + - id: procfunc_list_func_addi + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,73,83,84,32,49,51,48,48,45,49,51,50,48,13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: assert_procfunc_list_func + type: assert.screen + params: + contains: "FUNC ADDI" + - id: procfunc_list_nested_func + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,73,83,84,32,49,54,48,48,45,49,54,51,48,13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: assert_procfunc_list_exec_out + type: assert.screen + params: + contains: "R%=INNER(X%)" + - id: procfunc_run_rbproc1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 4.0 + - id: assert_procfunc_run_float_nested + type: assert.screen + params: + contains: "NFADD" + - id: assert_procfunc_run_string_nested + type: assert.screen + params: + contains: "NGS MIX" + - id: assert_procfunc_run_float_statement + type: assert.screen + params: + contains: "SFADD" + + - id: dump_final_plugin_state + type: dump.memory_ranges + params: + ranges: *plugin_ranges + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.easyflash.yaml new file mode 100644 index 0000000..aeea792 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.easyflash.yaml @@ -0,0 +1,106 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_f2_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_hotkey_f2_prompt + - id: assert_chrin_vector_installed + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_installed + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: f2_to_next_loaded_app_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: f2_to_next_loaded_app_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: f2_to_next_loaded_app + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_target_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f2 + - id: assert_keyboard_buffer_empty_after_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_target_stable_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: target_stable_after_readybasic_f2 + - id: assert_keyboard_buffer_empty_stable_after_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.regular.yaml new file mode 100644 index 0000000..4848e49 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.regular.yaml @@ -0,0 +1,91 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_f2_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_f2_prompt + - id: assert_chrin_vector_installed + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_installed + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: f2_to_next_loaded_app_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: f2_to_next_loaded_app_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: f2_to_next_loaded_app + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_target_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f2 + - id: assert_keyboard_buffer_empty_after_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_target_stable_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: target_stable_after_readybasic_f2 + - id: assert_keyboard_buffer_empty_stable_after_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.easyflash.yaml new file mode 100644 index 0000000..9a0766e --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.easyflash.yaml @@ -0,0 +1,231 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_hotkey_prompt + - id: assert_chrin_vector_installed + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_installed + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: seed_readybasic_state + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,72,79,84,34,13,80,82,73,78,84,32,34,72,79,84,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: seed_readybasic_state_capture + type: screen.capture + params: + label: seed_readybasic_state + note: after seeding ReadyBASIC state before hotkey tests + - id: assert_seed_state + type: assert.screen + params: + contains: "HOTSEED 321 :HOT" + - id: ctrl_b_from_readybasic_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: ctrl_b_from_readybasic_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: ctrl_b_from_readybasic + type: monitor.command + params: + command: "raw:g 033c" + - id: ctrl_b_from_readybasic_capture + type: screen.capture + params: + label: readybasic_hotkey_ctrl_b_from_readybasic_after_input + note: after Ctrl+B input before launcher wait + - id: wait_launcher_after_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: launcher_after_readybasic_ctrl_b + - id: assert_keyboard_buffer_empty_after_ctrl_b + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: move_readybasic_to_editor_capture + type: screen.capture + params: + label: readybasic_hotkey_readybasic_to_editor_menu + note: after navigating to editor from launcher + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_loaded_for_hotkey_probe + - id: ctrl_b_from_editor + type: monitor.command + params: + command: "keybuf \\x02" + - id: ctrl_b_from_editor_capture + type: screen.capture + params: + label: readybasic_hotkey_ctrl_b_from_editor_after_input + note: after Ctrl+B input from editor before launcher wait + - id: wait_launcher_after_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic_for_f4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: move_editor_to_readybasic_for_f4_capture + type: screen.capture + params: + label: readybasic_hotkey_editor_to_readybasic_menu + note: after navigating back to ReadyBASIC before F4 test + - id: wait_readybasic_resume_for_f4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_before_f4 + - id: assert_readybasic_state_after_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,79,84,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_state_after_ctrl_b_capture + type: screen.capture + params: + label: readybasic_hotkey_state_after_ctrl_b + note: after typing HOTSTATE verification command + - id: assert_hot_state_after_ctrl_b + type: assert.screen + params: + contains: "HOTSTATE 321 :HOT" + - id: build_list_timing_program + type: input.sequence + params: + keys: [49,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,49,34,13,50,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,50,34,13,51,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,51,34,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.2 + - id: build_list_timing_program_capture + type: screen.capture + params: + label: readybasic_hotkey_list_before_f4 + note: after building LIST program before F4 + - id: wait_list_visible_before_f4 + type: screen.wait_contains + params: + text: "HOTLIST3" + wait_timeout_s: 20 + capture_label: readybasic_list_before_f4 + - id: f4_to_prev_loaded_app_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 05 85 CB 20 7E C1 A9 01 8D 8D 02 A9 05 85 CB 20 7E C1 4C 74 A4" + - id: f4_to_prev_loaded_app_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: f4_to_prev_loaded_app + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_target_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f4 + - id: assert_keyboard_buffer_empty_after_f4 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_target_stable_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: target_stable_after_readybasic_f4 + - id: assert_keyboard_buffer_empty_stable_after_f4 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.regular.yaml new file mode 100644 index 0000000..b9c02de --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.regular.yaml @@ -0,0 +1,216 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_prompt + - id: assert_chrin_vector_installed + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_installed + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: seed_readybasic_state + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,72,79,84,34,13,80,82,73,78,84,32,34,72,79,84,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: seed_readybasic_state_capture + type: screen.capture + params: + label: seed_readybasic_state + note: after seeding ReadyBASIC state before hotkey tests + - id: assert_seed_state + type: assert.screen + params: + contains: "HOTSEED 321 :HOT" + - id: ctrl_b_from_readybasic_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: ctrl_b_from_readybasic_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: ctrl_b_from_readybasic + type: monitor.command + params: + command: "raw:g 033c" + - id: ctrl_b_from_readybasic_capture + type: screen.capture + params: + label: readybasic_hotkey_ctrl_b_from_readybasic_after_input + note: after Ctrl+B input before launcher wait + - id: wait_launcher_after_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: launcher_after_readybasic_ctrl_b + - id: assert_keyboard_buffer_empty_after_ctrl_b + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: move_readybasic_to_editor_capture + type: screen.capture + params: + label: readybasic_hotkey_readybasic_to_editor_menu + note: after navigating to editor from launcher + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_loaded_for_hotkey_probe + - id: ctrl_b_from_editor + type: monitor.command + params: + command: "keybuf \\x02" + - id: ctrl_b_from_editor_capture + type: screen.capture + params: + label: readybasic_hotkey_ctrl_b_from_editor_after_input + note: after Ctrl+B input from editor before launcher wait + - id: wait_launcher_after_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic_for_f4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: move_editor_to_readybasic_for_f4_capture + type: screen.capture + params: + label: readybasic_hotkey_editor_to_readybasic_menu + note: after navigating back to ReadyBASIC before F4 test + - id: wait_readybasic_resume_for_f4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_before_f4 + - id: assert_readybasic_state_after_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,79,84,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_state_after_ctrl_b_capture + type: screen.capture + params: + label: readybasic_hotkey_state_after_ctrl_b + note: after typing HOTSTATE verification command + - id: assert_hot_state_after_ctrl_b + type: assert.screen + params: + contains: "HOTSTATE 321 :HOT" + - id: build_list_timing_program + type: input.sequence + params: + keys: [49,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,49,34,13,50,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,50,34,13,51,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,51,34,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.2 + - id: build_list_timing_program_capture + type: screen.capture + params: + label: readybasic_hotkey_list_before_f4 + note: after building LIST program before F4 + - id: wait_list_visible_before_f4 + type: screen.wait_contains + params: + text: "HOTLIST3" + wait_timeout_s: 20 + capture_label: readybasic_list_before_f4 + - id: f4_to_prev_loaded_app_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 05 85 CB 20 7E C1 A9 01 8D 8D 02 A9 05 85 CB 20 7E C1 4C 74 A4" + - id: f4_to_prev_loaded_app_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: f4_to_prev_loaded_app + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_target_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f4 + - id: assert_keyboard_buffer_empty_after_f4 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_target_stable_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: target_stable_after_readybasic_f4 + - id: assert_keyboard_buffer_empty_stable_after_f4 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.easyflash.yaml new file mode 100644 index 0000000..3937c99 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.easyflash.yaml @@ -0,0 +1,258 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_keyboard_regression_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_launcher_initial + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 420 + capture_label: keyboard_regression_launcher_initial + - id: launch_readybasic_from_launcher + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_initial + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: keyboard_regression_readybasic_initial + - id: assert_readybasic_bank_initial + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_initial + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_initial + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: assert_warp_enabled + type: warp.set + params: + enabled: true + capture_after: false + - id: type_space_string_once + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,65,32,66,32,67,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_single_space_string_output + type: assert.screen + params: + contains: "A B C" + - id: assert_keyboard_buffer_empty_after_space_string + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: type_partial_line_10 + type: input.sequence + params: + keys: [49,48] + inter_key_delay_s: 0.03 + post_delay_s: 0.1 + - id: partial_line_ctrl_b_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: partial_line_ctrl_b_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: partial_line_ctrl_b + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_partial_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: keyboard_regression_launcher_after_partial_ctrl_b + - id: assert_no_rem_after_partial_ctrl_b + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: assert_launcher_bank_after_partial_ctrl_b + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_after_partial_ctrl_b + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_after_partial_ctrl_b + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: keyboard_regression_readybasic_after_partial_ctrl_b + - id: list_after_partial_ctrl_b + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_no_rem_listed_after_partial_ctrl_b + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: type_after_partial_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,65,70,84,69,82,67,84,82,76,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_type_after_partial_ctrl_b + type: assert.screen + params: + contains: "AFTERCTRL" + - id: clean_ctrl_b_to_launcher_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: clean_ctrl_b_to_launcher_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: clean_ctrl_b_to_launcher + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_to_load_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: keyboard_regression_editor_loaded + - id: editor_ctrl_b_to_launcher + type: monitor.command + params: + command: "keybuf \\x02" + - id: wait_launcher_after_editor_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_before_partial_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: keyboard_regression_readybasic_before_partial_f2 + - id: type_partial_line_20 + type: input.sequence + params: + keys: [50,48] + inter_key_delay_s: 0.03 + post_delay_s: 0.1 + - id: partial_line_f2_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: partial_line_f2_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: partial_line_f2 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_editor_after_partial_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: keyboard_regression_editor_after_partial_f2 + - id: assert_no_rem_after_partial_f2 + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: assert_keylog_restored_after_partial_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "48 EB" + - id: assert_chrin_restored_after_partial_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "57 F1" + - id: assert_keyboard_buffer_empty_after_partial_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.regular.yaml new file mode 100644 index 0000000..d048a61 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.regular.yaml @@ -0,0 +1,257 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_keyboard_regression_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_launcher_initial + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 180 + capture_label: keyboard_regression_launcher_initial + - id: launch_readybasic_from_launcher + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_initial + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: keyboard_regression_readybasic_initial + - id: assert_readybasic_bank_initial + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_initial + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_initial + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: assert_warp_enabled + type: warp.set + params: + enabled: true + capture_after: false + - id: type_space_string_once + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,65,32,66,32,67,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_single_space_string_output + type: assert.screen + params: + contains: "A B C" + - id: assert_keyboard_buffer_empty_after_space_string + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: type_partial_line_10 + type: input.sequence + params: + keys: [49,48] + inter_key_delay_s: 0.03 + post_delay_s: 0.1 + - id: partial_line_ctrl_b_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: partial_line_ctrl_b_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: partial_line_ctrl_b + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_partial_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: keyboard_regression_launcher_after_partial_ctrl_b + - id: assert_no_rem_after_partial_ctrl_b + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: assert_launcher_bank_after_partial_ctrl_b + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_after_partial_ctrl_b + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_after_partial_ctrl_b + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: keyboard_regression_readybasic_after_partial_ctrl_b + - id: list_after_partial_ctrl_b + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_no_rem_listed_after_partial_ctrl_b + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: type_after_partial_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,65,70,84,69,82,67,84,82,76,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_type_after_partial_ctrl_b + type: assert.screen + params: + contains: "AFTERCTRL" + - id: clean_ctrl_b_to_launcher_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: clean_ctrl_b_to_launcher_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: clean_ctrl_b_to_launcher + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_to_load_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: keyboard_regression_editor_loaded + - id: editor_ctrl_b_to_launcher + type: monitor.command + params: + command: "keybuf \\x02" + - id: wait_launcher_after_editor_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_before_partial_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: keyboard_regression_readybasic_before_partial_f2 + - id: type_partial_line_20 + type: input.sequence + params: + keys: [50,48] + inter_key_delay_s: 0.03 + post_delay_s: 0.1 + - id: partial_line_f2_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: partial_line_f2_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: partial_line_f2 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_editor_after_partial_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: keyboard_regression_editor_after_partial_f2 + - id: assert_no_rem_after_partial_f2 + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: assert_keylog_restored_after_partial_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "48 EB" + - id: assert_chrin_restored_after_partial_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "57 F1" + - id: assert_keyboard_buffer_empty_after_partial_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_large_vars_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_large_vars_probe.easyflash.yaml new file mode 100644 index 0000000..adc1cd8 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_large_vars_probe.easyflash.yaml @@ -0,0 +1,261 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_large_vars_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_prompt + - id: build_program_lines + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,80,82,73,78,84,32,34,79,78,69,34,13,50,48,32,80,82,73,78,84,32,34,84,87,79,34,13,51,48,32,80,82,73,78,84,32,34,84,72,82,69,69,34,13,52,48,32,80,82,73,78,84,32,34,70,79,85,82,34,13,53,48,32,80,82,73,78,84,32,34,70,73,86,69,34,13] + inter_key_delay_s: 0.04 + post_delay_s: 0.8 + - id: clear_variables + type: input.sequence + params: + keys: [67,76,82,13] + inter_key_delay_s: 0.04 + post_delay_s: 2.0 + - id: assign_alpha_string + type: input.sequence + params: + keys: [65,36,61,34,65,76,80,72,65,34,13] + inter_key_delay_s: 0.05 + post_delay_s: 2.0 + - id: assign_bravo_string + type: input.sequence + params: + keys: [66,36,61,34,66,82,65,86,79,34,13] + inter_key_delay_s: 0.05 + post_delay_s: 2.0 + - id: assign_charlie_string + type: input.sequence + params: + keys: [71,36,61,34,67,72,65,82,76,73,69,34,13] + inter_key_delay_s: 0.05 + post_delay_s: 2.0 + - id: dump_after_abc_assignment + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: print_charlie_after_c_assignment + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.04 + post_delay_s: 2.0 + - id: dump_after_first_print_charlie + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: assert_charlie_after_c_assignment + type: assert.screen + params: + contains: "CHARLIE" + - id: assign_delta_string + type: input.sequence + params: + keys: [68,36,61,34,68,69,76,84,65,34,13] + inter_key_delay_s: 0.05 + post_delay_s: 2.0 + - id: dump_after_delta_assignment + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: print_charlie_after_delta_assignment + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.04 + post_delay_s: 2.0 + - id: dump_after_second_print_charlie + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: assert_charlie_after_delta_assignment + type: assert.screen + params: + contains: "CHARLIE" + - id: dump_after_delta_before_dim + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - id: dim_large_array + type: input.sequence + params: + keys: [68,73,77,32,69,40,50,48,48,41,13,69,40,49,57,57,41,61,49,50,51,52,13] + inter_key_delay_s: 0.05 + post_delay_s: 0.8 + - id: print_large_direct_vars_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13,80,82,73,78,84,32,66,36,13,80,82,73,78,84,32,71,36,13,80,82,73,78,84,32,68,36,13,80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.04 + post_delay_s: 1.5 + - id: dump_before_exit + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: assert_before_exit_alpha + type: assert.screen + params: + contains: "ALPHA" + - id: assert_before_exit_delta + type: assert.screen + params: + contains: "DELTA" + - id: assert_before_exit_charlie + type: assert.screen + params: + contains: "CHARLIE" + - id: assert_before_exit_array + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_readybasic + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: print_large_direct_vars_after_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,43,66,36,43,71,36,43,68,36,13,80,82,73,78,84,32,69,40,49,57,57,41,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: dump_after_resume + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: assert_after_resume_alpha + type: assert.screen + params: + contains: "ALPHABRAVOCHARLIEDELTA" + - id: assert_after_resume_bravo + type: assert.screen + params: + contains: "BRAVO" + - id: assert_after_resume_charlie + type: assert.screen + params: + contains: "CHARLIE" + - id: assert_after_resume_delta + type: assert.screen + params: + contains: "DELTA" + - id: assert_after_resume_array + type: assert.screen + params: + contains: "1234" + - id: assert_after_resume_program + type: assert.screen + params: + contains: "50 PRINT" + - id: dump_after_resume_verified + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_large_vars_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_large_vars_probe.regular.yaml new file mode 100644 index 0000000..0874e05 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_large_vars_probe.regular.yaml @@ -0,0 +1,246 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_large_vars_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_prompt + - id: build_program_lines + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,80,82,73,78,84,32,34,79,78,69,34,13,50,48,32,80,82,73,78,84,32,34,84,87,79,34,13,51,48,32,80,82,73,78,84,32,34,84,72,82,69,69,34,13,52,48,32,80,82,73,78,84,32,34,70,79,85,82,34,13,53,48,32,80,82,73,78,84,32,34,70,73,86,69,34,13] + inter_key_delay_s: 0.04 + post_delay_s: 0.8 + - id: clear_variables + type: input.sequence + params: + keys: [67,76,82,13] + inter_key_delay_s: 0.04 + post_delay_s: 2.0 + - id: assign_alpha_string + type: input.sequence + params: + keys: [65,36,61,34,65,76,80,72,65,34,13] + inter_key_delay_s: 0.05 + post_delay_s: 2.0 + - id: assign_bravo_string + type: input.sequence + params: + keys: [66,36,61,34,66,82,65,86,79,34,13] + inter_key_delay_s: 0.05 + post_delay_s: 2.0 + - id: assign_charlie_string + type: input.sequence + params: + keys: [71,36,61,34,67,72,65,82,76,73,69,34,13] + inter_key_delay_s: 0.05 + post_delay_s: 2.0 + - id: dump_after_abc_assignment + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: print_charlie_after_c_assignment + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.04 + post_delay_s: 2.0 + - id: dump_after_first_print_charlie + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: assert_charlie_after_c_assignment + type: assert.screen + params: + contains: "CHARLIE" + - id: assign_delta_string + type: input.sequence + params: + keys: [68,36,61,34,68,69,76,84,65,34,13] + inter_key_delay_s: 0.05 + post_delay_s: 2.0 + - id: dump_after_delta_assignment + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: print_charlie_after_delta_assignment + type: input.sequence + params: + keys: [80,82,73,78,84,32,71,36,13] + inter_key_delay_s: 0.04 + post_delay_s: 2.0 + - id: dump_after_second_print_charlie + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: assert_charlie_after_delta_assignment + type: assert.screen + params: + contains: "CHARLIE" + - id: dump_after_delta_before_dim + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - id: dim_large_array + type: input.sequence + params: + keys: [68,73,77,32,69,40,50,48,48,41,13,69,40,49,57,57,41,61,49,50,51,52,13] + inter_key_delay_s: 0.05 + post_delay_s: 0.8 + - id: print_large_direct_vars_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13,80,82,73,78,84,32,66,36,13,80,82,73,78,84,32,71,36,13,80,82,73,78,84,32,68,36,13,80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.04 + post_delay_s: 1.5 + - id: dump_before_exit + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: assert_before_exit_alpha + type: assert.screen + params: + contains: "ALPHA" + - id: assert_before_exit_delta + type: assert.screen + params: + contains: "DELTA" + - id: assert_before_exit_charlie + type: assert.screen + params: + contains: "CHARLIE" + - id: assert_before_exit_array + type: assert.screen + params: + contains: "1234" + - id: exit_readybasic + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_readybasic + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: print_large_direct_vars_after_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,43,66,36,43,71,36,43,68,36,13,80,82,73,78,84,32,69,40,49,57,57,41,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: dump_after_resume + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: assert_after_resume_alpha + type: assert.screen + params: + contains: "ALPHABRAVOCHARLIEDELTA" + - id: assert_after_resume_bravo + type: assert.screen + params: + contains: "BRAVO" + - id: assert_after_resume_charlie + type: assert.screen + params: + contains: "CHARLIE" + - id: assert_after_resume_delta + type: assert.screen + params: + contains: "DELTA" + - id: assert_after_resume_array + type: assert.screen + params: + contains: "1234" + - id: assert_after_resume_program + type: assert.screen + params: + contains: "50 PRINT" + - id: dump_after_resume_verified + type: dump.memory_ranges + params: + ranges: + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } + - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } + - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } + - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_lifecycle_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_lifecycle_probe.easyflash.yaml new file mode 100644 index 0000000..68ae07a --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_lifecycle_probe.easyflash.yaml @@ -0,0 +1,290 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_lifecycle_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_loading + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + - id: capture_after_readybasic_loading + type: screen.capture + params: + label: after_readybasic_loading + note: after READYBASIC first appears, before READY prompt wait + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_prompt + - id: dump_prompt_core + type: dump.memory_ranges + params: + ranges: &core_ranges + - { label: entry_1000, start: 0x1000, end: 0x1120 } + - { label: hidden_shadow_9a00, start: 0x9A00, end: 0x9F40 } + - { label: hidden_visible_a000, start: 0xA000, end: 0xA540 } + - { label: vectors_0300, start: 0x0300, end: 0x030B } + - { label: kernal_vectors_0324, start: 0x0324, end: 0x032B } + - { label: chrget_0073, start: 0x0073, end: 0x008A } + - { label: basic_zp_002b, start: 0x002B, end: 0x003F } + - { label: txtptr_007a, start: 0x007A, end: 0x007B } + - { label: kernal_mem_bounds_0280, start: 0x0280, end: 0x0287 } + - { label: input_buffer_0200, start: 0x0200, end: 0x0258 } + - { label: low_ram_0100_0600, start: 0x0100, end: 0x0600 } + - { label: screen_0400, start: 0x0400, end: 0x07E7 } + - { label: basic_text_1200, start: 0x1200, end: 0x1300 } + - { label: readybasic_bridge_c000, start: 0xC000, end: 0xC5FF } + - id: type_print_1 + type: input.sequence + params: + keys: [80, 82, 73, 78, 84, 32, 49, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_print_1 + type: screen.capture + params: + label: after_print_1 + note: after direct print 1 + - id: assert_print_1_no_error + type: assert.screen_not_contains + params: + not_contains: "?" + - id: dump_print_1_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: type_print_hello + type: input.sequence + params: + keys: [80, 82, 73, 78, 84, 32, 34, 72, 69, 76, 76, 79, 34, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_print_hello + type: screen.capture + params: + label: after_print_hello + note: after direct print hello + - id: assert_print_hello_no_error + type: assert.screen_not_contains + params: + not_contains: "?" + - id: dump_print_hello_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: type_line_10_print_1 + type: input.sequence + params: + keys: [49, 48, 32, 80, 82, 73, 78, 84, 32, 49, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_line_entry + type: screen.capture + params: + label: after_10_print_1 + note: after numbered line entry + - id: dump_line_entry_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: assert_line_entry_no_error + type: assert.screen_not_contains + params: + not_contains: "?" + - id: assert_line_entry_no_at_artifacts + type: assert.screen_not_contains + params: + not_contains: "@" + - id: type_list + type: input.sequence + params: + keys: [76, 73, 83, 84, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_list + type: screen.capture + params: + label: after_list + note: after LIST + - id: assert_list_has_line + type: assert.screen + params: + contains: "10 PRINT 1" + - id: type_run + type: input.sequence + params: + keys: [82, 85, 78, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_run + type: screen.capture + params: + label: after_run + note: after RUN + - id: assert_run_no_error + type: assert.screen_not_contains + params: + not_contains: "?" + - id: assert_run_no_at_artifacts + type: assert.screen_not_contains + params: + not_contains: "@" + - id: dump_run_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: type_rb_direct_text + type: input.sequence + params: + keys: [80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,80,82,73,78,84,32,34,76,83,67,65,76,65,82,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_rb_direct_text + type: screen.capture + params: + label: after_rb_direct_text + note: after direct scalar command statement + - id: dump_rb_direct_text_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: assert_rb_direct_text + type: assert.screen + params: + contains: "LSCALAR 1" + - id: type_rb_direct_add + type: input.sequence + params: + keys: [65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13,80,82,73,78,84,32,34,76,65,68,68,34,59,65,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_rb_direct_add + type: screen.capture + params: + label: after_rb_direct_add + note: after direct ZADD16 statement + - id: dump_rb_direct_add_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: assert_rb_direct_add_screen + type: assert.screen + params: + contains: "LADD 15" + - id: type_line_20_rb_text + type: input.sequence + params: + keys: [50,48,32,76,36,61,85,80,80,69,82,40,34,108,105,110,101,34,41,13,51,48,32,80,82,73,78,84,32,76,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: type_run_with_rb_line + type: input.sequence + params: + keys: [82, 85, 78, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_run_with_rb_line + type: screen.capture + params: + label: after_run_with_rb_line + note: after RUN with stored ReadyBASIC command + - id: assert_run_with_rb_line + type: assert.screen + params: + contains: "LINE" + - id: type_exit_upper + type: input.sequence + params: + keys: [69, 88, 73, 84, 13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: capture_after_exit + type: screen.capture + params: + label: after_exit + note: after uppercase exit command + - id: wait_launcher_after_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: type_resume_readybasic + type: input.sequence + params: + keys: [145,17,13] + inter_key_delay_s: 0.10 + post_delay_s: 3.0 + - id: wait_readybasic_prompt_after_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + capture_on_success: true + capture_label: readybasic_prompt_after_resume + - id: type_list_after_resume + type: input.sequence + params: + keys: [76, 73, 83, 84, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_list_after_resume + type: screen.capture + params: + label: after_list_after_resume + note: after relaunching ReadyBASIC from REU and LISTing + - id: assert_resume_preserved_line + type: assert.screen + params: + contains: "10 PRINT 1" + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_lifecycle_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_lifecycle_probe.regular.yaml new file mode 100644 index 0000000..71b74b6 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_lifecycle_probe.regular.yaml @@ -0,0 +1,275 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_lifecycle_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_loading + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + - id: capture_after_readybasic_loading + type: screen.capture + params: + label: after_readybasic_loading + note: after READYBASIC first appears, before READY prompt wait + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_prompt + - id: dump_prompt_core + type: dump.memory_ranges + params: + ranges: &core_ranges + - { label: entry_1000, start: 0x1000, end: 0x1120 } + - { label: hidden_shadow_9a00, start: 0x9A00, end: 0x9F40 } + - { label: hidden_visible_a000, start: 0xA000, end: 0xA540 } + - { label: vectors_0300, start: 0x0300, end: 0x030B } + - { label: kernal_vectors_0324, start: 0x0324, end: 0x032B } + - { label: chrget_0073, start: 0x0073, end: 0x008A } + - { label: basic_zp_002b, start: 0x002B, end: 0x003F } + - { label: txtptr_007a, start: 0x007A, end: 0x007B } + - { label: kernal_mem_bounds_0280, start: 0x0280, end: 0x0287 } + - { label: input_buffer_0200, start: 0x0200, end: 0x0258 } + - { label: low_ram_0100_0600, start: 0x0100, end: 0x0600 } + - { label: screen_0400, start: 0x0400, end: 0x07E7 } + - { label: basic_text_1200, start: 0x1200, end: 0x1300 } + - { label: readybasic_bridge_c000, start: 0xC000, end: 0xC5FF } + - id: type_print_1 + type: input.sequence + params: + keys: [80, 82, 73, 78, 84, 32, 49, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_print_1 + type: screen.capture + params: + label: after_print_1 + note: after direct print 1 + - id: assert_print_1_no_error + type: assert.screen_not_contains + params: + not_contains: "?" + - id: dump_print_1_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: type_print_hello + type: input.sequence + params: + keys: [80, 82, 73, 78, 84, 32, 34, 72, 69, 76, 76, 79, 34, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_print_hello + type: screen.capture + params: + label: after_print_hello + note: after direct print hello + - id: assert_print_hello_no_error + type: assert.screen_not_contains + params: + not_contains: "?" + - id: dump_print_hello_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: type_line_10_print_1 + type: input.sequence + params: + keys: [49, 48, 32, 80, 82, 73, 78, 84, 32, 49, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_line_entry + type: screen.capture + params: + label: after_10_print_1 + note: after numbered line entry + - id: dump_line_entry_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: assert_line_entry_no_error + type: assert.screen_not_contains + params: + not_contains: "?" + - id: assert_line_entry_no_at_artifacts + type: assert.screen_not_contains + params: + not_contains: "@" + - id: type_list + type: input.sequence + params: + keys: [76, 73, 83, 84, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_list + type: screen.capture + params: + label: after_list + note: after LIST + - id: assert_list_has_line + type: assert.screen + params: + contains: "10 PRINT 1" + - id: type_run + type: input.sequence + params: + keys: [82, 85, 78, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_run + type: screen.capture + params: + label: after_run + note: after RUN + - id: assert_run_no_error + type: assert.screen_not_contains + params: + not_contains: "?" + - id: assert_run_no_at_artifacts + type: assert.screen_not_contains + params: + not_contains: "@" + - id: dump_run_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: type_rb_direct_text + type: input.sequence + params: + keys: [80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,80,82,73,78,84,32,34,76,83,67,65,76,65,82,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_rb_direct_text + type: screen.capture + params: + label: after_rb_direct_text + note: after direct scalar command statement + - id: dump_rb_direct_text_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: assert_rb_direct_text + type: assert.screen + params: + contains: "LSCALAR 1" + - id: type_rb_direct_add + type: input.sequence + params: + keys: [65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13,80,82,73,78,84,32,34,76,65,68,68,34,59,65,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: capture_rb_direct_add + type: screen.capture + params: + label: after_rb_direct_add + note: after direct ZADD16 statement + - id: dump_rb_direct_add_core + type: dump.memory_ranges + params: + ranges: *core_ranges + - id: assert_rb_direct_add_screen + type: assert.screen + params: + contains: "LADD 15" + - id: type_line_20_rb_text + type: input.sequence + params: + keys: [50,48,32,76,36,61,85,80,80,69,82,40,34,108,105,110,101,34,41,13,51,48,32,80,82,73,78,84,32,76,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: type_run_with_rb_line + type: input.sequence + params: + keys: [82, 85, 78, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_run_with_rb_line + type: screen.capture + params: + label: after_run_with_rb_line + note: after RUN with stored ReadyBASIC command + - id: assert_run_with_rb_line + type: assert.screen + params: + contains: "LINE" + - id: type_exit_upper + type: input.sequence + params: + keys: [69, 88, 73, 84, 13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: capture_after_exit + type: screen.capture + params: + label: after_exit + note: after uppercase exit command + - id: wait_launcher_after_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: type_resume_readybasic + type: input.sequence + params: + keys: [145,17,13] + inter_key_delay_s: 0.10 + post_delay_s: 3.0 + - id: wait_readybasic_prompt_after_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + capture_on_success: true + capture_label: readybasic_prompt_after_resume + - id: type_list_after_resume + type: input.sequence + params: + keys: [76, 73, 83, 84, 13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_list_after_resume + type: screen.capture + params: + label: after_list_after_resume + note: after relaunching ReadyBASIC from REU and LISTing + - id: assert_resume_preserved_line + type: assert.screen + params: + contains: "10 PRINT 1" + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_module_overlay_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_module_overlay_probe.easyflash.yaml new file mode 100644 index 0000000..81ef5e6 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_module_overlay_probe.easyflash.yaml @@ -0,0 +1,198 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_module_overlay_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_module_overlay_prompt + - id: builtin_overlay_bank_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,70,82,69,69,77,69,77,40,41,13,80,82,73,78,84,32,34,83,76,79,84,83,34,59,90,83,76,79,84,48,40,41,59,34,47,34,59,90,83,76,79,84,49,40,41,59,34,47,34,59,90,83,76,79,84,50,40,41,13,80,82,73,78,84,32,34,83,80,65,78,34,59,90,83,80,65,78,40,41,13,80,82,73,78,84,32,34,79,86,76,34,59,90,79,86,76,49,40,41,59,34,47,34,59,90,79,86,76,50,40,41,13,80,82,73,78,84,32,34,67,80,89,34,59,90,67,80,89,82,83,84,40,41,59,34,47,34,59,90,67,79,80,89,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_builtin_overlay_bank_probe + type: screen.capture + params: + label: after_builtin_overlay_bank_probe + - id: assert_builtin_slots + type: assert.screen + params: + contains: "SLOTS 30 / 31 / 32" + - id: assert_builtin_span + type: assert.screen + params: + contains: "SPAN 40" + - id: assert_builtin_overlays + type: assert.screen + params: + contains: "OVL 51 / 52" + - id: rbm_sample1_2_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,80,82,73,78,84,32,34,76,68,49,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,49,34,41,13,80,82,73,78,84,32,34,68,77,49,34,59,90,68,77,49,40,41,13,80,82,73,78,84,32,34,76,68,50,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,50,34,41,13,80,82,73,78,84,32,34,68,77,50,34,59,90,68,77,50,83,40,41,13,80,82,73,78,84,32,34,68,79,86,34,59,90,68,79,86,49,40,41,59,34,47,34,59,90,68,79,86,50,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: assert_ld1 + type: assert.screen + params: + contains: "LD1 1" + - id: assert_dm1 + type: assert.screen + params: + contains: "DM1 61" + - id: assert_ld2 + type: assert.screen + params: + contains: "LD2 3" + - id: assert_dm2 + type: assert.screen + params: + contains: "DM2 74" + - id: assert_dov + type: assert.screen + params: + contains: "DOV 72 / 73" + - id: rbm_sample3_load + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,80,82,73,78,84,32,34,76,68,51,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,51,34,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_rbm_sample3_load + type: screen.capture + params: + label: after_rbm_sample3_load + - id: assert_ld3 + type: assert.screen + params: + contains: "LD3 30" + - id: rbm_sample3_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,82,66,77,51,32,70,73,82,83,84,32,67,65,76,76,83,58,32,69,65,67,72,32,79,86,69,82,76,65,89,32,83,84,65,84,69,32,83,84,65,82,84,83,32,65,84,32,90,69,82,79,32,65,70,84,69,82,32,76,79,65,68,13,80,82,73,78,84,32,34,77,51,65,34,59,90,83,65,65,40,41,59,34,47,34,59,90,83,69,66,40,41,13,80,82,73,78,84,32,34,77,51,66,34,59,90,84,65,65,40,41,59,34,47,34,59,90,84,69,66,40,41,13,80,82,73,78,84,32,34,77,51,67,34,59,90,85,65,65,40,41,59,34,47,34,59,90,85,69,66,40,41,13,70,82,69,69,77,69,77,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: capture_rbm_sample3 + type: screen.capture + params: + label: after_rbm_sample3 + - id: assert_m3a + type: assert.screen + params: + contains: "M3A 4 / 13" + - id: assert_m3b + type: assert.screen + params: + contains: "M3B 54 / 63" + - id: assert_m3c + type: assert.screen + params: + contains: "M3C 104 / 113" + - id: assert_free_same + type: assert.screen + params: + contains: "31113" + - id: rbm_sample3_copy_same_overlay_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,83,65,77,69,32,79,86,69,82,76,65,89,58,32,90,83,65,65,32,76,79,65,68,83,44,32,90,83,65,66,32,82,69,85,83,69,83,32,82,69,83,73,68,69,78,84,32,73,77,65,71,69,13,80,82,73,78,84,32,34,82,49,34,59,90,67,80,89,82,83,84,40,41,13,65,61,90,83,65,65,40,41,13,66,61,90,83,65,66,40,41,13,80,82,73,78,84,32,34,83,49,34,59,65,59,34,47,34,59,66,13,80,82,73,78,84,32,34,67,49,34,59,90,67,79,80,89,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_rbm_sample3_copy_same_overlay + type: screen.capture + params: + label: after_rbm_sample3_copy_same_overlay + - id: assert_copy_same_overlay_no_reload + type: assert.screen + params: + contains: "C1 2" + - id: assert_state_same_overlay_kept + type: assert.screen + params: + contains: "S1 4 / 6" + - id: rbm_sample3_copy_different_overlay_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,73,70,70,69,82,69,78,84,32,79,86,69,82,76,65,89,58,32,90,83,66,65,32,82,69,80,76,65,67,69,83,32,90,83,65,65,32,83,76,79,84,32,73,77,65,71,69,13,80,82,73,78,84,32,34,82,50,34,59,90,67,80,89,82,83,84,40,41,13,65,61,90,83,65,65,40,41,13,66,61,90,83,66,65,40,41,13,67,61,90,83,65,65,40,41,13,80,82,73,78,84,32,34,83,50,34,59,65,59,34,47,34,59,66,59,34,47,34,59,67,13,80,82,73,78,84,32,34,67,50,34,59,90,67,79,80,89,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_rbm_sample3_copy_different_overlay + type: screen.capture + params: + label: after_rbm_sample3_copy_different_overlay + - id: assert_copy_different_overlay_reload + type: assert.screen + params: + contains: "C2 4" + - id: assert_state_different_overlay_reloaded + type: assert.screen + params: + contains: "S2 4 / 6 / 4" + - id: rbm_sample3_copy_different_submodule_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,73,70,70,69,82,69,78,84,32,83,85,66,77,79,68,85,76,69,58,32,90,84,65,65,32,82,69,80,76,65,67,69,83,32,90,83,65,65,32,83,76,79,84,32,73,77,65,71,69,13,80,82,73,78,84,32,34,82,51,34,59,90,67,80,89,82,83,84,40,41,13,65,61,90,83,65,65,40,41,13,66,61,90,84,65,65,40,41,13,67,61,90,83,65,65,40,41,13,80,82,73,78,84,32,34,83,51,34,59,65,59,34,47,34,59,66,59,34,47,34,59,67,13,80,82,73,78,84,32,34,67,51,34,59,90,67,79,80,89,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_rbm_sample3_copy_different_submodule + type: screen.capture + params: + label: after_rbm_sample3_copy_different_submodule + - id: assert_copy_different_submodule_reload + type: assert.screen + params: + contains: "C3 4" + - id: assert_state_different_submodule_reloaded + type: assert.screen + params: + contains: "S3 4 / 54 / 4" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_module_overlay_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_module_overlay_probe.regular.yaml new file mode 100644 index 0000000..50e4f05 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_module_overlay_probe.regular.yaml @@ -0,0 +1,183 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_module_overlay_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_module_overlay_prompt + - id: builtin_overlay_bank_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,70,82,69,69,77,69,77,40,41,13,80,82,73,78,84,32,34,83,76,79,84,83,34,59,90,83,76,79,84,48,40,41,59,34,47,34,59,90,83,76,79,84,49,40,41,59,34,47,34,59,90,83,76,79,84,50,40,41,13,80,82,73,78,84,32,34,83,80,65,78,34,59,90,83,80,65,78,40,41,13,80,82,73,78,84,32,34,79,86,76,34,59,90,79,86,76,49,40,41,59,34,47,34,59,90,79,86,76,50,40,41,13,80,82,73,78,84,32,34,67,80,89,34,59,90,67,80,89,82,83,84,40,41,59,34,47,34,59,90,67,79,80,89,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_builtin_overlay_bank_probe + type: screen.capture + params: + label: after_builtin_overlay_bank_probe + - id: assert_builtin_slots + type: assert.screen + params: + contains: "SLOTS 30 / 31 / 32" + - id: assert_builtin_span + type: assert.screen + params: + contains: "SPAN 40" + - id: assert_builtin_overlays + type: assert.screen + params: + contains: "OVL 51 / 52" + - id: rbm_sample1_2_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,80,82,73,78,84,32,34,76,68,49,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,49,34,41,13,80,82,73,78,84,32,34,68,77,49,34,59,90,68,77,49,40,41,13,80,82,73,78,84,32,34,76,68,50,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,50,34,41,13,80,82,73,78,84,32,34,68,77,50,34,59,90,68,77,50,83,40,41,13,80,82,73,78,84,32,34,68,79,86,34,59,90,68,79,86,49,40,41,59,34,47,34,59,90,68,79,86,50,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: assert_ld1 + type: assert.screen + params: + contains: "LD1 1" + - id: assert_dm1 + type: assert.screen + params: + contains: "DM1 61" + - id: assert_ld2 + type: assert.screen + params: + contains: "LD2 3" + - id: assert_dm2 + type: assert.screen + params: + contains: "DM2 74" + - id: assert_dov + type: assert.screen + params: + contains: "DOV 72 / 73" + - id: rbm_sample3_load + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,80,82,73,78,84,32,34,76,68,51,34,59,90,77,79,68,76,68,40,34,82,66,77,46,83,65,77,80,76,69,51,34,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_rbm_sample3_load + type: screen.capture + params: + label: after_rbm_sample3_load + - id: assert_ld3 + type: assert.screen + params: + contains: "LD3 30" + - id: rbm_sample3_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,82,66,77,51,32,70,73,82,83,84,32,67,65,76,76,83,58,32,69,65,67,72,32,79,86,69,82,76,65,89,32,83,84,65,84,69,32,83,84,65,82,84,83,32,65,84,32,90,69,82,79,32,65,70,84,69,82,32,76,79,65,68,13,80,82,73,78,84,32,34,77,51,65,34,59,90,83,65,65,40,41,59,34,47,34,59,90,83,69,66,40,41,13,80,82,73,78,84,32,34,77,51,66,34,59,90,84,65,65,40,41,59,34,47,34,59,90,84,69,66,40,41,13,80,82,73,78,84,32,34,77,51,67,34,59,90,85,65,65,40,41,59,34,47,34,59,90,85,69,66,40,41,13,70,82,69,69,77,69,77,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: capture_rbm_sample3 + type: screen.capture + params: + label: after_rbm_sample3 + - id: assert_m3a + type: assert.screen + params: + contains: "M3A 4 / 13" + - id: assert_m3b + type: assert.screen + params: + contains: "M3B 54 / 63" + - id: assert_m3c + type: assert.screen + params: + contains: "M3C 104 / 113" + - id: assert_free_same + type: assert.screen + params: + contains: "31113" + - id: rbm_sample3_copy_same_overlay_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,83,65,77,69,32,79,86,69,82,76,65,89,58,32,90,83,65,65,32,76,79,65,68,83,44,32,90,83,65,66,32,82,69,85,83,69,83,32,82,69,83,73,68,69,78,84,32,73,77,65,71,69,13,80,82,73,78,84,32,34,82,49,34,59,90,67,80,89,82,83,84,40,41,13,65,61,90,83,65,65,40,41,13,66,61,90,83,65,66,40,41,13,80,82,73,78,84,32,34,83,49,34,59,65,59,34,47,34,59,66,13,80,82,73,78,84,32,34,67,49,34,59,90,67,79,80,89,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_rbm_sample3_copy_same_overlay + type: screen.capture + params: + label: after_rbm_sample3_copy_same_overlay + - id: assert_copy_same_overlay_no_reload + type: assert.screen + params: + contains: "C1 2" + - id: assert_state_same_overlay_kept + type: assert.screen + params: + contains: "S1 4 / 6" + - id: rbm_sample3_copy_different_overlay_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,73,70,70,69,82,69,78,84,32,79,86,69,82,76,65,89,58,32,90,83,66,65,32,82,69,80,76,65,67,69,83,32,90,83,65,65,32,83,76,79,84,32,73,77,65,71,69,13,80,82,73,78,84,32,34,82,50,34,59,90,67,80,89,82,83,84,40,41,13,65,61,90,83,65,65,40,41,13,66,61,90,83,66,65,40,41,13,67,61,90,83,65,65,40,41,13,80,82,73,78,84,32,34,83,50,34,59,65,59,34,47,34,59,66,59,34,47,34,59,67,13,80,82,73,78,84,32,34,67,50,34,59,90,67,79,80,89,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_rbm_sample3_copy_different_overlay + type: screen.capture + params: + label: after_rbm_sample3_copy_different_overlay + - id: assert_copy_different_overlay_reload + type: assert.screen + params: + contains: "C2 4" + - id: assert_state_different_overlay_reloaded + type: assert.screen + params: + contains: "S2 4 / 6 / 4" + - id: rbm_sample3_copy_different_submodule_probe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,73,70,70,69,82,69,78,84,32,83,85,66,77,79,68,85,76,69,58,32,90,84,65,65,32,82,69,80,76,65,67,69,83,32,90,83,65,65,32,83,76,79,84,32,73,77,65,71,69,13,80,82,73,78,84,32,34,82,51,34,59,90,67,80,89,82,83,84,40,41,13,65,61,90,83,65,65,40,41,13,66,61,90,84,65,65,40,41,13,67,61,90,83,65,65,40,41,13,80,82,73,78,84,32,34,83,51,34,59,65,59,34,47,34,59,66,59,34,47,34,59,67,13,80,82,73,78,84,32,34,67,51,34,59,90,67,79,80,89,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_rbm_sample3_copy_different_submodule + type: screen.capture + params: + label: after_rbm_sample3_copy_different_submodule + - id: assert_copy_different_submodule_reload + type: assert.screen + params: + contains: "C3 4" + - id: assert_state_different_submodule_reloaded + type: assert.screen + params: + contains: "S3 4 / 54 / 4" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_plugin_command_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_plugin_command_probe.easyflash.yaml new file mode 100644 index 0000000..310b827 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_plugin_command_probe.easyflash.yaml @@ -0,0 +1,671 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_plugin_command_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_plugin_prompt + - id: dump_initial_plugin_state + type: dump.memory_ranges + params: + ranges: &plugin_ranges + - { label: entry_1000, start: 0x1000, end: 0x1120 } + - { label: resident_1200, start: 0x1200, end: 0x1BFF } + - { label: low_overlay_1c00, start: 0x1C00, end: 0x23FF } + - { label: shared_frames_2400, start: 0x2400, end: 0x27FF } + - { label: hidden_shadow_9a00, start: 0x9A00, end: 0x9FFF } + - { label: hidden_visible_a000, start: 0xA000, end: 0xA5FF } + - { label: hidden_overlay_a800, start: 0xA800, end: 0xA8FF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - { label: reu_alloc_table_c600, start: 0xC600, end: 0xC6FF } + + - id: probe_01_ping + type: input.sequence + params: + keys: [90,69,67,72,79,49,40,80,37,41,13,80,82,73,78,84,32,34,90,69,67,72,79,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_01_ping + type: screen.capture + params: + label: after_zecho1 + - id: assert_01_ping + type: assert.screen + params: + contains: "ZECHO 1" + - id: dump_01_ping + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: probe_02_add16 + type: input.sequence + params: + keys: [65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13,80,82,73,78,84,32,34,65,68,68,34,59,65,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_02_add16 + type: assert.screen + params: + contains: "ADD 15" + + - id: probe_02a_if_then_direct + type: input.sequence + params: + keys: [80,37,61,48,13,73,70,32,49,32,84,72,69,78,32,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,80,82,73,78,84,32,34,73,70,68,73,82,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_02a_if_then_direct + type: screen.capture + params: + label: after_if_then_direct + - id: assert_02a_if_then_direct + type: assert.screen + params: + contains: "IFDIR 1" + + - id: probe_03_strup_variable + type: input.sequence + params: + keys: [83,36,61,34,97,98,99,34,13,84,36,61,85,80,80,69,82,40,83,36,41,13,80,82,73,78,84,32,34,83,84,82,34,59,84,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_03_strup_variable + type: assert.screen + params: + contains: "STRABC" + + - id: probe_04_strup_literal + type: input.sequence + params: + keys: [85,36,61,85,80,80,69,82,40,34,100,101,102,34,41,13,80,82,73,78,84,32,34,76,73,84,34,59,85,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_04_strup_literal + type: assert.screen + params: + contains: "LITDEF" + + - id: probe_04a_lower_variable + type: input.sequence + params: + keys: [83,36,61,34,65,66,67,34,13,76,36,61,76,79,87,69,82,40,83,36,41,13,80,82,73,78,84,32,34,76,79,87,65,83,67,34,59,65,83,67,40,76,36,41,59,65,83,67,40,77,73,68,36,40,76,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,51,44,49,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_04a_lower_variable + type: assert.screen + params: + contains: "LOWASC 97 98 99" + + - id: probe_04b_lower_literal + type: input.sequence + params: + keys: [76,36,61,76,79,87,69,82,40,34,71,72,73,34,41,13,80,82,73,78,84,32,34,76,73,84,76,79,87,65,83,67,34,59,65,83,67,40,76,36,41,59,65,83,67,40,77,73,68,36,40,76,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,51,44,49,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_04b_lower_literal + type: assert.screen + params: + contains: "LITLOWASC 103 104 105" + + - id: probe_05_hcrc_hidden + type: input.sequence + params: + keys: [72,37,61,90,72,73,68,68,69,78,82,65,77,40,34,65,66,34,41,13,80,82,73,78,84,32,34,90,72,73,68,68,69,78,82,65,77,34,59,72,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_05_hcrc_hidden + type: assert.screen + params: + contains: "ZHIDDENRAM 131" + - id: dump_05_hidden_worker + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: probe_06_sumai + type: input.sequence + params: + keys: [68,73,77,32,65,37,40,51,41,13,65,37,40,48,41,61,49,58,65,37,40,49,41,61,50,58,65,37,40,50,41,61,51,13,83,37,61,90,83,85,77,78,85,77,65,82,82,65,89,40,65,37,40,48,41,44,51,41,13,80,82,73,78,84,32,34,83,85,77,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_06_sumai + type: assert.screen + params: + contains: "SUM 6" + + - id: probe_07_rangeai + type: input.sequence + params: + keys: [68,73,77,32,82,37,40,52,41,13,90,82,65,78,71,69,78,85,77,65,82,82,65,89,40,55,44,52,44,82,37,40,48,41,41,13,80,82,73,78,84,32,34,82,65,78,71,69,34,59,82,37,40,48,41,59,82,37,40,51,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_07_rangeai + type: assert.screen + params: + contains: "RANGE 7 10" + + - id: probe_08_bufnew + type: input.sequence + params: + keys: [72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,80,82,73,78,84,32,34,66,85,70,78,69,87,34,59,72,37,59,34,58,69,78,68,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_08_bufnew + type: assert.screen + params: + contains: "BUFNEW 1 :END" + - id: dump_08_bufnew + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: probe_09_buffill + type: input.sequence + params: + keys: [66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,80,82,73,78,84,32,34,70,73,76,76,32,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_09_buffill + type: assert.screen + params: + contains: "FILL OK" + - id: assert_09_buffill_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10_buffree + type: input.sequence + params: + keys: [66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,32,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10_buffree + type: assert.screen + params: + contains: "FREE OK" + - id: assert_10_buffree_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10a_scrcap_scrput_slot128 + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,83,67,82,77,65,82,75,34,13,83,37,61,83,67,82,67,65,80,40,41,13,80,82,73,78,84,32,34,67,72,65,78,71,69,68,34,13,83,67,82,80,85,84,40,83,37,41,13,80,82,73,78,84,32,34,83,67,82,80,85,84,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_10a_scrcap_restored_text + type: assert.screen + params: + contains: "SCRMARK" + - id: assert_10a_scrput_slot128 + type: assert.screen + params: + contains: "SCRPUT 1" + - id: probe_10b_buffill_rejects_screen_handle + type: input.sequence + params: + keys: [66,85,70,70,73,76,76,40,83,37,44,49,55,48,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10b_buffill_rejects_screen_handle + type: assert.screen + params: + contains: "?RB ERROR 40" + - id: probe_10c_buffree_screen_handle + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,83,37,41,13,80,82,73,78,84,32,34,83,67,82,70,82,69,69,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10c_buffree_screen_handle + type: assert.screen + params: + contains: "SCRFREE 1" + - id: assert_10c_buffree_screen_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + - id: probe_10d_scrput_rejects_buffer_handle + type: input.sequence + params: + keys: [66,37,61,66,85,70,78,69,87,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10d_scrput_rejects_buffer_handle + type: assert.screen + params: + contains: "?RB ERROR 40" + - id: probe_10e_free_buffer_after_type_error + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,66,37,41,13,80,82,73,78,84,32,34,66,85,70,82,69,69,34,59,66,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10e_free_buffer_after_type_error + type: assert.screen + params: + contains: "BUFREE 1" + - id: assert_10e_free_buffer_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10f_allocate_128_handles + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,78,69,87,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,77,65,88,34,59,72,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 4.0 + - id: assert_10f_allocate_128_handles + type: assert.screen + params: + contains: "HMAX 128" + - id: assert_10f_allocate_128_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10g_handle_129_rejected + type: input.sequence + params: + keys: [69,37,61,66,85,70,78,69,87,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10g_handle_129_rejected + type: assert.screen + params: + contains: "?RB ERROR 33" + + - id: probe_10h_free_128_handles + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,70,82,69,69,68,34,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 4.0 + - id: assert_10h_free_128_handles + type: assert.screen + params: + contains: "HFREED" + - id: assert_10h_free_128_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10i_reuse_low_handle + type: input.sequence + params: + keys: [82,37,61,66,85,70,78,69,87,40,49,41,13,80,82,73,78,84,32,34,72,82,69,85,83,69,34,59,82,37,13,66,85,70,70,82,69,69,40,82,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10i_reuse_low_handle + type: assert.screen + params: + contains: "HREUSE 1" + - id: assert_10i_reuse_low_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10j_allocate_48k_heap + type: input.sequence + params: + keys: [77,37,61,66,85,70,78,69,87,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,72,77,65,88,66,85,70,34,59,77,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_10j_allocate_48k_heap + type: assert.screen + params: + contains: "HMAXBUF 1" + - id: assert_10j_allocate_48k_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10k_heap_full_rejected + type: input.sequence + params: + keys: [69,37,61,66,85,70,78,69,87,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10k_heap_full_rejected + type: assert.screen + params: + contains: "?RB ERROR 34" + + - id: probe_10l_free_48k_heap + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,77,37,41,13,80,82,73,78,84,32,34,72,77,65,88,70,82,69,69,34,59,77,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10l_free_48k_heap + type: assert.screen + params: + contains: "HMAXFREE 1" + - id: assert_10l_free_48k_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10m_screen_handles_fill_heap + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,83,37,61,83,67,82,67,65,80,40,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,83,77,65,88,34,59,83,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 4.0 + - id: assert_10m_screen_handles_fill_heap + type: assert.screen + params: + contains: "SMAX 24" + - id: assert_10m_screen_handles_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10n_screen_heap_full_rejected + type: input.sequence + params: + keys: [83,37,61,83,67,82,67,65,80,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10n_screen_heap_full_rejected + type: assert.screen + params: + contains: "?RB ERROR 34" + + - id: probe_10o_free_screen_handles + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,83,70,82,69,69,68,34,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 4.0 + - id: assert_10o_free_screen_handles + type: assert.screen + params: + contains: "SFREED" + - id: assert_10o_free_screen_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_11_tempscratch + type: input.sequence + params: + keys: [84,37,61,90,84,69,77,80,83,67,82,65,84,67,72,40,53,49,51,41,13,80,82,73,78,84,32,34,84,69,77,80,34,59,84,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_11_tempscratch + type: assert.screen + params: + contains: "TEMP 3" + + - id: probe_12_fail_clears_output + type: input.sequence + params: + keys: [88,37,61,57,57,13,90,70,65,73,76,40,55,44,88,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_12_fail_error + type: assert.screen + params: + contains: "?RB ERROR 7" + - id: probe_12_print_cleared_output + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,70,65,73,76,67,76,82,34,59,88,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_12_fail_cleared_output + type: assert.screen + params: + contains: "FAILCLR 0" + + - id: probe_13_unknown_command + type: input.sequence + params: + keys: [78,79,80,69,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_unknown_command + type: assert.screen + params: + contains: "SYNTAX" + + - id: probe_13_old_ping_rejected + type: input.sequence + params: + keys: [83,67,65,76,65,82,40,80,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_ping_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13_old_add16_rejected + type: input.sequence + params: + keys: [65,68,68,49,54,40,49,44,50,44,65,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_add16_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13_old_strup_rejected + type: input.sequence + params: + keys: [83,84,82,85,80,40,34,97,98,99,34,44,84,36,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_strup_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13_old_hcrc_rejected + type: input.sequence + params: + keys: [72,67,82,67,40,34,65,66,34,44,72,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_hcrc_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13_old_sumai_rejected + type: input.sequence + params: + keys: [83,85,77,65,73,40,65,37,40,48,41,44,49,44,83,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_sumai_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13_old_rangeai_rejected + type: input.sequence + params: + keys: [82,65,78,71,69,65,73,40,49,44,49,44,65,37,40,48,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_rangeai_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13a_command_name_in_string + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,78,79,80,69,40,41,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13a_command_name_in_string + type: assert.screen + params: + contains: "NOPE()" + - id: assert_13a_no_rb_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_13b_command_name_in_rem + type: input.sequence + params: + keys: [82,69,77,32,78,79,80,69,40,41,13,80,82,73,78,84,32,34,82,69,77,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13b_command_name_in_rem + type: assert.screen + params: + contains: "REMOK" + - id: assert_13b_no_rb_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_13c_first_comma_rejected + type: input.sequence + params: + keys: [90,65,68,68,49,54,40,44,49,44,50,44,65,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13c_first_comma_rejected + type: assert.screen + params: + contains: "SYNTAX" + + - id: probe_13d_missing_out_marker_rejected + type: input.sequence + params: + keys: [90,65,68,68,49,54,32,49,44,50,44,65,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13d_missing_out_marker_rejected + type: assert.screen + params: + contains: "SYNTAX" + + - id: probe_14_seed_resume_vars + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,79,75,34,13,80,82,73,78,84,32,34,83,69,69,68,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_14_seed_resume_vars + type: assert.screen + params: + contains: "SEEDED 321 :OK" + + - id: probe_15_exit_to_launcher + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_after_exit + type: input.sequence + params: + keys: [145,17,13] + inter_key_delay_s: 0.10 + post_delay_s: 3.0 + - id: wait_readybasic_after_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + capture_label: readybasic_after_plugin_resume + - id: probe_16_registry_after_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,80,82,73,78,84,32,34,82,69,83,85,77,69,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_16_registry_after_resume + type: screen.capture + params: + label: after_registry_resume + - id: dump_16_vectors_after_resume + type: dump.memory_ranges + params: + ranges: + - { label: page3_vectors, start: 0x0304, end: 0x030B } + - { label: desc_buf, start: 0xC480, end: 0xC49F } + - { label: bridge_tail, start: 0xC1D0, end: 0xC20F } + - { label: low_slot_head, start: 0xA800, end: 0xA83F } + - id: assert_16_basic_state_after_resume + type: assert.screen + params: + contains: "STATE 321 :OK" + - id: assert_16_registry_after_resume + type: assert.screen + params: + contains: "RESUME 1" + - id: dump_final_plugin_state + type: dump.memory_ranges + params: + ranges: *plugin_ranges + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_plugin_command_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_plugin_command_probe.regular.yaml new file mode 100644 index 0000000..cff2ddd --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_plugin_command_probe.regular.yaml @@ -0,0 +1,656 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_plugin_command_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_plugin_prompt + - id: dump_initial_plugin_state + type: dump.memory_ranges + params: + ranges: &plugin_ranges + - { label: entry_1000, start: 0x1000, end: 0x1120 } + - { label: resident_1200, start: 0x1200, end: 0x1BFF } + - { label: low_overlay_1c00, start: 0x1C00, end: 0x23FF } + - { label: shared_frames_2400, start: 0x2400, end: 0x27FF } + - { label: hidden_shadow_9a00, start: 0x9A00, end: 0x9FFF } + - { label: hidden_visible_a000, start: 0xA000, end: 0xA5FF } + - { label: hidden_overlay_a800, start: 0xA800, end: 0xA8FF } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - { label: reu_alloc_table_c600, start: 0xC600, end: 0xC6FF } + + - id: probe_01_ping + type: input.sequence + params: + keys: [90,69,67,72,79,49,40,80,37,41,13,80,82,73,78,84,32,34,90,69,67,72,79,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_01_ping + type: screen.capture + params: + label: after_zecho1 + - id: assert_01_ping + type: assert.screen + params: + contains: "ZECHO 1" + - id: dump_01_ping + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: probe_02_add16 + type: input.sequence + params: + keys: [65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13,80,82,73,78,84,32,34,65,68,68,34,59,65,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_02_add16 + type: assert.screen + params: + contains: "ADD 15" + + - id: probe_02a_if_then_direct + type: input.sequence + params: + keys: [80,37,61,48,13,73,70,32,49,32,84,72,69,78,32,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,80,82,73,78,84,32,34,73,70,68,73,82,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_02a_if_then_direct + type: screen.capture + params: + label: after_if_then_direct + - id: assert_02a_if_then_direct + type: assert.screen + params: + contains: "IFDIR 1" + + - id: probe_03_strup_variable + type: input.sequence + params: + keys: [83,36,61,34,97,98,99,34,13,84,36,61,85,80,80,69,82,40,83,36,41,13,80,82,73,78,84,32,34,83,84,82,34,59,84,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_03_strup_variable + type: assert.screen + params: + contains: "STRABC" + + - id: probe_04_strup_literal + type: input.sequence + params: + keys: [85,36,61,85,80,80,69,82,40,34,100,101,102,34,41,13,80,82,73,78,84,32,34,76,73,84,34,59,85,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_04_strup_literal + type: assert.screen + params: + contains: "LITDEF" + + - id: probe_04a_lower_variable + type: input.sequence + params: + keys: [83,36,61,34,65,66,67,34,13,76,36,61,76,79,87,69,82,40,83,36,41,13,80,82,73,78,84,32,34,76,79,87,65,83,67,34,59,65,83,67,40,76,36,41,59,65,83,67,40,77,73,68,36,40,76,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,51,44,49,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_04a_lower_variable + type: assert.screen + params: + contains: "LOWASC 97 98 99" + + - id: probe_04b_lower_literal + type: input.sequence + params: + keys: [76,36,61,76,79,87,69,82,40,34,71,72,73,34,41,13,80,82,73,78,84,32,34,76,73,84,76,79,87,65,83,67,34,59,65,83,67,40,76,36,41,59,65,83,67,40,77,73,68,36,40,76,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,76,36,44,51,44,49,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_04b_lower_literal + type: assert.screen + params: + contains: "LITLOWASC 103 104 105" + + - id: probe_05_hcrc_hidden + type: input.sequence + params: + keys: [72,37,61,90,72,73,68,68,69,78,82,65,77,40,34,65,66,34,41,13,80,82,73,78,84,32,34,90,72,73,68,68,69,78,82,65,77,34,59,72,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_05_hcrc_hidden + type: assert.screen + params: + contains: "ZHIDDENRAM 131" + - id: dump_05_hidden_worker + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: probe_06_sumai + type: input.sequence + params: + keys: [68,73,77,32,65,37,40,51,41,13,65,37,40,48,41,61,49,58,65,37,40,49,41,61,50,58,65,37,40,50,41,61,51,13,83,37,61,90,83,85,77,78,85,77,65,82,82,65,89,40,65,37,40,48,41,44,51,41,13,80,82,73,78,84,32,34,83,85,77,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_06_sumai + type: assert.screen + params: + contains: "SUM 6" + + - id: probe_07_rangeai + type: input.sequence + params: + keys: [68,73,77,32,82,37,40,52,41,13,90,82,65,78,71,69,78,85,77,65,82,82,65,89,40,55,44,52,44,82,37,40,48,41,41,13,80,82,73,78,84,32,34,82,65,78,71,69,34,59,82,37,40,48,41,59,82,37,40,51,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_07_rangeai + type: assert.screen + params: + contains: "RANGE 7 10" + + - id: probe_08_bufnew + type: input.sequence + params: + keys: [72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,80,82,73,78,84,32,34,66,85,70,78,69,87,34,59,72,37,59,34,58,69,78,68,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_08_bufnew + type: assert.screen + params: + contains: "BUFNEW 1 :END" + - id: dump_08_bufnew + type: dump.memory_ranges + params: + ranges: *plugin_ranges + + - id: probe_09_buffill + type: input.sequence + params: + keys: [66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,80,82,73,78,84,32,34,70,73,76,76,32,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_09_buffill + type: assert.screen + params: + contains: "FILL OK" + - id: assert_09_buffill_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10_buffree + type: input.sequence + params: + keys: [66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,32,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10_buffree + type: assert.screen + params: + contains: "FREE OK" + - id: assert_10_buffree_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10a_scrcap_scrput_slot128 + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,83,67,82,77,65,82,75,34,13,83,37,61,83,67,82,67,65,80,40,41,13,80,82,73,78,84,32,34,67,72,65,78,71,69,68,34,13,83,67,82,80,85,84,40,83,37,41,13,80,82,73,78,84,32,34,83,67,82,80,85,84,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_10a_scrcap_restored_text + type: assert.screen + params: + contains: "SCRMARK" + - id: assert_10a_scrput_slot128 + type: assert.screen + params: + contains: "SCRPUT 1" + - id: probe_10b_buffill_rejects_screen_handle + type: input.sequence + params: + keys: [66,85,70,70,73,76,76,40,83,37,44,49,55,48,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10b_buffill_rejects_screen_handle + type: assert.screen + params: + contains: "?RB ERROR 40" + - id: probe_10c_buffree_screen_handle + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,83,37,41,13,80,82,73,78,84,32,34,83,67,82,70,82,69,69,34,59,83,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10c_buffree_screen_handle + type: assert.screen + params: + contains: "SCRFREE 1" + - id: assert_10c_buffree_screen_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + - id: probe_10d_scrput_rejects_buffer_handle + type: input.sequence + params: + keys: [66,37,61,66,85,70,78,69,87,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10d_scrput_rejects_buffer_handle + type: assert.screen + params: + contains: "?RB ERROR 40" + - id: probe_10e_free_buffer_after_type_error + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,66,37,41,13,80,82,73,78,84,32,34,66,85,70,82,69,69,34,59,66,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10e_free_buffer_after_type_error + type: assert.screen + params: + contains: "BUFREE 1" + - id: assert_10e_free_buffer_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10f_allocate_128_handles + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,78,69,87,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,77,65,88,34,59,72,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 4.0 + - id: assert_10f_allocate_128_handles + type: assert.screen + params: + contains: "HMAX 128" + - id: assert_10f_allocate_128_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10g_handle_129_rejected + type: input.sequence + params: + keys: [69,37,61,66,85,70,78,69,87,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10g_handle_129_rejected + type: assert.screen + params: + contains: "?RB ERROR 33" + + - id: probe_10h_free_128_handles + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,70,82,69,69,68,34,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 4.0 + - id: assert_10h_free_128_handles + type: assert.screen + params: + contains: "HFREED" + - id: assert_10h_free_128_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10i_reuse_low_handle + type: input.sequence + params: + keys: [82,37,61,66,85,70,78,69,87,40,49,41,13,80,82,73,78,84,32,34,72,82,69,85,83,69,34,59,82,37,13,66,85,70,70,82,69,69,40,82,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10i_reuse_low_handle + type: assert.screen + params: + contains: "HREUSE 1" + - id: assert_10i_reuse_low_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10j_allocate_48k_heap + type: input.sequence + params: + keys: [77,37,61,66,85,70,78,69,87,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,72,77,65,88,66,85,70,34,59,77,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_10j_allocate_48k_heap + type: assert.screen + params: + contains: "HMAXBUF 1" + - id: assert_10j_allocate_48k_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10k_heap_full_rejected + type: input.sequence + params: + keys: [69,37,61,66,85,70,78,69,87,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10k_heap_full_rejected + type: assert.screen + params: + contains: "?RB ERROR 34" + + - id: probe_10l_free_48k_heap + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,77,37,41,13,80,82,73,78,84,32,34,72,77,65,88,70,82,69,69,34,59,77,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10l_free_48k_heap + type: assert.screen + params: + contains: "HMAXFREE 1" + - id: assert_10l_free_48k_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10m_screen_handles_fill_heap + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,83,37,61,83,67,82,67,65,80,40,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,83,77,65,88,34,59,83,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 4.0 + - id: assert_10m_screen_handles_fill_heap + type: assert.screen + params: + contains: "SMAX 24" + - id: assert_10m_screen_handles_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_10n_screen_heap_full_rejected + type: input.sequence + params: + keys: [83,37,61,83,67,82,67,65,80,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_10n_screen_heap_full_rejected + type: assert.screen + params: + contains: "?RB ERROR 34" + + - id: probe_10o_free_screen_handles + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,83,70,82,69,69,68,34,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 4.0 + - id: assert_10o_free_screen_handles + type: assert.screen + params: + contains: "SFREED" + - id: assert_10o_free_screen_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_11_tempscratch + type: input.sequence + params: + keys: [84,37,61,90,84,69,77,80,83,67,82,65,84,67,72,40,53,49,51,41,13,80,82,73,78,84,32,34,84,69,77,80,34,59,84,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_11_tempscratch + type: assert.screen + params: + contains: "TEMP 3" + + - id: probe_12_fail_clears_output + type: input.sequence + params: + keys: [88,37,61,57,57,13,90,70,65,73,76,40,55,44,88,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_12_fail_error + type: assert.screen + params: + contains: "?RB ERROR 7" + - id: probe_12_print_cleared_output + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,70,65,73,76,67,76,82,34,59,88,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_12_fail_cleared_output + type: assert.screen + params: + contains: "FAILCLR 0" + + - id: probe_13_unknown_command + type: input.sequence + params: + keys: [78,79,80,69,40,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_unknown_command + type: assert.screen + params: + contains: "SYNTAX" + + - id: probe_13_old_ping_rejected + type: input.sequence + params: + keys: [83,67,65,76,65,82,40,80,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_ping_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13_old_add16_rejected + type: input.sequence + params: + keys: [65,68,68,49,54,40,49,44,50,44,65,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_add16_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13_old_strup_rejected + type: input.sequence + params: + keys: [83,84,82,85,80,40,34,97,98,99,34,44,84,36,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_strup_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13_old_hcrc_rejected + type: input.sequence + params: + keys: [72,67,82,67,40,34,65,66,34,44,72,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_hcrc_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13_old_sumai_rejected + type: input.sequence + params: + keys: [83,85,77,65,73,40,65,37,40,48,41,44,49,44,83,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_sumai_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13_old_rangeai_rejected + type: input.sequence + params: + keys: [82,65,78,71,69,65,73,40,49,44,49,44,65,37,40,48,41,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13_old_rangeai_rejected + type: assert.screen + params: + contains: "ERROR" + + - id: probe_13a_command_name_in_string + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,78,79,80,69,40,41,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13a_command_name_in_string + type: assert.screen + params: + contains: "NOPE()" + - id: assert_13a_no_rb_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_13b_command_name_in_rem + type: input.sequence + params: + keys: [82,69,77,32,78,79,80,69,40,41,13,80,82,73,78,84,32,34,82,69,77,79,75,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13b_command_name_in_rem + type: assert.screen + params: + contains: "REMOK" + - id: assert_13b_no_rb_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: probe_13c_first_comma_rejected + type: input.sequence + params: + keys: [90,65,68,68,49,54,40,44,49,44,50,44,65,37,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13c_first_comma_rejected + type: assert.screen + params: + contains: "SYNTAX" + + - id: probe_13d_missing_out_marker_rejected + type: input.sequence + params: + keys: [90,65,68,68,49,54,32,49,44,50,44,65,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_13d_missing_out_marker_rejected + type: assert.screen + params: + contains: "SYNTAX" + + - id: probe_14_seed_resume_vars + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,79,75,34,13,80,82,73,78,84,32,34,83,69,69,68,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_14_seed_resume_vars + type: assert.screen + params: + contains: "SEEDED 321 :OK" + + - id: probe_15_exit_to_launcher + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_after_exit + type: input.sequence + params: + keys: [145,17,13] + inter_key_delay_s: 0.10 + post_delay_s: 3.0 + - id: wait_readybasic_after_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + capture_label: readybasic_after_plugin_resume + - id: probe_16_registry_after_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,80,82,73,78,84,32,34,82,69,83,85,77,69,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_16_registry_after_resume + type: screen.capture + params: + label: after_registry_resume + - id: dump_16_vectors_after_resume + type: dump.memory_ranges + params: + ranges: + - { label: page3_vectors, start: 0x0304, end: 0x030B } + - { label: desc_buf, start: 0xC480, end: 0xC49F } + - { label: bridge_tail, start: 0xC1D0, end: 0xC20F } + - { label: low_slot_head, start: 0xA800, end: 0xA83F } + - id: assert_16_basic_state_after_resume + type: assert.screen + params: + contains: "STATE 321 :OK" + - id: assert_16_registry_after_resume + type: assert.screen + params: + contains: "RESUME 1" + - id: dump_final_plugin_state + type: dump.memory_ranges + params: + ranges: *plugin_ranges + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_program_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_program_probe.easyflash.yaml new file mode 100644 index 0000000..5d7e6d0 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_program_probe.easyflash.yaml @@ -0,0 +1,236 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_program_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 1 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 45 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_program_prompt + + - id: program_ping_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,90,69,67,72,79,49,40,80,37,41,13,50,48,32,80,82,73,78,84,32,34,80,82,83,67,65,76,65,82,34,59,80,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_ping_lists + type: assert.screen + params: + contains: "10 ZECHO1" + - id: program_ping_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_ping_run + type: assert.screen + params: + contains: "PRSCALAR 1" + + - id: program_chain_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,65,37,61,90,65,68,68,49,54,40,49,44,50,41,58,80,82,73,78,84,32,34,80,82,67,72,65,73,78,34,59,65,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_chain_run + type: assert.screen + params: + contains: "PRCHAIN 3" + + - id: program_if_true_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,80,37,61,48,13,50,48,32,73,70,32,49,32,84,72,69,78,32,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,51,48,32,80,82,73,78,84,32,34,80,82,73,70,84,82,85,69,34,59,80,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_if_true_run + type: assert.screen + params: + contains: "PRIFTRUE 1" + + - id: program_if_false_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,80,37,61,48,13,50,48,32,73,70,32,48,32,84,72,69,78,32,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,51,48,32,80,82,73,78,84,32,34,80,82,73,70,70,65,76,83,69,34,59,80,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_if_false_run + type: assert.screen + params: + contains: "PRIFFALSE 0" + + - id: program_text_then_command_name_safe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,80,82,73,78,84,32,34,84,72,69,78,32,78,79,80,69,40,41,34,13,50,48,32,82,69,77,32,84,72,69,78,32,78,79,80,69,40,41,13,51,48,32,68,65,84,65,32,84,72,69,78,32,78,79,80,69,40,41,13,52,48,32,82,69,65,68,32,65,36,13,53,48,32,80,82,73,78,84,32,34,80,82,83,65,70,69,34,59,65,36,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_program_text_then_command_name_safe + type: assert.screen + params: + contains: "PRSAFETHEN NOPE()" + - id: assert_program_text_then_command_name_no_colon + type: assert.screen_not_contains + params: + not_contains: "PRSAFETHEN :NOPE()" + - id: assert_program_text_then_command_name_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: program_for_next_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,51,13,50,48,32,65,37,61,90,65,68,68,49,54,40,73,44,49,48,41,13,51,48,32,78,69,88,84,13,52,48,32,80,82,73,78,84,32,34,80,82,70,79,82,34,59,65,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_program_for_next_run + type: assert.screen + params: + contains: "PRFOR 13" + + - id: program_strup_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,83,36,61,34,97,98,99,34,13,50,48,32,84,36,61,85,80,80,69,82,40,83,36,41,13,51,48,32,80,82,73,78,84,32,34,80,82,83,84,82,34,59,84,36,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_program_strup_run + type: assert.screen + params: + contains: "PRSTRABC" + + - id: program_lower_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,83,36,61,34,65,66,67,34,13,50,48,32,84,36,61,76,79,87,69,82,40,83,36,41,13,51,48,32,80,82,73,78,84,32,34,80,82,76,79,87,65,83,67,34,59,65,83,67,40,84,36,41,59,65,83,67,40,77,73,68,36,40,84,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,84,36,44,51,44,49,41,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_program_lower_run + type: assert.screen + params: + contains: "PRLOWASC 97 98 99" + + - id: program_hidden_hcrc_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,72,37,61,90,72,73,68,68,69,78,82,65,77,40,34,65,66,34,41,13,50,48,32,80,82,73,78,84,32,34,80,82,72,67,82,67,34,59,72,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_hidden_hcrc_run + type: assert.screen + params: + contains: "PRHCRC 131" + + - id: program_array_sum_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,68,73,77,32,65,37,40,51,41,13,50,48,32,65,37,40,48,41,61,49,58,65,37,40,49,41,61,50,58,65,37,40,50,41,61,51,13,51,48,32,83,37,61,90,83,85,77,78,85,77,65,82,82,65,89,40,65,37,40,48,41,44,51,41,13,52,48,32,80,82,73,78,84,32,34,80,82,83,85,77,34,59,83,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.3 + - id: assert_program_array_sum_run + type: assert.screen + params: + contains: "PRSUM 6" + + - id: program_array_range_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,68,73,77,32,82,37,40,52,41,13,50,48,32,90,82,65,78,71,69,78,85,77,65,82,82,65,89,40,55,44,52,44,82,37,40,48,41,41,13,51,48,32,80,82,73,78,84,32,34,80,82,82,65,78,71,69,34,59,82,37,40,48,41,59,82,37,40,51,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.3 + - id: assert_program_array_range_run + type: assert.screen + params: + contains: "PRRANGE 7 10" + + - id: program_handle_lifecycle_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,50,48,32,80,82,73,78,84,32,34,80,82,66,85,70,34,59,72,37,13,51,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,52,48,32,66,85,70,70,82,69,69,40,72,37,41,13,53,48,32,80,82,73,78,84,32,34,80,82,70,82,69,69,34,59,72,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: assert_program_handle_new + type: assert.screen + params: + contains: "PRBUF 1" + - id: assert_program_handle_free + type: assert.screen + params: + contains: "PRFREE 1" + + - id: program_fail_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,88,37,61,57,57,13,50,48,32,90,70,65,73,76,40,55,44,88,37,41,13,51,48,32,80,82,73,78,84,32,34,80,82,65,70,84,69,82,34,59,88,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_fail_error + type: assert.screen + params: + contains: "?RB ERROR 7" + - id: program_fail_cleared_check + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,80,82,70,65,73,76,67,76,82,34,59,88,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_program_fail_cleared + type: assert.screen + params: + contains: "PRFAILCLR 0" + + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_program_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_program_probe.regular.yaml new file mode 100644 index 0000000..dae6807 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_program_probe.regular.yaml @@ -0,0 +1,221 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_program_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 1 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 45 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_program_prompt + + - id: program_ping_enter_and_list + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,90,69,67,72,79,49,40,80,37,41,13,50,48,32,80,82,73,78,84,32,34,80,82,83,67,65,76,65,82,34,59,80,37,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_ping_lists + type: assert.screen + params: + contains: "10 ZECHO1" + - id: program_ping_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_ping_run + type: assert.screen + params: + contains: "PRSCALAR 1" + + - id: program_chain_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,65,37,61,90,65,68,68,49,54,40,49,44,50,41,58,80,82,73,78,84,32,34,80,82,67,72,65,73,78,34,59,65,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_chain_run + type: assert.screen + params: + contains: "PRCHAIN 3" + + - id: program_if_true_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,80,37,61,48,13,50,48,32,73,70,32,49,32,84,72,69,78,32,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,51,48,32,80,82,73,78,84,32,34,80,82,73,70,84,82,85,69,34,59,80,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_if_true_run + type: assert.screen + params: + contains: "PRIFTRUE 1" + + - id: program_if_false_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,80,37,61,48,13,50,48,32,73,70,32,48,32,84,72,69,78,32,80,37,61,90,65,68,68,49,54,40,48,44,49,41,13,51,48,32,80,82,73,78,84,32,34,80,82,73,70,70,65,76,83,69,34,59,80,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_if_false_run + type: assert.screen + params: + contains: "PRIFFALSE 0" + + - id: program_text_then_command_name_safe + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,80,82,73,78,84,32,34,84,72,69,78,32,78,79,80,69,40,41,34,13,50,48,32,82,69,77,32,84,72,69,78,32,78,79,80,69,40,41,13,51,48,32,68,65,84,65,32,84,72,69,78,32,78,79,80,69,40,41,13,52,48,32,82,69,65,68,32,65,36,13,53,48,32,80,82,73,78,84,32,34,80,82,83,65,70,69,34,59,65,36,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_program_text_then_command_name_safe + type: assert.screen + params: + contains: "PRSAFETHEN NOPE()" + - id: assert_program_text_then_command_name_no_colon + type: assert.screen_not_contains + params: + not_contains: "PRSAFETHEN :NOPE()" + - id: assert_program_text_then_command_name_no_error + type: assert.screen_not_contains + params: + not_contains: "?RB ERROR" + + - id: program_for_next_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,51,13,50,48,32,65,37,61,90,65,68,68,49,54,40,73,44,49,48,41,13,51,48,32,78,69,88,84,13,52,48,32,80,82,73,78,84,32,34,80,82,70,79,82,34,59,65,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_program_for_next_run + type: assert.screen + params: + contains: "PRFOR 13" + + - id: program_strup_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,83,36,61,34,97,98,99,34,13,50,48,32,84,36,61,85,80,80,69,82,40,83,36,41,13,51,48,32,80,82,73,78,84,32,34,80,82,83,84,82,34,59,84,36,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_program_strup_run + type: assert.screen + params: + contains: "PRSTRABC" + + - id: program_lower_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,83,36,61,34,65,66,67,34,13,50,48,32,84,36,61,76,79,87,69,82,40,83,36,41,13,51,48,32,80,82,73,78,84,32,34,80,82,76,79,87,65,83,67,34,59,65,83,67,40,84,36,41,59,65,83,67,40,77,73,68,36,40,84,36,44,50,44,49,41,41,59,65,83,67,40,77,73,68,36,40,84,36,44,51,44,49,41,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_program_lower_run + type: assert.screen + params: + contains: "PRLOWASC 97 98 99" + + - id: program_hidden_hcrc_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,72,37,61,90,72,73,68,68,69,78,82,65,77,40,34,65,66,34,41,13,50,48,32,80,82,73,78,84,32,34,80,82,72,67,82,67,34,59,72,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_hidden_hcrc_run + type: assert.screen + params: + contains: "PRHCRC 131" + + - id: program_array_sum_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,68,73,77,32,65,37,40,51,41,13,50,48,32,65,37,40,48,41,61,49,58,65,37,40,49,41,61,50,58,65,37,40,50,41,61,51,13,51,48,32,83,37,61,90,83,85,77,78,85,77,65,82,82,65,89,40,65,37,40,48,41,44,51,41,13,52,48,32,80,82,73,78,84,32,34,80,82,83,85,77,34,59,83,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.3 + - id: assert_program_array_sum_run + type: assert.screen + params: + contains: "PRSUM 6" + + - id: program_array_range_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,68,73,77,32,82,37,40,52,41,13,50,48,32,90,82,65,78,71,69,78,85,77,65,82,82,65,89,40,55,44,52,44,82,37,40,48,41,41,13,51,48,32,80,82,73,78,84,32,34,80,82,82,65,78,71,69,34,59,82,37,40,48,41,59,82,37,40,51,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.3 + - id: assert_program_array_range_run + type: assert.screen + params: + contains: "PRRANGE 7 10" + + - id: program_handle_lifecycle_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,50,48,32,80,82,73,78,84,32,34,80,82,66,85,70,34,59,72,37,13,51,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,52,48,32,66,85,70,70,82,69,69,40,72,37,41,13,53,48,32,80,82,73,78,84,32,34,80,82,70,82,69,69,34,59,72,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: assert_program_handle_new + type: assert.screen + params: + contains: "PRBUF 1" + - id: assert_program_handle_free + type: assert.screen + params: + contains: "PRFREE 1" + + - id: program_fail_run + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,88,37,61,57,57,13,50,48,32,90,70,65,73,76,40,55,44,88,37,41,13,51,48,32,80,82,73,78,84,32,34,80,82,65,70,84,69,82,34,59,88,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_program_fail_error + type: assert.screen + params: + contains: "?RB ERROR 7" + - id: program_fail_cleared_check + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,80,82,70,65,73,76,67,76,82,34,59,88,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_program_fail_cleared + type: assert.screen + params: + contains: "PRFAILCLR 0" + + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_rbtest1_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_rbtest1_probe.easyflash.yaml new file mode 100644 index 0000000..a1be66e --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_rbtest1_probe.easyflash.yaml @@ -0,0 +1,102 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_rbtest1_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_prompt + - id: load_rbtest1 + type: input.sequence + params: + keys: [76,79,65,68,32,34,82,66,84,69,83,84,49,34,44,56,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_after_load + type: screen.capture + params: + label: after_rbtest1_load + - id: assert_load_no_error + type: assert.screen_not_contains + params: + not_contains: "?" + - id: list_rbtest1 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_after_list + type: screen.capture + params: + label: after_rbtest1_list + - id: assert_list_line_10 + type: assert.screen + params: + contains: "10 ZECHO1" + - id: assert_list_line_30 + type: assert.screen + params: + contains: "40 ZADD16" + - id: run_rbtest1 + type: input.sequence + params: + keys: [82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: capture_after_run + type: screen.capture + params: + label: after_rbtest1_run + - id: assert_run_output + type: assert.screen + params: + contains: "LOOP 13" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_rbtest1_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_rbtest1_probe.regular.yaml new file mode 100644 index 0000000..8ba525a --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_rbtest1_probe.regular.yaml @@ -0,0 +1,87 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_rbtest1_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_prompt + - id: load_rbtest1 + type: input.sequence + params: + keys: [76,79,65,68,32,34,82,66,84,69,83,84,49,34,44,56,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: capture_after_load + type: screen.capture + params: + label: after_rbtest1_load + - id: assert_load_no_error + type: assert.screen_not_contains + params: + not_contains: "?" + - id: list_rbtest1 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_after_list + type: screen.capture + params: + label: after_rbtest1_list + - id: assert_list_line_10 + type: assert.screen + params: + contains: "10 ZECHO1" + - id: assert_list_line_30 + type: assert.screen + params: + contains: "40 ZADD16" + - id: run_rbtest1 + type: input.sequence + params: + keys: [82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: capture_after_run + type: screen.capture + params: + label: after_rbtest1_run + - id: assert_run_output + type: assert.screen + params: + contains: "LOOP 13" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_repeat_label_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_repeat_label_probe.easyflash.yaml new file mode 100644 index 0000000..3ba7098 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_repeat_label_probe.easyflash.yaml @@ -0,0 +1,198 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_repeat_label_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 1 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 60 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "FREE:" + wait_timeout_s: 180 + capture_label: readybasic_repeat_label_prompt + + - id: repeat_multiline + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,73,37,61,48,13,50,48,32,82,69,80,69,65,84,13,51,48,32,73,37,61,73,37,43,49,13,52,48,32,85,78,84,73,76,32,73,37,61,51,13,53,48,32,80,82,73,78,84,32,34,82,80,84,65,34,59,73,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_repeat_multiline + type: assert.screen + params: + contains: "RPTA 3" + + - id: repeat_colon + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,73,37,61,51,13,50,48,32,82,69,80,69,65,84,58,73,37,61,73,37,45,49,58,85,78,84,73,76,32,73,37,61,48,13,51,48,32,80,82,73,78,84,32,34,82,80,84,66,34,59,73,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_repeat_colon + type: assert.screen + params: + contains: "RPTB 0" + + - id: repeat_nested + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,65,37,61,48,58,66,37,61,48,13,50,48,32,82,69,80,69,65,84,13,51,48,32,65,37,61,65,37,43,49,58,66,37,61,48,13,52,48,32,82,69,80,69,65,84,58,66,37,61,66,37,43,49,58,85,78,84,73,76,32,66,37,61,50,13,53,48,32,85,78,84,73,76,32,65,37,61,51,13,54,48,32,80,82,73,78,84,32,34,82,80,84,78,34,59,65,37,59,66,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.4 + - id: assert_repeat_nested + type: assert.screen + params: + contains: "RPTN 3 2" + + - id: until_without_repeat + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,85,78,84,73,76,32,49,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_until_without_repeat + type: assert.screen + params: + contains: "?RB ERROR 36" + + - id: repeat_overflow + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,80,69,65,84,58,82,69,80,69,65,84,58,82,69,80,69,65,84,58,82,69,80,69,65,84,58,82,69,80,69,65,84,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_repeat_overflow + type: assert.screen + params: + contains: "?RB ERROR 35" + + - id: label_backward_if_then + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,76,65,66,69,76,32,76,80,13,50,48,32,73,37,61,73,37,43,49,13,51,48,32,73,70,32,73,37,60,51,32,84,72,69,78,32,74,85,77,80,32,76,80,13,52,48,32,80,82,73,78,84,32,34,76,66,76,66,34,59,73,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.4 + - id: assert_label_backward_if_then + type: assert.screen + params: + contains: "LBLB 3" + + - id: label_forward + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,80,82,73,78,84,32,34,65,34,13,50,48,32,74,85,77,80,32,83,75,73,80,13,51,48,32,80,82,73,78,84,32,34,66,65,68,34,13,52,48,32,76,65,66,69,76,32,83,75,73,80,58,80,82,73,78,84,32,34,76,66,76,70,34,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_label_forward + type: assert.screen + params: + contains: "LBLF" + - id: assert_label_forward_no_bad + type: assert.screen_not_contains + params: + not_contains: "BAD" + + - id: label_noop + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,76,65,66,69,76,32,72,69,82,69,58,80,82,73,78,84,32,34,76,66,76,78,34,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_label_noop + type: assert.screen + params: + contains: "LBLN" + + - id: missing_label + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,74,85,77,80,32,77,73,83,83,73,78,71,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_missing_label + type: assert.screen + params: + contains: "?RB ERROR 39" + + - id: numeric_goto_still_rom + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,71,79,84,79,32,51,48,13,50,48,32,80,82,73,78,84,32,34,66,65,68,34,13,51,48,32,80,82,73,78,84,32,34,71,84,79,78,34,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_numeric_goto + type: assert.screen + params: + contains: "GTON" + - id: assert_numeric_goto_no_bad + type: assert.screen_not_contains + params: + not_contains: "BAD" + + - id: err_status_after_error + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,90,70,65,73,76,40,54,44,88,37,41,13,82,85,78,13,80,82,73,78,84,32,34,69,82,88,34,59,69,82,82,67,79,68,69,40,41,59,69,82,82,76,73,78,69,40,41,13,69,82,82,67,79,68,69,40,69,37,41,58,69,82,82,76,73,78,69,40,76,37,41,58,80,82,73,78,84,32,34,69,82,83,34,59,69,37,59,76,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.4 + - id: assert_err_error + type: assert.screen + params: + contains: "?RB ERROR 6" + - id: assert_err_expr + type: assert.screen + params: + contains: "ERX 6 10" + - id: assert_err_stmt + type: assert.screen + params: + contains: "ERS 6 10" + + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_repeat_label_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_repeat_label_probe.regular.yaml new file mode 100644 index 0000000..3e0c215 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_repeat_label_probe.regular.yaml @@ -0,0 +1,183 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_repeat_label_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 1 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 60 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "FREE:" + wait_timeout_s: 180 + capture_label: readybasic_repeat_label_prompt + + - id: repeat_multiline + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,73,37,61,48,13,50,48,32,82,69,80,69,65,84,13,51,48,32,73,37,61,73,37,43,49,13,52,48,32,85,78,84,73,76,32,73,37,61,51,13,53,48,32,80,82,73,78,84,32,34,82,80,84,65,34,59,73,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_repeat_multiline + type: assert.screen + params: + contains: "RPTA 3" + + - id: repeat_colon + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,73,37,61,51,13,50,48,32,82,69,80,69,65,84,58,73,37,61,73,37,45,49,58,85,78,84,73,76,32,73,37,61,48,13,51,48,32,80,82,73,78,84,32,34,82,80,84,66,34,59,73,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_repeat_colon + type: assert.screen + params: + contains: "RPTB 0" + + - id: repeat_nested + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,65,37,61,48,58,66,37,61,48,13,50,48,32,82,69,80,69,65,84,13,51,48,32,65,37,61,65,37,43,49,58,66,37,61,48,13,52,48,32,82,69,80,69,65,84,58,66,37,61,66,37,43,49,58,85,78,84,73,76,32,66,37,61,50,13,53,48,32,85,78,84,73,76,32,65,37,61,51,13,54,48,32,80,82,73,78,84,32,34,82,80,84,78,34,59,65,37,59,66,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.4 + - id: assert_repeat_nested + type: assert.screen + params: + contains: "RPTN 3 2" + + - id: until_without_repeat + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,85,78,84,73,76,32,49,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_until_without_repeat + type: assert.screen + params: + contains: "?RB ERROR 36" + + - id: repeat_overflow + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,80,69,65,84,58,82,69,80,69,65,84,58,82,69,80,69,65,84,58,82,69,80,69,65,84,58,82,69,80,69,65,84,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_repeat_overflow + type: assert.screen + params: + contains: "?RB ERROR 35" + + - id: label_backward_if_then + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,76,65,66,69,76,32,76,80,13,50,48,32,73,37,61,73,37,43,49,13,51,48,32,73,70,32,73,37,60,51,32,84,72,69,78,32,74,85,77,80,32,76,80,13,52,48,32,80,82,73,78,84,32,34,76,66,76,66,34,59,73,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.4 + - id: assert_label_backward_if_then + type: assert.screen + params: + contains: "LBLB 3" + + - id: label_forward + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,80,82,73,78,84,32,34,65,34,13,50,48,32,74,85,77,80,32,83,75,73,80,13,51,48,32,80,82,73,78,84,32,34,66,65,68,34,13,52,48,32,76,65,66,69,76,32,83,75,73,80,58,80,82,73,78,84,32,34,76,66,76,70,34,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: assert_label_forward + type: assert.screen + params: + contains: "LBLF" + - id: assert_label_forward_no_bad + type: assert.screen_not_contains + params: + not_contains: "BAD" + + - id: label_noop + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,76,65,66,69,76,32,72,69,82,69,58,80,82,73,78,84,32,34,76,66,76,78,34,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_label_noop + type: assert.screen + params: + contains: "LBLN" + + - id: missing_label + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,74,85,77,80,32,77,73,83,83,73,78,71,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_missing_label + type: assert.screen + params: + contains: "?RB ERROR 39" + + - id: numeric_goto_still_rom + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,71,79,84,79,32,51,48,13,50,48,32,80,82,73,78,84,32,34,66,65,68,34,13,51,48,32,80,82,73,78,84,32,34,71,84,79,78,34,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_numeric_goto + type: assert.screen + params: + contains: "GTON" + - id: assert_numeric_goto_no_bad + type: assert.screen_not_contains + params: + not_contains: "BAD" + + - id: err_status_after_error + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,90,70,65,73,76,40,54,44,88,37,41,13,82,85,78,13,80,82,73,78,84,32,34,69,82,88,34,59,69,82,82,67,79,68,69,40,41,59,69,82,82,76,73,78,69,40,41,13,69,82,82,67,79,68,69,40,69,37,41,58,69,82,82,76,73,78,69,40,76,37,41,58,80,82,73,78,84,32,34,69,82,83,34,59,69,37,59,76,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.4 + - id: assert_err_error + type: assert.screen + params: + contains: "?RB ERROR 6" + - id: assert_err_expr + type: assert.screen + params: + contains: "ERX 6 10" + - id: assert_err_stmt + type: assert.screen + params: + contains: "ERS 6 10" + + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_resume_min_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_resume_min_probe.easyflash.yaml new file mode 100644 index 0000000..795d5d9 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_resume_min_probe.easyflash.yaml @@ -0,0 +1,173 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_resume_min_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_resume_min_prompt + - id: initial_builtin_probe + type: input.sequence + params: + keys: [65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_initial_add16_probe + type: screen.capture + params: + label: initial_add16_probe + - id: initial_ping_probe + type: input.sequence + params: + keys: [90,69,67,72,79,49,40,80,37,41,13,80,82,73,78,84,32,34,80,82,69,34,59,65,37,59,34,58,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_initial_builtin_probe + type: screen.capture + params: + label: initial_builtin_probe + - id: assert_initial_builtin_probe + type: assert.screen + params: + contains: "PRE 15 : 1" + - id: initial_state_seed + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,86,37,61,51,50,49,58,86,83,36,61,34,79,75,34,13,80,82,73,78,84,32,34,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_initial_state_seed + type: assert.screen + params: + contains: "STATE 321 :OK" + - id: dump_before_first_exit + type: dump.memory_ranges + params: + ranges: + - { label: page3_vectors, start: 0x0304, end: 0x030B } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - { label: regseed_live_5000, start: 0x5000, end: 0x503F } + - id: exit_to_launcher_1 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_1 + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: wait_readybasic_after_resume_1 + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: builtin_after_resume_1 + type: input.sequence + params: + keys: [13,80,82,73,78,84,32,34,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13,65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13,90,69,67,72,79,49,40,80,37,41,13,80,82,73,78,84,32,34,82,49,34,59,65,37,59,34,58,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_after_resume_1 + type: screen.capture + params: + label: after_resume_1 + - id: assert_state_after_resume_1 + type: assert.screen + params: + contains: "STATE 321 :OK" + - id: assert_builtin_after_resume_1 + type: assert.screen + params: + contains: "R1 15 : 1" + - id: exit_to_launcher_2 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_2 + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: wait_readybasic_after_resume_2 + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: builtin_after_resume_2 + type: input.sequence + params: + keys: [65,37,61,90,65,68,68,49,54,40,55,44,56,41,13,90,69,67,72,79,49,40,80,37,41,13,80,82,73,78,84,32,34,82,50,34,59,65,37,59,34,58,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_after_resume_2 + type: screen.capture + params: + label: after_resume_2 + - id: assert_builtin_after_resume_2 + type: assert.screen + params: + contains: "R2 15 : 1" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_resume_min_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_resume_min_probe.regular.yaml new file mode 100644 index 0000000..ca67cb2 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_resume_min_probe.regular.yaml @@ -0,0 +1,158 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_resume_min_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "__READYBASIC_D81__" + disk9: "__READYBASIC_D81__" + autostart_prg: "__READYBASIC_PREBOOT__" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_resume_min_prompt + - id: initial_builtin_probe + type: input.sequence + params: + keys: [65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_initial_add16_probe + type: screen.capture + params: + label: initial_add16_probe + - id: initial_ping_probe + type: input.sequence + params: + keys: [90,69,67,72,79,49,40,80,37,41,13,80,82,73,78,84,32,34,80,82,69,34,59,65,37,59,34,58,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_initial_builtin_probe + type: screen.capture + params: + label: initial_builtin_probe + - id: assert_initial_builtin_probe + type: assert.screen + params: + contains: "PRE 15 : 1" + - id: initial_state_seed + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,86,37,61,51,50,49,58,86,83,36,61,34,79,75,34,13,80,82,73,78,84,32,34,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_initial_state_seed + type: assert.screen + params: + contains: "STATE 321 :OK" + - id: dump_before_first_exit + type: dump.memory_ranges + params: + ranges: + - { label: page3_vectors, start: 0x0304, end: 0x030B } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - { label: regseed_live_5000, start: 0x5000, end: 0x503F } + - id: exit_to_launcher_1 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_1 + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: wait_readybasic_after_resume_1 + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: builtin_after_resume_1 + type: input.sequence + params: + keys: [13,80,82,73,78,84,32,34,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13,65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13,90,69,67,72,79,49,40,80,37,41,13,80,82,73,78,84,32,34,82,49,34,59,65,37,59,34,58,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_after_resume_1 + type: screen.capture + params: + label: after_resume_1 + - id: assert_state_after_resume_1 + type: assert.screen + params: + contains: "STATE 321 :OK" + - id: assert_builtin_after_resume_1 + type: assert.screen + params: + contains: "R1 15 : 1" + - id: exit_to_launcher_2 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_2 + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 3.0 + - id: wait_readybasic_after_resume_2 + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: builtin_after_resume_2 + type: input.sequence + params: + keys: [65,37,61,90,65,68,68,49,54,40,55,44,56,41,13,90,69,67,72,79,49,40,80,37,41,13,80,82,73,78,84,32,34,82,50,34,59,65,37,59,34,58,34,59,80,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_after_resume_2 + type: screen.capture + params: + label: after_resume_2 + - id: assert_builtin_after_resume_2 + type: assert.screen + params: + contains: "R2 15 : 1" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.easyflash.yaml new file mode 100644 index 0000000..c55bae2 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.easyflash.yaml @@ -0,0 +1,397 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_reuviewer_f2_chain_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_launcher_initial + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 420 + capture_label: chain_launcher_initial + - id: launch_readybasic_from_launcher + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_initial + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 120 + capture_label: chain_readybasic_initial + - id: assert_readybasic_bank_initial + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_initial + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_initial + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: readybasic_first_type + type: input.sequence + params: + keys: [81,37,61,49,48,49,58,80,82,73,78,84,32,34,67,72,65,73,78,49,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_first_type + type: assert.screen + params: + contains: "CHAIN1 101" + - id: readybasic_ctrl_b_1_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_1_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_1 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_1 + - id: assert_launcher_bank_after_ctrl_b_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_1 + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: capture_readybasic_reentry_1 + type: screen.capture + params: + label: chain_readybasic_reentry_1 + note: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_reentry_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: readybasic_second_type + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,50,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_second_type + type: assert.screen + params: + contains: "CHAIN2 101" + - id: readybasic_ctrl_b_2_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_2_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_2 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_2 + - id: launch_reuviewer_from_readybasic_position + type: input.sequence + params: + keys: [17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_reuviewer + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 90 + capture_label: chain_reuviewer_loaded + - id: assert_reuviewer_bank + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: constrain_loaded_bitmap_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 51254 + bytes_hex: "20 01 00" + - id: reuviewer_f2_to_readybasic + type: input.sequence + params: + keys: [137] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: capture_readybasic_after_reuviewer_f2 + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_f2 + note: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: assert_keyboard_buffer_empty_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_readybasic_stable_after_reuviewer_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_readybasic_stable_after_reuviewer_f2 + - id: assert_readybasic_bank_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_keyboard_buffer_empty_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: readybasic_type_after_reuviewer_f2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,51,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_f2 + type: assert.screen + params: + contains: "CHAIN3 101" + - id: readybasic_f2_back_to_reuviewer_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_f2_back_to_reuviewer_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_f2_back_to_reuviewer + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_reuviewer_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 80 + pre_delay_s: 1.0 + capture_label: chain_reuviewer_after_readybasic_f2 + - id: assert_app_keylog_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "48 EB" + - id: assert_app_chrin_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "57 F1" + - id: assert_default_input_device_after_readybasic_f2 + type: assert.memory + params: + start: 153 + end: 153 + equals_hex: "00" + - id: assert_reuviewer_bank_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_reuviewer_stable_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_reuviewer_stable_after_readybasic_f2 + - id: assert_reuviewer_bank_stable_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_stable_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: reuviewer_ctrl_b_after_readybasic_f2 + type: monitor.command + params: + command: "keybuf \\x02" + - id: capture_after_reuviewer_ctrl_b_input + type: screen.capture + params: + label: chain_after_reuviewer_ctrl_b_hotkey + note: capture after resumed REU Viewer Ctrl+B hotkey + - id: wait_launcher_after_reuviewer_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: chain_launcher_after_reuviewer_ctrl_b + - id: assert_launcher_bank_after_reuviewer_ctrl_b + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_after_reuviewer_ctrl_b + type: input.sequence + params: + keys: [145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: capture_readybasic_after_reuviewer_ctrl_b_reentry + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_ctrl_b_reentry + note: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_reuviewer_ctrl_b_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,52,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_ctrl_b_reentry + type: assert.screen + params: + contains: "CHAIN4 101" + - id: readybasic_exit_after_multi_hop_reentry + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: wait_launcher_stable_after_readybasic_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + pre_delay_s: 2.0 + capture_label: chain_launcher_stable_after_readybasic_exit + - id: assert_launcher_bank_after_readybasic_exit + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: assert_readybasic_not_auto_reentered_after_exit + type: assert.screen_not_contains + params: + not_contains: "ready." + - id: reenter_readybasic_after_exit_guard + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: capture_readybasic_after_exit_guard_reentry + type: screen.capture + params: + label: chain_readybasic_after_exit_guard_reentry + note: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_exit_guard_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,53,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_exit_guard_reentry + type: assert.screen + params: + contains: "CHAIN5 101" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.regular.yaml new file mode 100644 index 0000000..d523732 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.regular.yaml @@ -0,0 +1,396 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_reuviewer_f2_chain_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_launcher_initial + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 180 + capture_label: chain_launcher_initial + - id: launch_readybasic_from_launcher + type: input.sequence + params: + keys: [17,17,17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_initial + type: screen.wait_contains + params: + text: "READYBASIC" + wait_timeout_s: 120 + capture_label: chain_readybasic_initial + - id: assert_readybasic_bank_initial + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_initial + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_initial + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: readybasic_first_type + type: input.sequence + params: + keys: [81,37,61,49,48,49,58,80,82,73,78,84,32,34,67,72,65,73,78,49,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_first_type + type: assert.screen + params: + contains: "CHAIN1 101" + - id: readybasic_ctrl_b_1_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_1_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_1 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_1 + - id: assert_launcher_bank_after_ctrl_b_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_1 + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: capture_readybasic_reentry_1 + type: screen.capture + params: + label: chain_readybasic_reentry_1 + note: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_reentry_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: readybasic_second_type + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,50,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_second_type + type: assert.screen + params: + contains: "CHAIN2 101" + - id: readybasic_ctrl_b_2_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_2_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_2 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_2 + - id: launch_reuviewer_from_readybasic_position + type: input.sequence + params: + keys: [17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_reuviewer + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 90 + capture_label: chain_reuviewer_loaded + - id: assert_reuviewer_bank + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: constrain_loaded_bitmap_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 51254 + bytes_hex: "20 01 00" + - id: reuviewer_f2_to_readybasic + type: input.sequence + params: + keys: [137] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: capture_readybasic_after_reuviewer_f2 + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_f2 + note: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: assert_keyboard_buffer_empty_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_readybasic_stable_after_reuviewer_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_readybasic_stable_after_reuviewer_f2 + - id: assert_readybasic_bank_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_keyboard_buffer_empty_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: readybasic_type_after_reuviewer_f2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,51,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_f2 + type: assert.screen + params: + contains: "CHAIN3 101" + - id: readybasic_f2_back_to_reuviewer_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_f2_back_to_reuviewer_clear_keylog_breakpoints + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_f2_back_to_reuviewer + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_reuviewer_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 80 + pre_delay_s: 1.0 + capture_label: chain_reuviewer_after_readybasic_f2 + - id: assert_app_keylog_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "48 EB" + - id: assert_app_chrin_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "57 F1" + - id: assert_default_input_device_after_readybasic_f2 + type: assert.memory + params: + start: 153 + end: 153 + equals_hex: "00" + - id: assert_reuviewer_bank_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_reuviewer_stable_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_reuviewer_stable_after_readybasic_f2 + - id: assert_reuviewer_bank_stable_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_stable_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: reuviewer_ctrl_b_after_readybasic_f2 + type: monitor.command + params: + command: "keybuf \\x02" + - id: capture_after_reuviewer_ctrl_b_input + type: screen.capture + params: + label: chain_after_reuviewer_ctrl_b_hotkey + note: capture after resumed REU Viewer Ctrl+B hotkey + - id: wait_launcher_after_reuviewer_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: chain_launcher_after_reuviewer_ctrl_b + - id: assert_launcher_bank_after_reuviewer_ctrl_b + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_after_reuviewer_ctrl_b + type: input.sequence + params: + keys: [145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: capture_readybasic_after_reuviewer_ctrl_b_reentry + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_ctrl_b_reentry + note: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_reuviewer_ctrl_b_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,52,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_ctrl_b_reentry + type: assert.screen + params: + contains: "CHAIN4 101" + - id: readybasic_exit_after_multi_hop_reentry + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: wait_launcher_stable_after_readybasic_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + pre_delay_s: 2.0 + capture_label: chain_launcher_stable_after_readybasic_exit + - id: assert_launcher_bank_after_readybasic_exit + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: assert_readybasic_not_auto_reentered_after_exit + type: assert.screen_not_contains + params: + not_contains: "ready." + - id: reenter_readybasic_after_exit_guard + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: capture_readybasic_after_exit_guard_reentry + type: screen.capture + params: + label: chain_readybasic_after_exit_guard_reentry + note: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_exit_guard_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,53,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_exit_guard_reentry + type: assert.screen + params: + contains: "CHAIN5 101" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.easyflash.yaml new file mode 100644 index 0000000..5136dba --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.easyflash.yaml @@ -0,0 +1,102 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_screen_reu_temp_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 1 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: scrreu_prompt + - id: dump_initial_ranges + type: dump.memory_ranges + params: + ranges: &scrreu_ranges + - { label: screen_0400, start: 0x0400, end: 0x07E7 } + - { label: color_d800, start: 0xD800, end: 0xDBE7 } + - { label: descriptors_1000, start: 0x1000, end: 0x11FF } + - { label: resident_1200, start: 0x1200, end: 0x1BFF } + - { label: command_overlay_a800, start: 0xA800, end: 0xAFFF } + - { label: reu_alloc_c600, start: 0xC600, end: 0xC6FF } + - id: load_temp_program + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,79,65,68,32,34,82,66,83,67,82,82,69,85,34,44,56,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_load_ready + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + capture_label: scrreu_loaded + - id: dump_after_load + type: dump.memory_ranges + params: + ranges: *scrreu_ranges + - id: run_temp_program + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 75.0 + - id: assert_done + type: assert.memory + params: + start: 1024 + end: 1036 + equals_hex: "52 42 53 43 52 52 45 55 20 44 4F 4E 45" + - id: dump_after_done + type: dump.memory_ranges + params: + ranges: *scrreu_ranges + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.regular.yaml new file mode 100644 index 0000000..1556ba0 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.regular.yaml @@ -0,0 +1,87 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_screen_reu_temp_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 1 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: scrreu_prompt + - id: dump_initial_ranges + type: dump.memory_ranges + params: + ranges: &scrreu_ranges + - { label: screen_0400, start: 0x0400, end: 0x07E7 } + - { label: color_d800, start: 0xD800, end: 0xDBE7 } + - { label: descriptors_1000, start: 0x1000, end: 0x11FF } + - { label: resident_1200, start: 0x1200, end: 0x1BFF } + - { label: command_overlay_a800, start: 0xA800, end: 0xAFFF } + - { label: reu_alloc_c600, start: 0xC600, end: 0xC6FF } + - id: load_temp_program + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,79,65,68,32,34,82,66,83,67,82,82,69,85,34,44,56,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_load_ready + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + capture_label: scrreu_loaded + - id: dump_after_load + type: dump.memory_ranges + params: + ranges: *scrreu_ranges + - id: run_temp_program + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 30.0 + - id: assert_done + type: screen.wait_contains + params: + text: "RBSCRREU DONE" + wait_timeout_s: 300 + capture_label: scrreu_done + - id: dump_after_done + type: dump.memory_ranges + params: + ranges: *scrreu_ranges + - id: regs_final + type: monitor.command + params: + command: "r" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.easyflash.yaml new file mode 100644 index 0000000..8491d6e --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.easyflash.yaml @@ -0,0 +1,865 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_second_entry_editor_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 240 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_first_readybasic_prompt + type: screen.wait_contains + params: + text: "FREE:" + wait_timeout_s: 180 + capture_label: first_readybasic_prompt + - id: first_entry_print_hello + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,69,76,76,79,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: first_entry_print_dirty + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,68,73,82,84,89,32,70,73,82,83,84,32,69,78,84,82,89,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: first_entry_assign_x + type: input.sequence + params: + keys: [88,61,55,55,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: first_entry_print_x + type: input.sequence + params: + keys: [80,82,73,78,84,32,88,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_first_entry_print_hello + type: assert.screen + params: + contains: "HELLO" + - id: assert_first_entry_print_dirty + type: assert.screen + params: + contains: "DIRTY FIRST ENTRY" + - id: assert_first_entry_print_x + type: assert.screen + params: + contains: " 77" + - id: first_readybasic_exit + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_first_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_before_setup + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_before_setup + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_before_setup + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_before_setup + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_before_setup + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_before_setup + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_before_setup + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_before_setup + - id: enter_line_10 + type: input.sequence + params: + keys: [49,48,32,80,82,73,78,84,32,34,72,69,76,76,79,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: enter_line_20 + type: input.sequence + params: + keys: [50,48,32,80,82,73,78,84,32,34,66,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: enter_line_30 + type: input.sequence + params: + keys: [51,48,32,80,82,73,78,84,32,34,67,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: enter_line_40 + type: input.sequence + params: + keys: [52,48,32,80,82,73,78,84,32,34,68,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: enter_line_50 + type: input.sequence + params: + keys: [53,48,32,80,82,73,78,84,32,34,69,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: list_before_run + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_before_run + type: assert.screen + params: + contains: "50 PRINT" + - id: run_program + type: input.sequence + params: + keys: [82,85,78,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_run_output + type: assert.screen + params: + contains: "HELLO" + - id: assign_a + type: input.sequence + params: + keys: [65,36,61,34,65,45,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: print_a_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_before_exit + type: assert.screen + params: + contains: "A-0123456789" + - id: assign_b + type: input.sequence + params: + keys: [66,36,61,34,66,45,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: print_b_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_before_exit + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: assign_c + type: input.sequence + params: + keys: [67,36,61,34,67,45,82,69,65,68,89,66,65,83,73,67,45,83,84,82,73,78,71,45,83,84,65,84,69,45,83,72,79,85,76,68,45,83,85,82,86,73,86,69,45,69,68,73,84,79,82,45,48,48,49,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: print_c_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_before_exit + type: assert.screen + params: + contains: "C-READYBASIC" + - id: assign_d + type: input.sequence + params: + keys: [68,36,61,34,68,45,83,69,67,79,78,68,45,69,78,84,82,89,45,69,68,73,84,79,82,45,82,79,85,78,68,84,82,73,80,45,76,79,78,71,45,83,84,82,73,78,71,45,83,84,65,84,69,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: print_d_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_before_exit + type: assert.screen + params: + contains: "D-SECOND" + - id: dim_e + type: input.sequence + params: + keys: [68,73,77,32,69,40,50,48,48,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assign_e199 + type: input.sequence + params: + keys: [69,40,49,57,57,41,61,53,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: print_e_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: assert_e_before_exit + type: assert.screen + params: + contains: " 5" + - id: dump_before_editor_roundtrip + type: dump.memory_ranges + params: + ranges: &state_ranges + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_text_and_vars_1200, start: 0x1200, end: 0x1800 } + - { label: string_heap_9300, start: 0x9300, end: 0x9600 } + - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: exit_readybasic_1 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_exit_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_verify_1 + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_verify_1 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_verify_1 + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_verify_1 + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_verify_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_verify_1 + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_verify_1 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_verify_1 + - id: list_after_editor_1 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_after_editor_1 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_editor_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_after_editor_1 + type: assert.screen + params: + contains: "A-0123456789" + - id: print_b_after_editor_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_after_editor_1 + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: print_c_after_editor_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_after_editor_1 + type: assert.screen + params: + contains: "C-READYBASIC" + - id: print_d_after_editor_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_after_editor_1 + type: assert.screen + params: + contains: "D-SECOND" + - id: print_e_after_editor_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_e_after_editor_1 + type: assert.screen + params: + contains: " 5" + - id: exit_readybasic_2 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_exit_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_verify_2 + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_verify_2 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_verify_2 + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_verify_2 + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_verify_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_verify_2 + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_verify_2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_verify_2 + - id: list_after_editor_2 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_after_editor_2 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_editor_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_after_editor_2 + type: assert.screen + params: + contains: "A-0123456789" + - id: print_b_after_editor_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_after_editor_2 + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: print_c_after_editor_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_after_editor_2 + type: assert.screen + params: + contains: "C-READYBASIC" + - id: print_d_after_editor_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_after_editor_2 + type: assert.screen + params: + contains: "D-SECOND" + - id: print_e_after_editor_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_e_after_editor_2 + type: assert.screen + params: + contains: " 5" + - id: exit_readybasic_3 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_exit_3 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_verify_3 + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_verify_3 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_verify_3 + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_verify_3 + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_verify_3 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_verify_3 + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_verify_3 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_verify_3 + - id: list_after_editor_3 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_after_editor_3 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_editor_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_after_editor_3 + type: assert.screen + params: + contains: "A-0123456789" + - id: print_b_after_editor_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_after_editor_3 + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: print_c_after_editor_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_after_editor_3 + type: assert.screen + params: + contains: "C-READYBASIC" + - id: print_d_after_editor_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_after_editor_3 + type: assert.screen + params: + contains: "D-SECOND" + - id: print_e_after_editor_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_e_after_editor_3 + type: assert.screen + params: + contains: " 5" + - id: exit_readybasic_4 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_exit_4 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_verify_4 + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_verify_4 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_verify_4 + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_verify_4 + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_verify_4 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_verify_4 + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_verify_4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_verify_4 + - id: list_after_editor_4 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_after_editor_4 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_editor_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_after_editor_4 + type: assert.screen + params: + contains: "A-0123456789" + - id: print_b_after_editor_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_after_editor_4 + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: print_c_after_editor_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_after_editor_4 + type: assert.screen + params: + contains: "C-READYBASIC" + - id: print_d_after_editor_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_after_editor_4 + type: assert.screen + params: + contains: "D-SECOND" + - id: print_e_after_editor_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_e_after_editor_4 + type: assert.screen + params: + contains: " 5" + - id: exit_readybasic_5 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_exit_5 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_verify_5 + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_verify_5 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_verify_5 + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_verify_5 + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_verify_5 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_verify_5 + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_verify_5 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_verify_5 + - id: list_after_editor_5 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_after_editor_5 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_editor_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_after_editor_5 + type: assert.screen + params: + contains: "A-0123456789" + - id: print_b_after_editor_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_after_editor_5 + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: print_c_after_editor_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_after_editor_5 + type: assert.screen + params: + contains: "C-READYBASIC" + - id: print_d_after_editor_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_after_editor_5 + type: assert.screen + params: + contains: "D-SECOND" + - id: print_e_after_editor_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_e_after_editor_5 + type: assert.screen + params: + contains: " 5" + - id: dump_final_state + type: dump.memory_ranges + params: + ranges: *state_ranges diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.regular.yaml new file mode 100644 index 0000000..7d0541d --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.regular.yaml @@ -0,0 +1,850 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_second_entry_editor_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 240 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_first_readybasic_prompt + type: screen.wait_contains + params: + text: "FREE:" + wait_timeout_s: 180 + capture_label: first_readybasic_prompt + - id: first_entry_print_hello + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,69,76,76,79,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: first_entry_print_dirty + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,68,73,82,84,89,32,70,73,82,83,84,32,69,78,84,82,89,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: first_entry_assign_x + type: input.sequence + params: + keys: [88,61,55,55,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: first_entry_print_x + type: input.sequence + params: + keys: [80,82,73,78,84,32,88,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_first_entry_print_hello + type: assert.screen + params: + contains: "HELLO" + - id: assert_first_entry_print_dirty + type: assert.screen + params: + contains: "DIRTY FIRST ENTRY" + - id: assert_first_entry_print_x + type: assert.screen + params: + contains: " 77" + - id: first_readybasic_exit + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_first_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_before_setup + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_before_setup + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_before_setup + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_before_setup + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_before_setup + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_before_setup + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_before_setup + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_before_setup + - id: enter_line_10 + type: input.sequence + params: + keys: [49,48,32,80,82,73,78,84,32,34,72,69,76,76,79,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: enter_line_20 + type: input.sequence + params: + keys: [50,48,32,80,82,73,78,84,32,34,66,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: enter_line_30 + type: input.sequence + params: + keys: [51,48,32,80,82,73,78,84,32,34,67,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: enter_line_40 + type: input.sequence + params: + keys: [52,48,32,80,82,73,78,84,32,34,68,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: enter_line_50 + type: input.sequence + params: + keys: [53,48,32,80,82,73,78,84,32,34,69,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: list_before_run + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_before_run + type: assert.screen + params: + contains: "50 PRINT" + - id: run_program + type: input.sequence + params: + keys: [82,85,78,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_run_output + type: assert.screen + params: + contains: "HELLO" + - id: assign_a + type: input.sequence + params: + keys: [65,36,61,34,65,45,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54,55,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: print_a_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_before_exit + type: assert.screen + params: + contains: "A-0123456789" + - id: assign_b + type: input.sequence + params: + keys: [66,36,61,34,66,45,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: print_b_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_before_exit + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: assign_c + type: input.sequence + params: + keys: [67,36,61,34,67,45,82,69,65,68,89,66,65,83,73,67,45,83,84,82,73,78,71,45,83,84,65,84,69,45,83,72,79,85,76,68,45,83,85,82,86,73,86,69,45,69,68,73,84,79,82,45,48,48,49,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: print_c_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_before_exit + type: assert.screen + params: + contains: "C-READYBASIC" + - id: assign_d + type: input.sequence + params: + keys: [68,36,61,34,68,45,83,69,67,79,78,68,45,69,78,84,82,89,45,69,68,73,84,79,82,45,82,79,85,78,68,84,82,73,80,45,76,79,78,71,45,83,84,82,73,78,71,45,83,84,65,84,69,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: print_d_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_before_exit + type: assert.screen + params: + contains: "D-SECOND" + - id: dim_e + type: input.sequence + params: + keys: [68,73,77,32,69,40,50,48,48,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assign_e199 + type: input.sequence + params: + keys: [69,40,49,57,57,41,61,53,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: print_e_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: assert_e_before_exit + type: assert.screen + params: + contains: " 5" + - id: dump_before_editor_roundtrip + type: dump.memory_ranges + params: + ranges: &state_ranges + - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_text_and_vars_1200, start: 0x1200, end: 0x1800 } + - { label: string_heap_9300, start: 0x9300, end: 0x9600 } + - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - id: exit_readybasic_1 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_exit_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_verify_1 + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_verify_1 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_verify_1 + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_verify_1 + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_verify_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_verify_1 + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_verify_1 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_verify_1 + - id: list_after_editor_1 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_after_editor_1 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_editor_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_after_editor_1 + type: assert.screen + params: + contains: "A-0123456789" + - id: print_b_after_editor_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_after_editor_1 + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: print_c_after_editor_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_after_editor_1 + type: assert.screen + params: + contains: "C-READYBASIC" + - id: print_d_after_editor_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_after_editor_1 + type: assert.screen + params: + contains: "D-SECOND" + - id: print_e_after_editor_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_e_after_editor_1 + type: assert.screen + params: + contains: " 5" + - id: exit_readybasic_2 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_exit_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_verify_2 + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_verify_2 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_verify_2 + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_verify_2 + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_verify_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_verify_2 + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_verify_2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_verify_2 + - id: list_after_editor_2 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_after_editor_2 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_editor_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_after_editor_2 + type: assert.screen + params: + contains: "A-0123456789" + - id: print_b_after_editor_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_after_editor_2 + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: print_c_after_editor_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_after_editor_2 + type: assert.screen + params: + contains: "C-READYBASIC" + - id: print_d_after_editor_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_after_editor_2 + type: assert.screen + params: + contains: "D-SECOND" + - id: print_e_after_editor_2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_e_after_editor_2 + type: assert.screen + params: + contains: " 5" + - id: exit_readybasic_3 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_exit_3 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_verify_3 + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_verify_3 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_verify_3 + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_verify_3 + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_verify_3 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_verify_3 + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_verify_3 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_verify_3 + - id: list_after_editor_3 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_after_editor_3 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_editor_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_after_editor_3 + type: assert.screen + params: + contains: "A-0123456789" + - id: print_b_after_editor_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_after_editor_3 + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: print_c_after_editor_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_after_editor_3 + type: assert.screen + params: + contains: "C-READYBASIC" + - id: print_d_after_editor_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_after_editor_3 + type: assert.screen + params: + contains: "D-SECOND" + - id: print_e_after_editor_3 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_e_after_editor_3 + type: assert.screen + params: + contains: " 5" + - id: exit_readybasic_4 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_exit_4 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_verify_4 + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_verify_4 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_verify_4 + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_verify_4 + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_verify_4 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_verify_4 + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_verify_4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_verify_4 + - id: list_after_editor_4 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_after_editor_4 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_editor_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_after_editor_4 + type: assert.screen + params: + contains: "A-0123456789" + - id: print_b_after_editor_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_after_editor_4 + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: print_c_after_editor_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_after_editor_4 + type: assert.screen + params: + contains: "C-READYBASIC" + - id: print_d_after_editor_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_after_editor_4 + type: assert.screen + params: + contains: "D-SECOND" + - id: print_e_after_editor_4 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_e_after_editor_4 + type: assert.screen + params: + contains: " 5" + - id: exit_readybasic_5 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.2 + - id: wait_launcher_after_exit_5 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_verify_5 + type: input.sequence + params: + keys: [145,145,145,145,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_editor_verify_5 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + - id: type_editor_chars_verify_5 + type: input.sequence + params: + keys: [80,82,79,66,69,32,76,73,78,69,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: ctrl_b_editor_verify_5 + type: input.sequence + params: + keys: [2] + pre_delay_s: 0 + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_verify_5 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_verify_5 + type: input.sequence + params: + keys: [17,17,17,17,13] + pre_delay_s: 0 + inter_key_delay_s: 0.10 + post_delay_s: 1.0 + - id: wait_readybasic_after_tour_verify_5 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_after_tour_verify_5 + - id: list_after_editor_5 + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_program_after_editor_5 + type: assert.screen + params: + contains: "50 PRINT" + - id: print_a_after_editor_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_a_after_editor_5 + type: assert.screen + params: + contains: "A-0123456789" + - id: print_b_after_editor_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,66,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_b_after_editor_5 + type: assert.screen + params: + contains: "B-ABCDEFGHIJ" + - id: print_c_after_editor_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_c_after_editor_5 + type: assert.screen + params: + contains: "C-READYBASIC" + - id: print_d_after_editor_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,68,36,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_d_after_editor_5 + type: assert.screen + params: + contains: "D-SECOND" + - id: print_e_after_editor_5 + type: input.sequence + params: + keys: [80,82,73,78,84,32,69,40,49,57,57,41,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.6 + - id: assert_e_after_editor_5 + type: assert.screen + params: + contains: " 5" + - id: dump_final_state + type: dump.memory_ranges + params: + ranges: *state_ranges diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_state_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_state_probe.easyflash.yaml new file mode 100644 index 0000000..8212dd4 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_state_probe.easyflash.yaml @@ -0,0 +1,350 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_state_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_prompt + - id: dump_initial_state + type: dump.memory_ranges + params: + ranges: &state_ranges + - { label: basic_zp_002b, start: 0x002B, end: 0x003F } + - { label: chrget_0073, start: 0x0073, end: 0x008A } + - { label: stack_0100, start: 0x0100, end: 0x01FF } + - { label: basic_text_1200, start: 0x1200, end: 0x1300 } + - { label: runtime_9500, start: 0x9500, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - { label: screen_0400, start: 0x0400, end: 0x07E7 } + + - id: direct_string_assignment + type: input.sequence + params: + keys: [78,69,87,13,65,36,61,34,72,69,76,76,79,34,13,80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_direct_string_before_exit + type: assert.screen + params: + contains: "HELLO" + - id: dump_direct_string_before_exit + type: dump.memory_ranges + params: + ranges: *state_ranges + - id: exit_direct_string + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_direct_string_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_direct_string + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_direct_string_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: print_direct_string_after_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,43,34,33,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_direct_string_after_resume + type: assert.screen + params: + contains: "HELLO!" + - id: allocate_second_direct_string + type: input.sequence + params: + keys: [66,36,61,34,87,79,82,76,68,34,13,80,82,73,78,84,32,65,36,43,34,50,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_direct_string_after_second_allocation + type: assert.screen + params: + contains: "HELLO2" + - id: dump_direct_string_after_resume + type: dump.memory_ranges + params: + ranges: *state_ranges + - id: reset_after_direct_string_case + type: input.sequence + params: + keys: [78,69,87,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + + - id: type_multiline_program + type: input.sequence + params: + keys: [49,48,32,80,82,73,78,84,32,34,72,69,76,76,79,34,13,50,48,32,80,82,73,78,84,32,34,66,34,13,51,48,32,80,82,73,78,84,32,34,67,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: list_multiline_before_exit + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_multiline_before_exit + type: assert.screen + params: + contains: "30 PRINT" + - id: exit_multiline + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_multiline_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_multiline + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_multiline_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: list_multiline_after_resume + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_multiline_after_resume + type: screen.capture + params: + label: multiline_after_resume + - id: assert_multiline_after_resume + type: assert.screen + params: + contains: "30 PRINT" + - id: dump_multiline_after_resume + type: dump.memory_ranges + params: + ranges: *state_ranges + + - id: new_and_clear_screen + type: input.sequence + params: + keys: [78,69,87,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: list_after_new + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_new_empty + type: assert.screen_not_contains + params: + not_contains: "10 PRINT" + - id: exit_after_new + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_new_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_after_new + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_new_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: clear_and_list_after_new_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_new_still_empty + type: assert.screen_not_contains + params: + not_contains: "10 PRINT" + + - id: type_variable_program + type: input.sequence + params: + keys: [49,48,32,65,61,52,50,13,50,48,32,66,36,61,34,89,79,34,13,51,48,32,68,73,77,32,88,40,50,41,13,52,48,32,88,40,49,41,61,55,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: print_variables_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,13,80,82,73,78,84,32,66,36,13,80,82,73,78,84,32,88,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_variables_before_exit + type: assert.screen + params: + contains: "YO" + - id: exit_variables + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_variables_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_variables + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_variables_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: print_variables_after_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,13,80,82,73,78,84,32,66,36,13,80,82,73,78,84,32,88,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_string_after_resume + type: assert.screen + params: + contains: "YO" + - id: assert_numeric_after_resume + type: assert.screen + params: + contains: "42" + - id: clr_then_list + type: input.sequence + params: + keys: [67,76,82,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_clr_keeps_program + type: assert.screen + params: + contains: "40 X" + + - id: new_rb_program + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,80,82,73,78,84,32,34,65,34,13,50,48,32,65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13,51,48,32,80,82,73,78,84,32,34,83,65,68,68,34,59,65,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_rb_program_output + type: assert.screen + params: + contains: "SADD 15" + - id: exit_rb_program + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_rb_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_rb_program + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_rb_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: list_rb_after_resume + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_rb_line_after_resume + type: assert.screen + params: + contains: "20 A%=ZADD16" + - id: dump_final_state + type: dump.memory_ranges + params: + ranges: *state_ranges diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_state_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_state_probe.regular.yaml new file mode 100644 index 0000000..926c839 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readybasic_state_probe.regular.yaml @@ -0,0 +1,335 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_state_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5l-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_prompt + - id: dump_initial_state + type: dump.memory_ranges + params: + ranges: &state_ranges + - { label: basic_zp_002b, start: 0x002B, end: 0x003F } + - { label: chrget_0073, start: 0x0073, end: 0x008A } + - { label: stack_0100, start: 0x0100, end: 0x01FF } + - { label: basic_text_1200, start: 0x1200, end: 0x1300 } + - { label: runtime_9500, start: 0x9500, end: 0x9A00 } + - { label: bridge_c000, start: 0xC000, end: 0xC5FF } + - { label: screen_0400, start: 0x0400, end: 0x07E7 } + + - id: direct_string_assignment + type: input.sequence + params: + keys: [78,69,87,13,65,36,61,34,72,69,76,76,79,34,13,80,82,73,78,84,32,65,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_direct_string_before_exit + type: assert.screen + params: + contains: "HELLO" + - id: dump_direct_string_before_exit + type: dump.memory_ranges + params: + ranges: *state_ranges + - id: exit_direct_string + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_direct_string_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_direct_string + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_direct_string_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: print_direct_string_after_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,36,43,34,33,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_direct_string_after_resume + type: assert.screen + params: + contains: "HELLO!" + - id: allocate_second_direct_string + type: input.sequence + params: + keys: [66,36,61,34,87,79,82,76,68,34,13,80,82,73,78,84,32,65,36,43,34,50,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_direct_string_after_second_allocation + type: assert.screen + params: + contains: "HELLO2" + - id: dump_direct_string_after_resume + type: dump.memory_ranges + params: + ranges: *state_ranges + - id: reset_after_direct_string_case + type: input.sequence + params: + keys: [78,69,87,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + + - id: type_multiline_program + type: input.sequence + params: + keys: [49,48,32,80,82,73,78,84,32,34,72,69,76,76,79,34,13,50,48,32,80,82,73,78,84,32,34,66,34,13,51,48,32,80,82,73,78,84,32,34,67,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.5 + - id: list_multiline_before_exit + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_multiline_before_exit + type: assert.screen + params: + contains: "30 PRINT" + - id: exit_multiline + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_multiline_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_multiline + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_multiline_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: list_multiline_after_resume + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: capture_multiline_after_resume + type: screen.capture + params: + label: multiline_after_resume + - id: assert_multiline_after_resume + type: assert.screen + params: + contains: "30 PRINT" + - id: dump_multiline_after_resume + type: dump.memory_ranges + params: + ranges: *state_ranges + + - id: new_and_clear_screen + type: input.sequence + params: + keys: [78,69,87,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: list_after_new + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_new_empty + type: assert.screen_not_contains + params: + not_contains: "10 PRINT" + - id: exit_after_new + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_new_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_after_new + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_new_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: clear_and_list_after_new_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_new_still_empty + type: assert.screen_not_contains + params: + not_contains: "10 PRINT" + + - id: type_variable_program + type: input.sequence + params: + keys: [49,48,32,65,61,52,50,13,50,48,32,66,36,61,34,89,79,34,13,51,48,32,68,73,77,32,88,40,50,41,13,52,48,32,88,40,49,41,61,55,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: print_variables_before_exit + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,13,80,82,73,78,84,32,66,36,13,80,82,73,78,84,32,88,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_variables_before_exit + type: assert.screen + params: + contains: "YO" + - id: exit_variables + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_variables_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_variables + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_variables_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: print_variables_after_resume + type: input.sequence + params: + keys: [80,82,73,78,84,32,65,13,80,82,73,78,84,32,66,36,13,80,82,73,78,84,32,88,40,49,41,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_string_after_resume + type: assert.screen + params: + contains: "YO" + - id: assert_numeric_after_resume + type: assert.screen + params: + contains: "42" + - id: clr_then_list + type: input.sequence + params: + keys: [67,76,82,13,80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_clr_keeps_program + type: assert.screen + params: + contains: "40 X" + + - id: new_rb_program + type: input.sequence + params: + keys: [78,69,87,13,49,48,32,80,82,73,78,84,32,34,65,34,13,50,48,32,65,37,61,90,65,68,68,49,54,40,53,44,49,48,41,13,51,48,32,80,82,73,78,84,32,34,83,65,68,68,34,59,65,37,13,82,85,78,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: assert_rb_program_output + type: assert.screen + params: + contains: "SADD 15" + - id: exit_rb_program + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_rb_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: resume_rb_program + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.03 + post_delay_s: 2.0 + - id: wait_prompt_after_rb_resume + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 30 + - id: list_rb_after_resume + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_rb_line_after_resume + type: assert.screen + params: + contains: "20 A%=ZADD16" + - id: dump_final_state + type: dump.memory_ranges + params: + ranges: *state_ranges diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64 b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64 new file mode 100644 index 0000000..da92db2 Binary files /dev/null and b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64 differ diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.easyflash.yaml new file mode 100644 index 0000000..eaa3bd0 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.easyflash.yaml @@ -0,0 +1,204 @@ +version: 1 +kind: vice_task_plan +plan_id: readyshell_cross_app_resume_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 240 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 240 + capture_label: easyflash_editor_launcher + - id: easyflash_start_editor + type: input.sequence + params: + keys: [13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_editor_initial + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 180 + capture_label: editor_initial + - id: editor_touch_1 + type: input.sequence + params: + keys: [82,69,65,68,89,83,72,69,76,76,32,80,82,79,66,69,32,69,68,73,84,79,82,32,76,69,71,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.8 + - id: ctrl_b_editor_to_launcher_1 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_1 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_from_editor_1 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_from_editor_1 + - id: readybasic_touch_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,82,66,79,75,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.8 + - id: assert_readybasic_touch_1 + type: assert.screen + params: + contains: "RBOK" + - id: exit_readybasic_1 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.0 + - id: wait_launcher_after_readybasic_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_1 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_after_readybasic_1 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_after_readybasic_1 + - id: ctrl_b_editor_to_launcher_before_readyshell_1 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_before_readyshell_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readyshell_1 + type: input.sequence + params: + keys: [17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readyshell_loaded_from_editor_1 + type: screen.wait_contains + params: + text: "run: cat" + wait_timeout_s: 90 + capture_label: readyshell_from_editor_1 + - id: readyshell_ver_from_editor_1 + type: input.sequence + params: + keys: [86,69,82,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.0 + - id: assert_readyshell_ver_from_editor_1 + type: assert.screen + params: + contains: "version 0.2" + - id: readyshell_lst_from_editor_1 + type: input.sequence + params: + keys: [76,83,84,32,34,82,83,72,69,76,80,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 2.0 + - id: wait_readyshell_lst_result_from_editor_1 + type: screen.wait_contains + params: + text: "BLOCKS" + wait_timeout_s: 60 + - id: readyshell_ver_after_lst_from_editor_1 + type: input.sequence + params: + keys: [86,69,82,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.0 + - id: assert_readyshell_ver_after_lst_from_editor_1 + type: assert.screen + params: + contains: "version 0.2" + - id: readyshell_cat_from_editor_1 + type: input.sequence + params: + keys: [67,65,84,32,34,82,83,72,69,76,80,34,32,33,32,84,79,80,32,49,13] + inter_key_delay_s: 0.035 + post_delay_s: 2.0 + - id: capture_readyshell_cat_from_editor_1 + type: screen.capture + params: + label: readyshell_cat_from_editor_1 + - id: wait_readyshell_cat_result_from_editor_1 + type: screen.wait_contains + params: + text: "readyshell quick ref" + wait_timeout_s: 60 + - id: readyshell_ver_after_cat_from_editor_1 + type: input.sequence + params: + keys: [86,69,82,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.0 + - id: assert_readyshell_ver_after_cat_from_editor_1 + type: assert.screen + params: + contains: "version 0.2" + - id: dump_final_state + type: dump.memory_ranges + params: + ranges: + - { label: launcher_shim_c800, start: 0xC800, end: 0xCA00 } + - { label: app_work_1000, start: 0x1000, end: 0x1800 } + - { label: upper_app_a000, start: 0xA000, end: 0xC600 } diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.regular.yaml new file mode 100644 index 0000000..cc1a63d --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.regular.yaml @@ -0,0 +1,189 @@ +version: 1 +kind: vice_task_plan +plan_id: readyshell_cross_app_resume_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 240 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4-d81.d81" + disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4-d81.d81" + autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_editor_initial + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 180 + capture_label: editor_initial + - id: editor_touch_1 + type: input.sequence + params: + keys: [82,69,65,68,89,83,72,69,76,76,32,80,82,79,66,69,32,69,68,73,84,79,82,32,76,69,71,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.8 + - id: ctrl_b_editor_to_launcher_1 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readybasic_1 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_from_editor_1 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_from_editor_1 + - id: readybasic_touch_1 + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,82,66,79,75,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 0.8 + - id: assert_readybasic_touch_1 + type: assert.screen + params: + contains: "RBOK" + - id: exit_readybasic_1 + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.0 + - id: wait_launcher_after_readybasic_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_readybasic_to_editor_1 + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_after_readybasic_1 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_after_readybasic_1 + - id: ctrl_b_editor_to_launcher_before_readyshell_1 + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor_before_readyshell_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + - id: move_editor_to_readyshell_1 + type: input.sequence + params: + keys: [17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readyshell_loaded_from_editor_1 + type: screen.wait_contains + params: + text: "run: cat" + wait_timeout_s: 90 + capture_label: readyshell_from_editor_1 + - id: readyshell_ver_from_editor_1 + type: input.sequence + params: + keys: [86,69,82,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.0 + - id: assert_readyshell_ver_from_editor_1 + type: assert.screen + params: + contains: "version 0.2" + - id: readyshell_lst_from_editor_1 + type: input.sequence + params: + keys: [76,83,84,32,34,82,83,72,69,76,80,34,13] + inter_key_delay_s: 0.035 + post_delay_s: 2.0 + - id: wait_readyshell_lst_result_from_editor_1 + type: screen.wait_contains + params: + text: "BLOCKS" + wait_timeout_s: 60 + - id: readyshell_ver_after_lst_from_editor_1 + type: input.sequence + params: + keys: [86,69,82,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.0 + - id: assert_readyshell_ver_after_lst_from_editor_1 + type: assert.screen + params: + contains: "version 0.2" + - id: readyshell_cat_from_editor_1 + type: input.sequence + params: + keys: [67,65,84,32,34,82,83,72,69,76,80,34,32,33,32,84,79,80,32,49,13] + inter_key_delay_s: 0.035 + post_delay_s: 2.0 + - id: capture_readyshell_cat_from_editor_1 + type: screen.capture + params: + label: readyshell_cat_from_editor_1 + - id: wait_readyshell_cat_result_from_editor_1 + type: screen.wait_contains + params: + text: "readyshell quick ref" + wait_timeout_s: 60 + - id: readyshell_ver_after_cat_from_editor_1 + type: input.sequence + params: + keys: [86,69,82,13] + inter_key_delay_s: 0.035 + post_delay_s: 1.0 + - id: assert_readyshell_ver_after_cat_from_editor_1 + type: assert.screen + params: + contains: "version 0.2" + - id: dump_final_state + type: dump.memory_ranges + params: + ranges: + - { label: launcher_shim_c800, start: 0xC800, end: 0xCA00 } + - { label: app_work_1000, start: 0x1000, end: 0x1800 } + - { label: upper_app_a000, start: 0xA000, end: 0xC600 } diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f2_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f2_probe.easyflash.yaml new file mode 100644 index 0000000..9dba2b7 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f2_probe.easyflash.yaml @@ -0,0 +1,68 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_f2_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_hotkey_probe/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 240 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_f2_prompt + - id: f2_to_next_loaded_app + type: input.sequence + params: + keys: [80,79,75,69,32,52,57,53,51,49,44,49,51,55,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: wait_target_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f2 diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f2_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f2_probe.regular.yaml new file mode 100644 index 0000000..24e3a0a --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f2_probe.regular.yaml @@ -0,0 +1,53 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_f2_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5j-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5j-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5j-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_f2_prompt + - id: f2_to_next_loaded_app + type: input.sequence + params: + keys: [80,79,75,69,32,52,57,53,51,49,44,49,51,55,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: wait_target_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f2 diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f4_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f4_probe.easyflash.yaml new file mode 100644 index 0000000..6e505aa --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f4_probe.easyflash.yaml @@ -0,0 +1,138 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_hotkey_probe/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 240 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_prompt + - id: seed_readybasic_state + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,72,79,84,34,13,80,82,73,78,84,32,34,72,79,84,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_seed_state + type: assert.screen + params: + contains: "HOTSEED 321 :HOT" + - id: ctrl_b_from_readybasic + type: input.sequence + params: + # input.sequence pokes the KERNAL keyboard buffer, so it cannot emulate + # the physical KEYLOG hook. POKE the same pending action byte KEYLOG sets, + # then send a blank Return to unwind the BASIC editor. + keys: [80,79,75,69,32,52,57,53,51,49,44,50,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: launcher_after_readybasic_ctrl_b + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_loaded_for_hotkey_probe + - id: ctrl_b_from_editor + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic_for_f4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_for_f4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_before_f4 + - id: assert_readybasic_state_after_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,79,84,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_hot_state_after_ctrl_b + type: assert.screen + params: + contains: "HOTSTATE 321 :HOT" + - id: f4_to_prev_loaded_app + type: input.sequence + params: + keys: [80,79,75,69,32,52,57,53,51,49,44,49,51,56,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: wait_target_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f4 diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f4_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f4_probe.regular.yaml new file mode 100644 index 0000000..8ae4998 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_f4_probe.regular.yaml @@ -0,0 +1,123 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5j-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5j-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5j-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_prompt + - id: seed_readybasic_state + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,72,79,84,34,13,80,82,73,78,84,32,34,72,79,84,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_seed_state + type: assert.screen + params: + contains: "HOTSEED 321 :HOT" + - id: ctrl_b_from_readybasic + type: input.sequence + params: + # input.sequence pokes the KERNAL keyboard buffer, so it cannot emulate + # the physical KEYLOG hook. POKE the same pending action byte KEYLOG sets, + # then send a blank Return to unwind the BASIC editor. + keys: [80,79,75,69,32,52,57,53,51,49,44,50,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: launcher_after_readybasic_ctrl_b + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_loaded_for_hotkey_probe + - id: ctrl_b_from_editor + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic_for_f4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_for_f4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_before_f4 + - id: assert_readybasic_state_after_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,79,84,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_hot_state_after_ctrl_b + type: assert.screen + params: + contains: "HOTSTATE 321 :HOT" + - id: f4_to_prev_loaded_app + type: input.sequence + params: + keys: [80,79,75,69,32,52,57,53,51,49,44,49,51,56,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: wait_target_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f4 diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_probe.easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_probe.easyflash.yaml new file mode 100644 index 0000000..18e9ac6 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_probe.easyflash.yaml @@ -0,0 +1,174 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_hotkey_probe/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 240 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_prompt + - id: seed_readybasic_state + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,72,79,84,34,13,80,82,73,78,84,32,34,72,79,84,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_seed_state + type: assert.screen + params: + contains: "HOTSEED 321 :HOT" + - id: ctrl_b_from_readybasic + type: input.sequence + params: + # input.sequence pokes the KERNAL keyboard buffer, so it cannot emulate + # the physical KEYLOG hook. POKE the same pending action byte KEYLOG sets, + # then send a blank Return to unwind the BASIC editor. + keys: [80,79,75,69,32,52,57,53,51,49,44,50,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: launcher_after_readybasic_ctrl_b + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_loaded_for_hotkey_probe + - id: ctrl_b_from_editor + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic_for_f4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_for_f4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_before_f4 + - id: assert_readybasic_state_after_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,79,84,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_hot_state_after_ctrl_b + type: assert.screen + params: + contains: "HOTSTATE 321 :HOT" + - id: f4_to_prev_loaded_app + type: input.sequence + params: + keys: [80,79,75,69,32,52,57,53,51,49,44,49,51,56,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: wait_target_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f4 + - id: relaunch_easyflash_for_f2 + type: vice.launch + params: + kill_stale: true + - id: wait_easyflash_launcher_for_f2 + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 240 + capture_label: easyflash_readybasic_launcher_for_f2 + - id: start_readybasic_for_f2 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_resume_for_f2 + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_resume_before_f2 + - id: f2_to_next_loaded_app + type: input.sequence + params: + keys: [80,79,75,69,32,52,57,53,51,49,44,49,51,55,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: wait_target_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f2 diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_probe.regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_probe.regular.yaml new file mode 100644 index 0000000..b02df9c --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readybasic_hotkey_probe.regular.yaml @@ -0,0 +1,159 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5j-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5j-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5j-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_prompt + - id: seed_readybasic_state + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,72,79,84,34,13,80,82,73,78,84,32,34,72,79,84,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_seed_state + type: assert.screen + params: + contains: "HOTSEED 321 :HOT" + - id: ctrl_b_from_readybasic + type: input.sequence + params: + # input.sequence pokes the KERNAL keyboard buffer, so it cannot emulate + # the physical KEYLOG hook. POKE the same pending action byte KEYLOG sets, + # then send a blank Return to unwind the BASIC editor. + keys: [80,79,75,69,32,52,57,53,51,49,44,50,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: launcher_after_readybasic_ctrl_b + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_loaded_for_hotkey_probe + - id: ctrl_b_from_editor + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic_for_f4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_for_f4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_before_f4 + - id: assert_readybasic_state_after_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,79,84,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_hot_state_after_ctrl_b + type: assert.screen + params: + contains: "HOTSTATE 321 :HOT" + - id: f4_to_prev_loaded_app + type: input.sequence + params: + keys: [80,79,75,69,32,52,57,53,51,49,44,49,51,56,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: wait_target_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f4 + - id: relaunch_easyflash_for_f2 + type: vice.launch + params: + kill_stale: true + - id: wait_easyflash_launcher_for_f2 + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 240 + capture_label: easyflash_readybasic_launcher_for_f2 + - id: start_readybasic_for_f2 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_resume_for_f2 + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_resume_before_f2 + - id: f2_to_next_loaded_app + type: input.sequence + params: + keys: [80,79,75,69,32,52,57,53,51,49,44,49,51,55,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: wait_target_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f2 diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readyos_data.easyflash-vice.d64 b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readyos_data.easyflash-vice.d64 new file mode 100644 index 0000000..61aa86d Binary files /dev/null and b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_hotkey_probe/readyos_data.easyflash-vice.d64 differ diff --git a/agentworking/easyflash_launcher_probes/easyflash_readybasic_from_launcher.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_launcher_probes/easyflash_readybasic_from_launcher.yaml similarity index 100% rename from agentworking/easyflash_launcher_probes/easyflash_readybasic_from_launcher.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_launcher_probes/easyflash_readybasic_from_launcher.yaml diff --git a/agentworking/easyflash_launcher_probes/easyflash_readyshell_from_launcher.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_launcher_probes/easyflash_readyshell_from_launcher.yaml similarity index 100% rename from agentworking/easyflash_launcher_probes/easyflash_readyshell_from_launcher.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_launcher_probes/easyflash_readyshell_from_launcher.yaml diff --git a/agentworking/easyflash_vice_suite_refactor_notes.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_vice_suite_refactor_notes.md similarity index 100% rename from agentworking/easyflash_vice_suite_refactor_notes.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/easyflash_vice_suite_refactor_notes.md diff --git a/agentworking/launcher_current_reu_map.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_current_reu_map.png similarity index 100% rename from agentworking/launcher_current_reu_map.png rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_current_reu_map.png diff --git a/agentworking/launcher_reu_slot_headroom_after.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_reu_slot_headroom_after.json similarity index 100% rename from agentworking/launcher_reu_slot_headroom_after.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_reu_slot_headroom_after.json diff --git a/agentworking/launcher_reu_slot_headroom_after_regular.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_reu_slot_headroom_after_regular.json similarity index 100% rename from agentworking/launcher_reu_slot_headroom_after_regular.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_reu_slot_headroom_after_regular.json diff --git a/agentworking/launcher_reu_slot_headroom_before.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_reu_slot_headroom_before.json similarity index 100% rename from agentworking/launcher_reu_slot_headroom_before.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_reu_slot_headroom_before.json diff --git a/agentworking/launcher_reu_slot_headroom_before_regular.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_reu_slot_headroom_before_regular.json similarity index 100% rename from agentworking/launcher_reu_slot_headroom_before_regular.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_reu_slot_headroom_before_regular.json diff --git a/agentworking/launcher_screenshot_easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_screenshot_easyflash.yaml similarity index 100% rename from agentworking/launcher_screenshot_easyflash.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/launcher_screenshot_easyflash.yaml diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/launchers/launch_regular_d81_fast.command b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/launchers/launch_regular_d81_fast.command new file mode 100755 index 0000000..575dad1 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/launchers/launch_regular_d81_fast.command @@ -0,0 +1,3 @@ +#!/bin/bash +cd /Users/karlprosserpp/dev/c64projects/readyosprecog || exit 1 +exec ./run.sh --profile precog-d81 --vice-fast diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/PLAN.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/PLAN.md new file mode 100644 index 0000000..7cb184a --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/PLAN.md @@ -0,0 +1,111 @@ +# ReadyBASIC Hotkey Timing Fix Plan + +## Objective + +Make ReadyBASIC honor `Ctrl+B`, `F2`, and `F4` immediately when pressed at the prompt, after/during `LIST`, and across app round trips. The fix must call the same suspend/yield/switch machinery used by `EXIT` without injecting the text command `EXIT`. + +## Non-Negotiable Acceptance Criteria + +- No hotkey may be delayed until a later command, `LIST`, or Return. +- No hotkey byte may remain in `KEYD_COUNT` / `KEYD_BUFFER`. +- `Ctrl+B` from ReadyBASIC returns to launcher. +- `F2` and `F4` from ReadyBASIC switch to the expected loaded apps. +- Round trips through at least Editor and one non-editor app preserve behavior. +- Hotkeys remain disabled during actual BASIC program execution, but work during prompt editing and `LIST` output. +- Empty BASIC free bytes do not regress. +- Visible resident code does not overlap `$2AC0` / `$2AC1`. +- `$A000-$A7FF` helper budget deltas are measured and documented. +- Focused key-path tests pass before full regular and EasyFlash suites are run. + +## Current Lessons + +- Poking `rb_hotkey_pending` proves only the yield plumbing. It is not a hotkey test. +- Poking `$0277/$00C6` proves only artificial keyboard-buffer behavior. It is not the same as the existing app automation path. +- VICE `input.sequence` with `keys: [2]`, `[137]`, and `[138]` is already a valid control path because other app tests use it successfully for `Ctrl+B`, `F2`, and `F4`. +- The focused proof must compare ReadyBASIC against a known-good app in the same run: same image, same app-entry delay, same key bytes. If Editor/another app switches and ReadyBASIC does not, ReadyBASIC is broken. +- GUI/host-key injection is not the primary proof path. It can stay optional/manual only if needed later. +- Injecting `EXIT` is semantically wrong; hotkeys must call the internal suspend/yield/switch path directly. + +## Implementation Plan + +1. Stabilize the worktree. + - Preserve existing user/generated changes. + - Remove any temporary debug writes and failed diagnostic markers. + - Keep or replace harness changes only if they become part of the verified key-path proof. + - Record the exact starting diff and map in `agentworking/readybasic_hotkeys_fix/notes.md`. + +2. Build the correct ReadyBASIC hotkey service. + - Add one shared service routine for `Ctrl+B`, `F2`, and `F4`. + - The service drains `KEYD_COUNT` and clears any hotkey bytes in `$0277`. + - `Ctrl+B` calls the internal ready/exit yield path directly, not `EXIT` text injection. + - `F2`/`F4` call the hidden app selection helpers, then the normal shim switch path. + - Keep all final routines within the existing resident/hidden/bridge contracts. + +3. Choose safe polling points. + - First trace where the existing VICE app hotkey bytes enter ReadyBASIC: + - prompt input, + - KERNAL GETIN vector, + - KERNAL CHRIN vector, + - IRQ/CINV buffered key path, + - LIST output path. + - Service the hotkey at the first safe point that actually sees the same bytes other apps receive: + - prompt input / GETIN / CHRIN path, + - ReadyBASIC execute vector before ordinary statement dispatch, + - LIST/vector path if LIST bypasses the prompt input path. + - Do not depend on Return, `LIST`, or a later command to notice the pending action. + - Preserve the “disabled during actual RUN” guard with an explicit runtime-state check, not a prompt-only `TXTPTR < BASIC_START` check that breaks LIST. + +4. Add A/B VICE automation using the established app hotkey path. + - Use `input.sequence`, not `memory.write`, for accepted hotkey proof. + - Use the same byte values existing app automation uses: + - `Ctrl+B`: `keys: [2]` + - `F2`: `keys: [137]` + - `F4`: `keys: [138]` + - In one focused run, first enter Editor and one non-editor app, wait a couple seconds after app entry, then prove `Ctrl+B`, `F2`, and `F4` switch immediately there. + - Enter ReadyBASIC with the same pause and send the same hotkey bytes. ReadyBASIC must behave the same way. + - If the control apps pass and ReadyBASIC fails, treat that as conclusive ReadyBASIC failure, not a harness failure. + +5. Replace the focused ReadyBASIC hotkey probe. + - Remove `POKE rb_hotkey_pending` and `$0277/$00C6` hotkey simulation from acceptance tests. + - Use the same `input.sequence` key steps proven by the control app phase. + - Exercise: + - ReadyBASIC prompt -> `Ctrl+B` -> launcher. + - Launcher -> Editor -> launcher -> ReadyBASIC -> `Ctrl+B` again. + - ReadyBASIC `LIST` active/just completed -> `F4` -> previous app. + - Return to ReadyBASIC -> `F2` -> next app. + - Repeat with at least one non-editor app. + - After each hotkey transition assert: + - expected screen/app, + - `KEYD_COUNT == 0`, + - `$0277` does not contain `2`, `137`, or `138`, + - `rb_hotkey_pending == 0`, + - no delayed switch occurs after a harmless command such as `PRINT "QUEUEOK"` or `LIST`. + +6. Add negative RUN coverage. + - Start a BASIC program that loops or prints. + - Press `Ctrl+B`, `F2`, and `F4`. + - Assert no app switch occurs during actual program execution. + - Stop/return to prompt and assert hotkeys work again. + +7. Memory and size checks. + - Run `make readybasic-plugin-static-check`. + - Run `make readybasic-memory-report`. + - Record before/after map lines for `ENTRY`, `RESIDENT`, `HIDDEN`, `BRIDGE`. + - Record empty BASIC free bytes. + - Confirm resident end remains below `$2AC0`. + - Document any `$A000-$A7FF` delta. + +8. Full verification sequence. + - Focused matrix-smoke VICE test. + - Focused ReadyBASIC hotkey timing probe. + - `make readybasic-plugin-static-check`. + - `make readybasic-memory-report`. + - `make readybasic-vice-suites`. + - `make easyflash-readybasic-vice-suites`. + - Record every run directory in `agentworking/readybasic_hotkeys_fix/notes.md`. + +## Stop Conditions + +- Do not run full suites until the real key-path focused probe passes. +- Do not declare success if the test uses `POKE rb_hotkey_pending`, `$0277/$00C6`, or `EXIT` injection as the final proof. +- If VICE cannot automate real matrix key states locally, produce a clear blocked result with the matrix-smoke fixture evidence and keep the code changes out of “accepted” status. diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/hotkey_regular.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/hotkey_regular.yaml new file mode 100644 index 0000000..55fa33f --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/hotkey_regular.yaml @@ -0,0 +1,166 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5m-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5m-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5m-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_prompt + - id: assert_keyboard_state_not_vector_clobbered + type: assert.memory + params: + start: 788 + end: 789 + equals_hex: "07 01" + - id: seed_readybasic_state + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,72,79,84,34,13,80,82,73,78,84,32,34,72,79,84,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_seed_state + type: assert.screen + params: + contains: "HOTSEED 321 :HOT" + - id: ctrl_b_from_readybasic + type: input.sequence + params: + # input.sequence pokes the KERNAL keyboard buffer, so it cannot emulate + # physical matrix timing. Assert CINV above, then POKE the same pending + # action byte the IRQ hook sets and send Return to unwind the editor. + keys: [80,79,75,69,32,52,57,53,51,49,44,50,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: launcher_after_readybasic_ctrl_b + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_loaded_for_hotkey_probe + - id: ctrl_b_from_editor + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic_for_f4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_for_f4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_before_f4 + - id: assert_readybasic_state_after_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,79,84,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_hot_state_after_ctrl_b + type: assert.screen + params: + contains: "HOTSTATE 321 :HOT" + - id: f4_to_prev_loaded_app + type: input.sequence + params: + keys: [80,79,75,69,32,52,57,53,51,49,44,49,51,56,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: wait_target_after_f4 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f4 + - id: ctrl_b_from_f4_target + type: input.sequence + params: + keys: [2] + inter_key_delay_s: 0.03 + post_delay_s: 1.0 + - id: wait_launcher_after_f4_target + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic_for_f2 + type: input.sequence + params: + # F4 switched ReadyBASIC directly to another app, so the launcher's saved + # selection remains ReadyBASIC when that app returns via CTRL+B. + keys: [13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_resume_for_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_before_f2 + - id: f2_to_next_loaded_app + type: input.sequence + params: + keys: [80,79,75,69,32,52,57,53,51,49,44,49,51,55,13,13] + inter_key_delay_s: 0.03 + post_delay_s: 1.5 + - id: wait_target_after_f2 + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f2 diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/notes.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/notes.md new file mode 100644 index 0000000..a5bf3d0 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/notes.md @@ -0,0 +1,188 @@ +# ReadyBASIC Hotkey Re-entry Scratch + +## 2026-06-10 field failure to reproduce + +- Rebuilt regular D81 still reports `0.2.5F`, but manual testing does not match the previous passing probes. +- Entering another app and pressing F2 back into ReadyBASIC can leave the READY prompt blinking while typed letters, F2, and Ctrl+B are ignored. +- A multi-hop chain can lock on the second F2; Ctrl+B may still return to the launcher from some states. +- Typed `EXIT` after some re-entry paths can return to the launcher and then automatically re-enter ReadyBASIC, which means pending keyboard/editor state is not clean enough at yield. +- The previous `readybasic_reuviewer_f2_chain_probe` rewrote `$C836-$C838` to only ReadyBASIC and REU Viewer before exercising F2. That can hide real app/resource bitmap selection failures and does not prove the full manual path. + +## Current acceptance bar + +- Prove ReadyBASIC remains keyboard-live after F2 from another ReadyOS app back into ReadyBASIC. +- Prove ReadyBASIC F2/F4/Ctrl+B work after multiple ReadyBASIC app exits and re-entries. +- Prove typed `EXIT` returns to the launcher and stays there until an explicit new selection. +- Cover the same path in regular D81 and EasyFlash ReadyBASIC suites, without changing other apps or the shim unless the repro proves the contract itself is broken. +- Keep the ReadyOS memory contract: no BASIC-start movement, no `$C800-$C9FF` assumptions beyond shim ABI, and no expansion into normal BASIC RAM. + +## 2026-06-10 implementation notes + +- Historical note: this pass used CINV `$0314/$0315` plus KEYLOG `$028F/$0290` and queued a visible `REM` line. The 2026-06-11 keyboard-regression pass below supersedes that design. +- The earlier CINV path directly scanned CIA1 only for Ctrl+B, Shift+F1/F2, and Shift+F3/F4, restored the CIA scan-port state, recorded `rb_hotkey_pending`, and queued `REM` plus Return so BASIC reached the execute hook normally. +- KEYLOG caught KERNAL-decoded special-key cases, consumed the key state, and preserved the CIA port state. +- Every ReadyBASIC yield path clears `rb_hotkey_pending`, `$C6`, `$0277`, `SHFLAG`, `LSTX`, and `SFDX`; typed `EXIT` and Ctrl+B set the launcher suppress-startup flag so run-first configs do not auto-reenter ReadyBASIC. +- F2/F4 store the selected target bank in `rb_hotkey_target_bank` before `prepare_shim_yield`, then write `$C820` only after hidden save, `CLRCHN`, and vector restore. +- Double-switch follow-up: cold/warm entry now scans the physical matrix and quarantines any still-held ReadyBASIC hotkey until release. Prompt hotkey yield waits for the selected chord to release with a jiffy-clock timeout, then clears editor/KERNAL key state again. +- The loaded-app scan uses the shim bitmap plus the control-bank app registry so ReadyBASIC resource/code banks do not look like app-switch targets. +- Hidden helper warm restore comes from the assigned ReadyBASIC core bank shadow at `$3000`, not from a visible `$C280` shadow. + +## 2026-06-10 harness rules + +- Cold/first ReadyBASIC entry may wait for the `READYBASIC` title. +- Warm entries must not rely on the title being present. The chain probe uses a small delay plus `ready.`, then proves the state with `$C834`, ReadyBASIC CHRIN/KEYLOG vectors, empty keyboard buffer, and an actual typed `PRINT` sentinel. +- The boot screen can contain `ready.` text; do not use `ready.` as the only proof of ReadyBASIC entry. +- In app context, VICE Binary `input.sequence` for Ctrl+B can drain `$C6` without exercising the app hotkey path. The focused chain uses monitor `keybuf \x02` for app Ctrl+B and normal function-key input for app F2. +- Host-key mode is useful for manual-like proof but can fail on macOS automation permissions (`osascript is not allowed to send keystrokes`) independent of ReadyBASIC. + +## 2026-06-11 keyboard regression implementation notes + +- ReadyBASIC now owns prompt hotkeys only while the ROM editor is inside ReadyBASIC's CHRIN hook, input is from the keyboard, and BASIC is at a direct prompt. +- KEYLOG `$028F/$0290` records Ctrl+B/F2/F4, consumes `SHFLAG`/`SFDX`, and queues only Return. It does not inject command text. +- CHRIN `$0324/$0325` wraps original CHRIN, preserves ordinary `A` and status flags, then dispatches a pending hotkey before BASIC can store or execute a partial prompt line. +- The hotkey gate should follow `TXTPTR < BASIC_START`, not `CURLIN`, so partially typed prompt lines stay eligible while RUN-mode input still stays out of scope. +- The CINV/IRQ matrix scanner is not installed for prompt hotkeys. Ordinary typing, repeat timing, cursor state, and space handling remain owned by the ROM editor. +- READY-mode hotkey yields force saved `RUNTIME_SP` to `$F8` instead of preserving transient CHRIN/editor stack depth. +- Entry-time hotkey quarantine and yield-time release waits remain: cold/warm entry clears editor state and suppresses a still-held ReadyOS hotkey until release; accepted Ctrl+B/F2/F4 waits for the selected chord to release before yielding. +- Focused regression coverage now includes `10`+Ctrl+B and `20`+F2 without storing partial lines, absence of visible `REM`, warp-mode single-space typing, normal typing after reentry, and app liveness after switch. The cartridge regression probe should keep the partial-line F2 case as a first-class check until it passes cleanly on both regular and EasyFlash builds. + +## Current memory/headroom + +- `BASIC_START` remains `$2AC1`; empty BASIC free bytes remain `30013`. +- `ENTRY` is `$1000-$11FF`, `$0200` / 512B. +- `RESIDENT` is `$1200-$2ABD`, `$18BE` / 6334B, leaving 2B before the `$2ABF` resident budget end and the `$2AC0` sentinel. +- `HIDDEN` is `$A000-$A6E9`, `$06EA` / 1770B, leaving `$0116` / 278B in the 2K common helper area. +- `BRIDGE` is `$C000-$C1FE`, `$01FF` / 511B, leaving 1B before `$C200`. +- BASIC RAM contract is unchanged; the added cost is paid in entry/helper/bridge/resident bytes, not by moving BASIC start. + +## Proof run log + +- `make readybasic-plugin-static-check readybasic-memory-report`: passed after the hotkey implementation; regenerated `docs/readybasic_memory_diagrams.html`. +- Focused regular D81 run-first chain: `/bin/bash build_support/run_readybasic_reuviewer_f2_chain_probe.sh` passed, manifest `logs/vice_auto_20260610_181217/manifest.json`, `failed_step=null`, `degraded_steps=[]`. +- Focused regular D81 keylog/monitor chain: `READYBASIC_SKIP_BUILD=1 READYBASIC_HOTKEY_INPUT_MODE=keylog /bin/bash build_support/run_readybasic_reuviewer_f2_chain_probe.sh` passed, manifest `logs/vice_auto_20260610_181305/manifest.json`. +- Focused regular D81 launcher-mode chain passed, manifest `logs/vice_auto_20260610_180903/manifest.json`. +- Focused host-key chain was environment-blocked by macOS keyboard automation permission, manifest `logs/vice_auto_20260610_181352/manifest.json`. + +## 2026-06-10 final proof run + +- `make readybasic-plugin-static-check readybasic-memory-report`: passed after the final rebuild. `verify_readybasic_plugin.py` reported `readybasic plugin static check OK`; `docs/readybasic_memory_diagrams.html` was regenerated from `obj/readybasic.map`. +- Clean regular D81 aggregate: `READYBASIC_SKIP_BUILD=1 make readybasic-vice-suites` passed. Manifest audit: all listed manifests have `status=success`, `failed_step=null`, and `degraded_steps=[]`. + - `logs/vice_auto_20260610_195856/manifest.json` - demo suite. + - `logs/vice_auto_20260610_200925/manifest.json` - repeat/label. + - `logs/vice_auto_20260610_201013/manifest.json` - lifecycle. + - `logs/vice_auto_20260610_201034/manifest.json` - module overlay. + - `logs/vice_auto_20260610_201125/manifest.json` - plugin command. + - `logs/vice_auto_20260610_201322/manifest.json` - program mode. + - `logs/vice_auto_20260610_201426/manifest.json` - rbtest1. + - `logs/vice_auto_20260610_201434/manifest.json` - state preservation. + - `logs/vice_auto_20260610_201520/manifest.json` - large vars. + - `logs/vice_auto_20260610_201557/manifest.json` - Ctrl+B/F2/F4 focused hotkey. + - `logs/vice_auto_20260610_201620/manifest.json` - ReadyBASIC/REU Viewer F2 chain. + - `logs/vice_auto_20260610_201649/manifest.json` - 10-hop cross-app resume. + - `logs/vice_auto_20260610_201904/manifest.json` - second-entry editor stress. + - `logs/vice_auto_20260610_202049/manifest.json` - full visual verification. +- Clean EasyFlash aggregate: `make easyflash-readybasic-vice-suites` rebuilt the cartridge SKU and passed. Manifest audit: all listed manifests have `status=success`, `failed_step=null`, and `degraded_steps=[]`. + - `logs/vice_auto_20260610_202900/manifest.json` - demo suite. + - `logs/vice_auto_20260610_204104/manifest.json` - repeat/label. + - `logs/vice_auto_20260610_204202/manifest.json` - lifecycle. + - `logs/vice_auto_20260610_204232/manifest.json` - module overlay. + - `logs/vice_auto_20260610_204335/manifest.json` - plugin command. + - `logs/vice_auto_20260610_204542/manifest.json` - program mode. + - `logs/vice_auto_20260610_204657/manifest.json` - rbtest1. + - `logs/vice_auto_20260610_204716/manifest.json` - minimal resume. + - `logs/vice_auto_20260610_204750/manifest.json` - screen/REU temp. + - `logs/vice_auto_20260610_204922/manifest.json` - state preservation. + - `logs/vice_auto_20260610_205019/manifest.json` - large vars. + - `logs/vice_auto_20260610_205107/manifest.json` - F4 hotkey. + - `logs/vice_auto_20260610_205136/manifest.json` - F2 hotkey. + - `logs/vice_auto_20260610_205151/manifest.json` - ReadyBASIC/REU Viewer F2 chain. + - `logs/vice_auto_20260610_205229/manifest.json` - 10-hop cross-app resume. + - `logs/vice_auto_20260610_205455/manifest.json` - second-entry editor stress. + - `logs/vice_auto_20260610_205649/manifest.json` - full visual verification. +- The chain proof now matches the field failure instead of only a cold title wait: first entry may wait for `READYBASIC`, warm entries use capture plus `$C834` app-bank checks, ReadyBASIC CHRIN/KEYLOG vector checks, `$C6==0`, and typed `PRINT` sentinels. The boot screen's `READY.` text is not accepted as sufficient proof. +- The chain proof includes: ReadyBASIC Ctrl+B, explicit reentry, ReadyBASIC Ctrl+B again, REU Viewer launch, REU Viewer F2 to ReadyBASIC, typed ReadyBASIC liveness, ReadyBASIC F2 back to REU Viewer, app vectors restored, REU Viewer Ctrl+B to launcher, ReadyBASIC reentry/liveness, typed `EXIT`, launcher stability/no auto-reenter, and final ReadyBASIC liveness. + +## 2026-06-10 final memory/headroom + +- `BASIC_START` remains `$2AC1`; empty BASIC formula free bytes remain `30013`. +- `ENTRY` is `$1000-$11F6`, `$01F7` / 503B. +- `RESIDENT` is `$1200-$2AB8`, `$18B9` / 6329B, leaving 7B before `$2ABF` / `$2AC0`. +- `HIDDEN` is `$A000-$A6C7`, `$06C8` / 1736B, leaving `$0138` / 312B in the 2K common helper area. +- `LOWPACK` is `$A800-$AECD`, `$06CE` / 1742B. +- `SLOTPACK1` is `$B000-$B23A`, `$023B` / 571B. +- `BRIDGE` is `$C000-$C1FD`, `$01FE` / 510B, leaving 2B before `$C200`. +- The ReadyOS contract is preserved: no BASIC-start movement, no normal BASIC RAM expansion, no shim/app changes for this fix, and no ReadyBASIC private assumptions in `$C800-$C9FF` beyond the shim ABI. + +## 2026-06-11 final proof refresh + +- `make readybasic-plugin-static-check readybasic-memory-report`: passed; `verify_readybasic_plugin.py` reported `readybasic plugin static check OK`; `docs/readybasic_memory_diagrams.html` was regenerated from `obj/readybasic.map`. +- Regular D81 focused chain: + - `/bin/bash build_support/run_readybasic_reuviewer_f2_chain_probe.sh` passed, manifest `logs/vice_auto_20260611_002202/manifest.json`. + - `READYBASIC_HOTKEY_INPUT_MODE=keylog /bin/bash build_support/run_readybasic_reuviewer_f2_chain_probe.sh` passed, manifest `logs/vice_auto_20260611_002247/manifest.json`. +- Regular D81 aggregate: `make readybasic-vice-suites` passed. Manifest audit for `002428`, `003503`, `003556`, `003621`, `003719`, `003921`, `004030`, `004045`, `004136`, `004219`, `004254`, `004334`, `004555`, and `004745` found `status=success`, `failed_step=null`, and `degraded_steps=[]` for every manifest. +- EasyFlash focused chain after launcher-navigation adaptation passed, manifest `logs/vice_auto_20260611_025528/manifest.json`. +- EasyFlash aggregate: `make easyflash-readybasic-vice-suites` rebuilt the cartridge SKU and completed. Successful final/retry manifests `025643`, `030852`, `031001`, `031041`, `031153`, `031410`, `031535`, `032434`, `032519`, `032701`, `032807`, `032906`, `032948`, `033638`, `033728`, `034003`, and `034208` all have `status=success`, `failed_step=null`, and `degraded_steps=[]`. +- EasyFlash produced two pre-app boot/preload flake manifests during the final aggregate (`031604`, `033016`), both stuck before ReadyBASIC at `READYOS EASYFLASH BOOT` / `BOOTER PRELOADING REU SNAPSHOTS`; suite retries passed with the successful manifests above. These did not exercise ReadyBASIC app code. +- EasyFlash chain generation now keeps the chain launcher-owned, with no `--start-app readybasic` wrapper. The converter adapts only the chain's first launcher navigation to the EasyFlash app order: ReadyBASIC is four cursor-downs from the top, while REU Viewer remains three down from ReadyBASIC. +- `run_easyflash_vice_suites.sh` now has configurable plan start/retry pauses (`EASYFLASH_PLAN_START_PAUSE_S`, `EASYFLASH_PLAN_RETRY_PAUSE_S`) to reduce VICE/EasyFlash cold-start flakiness without changing boot, launcher, shim, or app code. The default first-attempt pause now matches the proven 20s retry pause. + +## 2026-06-11 remaining failure to reproduce + +- The newest keyboard regression probe added partial prompt-line coverage that is stricter than the earlier focused hotkey suites. +- Latest failed run: `logs/vice_auto_20260611_153009`, plan `readybasic_keyboard_regression_probe_easyflash`, failed step `wait_editor_after_partial_f2`. +- What passed before that failure: ReadyBASIC launch, CHRIN/KEYLOG vector checks, warp-mode `PRINT "A B C"` spacing, partial-line `10` plus Ctrl+B to launcher, no visible or listed `REM`, ReadyBASIC reentry/liveness, Editor launch, and Editor Ctrl+B back to launcher. +- Remaining unresolved case: after an Editor round trip, type `20` at the ReadyBASIC prompt without Return, then press F2. Expected result is an immediate switch to Editor; latest EasyFlash automation timed out waiting for `editor`. +- Reproduction details are recorded in `agentworking/readybasic_hotkeys_fix/reproduce_remaining_failure.md`. + +## 2026-06-12 launcher-owned Editor/REU Viewer proof refresh + +- Supersedes the 2026-06-11 remaining-failure note for the regular D81 path. The root cause was prompt detection after `RUN`: BASIC could be visibly at `READY.` while `CURLIN/TXTPTR` still pointed into the just-run program, so KEYLOG rejected Ctrl+B/F2/F4. ReadyBASIC now hooks IMAIN `$0302/$0303` to mark the direct prompt active and clears that flag at execute entry. +- The focused launcher-cycle probe now uses only launcher-owned app loading and exactly these companion apps: Editor, REU Viewer, and ReadyBASIC. It does not preload ReadyBASIC and does not use ReadyShell. +- Test shape: + - Boot regular D81 to the launcher. + - Select Editor and press F3 to load it to REU. + - Return to launcher, select REU Viewer, and press F3 to load it to REU. + - Return to launcher, select ReadyBASIC, and launch it. + - Enter a one-line BASIC program, `LIST`, then run two full F2 cycles: ReadyBASIC -> Editor -> REU Viewer -> ReadyBASIC, twice, with `$C834`, `$C6`, screen text, capture, and post-delay stability assertions at every hop. + - Run two full F4 cycles: ReadyBASIC -> REU Viewer -> Editor -> ReadyBASIC, twice, with the same assertions. + - Return to ReadyBASIC, `LIST`, `RUN`, Ctrl+B to launcher, explicitly re-enter ReadyBASIC, `LIST`, `RUN`, then typed `EXIT`; assert the launcher remains stable and does not auto-reenter an app. +- Focused regular D81 result: `READYBASIC_HOTKEY_BOOT_MODE=launcher READYBASIC_HOTKEY_SCENARIO=launcher_cycle /bin/bash build_support/run_readybasic_hotkey_probe.sh` passed, manifest `logs/vice_auto_20260612_001111/manifest.json`, `status=success`, `failed_step=null`, `degraded_steps=[]`. +- Fresh focused regular D81 rerun for the Editor + REU Viewer acceptance path passed all 161 steps after a launcher-mode rebuild, manifest `logs/vice_auto_20260612_005705/manifest.json`, `status=success`, `failed_step=null`, `degraded_steps=[]`. +- Keyboard regression result: `READYBASIC_SKIP_BUILD=1 READYBASIC_KEYBOARD_BOOT_MODE=launcher /bin/bash build_support/run_readybasic_keyboard_regression_probe.sh` passed, manifest `logs/vice_auto_20260612_001321/manifest.json`, `status=success`, `failed_step=null`, `degraded_steps=[]`. This includes warp-mode single-space typing, `10`+Ctrl+B, `20`+F2, no `REM`, normal typing after reentry, and app liveness after switch. +- REU Viewer chain result after removing stale harness assumptions: `READYBASIC_SKIP_BUILD=1 /bin/bash build_support/run_readybasic_reuviewer_f2_chain_probe.sh` passed, manifest `logs/vice_auto_20260612_003840/manifest.json`. +- Remaining regular ReadyBASIC suite targets after the harness correction also passed: cross-app resume `logs/vice_auto_20260612_003938/manifest.json`, second-entry editor `logs/vice_auto_20260612_004200/manifest.json`, and full visual verification `logs/vice_auto_20260612_004350/manifest.json`. +- Static/memory guardrails: `make readybasic-plugin-static-check readybasic-memory-report` passed. Current map: `BASIC_START=$2AC1`, empty BASIC free bytes `30013`, `ENTRY=$1000-$11FF` / `$0200`, `RESIDENT=$1200-$2ABD` / `$18BE`, `HIDDEN=$A000-$A6E9` / `$06EA`, `LOWPACK=$A800-$AECD` / `$06CE`, `SLOTPACK1=$B000-$B23A` / `$023B`, `BRIDGE=$C000-$C1FE` / `$01FF`. +- Scope stayed within ReadyBASIC source, ReadyBASIC harness/docs/notes, and generated artifacts. No shim, boot, launcher, or other app source change was required for this fix. + +## 2026-06-12 should be done working checkpoint + +- Status: should be done working. This branch now has the ReadyBASIC prompt hotkeys implemented, documented, and proved by the regular and EasyFlash ReadyBASIC VICE suites. +- Final regular proof: `make readybasic-vice-suites` passed with 15 ReadyBASIC manifests, all `status=success`, `failed_step=null`, and `degraded_steps=[]`. +- Final EasyFlash proof: `make easyflash-readybasic-vice-suites` passed with 18 final ReadyBASIC manifests, all `status=success`, `failed_step=null`, and `degraded_steps=[]`. +- Final focused hotkey proof includes the launcher-owned Editor + REU Viewer + ReadyBASIC path, not ReadyShell and not a single preloaded ReadyBASIC shortcut. It loads Editor and REU Viewer, launches ReadyBASIC from the launcher, writes/lists/runs a one-line BASIC program, cycles F2 through ReadyBASIC -> Editor -> REU Viewer -> ReadyBASIC twice, cycles F4 the other direction twice, proves `$C834`, `$C6`, screen text, screenshots/captures, and delayed stability at each hop, then checks Ctrl+B, explicit reentry, `LIST`, `RUN`, and typed `EXIT` launcher stability. +- The REU Viewer chain proof covers the original manual failure family: ReadyBASIC Ctrl+B, ReadyBASIC reentry, Ctrl+B again, REU Viewer launch, REU Viewer F2 back into ReadyBASIC, ReadyBASIC keyboard liveness, ReadyBASIC F2 back to REU Viewer, REU Viewer Ctrl+B to launcher, ReadyBASIC reentry/liveness, and `EXIT` not auto-reentering ReadyBASIC. + +### Regressions and false fixes that mattered + +- Waiting for the word `READY.` alone was not a proof of ReadyBASIC readiness because boot screens and transitional screens can contain `READY.`. First entry may use the ReadyBASIC title, but warm entries and EasyFlash conversion must prove readiness with the BASIC prompt plus app-bank/vector/keyboard liveness checks. +- Waiting for the ReadyBASIC title in EasyFlash was also wrong: the title can be visible while free bytes still show `MMMM BASIC BYTES` and BASIC is not ready for typed input. The EasyFlash converted plans now wait for the actual `READY.` prompt before entering BASIC text. +- The visible `REM` deferred-dispatch path was a bad design. It could appear on screen, become part of a partial prompt line such as `10`, and lock or store unintended BASIC text. The final path queues only Return and dispatches from the CHRIN hook before BASIC stores or executes the partial line. +- A prompt-level CINV/IRQ matrix scanner was too invasive. It disturbed normal ROM-editor ownership of repeat timing and could make VICE fast/warp typing produce repeated spaces. The final design leaves ordinary key scanning/repeat/cursor editing to the ROM editor and accepts hotkeys through KEYLOG plus CHRIN only at the direct prompt. +- Treating F2/F4 as just another typed character was insufficient. F-keys and Ctrl+B live in the C64 keyboard matrix/KERNAL preprocessing path, not the normal BASIC line text stream. The final tests exercise the ReadyBASIC KEYLOG/CHRIN hotkey path through monitor/keylog stubs and app keyboard input, not by poking `rb_hotkey_pending` or typing `EXIT`. +- The selected F2/F4 target bank must survive suspend/yield preparation. The fix stores the selected bank immediately after the loaded-app scan and writes the shim switch target after `prepare_shim_yield`, instead of relying on scratch bytes that hidden save logic can reuse. +- A single F2/F4 must not be observed twice. Entry-time hotkey quarantine and yield-time release waits are required so a held key does not switch ReadyBASIC to the next app and then immediately switch again. The focused probes now assert delayed stability and `$C6==0` after every hotkey switch. +- Prompt state cannot be inferred only from `CURLIN`. After `RUN`, BASIC may visually be at `READY.` while interpreter pointers still make the prompt look like program context. The final implementation uses the IMAIN vector to mark direct-prompt readiness and clears that flag at execute entry. +- Ctrl+B/F2/F4 must be ignored while BASIC is running. The final gate is keyboard-device and direct-prompt aware, so file/device input and RUN-mode BASIC execution do not become ReadyOS navigation. +- Every ReadyBASIC yield path must scrub editor/KERNAL state: `rb_hotkey_pending`, `$C6`, `$0277`, `SHFLAG`, `LSTX`, and `SFDX`. Typed `EXIT`, Ctrl+B, F2, and F4 all need the same cleanup discipline. +- ReadyBASIC must restore global page-3 vectors before yielding to ReadyOS. Those vectors are not part of the app snapshot, so leaving CHRIN/KEYLOG/execute/crunch hooks installed can break the launcher or next app. +- Cartridge/EasyFlash app order is different from the regular D81 focused set. The cartridge F2/F4 tests should walk a few apps forward and back and assert actual screens/banks, not assume a small two- or three-app universe or try to cycle the entire preloaded cartridge list. +- EasyFlash cold preload can occasionally stall before the launcher at `READYOS EASYFLASH BOOT` / `BOOTER PRELOADING REU SNAPSHOTS`. That is a harness/VICE cold-start issue before ReadyBASIC code runs. The suite now gives launcher waits and wrapper timeouts enough budget and retries whole plans after a cold-start pause. + +### Final design rules for future BASIC extensions + +- For prompt hotkeys, do not inject command text. Consume the physical/editor hotkey, queue Return only, and make the CHRIN hook discard the editor-returned character before BASIC can store or execute a partial line. +- Keep ROM editor behavior intact. Do not install an IRQ scanner for ordinary prompt handling unless a future test proves there is no other option and then proves normal repeat/space/cursor behavior under warp. +- Treat partial prompt lines as first-class acceptance cases. `10`+Ctrl+B and `20`+F2/F4 must not create program lines, show `REM`, lock the prompt, or leave the destination app keyboard-dead. +- Prove app switching with launcher-owned multi-app journeys. Load companion apps through the launcher, switch both directions more than once, and assert no double-hop after a single F2/F4. +- For ReadyBASIC specifically, every hotkey test must prove all of: app bank `$C834`, vector ownership/restoration, empty keyboard buffer `$C6`, screen identity, delayed stability, and typed input liveness after reentry. +- Keep the memory contract visible in every final proof: `BASIC_START=$2AC1`, empty BASIC free bytes `30013`, bridge below `$C200`, no private use of `$C800-$C9FF`, and no shim/launcher/other-app changes unless a focused repro proves a contract bug outside ReadyBASIC. diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/reproduce_remaining_failure.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/reproduce_remaining_failure.md new file mode 100644 index 0000000..4f6717d --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/reproduce_remaining_failure.md @@ -0,0 +1,68 @@ +# Remaining Keyboard Regression Failure + +Status as of 2026-06-11: the focused regular and EasyFlash hotkey suites passed, but the newer keyboard regression probe still exposes one unresolved case. + +## Failure + +- Probe: `readybasic_keyboard_regression_probe_easyflash` +- Latest failed run: `logs/vice_auto_20260611_153009` +- Failed step: `wait_editor_after_partial_f2` +- Failure text: timeout waiting for screen text `editor` + +The probe proves these earlier cases before the failure: + +- ReadyBASIC launches from the EasyFlash launcher. +- ReadyBASIC CHRIN and KEYLOG vectors are installed. +- Warp-mode normal typing preserves spaces (`PRINT "A B C"`). +- A partially typed prompt line `10` plus `Ctrl+B` switches immediately to the launcher. +- No visible `REM` line is injected or later listed. +- ReadyBASIC remains usable after reentry. +- Editor can be loaded and can return to the launcher via `Ctrl+B`. + +The remaining failure is the later partial-line `F2` case after an Editor round trip: + +1. Enter ReadyBASIC from the launcher. +2. Type `20` at the ReadyBASIC prompt, without pressing Return. +3. Press `F2`. +4. Expected: immediate switch to Editor. +5. Actual in the latest automated EasyFlash run: the probe timed out waiting for `editor`. + +## Manual Regular D81 Reproduction + +The regular D81 can be launched interactively with: + +```sh +cd /Users/karlprosserpp/dev/c64projects/readyosprecog +/opt/homebrew/bin/x64sc -logtostdout -verbose -warp \ + -8 Releases/0.2.5/precog-d81/readyos-v0.2.5m-d81.d81 \ + -autostart Releases/0.2.5/precog-d81/readyos-v0.2.5m-d81-preboot.prg +``` + +Manual check: + +1. At the launcher, enter ReadyBASIC. +2. Type `10`, then press `Ctrl+B`; it should switch to the launcher immediately. +3. Reenter ReadyBASIC and run `LIST`; `REM` should not appear. +4. Switch to Editor, then back to ReadyBASIC. +5. Type `20`, then press `F2`; this is the unresolved case to test carefully. + +## Automated Reproduction + +Regular D81: + +```sh +cd /Users/karlprosserpp/dev/c64projects/readyosprecog +READYBASIC_KEYBOARD_BOOT_MODE=launcher \ +READYBASIC_KEYBOARD_LAUNCH_KEYS=17,17,17,17,13 \ +READYBASIC_SKIP_BUILD=1 \ +bash build_support/run_readybasic_keyboard_regression_probe.sh +``` + +EasyFlash: + +```sh +cd /Users/karlprosserpp/dev/c64projects/readyosprecog +bash build_support/run_easyflash_vice_suites.sh readybasic_keyboard_regression_probe +``` + +Expected current automated failure for the unresolved case: `failed_step=wait_editor_after_partial_f2`. diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/run_terminal_hotkey_probe.command b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/run_terminal_hotkey_probe.command new file mode 100755 index 0000000..a2d3c3e --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/run_terminal_hotkey_probe.command @@ -0,0 +1,8 @@ +#!/bin/bash +cd /Users/karlprosserpp/dev/c64projects/readyosprecog || exit 1 +export DISABLE_AUTO_UPDATE=true +export READYBASIC_HOTKEY_HOST_KEYS=1 +/bin/bash build_support/run_readybasic_hotkey_probe.sh > agentworking/readybasic_hotkeys_fix/terminal_probe.log 2>&1 +status=$? +printf 'EXIT:%s\n' "$status" > agentworking/readybasic_hotkeys_fix/terminal_probe.status +exit "$status" diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/01_launch_preload_readybasic.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/01_launch_preload_readybasic.png new file mode 100644 index 0000000..331a211 Binary files /dev/null and b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/01_launch_preload_readybasic.png differ diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/02_f2_cycles.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/02_f2_cycles.png new file mode 100644 index 0000000..e29aeed Binary files /dev/null and b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/02_f2_cycles.png differ diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/02_f2_cycles_stable_only.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/02_f2_cycles_stable_only.png new file mode 100644 index 0000000..35adf0d Binary files /dev/null and b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/02_f2_cycles_stable_only.png differ diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/03_f4_cycles.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/03_f4_cycles.png new file mode 100644 index 0000000..ecf03d3 Binary files /dev/null and b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/03_f4_cycles.png differ diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/04_ctrlb_exit_final.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/04_ctrlb_exit_final.png new file mode 100644 index 0000000..f6c49e2 Binary files /dev/null and b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/04_ctrlb_exit_final.png differ diff --git a/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/index.txt b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/index.txt new file mode 100644 index 0000000..b15bbc7 --- /dev/null +++ b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readybasic_hotkeys_fix/screenshot_contact_sheets_20260612_005705/index.txt @@ -0,0 +1,67 @@ +[01_launch_preload_readybasic] +01 row 1 col 1: logs/vice_auto_20260612_005705/screens/boot_initial.png +02 row 1 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_initial.png +03 row 1 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_editor_selected.png +04 row 2 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_editor_preloaded.png +05 row 2 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_editor_preload_done.png +06 row 2 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_after_editor_preload.png +07 row 3 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_reuviewer_selected.png +08 row 3 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_reuviewer_preloaded.png +09 row 3 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_reuviewer_preload_done.png +10 row 4 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_after_reuviewer_preload.png +11 row 4 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_after_readybasic_nav.png +12 row 4 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_prompt.png +13 row 5 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_seed_list_program.png + +[02_f2_cycles] +01 row 1 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round1_editor_after_input.png +02 row 1 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round1_editor.png +03 row 1 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round1_editor_stable.png +04 row 2 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round1_reuviewer_after_input.png +05 row 2 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round1_reuviewer.png +06 row 2 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round1_reuviewer_stable.png +07 row 3 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round1_readybasic_after_input.png +08 row 3 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round1_readybasic.png +09 row 3 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round1_readybasic_stable.png +10 row 4 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round2_editor_after_input.png +11 row 4 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round2_editor.png +12 row 4 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round2_editor_stable.png +13 row 5 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round2_reuviewer_after_input.png +14 row 5 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round2_reuviewer.png +15 row 5 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round2_reuviewer_stable.png +16 row 6 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round2_readybasic_after_input.png +17 row 6 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round2_readybasic.png +18 row 6 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f2_round2_readybasic_stable.png + +[03_f4_cycles] +01 row 1 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round1_reuviewer_after_input.png +02 row 1 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round1_reuviewer.png +03 row 1 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round1_reuviewer_stable.png +04 row 2 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round1_editor_after_input.png +05 row 2 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round1_editor.png +06 row 2 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round1_editor_stable.png +07 row 3 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round1_readybasic_after_input.png +08 row 3 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round1_readybasic.png +09 row 3 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round1_readybasic_stable.png +10 row 4 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round2_reuviewer_after_input.png +11 row 4 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round2_reuviewer.png +12 row 4 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round2_reuviewer_stable.png +13 row 5 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round2_editor_after_input.png +14 row 5 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round2_editor.png +15 row 5 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round2_editor_stable.png +16 row 6 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round2_readybasic_after_input.png +17 row 6 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round2_readybasic.png +18 row 6 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_f4_round2_readybasic_stable.png + +[04_ctrlb_exit_final] +01 row 1 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_list_after_cycles_before_ctrl_b.png +02 row 1 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_run_after_cycles_before_ctrl_b.png +03 row 1 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_ctrl_b_after_cycles.png +04 row 2 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_after_readybasic_ctrl_b.png +05 row 2 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_reenter_after_ctrl_b.png +06 row 2 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_readybasic_after_ctrl_b.png +07 row 3 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_final_list_after_reentry.png +08 row 3 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_final_run_after_reentry.png +09 row 3 col 3: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_exit_after_final_run.png +10 row 4 col 1: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_after_exit.png +11 row 4 col 2: logs/vice_auto_20260612_005705/screens/readybasic_hotkey_launcher_stable_after_exit.png diff --git a/agentworking/readyshell_dynamic_state_before.prg b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_before.prg similarity index 100% rename from agentworking/readyshell_dynamic_state_before.prg rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_before.prg diff --git a/agentworking/readyshell_dynamic_state_before_easyflash.prg b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_before_easyflash.prg similarity index 100% rename from agentworking/readyshell_dynamic_state_before_easyflash.prg rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_before_easyflash.prg diff --git a/agentworking/readyshell_dynamic_state_headroom_after_cache_seed.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_after_cache_seed.json similarity index 100% rename from agentworking/readyshell_dynamic_state_headroom_after_cache_seed.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_after_cache_seed.json diff --git a/agentworking/readyshell_dynamic_state_headroom_after_easyflash_build.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_after_easyflash_build.json similarity index 100% rename from agentworking/readyshell_dynamic_state_headroom_after_easyflash_build.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_after_easyflash_build.json diff --git a/agentworking/readyshell_dynamic_state_headroom_before.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_before.json similarity index 100% rename from agentworking/readyshell_dynamic_state_headroom_before.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_before.json diff --git a/agentworking/readyshell_dynamic_state_headroom_final.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_final.json similarity index 100% rename from agentworking/readyshell_dynamic_state_headroom_final.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_final.json diff --git a/agentworking/readyshell_dynamic_state_headroom_mid.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_mid.json similarity index 100% rename from agentworking/readyshell_dynamic_state_headroom_mid.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_mid.json diff --git a/agentworking/readyshell_dynamic_state_headroom_post_tests.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_post_tests.json similarity index 100% rename from agentworking/readyshell_dynamic_state_headroom_post_tests.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_headroom_post_tests.json diff --git a/agentworking/readyshell_dynamic_state_working_notes.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_working_notes.md similarity index 100% rename from agentworking/readyshell_dynamic_state_working_notes.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_dynamic_state_working_notes.md diff --git a/agentworking/readyshell_statebank_debug_cat_headroom_after.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_statebank_debug_cat_headroom_after.json similarity index 100% rename from agentworking/readyshell_statebank_debug_cat_headroom_after.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_statebank_debug_cat_headroom_after.json diff --git a/agentworking/readyshell_statebank_debug_cat_headroom_before.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_statebank_debug_cat_headroom_before.json similarity index 100% rename from agentworking/readyshell_statebank_debug_cat_headroom_before.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_statebank_debug_cat_headroom_before.json diff --git a/agentworking/readyshell_statebank_debug_cat_notes.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_statebank_debug_cat_notes.md similarity index 100% rename from agentworking/readyshell_statebank_debug_cat_notes.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/readyshell_statebank_debug_cat_notes.md diff --git a/agentworking/regular_reuviewer_no_gap_entry.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/regular_reuviewer_no_gap_entry.png similarity index 100% rename from agentworking/regular_reuviewer_no_gap_entry.png rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/regular_reuviewer_no_gap_entry.png diff --git a/agentworking/regular_reuviewer_no_gap_launcher_bank.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/regular_reuviewer_no_gap_launcher_bank.png similarity index 100% rename from agentworking/regular_reuviewer_no_gap_launcher_bank.png rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/regular_reuviewer_no_gap_launcher_bank.png diff --git a/agentworking/regular_reuviewer_no_gap_start_row.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/regular_reuviewer_no_gap_start_row.png similarity index 100% rename from agentworking/regular_reuviewer_no_gap_start_row.png rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/regular_reuviewer_no_gap_start_row.png diff --git a/agentworking/reu_bank0_lookup_headroom_after.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_bank0_lookup_headroom_after.json similarity index 100% rename from agentworking/reu_bank0_lookup_headroom_after.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_bank0_lookup_headroom_after.json diff --git a/agentworking/reu_bank0_lookup_headroom_before.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_bank0_lookup_headroom_before.json similarity index 100% rename from agentworking/reu_bank0_lookup_headroom_before.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_bank0_lookup_headroom_before.json diff --git a/agentworking/reu_bank0_lookup_working_notes.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_bank0_lookup_working_notes.md similarity index 100% rename from agentworking/reu_bank0_lookup_working_notes.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_bank0_lookup_working_notes.md diff --git a/agentworking/reu_cartridge_fix_headroom_current.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_cartridge_fix_headroom_current.json similarity index 100% rename from agentworking/reu_cartridge_fix_headroom_current.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_cartridge_fix_headroom_current.json diff --git a/agentworking/reu_owned_alloc_headroom_after.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_owned_alloc_headroom_after.json similarity index 100% rename from agentworking/reu_owned_alloc_headroom_after.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_owned_alloc_headroom_after.json diff --git a/agentworking/reu_owned_alloc_headroom_before.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_owned_alloc_headroom_before.json similarity index 100% rename from agentworking/reu_owned_alloc_headroom_before.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_owned_alloc_headroom_before.json diff --git a/agentworking/reu_owned_alloc_notes.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_owned_alloc_notes.md similarity index 100% rename from agentworking/reu_owned_alloc_notes.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_owned_alloc_notes.md diff --git a/agentworking/reu_physical_size_easyflash_headroom_after.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_physical_size_easyflash_headroom_after.json similarity index 100% rename from agentworking/reu_physical_size_easyflash_headroom_after.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_physical_size_easyflash_headroom_after.json diff --git a/agentworking/reu_physical_size_easyflash_headroom_before.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_physical_size_easyflash_headroom_before.json similarity index 100% rename from agentworking/reu_physical_size_easyflash_headroom_before.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_physical_size_easyflash_headroom_before.json diff --git a/agentworking/reu_physical_size_headroom_after.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_physical_size_headroom_after.json similarity index 100% rename from agentworking/reu_physical_size_headroom_after.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_physical_size_headroom_after.json diff --git a/agentworking/reu_physical_size_headroom_before.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_physical_size_headroom_before.json similarity index 100% rename from agentworking/reu_physical_size_headroom_before.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_physical_size_headroom_before.json diff --git a/agentworking/reu_physical_size_working_notes.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_physical_size_working_notes.md similarity index 100% rename from agentworking/reu_physical_size_working_notes.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_physical_size_working_notes.md diff --git a/agentworking/reu_refactor_headroom_after_readybasic_dynamic.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_headroom_after_readybasic_dynamic.json similarity index 100% rename from agentworking/reu_refactor_headroom_after_readybasic_dynamic.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_headroom_after_readybasic_dynamic.json diff --git a/agentworking/reu_refactor_headroom_before_readybasic_dynamic.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_headroom_before_readybasic_dynamic.json similarity index 100% rename from agentworking/reu_refactor_headroom_before_readybasic_dynamic.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_headroom_before_readybasic_dynamic.json diff --git a/agentworking/reu_refactor_headroom_current.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_headroom_current.json similarity index 100% rename from agentworking/reu_refactor_headroom_current.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_headroom_current.json diff --git a/agentworking/reu_refactor_headroom_delta.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_headroom_delta.md similarity index 100% rename from agentworking/reu_refactor_headroom_delta.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_headroom_delta.md diff --git a/agentworking/reu_refactor_progress.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_progress.md similarity index 100% rename from agentworking/reu_refactor_progress.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_progress.md diff --git a/agentworking/reu_refactor_readybasic_dynamic_headroom.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_readybasic_dynamic_headroom.md similarity index 100% rename from agentworking/reu_refactor_readybasic_dynamic_headroom.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_refactor_readybasic_dynamic_headroom.md diff --git a/agentworking/reu_registry_headroom_after_array_writer.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_after_array_writer.json similarity index 100% rename from agentworking/reu_registry_headroom_after_array_writer.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_after_array_writer.json diff --git a/agentworking/reu_registry_headroom_after_compile.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_after_compile.json similarity index 100% rename from agentworking/reu_registry_headroom_after_compile.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_after_compile.json diff --git a/agentworking/reu_registry_headroom_after_parser_trim.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_after_parser_trim.json similarity index 100% rename from agentworking/reu_registry_headroom_after_parser_trim.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_after_parser_trim.json diff --git a/agentworking/reu_registry_headroom_after_split.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_after_split.json similarity index 100% rename from agentworking/reu_registry_headroom_after_split.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_after_split.json diff --git a/agentworking/reu_registry_headroom_after_verify.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_after_verify.json similarity index 100% rename from agentworking/reu_registry_headroom_after_verify.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_after_verify.json diff --git a/agentworking/reu_registry_headroom_before.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_before.json similarity index 100% rename from agentworking/reu_registry_headroom_before.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_headroom_before.json diff --git a/agentworking/reu_registry_v2_working_notes.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_v2_working_notes.md similarity index 100% rename from agentworking/reu_registry_v2_working_notes.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_registry_v2_working_notes.md diff --git a/agentworking/reu_rich_registry_headroom_before.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_rich_registry_headroom_before.json similarity index 100% rename from agentworking/reu_rich_registry_headroom_before.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_rich_registry_headroom_before.json diff --git a/agentworking/reu_rich_registry_headroom_final.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_rich_registry_headroom_final.json similarity index 100% rename from agentworking/reu_rich_registry_headroom_final.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_rich_registry_headroom_final.json diff --git a/agentworking/reu_rich_registry_working_notes.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_rich_registry_working_notes.md similarity index 100% rename from agentworking/reu_rich_registry_working_notes.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_rich_registry_working_notes.md diff --git a/agentworking/reu_stale_last_saved_notes.md b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_stale_last_saved_notes.md similarity index 100% rename from agentworking/reu_stale_last_saved_notes.md rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_stale_last_saved_notes.md diff --git a/agentworking/reu_stale_state_headroom_after.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_stale_state_headroom_after.json similarity index 100% rename from agentworking/reu_stale_state_headroom_after.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_stale_state_headroom_after.json diff --git a/agentworking/reu_stale_state_headroom_before.json b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_stale_state_headroom_before.json similarity index 100% rename from agentworking/reu_stale_state_headroom_before.json rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reu_stale_state_headroom_before.json diff --git a/agentworking/reuviewer_after_app_roundtrip_capture.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_after_app_roundtrip_capture.yaml similarity index 100% rename from agentworking/reuviewer_after_app_roundtrip_capture.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_after_app_roundtrip_capture.yaml diff --git a/agentworking/reuviewer_after_app_roundtrip_dump_reu_table.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_after_app_roundtrip_dump_reu_table.yaml similarity index 100% rename from agentworking/reuviewer_after_app_roundtrip_dump_reu_table.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_after_app_roundtrip_dump_reu_table.yaml diff --git a/agentworking/reuviewer_capture_version.txt b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_capture_version.txt similarity index 100% rename from agentworking/reuviewer_capture_version.txt rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_capture_version.txt diff --git a/agentworking/reuviewer_extra_slot_type_capture_8mb.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_extra_slot_type_capture_8mb.yaml similarity index 100% rename from agentworking/reuviewer_extra_slot_type_capture_8mb.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_extra_slot_type_capture_8mb.yaml diff --git a/agentworking/reuviewer_no_gap_easyflash.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_no_gap_easyflash.yaml similarity index 100% rename from agentworking/reuviewer_no_gap_easyflash.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_no_gap_easyflash.yaml diff --git a/agentworking/reuviewer_no_gap_entry.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_no_gap_entry.png similarity index 100% rename from agentworking/reuviewer_no_gap_entry.png rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_no_gap_entry.png diff --git a/agentworking/reuviewer_no_gap_launcher_bank.png b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_no_gap_launcher_bank.png similarity index 100% rename from agentworking/reuviewer_no_gap_launcher_bank.png rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_no_gap_launcher_bank.png diff --git a/agentworking/reuviewer_no_gap_regular_d81.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_no_gap_regular_d81.yaml similarity index 100% rename from agentworking/reuviewer_no_gap_regular_d81.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_no_gap_regular_d81.yaml diff --git a/agentworking/reuviewer_slot_type_capture_8mb.yaml b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_slot_type_capture_8mb.yaml similarity index 100% rename from agentworking/reuviewer_slot_type_capture_8mb.yaml rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/reuviewer_slot_type_capture_8mb.yaml diff --git a/agentworking/run_easyflash_launcher_app_probes.sh b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/run_easyflash_launcher_app_probes.sh similarity index 100% rename from agentworking/run_easyflash_launcher_app_probes.sh rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/run_easyflash_launcher_app_probes.sh diff --git a/agentworking/vice8mb/x64sc b/agentworking/archive-pre-readybasic-gfx-phase1-20260615/vice8mb/x64sc similarity index 100% rename from agentworking/vice8mb/x64sc rename to agentworking/archive-pre-readybasic-gfx-phase1-20260615/vice8mb/x64sc diff --git a/agentworking/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.easyflash.yaml index ae59894..b29efcc 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -54,6 +54,17 @@ steps: text: "ready." wait_timeout_s: 180 capture_label: readybasic_prompt + - id: wait_readybasic_prompt_stable_before_program_entry + type: screen.wait_contains + params: + text: "ready." + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_buffer_before_program_entry + type: memory.write + params: + start: 198 + bytes_hex: "00" - id: build_program_lines type: input.sequence params: @@ -108,20 +119,32 @@ steps: - id: move_from_readybasic_to_editor_1 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_1 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_1 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_1 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_1 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_1 type: screen.wait_contains params: @@ -130,9 +153,18 @@ steps: - id: move_from_editor_to_readybasic_1 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_1 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_1 type: screen.wait_contains params: @@ -215,20 +247,32 @@ steps: - id: move_from_readybasic_to_editor_2 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_2 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_2 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_2 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_2 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_2 type: screen.wait_contains params: @@ -237,9 +281,18 @@ steps: - id: move_from_editor_to_readybasic_2 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_2 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_2 type: screen.wait_contains params: @@ -322,20 +375,32 @@ steps: - id: move_from_readybasic_to_editor_3 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_3 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_3 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_3 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_3 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_3 type: screen.wait_contains params: @@ -344,9 +409,18 @@ steps: - id: move_from_editor_to_readybasic_3 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_3 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_3 type: screen.wait_contains params: @@ -429,20 +503,32 @@ steps: - id: move_from_readybasic_to_editor_4 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_4 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_4 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_4 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_4 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_4 type: screen.wait_contains params: @@ -451,9 +537,18 @@ steps: - id: move_from_editor_to_readybasic_4 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_4 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_4 type: screen.wait_contains params: @@ -536,20 +631,32 @@ steps: - id: move_from_readybasic_to_editor_5 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_5 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_5 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_5 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_5 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_5 type: screen.wait_contains params: @@ -558,9 +665,18 @@ steps: - id: move_from_editor_to_readybasic_5 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_5 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_5 type: screen.wait_contains params: @@ -643,20 +759,32 @@ steps: - id: move_from_readybasic_to_editor_6 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_6 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_6 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_6 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_6 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_6 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_6 type: screen.wait_contains params: @@ -665,9 +793,18 @@ steps: - id: move_from_editor_to_readybasic_6 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_6 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_6 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_6 type: screen.wait_contains params: @@ -750,20 +887,32 @@ steps: - id: move_from_readybasic_to_editor_7 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_7 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_7 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_7 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_7 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_7 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_7 type: screen.wait_contains params: @@ -772,9 +921,18 @@ steps: - id: move_from_editor_to_readybasic_7 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_7 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_7 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_7 type: screen.wait_contains params: @@ -857,20 +1015,32 @@ steps: - id: move_from_readybasic_to_editor_8 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_8 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_8 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_8 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_8 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_8 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_8 type: screen.wait_contains params: @@ -879,9 +1049,18 @@ steps: - id: move_from_editor_to_readybasic_8 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_8 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_8 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_8 type: screen.wait_contains params: @@ -964,20 +1143,32 @@ steps: - id: move_from_readybasic_to_editor_9 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_9 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_9 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_9 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_9 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_9 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_9 type: screen.wait_contains params: @@ -986,9 +1177,18 @@ steps: - id: move_from_editor_to_readybasic_9 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_9 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_9 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_9 type: screen.wait_contains params: @@ -1071,20 +1271,32 @@ steps: - id: move_from_readybasic_to_editor_10 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_10 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_10 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_10 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_10 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_10 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_10 type: screen.wait_contains params: @@ -1093,9 +1305,18 @@ steps: - id: move_from_editor_to_readybasic_10 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_10 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_10 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_10 type: screen.wait_contains params: @@ -1166,7 +1387,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_text_and_vars_1200, start: 0x1200, end: 0x1700 } - { label: string_heap_9400, start: 0x9400, end: 0x9600 } - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } diff --git a/agentworking/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.regular.yaml index 2b62bfd..f0b9097 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_cross_app_resume_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -39,6 +39,17 @@ steps: text: "ready." wait_timeout_s: 180 capture_label: readybasic_prompt + - id: wait_readybasic_prompt_stable_before_program_entry + type: screen.wait_contains + params: + text: "ready." + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_buffer_before_program_entry + type: memory.write + params: + start: 198 + bytes_hex: "00" - id: build_program_lines type: input.sequence params: @@ -93,20 +104,32 @@ steps: - id: move_from_readybasic_to_editor_1 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_1 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_1 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_1 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_1 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_1 type: screen.wait_contains params: @@ -115,9 +138,18 @@ steps: - id: move_from_editor_to_readybasic_1 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_1 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_1 type: screen.wait_contains params: @@ -200,20 +232,32 @@ steps: - id: move_from_readybasic_to_editor_2 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_2 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_2 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_2 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_2 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_2 type: screen.wait_contains params: @@ -222,9 +266,18 @@ steps: - id: move_from_editor_to_readybasic_2 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_2 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_2 type: screen.wait_contains params: @@ -307,20 +360,32 @@ steps: - id: move_from_readybasic_to_editor_3 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_3 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_3 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_3 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_3 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_3 type: screen.wait_contains params: @@ -329,9 +394,18 @@ steps: - id: move_from_editor_to_readybasic_3 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_3 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_3 type: screen.wait_contains params: @@ -414,20 +488,32 @@ steps: - id: move_from_readybasic_to_editor_4 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_4 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_4 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_4 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_4 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_4 type: screen.wait_contains params: @@ -436,9 +522,18 @@ steps: - id: move_from_editor_to_readybasic_4 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_4 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_4 type: screen.wait_contains params: @@ -521,20 +616,32 @@ steps: - id: move_from_readybasic_to_editor_5 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_5 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_5 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_5 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_5 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_5 type: screen.wait_contains params: @@ -543,9 +650,18 @@ steps: - id: move_from_editor_to_readybasic_5 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_5 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_5 type: screen.wait_contains params: @@ -628,20 +744,32 @@ steps: - id: move_from_readybasic_to_editor_6 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_6 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_6 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_6 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_6 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_6 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_6 type: screen.wait_contains params: @@ -650,9 +778,18 @@ steps: - id: move_from_editor_to_readybasic_6 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_6 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_6 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_6 type: screen.wait_contains params: @@ -735,20 +872,32 @@ steps: - id: move_from_readybasic_to_editor_7 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_7 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_7 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_7 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_7 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_7 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_7 type: screen.wait_contains params: @@ -757,9 +906,18 @@ steps: - id: move_from_editor_to_readybasic_7 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_7 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_7 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_7 type: screen.wait_contains params: @@ -842,20 +1000,32 @@ steps: - id: move_from_readybasic_to_editor_8 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_8 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_8 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_8 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_8 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_8 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_8 type: screen.wait_contains params: @@ -864,9 +1034,18 @@ steps: - id: move_from_editor_to_readybasic_8 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_8 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_8 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_8 type: screen.wait_contains params: @@ -949,20 +1128,32 @@ steps: - id: move_from_readybasic_to_editor_9 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_9 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_9 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_9 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_9 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_9 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_9 type: screen.wait_contains params: @@ -971,9 +1162,18 @@ steps: - id: move_from_editor_to_readybasic_9 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_9 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_9 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_9 type: screen.wait_contains params: @@ -1056,20 +1256,32 @@ steps: - id: move_from_readybasic_to_editor_10 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_10 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_10 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_10 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 - id: ctrl_b_to_launcher_from_editor_10 - type: input.sequence + type: memory.write params: - keys: [2] - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + start: 0x00C6 + bytes_hex: "00" + - id: inject_ctrl_b_to_launcher_from_editor_10 + type: monitor.command + params: + command: "keybuf \\x02" - id: wait_launcher_after_editor_10 type: screen.wait_contains params: @@ -1078,9 +1290,18 @@ steps: - id: move_from_editor_to_readybasic_10 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_10 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_10 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_resume_10 type: screen.wait_contains params: @@ -1151,7 +1372,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_text_and_vars_1200, start: 0x1200, end: 0x1700 } - { label: string_heap_9400, start: 0x9400, end: 0x9600 } - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } diff --git a/agentworking/easyflash_full_vice_plans/readybasic_demo_suite.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_demo_suite.easyflash.yaml index 2577773..6bda5ad 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_demo_suite.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_demo_suite.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -54,16 +54,27 @@ steps: text: "FREE:" wait_timeout_s: 180 capture_label: demo_readybasic_prompt + - id: warp_off_for_visible_demo + type: warp.set + params: + enabled: false + capture_after: false - id: demo_01_intro type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,49,58,32,82,69,65,68,89,66,65,83,73,67,32,66,65,83,73,67,83,34,13,80,82,73,78,84,32,34,70,82,69,69,77,69,77,44,32,86,65,82,73,65,66,76,69,83,44,32,65,78,68,32,65,32,80,82,79,71,82,65,77,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,49,58,32,82,69,65,68,89,66,65,83,73,67,32,66,65,83,73,67,83,34,13,80,82,73,78,84,32,34,77,69,77,65,86,76,44,32,86,65,82,73,65,66,76,69,83,44,32,65,78,68,32,65,32,80,82,79,71,82,65,77,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: demo_01_setup type: input.sequence params: - keys: [70,82,69,69,77,69,77,40,41,13,78,69,87,13,65,37,61,52,50,13,49,48,32,66,37,61,90,65,68,68,49,54,40,52,50,44,56,41,13,50,48,32,80,82,73,78,84,32,34,80,82,79,71,82,65,77,32,83,85,77,34,59,66,37,13,76,73,83,84,13] + keys: [77,69,77,65,86,76,40,41,13,78,69,87,13,65,37,61,52,50,13,49,48,32,66,37,61,90,65,68,68,49,54,40,52,50,44,56,41,13,50,48,32,80,82,73,78,84,32,34,80,82,79,71,82,65,77,32,83,85,77,34,59,66,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_01_list + type: input.sequence + params: + keys: [76,73,83,84,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: demo_01_basics @@ -136,16 +147,32 @@ steps: params: text: "READY." wait_timeout_s: 60 - - id: demo_03_resume_intro + - id: demo_03_resume_liveness + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,82,69,83,85,77,69,32,76,73,86,69,34,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_03_resume_liveness + type: assert.screen + params: + contains: "RESUME LIVE" + - id: demo_03_resume_intro_clear + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,66,65,67,75,32,73,78,32,82,69,65,68,89,66,65,83,73,67,34,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_03_resume_intro_detail type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,66,65,67,75,32,73,78,32,82,69,65,68,89,66,65,83,73,67,34,13,80,82,73,78,84,32,34,86,65,82,73,65,66,76,69,83,32,65,78,68,32,80,82,79,71,82,65,77,32,84,69,88,84,32,83,72,79,85,76,68,32,82,69,77,65,73,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + keys: [80,82,73,78,84,32,34,86,65,82,73,65,66,76,69,83,32,65,78,68,32,80,82,79,71,82,65,77,32,84,69,88,84,32,83,72,79,85,76,68,32,82,69,77,65,73,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: demo_03_resume_var_proof type: input.sequence params: - keys: [70,82,69,69,77,69,77,40,41,13,80,82,73,78,84,32,34,65,32,83,84,73,76,76,34,59,65,37,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,65,32,73,83,32,52,50,32,65,78,68,32,82,85,78,32,83,84,73,76,76,32,87,79,82,75,83,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + keys: [77,69,77,65,86,76,40,41,13,80,82,73,78,84,32,34,65,32,83,84,73,76,76,34,59,65,37,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,65,32,73,83,32,52,50,32,65,78,68,32,82,85,78,32,83,84,73,76,76,32,87,79,82,75,83,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: capture_demo_03_resume_var_proof @@ -311,13 +338,13 @@ steps: - id: demo_07_intro type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,56,58,32,82,69,85,32,66,85,70,70,69,82,32,67,79,77,77,65,78,68,83,34,13,80,82,73,78,84,32,34,66,85,70,78,69,87,32,82,69,84,85,82,78,83,59,32,70,73,76,76,32,65,78,68,32,70,82,69,69,32,68,79,32,87,79,82,75,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,56,58,32,82,69,85,32,66,85,70,70,69,82,32,67,79,77,77,65,78,68,83,34,13,80,82,73,78,84,32,34,66,85,70,77,65,75,69,32,82,69,84,85,82,78,83,59,32,70,73,76,76,32,65,78,68,32,70,82,69,69,32,68,79,32,87,79,82,75,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: demo_07_reu type: input.sequence params: - keys: [72,37,61,66,85,70,78,69,87,40,54,52,41,13,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,72,65,78,68,76,69,32,49,44,32,84,72,69,78,32,70,82,69,69,68,32,49,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,80,82,73,78,84,32,34,72,65,78,68,76,69,34,59,72,37,13,66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,68,34,59,72,37,13] + keys: [72,37,61,66,85,70,77,65,75,69,40,54,52,41,13,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,72,65,78,68,76,69,32,49,44,32,84,72,69,78,32,70,82,69,69,68,32,49,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,80,82,73,78,84,32,34,72,65,78,68,76,69,34,59,72,37,13,66,85,70,68,82,79,80,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,68,34,59,72,37,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: assert_demo_07_handle diff --git a/agentworking/easyflash_full_vice_plans/readybasic_demo_suite.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_demo_suite.regular.yaml index ece15ca..6554df9 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_demo_suite.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_demo_suite.regular.yaml @@ -19,14 +19,14 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false close_vice: true - headless: true + headless: false speed_percent: 100 steps: - id: launch_preboot @@ -39,16 +39,27 @@ steps: text: "FREE:" wait_timeout_s: 180 capture_label: demo_readybasic_prompt + - id: warp_off_for_visible_demo + type: warp.set + params: + enabled: false + capture_after: false - id: demo_01_intro type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,49,58,32,82,69,65,68,89,66,65,83,73,67,32,66,65,83,73,67,83,34,13,80,82,73,78,84,32,34,70,82,69,69,77,69,77,44,32,86,65,82,73,65,66,76,69,83,44,32,65,78,68,32,65,32,80,82,79,71,82,65,77,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,49,58,32,82,69,65,68,89,66,65,83,73,67,32,66,65,83,73,67,83,34,13,80,82,73,78,84,32,34,77,69,77,65,86,76,44,32,86,65,82,73,65,66,76,69,83,44,32,65,78,68,32,65,32,80,82,79,71,82,65,77,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: demo_01_setup type: input.sequence params: - keys: [70,82,69,69,77,69,77,40,41,13,78,69,87,13,65,37,61,52,50,13,49,48,32,66,37,61,90,65,68,68,49,54,40,52,50,44,56,41,13,50,48,32,80,82,73,78,84,32,34,80,82,79,71,82,65,77,32,83,85,77,34,59,66,37,13,76,73,83,84,13] + keys: [77,69,77,65,86,76,40,41,13,78,69,87,13,65,37,61,52,50,13,49,48,32,66,37,61,90,65,68,68,49,54,40,52,50,44,56,41,13,50,48,32,80,82,73,78,84,32,34,80,82,79,71,82,65,77,32,83,85,77,34,59,66,37,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_01_list + type: input.sequence + params: + keys: [76,73,83,84,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: demo_01_basics @@ -121,16 +132,32 @@ steps: params: text: "READY." wait_timeout_s: 60 - - id: demo_03_resume_intro + - id: demo_03_resume_liveness + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,82,69,83,85,77,69,32,76,73,86,69,34,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: assert_demo_03_resume_liveness + type: assert.screen + params: + contains: "RESUME LIVE" + - id: demo_03_resume_intro_clear + type: input.sequence + params: + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,66,65,67,75,32,73,78,32,82,69,65,68,89,66,65,83,73,67,34,13] + inter_key_delay_s: 0.08 + post_delay_s: 3.5 + - id: demo_03_resume_intro_detail type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,66,65,67,75,32,73,78,32,82,69,65,68,89,66,65,83,73,67,34,13,80,82,73,78,84,32,34,86,65,82,73,65,66,76,69,83,32,65,78,68,32,80,82,79,71,82,65,77,32,84,69,88,84,32,83,72,79,85,76,68,32,82,69,77,65,73,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + keys: [80,82,73,78,84,32,34,86,65,82,73,65,66,76,69,83,32,65,78,68,32,80,82,79,71,82,65,77,32,84,69,88,84,32,83,72,79,85,76,68,32,82,69,77,65,73,78,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: demo_03_resume_var_proof type: input.sequence params: - keys: [70,82,69,69,77,69,77,40,41,13,80,82,73,78,84,32,34,65,32,83,84,73,76,76,34,59,65,37,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,65,32,73,83,32,52,50,32,65,78,68,32,82,85,78,32,83,84,73,76,76,32,87,79,82,75,83,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + keys: [77,69,77,65,86,76,40,41,13,80,82,73,78,84,32,34,65,32,83,84,73,76,76,34,59,65,37,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,65,32,73,83,32,52,50,32,65,78,68,32,82,85,78,32,83,84,73,76,76,32,87,79,82,75,83,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: capture_demo_03_resume_var_proof @@ -296,13 +323,13 @@ steps: - id: demo_07_intro type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,56,58,32,82,69,85,32,66,85,70,70,69,82,32,67,79,77,77,65,78,68,83,34,13,80,82,73,78,84,32,34,66,85,70,78,69,87,32,82,69,84,85,82,78,83,59,32,70,73,76,76,32,65,78,68,32,70,82,69,69,32,68,79,32,87,79,82,75,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,59,67,72,82,36,40,49,53,56,41,59,34,68,69,77,79,32,56,58,32,82,69,85,32,66,85,70,70,69,82,32,67,79,77,77,65,78,68,83,34,13,80,82,73,78,84,32,34,66,85,70,77,65,75,69,32,82,69,84,85,82,78,83,59,32,70,73,76,76,32,65,78,68,32,70,82,69,69,32,68,79,32,87,79,82,75,34,58,80,82,73,78,84,32,67,72,82,36,40,53,41,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: demo_07_reu type: input.sequence params: - keys: [72,37,61,66,85,70,78,69,87,40,54,52,41,13,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,72,65,78,68,76,69,32,49,44,32,84,72,69,78,32,70,82,69,69,68,32,49,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,80,82,73,78,84,32,34,72,65,78,68,76,69,34,59,72,37,13,66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,68,34,59,72,37,13] + keys: [72,37,61,66,85,70,77,65,75,69,40,54,52,41,13,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,80,82,73,78,84,32,67,72,82,36,40,49,53,56,41,59,34,69,88,80,69,67,84,58,32,72,65,78,68,76,69,32,49,44,32,84,72,69,78,32,70,82,69,69,68,32,49,34,13,80,82,73,78,84,32,67,72,82,36,40,53,41,13,80,82,73,78,84,32,34,72,65,78,68,76,69,34,59,72,37,13,66,85,70,68,82,79,80,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,68,34,59,72,37,13] inter_key_delay_s: 0.08 post_delay_s: 3.5 - id: assert_demo_07_handle diff --git a/agentworking/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.easyflash.yaml index da1e906..772ff6b 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.easyflash.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false - disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + disk8: "agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true drive8_type: 1541 drive9_enabled: false @@ -35,12 +35,16 @@ steps: params: kill_stale: true - id: easyflash_wait_launcher + retry: + max_attempts: 1 + backoff_ms: 0 + jitter: false type: screen.wait_contains params: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -51,7 +55,7 @@ steps: - id: wait_readybasic_prompt type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 capture_label: readybasic_full_suite_visual_prompt - id: dump_initial_plugin_state @@ -66,7 +70,7 @@ steps: - { label: hidden_visible_a000, start: 0xA000, end: 0xA5FF } - { label: hidden_overlay_a800, start: 0xA800, end: 0xA8FF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } - - { label: reu_alloc_table_c600, start: 0xC600, end: 0xC6FF } + - { label: shim_resident_c600, start: 0xC600, end: 0xC9FF } - id: direct_ping type: input.sequence @@ -255,17 +259,17 @@ steps: params: contains: "D-RANGE 7 10" - - id: direct_bufnew + - id: direct_bufmake type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,78,69,87,32,82,69,85,32,72,65,78,68,76,69,32,84,65,66,76,69,32,82,69,84,85,82,78,32,72,37,61,49,32,83,67,82,69,69,78,32,68,45,66,85,70,13,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,80,82,73,78,84,32,34,68,45,66,85,70,34,59,72,37,59,34,58,69,78,68,34,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,77,65,75,69,32,82,69,85,32,72,65,78,68,76,69,32,84,65,66,76,69,32,82,69,84,85,82,78,32,72,37,61,49,32,83,67,82,69,69,78,32,68,45,66,85,70,13,72,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,80,82,73,78,84,32,34,68,45,66,85,70,34,59,72,37,59,34,58,69,78,68,34,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - - id: assert_direct_bufnew + - id: assert_direct_bufmake type: assert.screen params: contains: "D-BUF 1 :END" - - id: dump_direct_bufnew + - id: dump_direct_bufmake type: dump.memory_ranges params: ranges: *plugin_ranges @@ -285,17 +289,17 @@ steps: params: not_contains: "?RB ERROR" - - id: direct_buffree + - id: direct_bufdrop type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,82,69,69,32,82,69,76,69,65,83,69,32,82,69,85,32,72,65,78,68,76,69,32,72,37,32,83,67,82,69,69,78,32,68,45,70,82,69,69,13,66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,68,45,70,82,69,69,32,79,75,34,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,68,82,79,80,32,82,69,76,69,65,83,69,32,82,69,85,32,72,65,78,68,76,69,32,72,37,32,83,67,82,69,69,78,32,68,45,70,82,69,69,13,66,85,70,68,82,79,80,40,72,37,41,13,80,82,73,78,84,32,34,68,45,70,82,69,69,32,79,75,34,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - - id: assert_direct_buffree + - id: assert_direct_bufdrop type: assert.screen params: contains: "D-FREE OK" - - id: assert_direct_buffree_no_error + - id: assert_direct_bufdrop_no_error type: assert.screen_not_contains params: not_contains: "?RB ERROR" @@ -324,24 +328,24 @@ steps: type: assert.screen params: contains: "?RB ERROR 40" - - id: direct_buffree_screen_handle + - id: direct_bufdrop_screen_handle type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,82,69,69,32,82,69,76,69,65,83,69,83,32,83,67,82,69,69,78,32,72,65,78,68,76,69,32,84,89,80,69,13,66,85,70,70,82,69,69,40,83,37,41,13,80,82,73,78,84,32,34,68,45,83,67,82,70,82,69,69,34,59,83,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,68,82,79,80,32,82,69,76,69,65,83,69,83,32,83,67,82,69,69,78,32,72,65,78,68,76,69,32,84,89,80,69,13,66,85,70,68,82,79,80,40,83,37,41,13,80,82,73,78,84,32,34,68,45,83,67,82,70,82,69,69,34,59,83,37,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - - id: assert_direct_buffree_screen_handle + - id: assert_direct_bufdrop_screen_handle type: assert.screen params: contains: "D-SCRFREE 1" - - id: assert_direct_buffree_screen_no_error + - id: assert_direct_bufdrop_screen_no_error type: assert.screen_not_contains params: not_contains: "?RB ERROR" - id: direct_scrput_rejects_buffer_handle type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,67,82,80,85,84,32,77,85,83,84,32,82,69,74,69,67,84,32,66,85,70,70,69,82,32,72,65,78,68,76,69,32,84,89,80,69,13,66,37,61,66,85,70,78,69,87,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,67,82,80,85,84,32,77,85,83,84,32,82,69,74,69,67,84,32,66,85,70,70,69,82,32,72,65,78,68,76,69,32,84,89,80,69,13,66,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_scrput_rejects_buffer_handle @@ -351,7 +355,7 @@ steps: - id: direct_free_buffer_after_type_error type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,66,37,41,13,80,82,73,78,84,32,34,68,45,66,85,70,82,69,69,34,59,66,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,68,82,79,80,40,66,37,41,13,80,82,73,78,84,32,34,68,45,66,85,70,82,69,69,34,59,66,37,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_free_buffer_after_type_error @@ -366,7 +370,7 @@ steps: - id: direct_handle_128_edge type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,78,69,87,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,77,65,88,34,59,72,37,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,77,65,75,69,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,77,65,88,34,59,72,37,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 5.0 - id: assert_direct_handle_128_edge @@ -380,7 +384,7 @@ steps: - id: direct_handle_129_rejected type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,78,69,87,40,49,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,77,65,75,69,40,49,41,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_handle_129_rejected @@ -390,7 +394,7 @@ steps: - id: direct_free_128_handles type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,70,82,69,69,68,34,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,68,82,79,80,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,70,82,69,69,68,34,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 5.0 - id: assert_direct_free_128_handles @@ -404,7 +408,7 @@ steps: - id: direct_48k_heap_edge type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,77,37,61,66,85,70,78,69,87,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,68,45,77,65,88,66,85,70,34,59,77,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,77,37,61,66,85,70,77,65,75,69,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,68,45,77,65,88,66,85,70,34,59,77,37,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_48k_heap_edge @@ -414,7 +418,7 @@ steps: - id: direct_48k_heap_full type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,78,69,87,40,49,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,77,65,75,69,40,49,41,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_48k_heap_full @@ -424,7 +428,7 @@ steps: - id: direct_free_48k_heap type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,77,37,41,13,80,82,73,78,84,32,34,68,45,77,65,88,70,82,69,69,34,59,77,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,68,82,79,80,40,77,37,41,13,80,82,73,78,84,32,34,68,45,77,65,88,70,82,69,69,34,59,77,37,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_free_48k_heap @@ -458,7 +462,7 @@ steps: - id: direct_free_screen_heap type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,83,70,82,69,69,68,34,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,68,82,79,80,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,83,70,82,69,69,68,34,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 5.0 - id: assert_direct_free_screen_heap @@ -655,9 +659,18 @@ steps: - id: resume_after_exit type: input.sequence params: - keys: [145,17,13] + keys: [145,17] inter_key_delay_s: 0.10 - post_delay_s: 3.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_full_suite_resume + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_after_full_suite_exit + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_resume type: screen.wait_contains params: @@ -866,7 +879,7 @@ steps: - id: program_handle_enter_and_list type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,66,85,70,32,82,69,85,32,72,65,78,68,76,69,32,65,76,76,79,67,32,82,69,84,85,82,78,32,70,73,76,76,32,70,82,69,69,32,72,37,61,49,32,83,67,82,69,69,78,32,80,45,66,85,70,13,50,48,32,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,51,48,32,80,82,73,78,84,32,34,80,45,66,85,70,34,59,72,37,13,52,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,53,48,32,66,85,70,70,82,69,69,40,72,37,41,13,54,48,32,80,82,73,78,84,32,34,80,45,70,82,69,69,34,59,72,37,13,76,73,83,84,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,66,85,70,32,82,69,85,32,72,65,78,68,76,69,32,65,76,76,79,67,32,82,69,84,85,82,78,32,70,73,76,76,32,70,82,69,69,32,72,37,61,49,32,83,67,82,69,69,78,32,80,45,66,85,70,13,50,48,32,72,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,51,48,32,80,82,73,78,84,32,34,80,45,66,85,70,34,59,72,37,13,52,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,53,48,32,66,85,70,68,82,79,80,40,72,37,41,13,54,48,32,80,82,73,78,84,32,34,80,45,70,82,69,69,34,59,72,37,13,76,73,83,84,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_program_handle_rem diff --git a/agentworking/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.regular.yaml index 19e5b53..e5ddb07 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_full_suite_visual_verification.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -51,7 +51,7 @@ steps: - { label: hidden_visible_a000, start: 0xA000, end: 0xA5FF } - { label: hidden_overlay_a800, start: 0xA800, end: 0xA8FF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } - - { label: reu_alloc_table_c600, start: 0xC600, end: 0xC6FF } + - { label: shim_resident_c600, start: 0xC600, end: 0xC9FF } - id: direct_ping type: input.sequence @@ -240,17 +240,17 @@ steps: params: contains: "D-RANGE 7 10" - - id: direct_bufnew + - id: direct_bufmake type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,78,69,87,32,82,69,85,32,72,65,78,68,76,69,32,84,65,66,76,69,32,82,69,84,85,82,78,32,72,37,61,49,32,83,67,82,69,69,78,32,68,45,66,85,70,13,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,80,82,73,78,84,32,34,68,45,66,85,70,34,59,72,37,59,34,58,69,78,68,34,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,77,65,75,69,32,82,69,85,32,72,65,78,68,76,69,32,84,65,66,76,69,32,82,69,84,85,82,78,32,72,37,61,49,32,83,67,82,69,69,78,32,68,45,66,85,70,13,72,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,80,82,73,78,84,32,34,68,45,66,85,70,34,59,72,37,59,34,58,69,78,68,34,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - - id: assert_direct_bufnew + - id: assert_direct_bufmake type: assert.screen params: contains: "D-BUF 1 :END" - - id: dump_direct_bufnew + - id: dump_direct_bufmake type: dump.memory_ranges params: ranges: *plugin_ranges @@ -270,17 +270,17 @@ steps: params: not_contains: "?RB ERROR" - - id: direct_buffree + - id: direct_bufdrop type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,82,69,69,32,82,69,76,69,65,83,69,32,82,69,85,32,72,65,78,68,76,69,32,72,37,32,83,67,82,69,69,78,32,68,45,70,82,69,69,13,66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,68,45,70,82,69,69,32,79,75,34,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,68,82,79,80,32,82,69,76,69,65,83,69,32,82,69,85,32,72,65,78,68,76,69,32,72,37,32,83,67,82,69,69,78,32,68,45,70,82,69,69,13,66,85,70,68,82,79,80,40,72,37,41,13,80,82,73,78,84,32,34,68,45,70,82,69,69,32,79,75,34,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - - id: assert_direct_buffree + - id: assert_direct_bufdrop type: assert.screen params: contains: "D-FREE OK" - - id: assert_direct_buffree_no_error + - id: assert_direct_bufdrop_no_error type: assert.screen_not_contains params: not_contains: "?RB ERROR" @@ -309,24 +309,24 @@ steps: type: assert.screen params: contains: "?RB ERROR 40" - - id: direct_buffree_screen_handle + - id: direct_bufdrop_screen_handle type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,70,82,69,69,32,82,69,76,69,65,83,69,83,32,83,67,82,69,69,78,32,72,65,78,68,76,69,32,84,89,80,69,13,66,85,70,70,82,69,69,40,83,37,41,13,80,82,73,78,84,32,34,68,45,83,67,82,70,82,69,69,34,59,83,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,66,85,70,68,82,79,80,32,82,69,76,69,65,83,69,83,32,83,67,82,69,69,78,32,72,65,78,68,76,69,32,84,89,80,69,13,66,85,70,68,82,79,80,40,83,37,41,13,80,82,73,78,84,32,34,68,45,83,67,82,70,82,69,69,34,59,83,37,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - - id: assert_direct_buffree_screen_handle + - id: assert_direct_bufdrop_screen_handle type: assert.screen params: contains: "D-SCRFREE 1" - - id: assert_direct_buffree_screen_no_error + - id: assert_direct_bufdrop_screen_no_error type: assert.screen_not_contains params: not_contains: "?RB ERROR" - id: direct_scrput_rejects_buffer_handle type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,67,82,80,85,84,32,77,85,83,84,32,82,69,74,69,67,84,32,66,85,70,70,69,82,32,72,65,78,68,76,69,32,84,89,80,69,13,66,37,61,66,85,70,78,69,87,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,68,45,83,67,82,80,85,84,32,77,85,83,84,32,82,69,74,69,67,84,32,66,85,70,70,69,82,32,72,65,78,68,76,69,32,84,89,80,69,13,66,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_scrput_rejects_buffer_handle @@ -336,7 +336,7 @@ steps: - id: direct_free_buffer_after_type_error type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,66,37,41,13,80,82,73,78,84,32,34,68,45,66,85,70,82,69,69,34,59,66,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,68,82,79,80,40,66,37,41,13,80,82,73,78,84,32,34,68,45,66,85,70,82,69,69,34,59,66,37,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_free_buffer_after_type_error @@ -351,7 +351,7 @@ steps: - id: direct_handle_128_edge type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,78,69,87,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,77,65,88,34,59,72,37,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,77,65,75,69,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,77,65,88,34,59,72,37,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 5.0 - id: assert_direct_handle_128_edge @@ -365,7 +365,7 @@ steps: - id: direct_handle_129_rejected type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,78,69,87,40,49,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,77,65,75,69,40,49,41,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_handle_129_rejected @@ -375,7 +375,7 @@ steps: - id: direct_free_128_handles type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,70,82,69,69,68,34,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,68,82,79,80,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,72,70,82,69,69,68,34,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 5.0 - id: assert_direct_free_128_handles @@ -389,7 +389,7 @@ steps: - id: direct_48k_heap_edge type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,77,37,61,66,85,70,78,69,87,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,68,45,77,65,88,66,85,70,34,59,77,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,77,37,61,66,85,70,77,65,75,69,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,68,45,77,65,88,66,85,70,34,59,77,37,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_48k_heap_edge @@ -399,7 +399,7 @@ steps: - id: direct_48k_heap_full type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,78,69,87,40,49,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,69,37,61,66,85,70,77,65,75,69,40,49,41,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_48k_heap_full @@ -409,7 +409,7 @@ steps: - id: direct_free_48k_heap type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,77,37,41,13,80,82,73,78,84,32,34,68,45,77,65,88,70,82,69,69,34,59,77,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,68,82,79,80,40,77,37,41,13,80,82,73,78,84,32,34,68,45,77,65,88,70,82,69,69,34,59,77,37,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_direct_free_48k_heap @@ -443,7 +443,7 @@ steps: - id: direct_free_screen_heap type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,83,70,82,69,69,68,34,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,68,82,79,80,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,68,45,83,70,82,69,69,68,34,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 5.0 - id: assert_direct_free_screen_heap @@ -640,9 +640,18 @@ steps: - id: resume_after_exit type: input.sequence params: - keys: [145,17,13] + keys: [145,17] inter_key_delay_s: 0.10 - post_delay_s: 3.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_full_suite_resume + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_after_full_suite_exit + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_resume type: screen.wait_contains params: @@ -851,7 +860,7 @@ steps: - id: program_handle_enter_and_list type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,66,85,70,32,82,69,85,32,72,65,78,68,76,69,32,65,76,76,79,67,32,82,69,84,85,82,78,32,70,73,76,76,32,70,82,69,69,32,72,37,61,49,32,83,67,82,69,69,78,32,80,45,66,85,70,13,50,48,32,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,51,48,32,80,82,73,78,84,32,34,80,45,66,85,70,34,59,72,37,13,52,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,53,48,32,66,85,70,70,82,69,69,40,72,37,41,13,54,48,32,80,82,73,78,84,32,34,80,45,70,82,69,69,34,59,72,37,13,76,73,83,84,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,82,69,77,32,66,85,70,32,82,69,85,32,72,65,78,68,76,69,32,65,76,76,79,67,32,82,69,84,85,82,78,32,70,73,76,76,32,70,82,69,69,32,72,37,61,49,32,83,67,82,69,69,78,32,80,45,66,85,70,13,50,48,32,72,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,51,48,32,80,82,73,78,84,32,34,80,45,66,85,70,34,59,72,37,13,52,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,53,48,32,66,85,70,68,82,79,80,40,72,37,41,13,54,48,32,80,82,73,78,84,32,34,80,45,70,82,69,69,34,59,72,37,13,76,73,83,84,13] inter_key_delay_s: 0.03 post_delay_s: 3.0 - id: assert_program_handle_rem diff --git a/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.easyflash.yaml new file mode 100644 index 0000000..9d3c07f --- /dev/null +++ b/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.easyflash.yaml @@ -0,0 +1,106 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_f2_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_hotkey_f2_prompt + - id: assert_chrin_vector_installed + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_installed + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: f2_to_next_loaded_app_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: f2_to_next_loaded_app_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: f2_to_next_loaded_app + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_target_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f2 + - id: assert_keyboard_buffer_empty_after_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_target_stable_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: target_stable_after_readybasic_f2 + - id: assert_keyboard_buffer_empty_stable_after_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.regular.yaml new file mode 100644 index 0000000..638755e --- /dev/null +++ b/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f2_probe.regular.yaml @@ -0,0 +1,91 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_f2_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_f2_prompt + - id: assert_chrin_vector_installed + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_installed + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: f2_to_next_loaded_app_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: f2_to_next_loaded_app_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: f2_to_next_loaded_app + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_target_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f2 + - id: assert_keyboard_buffer_empty_after_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_target_stable_after_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: target_stable_after_readybasic_f2 + - id: assert_keyboard_buffer_empty_stable_after_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.easyflash.yaml new file mode 100644 index 0000000..4730502 --- /dev/null +++ b/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.easyflash.yaml @@ -0,0 +1,231 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: easyflash_wait_launcher + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: easyflash_readybasic_launcher + - id: easyflash_start_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: readybasic_hotkey_prompt + - id: assert_chrin_vector_installed + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_installed + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: seed_readybasic_state + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,72,79,84,34,13,80,82,73,78,84,32,34,72,79,84,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: seed_readybasic_state_capture + type: screen.capture + params: + label: seed_readybasic_state + pitch: after seeding ReadyBASIC state before hotkey tests + - id: assert_seed_state + type: assert.screen + params: + contains: "HOTSEED 321 :HOT" + - id: ctrl_b_from_readybasic_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: ctrl_b_from_readybasic_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: ctrl_b_from_readybasic + type: monitor.command + params: + command: "raw:g 033c" + - id: ctrl_b_from_readybasic_capture + type: screen.capture + params: + label: readybasic_hotkey_ctrl_b_from_readybasic_after_input + pitch: after Ctrl+B input before launcher wait + - id: wait_launcher_after_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: launcher_after_readybasic_ctrl_b + - id: assert_keyboard_buffer_empty_after_ctrl_b + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: move_readybasic_to_editor_capture + type: screen.capture + params: + label: readybasic_hotkey_readybasic_to_editor_menu + pitch: after navigating to editor from launcher + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_loaded_for_hotkey_probe + - id: ctrl_b_from_editor + type: monitor.command + params: + command: "keybuf \\x02" + - id: ctrl_b_from_editor_capture + type: screen.capture + params: + label: readybasic_hotkey_ctrl_b_from_editor_after_input + pitch: after Ctrl+B input from editor before launcher wait + - id: wait_launcher_after_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic_for_f4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: move_editor_to_readybasic_for_f4_capture + type: screen.capture + params: + label: readybasic_hotkey_editor_to_readybasic_menu + pitch: after navigating back to ReadyBASIC before F4 test + - id: wait_readybasic_resume_for_f4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_before_f4 + - id: assert_readybasic_state_after_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,79,84,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_state_after_ctrl_b_capture + type: screen.capture + params: + label: readybasic_hotkey_state_after_ctrl_b + pitch: after typing HOTSTATE verification command + - id: assert_hot_state_after_ctrl_b + type: assert.screen + params: + contains: "HOTSTATE 321 :HOT" + - id: build_list_timing_program + type: input.sequence + params: + keys: [49,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,49,34,13,50,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,50,34,13,51,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,51,34,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.2 + - id: build_list_timing_program_capture + type: screen.capture + params: + label: readybasic_hotkey_list_before_f4 + pitch: after building LIST program before F4 + - id: wait_list_visible_before_f4 + type: screen.wait_contains + params: + text: "HOTLIST3" + wait_timeout_s: 20 + capture_label: readybasic_list_before_f4 + - id: f4_to_prev_loaded_app_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 05 85 CB 20 7E C1 A9 01 8D 8D 02 A9 05 85 CB 20 7E C1 4C 74 A4" + - id: f4_to_prev_loaded_app_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: f4_to_prev_loaded_app + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_target_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f4 + - id: assert_keyboard_buffer_empty_after_f4 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_target_stable_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: target_stable_after_readybasic_f4 + - id: assert_keyboard_buffer_empty_stable_after_f4 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.regular.yaml new file mode 100644 index 0000000..4a70ed6 --- /dev/null +++ b/agentworking/easyflash_full_vice_plans/readybasic_hotkey_f4_probe.regular.yaml @@ -0,0 +1,216 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_hotkey_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_readybasic_prompt + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: readybasic_hotkey_prompt + - id: assert_chrin_vector_installed + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_installed + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: seed_readybasic_state + type: input.sequence + params: + keys: [86,37,61,51,50,49,58,86,83,36,61,34,72,79,84,34,13,80,82,73,78,84,32,34,72,79,84,83,69,69,68,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: seed_readybasic_state_capture + type: screen.capture + params: + label: seed_readybasic_state + pitch: after seeding ReadyBASIC state before hotkey tests + - id: assert_seed_state + type: assert.screen + params: + contains: "HOTSEED 321 :HOT" + - id: ctrl_b_from_readybasic_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: ctrl_b_from_readybasic_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: ctrl_b_from_readybasic + type: monitor.command + params: + command: "raw:g 033c" + - id: ctrl_b_from_readybasic_capture + type: screen.capture + params: + label: readybasic_hotkey_ctrl_b_from_readybasic_after_input + pitch: after Ctrl+B input before launcher wait + - id: wait_launcher_after_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: launcher_after_readybasic_ctrl_b + - id: assert_keyboard_buffer_empty_after_ctrl_b + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: move_readybasic_to_editor_capture + type: screen.capture + params: + label: readybasic_hotkey_readybasic_to_editor_menu + pitch: after navigating to editor from launcher + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: editor_loaded_for_hotkey_probe + - id: ctrl_b_from_editor + type: monitor.command + params: + command: "keybuf \\x02" + - id: ctrl_b_from_editor_capture + type: screen.capture + params: + label: readybasic_hotkey_ctrl_b_from_editor_after_input + pitch: after Ctrl+B input from editor before launcher wait + - id: wait_launcher_after_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic_for_f4 + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: move_editor_to_readybasic_for_f4_capture + type: screen.capture + params: + label: readybasic_hotkey_editor_to_readybasic_menu + pitch: after navigating back to ReadyBASIC before F4 test + - id: wait_readybasic_resume_for_f4 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: readybasic_resume_before_f4 + - id: assert_readybasic_state_after_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,72,79,84,83,84,65,84,69,34,59,86,37,59,34,58,34,59,86,83,36,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_state_after_ctrl_b_capture + type: screen.capture + params: + label: readybasic_hotkey_state_after_ctrl_b + pitch: after typing HOTSTATE verification command + - id: assert_hot_state_after_ctrl_b + type: assert.screen + params: + contains: "HOTSTATE 321 :HOT" + - id: build_list_timing_program + type: input.sequence + params: + keys: [49,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,49,34,13,50,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,50,34,13,51,48,32,80,82,73,78,84,32,34,72,79,84,76,73,83,84,51,34,13,76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.2 + - id: build_list_timing_program_capture + type: screen.capture + params: + label: readybasic_hotkey_list_before_f4 + pitch: after building LIST program before F4 + - id: wait_list_visible_before_f4 + type: screen.wait_contains + params: + text: "HOTLIST3" + wait_timeout_s: 20 + capture_label: readybasic_list_before_f4 + - id: f4_to_prev_loaded_app_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 05 85 CB 20 7E C1 A9 01 8D 8D 02 A9 05 85 CB 20 7E C1 4C 74 A4" + - id: f4_to_prev_loaded_app_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: f4_to_prev_loaded_app + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_target_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 60 + capture_label: target_after_readybasic_f4 + - id: assert_keyboard_buffer_empty_after_f4 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_target_stable_after_f4 + type: screen.wait_contains + params: + text: "CLIPBOARD" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: target_stable_after_readybasic_f4 + - id: assert_keyboard_buffer_empty_stable_after_f4 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.easyflash.yaml new file mode 100644 index 0000000..acb7a98 --- /dev/null +++ b/agentworking/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.easyflash.yaml @@ -0,0 +1,258 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_keyboard_regression_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_launcher_initial + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: keyboard_regression_launcher_initial + - id: launch_readybasic_from_launcher + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_initial + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 180 + capture_label: keyboard_regression_readybasic_initial + - id: assert_readybasic_bank_initial + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_initial + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_initial + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: assert_warp_enabled + type: warp.set + params: + enabled: true + capture_after: false + - id: type_space_string_once + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,65,32,66,32,67,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_single_space_string_output + type: assert.screen + params: + contains: "A B C" + - id: assert_keyboard_buffer_empty_after_space_string + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: type_partial_line_10 + type: input.sequence + params: + keys: [49,48] + inter_key_delay_s: 0.03 + post_delay_s: 0.1 + - id: partial_line_ctrl_b_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: partial_line_ctrl_b_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: partial_line_ctrl_b + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_partial_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: keyboard_regression_launcher_after_partial_ctrl_b + - id: assert_no_rem_after_partial_ctrl_b + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: assert_launcher_bank_after_partial_ctrl_b + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_after_partial_ctrl_b + type: monitor.command + params: + command: "keybuf \\x0d" + - id: wait_readybasic_after_partial_ctrl_b + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: keyboard_regression_readybasic_after_partial_ctrl_b + - id: list_after_partial_ctrl_b + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_no_rem_listed_after_partial_ctrl_b + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: type_after_partial_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,65,70,84,69,82,67,84,82,76,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_type_after_partial_ctrl_b + type: assert.screen + params: + contains: "AFTERCTRL" + - id: clean_ctrl_b_to_launcher_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: clean_ctrl_b_to_launcher_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: clean_ctrl_b_to_launcher + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_to_load_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: keyboard_regression_editor_loaded + - id: editor_ctrl_b_to_launcher + type: monitor.command + params: + command: "keybuf \\x02" + - id: wait_launcher_after_editor_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_before_partial_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: keyboard_regression_readybasic_before_partial_f2 + - id: type_partial_line_20 + type: input.sequence + params: + keys: [50,48] + inter_key_delay_s: 0.03 + post_delay_s: 0.1 + - id: partial_line_f2_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: partial_line_f2_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: partial_line_f2 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_editor_after_partial_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: keyboard_regression_editor_after_partial_f2 + - id: assert_no_rem_after_partial_f2 + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: assert_keylog_restored_after_partial_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "48 EB" + - id: assert_chrin_restored_after_partial_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "57 F1" + - id: assert_keyboard_buffer_empty_after_partial_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.regular.yaml new file mode 100644 index 0000000..45625aa --- /dev/null +++ b/agentworking/easyflash_full_vice_plans/readybasic_keyboard_regression_probe.regular.yaml @@ -0,0 +1,255 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_keyboard_regression_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_launcher_initial + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 180 + capture_label: keyboard_regression_launcher_initial + - id: launch_readybasic_from_launcher + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_initial + type: screen.wait_contains + params: + text: "readybasic" + wait_timeout_s: 180 + capture_label: keyboard_regression_readybasic_initial + - id: assert_readybasic_bank_initial + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_initial + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_initial + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: assert_warp_enabled + type: warp.set + params: + enabled: true + capture_after: false + - id: type_space_string_once + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,65,32,66,32,67,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_single_space_string_output + type: assert.screen + params: + contains: "A B C" + - id: assert_keyboard_buffer_empty_after_space_string + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: type_partial_line_10 + type: input.sequence + params: + keys: [49,48] + inter_key_delay_s: 0.03 + post_delay_s: 0.1 + - id: partial_line_ctrl_b_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: partial_line_ctrl_b_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: partial_line_ctrl_b + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_partial_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: keyboard_regression_launcher_after_partial_ctrl_b + - id: assert_no_rem_after_partial_ctrl_b + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: assert_launcher_bank_after_partial_ctrl_b + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_after_partial_ctrl_b + type: monitor.command + params: + command: "keybuf \\x0d" + - id: wait_readybasic_after_partial_ctrl_b + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: keyboard_regression_readybasic_after_partial_ctrl_b + - id: list_after_partial_ctrl_b + type: input.sequence + params: + keys: [76,73,83,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_no_rem_listed_after_partial_ctrl_b + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: type_after_partial_ctrl_b + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,65,70,84,69,82,67,84,82,76,34,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_type_after_partial_ctrl_b + type: assert.screen + params: + contains: "AFTERCTRL" + - id: clean_ctrl_b_to_launcher_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: clean_ctrl_b_to_launcher_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: clean_ctrl_b_to_launcher + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_to_load_editor + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_readybasic_to_editor + type: input.sequence + params: + keys: [145,145,145,145,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_editor_loaded + type: screen.wait_contains + params: + text: "editor" + wait_timeout_s: 60 + capture_label: keyboard_regression_editor_loaded + - id: editor_ctrl_b_to_launcher + type: monitor.command + params: + command: "keybuf \\x02" + - id: wait_launcher_after_editor_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + - id: move_editor_to_readybasic + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.0 + - id: wait_readybasic_before_partial_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 60 + capture_label: keyboard_regression_readybasic_before_partial_f2 + - id: type_partial_line_20 + type: input.sequence + params: + keys: [50,48] + inter_key_delay_s: 0.03 + post_delay_s: 0.1 + - id: partial_line_f2_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: partial_line_f2_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: partial_line_f2 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_editor_after_partial_f2 + type: screen.wait_contains + params: + text: "CALENDAR 26" + wait_timeout_s: 60 + capture_label: keyboard_regression_editor_after_partial_f2 + - id: assert_no_rem_after_partial_f2 + type: assert.screen_not_contains + params: + not_contains: "REM" + - id: assert_keylog_restored_after_partial_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "48 EB" + - id: assert_chrin_restored_after_partial_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "57 F1" + - id: assert_keyboard_buffer_empty_after_partial_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" diff --git a/agentworking/easyflash_full_vice_plans/readybasic_large_vars_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_large_vars_probe.easyflash.yaml index d075cb2..71245b6 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_large_vars_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_large_vars_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -51,7 +51,7 @@ steps: - id: wait_readybasic_prompt type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 capture_label: readybasic_prompt - id: build_program_lines @@ -88,7 +88,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } @@ -102,7 +102,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } @@ -120,7 +120,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } @@ -134,7 +134,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } @@ -146,7 +146,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } - id: dim_large_array @@ -165,7 +165,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } @@ -199,11 +199,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_readybasic - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_resume type: screen.wait_contains params: @@ -219,7 +217,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } @@ -253,7 +251,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } diff --git a/agentworking/easyflash_full_vice_plans/readybasic_large_vars_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_large_vars_probe.regular.yaml index 3d740e1..9d8ecc1 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_large_vars_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_large_vars_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -73,7 +73,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } @@ -87,7 +87,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } @@ -105,7 +105,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } @@ -119,7 +119,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } @@ -131,7 +131,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } - id: dim_large_array @@ -150,7 +150,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } @@ -184,11 +184,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_readybasic - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_resume type: screen.wait_contains params: @@ -204,7 +202,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } @@ -238,7 +236,7 @@ steps: type: dump.memory_ranges params: ranges: - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_var_table_2b00, start: 0x2B00, end: 0x2B3F } - { label: basic_vars_start_1200, start: 0x1200, end: 0x1600 } - { label: string_heap_9f80, start: 0x9F80, end: 0x9FFF } diff --git a/agentworking/easyflash_full_vice_plans/readybasic_lifecycle_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_lifecycle_probe.easyflash.yaml index 7a82906..e32e882 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_lifecycle_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_lifecycle_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -51,17 +51,17 @@ steps: - id: wait_readybasic_loading type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 - id: capture_after_readybasic_loading type: screen.capture params: label: after_readybasic_loading - note: after READYBASIC first appears, before READY prompt wait + pitch: after READYBASIC first appears, before READY prompt wait - id: wait_readybasic_prompt type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 capture_label: readybasic_prompt - id: dump_prompt_core @@ -92,7 +92,7 @@ steps: type: screen.capture params: label: after_print_1 - note: after direct print 1 + pitch: after direct print 1 - id: assert_print_1_no_error type: assert.screen_not_contains params: @@ -111,7 +111,7 @@ steps: type: screen.capture params: label: after_print_hello - note: after direct print hello + pitch: after direct print hello - id: assert_print_hello_no_error type: assert.screen_not_contains params: @@ -130,7 +130,7 @@ steps: type: screen.capture params: label: after_10_print_1 - note: after numbered line entry + pitch: after numbered line entry - id: dump_line_entry_core type: dump.memory_ranges params: @@ -153,7 +153,7 @@ steps: type: screen.capture params: label: after_list - note: after LIST + pitch: after LIST - id: assert_list_has_line type: assert.screen params: @@ -168,7 +168,7 @@ steps: type: screen.capture params: label: after_run - note: after RUN + pitch: after RUN - id: assert_run_no_error type: assert.screen_not_contains params: @@ -191,7 +191,7 @@ steps: type: screen.capture params: label: after_rb_direct_text - note: after direct scalar command statement + pitch: after direct scalar command statement - id: dump_rb_direct_text_core type: dump.memory_ranges params: @@ -210,7 +210,7 @@ steps: type: screen.capture params: label: after_rb_direct_add - note: after direct ZADD16 statement + pitch: after direct ZADD16 statement - id: dump_rb_direct_add_core type: dump.memory_ranges params: @@ -235,7 +235,7 @@ steps: type: screen.capture params: label: after_run_with_rb_line - note: after RUN with stored ReadyBASIC command + pitch: after RUN with stored ReadyBASIC command - id: assert_run_with_rb_line type: assert.screen params: @@ -250,7 +250,7 @@ steps: type: screen.capture params: label: after_exit - note: after uppercase exit command + pitch: after uppercase exit command - id: wait_launcher_after_exit type: screen.wait_contains params: @@ -259,9 +259,20 @@ steps: - id: type_resume_readybasic type: input.sequence params: - keys: [145,17,13] + keys: [145,17] inter_key_delay_s: 0.10 - post_delay_s: 3.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_resume + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + # The binary-monitor input helper can drop a lone RETURN immediately after + # ReadyBASIC's EXIT return. VICE's text-monitor keybuf path is deterministic. + - id: launch_readybasic_after_exit + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_prompt_after_resume type: screen.wait_contains params: @@ -279,7 +290,7 @@ steps: type: screen.capture params: label: after_list_after_resume - note: after relaunching ReadyBASIC from REU and LISTing + pitch: after relaunching ReadyBASIC from REU and LISTing - id: assert_resume_preserved_line type: assert.screen params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_lifecycle_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_lifecycle_probe.regular.yaml index 5c16e2b..00df2ac 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_lifecycle_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_lifecycle_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -42,7 +42,7 @@ steps: type: screen.capture params: label: after_readybasic_loading - note: after READYBASIC first appears, before READY prompt wait + pitch: after READYBASIC first appears, before READY prompt wait - id: wait_readybasic_prompt type: screen.wait_contains params: @@ -77,7 +77,7 @@ steps: type: screen.capture params: label: after_print_1 - note: after direct print 1 + pitch: after direct print 1 - id: assert_print_1_no_error type: assert.screen_not_contains params: @@ -96,7 +96,7 @@ steps: type: screen.capture params: label: after_print_hello - note: after direct print hello + pitch: after direct print hello - id: assert_print_hello_no_error type: assert.screen_not_contains params: @@ -115,7 +115,7 @@ steps: type: screen.capture params: label: after_10_print_1 - note: after numbered line entry + pitch: after numbered line entry - id: dump_line_entry_core type: dump.memory_ranges params: @@ -138,7 +138,7 @@ steps: type: screen.capture params: label: after_list - note: after LIST + pitch: after LIST - id: assert_list_has_line type: assert.screen params: @@ -153,7 +153,7 @@ steps: type: screen.capture params: label: after_run - note: after RUN + pitch: after RUN - id: assert_run_no_error type: assert.screen_not_contains params: @@ -176,7 +176,7 @@ steps: type: screen.capture params: label: after_rb_direct_text - note: after direct scalar command statement + pitch: after direct scalar command statement - id: dump_rb_direct_text_core type: dump.memory_ranges params: @@ -195,7 +195,7 @@ steps: type: screen.capture params: label: after_rb_direct_add - note: after direct ZADD16 statement + pitch: after direct ZADD16 statement - id: dump_rb_direct_add_core type: dump.memory_ranges params: @@ -220,7 +220,7 @@ steps: type: screen.capture params: label: after_run_with_rb_line - note: after RUN with stored ReadyBASIC command + pitch: after RUN with stored ReadyBASIC command - id: assert_run_with_rb_line type: assert.screen params: @@ -235,7 +235,7 @@ steps: type: screen.capture params: label: after_exit - note: after uppercase exit command + pitch: after uppercase exit command - id: wait_launcher_after_exit type: screen.wait_contains params: @@ -244,9 +244,20 @@ steps: - id: type_resume_readybasic type: input.sequence params: - keys: [145,17,13] + keys: [145,17] inter_key_delay_s: 0.10 - post_delay_s: 3.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_readybasic_resume + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + # The binary-monitor input helper can drop a lone RETURN immediately after + # ReadyBASIC's EXIT return. VICE's text-monitor keybuf path is deterministic. + - id: launch_readybasic_after_exit + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_prompt_after_resume type: screen.wait_contains params: @@ -264,7 +275,7 @@ steps: type: screen.capture params: label: after_list_after_resume - note: after relaunching ReadyBASIC from REU and LISTing + pitch: after relaunching ReadyBASIC from REU and LISTing - id: assert_resume_preserved_line type: assert.screen params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_module_overlay_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_module_overlay_probe.easyflash.yaml index c971dd1..fbc2615 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_module_overlay_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_module_overlay_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -51,13 +51,13 @@ steps: - id: wait_readybasic_prompt type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 capture_label: readybasic_module_overlay_prompt - id: builtin_overlay_bank_probe type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,70,82,69,69,77,69,77,40,41,13,80,82,73,78,84,32,34,83,76,79,84,83,34,59,90,83,76,79,84,48,40,41,59,34,47,34,59,90,83,76,79,84,49,40,41,59,34,47,34,59,90,83,76,79,84,50,40,41,13,80,82,73,78,84,32,34,83,80,65,78,34,59,90,83,80,65,78,40,41,13,80,82,73,78,84,32,34,79,86,76,34,59,90,79,86,76,49,40,41,59,34,47,34,59,90,79,86,76,50,40,41,13,80,82,73,78,84,32,34,67,80,89,34,59,90,67,80,89,82,83,84,40,41,59,34,47,34,59,90,67,79,80,89,40,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,77,69,77,65,86,76,40,41,13,80,82,73,78,84,32,34,83,76,79,84,83,34,59,90,83,76,79,84,48,40,41,59,34,47,34,59,90,83,76,79,84,49,40,41,59,34,47,34,59,90,83,76,79,84,50,40,41,13,80,82,73,78,84,32,34,83,80,65,78,34,59,90,83,80,65,78,40,41,13,80,82,73,78,84,32,34,79,86,76,34,59,90,79,86,76,49,40,41,59,34,47,34,59,90,79,86,76,50,40,41,13,80,82,73,78,84,32,34,67,80,89,34,59,90,67,80,89,82,83,84,40,41,59,34,47,34,59,90,67,79,80,89,40,41,13] inter_key_delay_s: 0.03 post_delay_s: 1.5 - id: capture_builtin_overlay_bank_probe @@ -119,7 +119,7 @@ steps: - id: rbm_sample3_probe type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,82,66,77,51,32,70,73,82,83,84,32,67,65,76,76,83,58,32,69,65,67,72,32,79,86,69,82,76,65,89,32,83,84,65,84,69,32,83,84,65,82,84,83,32,65,84,32,90,69,82,79,32,65,70,84,69,82,32,76,79,65,68,13,80,82,73,78,84,32,34,77,51,65,34,59,90,83,65,65,40,41,59,34,47,34,59,90,83,69,66,40,41,13,80,82,73,78,84,32,34,77,51,66,34,59,90,84,65,65,40,41,59,34,47,34,59,90,84,69,66,40,41,13,80,82,73,78,84,32,34,77,51,67,34,59,90,85,65,65,40,41,59,34,47,34,59,90,85,69,66,40,41,13,70,82,69,69,77,69,77,40,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,82,66,77,51,32,70,73,82,83,84,32,67,65,76,76,83,58,32,69,65,67,72,32,79,86,69,82,76,65,89,32,83,84,65,84,69,32,83,84,65,82,84,83,32,65,84,32,90,69,82,79,32,65,70,84,69,82,32,76,79,65,68,13,80,82,73,78,84,32,34,77,51,65,34,59,90,83,65,65,40,41,59,34,47,34,59,90,83,69,66,40,41,13,80,82,73,78,84,32,34,77,51,66,34,59,90,84,65,65,40,41,59,34,47,34,59,90,84,69,66,40,41,13,80,82,73,78,84,32,34,77,51,67,34,59,90,85,65,65,40,41,59,34,47,34,59,90,85,69,66,40,41,13,77,69,77,65,86,76,40,41,13] inter_key_delay_s: 0.03 post_delay_s: 2.0 - id: capture_rbm_sample3 diff --git a/agentworking/easyflash_full_vice_plans/readybasic_module_overlay_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_module_overlay_probe.regular.yaml index f4c6c0a..6962aa4 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_module_overlay_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_module_overlay_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -42,7 +42,7 @@ steps: - id: builtin_overlay_bank_probe type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,70,82,69,69,77,69,77,40,41,13,80,82,73,78,84,32,34,83,76,79,84,83,34,59,90,83,76,79,84,48,40,41,59,34,47,34,59,90,83,76,79,84,49,40,41,59,34,47,34,59,90,83,76,79,84,50,40,41,13,80,82,73,78,84,32,34,83,80,65,78,34,59,90,83,80,65,78,40,41,13,80,82,73,78,84,32,34,79,86,76,34,59,90,79,86,76,49,40,41,59,34,47,34,59,90,79,86,76,50,40,41,13,80,82,73,78,84,32,34,67,80,89,34,59,90,67,80,89,82,83,84,40,41,59,34,47,34,59,90,67,79,80,89,40,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,77,69,77,65,86,76,40,41,13,80,82,73,78,84,32,34,83,76,79,84,83,34,59,90,83,76,79,84,48,40,41,59,34,47,34,59,90,83,76,79,84,49,40,41,59,34,47,34,59,90,83,76,79,84,50,40,41,13,80,82,73,78,84,32,34,83,80,65,78,34,59,90,83,80,65,78,40,41,13,80,82,73,78,84,32,34,79,86,76,34,59,90,79,86,76,49,40,41,59,34,47,34,59,90,79,86,76,50,40,41,13,80,82,73,78,84,32,34,67,80,89,34,59,90,67,80,89,82,83,84,40,41,59,34,47,34,59,90,67,79,80,89,40,41,13] inter_key_delay_s: 0.03 post_delay_s: 1.5 - id: capture_builtin_overlay_bank_probe @@ -104,7 +104,7 @@ steps: - id: rbm_sample3_probe type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,82,66,77,51,32,70,73,82,83,84,32,67,65,76,76,83,58,32,69,65,67,72,32,79,86,69,82,76,65,89,32,83,84,65,84,69,32,83,84,65,82,84,83,32,65,84,32,90,69,82,79,32,65,70,84,69,82,32,76,79,65,68,13,80,82,73,78,84,32,34,77,51,65,34,59,90,83,65,65,40,41,59,34,47,34,59,90,83,69,66,40,41,13,80,82,73,78,84,32,34,77,51,66,34,59,90,84,65,65,40,41,59,34,47,34,59,90,84,69,66,40,41,13,80,82,73,78,84,32,34,77,51,67,34,59,90,85,65,65,40,41,59,34,47,34,59,90,85,69,66,40,41,13,70,82,69,69,77,69,77,40,41,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,69,77,32,82,66,77,51,32,70,73,82,83,84,32,67,65,76,76,83,58,32,69,65,67,72,32,79,86,69,82,76,65,89,32,83,84,65,84,69,32,83,84,65,82,84,83,32,65,84,32,90,69,82,79,32,65,70,84,69,82,32,76,79,65,68,13,80,82,73,78,84,32,34,77,51,65,34,59,90,83,65,65,40,41,59,34,47,34,59,90,83,69,66,40,41,13,80,82,73,78,84,32,34,77,51,66,34,59,90,84,65,65,40,41,59,34,47,34,59,90,84,69,66,40,41,13,80,82,73,78,84,32,34,77,51,67,34,59,90,85,65,65,40,41,59,34,47,34,59,90,85,69,66,40,41,13,77,69,77,65,86,76,40,41,13] inter_key_delay_s: 0.03 post_delay_s: 2.0 - id: capture_rbm_sample3 diff --git a/agentworking/easyflash_full_vice_plans/readybasic_plugin_command_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_plugin_command_probe.easyflash.yaml index 4396a40..617fc2d 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_plugin_command_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_plugin_command_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -51,7 +51,7 @@ steps: - id: wait_readybasic_prompt type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 capture_label: readybasic_plugin_prompt - id: dump_initial_plugin_state @@ -66,7 +66,7 @@ steps: - { label: hidden_visible_a000, start: 0xA000, end: 0xA5FF } - { label: hidden_overlay_a800, start: 0xA800, end: 0xA8FF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } - - { label: reu_alloc_table_c600, start: 0xC600, end: 0xC6FF } + - { label: shim_resident_c600, start: 0xC600, end: 0xC9FF } - id: probe_01_ping type: input.sequence @@ -194,17 +194,17 @@ steps: params: contains: "RANGE 7 10" - - id: probe_08_bufnew + - id: probe_08_bufmake type: input.sequence params: - keys: [72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,80,82,73,78,84,32,34,66,85,70,78,69,87,34,59,72,37,59,34,58,69,78,68,34,13] + keys: [72,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,80,82,73,78,84,32,34,66,85,70,77,65,75,69,34,59,72,37,59,34,58,69,78,68,34,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - - id: assert_08_bufnew + - id: assert_08_bufmake type: assert.screen params: - contains: "BUFNEW 1 :END" - - id: dump_08_bufnew + contains: "BUFMAKE 1 :END" + - id: dump_08_bufmake type: dump.memory_ranges params: ranges: *plugin_ranges @@ -224,17 +224,17 @@ steps: params: not_contains: "?RB ERROR" - - id: probe_10_buffree + - id: probe_10_bufdrop type: input.sequence params: - keys: [66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,32,79,75,34,13] + keys: [66,85,70,68,82,79,80,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,32,79,75,34,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - - id: assert_10_buffree + - id: assert_10_bufdrop type: assert.screen params: contains: "FREE OK" - - id: assert_10_buffree_no_error + - id: assert_10_bufdrop_no_error type: assert.screen_not_contains params: not_contains: "?RB ERROR" @@ -263,24 +263,24 @@ steps: type: assert.screen params: contains: "?RB ERROR 40" - - id: probe_10c_buffree_screen_handle + - id: probe_10c_bufdrop_screen_handle type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,83,37,41,13,80,82,73,78,84,32,34,83,67,82,70,82,69,69,34,59,83,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,68,82,79,80,40,83,37,41,13,80,82,73,78,84,32,34,83,67,82,70,82,69,69,34,59,83,37,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - - id: assert_10c_buffree_screen_handle + - id: assert_10c_bufdrop_screen_handle type: assert.screen params: contains: "SCRFREE 1" - - id: assert_10c_buffree_screen_no_error + - id: assert_10c_bufdrop_screen_no_error type: assert.screen_not_contains params: not_contains: "?RB ERROR" - id: probe_10d_scrput_rejects_buffer_handle type: input.sequence params: - keys: [66,37,61,66,85,70,78,69,87,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] + keys: [66,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10d_scrput_rejects_buffer_handle @@ -290,7 +290,7 @@ steps: - id: probe_10e_free_buffer_after_type_error type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,66,37,41,13,80,82,73,78,84,32,34,66,85,70,82,69,69,34,59,66,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,68,82,79,80,40,66,37,41,13,80,82,73,78,84,32,34,66,85,70,82,69,69,34,59,66,37,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10e_free_buffer_after_type_error @@ -305,7 +305,7 @@ steps: - id: probe_10f_allocate_128_handles type: input.sequence params: - keys: [78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,78,69,87,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,77,65,88,34,59,72,37,13,82,85,78,13] + keys: [78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,77,65,75,69,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,77,65,88,34,59,72,37,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 4.0 - id: assert_10f_allocate_128_handles @@ -320,7 +320,7 @@ steps: - id: probe_10g_handle_129_rejected type: input.sequence params: - keys: [69,37,61,66,85,70,78,69,87,40,49,41,13] + keys: [69,37,61,66,85,70,77,65,75,69,40,49,41,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10g_handle_129_rejected @@ -331,7 +331,7 @@ steps: - id: probe_10h_free_128_handles type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,70,82,69,69,68,34,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,68,82,79,80,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,70,82,69,69,68,34,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 4.0 - id: assert_10h_free_128_handles @@ -346,7 +346,7 @@ steps: - id: probe_10i_reuse_low_handle type: input.sequence params: - keys: [82,37,61,66,85,70,78,69,87,40,49,41,13,80,82,73,78,84,32,34,72,82,69,85,83,69,34,59,82,37,13,66,85,70,70,82,69,69,40,82,37,41,13] + keys: [82,37,61,66,85,70,77,65,75,69,40,49,41,13,80,82,73,78,84,32,34,72,82,69,85,83,69,34,59,82,37,13,66,85,70,68,82,79,80,40,82,37,41,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10i_reuse_low_handle @@ -361,7 +361,7 @@ steps: - id: probe_10j_allocate_48k_heap type: input.sequence params: - keys: [77,37,61,66,85,70,78,69,87,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,72,77,65,88,66,85,70,34,59,77,37,13] + keys: [77,37,61,66,85,70,77,65,75,69,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,72,77,65,88,66,85,70,34,59,77,37,13] inter_key_delay_s: 0.03 post_delay_s: 1.0 - id: assert_10j_allocate_48k_heap @@ -376,7 +376,7 @@ steps: - id: probe_10k_heap_full_rejected type: input.sequence params: - keys: [69,37,61,66,85,70,78,69,87,40,49,41,13] + keys: [69,37,61,66,85,70,77,65,75,69,40,49,41,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10k_heap_full_rejected @@ -387,7 +387,7 @@ steps: - id: probe_10l_free_48k_heap type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,77,37,41,13,80,82,73,78,84,32,34,72,77,65,88,70,82,69,69,34,59,77,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,68,82,79,80,40,77,37,41,13,80,82,73,78,84,32,34,72,77,65,88,70,82,69,69,34,59,77,37,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10l_free_48k_heap @@ -428,7 +428,7 @@ steps: - id: probe_10o_free_screen_handles type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,83,70,82,69,69,68,34,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,68,82,79,80,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,83,70,82,69,69,68,34,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 4.0 - id: assert_10o_free_screen_handles @@ -626,9 +626,20 @@ steps: - id: resume_after_exit type: input.sequence params: - keys: [145,17,13] + keys: [145,17] inter_key_delay_s: 0.10 - post_delay_s: 3.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_plugin_resume + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + # Use VICE's text-monitor keyboard buffer for the post-EXIT RETURN; the + # binary-monitor input helper can otherwise drop this lone key. + - id: launch_readybasic_after_plugin_exit + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_resume type: screen.wait_contains params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_plugin_command_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_plugin_command_probe.regular.yaml index da92967..4f1ac57 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_plugin_command_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_plugin_command_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -51,7 +51,7 @@ steps: - { label: hidden_visible_a000, start: 0xA000, end: 0xA5FF } - { label: hidden_overlay_a800, start: 0xA800, end: 0xA8FF } - { label: bridge_c000, start: 0xC000, end: 0xC5FF } - - { label: reu_alloc_table_c600, start: 0xC600, end: 0xC6FF } + - { label: shim_resident_c600, start: 0xC600, end: 0xC9FF } - id: probe_01_ping type: input.sequence @@ -179,17 +179,17 @@ steps: params: contains: "RANGE 7 10" - - id: probe_08_bufnew + - id: probe_08_bufmake type: input.sequence params: - keys: [72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,80,82,73,78,84,32,34,66,85,70,78,69,87,34,59,72,37,59,34,58,69,78,68,34,13] + keys: [72,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,80,82,73,78,84,32,34,66,85,70,77,65,75,69,34,59,72,37,59,34,58,69,78,68,34,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - - id: assert_08_bufnew + - id: assert_08_bufmake type: assert.screen params: - contains: "BUFNEW 1 :END" - - id: dump_08_bufnew + contains: "BUFMAKE 1 :END" + - id: dump_08_bufmake type: dump.memory_ranges params: ranges: *plugin_ranges @@ -209,17 +209,17 @@ steps: params: not_contains: "?RB ERROR" - - id: probe_10_buffree + - id: probe_10_bufdrop type: input.sequence params: - keys: [66,85,70,70,82,69,69,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,32,79,75,34,13] + keys: [66,85,70,68,82,79,80,40,72,37,41,13,80,82,73,78,84,32,34,70,82,69,69,32,79,75,34,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - - id: assert_10_buffree + - id: assert_10_bufdrop type: assert.screen params: contains: "FREE OK" - - id: assert_10_buffree_no_error + - id: assert_10_bufdrop_no_error type: assert.screen_not_contains params: not_contains: "?RB ERROR" @@ -248,24 +248,24 @@ steps: type: assert.screen params: contains: "?RB ERROR 40" - - id: probe_10c_buffree_screen_handle + - id: probe_10c_bufdrop_screen_handle type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,83,37,41,13,80,82,73,78,84,32,34,83,67,82,70,82,69,69,34,59,83,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,68,82,79,80,40,83,37,41,13,80,82,73,78,84,32,34,83,67,82,70,82,69,69,34,59,83,37,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - - id: assert_10c_buffree_screen_handle + - id: assert_10c_bufdrop_screen_handle type: assert.screen params: contains: "SCRFREE 1" - - id: assert_10c_buffree_screen_no_error + - id: assert_10c_bufdrop_screen_no_error type: assert.screen_not_contains params: not_contains: "?RB ERROR" - id: probe_10d_scrput_rejects_buffer_handle type: input.sequence params: - keys: [66,37,61,66,85,70,78,69,87,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] + keys: [66,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,83,67,82,80,85,84,40,66,37,41,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10d_scrput_rejects_buffer_handle @@ -275,7 +275,7 @@ steps: - id: probe_10e_free_buffer_after_type_error type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,66,37,41,13,80,82,73,78,84,32,34,66,85,70,82,69,69,34,59,66,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,68,82,79,80,40,66,37,41,13,80,82,73,78,84,32,34,66,85,70,82,69,69,34,59,66,37,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10e_free_buffer_after_type_error @@ -290,7 +290,7 @@ steps: - id: probe_10f_allocate_128_handles type: input.sequence params: - keys: [78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,78,69,87,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,77,65,88,34,59,72,37,13,82,85,78,13] + keys: [78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,72,37,61,66,85,70,77,65,75,69,40,49,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,77,65,88,34,59,72,37,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 4.0 - id: assert_10f_allocate_128_handles @@ -305,7 +305,7 @@ steps: - id: probe_10g_handle_129_rejected type: input.sequence params: - keys: [69,37,61,66,85,70,78,69,87,40,49,41,13] + keys: [69,37,61,66,85,70,77,65,75,69,40,49,41,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10g_handle_129_rejected @@ -316,7 +316,7 @@ steps: - id: probe_10h_free_128_handles type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,70,82,69,69,68,34,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,49,50,56,13,50,48,32,66,85,70,68,82,79,80,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,72,70,82,69,69,68,34,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 4.0 - id: assert_10h_free_128_handles @@ -331,7 +331,7 @@ steps: - id: probe_10i_reuse_low_handle type: input.sequence params: - keys: [82,37,61,66,85,70,78,69,87,40,49,41,13,80,82,73,78,84,32,34,72,82,69,85,83,69,34,59,82,37,13,66,85,70,70,82,69,69,40,82,37,41,13] + keys: [82,37,61,66,85,70,77,65,75,69,40,49,41,13,80,82,73,78,84,32,34,72,82,69,85,83,69,34,59,82,37,13,66,85,70,68,82,79,80,40,82,37,41,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10i_reuse_low_handle @@ -346,7 +346,7 @@ steps: - id: probe_10j_allocate_48k_heap type: input.sequence params: - keys: [77,37,61,66,85,70,78,69,87,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,72,77,65,88,66,85,70,34,59,77,37,13] + keys: [77,37,61,66,85,70,77,65,75,69,40,52,57,49,53,50,41,13,80,82,73,78,84,32,34,72,77,65,88,66,85,70,34,59,77,37,13] inter_key_delay_s: 0.03 post_delay_s: 1.0 - id: assert_10j_allocate_48k_heap @@ -361,7 +361,7 @@ steps: - id: probe_10k_heap_full_rejected type: input.sequence params: - keys: [69,37,61,66,85,70,78,69,87,40,49,41,13] + keys: [69,37,61,66,85,70,77,65,75,69,40,49,41,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10k_heap_full_rejected @@ -372,7 +372,7 @@ steps: - id: probe_10l_free_48k_heap type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,70,82,69,69,40,77,37,41,13,80,82,73,78,84,32,34,72,77,65,88,70,82,69,69,34,59,77,37,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,66,85,70,68,82,79,80,40,77,37,41,13,80,82,73,78,84,32,34,72,77,65,88,70,82,69,69,34,59,77,37,13] inter_key_delay_s: 0.03 post_delay_s: 0.8 - id: assert_10l_free_48k_heap @@ -413,7 +413,7 @@ steps: - id: probe_10o_free_screen_handles type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,70,82,69,69,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,83,70,82,69,69,68,34,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,70,79,82,32,73,61,49,32,84,79,32,50,52,13,50,48,32,66,85,70,68,82,79,80,40,73,41,13,51,48,32,78,69,88,84,32,73,13,52,48,32,80,82,73,78,84,32,34,83,70,82,69,69,68,34,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 4.0 - id: assert_10o_free_screen_handles @@ -611,9 +611,20 @@ steps: - id: resume_after_exit type: input.sequence params: - keys: [145,17,13] + keys: [145,17] inter_key_delay_s: 0.10 - post_delay_s: 3.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_plugin_resume + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + # Use VICE's text-monitor keyboard buffer for the post-EXIT RETURN; the + # binary-monitor input helper can otherwise drop this lone key. + - id: launch_readybasic_after_plugin_exit + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_resume type: screen.wait_contains params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_program_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_program_probe.easyflash.yaml index fe33254..9535137 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_program_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_program_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -51,7 +51,7 @@ steps: - id: wait_readybasic_prompt type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 capture_label: readybasic_program_prompt @@ -197,7 +197,7 @@ steps: - id: program_handle_lifecycle_run type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,50,48,32,80,82,73,78,84,32,34,80,82,66,85,70,34,59,72,37,13,51,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,52,48,32,66,85,70,70,82,69,69,40,72,37,41,13,53,48,32,80,82,73,78,84,32,34,80,82,70,82,69,69,34,59,72,37,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,72,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,50,48,32,80,82,73,78,84,32,34,80,82,66,85,70,34,59,72,37,13,51,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,52,48,32,66,85,70,68,82,79,80,40,72,37,41,13,53,48,32,80,82,73,78,84,32,34,80,82,70,82,69,69,34,59,72,37,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 1.5 - id: assert_program_handle_new diff --git a/agentworking/easyflash_full_vice_plans/readybasic_program_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_program_probe.regular.yaml index 0469761..5064693 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_program_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_program_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -182,7 +182,7 @@ steps: - id: program_handle_lifecycle_run type: input.sequence params: - keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,72,37,61,66,85,70,78,69,87,40,51,48,48,41,13,50,48,32,80,82,73,78,84,32,34,80,82,66,85,70,34,59,72,37,13,51,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,52,48,32,66,85,70,70,82,69,69,40,72,37,41,13,53,48,32,80,82,73,78,84,32,34,80,82,70,82,69,69,34,59,72,37,13,82,85,78,13] + keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,78,69,87,13,49,48,32,72,37,61,66,85,70,77,65,75,69,40,51,48,48,41,13,50,48,32,80,82,73,78,84,32,34,80,82,66,85,70,34,59,72,37,13,51,48,32,66,85,70,70,73,76,76,40,72,37,44,49,55,48,41,13,52,48,32,66,85,70,68,82,79,80,40,72,37,41,13,53,48,32,80,82,73,78,84,32,34,80,82,70,82,69,69,34,59,72,37,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 1.5 - id: assert_program_handle_new diff --git a/agentworking/easyflash_full_vice_plans/readybasic_rbtest1_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_rbtest1_probe.easyflash.yaml index 2b6fe6c..a1be66e 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_rbtest1_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_rbtest1_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -51,7 +51,7 @@ steps: - id: wait_readybasic_prompt type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 capture_label: readybasic_prompt - id: load_rbtest1 diff --git a/agentworking/easyflash_full_vice_plans/readybasic_rbtest1_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_rbtest1_probe.regular.yaml index e07431e..8ef4efc 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_rbtest1_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_rbtest1_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false diff --git a/agentworking/easyflash_full_vice_plans/readybasic_repeat_label_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_repeat_label_probe.easyflash.yaml index 2dcf923..3ba7098 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_repeat_label_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_repeat_label_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence diff --git a/agentworking/easyflash_full_vice_plans/readybasic_repeat_label_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_repeat_label_probe.regular.yaml index 3f65822..c822d2c 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_repeat_label_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_repeat_label_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false diff --git a/agentworking/easyflash_full_vice_plans/readybasic_resume_min_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_resume_min_probe.easyflash.yaml index d90a6c3..e94b051 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_resume_min_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_resume_min_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -51,7 +51,7 @@ steps: - id: wait_readybasic_prompt type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 capture_label: readybasic_resume_min_prompt - id: initial_builtin_probe @@ -107,11 +107,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_1 - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 3.0 + command: "keybuf \\x0d" - id: wait_readybasic_after_resume_1 type: screen.wait_contains params: @@ -147,11 +145,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_2 - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 3.0 + command: "keybuf \\x0d" - id: wait_readybasic_after_resume_2 type: screen.wait_contains params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_resume_min_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_resume_min_probe.regular.yaml index ca67cb2..059367e 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_resume_min_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_resume_min_probe.regular.yaml @@ -92,11 +92,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_1 - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 3.0 + command: "keybuf \\x0d" - id: wait_readybasic_after_resume_1 type: screen.wait_contains params: @@ -132,11 +130,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_2 - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 3.0 + command: "keybuf \\x0d" - id: wait_readybasic_after_resume_2 type: screen.wait_contains params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.easyflash.yaml new file mode 100644 index 0000000..e8b53e5 --- /dev/null +++ b/agentworking/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.easyflash.yaml @@ -0,0 +1,413 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_reuviewer_f2_chain_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_launcher_initial + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: chain_launcher_initial + - id: launch_readybasic_from_launcher + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_initial + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 120 + capture_label: chain_readybasic_initial + - id: assert_readybasic_bank_initial + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_initial + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_initial + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: readybasic_first_type + type: input.sequence + params: + keys: [81,37,61,49,48,49,58,80,82,73,78,84,32,34,67,72,65,73,78,49,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_first_type + type: assert.screen + params: + contains: "CHAIN1 101" + - id: readybasic_ctrl_b_1_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_1_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_1 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_1 + - id: assert_launcher_bank_after_ctrl_b_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_1 + type: monitor.command + params: + command: "keybuf \\x0d" + - id: capture_readybasic_reentry_1 + type: screen.capture + params: + label: chain_readybasic_reentry_1 + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_reentry_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: readybasic_second_type + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,50,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_second_type + type: assert.screen + params: + contains: "CHAIN2 101" + - id: readybasic_ctrl_b_2_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_2_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_2 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_2 + - id: launch_reuviewer_from_readybasic_position + type: input.sequence + params: + keys: [17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_reuviewer + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 90 + capture_label: chain_reuviewer_loaded + - id: assert_reuviewer_bank + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: stage_readyos_token_status_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 828 + bytes_hex: "00 00 00 00 00 07 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" + - id: configure_readyos_token_status_dma_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 57090 + bytes_hex: "3C 03 40 BA 21 18 00" + - id: commit_readyos_token_status_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 57089 + bytes_hex: "90" + - id: reuviewer_f2_to_readybasic + type: input.sequence + params: + keys: [137] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: capture_readybasic_after_reuviewer_f2 + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_f2 + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: assert_keyboard_buffer_empty_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_readybasic_stable_after_reuviewer_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_readybasic_stable_after_reuviewer_f2 + - id: assert_readybasic_bank_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_keyboard_buffer_empty_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: readybasic_type_after_reuviewer_f2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,51,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_f2 + type: assert.screen + params: + contains: "CHAIN3 101" + - id: readybasic_f2_back_to_reuviewer_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_f2_back_to_reuviewer_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_f2_back_to_reuviewer + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_reuviewer_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 80 + pre_delay_s: 1.0 + capture_label: chain_reuviewer_after_readybasic_f2 + - id: assert_app_keylog_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "48 EB" + - id: assert_app_chrin_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "57 F1" + - id: assert_default_input_device_after_readybasic_f2 + type: assert.memory + params: + start: 153 + end: 153 + equals_hex: "00" + - id: assert_reuviewer_bank_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_reuviewer_stable_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_reuviewer_stable_after_readybasic_f2 + - id: assert_reuviewer_bank_stable_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_stable_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: reuviewer_ctrl_b_after_readybasic_f2 + type: monitor.command + params: + command: "keybuf \\x02" + - id: capture_after_reuviewer_ctrl_b_input + type: screen.capture + params: + label: chain_after_reuviewer_ctrl_b_hotkey + pitch: capture after resumed REU Viewer Ctrl+B hotkey + - id: wait_launcher_after_reuviewer_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: chain_launcher_after_reuviewer_ctrl_b + - id: assert_launcher_bank_after_reuviewer_ctrl_b + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: select_readybasic_after_reuviewer_ctrl_b + type: memory.write + params: + start: 51232 + bytes_hex: "05" + - id: launch_readybasic_after_reuviewer_ctrl_b + type: monitor.command + params: + command: "raw:g c80f" + - id: capture_readybasic_after_reuviewer_ctrl_b_reentry + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_ctrl_b_reentry + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_reuviewer_ctrl_b_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,52,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_ctrl_b_reentry + type: assert.screen + params: + contains: "CHAIN4 101" + - id: readybasic_exit_after_multi_hop_reentry + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: wait_launcher_stable_after_readybasic_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + pre_delay_s: 2.0 + capture_label: chain_launcher_stable_after_readybasic_exit + - id: assert_launcher_bank_after_readybasic_exit + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: assert_readybasic_not_auto_reentered_after_exit + type: assert.screen_not_contains + params: + not_contains: "ready." + - id: select_readybasic_after_exit_guard + type: memory.write + params: + start: 51232 + bytes_hex: "05" + - id: reenter_readybasic_after_exit_guard + type: monitor.command + params: + command: "raw:g c80f" + - id: capture_readybasic_after_exit_guard_reentry + type: screen.capture + params: + label: chain_readybasic_after_exit_guard_reentry + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_exit_guard_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,53,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_exit_guard_reentry + type: assert.screen + params: + contains: "CHAIN5 101" diff --git a/agentworking/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.regular.yaml new file mode 100644 index 0000000..82e8a2f --- /dev/null +++ b/agentworking/easyflash_full_vice_plans/readybasic_reuviewer_f2_chain_probe.regular.yaml @@ -0,0 +1,410 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_reuviewer_f2_chain_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_launcher_initial + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 180 + capture_label: chain_launcher_initial + - id: launch_readybasic_from_launcher + type: input.sequence + params: + keys: [17,17,17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_initial + type: screen.wait_contains + params: + text: "READYBASIC" + wait_timeout_s: 120 + capture_label: chain_readybasic_initial + - id: assert_readybasic_bank_initial + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_initial + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_initial + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: readybasic_first_type + type: input.sequence + params: + keys: [81,37,61,49,48,49,58,80,82,73,78,84,32,34,67,72,65,73,78,49,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_first_type + type: assert.screen + params: + contains: "CHAIN1 101" + - id: readybasic_ctrl_b_1_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_1_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_1 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_1 + - id: assert_launcher_bank_after_ctrl_b_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_1 + type: monitor.command + params: + command: "keybuf \\x0d" + - id: capture_readybasic_reentry_1 + type: screen.capture + params: + label: chain_readybasic_reentry_1 + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_reentry_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: readybasic_second_type + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,50,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_second_type + type: assert.screen + params: + contains: "CHAIN2 101" + - id: readybasic_ctrl_b_2_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_2_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_2 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_2 + - id: launch_reuviewer_from_readybasic_position + type: input.sequence + params: + keys: [17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_reuviewer + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 90 + capture_label: chain_reuviewer_loaded + - id: assert_reuviewer_bank + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: stage_readyos_token_status_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 828 + bytes_hex: "00 00 00 00 00 07 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" + - id: configure_readyos_token_status_dma_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 57090 + bytes_hex: "3C 03 40 BA 21 18 00" + - id: commit_readyos_token_status_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 57089 + bytes_hex: "90" + - id: reuviewer_f2_to_readybasic + type: input.sequence + params: + keys: [137] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: capture_readybasic_after_reuviewer_f2 + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_f2 + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: assert_keyboard_buffer_empty_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_readybasic_stable_after_reuviewer_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_readybasic_stable_after_reuviewer_f2 + - id: assert_readybasic_bank_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_keyboard_buffer_empty_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: readybasic_type_after_reuviewer_f2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,51,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_f2 + type: assert.screen + params: + contains: "CHAIN3 101" + - id: readybasic_f2_back_to_reuviewer_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_f2_back_to_reuviewer_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_f2_back_to_reuviewer + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_reuviewer_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 80 + pre_delay_s: 1.0 + capture_label: chain_reuviewer_after_readybasic_f2 + - id: assert_app_keylog_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "48 EB" + - id: assert_app_chrin_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "57 F1" + - id: assert_default_input_device_after_readybasic_f2 + type: assert.memory + params: + start: 153 + end: 153 + equals_hex: "00" + - id: assert_reuviewer_bank_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_reuviewer_stable_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_reuviewer_stable_after_readybasic_f2 + - id: assert_reuviewer_bank_stable_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_stable_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: reuviewer_ctrl_b_after_readybasic_f2 + type: monitor.command + params: + command: "keybuf \\x02" + - id: capture_after_reuviewer_ctrl_b_input + type: screen.capture + params: + label: chain_after_reuviewer_ctrl_b_hotkey + pitch: capture after resumed REU Viewer Ctrl+B hotkey + - id: wait_launcher_after_reuviewer_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: chain_launcher_after_reuviewer_ctrl_b + - id: assert_launcher_bank_after_reuviewer_ctrl_b + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: select_readybasic_after_reuviewer_ctrl_b + type: memory.write + params: + start: 51232 + bytes_hex: "05" + - id: launch_readybasic_after_reuviewer_ctrl_b + type: monitor.command + params: + command: "raw:g c80f" + - id: capture_readybasic_after_reuviewer_ctrl_b_reentry + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_ctrl_b_reentry + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_reuviewer_ctrl_b_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,52,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_ctrl_b_reentry + type: assert.screen + params: + contains: "CHAIN4 101" + - id: readybasic_exit_after_multi_hop_reentry + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: wait_launcher_stable_after_readybasic_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + pre_delay_s: 2.0 + capture_label: chain_launcher_stable_after_readybasic_exit + - id: assert_launcher_bank_after_readybasic_exit + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: assert_readybasic_not_auto_reentered_after_exit + type: assert.screen_not_contains + params: + not_contains: "ready." + - id: select_readybasic_after_exit_guard + type: memory.write + params: + start: 51232 + bytes_hex: "05" + - id: reenter_readybasic_after_exit_guard + type: monitor.command + params: + command: "raw:g c80f" + - id: capture_readybasic_after_exit_guard_reentry + type: screen.capture + params: + label: chain_readybasic_after_exit_guard_reentry + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_exit_guard_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,53,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_exit_guard_reentry + type: assert.screen + params: + contains: "CHAIN5 101" diff --git a/agentworking/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.easyflash.yaml index 8beadb0..b792099 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -51,7 +51,7 @@ steps: - id: wait_readybasic_prompt type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 capture_label: scrreu_prompt - id: dump_initial_ranges @@ -63,7 +63,7 @@ steps: - { label: descriptors_1000, start: 0x1000, end: 0x11FF } - { label: resident_1200, start: 0x1200, end: 0x1BFF } - { label: command_overlay_a800, start: 0xA800, end: 0xAFFF } - - { label: reu_alloc_c600, start: 0xC600, end: 0xC6FF } + - { label: shim_resident_c600, start: 0xC600, end: 0xC9FF } - id: load_temp_program type: input.sequence params: @@ -86,6 +86,11 @@ steps: keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 75.0 + - id: capture_temp_program_progress + type: screen.capture + params: + label: scrreu_progress + pitch: screen-backed REU program progress after 30 seconds - id: assert_done type: assert.memory params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.regular.yaml index a12950e..2ca696d 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_screen_reu_temp_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -48,7 +48,7 @@ steps: - { label: descriptors_1000, start: 0x1000, end: 0x11FF } - { label: resident_1200, start: 0x1200, end: 0x1BFF } - { label: command_overlay_a800, start: 0xA800, end: 0xAFFF } - - { label: reu_alloc_c600, start: 0xC600, end: 0xC6FF } + - { label: shim_resident_c600, start: 0xC600, end: 0xC9FF } - id: load_temp_program type: input.sequence params: @@ -71,12 +71,17 @@ steps: keys: [80,82,73,78,84,32,67,72,82,36,40,49,52,55,41,13,82,85,78,13] inter_key_delay_s: 0.03 post_delay_s: 30.0 + - id: capture_temp_program_progress + type: screen.capture + params: + label: scrreu_progress + pitch: screen-backed REU program progress after 30 seconds - id: assert_done - type: screen.wait_contains + type: assert.memory params: - text: "RBSCRREU DONE" - wait_timeout_s: 300 - capture_label: scrreu_done + start: 1024 + end: 1036 + equals_hex: "52 42 53 43 52 52 45 55 20 44 4F 4E 45" - id: dump_after_done type: dump.memory_ranges params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.easyflash.yaml index b4b1d33..018bfb2 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.easyflash.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false - disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + disk8: "agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true drive8_type: 1541 drive9_enabled: false @@ -35,12 +35,16 @@ steps: params: kill_stale: true - id: easyflash_wait_launcher + retry: + max_attempts: 1 + backoff_ms: 0 + jitter: false type: screen.wait_contains params: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -104,28 +108,50 @@ steps: - id: move_readybasic_to_editor_before_setup type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_before_setup + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_before_setup + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_before_setup type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_before_setup + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_before_setup + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_before_setup type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_before_setup + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_before_setup - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_before_setup type: screen.wait_contains params: @@ -134,10 +160,19 @@ steps: - id: move_editor_to_readybasic_before_setup type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_before_setup + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_before_setup + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_before_setup type: screen.wait_contains params: @@ -284,7 +319,7 @@ steps: type: dump.memory_ranges params: ranges: &state_ranges - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_text_and_vars_1200, start: 0x1200, end: 0x1800 } - { label: string_heap_9300, start: 0x9300, end: 0x9600 } - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } @@ -303,28 +338,50 @@ steps: - id: move_readybasic_to_editor_verify_1 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_verify_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_verify_1 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_verify_1 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_verify_1 + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_verify_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_verify_1 type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_verify_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_verify_1 - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_verify_1 type: screen.wait_contains params: @@ -333,10 +390,19 @@ steps: - id: move_editor_to_readybasic_verify_1 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_verify_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_verify_1 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_verify_1 type: screen.wait_contains params: @@ -417,28 +483,50 @@ steps: - id: move_readybasic_to_editor_verify_2 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_verify_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_verify_2 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_verify_2 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_verify_2 + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_verify_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_verify_2 type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_verify_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_verify_2 - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_verify_2 type: screen.wait_contains params: @@ -447,10 +535,19 @@ steps: - id: move_editor_to_readybasic_verify_2 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_verify_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_verify_2 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_verify_2 type: screen.wait_contains params: @@ -531,28 +628,50 @@ steps: - id: move_readybasic_to_editor_verify_3 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_verify_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_verify_3 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_verify_3 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_verify_3 + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_verify_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_verify_3 type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_verify_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_verify_3 - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_verify_3 type: screen.wait_contains params: @@ -561,10 +680,19 @@ steps: - id: move_editor_to_readybasic_verify_3 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_verify_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_verify_3 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_verify_3 type: screen.wait_contains params: @@ -645,28 +773,50 @@ steps: - id: move_readybasic_to_editor_verify_4 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_verify_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_verify_4 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_verify_4 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_verify_4 + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_verify_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_verify_4 type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_verify_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_verify_4 - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_verify_4 type: screen.wait_contains params: @@ -675,10 +825,19 @@ steps: - id: move_editor_to_readybasic_verify_4 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_verify_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_verify_4 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_verify_4 type: screen.wait_contains params: @@ -759,28 +918,50 @@ steps: - id: move_readybasic_to_editor_verify_5 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_verify_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_verify_5 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_verify_5 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_verify_5 + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_verify_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_verify_5 type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_verify_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_verify_5 - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_verify_5 type: screen.wait_contains params: @@ -789,10 +970,19 @@ steps: - id: move_editor_to_readybasic_verify_5 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_verify_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_verify_5 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_verify_5 type: screen.wait_contains params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.regular.yaml index 69fcf3b..a4de0c6 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_second_entry_editor_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -89,28 +89,50 @@ steps: - id: move_readybasic_to_editor_before_setup type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_before_setup + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_before_setup + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_before_setup type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_before_setup + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_before_setup + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_before_setup type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_before_setup + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_before_setup - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_before_setup type: screen.wait_contains params: @@ -119,10 +141,19 @@ steps: - id: move_editor_to_readybasic_before_setup type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_before_setup + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_before_setup + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_before_setup type: screen.wait_contains params: @@ -269,7 +300,7 @@ steps: type: dump.memory_ranges params: ranges: &state_ranges - - { label: basic_pointers_002b, start: 0x002B, end: 0x003F } + - { label: basic_pnters_002b, start: 0x002B, end: 0x003F } - { label: basic_text_and_vars_1200, start: 0x1200, end: 0x1800 } - { label: string_heap_9300, start: 0x9300, end: 0x9600 } - { label: runtime_state_9600, start: 0x9600, end: 0x9A00 } @@ -288,28 +319,50 @@ steps: - id: move_readybasic_to_editor_verify_1 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_verify_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_verify_1 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_verify_1 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_verify_1 + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_verify_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_verify_1 type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_verify_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_verify_1 - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_verify_1 type: screen.wait_contains params: @@ -318,10 +371,19 @@ steps: - id: move_editor_to_readybasic_verify_1 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_verify_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_verify_1 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_verify_1 type: screen.wait_contains params: @@ -402,28 +464,50 @@ steps: - id: move_readybasic_to_editor_verify_2 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_verify_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_verify_2 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_verify_2 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_verify_2 + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_verify_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_verify_2 type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_verify_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_verify_2 - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_verify_2 type: screen.wait_contains params: @@ -432,10 +516,19 @@ steps: - id: move_editor_to_readybasic_verify_2 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_verify_2 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_verify_2 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_verify_2 type: screen.wait_contains params: @@ -516,28 +609,50 @@ steps: - id: move_readybasic_to_editor_verify_3 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_verify_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_verify_3 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_verify_3 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_verify_3 + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_verify_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_verify_3 type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_verify_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_verify_3 - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_verify_3 type: screen.wait_contains params: @@ -546,10 +661,19 @@ steps: - id: move_editor_to_readybasic_verify_3 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_verify_3 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_verify_3 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_verify_3 type: screen.wait_contains params: @@ -630,28 +754,50 @@ steps: - id: move_readybasic_to_editor_verify_4 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_verify_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_verify_4 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_verify_4 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_verify_4 + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_verify_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_verify_4 type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_verify_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_verify_4 - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_verify_4 type: screen.wait_contains params: @@ -660,10 +806,19 @@ steps: - id: move_editor_to_readybasic_verify_4 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_verify_4 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_verify_4 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_verify_4 type: screen.wait_contains params: @@ -744,28 +899,50 @@ steps: - id: move_readybasic_to_editor_verify_5 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_editor_verify_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_editor_verify_5 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_editor_verify_5 type: screen.wait_contains params: text: "editor" wait_timeout_s: 60 + - id: wait_editor_stable_verify_5 + type: screen.wait_contains + params: + text: "editor" + pre_delay_s: 1.5 + wait_timeout_s: 30 + - id: clear_keyboard_before_editor_text_verify_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: type_editor_chars_verify_5 type: input.sequence params: keys: [80,82,79,66,69,32,76,73,78,69,13] inter_key_delay_s: 0.035 post_delay_s: 0.6 + - id: clear_keyboard_before_editor_ctrl_b_verify_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" - id: ctrl_b_editor_verify_5 - type: input.sequence + type: monitor.command params: - keys: [2] - pre_delay_s: 0 - inter_key_delay_s: 0.03 - post_delay_s: 1.0 + command: "keybuf \\x02" - id: wait_launcher_after_editor_verify_5 type: screen.wait_contains params: @@ -774,10 +951,19 @@ steps: - id: move_editor_to_readybasic_verify_5 type: input.sequence params: - keys: [17,17,17,17,13] + keys: [17,17,17,17] pre_delay_s: 0 inter_key_delay_s: 0.10 - post_delay_s: 1.0 + post_delay_s: 0.5 + - id: clear_keyboard_before_readybasic_verify_5 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + - id: launch_readybasic_verify_5 + type: monitor.command + params: + command: "keybuf \\x0d" - id: wait_readybasic_after_tour_verify_5 type: screen.wait_contains params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_state_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readybasic_state_probe.easyflash.yaml index 64d16f4..c1e5f32 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_state_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_state_probe.easyflash.yaml @@ -19,7 +19,7 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true @@ -40,7 +40,7 @@ steps: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_readybasic_launcher - id: easyflash_start_readybasic type: input.sequence @@ -51,7 +51,7 @@ steps: - id: wait_readybasic_prompt type: screen.wait_contains params: - text: "readybasic" + text: "READY." wait_timeout_s: 180 capture_label: readybasic_prompt - id: dump_initial_state @@ -92,11 +92,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_direct_string - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_direct_string_resume type: screen.wait_contains params: @@ -161,11 +159,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_multiline - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_multiline_resume type: screen.wait_contains params: @@ -218,11 +214,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_after_new - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_new_resume type: screen.wait_contains params: @@ -267,11 +261,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_variables - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_variables_resume type: screen.wait_contains params: @@ -324,11 +316,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_rb_program - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_rb_resume type: screen.wait_contains params: diff --git a/agentworking/easyflash_full_vice_plans/readybasic_state_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readybasic_state_probe.regular.yaml index c7561af..ca26665 100644 --- a/agentworking/easyflash_full_vice_plans/readybasic_state_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readybasic_state_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4h-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -77,11 +77,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_direct_string - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_direct_string_resume type: screen.wait_contains params: @@ -146,11 +144,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_multiline - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_multiline_resume type: screen.wait_contains params: @@ -203,11 +199,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_after_new - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_new_resume type: screen.wait_contains params: @@ -252,11 +246,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_variables - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_variables_resume type: screen.wait_contains params: @@ -309,11 +301,9 @@ steps: text: "READY OS" wait_timeout_s: 30 - id: resume_rb_program - type: input.sequence + type: monitor.command params: - keys: [13] - inter_key_delay_s: 0.03 - post_delay_s: 2.0 + command: "keybuf \\x0d" - id: wait_prompt_after_rb_resume type: screen.wait_contains params: diff --git a/agentworking/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.easyflash.yaml b/agentworking/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.easyflash.yaml index eaa3bd0..05c845b 100644 --- a/agentworking/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.easyflash.yaml +++ b/agentworking/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.easyflash.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - cart_crt: "/Users/karlprosserpp/dev/c64projects/readyosprecog/Releases/0.2.4/precog-easyflash/readyos_easyflash.crt" + cart_crt: "Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" autostart_enabled: false - disk8: "/Users/karlprosserpp/dev/c64projects/readyosprecog/agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + disk8: "agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" drive8_enabled: true drive8_type: 1541 drive9_enabled: false @@ -35,12 +35,16 @@ steps: params: kill_stale: true - id: easyflash_wait_launcher + retry: + max_attempts: 1 + backoff_ms: 0 + jitter: false type: screen.wait_contains params: text: "READY OS" pre_delay_s: 4 poll_s: 0.5 - wait_timeout_s: 240 + wait_timeout_s: 420 capture_label: easyflash_editor_launcher - id: easyflash_start_editor type: input.sequence @@ -51,9 +55,14 @@ steps: - id: wait_editor_initial type: screen.wait_contains params: - text: "editor" + text: "EDITOR:" wait_timeout_s: 180 capture_label: editor_initial + - id: clear_keyboard_buffer_before_editor_entry + type: memory.write + params: + start: 198 + bytes_hex: "00" - id: editor_touch_1 type: input.sequence params: @@ -107,13 +116,28 @@ steps: - id: move_readybasic_to_editor_1 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_relaunch_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + # The binary-monitor key helper can drop a lone RETURN immediately after + # ReadyBASIC's EXIT return. VICE's text-monitor keybuf path is deterministic. + - id: launch_editor_after_readybasic_1 + type: monitor.command + params: + command: "keybuf \\x0d" + - id: capture_after_move_readybasic_to_editor_1 + type: screen.capture + params: + label: after_move_readybasic_to_editor_1 - id: wait_editor_after_readybasic_1 type: screen.wait_contains params: - text: "editor" + text: "EDITOR:" wait_timeout_s: 60 capture_label: editor_after_readybasic_1 - id: ctrl_b_editor_to_launcher_before_readyshell_1 @@ -199,6 +223,6 @@ steps: type: dump.memory_ranges params: ranges: - - { label: launcher_shim_c800, start: 0xC800, end: 0xCA00 } + - { label: launcher_shim_c600, start: 0xC600, end: 0xCA00 } - { label: app_work_1000, start: 0x1000, end: 0x1800 } - { label: upper_app_a000, start: 0xA000, end: 0xC600 } diff --git a/agentworking/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.regular.yaml b/agentworking/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.regular.yaml index cc1a63d..6982dab 100644 --- a/agentworking/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.regular.yaml +++ b/agentworking/easyflash_full_vice_plans/readyshell_cross_app_resume_probe.regular.yaml @@ -19,9 +19,9 @@ global_defaults: capture_state: true capture_dump: false vice: - disk8: "Releases/0.2.4/precog-d81/readyos-v0.2.4-d81.d81" - disk9: "Releases/0.2.4/precog-d81/readyos-v0.2.4-d81.d81" - autostart_prg: "Releases/0.2.4/precog-d81/readyos-v0.2.4-d81-preboot.prg" + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" drive8_type: 1581 drive9_type: 1581 true_drive: false @@ -36,9 +36,14 @@ steps: - id: wait_editor_initial type: screen.wait_contains params: - text: "editor" + text: "EDITOR:" wait_timeout_s: 180 capture_label: editor_initial + - id: clear_keyboard_buffer_before_editor_entry + type: memory.write + params: + start: 198 + bytes_hex: "00" - id: editor_touch_1 type: input.sequence params: @@ -92,13 +97,28 @@ steps: - id: move_readybasic_to_editor_1 type: input.sequence params: - keys: [145,145,145,145,13] + keys: [145,145,145,145] inter_key_delay_s: 0.08 - post_delay_s: 2.0 + post_delay_s: 0.5 + - id: clear_keyboard_buffer_before_editor_relaunch_1 + type: memory.write + params: + start: 0x00C6 + bytes_hex: "00" + # The binary-monitor key helper can drop a lone RETURN immediately after + # ReadyBASIC's EXIT return. VICE's text-monitor keybuf path is deterministic. + - id: launch_editor_after_readybasic_1 + type: monitor.command + params: + command: "keybuf \\x0d" + - id: capture_after_move_readybasic_to_editor_1 + type: screen.capture + params: + label: after_move_readybasic_to_editor_1 - id: wait_editor_after_readybasic_1 type: screen.wait_contains params: - text: "editor" + text: "EDITOR:" wait_timeout_s: 60 capture_label: editor_after_readybasic_1 - id: ctrl_b_editor_to_launcher_before_readyshell_1 @@ -184,6 +204,6 @@ steps: type: dump.memory_ranges params: ranges: - - { label: launcher_shim_c800, start: 0xC800, end: 0xCA00 } + - { label: launcher_shim_c600, start: 0xC600, end: 0xCA00 } - { label: app_work_1000, start: 0x1000, end: 0x1800 } - { label: upper_app_a000, start: 0xA000, end: 0xC600 } diff --git a/agentworking/readybasic-gfx-phase1/IMPLEMENTATION_LOG.md b/agentworking/readybasic-gfx-phase1/IMPLEMENTATION_LOG.md new file mode 100644 index 0000000..c4e87c9 --- /dev/null +++ b/agentworking/readybasic-gfx-phase1/IMPLEMENTATION_LOG.md @@ -0,0 +1,36 @@ +# ReadyBASIC Graphics Phase 1 Implementation Log + +## 2026-06-15 + +- Started Phase 1 command-only implementation. +- Cleaned AGENTWORKING top level by archiving older artifacts. +- Added built-in graphics descriptors for `GFXCORE`, `GFXPRIM`, `GFXSPR`, and + `INPUTEV`. +- Added command-only signatures for graphics mode strings, graphics surfaces, + 3-arg primitives, 5-arg primitives, sprite setup, and no-arg input commands. +- Implemented Bank D mode setup, clears, immediate plot/point/line/rect/frect, + sprite setup/move/color/collision polling, and joystick/keyboard polling. +- Moved command descriptor lookup under hidden RAM to keep resident code within + the `$1200-$2ABF` budget. +- Added `rbgfx01` through `rbgfx12` BASIC demos and Makefile/profile wiring. +- Added `build_support/run_readybasic_gfx_phase1_probe.sh`. +- Updated ReadyBASIC graphics/current/plugin architecture docs. +- Regenerated the regular D81 profile with the built-in graphics demos present. +- Regenerated the ReadyBASIC memory report. +- Added `build_support/run_readybasic_readyos_loaded_apps_suite.sh`, which boots + ReadyOS preboot, waits for ReadyBASIC loaded by ReadyOS, then loads/lists/runs + `RBTEST1`, `RBPROC1`, and all `RBGFXxx` PRGs from inside ReadyBASIC. +- Fixed demo programs so they only use existing ReadyBASIC/C64 BASIC syntax: + numeric loop variables instead of integer loop variables, and no graphics + command immediately after `THEN`. +- Fixed `GFXMODE` VIC register setup so stack restoration no longer overwrites + the intended `$D011`/`$D016` values. +- Fixed bitmap `GFXCLEAR` screen RAM initialization so plotted foreground pixels + are visible in hires and multicolor bitmap modes. +- Added `SPRROW(N,ROW,B1,B2,B3)` to the `GFXSPR` overlay so BASIC demos can + define actual 24-bit hardware sprite rows in Bank D sprite memory. +- Fixed slot-2 overlay descriptors to copy `GFXSPR`/`INPUTEV` from their real + linked payload offsets and use entry offsets relative to slot 2. +- Added `RBGFX13` plus `build_support/run_readybasic_sprite_steps_demo.sh` and + `make readybasic-sprite-steps-vice` for ReadyOS-hosted staged sprite + screenshots. diff --git a/agentworking/readybasic-gfx-phase1/LESSONS.md b/agentworking/readybasic-gfx-phase1/LESSONS.md new file mode 100644 index 0000000..323545d --- /dev/null +++ b/agentworking/readybasic-gfx-phase1/LESSONS.md @@ -0,0 +1,29 @@ +# ReadyBASIC Graphics Phase 1 Lessons + +- Keep graphics state command-owned. Do not alter ReadyBASIC language paths. +- Bank D graphics must not use `$C000-$C9FF`; ReadyBASIC and ReadyOS own that + area for bridge, shared frames, REU metadata, and shim ABI. +- The existing static checker froze old proof payload sizes, so graphics work + must update it to validate ranges and budgets instead of exact legacy sizes. +- Descriptor lookup does not need BASIC ROM and can live under hidden RAM; this + is useful resident-pressure relief without changing language behavior. +- Phase 1 can expose the REU surface handle ABI before full offscreen drawing, + but docs/tests must be explicit that `GFXTARGET(0)` is the implemented draw + target and `GFXBLIT(H%)` is currently handle validation. +- Launcher-cycle hotkey verification can hang at preboot `LOADING LAUNCHER...` + even after the default hotkey probe passes. Keep this separated from graphics + command verification unless a focused change touches launcher/profile boot. +- Visual ReadyOS-context screenshots matter for graphics commands. The + command-only probe passed before screenshots showed blank output because VIC + mode registers were being clobbered after the command handler returned. +- Keep demos inside the already-supported language surface. C64 BASIC rejects + `FOR X%` style loop variables here, and ReadyBASIC intentionally does not + add command-after-`THEN` behavior for Phase 1 graphics. +- Bitmap screen RAM color bytes are part of visibility, not just clearing. + Clearing bitmap memory while setting foreground equal to background can make + correct plotted pixels look blank. +- Sprite demos need explicit pattern data. `SPRSET`/`SPRMOVE` prove VIC state, + but `SPRROW` makes the pixels visible and auditable from BASIC source. +- Slot-2 overlay descriptors must describe the linked payload location, not + assume every overlay begins at `$B800`. Otherwise absolute references inside + the overlay resolve against the wrong runtime address. diff --git a/agentworking/readybasic-gfx-phase1/STATE.md b/agentworking/readybasic-gfx-phase1/STATE.md new file mode 100644 index 0000000..7378d65 --- /dev/null +++ b/agentworking/readybasic-gfx-phase1/STATE.md @@ -0,0 +1,35 @@ +# ReadyBASIC Graphics Phase 1 State + +Objective: implement Phase 1 graphics as ReadyBASIC commands only, without +changing language/runtime behavior. + +Design source: `src/apps/readybasic/READYBASIC_GRAPHICS_COMMAND_DESIGN.md`. + +Current status: + +- Phase 1 command-only implementation is in place. +- Old `agentworking` top-level artifacts archived under + `agentworking/archive-pre-readybasic-gfx-phase1-20260615/`. +- `bin/readybasic.prg` builds with Phase 1 graphics command descriptors and + built-in payloads. +- Graphics module payloads are grouped into non-default built-in packs: + `GFXCORE`, `GFXPRIM`, `GFXSPR`, and `INPUTEV`. +- Twelve `rbgfx*.bas` demos exist and compile to `$2AC1` PRGs. +- Static checker validates graphics modules, Bank D guardrails, and flexible + pack budgets while preserving the hard ReadyBASIC memory guards. +- Current post-Phase-2/CMDPACK2 map: `RESIDENT` `$1200-$2ABA`, `HIDDEN` + `$A000-$A7DE`, `LOWPACK` `$A800-$AEFC`, `SLOTPACK1` `$B000-$B474`, + `SLOTPACK2` `$B800-$BD14`, `OVL1PACK` `$B800-$BA71`, and `OVL2PACK` + `$B800-$B86C`. + +Known limits: + +- `GFXTARGET(0)` is the implemented draw target. `GFXSURF` creates typed REU + handles and `GFXBLIT(H%)` validates them, but offscreen draw/blit is not + pixel-complete in Phase 1. +- `PNT(X,Y,V%)` is the preferred Phase 1 point-read spelling. `POINT` remains + registered, but the short alias avoids a BASIC parser/name corner in probes. +- `LINE` is a simple endpoint stepper, not a full Bresenham implementation. +- Multicolor bitmap/tile modes set VIC mode/layout state, but primitives are + still Phase 1 one-bit/cell-oriented behavior. +- Input is polling-only; no IRQ sampler was added. diff --git a/agentworking/readybasic-gfx-phase1/TEST_LOG.md b/agentworking/readybasic-gfx-phase1/TEST_LOG.md new file mode 100644 index 0000000..64b47cf --- /dev/null +++ b/agentworking/readybasic-gfx-phase1/TEST_LOG.md @@ -0,0 +1,49 @@ +# ReadyBASIC Graphics Phase 1 Test Log + +## 2026-06-15 + +- `make bin/readybasic.prg` passed. +- `make obj/rbgfx01_modes.prg obj/rbgfx02_hires_plot.prg obj/rbgfx03_hires_lines.prg obj/rbgfx04_rects.prg obj/rbgfx05_point_read.prg obj/rbgfx06_reu_surface.prg obj/rbgfx07_mbitmap.prg obj/rbgfx08_tile.prg obj/rbgfx09_sprites.prg obj/rbgfx10_collision.prg obj/rbgfx11_input.prg obj/rbgfx12_showcase.prg bin/readybasic.prg` passed. +- `make readybasic-plugin-static-check` passed. +- `READYBASIC_SKIP_BUILD=1 make readybasic-gfx-phase1-vice` passed. + Run dir: `logs/vice_auto_20260615_194952`. +- Current-image rerun of `READYBASIC_SKIP_BUILD=1 make + readybasic-gfx-phase1-vice` passed after the final D81 rebuild. + Run dir: `logs/vice_auto_20260615_202122`. +- `READYBASIC_SKIP_BUILD=1 make readybasic-module-overlay-vice` passed. + Run dir: `logs/vice_auto_20260615_195343`. +- `READYBASIC_SKIP_BUILD=1 make readybasic-plugin-command-vice` passed. + Run dir: `logs/vice_auto_20260615_195029`. +- `READYBASIC_SKIP_BUILD=1 make readybasic-program-vice` passed. + Run dir: `logs/vice_auto_20260615_195225`. +- `READYBASIC_SKIP_BUILD=1 make readybasic-rbtest1-vice` passed. + Run dir: `logs/vice_auto_20260615_195328`. +- `make readybasic-memory-report` passed and regenerated + `docs/readybasic_memory_diagrams.html`. +- `READYBASIC_SKIP_BUILD=1 make readybasic-vice-suites` was run after focused + checks. It passed through demo, repeat/label, lifecycle, module overlay, + plugin command, program, rbtest1, state, and large-vars probes, then hung in + `readybasic-hotkey-vice` launcher-cycle startup waiting for launcher text at + `wait_launcher_initial`. + Repro run dir: `logs/vice_auto_20260615_201724`. +- Focused default hotkey probe passed after that hang: + `bash build_support/run_readybasic_hotkey_probe.sh`. + Run dir: `logs/vice_auto_20260615_201648`. +- `READYBASIC_SKIP_BUILD=1 make readybasic-readyos-loaded-apps-vice` passed. + Run dir: `logs/vice_auto_20260615_205414`. + This is the explicit ReadyOS context suite: it boots ReadyOS preboot, waits + for ReadyBASIC loaded by ReadyOS, then loads/lists/runs `RBTEST1`, `RBPROC1`, + and all `RBGFXxx` PRGs from inside ReadyBASIC with screenshots. +- The ReadyOS-loaded visual suite caught and validated fixes for: + - BASIC demo loop variables using `%` where C64 BASIC syntax rejects them. + - Unsupported command-after-`THEN` syntax in `rbgfx08_tile.bas`. + - `GFXMODE` clobbering VIC register values while restoring the caller's + return address. + - Bitmap clears filling screen RAM with an invisible foreground/background + color pair. +- `build_support/run_readybasic_sprite_steps_demo.sh` passed after rebuilding + the regular D81 profile. + Run dir: `logs/vice_auto_20260615_224423`. + This boots ReadyOS preboot with ReadyBASIC as the first app, loads/lists/runs + `RBGFX13` inside ReadyBASIC, captures initial sprite placement, movement, + recolor, and final completion screenshots, and asserts no BASIC error. diff --git a/agentworking/readybasic-gfx-phase2/IMPLEMENTATION_LOG.md b/agentworking/readybasic-gfx-phase2/IMPLEMENTATION_LOG.md new file mode 100644 index 0000000..1d15804 --- /dev/null +++ b/agentworking/readybasic-gfx-phase2/IMPLEMENTATION_LOG.md @@ -0,0 +1,26 @@ +# ReadyBASIC Graphics Phase 2 Implementation Log + +## 2026-06-15 + +- Committed completed Phase 1 baseline as `2ddfcb5`. +- Added `CIRCLE(X,Y,R,C)` and `FCIRCLE(X,Y,R,C)` command descriptors and + `GFXPRIM` module bodies. +- Added `TILE(X,Y,CH,C)` and `CHARAT(X,Y,CH,C)` command descriptors and cell + write support for Bank D tile modes plus ordinary text-mode demo output. +- Added sprite expansion, priority, per-sprite multicolor enable, shared + multicolor register, and tokenizer-safe alias descriptors in `GFXSPR`. +- Added `rbgfx14_phase2_prims.bas`, `rbgfx15_phase2_tiles.bas`, and + `rbgfx16_phase2_sprite_ctrl.bas`. +- Added the Phase 2 demos to the ReadyBASIC demo list and regular D81 developer + profiles. +- Added `build_support/run_readybasic_gfx_phase2_demo.sh`, which boots ReadyOS, + waits for ReadyBASIC loaded by ReadyOS, loads/runs Phase 2 demos from inside + ReadyBASIC, captures staged screenshots, and asserts no BASIC error. +- Updated graphics/current/plugin architecture docs with implemented Phase 2 + commands, aliases, payload sizes, and deferred work. +- Added `CMDPACK2` at `$6200-$7FFF` and changed `GFXSPR`/`INPUTEV` into true + slot-2 replacement overlays. They are stored in the assigned command-code REU + bank at `$5000` and `$5800`, respectively, then fetched into `$B800` when + called. +- Updated static guardrails and the HTML memory report generator for sparse + built-in overlay storage. diff --git a/agentworking/readybasic-gfx-phase2/LESSONS.md b/agentworking/readybasic-gfx-phase2/LESSONS.md new file mode 100644 index 0000000..01a68df --- /dev/null +++ b/agentworking/readybasic-gfx-phase2/LESSONS.md @@ -0,0 +1,20 @@ +# ReadyBASIC Graphics Phase 2 Lessons + +- Keep command names token-safe in demo source. PETCAT can split embedded BASIC + tokens inside longer names, so visible demos should prefer aliases such as + `SPRSIZE`, `SPRMUL`, `SPRMCO`, and `SPRCOL`. +- Do not hide sprite pixel setup. `rbgfx16` uses `SPRROW` to make the sprite + bitmap auditable in BASIC source before testing movement and VIC controls. +- Split staged demo commands onto separate lines when debugging parser issues. + It makes VICE screenshot failures point at the exact command. +- Slot-2 payload budget is now tighter. `GFXPRIM` is `$0515` bytes and the + `GFXSPR` overlay is `$0272` bytes; larger commands should either replace + approximations carefully or move into a separate overlay. +- Do not pack unrelated slot-2 families sequentially in one runtime strip. + `GFXPRIM`, `GFXSPR`, and `INPUTEV` should be replacement overlays that each + get their own 2KB execution-image budget. +- Cold-load seed room and runtime execution room are separate constraints. + `CMDPACK2` adds storage/stash capacity, but each command family still has to + fit in the runtime slot or overlay it is fetched into. +- ReadyOS-context screenshots are the real proof for graphics work. Direct PRG + loads are not representative of ReadyBASIC running under ReadyOS. diff --git a/agentworking/readybasic-gfx-phase2/STATE.md b/agentworking/readybasic-gfx-phase2/STATE.md new file mode 100644 index 0000000..e4e9452 --- /dev/null +++ b/agentworking/readybasic-gfx-phase2/STATE.md @@ -0,0 +1,36 @@ +# ReadyBASIC Graphics Phase 2 State + +Objective: implement Phase 2 graphics as ReadyBASIC commands only, without +changing language/runtime behavior. + +Design source: `src/apps/readybasic/READYBASIC_GRAPHICS_COMMAND_DESIGN.md`. + +Current status: + +- Phase 1 was committed as `2ddfcb5`. +- Phase 2 visible command additions are implemented in built-in graphics + modules; no external `ZMODLD` step is required. +- New `GFXPRIM` commands: `CIRCLE`, `FCIRCLE`, `TILE`, and `CHARAT`. +- New `GFXSPR` commands and aliases: `SPREXPAND`/`SPRSIZE`, `SPRPRI`, + `SPRMULTI`/`SPRMUL`, `SPRMCOLOR`/`SPRMCO`, and `SPRCOL`. +- New demos: `rbgfx14_phase2_prims.bas`, `rbgfx15_phase2_tiles.bas`, and + `rbgfx16_phase2_sprite_ctrl.bas`. +- New VICE automation: `build_support/run_readybasic_gfx_phase2_demo.sh` and + `make readybasic-gfx-phase2-vice`. +- Current map after the replacement-overlay rework: `BASIC_START` remains + `$2AC1`, formula free bytes remain `30013`, `RESIDENT` remains `$18BB` + / 6331B, and `bin/readybasic.prg` is `28674` bytes because `CMDPACK2` + extends the cold-load seed image through `$7FFF`. +- Runtime slot headroom: slot 0 has 259B free, slot 1 has 907B free, + `GFXPRIM` has 747B free, `GFXSPR` has 1422B free, and `INPUTEV` has + 1939B free. + +Known limits: + +- `CIRCLE` is an outline approximation that reuses `LINE`. +- `FCIRCLE` currently fills the bounding rectangle as a command-path proof. +- Full REU-backed offscreen drawing/blitting, dirty-rect `GFXSYNC`, retained + display lists, sprite-sheet handles, polygon fill, and true circular fill are + deferred. +- `POLY`/`FPOLY` and `SCROLL` are not implemented commands yet, so the Phase 2 + screenshot automation does not include polygon screenshots. diff --git a/agentworking/readybasic-gfx-phase2/TEST_LOG.md b/agentworking/readybasic-gfx-phase2/TEST_LOG.md new file mode 100644 index 0000000..38f9fca --- /dev/null +++ b/agentworking/readybasic-gfx-phase2/TEST_LOG.md @@ -0,0 +1,50 @@ +# ReadyBASIC Graphics Phase 2 Test Log + +## 2026-06-15 + +- `make bin/readybasic.prg obj/rbgfx16_phase2_sprite_ctrl.prg` passed after + adding tokenizer-safe sprite aliases. +- `build_support/run_readybasic_gfx_phase2_demo.sh` passed. + Run dir: `logs/vice_auto_20260615_232955`. +- `READYBASIC_SKIP_BUILD=1 make readybasic-gfx-phase2-vice` passed. + Run dir: `logs/vice_auto_20260615_233307`. +- `make readybasic-plugin-static-check` passed. +- `build_support/run_readybasic_gfx_phase2_demo.sh` passed after the + `CMDPACK2`/replacement-overlay rework. + Run dir: `logs/vice_auto_20260616_132309`. +- The Phase 2 VICE run booted ReadyOS preboot, waited for ReadyBASIC loaded by + ReadyOS, then loaded and ran `RBGFX14`, `RBGFX15`, and `RBGFX16` inside + ReadyBASIC. +- Captured screenshots: + - `readybasic_gfx_phase2_prompt` + - `readybasic_gfx_phase2_list_rbgfx14` + - `readybasic_gfx_phase2_primitives` + - `readybasic_gfx_phase2_prims_done` + - `readybasic_gfx_phase2_tiles` + - `readybasic_gfx_phase2_tiles_done` + - `readybasic_gfx_phase2_sprite_normal` + - `readybasic_gfx_phase2_sprite_expanded` + - `readybasic_gfx_phase2_sprite_multi_priority` + - `readybasic_gfx_phase2_sprites_done` +- Earlier failed runs caught PETCAT tokenization collisions in `SPREXPAND`, + `SPRMULTI`, and `SPRMCLR`; aliases now keep demo source token-safe. +- There are no polygon screenshots because `POLY` and `FPOLY` are not + implemented Phase 2 commands; they remain documented future/deferred work. + +## 2026-06-16 + +- `make readybasic-plugin-static-check` passed after expanding the static + guardrails for `CMDPACK2`, replacement slot-2 overlay run addresses, and + fixed code-bank offsets `$5000`/`$5800`. +- `make readybasic-memory-report` regenerated + `docs/readybasic_memory_diagrams.html` with the sparse built-in payload map. +- `make readybasic-vice-suites` passed after the CMDPACK2/replacement-overlay + rework. Final run status was success with no failed or degraded steps. + Representative run dirs: + - graphics demo: `logs/vice_auto_20260616_132309` + - module overlay probe: `logs/vice_auto_20260616_141715` + - plugin command probe: `logs/vice_auto_20260616_141814` + - cross-app resume probe: `logs/vice_auto_20260616_142612` + - second-entry/editor probe: `logs/vice_auto_20260616_142835` + - full suite visual verification: `logs/vice_auto_20260616_143027` +- The module overlay probe retained the ReadyBASIC free-byte assertion. diff --git a/agentworking/readybasic-gfx-phase3/IMPLEMENTATION_LOG.md b/agentworking/readybasic-gfx-phase3/IMPLEMENTATION_LOG.md new file mode 100644 index 0000000..be428d5 --- /dev/null +++ b/agentworking/readybasic-gfx-phase3/IMPLEMENTATION_LOG.md @@ -0,0 +1,33 @@ +# ReadyBASIC Graphics Phase 3 Implementation Log + +## 2026-06-16 + +- Added linker segment `OVL3PACK` for a third slot-2 replacement overlay. +- Added `RB_SUBMOD_GFXPOLY = 20` and `RB_CODE_GFXPOLY_OFF = $6000`. +- Added typed REU point-buffer handle kind `RB_HANDLE_TYPE_POINTBUF = 4`. +- Added command descriptors for `POLY`, `FPOLY`, `PBUFNEW`, `PBUFSET`, + `PBUFFREE`, `POLYH`, and `FPOLYH`. +- Added the `SIG_POLY` parser signature for BASIC integer-array polygon input. +- Reused existing numeric signatures for point-buffer handle commands where + possible to avoid resident growth. +- Added `GFXPOLY` body code in `OVL3PACK`, including array point reads, REU + point-buffer page fetch/store, outline polygon closure, and conservative + filled polygon fan drawing. +- Extended cold prestash to copy `OVL3PACK` from `CMDPACK2` into assigned + code-bank offset `$6000`. +- Updated static verification to enforce `GFXPOLY` placement, size, submodule + id, handle type, and `RB_CODE_GFXPOLY_OFF=$6000`. +- Updated memory-report generation and regenerated + `docs/readybasic_memory_diagrams.html`. +- Added Phase 3 BASIC demos and ReadyOS/ReadyBASIC VICE automation. +- Fixed polygon loop state after VICE exposed REU-demo hangs: point count now + lives in dedicated copy scratch instead of fields clobbered by line drawing. +- Kept demo labels neutral so `LIST`/`RUN` automation proves the files without + accidentally invoking command parsing from display-only text. + +Implementation decision: + +- The requested dynamic same-name handle form would have required more resident + parser/dispatch code. With `RESIDENT` ending at `$2ABF`, the implementation + uses `POLYH` and `FPOLYH` for REU point-buffer handles to preserve the fixed + BASIC start/free-byte invariant. diff --git a/agentworking/readybasic-gfx-phase3/LESSONS.md b/agentworking/readybasic-gfx-phase3/LESSONS.md new file mode 100644 index 0000000..d6f119c --- /dev/null +++ b/agentworking/readybasic-gfx-phase3/LESSONS.md @@ -0,0 +1,26 @@ +# ReadyBASIC Graphics Phase 3 Lessons + +- Resident parser bytes are now the scarcest resource. Preserve + `BASIC_START=$2AC1` first, even when that means command spelling is less + elegant than the original design. +- Same-name overloads are expensive in this command spine because lookup returns + one descriptor and the parser must distinguish array-base syntax from scalar + numeric handle syntax. +- `GFXPOLY` belongs in its own replacement overlay. Putting polygon bodies into + `GFXPRIM` would consume the remaining primitive headroom and make future + primitive fixes harder. +- Document implementation-level approximations plainly. Current filled polygons + are convex fan fills; a true scanline fill should be a future overlay-growth + task, not silently implied by the command name. +- ReadyOS-context VICE automation remains the real graphics proof. All Phase 3 + demos are loaded and run from inside ReadyBASIC after ReadyOS launches it. +- Demo text should avoid command-looking words in visible strings and even in + casual REM text. Existing command hook behavior can scan surprising places, so + the Phase 3 demos use neutral labels and done markers. +- Do not keep polygon loop state in command frame fields reused by primitive + drawing. The line worker mutates current-point fields; polygon count and index + need separate scratch bytes. +- Screenshot demos should hold graphics mode with a `GET` loop and let VICE + automation press SPACE after capture. Pause-only demos can return to text + before the harness captures, especially when command waits are byte-sized or + intentionally short. diff --git a/agentworking/readybasic-gfx-phase3/STATE.md b/agentworking/readybasic-gfx-phase3/STATE.md new file mode 100644 index 0000000..5b0c465 --- /dev/null +++ b/agentworking/readybasic-gfx-phase3/STATE.md @@ -0,0 +1,37 @@ +# ReadyBASIC Graphics Phase 3 State + +Objective: implement polygon-first graphics commands as ReadyBASIC commands only, +without changing ReadyBASIC language behavior, tokenization, control flow, native +expression rules, `BASIC_START`, or empty BASIC free bytes. + +Design source: `src/apps/readybasic/READYBASIC_GRAPHICS_COMMAND_DESIGN.md`. + +Current status: + +- Phase 3 adds built-in module id `3`, submodule `20`, named `GFXPOLY`. +- `GFXPOLY` is a slot-2 replacement overlay fetched into `$B800-$BF99`. +- The overlay is stored in the ReadyBASIC assigned command-code REU bank at + offset `$6000`; its current size is `$079A` / 1946B. +- `BASIC_START` remains `$2AC1`; formula empty BASIC free bytes remain `30013`. +- Array-backed commands are `POLY(A%(0),COUNT,C)` and + `FPOLY(A%(0),COUNT,C)`. +- REU point-buffer commands are `PBUFNEW(COUNT,H%)`, + `PBUFSET(H%,INDEX,X,Y)`, `POLYH(H%,COUNT,C)`, `FPOLYH(H%,COUNT,C)`, and + `PBUFFREE(H%)`. +- Point buffers are typed REU handle type `4` and currently use one heap page, + supporting up to 64 zero-based points. +- New demos are `rbgfx17_poly_array.bas`, `rbgfx18_fpoly_array.bas`, + `rbgfx19_poly_reu.bas`, and `rbgfx20_fpoly_reu_showcase.bas`. +- New automation is `build_support/run_readybasic_gfx_phase3_demo.sh` and + `make readybasic-gfx-phase3-vice`. + +Known limits: + +- Same-name handle overloads `POLY(H%,COUNT,C)` and `FPOLY(H%,COUNT,C)` were + not implemented. `POLYH` and `FPOLYH` keep the resident parser small enough to + preserve `BASIC_START=$2AC1`. +- `FPOLY` and `FPOLYH` use a conservative convex fan fill, not a full + scanline/concave polygon fill. +- Polygon line drawing uses the current compact step-toward-endpoint primitive, + so uneven slopes are approximate. +- Tile modes draw/fill through the existing cell-space plotting path. diff --git a/agentworking/readybasic-gfx-phase3/TEST_LOG.md b/agentworking/readybasic-gfx-phase3/TEST_LOG.md new file mode 100644 index 0000000..2c4a815 --- /dev/null +++ b/agentworking/readybasic-gfx-phase3/TEST_LOG.md @@ -0,0 +1,60 @@ +# ReadyBASIC Graphics Phase 3 Test Log + +## 2026-06-16 + +Planned focused checks: + +- `make bin/readybasic.prg` +- `make readybasic-plugin-static-check` +- `make readybasic-memory-report` +- `make readybasic-gfx-phase3-vice` +- `make readybasic-gfx-phase2-vice` +- `make readybasic-module-overlay-vice` +- `make readybasic-plugin-command-vice` + +Planned full regression: + +- `make readybasic-vice-suites` + +Capture labels expected from the Phase 3 VICE demo: + +- `readybasic_gfx_phase3_poly_array` +- `readybasic_gfx_phase3_fpoly_array` +- `readybasic_gfx_phase3_poly_reu` +- `readybasic_gfx_phase3_fpoly_reu_showcase` + +Completed focused checks so far: + +- `make bin/readybasic.prg`: passed. +- `make readybasic-plugin-static-check`: passed. +- `make readybasic-memory-report`: passed. +- `make readybasic-gfx-phase3-vice`: passed, including ReadyOS boot, + ReadyBASIC-loaded demos, one `LIST` assertion, `PBUFNEW`/`PBUFFREE` text + probe, no BASIC error prompt, and all four screenshot captures. +- `make readybasic-gfx-phase2-vice`: passed. +- `make readybasic-module-overlay-vice`: passed. +- `make readybasic-plugin-command-vice`: passed. + +Full regression: + +- `make readybasic-vice-suites`: passed. + +Relevant VICE run directories: + +- Phase 3 polygon screenshots: + `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260616_180808` +- Phase 2 graphics regression: + `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260616_172349` +- Module overlay focused regression: + `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260616_172427` +- Plugin command focused regression: + `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260616_172530` +- Full suite final visual verification: + `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260616_175215` + +Screenshot capture note: + +- The final Phase 3 demos use the proven Phase 2 `GET`/SPACE gate after a + short `ZPAUSE(30)`. Earlier pause-only demo captures returned to text before + the harness screenshot step, so screenshot demos should hold graphics mode + until automation explicitly advances them. diff --git a/agentworking/readybasic-gfx-phase4/IMPLEMENTATION_LOG.md b/agentworking/readybasic-gfx-phase4/IMPLEMENTATION_LOG.md new file mode 100644 index 0000000..0eaf994 --- /dev/null +++ b/agentworking/readybasic-gfx-phase4/IMPLEMENTATION_LOG.md @@ -0,0 +1,12 @@ +# Implementation Log + +- Added linker segments `OVL4PACK` and `OVL5PACK` for built-in slot-2 replacement overlays. +- Added submodules `GFXDL` and `GFXTILE`, stashed at code-bank offsets `$6800` and `$7000`. +- Added typed REU handle kinds for display lists, charsets, tilesets, and tilemaps. +- Implemented `DLMAKE`, `DLCLR`, `DLPLOT`, `DLLINE`, `DLRECT`, `DLFRECT`, and `DLDRAW`. +- Implemented `CHRMAKE`, `CHRROW`, `CHRUSE`, `TSMAKE`, `TSSET`, `TMMAKE`, `TMSET`, `TMDRAW`, `MCELL`, and `MCBG`. +- Fixed `TMDRAW` map handle preservation: the first version saved map bank/page in `RF_RECT_BUF`, which overlaps the tileset fetch buffer. +- Kept constructor command names as `*MAKE` because embedded `NEW` is unsafe under the unchanged BASIC tokenizer path. +- Added `GFXTGT` as a stored-program-safe descriptor alias for the existing `GFXTARGET` command id/worker after `GFXTARGET(H%)` tokenized badly in a `petcat` demo. +- Added `rbgfx26_mode_matrix.bas` to exercise immediate primitives across `HIRES`, `MBITMAP`, `TILE`, and `MTILE`. +- Added `rbgfx27_target_blit.bas` to exercise `GFXSURF`, `GFXTGT`, `GFXSYNC`, `GFXBLIT`, and visible-target restore. diff --git a/agentworking/readybasic-gfx-phase4/LESSONS.md b/agentworking/readybasic-gfx-phase4/LESSONS.md new file mode 100644 index 0000000..1ebccdc --- /dev/null +++ b/agentworking/readybasic-gfx-phase4/LESSONS.md @@ -0,0 +1,8 @@ +# Lessons + +- At 1MHz, BASIC-side resource construction loops are slow enough that screenshot automation must wait for an explicit program-held graphics frame, not an optimistic fixed delay. +- Command names containing tokenizable BASIC words are risky without changing the language tokenizer. `DLMAKE`, `CHRMAKE`, `TSMAKE`, and `TMMAKE` are safer than `*NEW`. +- Even existing names can be unsafe in stored BASIC if they contain tokenizable substrings; `GFXTGT` is the safe demo spelling for `GFXTARGET`. +- Shared scratch buffers overlap intentionally. Before fetching larger REU chunks, check whether any saved state lives inside the destination range. +- For speed, retained resources should be compact and REU-backed. BASIC should build handles or load future resource files; command overlays should perform the expensive traversal/copy work. +- The tilemap command path and the tile/charset display path are separate failure domains. Debugging them separately avoids blaming the REU structure when the visible VIC configuration is the real issue. diff --git a/agentworking/readybasic-gfx-phase4/STATE.md b/agentworking/readybasic-gfx-phase4/STATE.md new file mode 100644 index 0000000..d8780d8 --- /dev/null +++ b/agentworking/readybasic-gfx-phase4/STATE.md @@ -0,0 +1,7 @@ +# ReadyBASIC Graphics Phase 4 State + +- Implemented command-only overlays `GFXDL` and `GFXTILE`. +- Added retained display-list commands, fixed-format charset/tileset/tilemap handles, explicit multicolor bitmap cell commands, mode-matrix and target/blit demos, and ReadyOS-hosted VICE automation. +- `BASIC_START` remains `$2AC1`; resident size remains `$18C0`. +- Latest focused run: `READYBASIC_SKIP_BUILD=1 make readybasic-gfx-phase4-vice` passed with 34/34 steps. +- Known issue: `TMDRAW` writes expected Bank D screen/color bytes, but the current VICE screenshot is still blank in `GFXMODE("TILE")`; remaining issue is Bank D charset/tile display visibility. diff --git a/agentworking/readybasic-gfx-phase4/TEST_LOG.md b/agentworking/readybasic-gfx-phase4/TEST_LOG.md new file mode 100644 index 0000000..09cd53f --- /dev/null +++ b/agentworking/readybasic-gfx-phase4/TEST_LOG.md @@ -0,0 +1,22 @@ +# Test Log + +- `make bin/readybasic.prg` passed. +- `make obj/rbgfx23_dlist.prg obj/rbgfx24_tilemap.prg obj/rbgfx25_mbcells.prg` passed. +- `make readybasic-plugin-static-check` passed. +- `make obj/rbgfx26_mode_matrix.prg obj/rbgfx27_target_blit.prg` passed. +- `READYBASIC_SKIP_BUILD=1 make readybasic-gfx-phase4-vice` passed in ReadyOS-hosted VICE context with 34/34 steps. +- `make readybasic-vice-suites` passed after the Phase 4 demo/doc updates. The last broad suite stages completed successfully, including: + - `readybasic_reuviewer_f2_chain_probe`, 64/64 steps, run directory `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260616_234214`. + - `readybasic_cross_app_resume_probe`, 211/211 steps, run directory `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260616_234257`. + - `readybasic_second_entry_editor_probe`, 150/150 steps, run directory `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260616_234519`. + - `readybasic_full_suite_visual_verification`, 184/184 steps, run directory `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260616_234711`. +- Screenshot run directory with latest focused pass: + `/Users/karlprosserpp/dev/c64projects/readyosprecog/logs/vice_auto_20260616_230724`. + +Screenshot observations: + +- Display-list demo shows retained plot/line/rect/frect output. +- Multicolor bitmap cell demo shows visible slot/cell color changes. +- Mode matrix shows visible `HIRES` and `MBITMAP` primitive coverage, and its final text capture reports `MATRIX 1 1 1 73`, proving `PNT` returned values in all four tested modes. +- Target/blit demo reports `SURF 6`, `TARGET SURF ERR 0`, `SYNC ERR 0`, `BLIT ERR 0`, and `TARGET VISIBLE ERR 0`. +- Tilemap demo currently captures a blank blue Bank D tile screen even though a debug pass showed `TMDRAW` wrote screen byte `81`, color byte `2`, and `ERRCODE()` returned `0`. diff --git a/agentworking/readybasic-gfx-phase5/IMPLEMENTATION_LOG.md b/agentworking/readybasic-gfx-phase5/IMPLEMENTATION_LOG.md new file mode 100644 index 0000000..a3f75b7 --- /dev/null +++ b/agentworking/readybasic-gfx-phase5/IMPLEMENTATION_LOG.md @@ -0,0 +1,18 @@ +# ReadyBASIC Graphics Phase 5 Implementation Log + +## 2026-06-17 + +- Added demos `rbgfx28_tile_visible.bas` through `rbgfx32_convex_poly.bas`. +- Added `build_support/run_readybasic_gfx_phase5_demo.sh` and Makefile target `readybasic-gfx-phase5-vice`. +- Added the new demo PRGs to the ReadyBASIC-capable D81 profiles. +- Fixed the four-character mode parser path: + - `TILE` now returns `RB_GFX_MODE_TILE`. + - `TEXT` still returns `RB_GFX_MODE_TEXT`. +- Added command-side mode state storage at `RB_GFX_MODE_STATE`. +- Updated `gfx_get_mode`, primitive, display-list, and polygon mode checks to use the stored mode state. +- Seeded simple solid tile glyphs during `GFXCLEAR` for `TILE`/`MTILE` so immediate primitive demos render without requiring custom charset setup. +- Fixed `DLPLOT` color replay and added an MBITMAP display-list plot path. +- Fixed `GFXSYNC` and `GFXBLIT` REU DMA memory configuration: + - REU surface transfers use `$35` so Bank D RAM and REU registers are both reachable. + - General under-ROM command dispatch uses `$36` so command code runs with BASIC ROM hidden and I/O visible. + diff --git a/agentworking/readybasic-gfx-phase5/LESSONS.md b/agentworking/readybasic-gfx-phase5/LESSONS.md new file mode 100644 index 0000000..40c663b --- /dev/null +++ b/agentworking/readybasic-gfx-phase5/LESSONS.md @@ -0,0 +1,10 @@ +# ReadyBASIC Graphics Phase 5 Lessons + +- A VICE automation step passing is not enough for graphics work. The screenshot has to be visually inspected or pixel-counted. +- `GFXMODE("TILE")` was returning text mode because the four-character parser branch checked only the leading `T`. The fix is command parser logic, not ReadyBASIC language behavior. +- Running overlay code with BASIC ROM hidden is not enough for graphics; VIC/CIA/color/REU paths also need I/O visibility at the right moments. +- `$36` is appropriate for ordinary under-ROM command execution: BASIC ROM hidden, KERNAL and I/O visible. +- REU graphics DMA that touches Bank D bitmap RAM should use `$35` while programming/transferring, because it keeps the needed RAM visible without hiding the REU registers. +- Store graphics mode as command state instead of reverse-engineering it from live VIC/CIA registers on every draw. It is faster and avoids ReadyOS context surprises. +- Keep demos small, but make them visually unambiguous. Blank-screen tests are not tests. + diff --git a/agentworking/readybasic-gfx-phase5/STATE.md b/agentworking/readybasic-gfx-phase5/STATE.md new file mode 100644 index 0000000..5388d8b --- /dev/null +++ b/agentworking/readybasic-gfx-phase5/STATE.md @@ -0,0 +1,23 @@ +# ReadyBASIC Graphics Phase 5 State + +Date: 2026-06-17 + +Phase 5 is command-only. It keeps BASIC start/free memory and ReadyBASIC language behavior unchanged. + +Implemented in this slate: + +- Fixed `GFXMODE("TILE")` so it selects Bank D tile mode instead of falling through to `TEXT`. +- Kept graphics mode in `RB_GFX_MODE_STATE` so command overlays do not need to re-read VIC/CIA mode state. +- Made under-ROM command overlay calls enter with BASIC ROM hidden and I/O visible. +- Made `GFXSYNC` snapshot visible Bank D bitmap/screen/color layout into the selected `GFXTGT(H%)` surface. +- Made `GFXBLIT(H%)` restore typed REU graphics surfaces to visible Bank D. +- Added visible `TILE`, visible `MTILE`, MBITMAP display-list, sync/blit, and polygon showcase demos. +- Added `make readybasic-gfx-phase5-vice`. + +Current focused screenshot run: + +- `logs/vice_auto_20260617_011251` + +Final full ReadyBASIC VICE suite: + +- `make readybasic-vice-suites`: pass diff --git a/agentworking/readybasic-gfx-phase5/TEST_LOG.md b/agentworking/readybasic-gfx-phase5/TEST_LOG.md new file mode 100644 index 0000000..2e2c510 --- /dev/null +++ b/agentworking/readybasic-gfx-phase5/TEST_LOG.md @@ -0,0 +1,85 @@ +# ReadyBASIC Graphics Phase 5 Test Log + +## Focused Run + +Command: + +```sh +make bin/readybasic.prg +make readybasic-plugin-static-check +make readybasic-gfx-phase5-vice +``` + +Result: + +- `make bin/readybasic.prg`: pass +- `make readybasic-plugin-static-check`: pass +- `make readybasic-gfx-phase5-vice`: pass + +Run directory: + +- `logs/vice_auto_20260617_005937` +- Later focused rerun after the `SPRCOL` phase-1 demo fix and full-suite prep: + `logs/vice_auto_20260617_011251` + +Key screenshots: + +- `readybasic_gfx_phase5_tile_visible.png` +- `readybasic_gfx_phase5_mtile_visible.png` +- `readybasic_gfx_phase5_mbitmap_dlist.png` +- `readybasic_gfx_phase5_sync_source.png` +- `readybasic_gfx_phase5_sync_cleared.png` +- `readybasic_gfx_phase5_sync_restored.png` +- `readybasic_gfx_phase5_convex_poly.png` + +PNG sanity counts from the focused run: + +- tile visible: 6 colors, 38344 nonblack pixels +- mtile visible: 5 colors, 38416 nonblack pixels +- mbitmap dlist: 3 colors, 1310 nonblack pixels +- sync source: 3 colors, 2009 nonblack pixels +- sync cleared: 2 colors, 1116 nonblack pixels +- sync restored: 3 colors, 2009 nonblack pixels +- convex poly: 3 colors, 12894 nonblack pixels + +## Focused Graphics Regression Batch + +Command: + +```sh +make readybasic-plugin-static-check readybasic-gfx-phase1-vice readybasic-gfx-phase2-vice readybasic-gfx-phase3-vice readybasic-gfx-mbitmap-vice readybasic-gfx-phase4-vice readybasic-gfx-phase5-vice +``` + +Result: pass. + +Key run directories: + +- Phase 1: `logs/vice_auto_20260617_010936` +- Phase 2: `logs/vice_auto_20260617_011006` +- Phase 4: `logs/vice_auto_20260617_011146` +- Phase 5: `logs/vice_auto_20260617_011251` + +## Full ReadyBASIC VICE Suite + +Command: + +```sh +make readybasic-vice-suites +``` + +Result: pass on the final normal run. + +Final run directories observed during the suite: + +- `readybasic_demo_suite`: `logs/vice_auto_20260617_015512` +- `readybasic_repeat_label_probe`: `logs/vice_auto_20260617_020549` +- `readybasic_lifecycle_probe`: `logs/vice_auto_20260617_020643` +- `readybasic_plugin_command_probe`: `logs/vice_auto_20260617_020808` +- `readybasic_program_probe`: `logs/vice_auto_20260617_021011` +- `readybasic_rbtest1_probe`: `logs/vice_auto_20260617_021120` +- `readybasic_large_vars_probe`: `logs/vice_auto_20260617_021227` +- `readybasic_hotkey_launcher_cycle`: `logs/vice_auto_20260617_021311` +- `readybasic_reuviewer_f2_chain_probe`: `logs/vice_auto_20260617_021513` +- `readybasic_cross_app_resume_probe`: `logs/vice_auto_20260617_021557` +- `readybasic_second_entry_editor_probe`: `logs/vice_auto_20260617_021819` +- `readybasic_full_suite_visual_verification`: `logs/vice_auto_20260617_022010` diff --git a/agentworking/readybasic-sound-phase1/IMPLEMENTATION_LOG.md b/agentworking/readybasic-sound-phase1/IMPLEMENTATION_LOG.md new file mode 100644 index 0000000..5b039cf --- /dev/null +++ b/agentworking/readybasic-sound-phase1/IMPLEMENTATION_LOG.md @@ -0,0 +1,13 @@ +# ReadyBASIC Sound Phase 1 Implementation Log + +## 2026-06-17 + +- Added linker segment `SLOT2OVL6` / `OVL6PACK`. +- Added sound constants for SID register addresses. +- Added `RB_MODULE_SID=4`, `RB_SUBMOD_SIDCORE=23`, and `RB_CODE_SIDCORE_OFF=$7800`. +- Added `CMD_SIDCORE` descriptor macro and 16 command descriptors. +- Extended cold prestash table from five to six built-in overlays. +- Implemented `SIDCORE` direct SID commands in `OVL6PACK`. +- Tried a seven-number command parser signature for friendly `VOICE(V,F,W,A,D,S,R)`, but it grew resident code by 31 bytes and overflowed the fixed resident budget. +- Reworked `VOICE` to the faster packed SID form `VOICE(V,F,W,AD,SR)` using the existing five-number parser signature. +- Added six human-audible BASIC demos and a ReadyOS/ReadyBASIC VICE automation script. diff --git a/agentworking/readybasic-sound-phase1/LESSONS.md b/agentworking/readybasic-sound-phase1/LESSONS.md new file mode 100644 index 0000000..3a482d1 --- /dev/null +++ b/agentworking/readybasic-sound-phase1/LESSONS.md @@ -0,0 +1,6 @@ +# ReadyBASIC Sound Phase 1 Lessons + +- New command syntax should prefer existing parser signatures unless there is a very strong reason to grow resident code. +- For SID, packed bytes are not merely a compromise: `AD` and `SR` match the hardware registers and reduce command dispatch/expression overhead at 1 MHz. +- Sound verification cannot rely on screenshots. The automated suite should prove ReadyOS/ReadyBASIC loading, stored BASIC tokenization, command dispatch, and no BASIC error; human listening remains the real audio validation for this phase. +- Keep playback blocking in Phase 1. Nonblocking music implies persistent timing state and should be designed as a later poll/IRQ phase. diff --git a/agentworking/readybasic-sound-phase1/STATE.md b/agentworking/readybasic-sound-phase1/STATE.md new file mode 100644 index 0000000..b30efb7 --- /dev/null +++ b/agentworking/readybasic-sound-phase1/STATE.md @@ -0,0 +1,22 @@ +# ReadyBASIC Sound Phase 1 State + +Started: 2026-06-17 + +Goal: add command-only SID sound support to ReadyBASIC without changing language behavior, BASIC start, or BASIC bytes free. + +Current implementation: + +- New built-in sound module id `4`. +- New `SIDCORE` submodule id `23`. +- New slot-2 overlay `OVL6PACK`, prestashed to the ReadyBASIC code REU bank at `$7800`. +- Public commands: `SIDCLR`, `SILENCE`, `VOL`, `FREQ`, `NOTE`, `PULSE`, `ADSR`, `ENV`, `WAVE`, `GATE`, `CTRL`, `VOICE`, `FILTER`, `FILT`, `SOUND`, `SND`. +- `VOICE` intentionally uses the existing five-number parser signature: `VOICE(V,F,W,AD,SR)`. +- No IRQ music engine, no resident scheduler, no new language features. + +Verification status: + +- `make bin/readybasic.prg` passes after removing the resident-growing seven-argument parser experiment. +- `make readybasic-plugin-static-check` passes. +- `make readybasic-memory-report` passes; BASIC free remains `30013`. +- `make readybasic-sound-phase1-vice` passes inside ReadyOS-loaded ReadyBASIC. +- `make readybasic-vice-suites` passes. diff --git a/agentworking/readybasic-sound-phase1/TEST_LOG.md b/agentworking/readybasic-sound-phase1/TEST_LOG.md new file mode 100644 index 0000000..abdfad3 --- /dev/null +++ b/agentworking/readybasic-sound-phase1/TEST_LOG.md @@ -0,0 +1,34 @@ +# ReadyBASIC Sound Phase 1 Test Log + +## 2026-06-17 + +- `make bin/readybasic.prg` + - Initial result: failed; adding a seven-argument `VOICE` parser grew `RESIDENT` by 31 bytes. + - Fix: remove the new parser signature and use existing `SIG_LINE` for packed `VOICE(V,F,W,AD,SR)`. + - Current result: pass. + +- `make obj/rbsnd01_sid_basics.prg obj/rbsnd02_voice_state.prg obj/rbsnd03_notes.prg obj/rbsnd04_filter.prg obj/rbsnd05_voice_batch.prg obj/rbsnd06_three_voice.prg` + - Result: pass. + +- `make readybasic-plugin-static-check` + - Result: pass. + +- `make readybasic-memory-report` + - Result: pass. + - Confirmed `RESIDENT` remains `$1200-$2ABF` and BASIC free memory remains `30013`. + - Confirmed `OVL6PACK` / `SIDCORE` uses 526 bytes of a 2KB slot and is stashed at REU code-bank offset `$7800`. + +- `make readybasic-sound-phase1-vice` + - Result: pass. + - ReadyOS booted first, ReadyBASIC was loaded by ReadyOS, and each `rbsndNN` demo was loaded/listed/run inside ReadyBASIC. + - Run directory: `logs/vice_auto_20260617_115052`. + +- `make readybasic-vice-suites` + - Result: pass. + - Includes the new sound demo suite and the full ReadyBASIC visual/command verification suite. + - Sound suite run directory from full regression: `logs/vice_auto_20260617_121614`. + - Full visual verification run directory from full regression: `logs/vice_auto_20260617_121645`. + +Human audio note: + +- VICE automation proves the demos load, list, run, and complete without BASIC errors in the correct ReadyOS context. It does not prove audible SID output quality; the demos deliberately print what should be heard and pause long enough for human listening. diff --git a/agentworking/readyos-1kb-shim-skip-bank/DOCUMENTATION_AUDIT.md b/agentworking/readyos-1kb-shim-skip-bank/DOCUMENTATION_AUDIT.md new file mode 100644 index 0000000..bf63e41 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/DOCUMENTATION_AUDIT.md @@ -0,0 +1,52 @@ +# Documentation Audit: 1 KB Shim And ReadyOS-at-Skip Contract + +## Scope + +The audit covers Markdown and HTML under `docs/`, `privatedocs/`, the 0.2.5 +release/SKU tree, application documentation under `src/apps/`, and top-level +Markdown. The corpus-wide scan examined 196 Markdown/HTML files before this +evidence file was added. + +## Current contract checked + +- Active app RAM and snapshot: `$1000-$C5FF` (`$B600`, 46,592 bytes). +- Full resident shim: `$C600-$C9FF` (1 KB). +- Shim expansion reserve: `$C600-$C7FF`; stable public ABI: `$C800-$C9FF`. +- Physical banks below `Skip`: skipped/reserved. +- Physical `Skip`: combined ReadyOS bank. +- Physical `Skip+1`: first dynamic allocation candidate. +- ReadyOS bank `$0000-$B5FF`: launcher snapshot. +- ReadyOS bank `$B600-$FFFF`: schema v5 and its maps, status, clipboard, + hotkeys, registries, catalog, audit, and launcher runtime state. +- ReadyBASIC custom assembler/linker shape remains below `$C600`. +- ReadyShell overlay execution remains `$8E00-$C5FF`. + +## Classification and preservation + +- All 38 HTML documents are explicitly classified as current or preserved + historical/design material by `update_documentation_html_status.py`. +- Historical material was not deleted or silently normalized. Thirty-one + retained Markdown/HTML reports carry the current-contract supersession + marker while keeping their dated layouts and measurements. +- Current documents with legitimate uses of strings such as `$B800` (for + example, a ReadyBASIC submodule address) were not incorrectly rewritten as + though every occurrence described the old app-window size. +- Generated SKU `help.md`, `helpme.md`, manifests, release README/template, and + the special 1 MB Kung Fu Flash 2 budget explanation were regenerated. + +## Full shim source copies + +`verify_shim_html_source.py` finds every full commented shim listing in the +HTML corpus and compares its `.byte` directives with +`src/boot/readyos_shim.inc`. Five listings pass, each containing the same 175 +canonical directives and current schema-v5 token lookup annotations. + +## Automated evidence + +- `python3 build_support/verify_documentation_contract.py`: PASS. +- `python3 build_support/update_documentation_html_status.py --check`: PASS, + 38 classified HTML documents. +- `python3 build_support/verify_shim_html_source.py`: PASS, five complete + canonical listings. +- `python3 build_support/annotate_historical_memory_contracts.py`: repeat-safe; + a final rerun must report zero newly annotated documents. diff --git a/agentworking/readyos-1kb-shim-skip-bank/PLAN.md b/agentworking/readyos-1kb-shim-skip-bank/PLAN.md new file mode 100644 index 0000000..a4dbc22 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/PLAN.md @@ -0,0 +1,44 @@ +# ReadyOS 1KB Shim / ReadyOS-at-Skip Refactor + +Baseline commit: `1644b22` (`Unify ReadyOS bank state and refresh documentation`) + +## Required final contract + +- The complete resident ReadyOS shim area is `$C600-$C9FF` (`$0400`, 1024 bytes). +- The existing public jump table and data ABI remains fixed at `$C800-$C9FF`. +- `$C600-$C7FF` is reserved shim expansion space and is not linked, allocated, + snapshotted, or treated as scratch by applications. +- The app snapshot is `$1000-$C5FF` (`$B600`, 46,592 bytes). +- Physical `Skip` is the combined ReadyOS bank. With `Skip=0`, physical bank 0 + is the ReadyOS bank. +- Physical `Skip+1` is the first dynamic allocation candidate; token 0 resolves + directly to physical `Skip`; nonzero tokens resolve through the ReadyOS-bank + mapping table. +- The ReadyOS bank contains the launcher snapshot at `$0000-$B5FF` and schema-v5 + state at `$B600-$FFFF`. +- ReadyBASIC preserves its custom assembler/linker shape and does not use + `$C600-$C9FF`. +- ReadyShell retains its `$8E00-$C5FF` overlay ABI. +- Disk, EasyFlash, and Ultimate DMA launch/switch/resume behavior must agree. + +## Verification evidence required + +- Before/after linker, code/data/BSS, heap, and full-window headroom reports for + every app and both regular/EasyFlash launchers and ReadyShell builds. +- Exact 1024-byte disk/EasyFlash shim identity and canonical commented source + verification, including HTML full-source copies. +- Static memory, snapshot/resume, ReadyOS-bank schema, dynamic allocation, + ReadyBASIC-shape, documentation, and no-deletion gates. +- All release-profile builds and EasyFlash packing/smoke verification. +- Full regular and EasyFlash ReadyBASIC suites. +- ReadyShell host, overlay, cross-app resume, and UI automation suites. +- Core UI/app switching, hotkey, clipboard, owned-bank, unload, and resume suites. +- Ultimate 64 UCI/DMA loading and cross-app suites launched through the required + Terminal-owned background workflow. + +## Safety rules + +- Do not delete source, documentation, reports, or release artifacts. +- Preserve baseline evidence and append test results to `TEST_LOG.md`. +- Build ReadyOS only through `run.sh`/`run.ps1` and the established aggregate + Makefile test targets; never launch a single app directly. diff --git a/agentworking/readyos-1kb-shim-skip-bank/REQUIREMENTS_AUDIT.md b/agentworking/readyos-1kb-shim-skip-bank/REQUIREMENTS_AUDIT.md new file mode 100644 index 0000000..3e957f4 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/REQUIREMENTS_AUDIT.md @@ -0,0 +1,25 @@ +# Requirement-by-Requirement Completion Audit + +This checklist is intentionally evidence-based. An item becomes complete only +after the named final-state evidence exists and has been inspected. + +| Requirement | Final evidence | Status | +|---|---|---| +| Full resident 1 KB shim at `$C600-$C9FF` | linker configs, boot/EasyFlash images, `verify_readyos_shim.py`, binary identity | proven | +| `$C600-$C7FF` remains shim headroom, not app RAM | all app linker configs/maps, ReadyBASIC custom layout, memory verifier | proven | +| Stable public ABI remains `$C800-$C9FF` | canonical shim source and symbol/byte verification | proven | +| App snapshot is `$1000-$C5FF` / `$B600` | shim opcodes, boot/loaders, app configs, resume verifier | proven | +| Banks below `Skip` are skipped; physical `Skip` is ReadyOS; `Skip+1` is first dynamic | allocator/control-bank/boot/EasyFlash source plus schema dumps | proven | +| App/map/status/clipboard/catalog authority is in ReadyOS bank | schema-v5 offsets and callers; launcher/schema UI tests | proven | +| Disk, EasyFlash, and Ultimate DMA paths agree | regular/EasyFlash suites and Ultimate hardware acceptance | proven | +| ReadyBASIC custom assembler/linker shape stays compatible and tight | source contract, linker map, shape verifier, full regular/EasyFlash suites | proven | +| ReadyShell memory and overlay ABI stay tight | map/report, host suite, regular/EasyFlash cross-app suites, Ultimate sequence | proven | +| Clipboard and app resume state survive switching | regular non-empty clipboard plan plus cross-app suites | proven | +| All release/SKU builds succeed | final `/bin/bash ./run.sh --build-all` | proven | +| All VICE UI suites succeed | retained full regular and EasyFlash aggregate manifests plus final targeted clipboard run | proven | +| Ultimate DMA loading succeeds | editor direct/return, F3 selection, F1 all, manifest, ReadyBASIC, ReadyShell, ReadyIRC | proven | +| Linker/BSS/heap/overlay/headroom analyzed before and after | JSON/Markdown comparison and regenerated reports | proven | +| Main, SKU, app, public/private Markdown and HTML are current or visibly historical | documentation verifier, HTML classification, corpus scan | proven | +| Every full commented HTML shim source matches current source | five-listing byte/directive verifier | proven | +| No files or retained historical artifacts are deleted | final Git deletion audit and release-artifact restoration | proven | +| Working changes committed in reviewable scopes | `ced085d`, `561124f`, `eb58efb`, plus this final audit commit | proven | diff --git a/agentworking/readyos-1kb-shim-skip-bank/TEST_LOG.md b/agentworking/readyos-1kb-shim-skip-bank/TEST_LOG.md new file mode 100644 index 0000000..b81ffbc --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/TEST_LOG.md @@ -0,0 +1,163 @@ +# ReadyOS 1KB Shim / ReadyOS-at-Skip Test Log + +## Baseline + +- Known-good working state committed as `1644b22`. +- Fresh pre-change linker/headroom report: `headroom_before.json`. +- Pre-change contract: app snapshot `$1000-$C7FF` (`$B800`), 512-byte shim + `$C800-$C9FF`, ReadyOS bank at physical `Skip+1`. + +## Implementation and build verification + +- `/bin/bash ./run.sh --build-all`: PASS for all release SKUs and EasyFlash. +- Generated release version: `0.2.5L`. +- `python3 build_support/verify_readyos_shim.py`: PASS; canonical resident shim is + 1024 bytes, disk boot clears `$C600-$C7FF` and installs the `$C800-$C9FF` + ABI, and EasyFlash packages the full resident image. +- `python3 build_support/verify_reu_control_bank.py`: PASS. +- `python3 build_support/verify_memory_map.py`: PASS; expected warning only for + ReadyShell overlay 6 ending at `$C5F4`. +- `python3 build_support/verify_dynamic_launcher.py`: PASS. +- `python3 build_support/verify_resume_contract.py`: PASS. +- `python3 build_support/verify_readybasic_plugin.py`: PASS. +- `python3 verify.py`: PASS. +- `python3 build_support/verify_shim_html_source.py`: PASS; all five complete + HTML source listings contain the 175 canonical `.byte` directives. + +## Host tests + +- `python3 build_support/editor_host_smoke.py`: PASS, headroom 12,194 bytes. +- `python3 build_support/tasklist_host_smoke.py`: PASS, headroom 6,398 bytes. +- `python3 build_support/simplefiles_host_smoke.py`: PASS. +- `make readyshell-host-tests`: PASS for parser, VM, C64 overlay VM, REU/value, + and serialization tests; compiler warnings are unchanged unused static helpers. + +## Regular VICE/UI automation + +- Full ReadyBASIC aggregate (26 suites): PASS; manifest + `logs/vice_auto_20260802_190250/manifest.json`. +- ReadyBASIC hotkey, cross-app resume, second-entry Editor return, loaded-apps, + and keyboard regression probes: PASS; manifests `...184119`, `...185151`, + `...185342`, `...185924`, and `...185052` respectively. +- Launcher ReadyOS-bank/schema state probe: 28/28 PASS; manifest `...191057`. +- QuickNotes owned-REU lifecycle before unload: 15/15 PASS; manifest `...191156`. +- QuickNotes unload/release lifecycle: 17/17 PASS; manifest `...191215`. +- ReadyShell Editor -> ReadyBASIC -> Editor -> ReadyShell overlay/resume sequence: + 33/33 PASS on unchanged retry; manifest `...191608`. +- The first keyboard attempt timed out and the first ReadyShell attempt dropped + its final `EXIT` key. Both partial failures are retained in `logs/`; fresh, + unchanged reruns passed and are the manifests cited above. + +## EasyFlash/cartridge automation + +- `make easyflash-verify`: PASS for layout, static contract, full 1KB shim, + schema v5, preload image, and launcher verification. +- `make easyflash-preload-verify`: PASS. +- Full ReadyBASIC visual/command/heap/procedure suite: 188/188 PASS; manifest + `logs/vice_auto_20260802_204002/manifest.json`. +- ReadyBASIC second-entry Editor probe: 194/194 PASS; manifest + `logs/vice_auto_20260802_203756/manifest.json`. +- Ten ReadyBASIC <-> Editor switch/resume cycles: 265/265 PASS; manifest + `logs/vice_auto_20260802_202538/manifest.json`. +- ReadyShell Editor -> ReadyBASIC -> Editor -> ReadyShell overlay/resume sequence: + 35/35 PASS; manifest `logs/vice_auto_20260802_204753/manifest.json`. +- ReadyBASIC REUViewer/F2 chain: 70/70 PASS; manifest + `logs/vice_auto_20260802_202447/manifest.json`. This found and corrected a + stale test-only assumption that the ReadyOS bank was `Skip+1` and that token + status lived at the previous schema offset. The probe now derives both values + from generated/source configuration. +- Aggregate EasyFlash plans also passed demo, repeat/label, lifecycle, module, + plugin, program, RBTEST1, resume, screen-REU, state, large-variable, F4/F2 + hotkey, and keyboard coverage. Their passing manifests span `...193240` + through `...201921`; all failed cold-start attempts and passing fresh-process + retries remain preserved in `logs/`. + +## Headroom result + +- Detailed before/after data: `headroom_before.json`, `headroom_after.json`, and + `headroom_comparison.md` in this directory. +- Every conventional app gives the reserved lower shim half its intended 512 + bytes; code/data/BSS are otherwise stable. +- Tightest conventional application is Dizzy: 1,468-byte heap and 1,580 bytes + of raw window headroom. +- ReadyBASIC retains 1,025 bytes to `$C5FF` in its custom layout. +- ReadyShell retains its 3,688-byte heap; overlay 6 ends at `$C5F4` and therefore + has 11 bytes of overlay-address headroom without consuming that heap. + +## Safety audit so far + +- The release builder's normal cleanup briefly removed old tracked versioned + release files. They were detected immediately and restored from the checkpoint. +- `git status --short` contains no tracked deletions after restoration. +- Historical documentation is preserved; stale layouts are explicitly marked as + historical rather than removed. + +## Final recheck pass + +- `make verify`: PASS after the complete source and documentation update. This + reran the aggregate memory-map, ONCE/BSS, 1 KB shim, schema-v5, dynamic + launcher, resume, ReadyBASIC-shape, and documentation gates. +- `python3 build_support/verify_documentation_contract.py`: PASS for 14 live + contract documents, all retained historical-contract markers, and all 38 + classified HTML documents. The corpus audit subsequently standardized six + more historical Markdown reports; the final count is now 31 historical + markers. +- `python3 build_support/verify_shim_html_source.py`: PASS for five complete + commented HTML shim listings, each matching all 175 canonical `.byte` + directives. +- Host checks rerun unchanged: Editor, Tasklist, SimpleFiles, and the complete + ReadyShell host suite all PASS. +- Final report regeneration caught and corrected a generator-level HTML status + regression: `readybasic_memory_report.py` and `readyshell_overlay_report.py` + now emit their exact current-document banners themselves. The regenerated + public/private reports and the 38-document classification gate all PASS. +- Canonical `/bin/bash ./run.sh --build-all`: PASS with exit code 0 for the + complete 0.2.5Y disk-SKU matrix and EasyFlash artifacts. The post-build + preservation audit found zero tracked deletions. +- Regular VICE empty-clipboard return control: 12/12 PASS; manifest + `logs/vice_auto_20260802_212333/manifest.json`. +- Final regular-D81 non-empty clipboard lifecycle: 32/32 PASS with zero degraded + steps; manifest `logs/vice_auto_20260802_222311/manifest.json`. Editor copied + `CLIPTEST42`, Clipboard Manager reported exactly one item and previewed the + text, Editor resumed with its original contents, and paste produced + `ZCLIPTEST42`. The run also dumped the complete resident `$C600-$C9FF` shim. +- Retained failed clipboard diagnostics used either the Ultimate-DMA artifact or + an unreliable isolated harness Return injection. The passing plan uses the + established queue-clear plus VICE `keybuf` method from the second-entry suite; + no ReadyOS source change was needed. + +## Ultimate 64 acceptance + +- Editor direct DMA launch and return: PASS + (`c64u-dma/editor-direct-dma-return/status`). +- Editor F3 load-selected DMA path: PASS + (`c64u-dma/editor-load-selected/status`). +- F1 load-all followed by ReadyShell overlay execution: PASS on unchanged retry + (`c64u-dma-retry/loadall-readyshell-overlay-smoke/status`). +- F5 manifest load followed by SidetRIS launch: PASS + (`c64u-dma-retry2/manifest-sidetris/status`). +- The first ReadyBASIC load-selected retry remained blank before ReadyOS boot + and ended `READYOS_BOOT_FAIL`; it never reached or exercised ReadyBASIC. The + failure is retained under `c64u-dma-retry2/readybasic-load-selected/`. +- ReadyBASIC F3 load-selected DMA path: PASS on an isolated unchanged retry + (`c64u-readybasic-retry3/readybasic-load-selected/status`). The run proved + launcher DMA readiness, loader completion, `DMA:ON`, and the final + ReadyBASIC screen. +- Editor -> ReadyBASIC -> ReadyShell hardware lifecycle: 30/30 PASS with zero + degraded steps; manifest `logs/ultimate_auto_20260802_214758/manifest.json`. + The run modified and suspended Editor, launched and exercised ReadyBASIC, + returned through the launcher, then loaded ReadyShell and verified `VER`, + `LST`, and `CAT` overlay execution before dumping the final app/shim state. +- Stable-path DMA build for the ReadyIRC suite: PASS via + `LAUNCHER_DMA_LOAD=1 /bin/bash ./run.sh --profile precog-d81 --config + build_support/c64u_dma_acceptance/precog-d81-dma-valid.ini --build-only`. + Artifact `readyos-v0.2.5w-d81.d81` uses `reu_bank_skip=32` and launcher path + `/usb1/readyos.d81`. +- ReadyIRC Ultimate 64 lifecycle: 82/82 PASS with zero degraded steps; manifest + `logs/ultimate_auto_20260802_215831/manifest.json`. It covers setup/input + validation, lowercase charset, mixed-case network traffic, append/scroll + rendering, history stability, `NAMES`, channel switching, live suspend/resume + without reconnect, stale-socket reconnect, intentional disconnect, retained + settings/channel, and final full-shim dump. The fixture independently passed + all protocol assertions: three registrations, exact mixed-case PONG, ordered + PART/JOIN, expected NAMES requests, switched-channel PRIVMSG, and two QUITs. diff --git a/agentworking/readyos-1kb-shim-skip-bank/boot_hang_probe.yaml b/agentworking/readyos-1kb-shim-skip-bank/boot_hang_probe.yaml new file mode 100644 index 0000000..93a9154 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/boot_hang_probe.yaml @@ -0,0 +1,60 @@ +version: 1 +kind: vice_task_plan +plan_id: readyos_runfirst_fixture_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 1 + backoff_ms: 0 + jitter: false + timeouts: + launch_s: 45 + step_s: 90 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: true + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5o-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5o-d81-preboot.prg" + drive8_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_loading_launcher + type: screen.wait_contains + params: + text: "LOADING LAUNCHER" + wait_timeout_s: 30 + - id: delay_during_load + type: input.key + params: + key: 145 + pre_delay_s: 40 + - id: capture_stalled_screen + type: screen.capture + params: + label: runfirst_after_40s + - id: registers_after_20s + type: monitor.command + params: + command: "r" + - id: dump_boot_and_shim + type: dump.memory_ranges + params: + ranges: + - { label: kernal_vectors, start: 0x002B, end: 0x0030 } + - { label: irq_vectors, start: 0x0314, end: 0x0315 } + - { label: boot_code, start: 0x0801, end: 0x0FFF } + - { label: launcher_prefix, start: 0x1000, end: 0x11FF } + - { label: shim_full, start: 0xC600, end: 0xC9FF } diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry/loadall-readyshell-overlay-smoke/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry/loadall-readyshell-overlay-smoke/status new file mode 100644 index 0000000..01ffb35 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry/loadall-readyshell-overlay-smoke/status @@ -0,0 +1 @@ +READYOS_LOADALL_READYSHELL_OVERLAY_PASS diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry/manifest-sidetris/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry/manifest-sidetris/status new file mode 100644 index 0000000..9def559 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry/manifest-sidetris/status @@ -0,0 +1 @@ +READYOS_MANIFEST_DIALOG_FAIL diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry/suite.status b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry/suite.status new file mode 100644 index 0000000..446853f --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry/suite.status @@ -0,0 +1 @@ +FAIL rc=1 diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry2/manifest-sidetris/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry2/manifest-sidetris/status new file mode 100644 index 0000000..084b66d --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry2/manifest-sidetris/status @@ -0,0 +1 @@ +READYOS_MANIFEST_SIDETRIS_PASS diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry2/readybasic-load-selected/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry2/readybasic-load-selected/status new file mode 100644 index 0000000..f914918 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry2/readybasic-load-selected/status @@ -0,0 +1 @@ +READYOS_BOOT_FAIL diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry2/suite.status b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry2/suite.status new file mode 100644 index 0000000..446853f --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry2/suite.status @@ -0,0 +1 @@ +FAIL rc=1 diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/editor-direct-dma-return/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/editor-direct-dma-return/status new file mode 100644 index 0000000..a3d6004 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/editor-direct-dma-return/status @@ -0,0 +1 @@ +READYOS_EDITOR_DIRECT_DMA_RETURN_PASS diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/editor-load-selected/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/editor-load-selected/status new file mode 100644 index 0000000..30dcf65 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/editor-load-selected/status @@ -0,0 +1 @@ +READYOS_EDITOR_LOAD_SELECTED_PASS diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/loadall-readyshell-overlay-smoke/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/loadall-readyshell-overlay-smoke/status new file mode 100644 index 0000000..f914918 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/loadall-readyshell-overlay-smoke/status @@ -0,0 +1 @@ +READYOS_BOOT_FAIL diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/suite.status b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/suite.status new file mode 100644 index 0000000..446853f --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-dma/suite.status @@ -0,0 +1 @@ +FAIL rc=1 diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-readybasic-retry3/readybasic-load-selected/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-readybasic-retry3/readybasic-load-selected/status new file mode 100644 index 0000000..3913efc --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-readybasic-retry3/readybasic-load-selected/status @@ -0,0 +1 @@ +READYOS_READYBASIC_LOAD_SELECTED_PASS diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-readybasic-retry3/suite.status b/agentworking/readyos-1kb-shim-skip-bank/c64u-readybasic-retry3/suite.status new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-readybasic-retry3/suite.status @@ -0,0 +1 @@ +PASS diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/fixture-status.json b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/fixture-status.json new file mode 100644 index 0000000..d015224 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/fixture-status.json @@ -0,0 +1,94 @@ +{ + "connections": 3, + "registered": 3, + "quit_count": 2, + "exact_pong": true, + "registrations": [ + { + "connection": 1, + "nick": "autonick", + "user": "autonick", + "channel": "#readyostest" + }, + { + "connection": 2, + "nick": "autonick", + "user": "autonick", + "channel": "#secondtest" + }, + { + "connection": 3, + "nick": "autonick", + "user": "autonick", + "channel": "#secondtest" + } + ], + "part_channels": [ + "#readyostest" + ], + "join_switches": [ + "#secondtest" + ], + "channel_commands": [ + "part #readyostest", + "join #secondtest" + ], + "names_requests": [ + "#readyostest", + "#longnames" + ], + "privmsg_targets": [ + "#readyostest", + "#readyostest", + "#readyostest", + "#readyostest", + "#readyostest", + "#readyostest", + "#readyostest", + "#secondtest", + "#secondtest", + "#secondtest" + ], + "events": [ + "connection 1 parted #readyostest", + "connection 1 tx :autonick!user@fixture PART #readyostest :changing channel", + "connection 1 rx JOIN #secondtest", + "connection 1 switched join #secondtest", + "connection 1 tx :autonick!user@fixture JOIN :#secondtest", + "connection 1 tx :SwitchBot!user@fixture PRIVMSG #secondtest :JOINED NEW CHANNEL", + "connection 1 rx PRIVMSG #secondtest :afterjoin", + "connection 1 tx :EchoBot!user@fixture PRIVMSG #secondtest :ECHO MIXED AFTERJOIN", + "connection 1 rx PRIVMSG #secondtest :queuewhileaway", + "connection 1 tx :QueueBot!user@fixture PRIVMSG #secondtest :QUEUED WHILE SUSPENDED", + "connection 1 rx PRIVMSG #secondtest :dropwhileaway", + "connection 1 forced close", + "connection 1 closed", + "connection 2 accepted", + "connection 2 rx NICK autonick", + "connection 2 rx USER autonick * 0 :autonick", + "connection 2 rx JOIN #secondtest", + "connection 2 registered nick=autonick", + "connection 2 tx :Fixture.Server 001 autonick :WELCOME MIXED CASE", + "connection 2 tx :UpperNick!user@fixture PRIVMSG #secondtest :CONNECTION 2 MIXED CASE WELCOME", + "connection 2 tx PING :MiXeDToken", + "connection 2 rx PONG :MiXeDToken", + "exact mixed-case pong received", + "connection 2 rx QUIT :READYIRC DISCONNECT", + "connection 2 quit received", + "connection 2 closed", + "connection 3 accepted", + "connection 3 rx NICK autonick", + "connection 3 rx USER autonick * 0 :autonick", + "connection 3 rx JOIN #secondtest", + "connection 3 registered nick=autonick", + "connection 3 tx :Fixture.Server 001 autonick :WELCOME MIXED CASE", + "connection 3 tx :UpperNick!user@fixture PRIVMSG #secondtest :CONNECTION 3 MIXED CASE WELCOME", + "connection 3 tx PING :MiXeDToken", + "connection 3 rx PONG :MiXeDToken", + "exact mixed-case pong received", + "connection 3 rx QUIT :READYIRC DISCONNECT", + "connection 3 quit received", + "connection 3 closed", + "fixture stopped" + ] +} diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/post-suite-clean-boot/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/post-suite-clean-boot/status new file mode 100644 index 0000000..406f98d --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/post-suite-clean-boot/status @@ -0,0 +1 @@ +READYOS_BOOT_PASS diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/post-suite-reu-clear/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/post-suite-reu-clear/status new file mode 100644 index 0000000..4cbc2fc --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/post-suite-reu-clear/status @@ -0,0 +1 @@ +READYOS_CLEAR_REU_ONLY_OK diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/reu-clear-preflight/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/reu-clear-preflight/status new file mode 100644 index 0000000..4cbc2fc --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/reu-clear-preflight/status @@ -0,0 +1 @@ +READYOS_CLEAR_REU_ONLY_OK diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/suite.status b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/suite.status new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w/suite.status @@ -0,0 +1 @@ +PASS diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-readyshell/reu-clear/status b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyshell/reu-clear/status new file mode 100644 index 0000000..4cbc2fc --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyshell/reu-clear/status @@ -0,0 +1 @@ +READYOS_CLEAR_REU_ONLY_OK diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u-readyshell/suite.status b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyshell/suite.status new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u-readyshell/suite.status @@ -0,0 +1 @@ +PASS diff --git a/agentworking/readyos-1kb-shim-skip-bank/c64u_dma_unique.ini b/agentworking/readyos-1kb-shim-skip-bank/c64u_dma_unique.ini new file mode 100644 index 0000000..45eaa0f --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/c64u_dma_unique.ini @@ -0,0 +1,72 @@ +[system] +variant_name=precog d81 +variant_boot_name=precog d81 +reu_bank_skip=32 + +[launcher] +load_all_to_reu=0 +runappfirst= +c64u_image_path=/usb1/r1k250802a.d81 + +[apps] +8:editor:editor:1 +text editor with clipboard + +8:readyshell:readyshell (beta):2:rsovl+ +command shell poc scaffold +rsparser@0:0000,rsvm@0:3800,rsdrvilst@0:7000,rsldv@1:0000,rsstv@0:a800,rsfops@1:3800,rscat@1:7000,rscopy@1:a800,rsedit@2:0000 + +8:simplefiles:simple files +dual pane file manager and seq viewer + +8:clipmgr:clipboard +manage clipboard items + +8:readybasic:ready basic (alpha):3:rbcore+ +scoped basic v2 bridge poc +rbcore,rbcode + +8:cal26:calendar 26 +calendar for 2026 with appointments + +8:tasklist:task list +outliner with notes and search + +8:reuviewer:reu viewer +view reu memory usage + +8:sysinfo:system info +system, reu, and ultimate status + +8:quicknotes:quicknotes +reu-backed note editor + +8:calcplus:calc plus +keyboard-first expression calculator + +8:hexview:hex viewer +browse memory in hex format + +8:simplecells:simple cells (alpha) +spreadsheet with formulas and colors + +8:game2048:2048 game +2048 tile puzzle + +8:deminer:deminer +minesweeper-style puzzle + +8:dizzy:dizzy kanban +fizzy inspired kanban app + +8:readyirc:readyirc +ultimate tcp irc client + +8:ucitest:uci tester +ultimate command interface lab + +8:rirc-rrnet:readyirc rrnet +rr-net tcp irc client + +8:readme:read.me +readyos, ultimate buddy, precog poc os diff --git a/agentworking/readyos-1kb-shim-skip-bank/clipboard_cross_app_regular.yaml b/agentworking/readyos-1kb-shim-skip-bank/clipboard_cross_app_regular.yaml new file mode 100644 index 0000000..272cc4a --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/clipboard_cross_app_regular.yaml @@ -0,0 +1,127 @@ +version: 1 +kind: vice_task_plan +plan_id: clipboard_cross_app_readyos_bank +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: { max_attempts: 2, backoff_ms: 250, jitter: false } + timeouts: { launch_s: 45, step_s: 180, read_s: 2 } + artifact_policy: { capture_screen: true, capture_state: true, capture_dump: false } + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: { kill_stale: true } + - id: wait_launcher_initial + type: screen.wait_contains + params: { text: "READY OS", wait_timeout_s: 180, capture_on_success: true, capture_label: clip_launcher_initial } + - id: launch_editor + type: input.sequence + params: { keys: [19,17,17,13], inter_key_delay_s: 0.08, post_delay_s: 2.0 } + - id: wait_editor + type: screen.wait_contains + params: { text: "F1:CPY", wait_timeout_s: 90, capture_on_success: true, capture_label: clip_editor_initial } + - id: type_clipboard_source + type: input.sequence + params: { keys: [67,76,73,80,84,69,83,84,52,50], inter_key_delay_s: 0.05, post_delay_s: 0.5 } + - id: assert_clipboard_source + type: assert.screen + params: { contains: "CLIPTEST42" } + - id: copy_current_line + type: input.sequence + params: { keys: [133], inter_key_delay_s: 0.05, post_delay_s: 0.8 } + - id: return_editor_to_launcher + type: input.sequence + params: { keys: [2], inter_key_delay_s: 0.05, post_delay_s: 1.0 } + - id: wait_launcher_after_copy + type: screen.wait_contains + params: { text: "READY OS", wait_timeout_s: 45, capture_on_success: true, capture_label: clip_launcher_after_copy } + - id: launch_clipboard_manager + type: input.sequence + params: { keys: [19,17,17,17,17,17,13], inter_key_delay_s: 0.08, post_delay_s: 2.0 } + - id: wait_clipboard_manager + type: screen.wait_contains + params: { text: "CLIPBOARD MANAGER", wait_timeout_s: 90, capture_on_success: true, capture_label: clip_manager } + - id: assert_clipboard_count + type: assert.screen + params: { contains: "ITEMS: 1" } + - id: assert_clipboard_preview + type: assert.screen + params: { contains: "CLIPTEST42" } + - id: return_clipboard_manager_to_launcher + type: input.sequence + params: { keys: [2], inter_key_delay_s: 0.05, post_delay_s: 1.0 } + - id: capture_after_manager_return + type: screen.capture + params: { label: clip_after_manager_return, note: Diagnostic capture immediately after Clipboard Manager CTRL+B. } + - id: regs_after_manager_return + type: monitor.command + params: { command: "r" } + - id: dump_after_manager_return + type: dump.memory_ranges + params: + ranges: + - { label: shim_hot_state_c820, start: 0xC820, end: 0xC83F } + - { label: app_entry_1000, start: 0x1000, end: 0x107F } + - id: dump_reu_after_manager_return + type: dump.reu + params: { stage_tag: clipboard_after_manager_return, mode: sampled } + - id: wait_launcher_after_manager + type: screen.wait_contains + params: { text: "READY OS", pre_delay_s: 15.0, wait_timeout_s: 45, capture_on_success: true, capture_label: clip_launcher_after_manager } + - id: move_launcher_to_editor + type: input.sequence + params: { keys: [145,145,145], inter_key_delay_s: 0.5, post_delay_s: 2.0 } + - id: capture_editor_selected_for_resume + type: assert.screen + params: { contains: "TEXT EDITOR WITH CLIPBOARD" } + - id: clear_keyboard_before_editor_resume + type: memory.write + params: { start: 0x00C6, bytes_hex: "00" } + - id: resume_editor + type: monitor.command + params: { command: "keybuf \\x0d" } + - id: capture_after_editor_resume_request + type: screen.capture + params: { label: clip_after_editor_resume_request, note: Diagnostic capture after selecting the loaded Editor snapshot. } + - id: regs_after_editor_resume_request + type: monitor.command + params: { command: "r" } + - id: dump_after_editor_resume_request + type: dump.memory_ranges + params: + ranges: + - { label: shim_hot_state_after_editor_resume, start: 0xC820, end: 0xC83F } + - { label: app_entry_after_editor_resume, start: 0x1000, end: 0x107F } + - id: wait_editor_resumed + type: screen.wait_contains + params: { text: "F1:CPY", wait_timeout_s: 90, capture_on_success: true, capture_label: clip_editor_resumed } + - id: assert_editor_resume_text + type: assert.screen + params: { contains: "CLIPTEST42" } + - id: create_paste_target + type: input.sequence + params: { keys: [13,90,134], inter_key_delay_s: 0.08, post_delay_s: 1.0 } + - id: assert_cross_app_paste + type: assert.screen + params: { contains: "ZCLIPTEST42" } + - id: dump_resident_shim + type: dump.memory_ranges + params: + ranges: + - { label: shim_full_c600, start: 0xC600, end: 0xC9FF } + - { label: shim_lower_reserve_c600, start: 0xC600, end: 0xC7FF } + - id: regs_final + type: monitor.command + params: { command: "r" } diff --git a/agentworking/readyos-1kb-shim-skip-bank/clipmgr_empty_return_regular.yaml b/agentworking/readyos-1kb-shim-skip-bank/clipmgr_empty_return_regular.yaml new file mode 100644 index 0000000..c43bb99 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/clipmgr_empty_return_regular.yaml @@ -0,0 +1,64 @@ +version: 1 +kind: vice_task_plan +plan_id: clipmgr_empty_return_control +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: { max_attempts: 2, backoff_ms: 250, jitter: false } + timeouts: { launch_s: 45, step_s: 180, read_s: 2 } + artifact_policy: { capture_screen: true, capture_state: true, capture_dump: false } + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5u-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5u-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5u-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: { kill_stale: true } + - id: wait_launcher_initial + type: screen.wait_contains + params: { text: "READY OS", wait_timeout_s: 180, capture_on_success: true, capture_label: empty_clip_launcher } + - id: launch_clipboard_manager + type: input.sequence + params: { keys: [19,17,17,17,17,17,13], inter_key_delay_s: 0.08, post_delay_s: 2.0 } + - id: wait_clipboard_manager + type: screen.wait_contains + params: { text: "CLIPBOARD MANAGER", wait_timeout_s: 90, capture_on_success: true, capture_label: empty_clip_manager } + - id: assert_clipboard_empty + type: assert.screen + params: { contains: "CLIPBOARD IS EMPTY" } + - id: regs_before_return + type: monitor.command + params: { command: "r" } + - id: return_clipboard_manager_to_launcher + type: input.sequence + params: { keys: [2], inter_key_delay_s: 0.05, post_delay_s: 1.0 } + - id: capture_after_return_key + type: screen.capture + params: { label: empty_clip_after_return_key, note: Diagnostic capture after injected Ctrl+B byte. } + - id: regs_after_return_key + type: monitor.command + params: { command: "r" } + - id: dump_after_return_key + type: dump.memory_ranges + params: + ranges: + - { label: cc65_zp, start: 0x0002, end: 0x001B } + - { label: cc65_stack_tail, start: 0xC580, end: 0xC5FF } + - { label: keyboard_state, start: 0x00C5, end: 0x00C6 } + - { label: shim_hot_state, start: 0xC820, end: 0xC83F } + - { label: app_entry_after_return, start: 0x1000, end: 0x107F } + - id: dump_reu_after_return_key + type: dump.reu + params: { stage_tag: empty_clip_after_return_key, mode: sampled } + - id: wait_launcher_after_manager + type: screen.wait_contains + params: { text: "READY OS", wait_timeout_s: 45, capture_on_success: true, capture_label: empty_clip_launcher_after } diff --git a/agentworking/readyos-1kb-shim-skip-bank/headroom_after.json b/agentworking/readyos-1kb-shim-skip-bank/headroom_after.json new file mode 100644 index 0000000..5b1f2b5 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/headroom_after.json @@ -0,0 +1,1242 @@ +{ + "app_window_end": "0xC5FF", + "app_window_start": "0x1000", + "maps": [ + { + "app_window_end": "0xC5FF", + "app_window_headroom": 4738, + "bss_bytes": 2509, + "code_ro_init_bytes": 39295, + "data_bytes": 50, + "heap_capacity": 4626, + "heap_end": "0xC58F", + "heap_start": "0xB37E", + "main_segment_total": 41854, + "map": "obj/launcher.map", + "name": "launcher", + "runtime_end": "0xB37D", + "segments": { + "BSS": { + "end": "0xB37D", + "size": 2509, + "start": "0xA9B1" + }, + "CODE": { + "end": "0xA39D", + "size": 37739, + "start": "0x1033" + }, + "DATA": { + "end": "0xA96E", + "size": 50, + "start": "0xA93D" + }, + "INIT": { + "end": "0xA98A", + "size": 28, + "start": "0xA96F" + }, + "ONCE": { + "end": "0xA9B0", + "size": 38, + "start": "0xA98B" + }, + "RODATA": { + "end": "0xA93C", + "size": 1439, + "start": "0xA39E" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 12194, + "bss_bytes": 9880, + "code_ro_init_bytes": 24384, + "data_bytes": 134, + "heap_capacity": 12082, + "heap_end": "0xC58F", + "heap_start": "0x965E", + "main_segment_total": 34398, + "map": "obj/editor.map", + "name": "editor", + "runtime_end": "0x965D", + "segments": { + "BSS": { + "end": "0x965D", + "size": 9880, + "start": "0x6FC6" + }, + "CODE": { + "end": "0x6BBF", + "size": 23437, + "start": "0x1033" + }, + "DATA": { + "end": "0x6F83", + "size": 134, + "start": "0x6EFE" + }, + "INIT": { + "end": "0x6F9F", + "size": 28, + "start": "0x6F84" + }, + "ONCE": { + "end": "0x6FC5", + "size": 38, + "start": "0x6FA0" + }, + "RODATA": { + "end": "0x6EFD", + "size": 830, + "start": "0x6BC0" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 9292, + "bss_bytes": 6047, + "code_ro_init_bytes": 31031, + "data_bytes": 222, + "heap_capacity": 9180, + "heap_end": "0xC58F", + "heap_start": "0xA1B4", + "main_segment_total": 37300, + "map": "obj/quicknotes.map", + "name": "quicknotes", + "runtime_end": "0xA1B3", + "segments": { + "BSS": { + "end": "0xA1B3", + "size": 6047, + "start": "0x8A15" + }, + "CODE": { + "end": "0x853F", + "size": 29965, + "start": "0x1033" + }, + "DATA": { + "end": "0x89D2", + "size": 222, + "start": "0x88F5" + }, + "INIT": { + "end": "0x89EE", + "size": 28, + "start": "0x89D3" + }, + "ONCE": { + "end": "0x8A14", + "size": 38, + "start": "0x89EF" + }, + "RODATA": { + "end": "0x88F4", + "size": 949, + "start": "0x8540" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 7750, + "bss_bytes": 1321, + "code_ro_init_bytes": 37363, + "data_bytes": 158, + "heap_capacity": 7638, + "heap_end": "0xC58F", + "heap_start": "0xA7BA", + "main_segment_total": 38842, + "map": "obj/calcplus.map", + "name": "calcplus", + "runtime_end": "0xA7B9", + "segments": { + "BSS": { + "end": "0xA7B9", + "size": 1321, + "start": "0xA291" + }, + "CODE": { + "end": "0x9D1B", + "size": 36073, + "start": "0x1033" + }, + "DATA": { + "end": "0xA24E", + "size": 158, + "start": "0xA1B1" + }, + "INIT": { + "end": "0xA26A", + "size": 28, + "start": "0xA24F" + }, + "ONCE": { + "end": "0xA290", + "size": 38, + "start": "0xA26B" + }, + "RODATA": { + "end": "0xA1B0", + "size": 1173, + "start": "0x9D1C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 33652, + "bss_bytes": 101, + "code_ro_init_bytes": 12793, + "data_bytes": 46, + "heap_capacity": 33540, + "heap_end": "0xC58F", + "heap_start": "0x428C", + "main_segment_total": 12940, + "map": "obj/hexview.map", + "name": "hexview", + "runtime_end": "0x428B", + "segments": { + "BSS": { + "end": "0x428B", + "size": 101, + "start": "0x4227" + }, + "CODE": { + "end": "0x3FC4", + "size": 12178, + "start": "0x1033" + }, + "DATA": { + "end": "0x41E4", + "size": 46, + "start": "0x41B7" + }, + "INIT": { + "end": "0x4200", + "size": 28, + "start": "0x41E5" + }, + "ONCE": { + "end": "0x4226", + "size": 38, + "start": "0x4201" + }, + "RODATA": { + "end": "0x41B6", + "size": 498, + "start": "0x3FC5" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 14637, + "bss_bytes": 1062, + "code_ro_init_bytes": 30847, + "data_bytes": 46, + "heap_capacity": 14524, + "heap_end": "0xC58F", + "heap_start": "0x8CD4", + "main_segment_total": 31955, + "map": "obj/clipmgr.map", + "name": "clipmgr", + "runtime_end": "0x8CD2", + "segments": { + "BSS": { + "end": "0x8CD2", + "size": 1062, + "start": "0x88AD" + }, + "CODE": { + "end": "0x84F2", + "size": 29888, + "start": "0x1033" + }, + "DATA": { + "end": "0x886A", + "size": 46, + "start": "0x883D" + }, + "INIT": { + "end": "0x8886", + "size": 28, + "start": "0x886B" + }, + "ONCE": { + "end": "0x88AC", + "size": 38, + "start": "0x8887" + }, + "RODATA": { + "end": "0x883C", + "size": 842, + "start": "0x84F3" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 31220, + "bss_bytes": 221, + "code_ro_init_bytes": 15105, + "data_bytes": 46, + "heap_capacity": 31108, + "heap_end": "0xC58F", + "heap_start": "0x4C0C", + "main_segment_total": 15372, + "map": "obj/reuviewer.map", + "name": "reuviewer", + "runtime_end": "0x4C0B", + "segments": { + "BSS": { + "end": "0x4C0B", + "size": 221, + "start": "0x4B2F" + }, + "CODE": { + "end": "0x4967", + "size": 14645, + "start": "0x1033" + }, + "DATA": { + "end": "0x4AEC", + "size": 46, + "start": "0x4ABF" + }, + "INIT": { + "end": "0x4B08", + "size": 28, + "start": "0x4AED" + }, + "ONCE": { + "end": "0x4B2E", + "size": 38, + "start": "0x4B09" + }, + "RODATA": { + "end": "0x4ABE", + "size": 343, + "start": "0x4968" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 30084, + "bss_bytes": 277, + "code_ro_init_bytes": 16184, + "data_bytes": 47, + "heap_capacity": 29972, + "heap_end": "0xC58F", + "heap_start": "0x507C", + "main_segment_total": 16508, + "map": "obj/sysinfo.map", + "name": "sysinfo", + "runtime_end": "0x507B", + "segments": { + "BSS": { + "end": "0x507B", + "size": 277, + "start": "0x4F67" + }, + "CODE": { + "end": "0x4ACD", + "size": 15003, + "start": "0x1033" + }, + "DATA": { + "end": "0x4F24", + "size": 47, + "start": "0x4EF6" + }, + "INIT": { + "end": "0x4F40", + "size": 28, + "start": "0x4F25" + }, + "ONCE": { + "end": "0x4F66", + "size": 38, + "start": "0x4F41" + }, + "RODATA": { + "end": "0x4EF5", + "size": 1064, + "start": "0x4ACE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 6398, + "bss_bytes": 8927, + "code_ro_init_bytes": 31116, + "data_bytes": 151, + "heap_capacity": 6286, + "heap_end": "0xC58F", + "heap_start": "0xAD02", + "main_segment_total": 40194, + "map": "obj/tasklist.map", + "name": "tasklist", + "runtime_end": "0xAD01", + "segments": { + "BSS": { + "end": "0xAD01", + "size": 8927, + "start": "0x8A23" + }, + "CODE": { + "end": "0x8614", + "size": 30178, + "start": "0x1033" + }, + "DATA": { + "end": "0x89E0", + "size": 151, + "start": "0x894A" + }, + "INIT": { + "end": "0x89FC", + "size": 28, + "start": "0x89E1" + }, + "ONCE": { + "end": "0x8A22", + "size": 38, + "start": "0x89FD" + }, + "RODATA": { + "end": "0x8949", + "size": 821, + "start": "0x8615" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 12440, + "bss_bytes": 4397, + "code_ro_init_bytes": 29693, + "data_bytes": 62, + "heap_capacity": 12328, + "heap_end": "0xC58F", + "heap_start": "0x9568", + "main_segment_total": 34152, + "map": "obj/simplefiles.map", + "name": "simplefiles", + "runtime_end": "0x9567", + "segments": { + "BSS": { + "end": "0x9567", + "size": 4397, + "start": "0x843B" + }, + "CODE": { + "end": "0x7EED", + "size": 28347, + "start": "0x1033" + }, + "DATA": { + "end": "0x83F8", + "size": 62, + "start": "0x83BB" + }, + "INIT": { + "end": "0x8414", + "size": 28, + "start": "0x83F9" + }, + "ONCE": { + "end": "0x843A", + "size": 38, + "start": "0x8415" + }, + "RODATA": { + "end": "0x83BA", + "size": 1229, + "start": "0x7EEE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 9500, + "bss_bytes": 2142, + "code_ro_init_bytes": 34712, + "data_bytes": 238, + "heap_capacity": 9388, + "heap_end": "0xC58F", + "heap_start": "0xA0E4", + "main_segment_total": 37092, + "map": "obj/simplecells.map", + "name": "simplecells", + "runtime_end": "0xA0E3", + "segments": { + "BSS": { + "end": "0xA0E3", + "size": 2142, + "start": "0x9886" + }, + "CODE": { + "end": "0x909B", + "size": 32873, + "start": "0x1033" + }, + "DATA": { + "end": "0x9843", + "size": 238, + "start": "0x9756" + }, + "INIT": { + "end": "0x985F", + "size": 28, + "start": "0x9844" + }, + "ONCE": { + "end": "0x9885", + "size": 38, + "start": "0x9860" + }, + "RODATA": { + "end": "0x9755", + "size": 1722, + "start": "0x909C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 28505, + "bss_bytes": 1203, + "code_ro_init_bytes": 16838, + "data_bytes": 46, + "heap_capacity": 28392, + "heap_end": "0xC58F", + "heap_start": "0x56A8", + "main_segment_total": 18087, + "map": "obj/game2048.map", + "name": "game2048", + "runtime_end": "0x56A6", + "segments": { + "BSS": { + "end": "0x56A6", + "size": 1203, + "start": "0x51F4" + }, + "CODE": { + "end": "0x5053", + "size": 16417, + "start": "0x1033" + }, + "DATA": { + "end": "0x51B1", + "size": 46, + "start": "0x5184" + }, + "INIT": { + "end": "0x51CD", + "size": 28, + "start": "0x51B2" + }, + "ONCE": { + "end": "0x51F3", + "size": 38, + "start": "0x51CE" + }, + "RODATA": { + "end": "0x5183", + "size": 304, + "start": "0x5054" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 22092, + "bss_bytes": 4276, + "code_ro_init_bytes": 20178, + "data_bytes": 46, + "heap_capacity": 21980, + "heap_end": "0xC58F", + "heap_start": "0x6FB4", + "main_segment_total": 24500, + "map": "obj/deminer.map", + "name": "deminer", + "runtime_end": "0x6FB3", + "segments": { + "BSS": { + "end": "0x6FB3", + "size": 4276, + "start": "0x5F00" + }, + "CODE": { + "end": "0x5BA4", + "size": 19314, + "start": "0x1033" + }, + "DATA": { + "end": "0x5EBD", + "size": 46, + "start": "0x5E90" + }, + "INIT": { + "end": "0x5ED9", + "size": 28, + "start": "0x5EBE" + }, + "ONCE": { + "end": "0x5EFF", + "size": 38, + "start": "0x5EDA" + }, + "RODATA": { + "end": "0x5E8F", + "size": 747, + "start": "0x5BA5" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 30141, + "bss_bytes": 908, + "code_ro_init_bytes": 15457, + "data_bytes": 86, + "heap_capacity": 30028, + "heap_end": "0xC58F", + "heap_start": "0x5044", + "main_segment_total": 16451, + "map": "obj/sidetris.map", + "name": "sidetris", + "runtime_end": "0x5042", + "segments": { + "BSS": { + "end": "0x5042", + "size": 908, + "start": "0x4CB7" + }, + "CODE": { + "end": "0x481B", + "size": 14313, + "start": "0x1033" + }, + "DATA": { + "end": "0x4C74", + "size": 86, + "start": "0x4C1F" + }, + "INIT": { + "end": "0x4C90", + "size": 28, + "start": "0x4C75" + }, + "ONCE": { + "end": "0x4CB6", + "size": 38, + "start": "0x4C91" + }, + "RODATA": { + "end": "0x4C1E", + "size": 1027, + "start": "0x481C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 9173, + "bss_bytes": 4803, + "code_ro_init_bytes": 32292, + "data_bytes": 324, + "heap_capacity": 9060, + "heap_end": "0xC58F", + "heap_start": "0xA22C", + "main_segment_total": 37419, + "map": "obj/cal26.map", + "name": "cal26", + "runtime_end": "0xA22A", + "segments": { + "BSS": { + "end": "0xA22A", + "size": 4803, + "start": "0x8F68" + }, + "CODE": { + "end": "0x8694", + "size": 30306, + "start": "0x1033" + }, + "DATA": { + "end": "0x8F25", + "size": 324, + "start": "0x8DE2" + }, + "INIT": { + "end": "0x8F41", + "size": 28, + "start": "0x8F26" + }, + "ONCE": { + "end": "0x8F67", + "size": 38, + "start": "0x8F42" + }, + "RODATA": { + "end": "0x8DE1", + "size": 1869, + "start": "0x8695" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 1580, + "bss_bytes": 6327, + "code_ro_init_bytes": 38553, + "data_bytes": 132, + "heap_capacity": 1468, + "heap_end": "0xC58F", + "heap_start": "0xBFD4", + "main_segment_total": 45012, + "map": "obj/dizzy.map", + "name": "dizzy", + "runtime_end": "0xBFD3", + "segments": { + "BSS": { + "end": "0xBFD3", + "size": 6327, + "start": "0xA71D" + }, + "CODE": { + "end": "0xA18D", + "size": 37211, + "start": "0x1033" + }, + "DATA": { + "end": "0xA6DA", + "size": 132, + "start": "0xA657" + }, + "INIT": { + "end": "0xA6F6", + "size": 28, + "start": "0xA6DB" + }, + "ONCE": { + "end": "0xA71C", + "size": 38, + "start": "0xA6F7" + }, + "RODATA": { + "end": "0xA656", + "size": 1225, + "start": "0xA18E" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 19312, + "bss_bytes": 5351, + "code_ro_init_bytes": 21882, + "data_bytes": 47, + "heap_capacity": 19200, + "heap_end": "0xC58F", + "heap_start": "0x7A90", + "main_segment_total": 27280, + "map": "obj/readyirc.map", + "name": "readyirc", + "runtime_end": "0x7A8F", + "segments": { + "BSS": { + "end": "0x7A8F", + "size": 5351, + "start": "0x65A9" + }, + "CODE": { + "end": "0x619B", + "size": 20841, + "start": "0x1033" + }, + "DATA": { + "end": "0x6566", + "size": 47, + "start": "0x6538" + }, + "INIT": { + "end": "0x6582", + "size": 28, + "start": "0x6567" + }, + "ONCE": { + "end": "0x65A8", + "size": 38, + "start": "0x6583" + }, + "RODATA": { + "end": "0x6537", + "size": 924, + "start": "0x619C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 18178, + "bss_bytes": 6909, + "code_ro_init_bytes": 21278, + "data_bytes": 227, + "heap_capacity": 18066, + "heap_end": "0xC58F", + "heap_start": "0x7EFE", + "main_segment_total": 28414, + "map": "obj/rirc-rrnet.map", + "name": "rirc-rrnet", + "runtime_end": "0x7EFD", + "segments": { + "BSS": { + "end": "0x7EFD", + "size": 6909, + "start": "0x6401" + }, + "CODE": { + "end": "0x5FFD", + "size": 20427, + "start": "0x1033" + }, + "DATA": { + "end": "0x63BE", + "size": 227, + "start": "0x62DC" + }, + "INIT": { + "end": "0x63DA", + "size": 28, + "start": "0x63BF" + }, + "ONCE": { + "end": "0x6400", + "size": 38, + "start": "0x63DB" + }, + "RODATA": { + "end": "0x62DB", + "size": 734, + "start": "0x5FFE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 1025, + "bss_bytes": 0, + "code_ro_init_bytes": 9290, + "data_bytes": 0, + "main_segment_total": 2954, + "map": "obj/readybasic.map", + "name": "readybasic", + "runtime_end": "0xC1FE", + "segments": { + "BRIDGE": { + "end": "0xC1FE", + "size": 511, + "start": "0xC000" + }, + "ENTRY": { + "end": "0x11FF", + "size": 512, + "start": "0x1000" + }, + "HIDDEN": { + "end": "0xA78A", + "size": 1931, + "start": "0xA000" + } + } + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 21293, + "bss_bytes": 2708, + "code_ro_init_bytes": 22520, + "data_bytes": 71, + "heap_capacity": 21180, + "heap_end": "0xC58F", + "heap_start": "0x72D4", + "main_segment_total": 25299, + "map": "obj/ucitest.map", + "name": "ucitest", + "runtime_end": "0x72D2", + "segments": { + "BSS": { + "end": "0x72D2", + "size": 2708, + "start": "0x683F" + }, + "CODE": { + "end": "0x5933", + "size": 18689, + "start": "0x1033" + }, + "DATA": { + "end": "0x67FC", + "size": 71, + "start": "0x67B6" + }, + "INIT": { + "end": "0x6818", + "size": 28, + "start": "0x67FD" + }, + "ONCE": { + "end": "0x683E", + "size": 38, + "start": "0x6819" + }, + "RODATA": { + "end": "0x67B5", + "size": 3714, + "start": "0x5934" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 22393, + "bss_bytes": 48, + "code_ro_init_bytes": 24105, + "data_bytes": 46, + "heap_capacity": 22280, + "heap_end": "0xC58F", + "heap_start": "0x6E88", + "main_segment_total": 24199, + "map": "obj/readme.map", + "name": "readme", + "runtime_end": "0x6E86", + "segments": { + "BSS": { + "end": "0x6E86", + "size": 48, + "start": "0x6E57" + }, + "CODE": { + "end": "0x392E", + "size": 10492, + "start": "0x1033" + }, + "DATA": { + "end": "0x6E14", + "size": 46, + "start": "0x6DE7" + }, + "INIT": { + "end": "0x6E30", + "size": 28, + "start": "0x6E15" + }, + "ONCE": { + "end": "0x6E56", + "size": 38, + "start": "0x6E31" + }, + "RODATA": { + "end": "0x6DE6", + "size": 13496, + "start": "0x392F" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 18027, + "bss_bytes": 426, + "code_ro_init_bytes": 28069, + "data_bytes": 70, + "heap_capacity": 3688, + "main_segment_total": 28565, + "map": "obj/readyshell.map", + "name": "readyshell", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3688, + "heap_start": "0x7F96", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7F94", + "segments": { + "BSS": { + "end": "0x7F94", + "size": 426, + "start": "0x7DEB" + }, + "CODE": { + "end": "0x795E", + "size": 26924, + "start": "0x1033" + }, + "DATA": { + "end": "0x7D96", + "size": 70, + "start": "0x7D51" + }, + "INIT": { + "end": "0x7DB2", + "size": 28, + "start": "0x7D97" + }, + "ONCE": { + "end": "0x7DEA", + "size": 56, + "start": "0x7DB3" + }, + "RODATA": { + "end": "0x7D50", + "size": 1010, + "start": "0x795F" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 17637, + "bss_bytes": 1978, + "code_ro_init_bytes": 26927, + "data_bytes": 50, + "heap_capacity": 17524, + "heap_end": "0xC58F", + "heap_start": "0x811C", + "main_segment_total": 28955, + "map": "obj/launcher_easyflash.map", + "name": "launcher_easyflash", + "runtime_end": "0x811A", + "segments": { + "BSS": { + "end": "0x811A", + "size": 1978, + "start": "0x7961" + }, + "CODE": { + "end": "0x70A7", + "size": 24693, + "start": "0x1033" + }, + "DATA": { + "end": "0x791E", + "size": 50, + "start": "0x78ED" + }, + "INIT": { + "end": "0x793A", + "size": 28, + "start": "0x791F" + }, + "ONCE": { + "end": "0x7960", + "size": 38, + "start": "0x793B" + }, + "RODATA": { + "end": "0x78EC", + "size": 2117, + "start": "0x70A8" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 18129, + "bss_bytes": 426, + "code_ro_init_bytes": 27967, + "data_bytes": 70, + "heap_capacity": 3790, + "main_segment_total": 28463, + "map": "obj/readyshell_easyflash.map", + "name": "readyshell_easyflash", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3790, + "heap_start": "0x7F30", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7F2E", + "segments": { + "BSS": { + "end": "0x7F2E", + "size": 426, + "start": "0x7D85" + }, + "CODE": { + "end": "0x78F8", + "size": 26822, + "start": "0x1033" + }, + "DATA": { + "end": "0x7D30", + "size": 70, + "start": "0x7CEB" + }, + "INIT": { + "end": "0x7D4C", + "size": 28, + "start": "0x7D31" + }, + "ONCE": { + "end": "0x7D84", + "size": 56, + "start": "0x7D4D" + }, + "RODATA": { + "end": "0x7CEA", + "size": 1010, + "start": "0x78F9" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + } + ] +} diff --git a/agentworking/readyos-1kb-shim-skip-bank/headroom_before.json b/agentworking/readyos-1kb-shim-skip-bank/headroom_before.json new file mode 100644 index 0000000..f4b64ba --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/headroom_before.json @@ -0,0 +1,1242 @@ +{ + "app_window_end": "0xC7FF", + "app_window_start": "0x1000", + "maps": [ + { + "app_window_end": "0xC7FF", + "app_window_headroom": 5244, + "bss_bytes": 2509, + "code_ro_init_bytes": 39301, + "data_bytes": 50, + "heap_capacity": 5132, + "heap_end": "0xC78F", + "heap_start": "0xB384", + "main_segment_total": 41860, + "map": "obj/launcher.map", + "name": "launcher", + "runtime_end": "0xB383", + "segments": { + "BSS": { + "end": "0xB383", + "size": 2509, + "start": "0xA9B7" + }, + "CODE": { + "end": "0xA3A3", + "size": 37745, + "start": "0x1033" + }, + "DATA": { + "end": "0xA974", + "size": 50, + "start": "0xA943" + }, + "INIT": { + "end": "0xA990", + "size": 28, + "start": "0xA975" + }, + "ONCE": { + "end": "0xA9B6", + "size": 38, + "start": "0xA991" + }, + "RODATA": { + "end": "0xA942", + "size": 1439, + "start": "0xA3A4" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 12706, + "bss_bytes": 9880, + "code_ro_init_bytes": 24384, + "data_bytes": 134, + "heap_capacity": 12594, + "heap_end": "0xC78F", + "heap_start": "0x965E", + "main_segment_total": 34398, + "map": "obj/editor.map", + "name": "editor", + "runtime_end": "0x965D", + "segments": { + "BSS": { + "end": "0x965D", + "size": 9880, + "start": "0x6FC6" + }, + "CODE": { + "end": "0x6BBF", + "size": 23437, + "start": "0x1033" + }, + "DATA": { + "end": "0x6F83", + "size": 134, + "start": "0x6EFE" + }, + "INIT": { + "end": "0x6F9F", + "size": 28, + "start": "0x6F84" + }, + "ONCE": { + "end": "0x6FC5", + "size": 38, + "start": "0x6FA0" + }, + "RODATA": { + "end": "0x6EFD", + "size": 830, + "start": "0x6BC0" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9804, + "bss_bytes": 6047, + "code_ro_init_bytes": 31031, + "data_bytes": 222, + "heap_capacity": 9692, + "heap_end": "0xC78F", + "heap_start": "0xA1B4", + "main_segment_total": 37300, + "map": "obj/quicknotes.map", + "name": "quicknotes", + "runtime_end": "0xA1B3", + "segments": { + "BSS": { + "end": "0xA1B3", + "size": 6047, + "start": "0x8A15" + }, + "CODE": { + "end": "0x853F", + "size": 29965, + "start": "0x1033" + }, + "DATA": { + "end": "0x89D2", + "size": 222, + "start": "0x88F5" + }, + "INIT": { + "end": "0x89EE", + "size": 28, + "start": "0x89D3" + }, + "ONCE": { + "end": "0x8A14", + "size": 38, + "start": "0x89EF" + }, + "RODATA": { + "end": "0x88F4", + "size": 949, + "start": "0x8540" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 8262, + "bss_bytes": 1321, + "code_ro_init_bytes": 37363, + "data_bytes": 158, + "heap_capacity": 8150, + "heap_end": "0xC78F", + "heap_start": "0xA7BA", + "main_segment_total": 38842, + "map": "obj/calcplus.map", + "name": "calcplus", + "runtime_end": "0xA7B9", + "segments": { + "BSS": { + "end": "0xA7B9", + "size": 1321, + "start": "0xA291" + }, + "CODE": { + "end": "0x9D1B", + "size": 36073, + "start": "0x1033" + }, + "DATA": { + "end": "0xA24E", + "size": 158, + "start": "0xA1B1" + }, + "INIT": { + "end": "0xA26A", + "size": 28, + "start": "0xA24F" + }, + "ONCE": { + "end": "0xA290", + "size": 38, + "start": "0xA26B" + }, + "RODATA": { + "end": "0xA1B0", + "size": 1173, + "start": "0x9D1C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 34164, + "bss_bytes": 101, + "code_ro_init_bytes": 12793, + "data_bytes": 46, + "heap_capacity": 34052, + "heap_end": "0xC78F", + "heap_start": "0x428C", + "main_segment_total": 12940, + "map": "obj/hexview.map", + "name": "hexview", + "runtime_end": "0x428B", + "segments": { + "BSS": { + "end": "0x428B", + "size": 101, + "start": "0x4227" + }, + "CODE": { + "end": "0x3FC4", + "size": 12178, + "start": "0x1033" + }, + "DATA": { + "end": "0x41E4", + "size": 46, + "start": "0x41B7" + }, + "INIT": { + "end": "0x4200", + "size": 28, + "start": "0x41E5" + }, + "ONCE": { + "end": "0x4226", + "size": 38, + "start": "0x4201" + }, + "RODATA": { + "end": "0x41B6", + "size": 498, + "start": "0x3FC5" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 15149, + "bss_bytes": 1062, + "code_ro_init_bytes": 30847, + "data_bytes": 46, + "heap_capacity": 15036, + "heap_end": "0xC78F", + "heap_start": "0x8CD4", + "main_segment_total": 31955, + "map": "obj/clipmgr.map", + "name": "clipmgr", + "runtime_end": "0x8CD2", + "segments": { + "BSS": { + "end": "0x8CD2", + "size": 1062, + "start": "0x88AD" + }, + "CODE": { + "end": "0x84F2", + "size": 29888, + "start": "0x1033" + }, + "DATA": { + "end": "0x886A", + "size": 46, + "start": "0x883D" + }, + "INIT": { + "end": "0x8886", + "size": 28, + "start": "0x886B" + }, + "ONCE": { + "end": "0x88AC", + "size": 38, + "start": "0x8887" + }, + "RODATA": { + "end": "0x883C", + "size": 842, + "start": "0x84F3" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 31728, + "bss_bytes": 221, + "code_ro_init_bytes": 15109, + "data_bytes": 46, + "heap_capacity": 31616, + "heap_end": "0xC78F", + "heap_start": "0x4C10", + "main_segment_total": 15376, + "map": "obj/reuviewer.map", + "name": "reuviewer", + "runtime_end": "0x4C0F", + "segments": { + "BSS": { + "end": "0x4C0F", + "size": 221, + "start": "0x4B33" + }, + "CODE": { + "end": "0x496B", + "size": 14649, + "start": "0x1033" + }, + "DATA": { + "end": "0x4AF0", + "size": 46, + "start": "0x4AC3" + }, + "INIT": { + "end": "0x4B0C", + "size": 28, + "start": "0x4AF1" + }, + "ONCE": { + "end": "0x4B32", + "size": 38, + "start": "0x4B0D" + }, + "RODATA": { + "end": "0x4AC2", + "size": 343, + "start": "0x496C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 30596, + "bss_bytes": 277, + "code_ro_init_bytes": 16184, + "data_bytes": 47, + "heap_capacity": 30484, + "heap_end": "0xC78F", + "heap_start": "0x507C", + "main_segment_total": 16508, + "map": "obj/sysinfo.map", + "name": "sysinfo", + "runtime_end": "0x507B", + "segments": { + "BSS": { + "end": "0x507B", + "size": 277, + "start": "0x4F67" + }, + "CODE": { + "end": "0x4ACD", + "size": 15003, + "start": "0x1033" + }, + "DATA": { + "end": "0x4F24", + "size": 47, + "start": "0x4EF6" + }, + "INIT": { + "end": "0x4F40", + "size": 28, + "start": "0x4F25" + }, + "ONCE": { + "end": "0x4F66", + "size": 38, + "start": "0x4F41" + }, + "RODATA": { + "end": "0x4EF5", + "size": 1064, + "start": "0x4ACE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 6910, + "bss_bytes": 8927, + "code_ro_init_bytes": 31116, + "data_bytes": 151, + "heap_capacity": 6798, + "heap_end": "0xC78F", + "heap_start": "0xAD02", + "main_segment_total": 40194, + "map": "obj/tasklist.map", + "name": "tasklist", + "runtime_end": "0xAD01", + "segments": { + "BSS": { + "end": "0xAD01", + "size": 8927, + "start": "0x8A23" + }, + "CODE": { + "end": "0x8614", + "size": 30178, + "start": "0x1033" + }, + "DATA": { + "end": "0x89E0", + "size": 151, + "start": "0x894A" + }, + "INIT": { + "end": "0x89FC", + "size": 28, + "start": "0x89E1" + }, + "ONCE": { + "end": "0x8A22", + "size": 38, + "start": "0x89FD" + }, + "RODATA": { + "end": "0x8949", + "size": 821, + "start": "0x8615" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 12952, + "bss_bytes": 4397, + "code_ro_init_bytes": 29693, + "data_bytes": 62, + "heap_capacity": 12840, + "heap_end": "0xC78F", + "heap_start": "0x9568", + "main_segment_total": 34152, + "map": "obj/simplefiles.map", + "name": "simplefiles", + "runtime_end": "0x9567", + "segments": { + "BSS": { + "end": "0x9567", + "size": 4397, + "start": "0x843B" + }, + "CODE": { + "end": "0x7EED", + "size": 28347, + "start": "0x1033" + }, + "DATA": { + "end": "0x83F8", + "size": 62, + "start": "0x83BB" + }, + "INIT": { + "end": "0x8414", + "size": 28, + "start": "0x83F9" + }, + "ONCE": { + "end": "0x843A", + "size": 38, + "start": "0x8415" + }, + "RODATA": { + "end": "0x83BA", + "size": 1229, + "start": "0x7EEE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 10012, + "bss_bytes": 2142, + "code_ro_init_bytes": 34712, + "data_bytes": 238, + "heap_capacity": 9900, + "heap_end": "0xC78F", + "heap_start": "0xA0E4", + "main_segment_total": 37092, + "map": "obj/simplecells.map", + "name": "simplecells", + "runtime_end": "0xA0E3", + "segments": { + "BSS": { + "end": "0xA0E3", + "size": 2142, + "start": "0x9886" + }, + "CODE": { + "end": "0x909B", + "size": 32873, + "start": "0x1033" + }, + "DATA": { + "end": "0x9843", + "size": 238, + "start": "0x9756" + }, + "INIT": { + "end": "0x985F", + "size": 28, + "start": "0x9844" + }, + "ONCE": { + "end": "0x9885", + "size": 38, + "start": "0x9860" + }, + "RODATA": { + "end": "0x9755", + "size": 1722, + "start": "0x909C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 29017, + "bss_bytes": 1203, + "code_ro_init_bytes": 16838, + "data_bytes": 46, + "heap_capacity": 28904, + "heap_end": "0xC78F", + "heap_start": "0x56A8", + "main_segment_total": 18087, + "map": "obj/game2048.map", + "name": "game2048", + "runtime_end": "0x56A6", + "segments": { + "BSS": { + "end": "0x56A6", + "size": 1203, + "start": "0x51F4" + }, + "CODE": { + "end": "0x5053", + "size": 16417, + "start": "0x1033" + }, + "DATA": { + "end": "0x51B1", + "size": 46, + "start": "0x5184" + }, + "INIT": { + "end": "0x51CD", + "size": 28, + "start": "0x51B2" + }, + "ONCE": { + "end": "0x51F3", + "size": 38, + "start": "0x51CE" + }, + "RODATA": { + "end": "0x5183", + "size": 304, + "start": "0x5054" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 22604, + "bss_bytes": 4276, + "code_ro_init_bytes": 20178, + "data_bytes": 46, + "heap_capacity": 22492, + "heap_end": "0xC78F", + "heap_start": "0x6FB4", + "main_segment_total": 24500, + "map": "obj/deminer.map", + "name": "deminer", + "runtime_end": "0x6FB3", + "segments": { + "BSS": { + "end": "0x6FB3", + "size": 4276, + "start": "0x5F00" + }, + "CODE": { + "end": "0x5BA4", + "size": 19314, + "start": "0x1033" + }, + "DATA": { + "end": "0x5EBD", + "size": 46, + "start": "0x5E90" + }, + "INIT": { + "end": "0x5ED9", + "size": 28, + "start": "0x5EBE" + }, + "ONCE": { + "end": "0x5EFF", + "size": 38, + "start": "0x5EDA" + }, + "RODATA": { + "end": "0x5E8F", + "size": 747, + "start": "0x5BA5" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 30653, + "bss_bytes": 908, + "code_ro_init_bytes": 15457, + "data_bytes": 86, + "heap_capacity": 30540, + "heap_end": "0xC78F", + "heap_start": "0x5044", + "main_segment_total": 16451, + "map": "obj/sidetris.map", + "name": "sidetris", + "runtime_end": "0x5042", + "segments": { + "BSS": { + "end": "0x5042", + "size": 908, + "start": "0x4CB7" + }, + "CODE": { + "end": "0x481B", + "size": 14313, + "start": "0x1033" + }, + "DATA": { + "end": "0x4C74", + "size": 86, + "start": "0x4C1F" + }, + "INIT": { + "end": "0x4C90", + "size": 28, + "start": "0x4C75" + }, + "ONCE": { + "end": "0x4CB6", + "size": 38, + "start": "0x4C91" + }, + "RODATA": { + "end": "0x4C1E", + "size": 1027, + "start": "0x481C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9685, + "bss_bytes": 4803, + "code_ro_init_bytes": 32292, + "data_bytes": 324, + "heap_capacity": 9572, + "heap_end": "0xC78F", + "heap_start": "0xA22C", + "main_segment_total": 37419, + "map": "obj/cal26.map", + "name": "cal26", + "runtime_end": "0xA22A", + "segments": { + "BSS": { + "end": "0xA22A", + "size": 4803, + "start": "0x8F68" + }, + "CODE": { + "end": "0x8694", + "size": 30306, + "start": "0x1033" + }, + "DATA": { + "end": "0x8F25", + "size": 324, + "start": "0x8DE2" + }, + "INIT": { + "end": "0x8F41", + "size": 28, + "start": "0x8F26" + }, + "ONCE": { + "end": "0x8F67", + "size": 38, + "start": "0x8F42" + }, + "RODATA": { + "end": "0x8DE1", + "size": 1869, + "start": "0x8695" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 2092, + "bss_bytes": 6327, + "code_ro_init_bytes": 38553, + "data_bytes": 132, + "heap_capacity": 1980, + "heap_end": "0xC78F", + "heap_start": "0xBFD4", + "main_segment_total": 45012, + "map": "obj/dizzy.map", + "name": "dizzy", + "runtime_end": "0xBFD3", + "segments": { + "BSS": { + "end": "0xBFD3", + "size": 6327, + "start": "0xA71D" + }, + "CODE": { + "end": "0xA18D", + "size": 37211, + "start": "0x1033" + }, + "DATA": { + "end": "0xA6DA", + "size": 132, + "start": "0xA657" + }, + "INIT": { + "end": "0xA6F6", + "size": 28, + "start": "0xA6DB" + }, + "ONCE": { + "end": "0xA71C", + "size": 38, + "start": "0xA6F7" + }, + "RODATA": { + "end": "0xA656", + "size": 1225, + "start": "0xA18E" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 19824, + "bss_bytes": 5351, + "code_ro_init_bytes": 21882, + "data_bytes": 47, + "heap_capacity": 19712, + "heap_end": "0xC78F", + "heap_start": "0x7A90", + "main_segment_total": 27280, + "map": "obj/readyirc.map", + "name": "readyirc", + "runtime_end": "0x7A8F", + "segments": { + "BSS": { + "end": "0x7A8F", + "size": 5351, + "start": "0x65A9" + }, + "CODE": { + "end": "0x619B", + "size": 20841, + "start": "0x1033" + }, + "DATA": { + "end": "0x6566", + "size": 47, + "start": "0x6538" + }, + "INIT": { + "end": "0x6582", + "size": 28, + "start": "0x6567" + }, + "ONCE": { + "end": "0x65A8", + "size": 38, + "start": "0x6583" + }, + "RODATA": { + "end": "0x6537", + "size": 924, + "start": "0x619C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18690, + "bss_bytes": 6909, + "code_ro_init_bytes": 21278, + "data_bytes": 227, + "heap_capacity": 18578, + "heap_end": "0xC78F", + "heap_start": "0x7EFE", + "main_segment_total": 28414, + "map": "obj/rirc-rrnet.map", + "name": "rirc-rrnet", + "runtime_end": "0x7EFD", + "segments": { + "BSS": { + "end": "0x7EFD", + "size": 6909, + "start": "0x6401" + }, + "CODE": { + "end": "0x5FFD", + "size": 20427, + "start": "0x1033" + }, + "DATA": { + "end": "0x63BE", + "size": 227, + "start": "0x62DC" + }, + "INIT": { + "end": "0x63DA", + "size": 28, + "start": "0x63BF" + }, + "ONCE": { + "end": "0x6400", + "size": 38, + "start": "0x63DB" + }, + "RODATA": { + "end": "0x62DB", + "size": 734, + "start": "0x5FFE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 1537, + "bss_bytes": 0, + "code_ro_init_bytes": 9290, + "data_bytes": 0, + "main_segment_total": 2954, + "map": "obj/readybasic.map", + "name": "readybasic", + "runtime_end": "0xC1FE", + "segments": { + "BRIDGE": { + "end": "0xC1FE", + "size": 511, + "start": "0xC000" + }, + "ENTRY": { + "end": "0x11FF", + "size": 512, + "start": "0x1000" + }, + "HIDDEN": { + "end": "0xA78A", + "size": 1931, + "start": "0xA000" + } + } + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 21805, + "bss_bytes": 2708, + "code_ro_init_bytes": 22520, + "data_bytes": 71, + "heap_capacity": 21692, + "heap_end": "0xC78F", + "heap_start": "0x72D4", + "main_segment_total": 25299, + "map": "obj/ucitest.map", + "name": "ucitest", + "runtime_end": "0x72D2", + "segments": { + "BSS": { + "end": "0x72D2", + "size": 2708, + "start": "0x683F" + }, + "CODE": { + "end": "0x5933", + "size": 18689, + "start": "0x1033" + }, + "DATA": { + "end": "0x67FC", + "size": 71, + "start": "0x67B6" + }, + "INIT": { + "end": "0x6818", + "size": 28, + "start": "0x67FD" + }, + "ONCE": { + "end": "0x683E", + "size": 38, + "start": "0x6819" + }, + "RODATA": { + "end": "0x67B5", + "size": 3714, + "start": "0x5934" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 22905, + "bss_bytes": 48, + "code_ro_init_bytes": 24105, + "data_bytes": 46, + "heap_capacity": 22792, + "heap_end": "0xC78F", + "heap_start": "0x6E88", + "main_segment_total": 24199, + "map": "obj/readme.map", + "name": "readme", + "runtime_end": "0x6E86", + "segments": { + "BSS": { + "end": "0x6E86", + "size": 48, + "start": "0x6E57" + }, + "CODE": { + "end": "0x392E", + "size": 10492, + "start": "0x1033" + }, + "DATA": { + "end": "0x6E14", + "size": 46, + "start": "0x6DE7" + }, + "INIT": { + "end": "0x6E30", + "size": 28, + "start": "0x6E15" + }, + "ONCE": { + "end": "0x6E56", + "size": 38, + "start": "0x6E31" + }, + "RODATA": { + "end": "0x6DE6", + "size": 13496, + "start": "0x392F" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18539, + "bss_bytes": 426, + "code_ro_init_bytes": 28069, + "data_bytes": 70, + "heap_capacity": 3688, + "main_segment_total": 28565, + "map": "obj/readyshell.map", + "name": "readyshell", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3688, + "heap_start": "0x7F96", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7F94", + "segments": { + "BSS": { + "end": "0x7F94", + "size": 426, + "start": "0x7DEB" + }, + "CODE": { + "end": "0x795E", + "size": 26924, + "start": "0x1033" + }, + "DATA": { + "end": "0x7D96", + "size": 70, + "start": "0x7D51" + }, + "INIT": { + "end": "0x7DB2", + "size": 28, + "start": "0x7D97" + }, + "ONCE": { + "end": "0x7DEA", + "size": 56, + "start": "0x7DB3" + }, + "RODATA": { + "end": "0x7D50", + "size": 1010, + "start": "0x795F" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18143, + "bss_bytes": 1978, + "code_ro_init_bytes": 26933, + "data_bytes": 50, + "heap_capacity": 18030, + "heap_end": "0xC78F", + "heap_start": "0x8122", + "main_segment_total": 28961, + "map": "obj/launcher_easyflash.map", + "name": "launcher_easyflash", + "runtime_end": "0x8120", + "segments": { + "BSS": { + "end": "0x8120", + "size": 1978, + "start": "0x7967" + }, + "CODE": { + "end": "0x70AD", + "size": 24699, + "start": "0x1033" + }, + "DATA": { + "end": "0x7924", + "size": 50, + "start": "0x78F3" + }, + "INIT": { + "end": "0x7940", + "size": 28, + "start": "0x7925" + }, + "ONCE": { + "end": "0x7966", + "size": 38, + "start": "0x7941" + }, + "RODATA": { + "end": "0x78F2", + "size": 2117, + "start": "0x70AE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18641, + "bss_bytes": 426, + "code_ro_init_bytes": 27967, + "data_bytes": 70, + "heap_capacity": 3790, + "main_segment_total": 28463, + "map": "obj/readyshell_easyflash.map", + "name": "readyshell_easyflash", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3790, + "heap_start": "0x7F30", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7F2E", + "segments": { + "BSS": { + "end": "0x7F2E", + "size": 426, + "start": "0x7D85" + }, + "CODE": { + "end": "0x78F8", + "size": 26822, + "start": "0x1033" + }, + "DATA": { + "end": "0x7D30", + "size": 70, + "start": "0x7CEB" + }, + "INIT": { + "end": "0x7D4C", + "size": 28, + "start": "0x7D31" + }, + "ONCE": { + "end": "0x7D84", + "size": 56, + "start": "0x7D4D" + }, + "RODATA": { + "end": "0x7CEA", + "size": 1010, + "start": "0x78F9" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + } + ] +} diff --git a/agentworking/readyos-1kb-shim-skip-bank/headroom_comparison.md b/agentworking/readyos-1kb-shim-skip-bank/headroom_comparison.md new file mode 100644 index 0000000..fc3a327 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/headroom_comparison.md @@ -0,0 +1,35 @@ +# ReadyOS Bank Refactor Memory Comparison + +Generated from linker maps before and after the schema-v5 ReadyOS-bank refactor. +Positive headroom/heap deltas mean more free C64 RAM; negative code/data/BSS deltas mean smaller linked segments. + +| App/map | Code/RO/init before | after | delta | Data before | after | delta | BSS before | after | delta | Heap before | after | delta | Window headroom before | after | delta | +| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | +| launcher | 39301 | 39295 | -6 | 50 | 50 | 0 | 2509 | 2509 | 0 | 5132 | 4626 | -506 | 5244 | 4738 | -506 | +| editor | 24384 | 24384 | 0 | 134 | 134 | 0 | 9880 | 9880 | 0 | 12594 | 12082 | -512 | 12706 | 12194 | -512 | +| quicknotes | 31031 | 31031 | 0 | 222 | 222 | 0 | 6047 | 6047 | 0 | 9692 | 9180 | -512 | 9804 | 9292 | -512 | +| calcplus | 37363 | 37363 | 0 | 158 | 158 | 0 | 1321 | 1321 | 0 | 8150 | 7638 | -512 | 8262 | 7750 | -512 | +| hexview | 12793 | 12793 | 0 | 46 | 46 | 0 | 101 | 101 | 0 | 34052 | 33540 | -512 | 34164 | 33652 | -512 | +| clipmgr | 30847 | 30847 | 0 | 46 | 46 | 0 | 1062 | 1062 | 0 | 15036 | 14524 | -512 | 15149 | 14637 | -512 | +| reuviewer | 15109 | 15105 | -4 | 46 | 46 | 0 | 221 | 221 | 0 | 31616 | 31108 | -508 | 31728 | 31220 | -508 | +| sysinfo | 16184 | 16184 | 0 | 47 | 47 | 0 | 277 | 277 | 0 | 30484 | 29972 | -512 | 30596 | 30084 | -512 | +| tasklist | 31116 | 31116 | 0 | 151 | 151 | 0 | 8927 | 8927 | 0 | 6798 | 6286 | -512 | 6910 | 6398 | -512 | +| simplefiles | 29693 | 29693 | 0 | 62 | 62 | 0 | 4397 | 4397 | 0 | 12840 | 12328 | -512 | 12952 | 12440 | -512 | +| simplecells | 34712 | 34712 | 0 | 238 | 238 | 0 | 2142 | 2142 | 0 | 9900 | 9388 | -512 | 10012 | 9500 | -512 | +| game2048 | 16838 | 16838 | 0 | 46 | 46 | 0 | 1203 | 1203 | 0 | 28904 | 28392 | -512 | 29017 | 28505 | -512 | +| deminer | 20178 | 20178 | 0 | 46 | 46 | 0 | 4276 | 4276 | 0 | 22492 | 21980 | -512 | 22604 | 22092 | -512 | +| sidetris | 15457 | 15457 | 0 | 86 | 86 | 0 | 908 | 908 | 0 | 30540 | 30028 | -512 | 30653 | 30141 | -512 | +| cal26 | 32292 | 32292 | 0 | 324 | 324 | 0 | 4803 | 4803 | 0 | 9572 | 9060 | -512 | 9685 | 9173 | -512 | +| dizzy | 38553 | 38553 | 0 | 132 | 132 | 0 | 6327 | 6327 | 0 | 1980 | 1468 | -512 | 2092 | 1580 | -512 | +| readyirc | 21882 | 21882 | 0 | 47 | 47 | 0 | 5351 | 5351 | 0 | 19712 | 19200 | -512 | 19824 | 19312 | -512 | +| rirc-rrnet | 21278 | 21278 | 0 | 227 | 227 | 0 | 6909 | 6909 | 0 | 18578 | 18066 | -512 | 18690 | 18178 | -512 | +| readybasic | 9290 | 9290 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | — | — | 1537 | 1025 | -512 | +| ucitest | 22520 | 22520 | 0 | 71 | 71 | 0 | 2708 | 2708 | 0 | 21692 | 21180 | -512 | 21805 | 21293 | -512 | +| readme | 24105 | 24105 | 0 | 46 | 46 | 0 | 48 | 48 | 0 | 22792 | 22280 | -512 | 22905 | 22393 | -512 | +| readyshell | 28069 | 28069 | 0 | 70 | 70 | 0 | 426 | 426 | 0 | 3688 | 3688 | 0 | 18539 | 18027 | -512 | +| launcher_easyflash | 26933 | 26927 | -6 | 50 | 50 | 0 | 1978 | 1978 | 0 | 18030 | 17524 | -506 | 18143 | 17637 | -506 | +| readyshell_easyflash | 27967 | 27967 | 0 | 70 | 70 | 0 | 426 | 426 | 0 | 3790 | 3790 | 0 | 18641 | 18129 | -512 | + +Before snapshot end: `0xC7FF`. After snapshot end: `0xC5FF`. +ReadyBASIC has no conventional cc65 BSS/heap: its custom assembler/linker budget is enforced separately by `verify_readybasic_plugin.py`. +ReadyShell heap is bounded by its unchanged overlay load address; the full snapshot ends at `$C5FF` before the 1 KB resident shim. diff --git a/agentworking/readyos-1kb-shim-skip-bank/reuviewer_fix_easyflash.yaml b/agentworking/readyos-1kb-shim-skip-bank/reuviewer_fix_easyflash.yaml new file mode 100644 index 0000000..7888cf3 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/reuviewer_fix_easyflash.yaml @@ -0,0 +1,413 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_reuviewer_f2_chain_probe_easyflash +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + cart_crt: "Releases/0.2.5/precog-easyflash/readyos_easyflash.crt" + autostart_enabled: false + disk8: "agentworking/easyflash_full_vice_plans/readyos_data.easyflash-vice.d64" + drive8_enabled: true + drive8_type: 1541 + drive9_enabled: false + true_drive: true + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_launcher_initial + type: screen.wait_contains + params: + text: "READY OS" + pre_delay_s: 4 + poll_s: 0.5 + wait_timeout_s: 420 + capture_label: chain_launcher_initial + - id: launch_readybasic_from_launcher + type: input.sequence + params: + keys: [17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_initial + type: screen.wait_contains + params: + text: "READY." + wait_timeout_s: 120 + capture_label: chain_readybasic_initial + - id: assert_readybasic_bank_initial + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_initial + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_initial + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: readybasic_first_type + type: input.sequence + params: + keys: [81,37,61,49,48,49,58,80,82,73,78,84,32,34,67,72,65,73,78,49,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_first_type + type: assert.screen + params: + contains: "CHAIN1 101" + - id: readybasic_ctrl_b_1_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_1_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_1 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_1 + - id: assert_launcher_bank_after_ctrl_b_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_1 + type: monitor.command + params: + command: "keybuf \\x0d" + - id: capture_readybasic_reentry_1 + type: screen.capture + params: + label: chain_readybasic_reentry_1 + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_reentry_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: readybasic_second_type + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,50,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_second_type + type: assert.screen + params: + contains: "CHAIN2 101" + - id: readybasic_ctrl_b_2_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_2_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_2 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_2 + - id: launch_reuviewer_from_readybasic_position + type: input.sequence + params: + keys: [17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_reuviewer + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 90 + capture_label: chain_reuviewer_loaded + - id: assert_reuviewer_bank + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: stage_readyos_token_status_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 828 + bytes_hex: "00 00 00 00 00 07 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" + - id: configure_readyos_token_status_dma_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 57090 + bytes_hex: "3C 03 40 B8 20 18 00" + - id: commit_readyos_token_status_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 57089 + bytes_hex: "90" + - id: reuviewer_f2_to_readybasic + type: input.sequence + params: + keys: [137] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: capture_readybasic_after_reuviewer_f2 + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_f2 + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: assert_keyboard_buffer_empty_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_readybasic_stable_after_reuviewer_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_readybasic_stable_after_reuviewer_f2 + - id: assert_readybasic_bank_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_keyboard_buffer_empty_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: readybasic_type_after_reuviewer_f2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,51,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_f2 + type: assert.screen + params: + contains: "CHAIN3 101" + - id: readybasic_f2_back_to_reuviewer_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_f2_back_to_reuviewer_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_f2_back_to_reuviewer + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_reuviewer_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 80 + pre_delay_s: 1.0 + capture_label: chain_reuviewer_after_readybasic_f2 + - id: assert_app_keylog_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "48 EB" + - id: assert_app_chrin_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "57 F1" + - id: assert_default_input_device_after_readybasic_f2 + type: assert.memory + params: + start: 153 + end: 153 + equals_hex: "00" + - id: assert_reuviewer_bank_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_reuviewer_stable_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_reuviewer_stable_after_readybasic_f2 + - id: assert_reuviewer_bank_stable_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_stable_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: reuviewer_ctrl_b_after_readybasic_f2 + type: monitor.command + params: + command: "keybuf \\x02" + - id: capture_after_reuviewer_ctrl_b_input + type: screen.capture + params: + label: chain_after_reuviewer_ctrl_b_hotkey + pitch: capture after resumed REU Viewer Ctrl+B hotkey + - id: wait_launcher_after_reuviewer_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: chain_launcher_after_reuviewer_ctrl_b + - id: assert_launcher_bank_after_reuviewer_ctrl_b + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: select_readybasic_after_reuviewer_ctrl_b + type: memory.write + params: + start: 51232 + bytes_hex: "05" + - id: launch_readybasic_after_reuviewer_ctrl_b + type: monitor.command + params: + command: "raw:g c80f" + - id: capture_readybasic_after_reuviewer_ctrl_b_reentry + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_ctrl_b_reentry + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_reuviewer_ctrl_b_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,52,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_ctrl_b_reentry + type: assert.screen + params: + contains: "CHAIN4 101" + - id: readybasic_exit_after_multi_hop_reentry + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: wait_launcher_stable_after_readybasic_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + pre_delay_s: 2.0 + capture_label: chain_launcher_stable_after_readybasic_exit + - id: assert_launcher_bank_after_readybasic_exit + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: assert_readybasic_not_auto_reentered_after_exit + type: assert.screen_not_contains + params: + not_contains: "ready." + - id: select_readybasic_after_exit_guard + type: memory.write + params: + start: 51232 + bytes_hex: "05" + - id: reenter_readybasic_after_exit_guard + type: monitor.command + params: + command: "raw:g c80f" + - id: capture_readybasic_after_exit_guard_reentry + type: screen.capture + params: + label: chain_readybasic_after_exit_guard_reentry + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_exit_guard_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,53,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_exit_guard_reentry + type: assert.screen + params: + contains: "CHAIN5 101" diff --git a/agentworking/readyos-1kb-shim-skip-bank/reuviewer_fix_regular.yaml b/agentworking/readyos-1kb-shim-skip-bank/reuviewer_fix_regular.yaml new file mode 100644 index 0000000..4d819d4 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/reuviewer_fix_regular.yaml @@ -0,0 +1,410 @@ +version: 1 +kind: vice_task_plan +plan_id: readybasic_reuviewer_f2_chain_probe +run_mode: gui_vice +global_defaults: + monitor_host: 127.0.0.1 + monitor_port_start: 6502 + monitor_port_span: 40 + retry_policy: + max_attempts: 2 + backoff_ms: 250 + jitter: false + timeouts: + launch_s: 45 + step_s: 180 + read_s: 2 + artifact_policy: + capture_screen: true + capture_state: true + capture_dump: false + vice: + disk8: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + disk9: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81.d81" + autostart_prg: "Releases/0.2.5/precog-d81/readyos-v0.2.5t-d81-preboot.prg" + drive8_type: 1581 + drive9_type: 1581 + true_drive: false + close_vice: true + headless: true + speed_percent: 100 +steps: + - id: launch_preboot + type: vice.launch + params: + kill_stale: true + - id: wait_launcher_initial + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 180 + capture_label: chain_launcher_initial + - id: launch_readybasic_from_launcher + type: input.sequence + params: + keys: [17,17,17,17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_readybasic_initial + type: screen.wait_contains + params: + text: "READYBASIC" + wait_timeout_s: 120 + capture_label: chain_readybasic_initial + - id: assert_readybasic_bank_initial + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_initial + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_initial + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: readybasic_first_type + type: input.sequence + params: + keys: [81,37,61,49,48,49,58,80,82,73,78,84,32,34,67,72,65,73,78,49,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_first_type + type: assert.screen + params: + contains: "CHAIN1 101" + - id: readybasic_ctrl_b_1_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_1_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_1 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_1 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_1 + - id: assert_launcher_bank_after_ctrl_b_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: reenter_readybasic_1 + type: monitor.command + params: + command: "keybuf \\x0d" + - id: capture_readybasic_reentry_1 + type: screen.capture + params: + label: chain_readybasic_reentry_1 + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_reentry_1 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: readybasic_second_type + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,50,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_second_type + type: assert.screen + params: + contains: "CHAIN2 101" + - id: readybasic_ctrl_b_2_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 A9 04 8D 8D 02 A9 1C 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_ctrl_b_2_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_ctrl_b_2 + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_launcher_after_readybasic_ctrl_b_2 + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + pre_delay_s: 1.0 + capture_label: chain_launcher_after_rb_ctrl_b_2 + - id: launch_reuviewer_from_readybasic_position + type: input.sequence + params: + keys: [17,17,17,13] + inter_key_delay_s: 0.08 + post_delay_s: 2.5 + - id: wait_reuviewer + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 90 + capture_label: chain_reuviewer_loaded + - id: assert_reuviewer_bank + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: stage_readyos_token_status_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 828 + bytes_hex: "00 00 00 00 00 07 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" + - id: configure_readyos_token_status_dma_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 57090 + bytes_hex: "3C 03 40 B8 20 18 00" + - id: commit_readyos_token_status_for_readybasic_reuviewer_chain + type: memory.write + params: + start: 57089 + bytes_hex: "90" + - id: reuviewer_f2_to_readybasic + type: input.sequence + params: + keys: [137] + inter_key_delay_s: 0.03 + post_delay_s: 1.2 + - id: capture_readybasic_after_reuviewer_f2 + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_f2 + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: assert_readybasic_bank_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_chrin_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "08 12" + - id: assert_keylog_vector_after_reuviewer_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "7E C1" + - id: assert_keyboard_buffer_empty_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_readybasic_stable_after_reuviewer_f2 + type: screen.wait_contains + params: + text: "ready." + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_readybasic_stable_after_reuviewer_f2 + - id: assert_readybasic_bank_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "05" + - id: assert_keyboard_buffer_empty_stable_after_reuviewer_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: readybasic_type_after_reuviewer_f2 + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,51,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_f2 + type: assert.screen + params: + contains: "CHAIN3 101" + - id: readybasic_f2_back_to_reuviewer_keylog_stub + type: memory.write + params: + start: 828 + bytes_hex: "A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 A9 01 8D 8D 02 A9 04 85 CB 20 7E C1 4C 74 A4" + - id: readybasic_f2_back_to_reuviewer_clear_keylog_breakpnts + type: monitor.command + params: + command: "raw:delete" + - id: readybasic_f2_back_to_reuviewer + type: monitor.command + params: + command: "raw:g 033c" + - id: wait_reuviewer_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 80 + pre_delay_s: 1.0 + capture_label: chain_reuviewer_after_readybasic_f2 + - id: assert_app_keylog_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 655 + end: 656 + equals_hex: "48 EB" + - id: assert_app_chrin_vector_restored_after_readybasic_f2 + type: assert.memory + params: + start: 804 + end: 805 + equals_hex: "57 F1" + - id: assert_default_input_device_after_readybasic_f2 + type: assert.memory + params: + start: 153 + end: 153 + equals_hex: "00" + - id: assert_reuviewer_bank_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: wait_reuviewer_stable_after_readybasic_f2 + type: screen.wait_contains + params: + text: "REU MEMORY" + wait_timeout_s: 30 + pre_delay_s: 2.5 + capture_label: chain_reuviewer_stable_after_readybasic_f2 + - id: assert_reuviewer_bank_stable_after_readybasic_f2 + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "08" + - id: assert_keyboard_buffer_empty_stable_after_readybasic_f2 + type: assert.memory + params: + start: 198 + end: 198 + equals_hex: "00" + - id: reuviewer_ctrl_b_after_readybasic_f2 + type: monitor.command + params: + command: "keybuf \\x02" + - id: capture_after_reuviewer_ctrl_b_input + type: screen.capture + params: + label: chain_after_reuviewer_ctrl_b_hotkey + pitch: capture after resumed REU Viewer Ctrl+B hotkey + - id: wait_launcher_after_reuviewer_ctrl_b + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 40 + capture_label: chain_launcher_after_reuviewer_ctrl_b + - id: assert_launcher_bank_after_reuviewer_ctrl_b + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: select_readybasic_after_reuviewer_ctrl_b + type: memory.write + params: + start: 51232 + bytes_hex: "05" + - id: launch_readybasic_after_reuviewer_ctrl_b + type: monitor.command + params: + command: "raw:g c80f" + - id: capture_readybasic_after_reuviewer_ctrl_b_reentry + type: screen.capture + params: + label: chain_readybasic_after_reuviewer_ctrl_b_reentry + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_reuviewer_ctrl_b_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,52,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_reuviewer_ctrl_b_reentry + type: assert.screen + params: + contains: "CHAIN4 101" + - id: readybasic_exit_after_multi_hop_reentry + type: input.sequence + params: + keys: [69,88,73,84,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.4 + - id: wait_launcher_stable_after_readybasic_exit + type: screen.wait_contains + params: + text: "READY OS" + wait_timeout_s: 30 + pre_delay_s: 2.0 + capture_label: chain_launcher_stable_after_readybasic_exit + - id: assert_launcher_bank_after_readybasic_exit + type: assert.memory + params: + start: 51252 + end: 51252 + equals_hex: "00" + - id: assert_readybasic_not_auto_reentered_after_exit + type: assert.screen_not_contains + params: + not_contains: "ready." + - id: select_readybasic_after_exit_guard + type: memory.write + params: + start: 51232 + bytes_hex: "05" + - id: reenter_readybasic_after_exit_guard + type: monitor.command + params: + command: "raw:g c80f" + - id: capture_readybasic_after_exit_guard_reentry + type: screen.capture + params: + label: chain_readybasic_after_exit_guard_reentry + pitch: warm ReadyBASIC entry evidence; bank/vector assertions and typed sentinel prove keyboard liveness + - id: readybasic_type_after_exit_guard_reentry + type: input.sequence + params: + keys: [80,82,73,78,84,32,34,67,72,65,73,78,53,34,59,81,37,13] + inter_key_delay_s: 0.03 + post_delay_s: 0.8 + - id: assert_readybasic_type_after_exit_guard_reentry + type: assert.screen + params: + contains: "CHAIN5 101" diff --git a/agentworking/readyos-1kb-shim-skip-bank/run_c64u_dma_acceptance_retry2_terminal.sh b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_dma_acceptance_retry2_terminal.sh new file mode 100644 index 0000000..e2aaf08 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_dma_acceptance_retry2_terminal.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash +set -euo pipefail + +repo="/Users/karlprosserpp/dev/c64projects/readyosprecog" +d81="$repo/Releases/0.2.5/precog-d81/readyos-v0.2.5u-d81.d81" +remote_name="r1k250802a.d81" +root="$repo/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry2" +suite_status="$root/suite.status" +suite_log="$root/suite.log" + +mkdir -p "$root" +if [[ -e "$suite_status" || -e "$suite_log" ]]; then + printf 'refusing to overwrite retained retry2 suite artifacts: %s\n' "$root" >&2 + exit 1 +fi +printf '%s\n' RUNNING > "$suite_status" +: > "$suite_log" + +on_exit() { + rc=$? + if [[ "$rc" -ne 0 ]]; then + printf 'FAIL rc=%s\n' "$rc" > "$suite_status" + fi +} +trap on_exit EXIT + +run_action() { + action="$1" + expected="$2" + out="$root/$action" + if [[ -e "$out" ]]; then + printf 'refusing to overwrite retained action artifacts: %s\n' "$out" >&2 + return 1 + fi + mkdir -p "$out" + printf 'START %s %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$action" | tee -a "$suite_log" + C64U_HOST="${C64U_HOST:-10.0.0.79}" \ + C64U_REMOTE_DIR=USB1 \ + C64U_SKIP_UPLOAD=1 \ + C64U_MACHINE_REBOOT=1 \ + READYOS_CLEAR_REU=1 \ + READYOS_CLEAR_REU_BANKS=256 \ + READYOS_EXPECT_DMA=1 \ + READYOS_EXPECT_DMA_READY=1 \ + READYOS_FAIL_ON_DISK_LOADING_WHEN_DMA=1 \ + READYOS_BOOT_INITIAL_WAIT_S=90 \ + READYOS_QUIET_AFTER_MANIFEST_OPEN_S=120 \ + READYOS_MANIFEST_DIALOG_WAIT_S=240 \ + READYOS_BOOT_ACTION="$action" \ + /bin/bash "$repo/build_support/run_readyos_boot_c64u_rest.sh" \ + "$d81" "$remote_name" "$out" >> "$suite_log" 2>&1 + actual="$(tr -d '\r\n' < "$out/status")" + if [[ "$actual" != "$expected" ]]; then + printf 'STATUS MISMATCH %s expected=%s actual=%s\n' \ + "$action" "$expected" "$actual" | tee -a "$suite_log" + return 1 + fi + printf 'PASS %s %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$action" | tee -a "$suite_log" +} + +run_action manifest-sidetris READYOS_MANIFEST_SIDETRIS_PASS +run_action readybasic-load-selected READYOS_READYBASIC_LOAD_SELECTED_PASS + +printf '%s\n' PASS > "$suite_status" +printf 'SUITE PASS %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" | tee -a "$suite_log" diff --git a/agentworking/readyos-1kb-shim-skip-bank/run_c64u_dma_acceptance_retry_terminal.sh b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_dma_acceptance_retry_terminal.sh new file mode 100644 index 0000000..12d2265 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_dma_acceptance_retry_terminal.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +set -euo pipefail + +repo="/Users/karlprosserpp/dev/c64projects/readyosprecog" +d81="$repo/Releases/0.2.5/precog-d81/readyos-v0.2.5u-d81.d81" +remote_name="r1k250802a.d81" +root="$repo/agentworking/readyos-1kb-shim-skip-bank/c64u-dma-retry" +suite_status="$root/suite.status" +suite_log="$root/suite.log" + +mkdir -p "$root" +: > "$suite_log" +printf '%s\n' RUNNING > "$suite_status" + +on_exit() { + rc=$? + if [ "$rc" -ne 0 ]; then + printf 'FAIL rc=%s\n' "$rc" > "$suite_status" + fi +} +trap on_exit EXIT + +run_action() { + action="$1" + expected="$2" + out="$root/$action" + if [ -e "$out" ]; then + printf 'refusing to overwrite retained retry artifacts: %s\n' "$out" >&2 + return 1 + fi + mkdir -p "$out" + printf 'START %s %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$action" | tee -a "$suite_log" + C64U_HOST="${C64U_HOST:-10.0.0.79}" \ + C64U_REMOTE_DIR=USB1 \ + C64U_SKIP_UPLOAD=1 \ + C64U_MACHINE_REBOOT=1 \ + READYOS_CLEAR_REU=1 \ + READYOS_CLEAR_REU_BANKS=256 \ + READYOS_EXPECT_DMA=1 \ + READYOS_EXPECT_DMA_READY=1 \ + READYOS_FAIL_ON_DISK_LOADING_WHEN_DMA=1 \ + READYOS_BOOT_INITIAL_WAIT_S=90 \ + READYOS_BOOT_ACTION="$action" \ + /bin/bash "$repo/build_support/run_readyos_boot_c64u_rest.sh" \ + "$d81" "$remote_name" "$out" >> "$suite_log" 2>&1 + actual="$(tr -d '\r\n' < "$out/status")" + if [ "$actual" != "$expected" ]; then + printf 'STATUS MISMATCH %s expected=%s actual=%s\n' \ + "$action" "$expected" "$actual" | tee -a "$suite_log" + return 1 + fi + printf 'PASS %s %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$action" | tee -a "$suite_log" +} + +run_action loadall-readyshell-overlay-smoke READYOS_LOADALL_READYSHELL_OVERLAY_PASS +run_action manifest-sidetris READYOS_MANIFEST_SIDETRIS_PASS +run_action readybasic-load-selected READYOS_READYBASIC_LOAD_SELECTED_PASS + +printf '%s\n' PASS > "$suite_status" +printf 'SUITE PASS %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" | tee -a "$suite_log" diff --git a/agentworking/readyos-1kb-shim-skip-bank/run_c64u_dma_acceptance_terminal.sh b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_dma_acceptance_terminal.sh new file mode 100644 index 0000000..b53697e --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_dma_acceptance_terminal.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +set -euo pipefail + +repo="/Users/karlprosserpp/dev/c64projects/readyosprecog" +d81="$repo/Releases/0.2.5/precog-d81/readyos-v0.2.5u-d81.d81" +remote_name="r1k250802a.d81" +root="$repo/agentworking/readyos-1kb-shim-skip-bank/c64u-dma" +suite_status="$root/suite.status" +suite_log="$root/suite.log" + +mkdir -p "$root" +: > "$suite_log" +printf '%s\n' RUNNING > "$suite_status" + +on_exit() { + rc=$? + if [ "$rc" -ne 0 ]; then + printf 'FAIL rc=%s\n' "$rc" > "$suite_status" + fi +} +trap on_exit EXIT + +run_action() { + action="$1" + expected="$2" + skip_upload="$3" + out="$root/$action" + rm -rf "$out" + mkdir -p "$out" + printf 'START %s %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$action" | tee -a "$suite_log" + C64U_HOST="${C64U_HOST:-10.0.0.79}" \ + C64U_REMOTE_DIR=USB1 \ + C64U_SKIP_UPLOAD="$skip_upload" \ + C64U_MACHINE_REBOOT=1 \ + READYOS_CLEAR_REU=1 \ + READYOS_CLEAR_REU_BANKS=256 \ + READYOS_EXPECT_DMA=1 \ + READYOS_EXPECT_DMA_READY=1 \ + READYOS_FAIL_ON_DISK_LOADING_WHEN_DMA=1 \ + READYOS_BOOT_INITIAL_WAIT_S=90 \ + READYOS_BOOT_ACTION="$action" \ + /bin/bash "$repo/build_support/run_readyos_boot_c64u_rest.sh" \ + "$d81" "$remote_name" "$out" >> "$suite_log" 2>&1 + actual="$(tr -d '\r\n' < "$out/status")" + if [ "$actual" != "$expected" ]; then + printf 'STATUS MISMATCH %s expected=%s actual=%s\n' \ + "$action" "$expected" "$actual" | tee -a "$suite_log" + return 1 + fi + printf 'PASS %s %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$action" | tee -a "$suite_log" +} + +run_action editor-direct-dma-return READYOS_EDITOR_DIRECT_DMA_RETURN_PASS 0 +run_action editor-load-selected READYOS_EDITOR_LOAD_SELECTED_PASS 1 +run_action loadall-readyshell-overlay-smoke READYOS_LOADALL_READYSHELL_OVERLAY_PASS 1 +run_action manifest-sidetris READYOS_MANIFEST_SIDETRIS_PASS 1 +run_action readybasic-load-selected READYOS_READYBASIC_LOAD_SELECTED_PASS 1 + +printf '%s\n' PASS > "$suite_status" +printf 'SUITE PASS %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" | tee -a "$suite_log" diff --git a/agentworking/readyos-1kb-shim-skip-bank/run_c64u_readybasic_retry3_terminal.sh b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_readybasic_retry3_terminal.sh new file mode 100644 index 0000000..b23ce43 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_readybasic_retry3_terminal.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash +set -euo pipefail + +repo="/Users/karlprosserpp/dev/c64projects/readyosprecog" +d81="$repo/Releases/0.2.5/precog-d81/readyos-v0.2.5u-d81.d81" +remote_name="r1k250802a.d81" +root="$repo/agentworking/readyos-1kb-shim-skip-bank/c64u-readybasic-retry3" +status="$root/suite.status" +log="$root/suite.log" +out="$root/readybasic-load-selected" + +mkdir -p "$root" +if [[ -e "$status" || -e "$log" || -e "$out" ]]; then + printf 'refusing to overwrite retained retry3 artifacts: %s\n' "$root" >&2 + exit 1 +fi +printf '%s\n' RUNNING > "$status" +: > "$log" +mkdir -p "$out" + +on_exit() { + rc=$? + if [[ "$rc" -ne 0 ]]; then + printf 'FAIL rc=%s\n' "$rc" > "$status" + fi +} +trap on_exit EXIT + +C64U_HOST="${C64U_HOST:-10.0.0.79}" \ +C64U_REMOTE_DIR=USB1 \ +C64U_SKIP_UPLOAD=1 \ +C64U_MACHINE_REBOOT=1 \ +READYOS_CLEAR_REU=1 \ +READYOS_CLEAR_REU_BANKS=256 \ +READYOS_EXPECT_DMA=1 \ +READYOS_EXPECT_DMA_READY=1 \ +READYOS_FAIL_ON_DISK_LOADING_WHEN_DMA=1 \ +READYOS_BOOT_INITIAL_WAIT_S=120 \ +READYOS_BOOT_ACTION=readybasic-load-selected \ + /bin/bash "$repo/build_support/run_readyos_boot_c64u_rest.sh" \ + "$d81" "$remote_name" "$out" >> "$log" 2>&1 + +actual="$(tr -d '\r\n' < "$out/status")" +if [[ "$actual" != READYOS_READYBASIC_LOAD_SELECTED_PASS ]]; then + printf 'STATUS MISMATCH expected=%s actual=%s\n' \ + READYOS_READYBASIC_LOAD_SELECTED_PASS "$actual" >> "$log" + exit 1 +fi + +printf '%s\n' PASS > "$status" +printf 'SUITE PASS %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$log" diff --git a/agentworking/readyos-1kb-shim-skip-bank/run_c64u_readyirc_w_terminal.sh b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_readyirc_w_terminal.sh new file mode 100644 index 0000000..f162a92 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_readyirc_w_terminal.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +set -euo pipefail + +repo="/Users/karlprosserpp/dev/c64projects/readyosprecog" +d81="$repo/Releases/0.2.5/precog-d81/readyos-v0.2.5w-d81.d81" +root="$repo/agentworking/readyos-1kb-shim-skip-bank/c64u-readyirc-w" +status="$root/suite.status" +log="$root/suite.log" + +if [[ ! -f "$d81" ]]; then + printf 'missing DMA-enabled ReadyIRC test image: %s\n' "$d81" >&2 + exit 1 +fi +if [[ -e "$root" ]]; then + printf 'refusing to overwrite retained ReadyIRC artifacts: %s\n' "$root" >&2 + exit 1 +fi +mkdir -p "$root" +printf '%s\n' RUNNING > "$status" +: > "$log" + +on_exit() { + rc=$? + if [[ "$rc" -ne 0 ]]; then + printf 'FAIL rc=%s\n' "$rc" > "$status" + fi +} +trap on_exit EXIT + +READYIRC_C64U_SKIP_BUILD=1 \ +READYIRC_C64U_D81="$d81" \ +READYIRC_C64U_OUT_DIR="$root" \ + /bin/bash "$repo/build_support/run_readyirc_c64u_suite.sh" \ + >> "$log" 2>&1 + +printf '%s\n' PASS > "$status" +printf 'SUITE PASS %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$log" diff --git a/agentworking/readyos-1kb-shim-skip-bank/run_c64u_readyshell_acceptance_terminal.sh b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_readyshell_acceptance_terminal.sh new file mode 100644 index 0000000..0d32177 --- /dev/null +++ b/agentworking/readyos-1kb-shim-skip-bank/run_c64u_readyshell_acceptance_terminal.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +set -euo pipefail + +repo="/Users/karlprosserpp/dev/c64projects/readyosprecog" +d81="$repo/Releases/0.2.5/precog-d81/readyos-v0.2.5u-d81.d81" +root="$repo/agentworking/readyos-1kb-shim-skip-bank/c64u-readyshell" +status="$root/suite.status" + +mkdir -p "$root" +printf '%s\n' RUNNING > "$status" + +on_exit() { + rc=$? + if [ "$rc" -ne 0 ]; then + printf 'FAIL rc=%s\n' "$rc" > "$status" + fi +} +trap on_exit EXIT + +# The prior generic acceptance leaves the uniquely named D81 mounted. Clear all +# physical REU banks without replacing or remounting that image. +C64U_HOST="${C64U_HOST:-10.0.0.79}" \ +C64U_SKIP_UPLOAD=1 \ +C64U_SKIP_CONFIG=1 \ +READYOS_CLEAR_REU=1 \ +READYOS_CLEAR_REU_BANKS=256 \ +READYOS_CLEAR_REU_ONLY=1 \ + /bin/bash "$repo/build_support/run_readyos_boot_c64u_rest.sh" \ + "$d81" r1k250802a.d81 "$root/reu-clear" > "$root/reu-clear.log" 2>&1 + +READYSHELL_C64U_SKIP_BUILD=1 \ +READYSHELL_C64U_D81="$d81" \ +C64U_HOST="${C64U_HOST:-10.0.0.79}" \ +C64U_REMOTE_ROOT=USB1 \ +C64U_REMOTE_D81=r1k250802a.d81 \ +C64U_IMAGE_PATH_CONFIG=/usb1/r1k250802a.d81 \ +READYSHELL_C64U_PREMOUNT_REST=0 \ +READYSHELL_C64U_ASSUME_MOUNTED=1 \ +READYSHELL_C64U_PLAN="$root/readyshell_cross_app_resume_c64u.generated.yaml" \ +READYSHELL_C64U_CONFIG_SRC="$root/readyshell_cross_app_resume_c64u.generated.ini" \ + /bin/bash "$repo/build_support/run_readyshell_cross_app_resume_c64u.sh" \ + > "$root/run.log" 2>&1 + +printf '%s\n' PASS > "$status" diff --git a/agentworking/readyos-bank-refactor/IMPLEMENTATION_LOG.md b/agentworking/readyos-bank-refactor/IMPLEMENTATION_LOG.md new file mode 100644 index 0000000..0ed88ca --- /dev/null +++ b/agentworking/readyos-bank-refactor/IMPLEMENTATION_LOG.md @@ -0,0 +1,94 @@ +# ReadyOS Bank Refactor Implementation Log + +> **Historical checkpoint, superseded 2026-08-02.** Entries below intentionally +> preserve the prior `$B800` snapshot, 512-byte shim, and `Skip+1` ReadyOS-bank +> implementation history. Current authority is the 1 KB shim, `$B600` +> snapshot, ReadyOS bank at `Skip`, and dynamic pool at `Skip+1`. + +## 2026-08-01 - baseline and architecture lock + +- Preserved the dirty worktree and ran baseline builds/tests in an isolated + source copy. +- Confirmed the current split: + - physical `Skip`: schema-v4 global/control bank; + - physical `Skip+1`: launcher snapshot; + - `$C600-$C6FF`: resident physical allocation/type table; + - `$C700`: resident magic and additional shared state; + - `$C836-$C838`: 24-bit loaded snapshot bitmap; + - `$C83B`: configured skip value used by arithmetic mapping. +- Locked the replacement: `Skip+1` becomes the combined launcher/metadata + ReadyOS bank, `Skip` becomes allocatable, and token mappings become explicit. + +## 2026-08-01 - schema v5 implementation and documentation + +- Expanded every normal app snapshot to `$1000-$C7FF` (`$B800`) and moved the + resume tail to `$B800-$FFFF` (`$4800`). +- Implemented the combined physical `Skip+1` ReadyOS bank and direct REU access + for mapping, status, allocation types, clipboard metadata, hotkeys, app and + resource registries, dependency lines, catalog text, audit, and runtime data. +- Reworked the exact 512-byte shim to resolve nonzero tokens through `$B940` + and commit loaded/resumable status through `$BA40`; token 0 resolves directly + to the ReadyOS bank stored at `$C83B`. +- Updated launcher, EasyFlash, ReadyShell, ReadyBASIC, REU Viewer, owned + allocation, TUI, clipboard, and resume users. Retired monolithic micromodule + sources remain in-tree but are compile-disabled and labeled. +- Removed the obsolete EasyFlash shim-bitmap writer. EasyFlash loader-only + overlay metadata and debug staging now use `$CB20-$CB83`, outside the app + snapshot and shim, before authoritative data is committed to REU. +- Added exhaustive Markdown/HTML status classification, canonical shim-source + appendix synchronization, and exact HTML byte verification. +- `/bin/bash ./run.sh --build-all` passed for build `0.2.5D`, including all disk + profiles, 1MB KFF2, and EasyFlash after the final loader cleanup. + +## 2026-08-02 - runtime hardening and micromodule size lock + +- Fixed the launcher catalog scratch-pointer lifetime: token/snapshot + publication can reuse the catalog scratch area, so the filename is now + acquired only after allocation and reacquired for DMA fallback. +- Restored launcher selection only after the ReadyOS-bank registry has been + reconstructed and bounds-checked. Token 0 warm state remains a compact + 128-byte UI payload at ReadyOS-bank offset `$FE40`. +- Replaced duplicated TUI ReadyOS-byte DMA code in full REU clients with the + two six-byte tail-jump entry points in `tui_readyos_alias.s`. The unique + basename is intentional: an earlier same-basename `.c`/`.s` pair allowed + GNU Make to regenerate and remove the assembler as an intermediate. +- Retained the safe C adapter and the lightweight standalone implementation as + documented, compile-selected alternatives. Full REU clients use the alias; + SysInfo and UCITest use the standalone no-BSS implementation. +- The final linker-map comparison records 87-88 bytes recovered per relevant + full client. Launcher heap/headroom is now 5,132/5,244 bytes; ReadyShell + heap/full-window headroom is 3,688/18,539 bytes after the obsolete RAM debug + mirror was also removed. +- Hardened launcher and ReadyShell cross-app automation by clearing the KERNAL + keyboard count and using VICE text-monitor `keybuf` for the lone RETURN that + the binary-monitor helper could drop after a dump or app return. +- Retired five unused preload trace stores to app RAM `$C007-$C00C` and made + reserved ABI entry `$C812` jump to the safe `$C9FF` `RTS`. The shim stays + exactly 512 bytes and now has 129 verifier-enforced zero code-padding bytes, + including a new 42-byte contiguous run at `$C8B6-$C8DF`. +- Removed ReadyShell's duplicate `$C7A0-$C7DF` / `$C7F0` diagnostic ring. Ring + contents and head now exist only in the loader-assigned ReadyShell state + bank; small live cursor/availability variables remain in BSS. This recovered + another 96 bytes of regular ReadyShell resident heap without changing BSS. + +## 2026-08-02 - aggregate completion and documentation lock + +- Expanded the ReadyBASIC aggregate to cover all 26 maintained runtime suites, + including screen-REU temporary storage, every graphics/sprite/sound phase, + loaded-app behavior, and the final visual verification suite. +- Replaced remaining post-transition combined navigation/RETURN sequences with + deterministic keyboard-buffer or direct logical-token actions where the + harness had observable dropped-key races. +- Updated the ReuViewer F2-chain harness for the schema-v5 source of truth: it + stages a 24-byte status image and DMA-writes it to ReadyOS-bank `$BA40`. + This both preserves the two-app chain scenario on all-preloaded EasyFlash and + proves the retired shim bitmap is no longer consulted. +- Regenerated ReadyBASIC spatial memory diagrams and public/private ReadyShell + overlay inventories, rebuilt current Markdown-derived HTML, synchronized all + complete commented shim sources, and reclassified/verified every HTML file. +- The retained memory comparison records per-app CODE/RO/init, DATA, BSS, heap, + and full-window headroom before and after. ReadyBASIC is explicitly treated + as a custom-assembler shape, not assigned fictional cc65 BSS/heap figures. +- Completed every regular and EasyFlash runtime suite, all release builds, + static verifiers, host tests, HTML checks, whitespace checks, and the final + no-deletion audit. diff --git a/agentworking/readyos-bank-refactor/STATE.md b/agentworking/readyos-bank-refactor/STATE.md new file mode 100644 index 0000000..f0bebe6 --- /dev/null +++ b/agentworking/readyos-bank-refactor/STATE.md @@ -0,0 +1,75 @@ +# ReadyOS Bank Refactor State + +> **Historical checkpoint, superseded 2026-08-02.** This retained audit proves +> the earlier 512-byte-shim/`Skip+1` design. The current contract reserves the +> full 1 KB `$C600-$C9FF` shim, snapshots `$1000-$C5FF` (`$B600`), places the +> ReadyOS bank at physical `Skip`, and begins dynamic allocation at `Skip+1`. +> See `agentworking/readyos-1kb-shim-skip-bank/PLAN.md` and +> `privatedocs/top_level_md/MEMORY_MAP.md`. + +This is the retained implementation audit for the refactor that makes physical +REU bank `Skip+1` the ReadyOS bank and removes the `$C600-$C7FF` resident +metadata mirror. + +## Required end state + +- `Skip+1` is the single authoritative ReadyOS metadata bank. +- Launcher state and the ReadyOS schema share that bank. +- App snapshots cover `$1000-$C7FF` (`$B800` bytes). +- The shim remains exactly `$0200` bytes at `$C800-$C9FF`. +- App/micromodule code does not retain a second allocation, loaded-app, token, + resource, or clipboard metadata source in C64 RAM. +- ReadyBASIC's custom assembler consumes generated ABI constants and verifies + the ReadyBASIC binary shape it depends upon. +- No tracked or untracked file that existed at the start of the refactor is + deleted. + +## Starting worktree + +- 1,396 tracked files. +- The tree was already dirty with documentation, generated binaries, generated + version files, and schema-v4 documentation work. +- Three tracked release artifacts were already deleted and must be restored, + while their untracked `0.2.5d` replacements must also be preserved: + - `Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-boot.prg` + - `Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81-preboot.prg` + - `Releases/0.2.5/precog-d81/readyos-v0.2.5y-d81.d81` + +## Baseline verification + +- `/bin/bash ./run.sh --build-all`: passed in an isolated source copy. +- Shim verifier: passed; canonical image is exactly 512 bytes. +- Resume verifier: passed for the old `$B600/$4A00` contract. +- Schema-v4 control-bank verifier: passed. +- Dynamic-launcher verifier: passed, but its coverage of tokens above 23 is too + weak and will be strengthened. +- All 16 regular ReadyBASIC aggregate suites ultimately passed. +- One plugin-command run stalled while boot displayed `LOADING LAUNCHER...`; + the clean rerun passed all 119 steps. +- One 212-step cross-app run stopped at cycle 6 because the keyboard buffer did + not drain; the clean rerun passed all 212 steps and all ten state checks. + +## Known baseline-report gap + +`report_app_headroom.py` currently reports only 19 maps and omits built apps +including Simple Cells, SIDetris, and UCITest. ReadyBASIC also needs a custom +segment report rather than the ordinary cc65 total. The reporter must discover +the complete built map set before post-refactor size claims are accepted. + +## Final state — complete + +- The schema-v5 ReadyOS bank at physical `Skip+1` is authoritative for bank + types, explicit token-to-physical mappings, token status, app/resource + registries, clipboard metadata, hotkeys, catalog strings, audit data, and + runtime state. Physical `Skip` is the first dynamic allocation candidate. +- App snapshots are `$1000-$C7FF` (`$B800`); the resident shim remains exactly + 512 bytes at `$C800-$C9FF`. `$C836-$C838` are reserved retired bytes. +- Every discovered app map is present in the before/after report, including + Simple Cells, SIDetris, UCITest, ReadyBASIC, both launchers, and both + ReadyShell builds. ReadyBASIC's non-cc65 shape is separately enforced. +- All regular-D81 suites, all 19 EasyFlash plans, focused launcher/QuickNotes/ + ReadyShell probes, EasyFlash smoke, ReadyShell host tests, every release SKU, + schema/resume/memory/shim verifiers, and HTML/source checks passed. +- All tracked release artifacts removed by versioned builds were restored. + Final `git diff --diff-filter=D` is empty; no source, documentation, tracked + generated artifact, or pre-existing untracked file was deleted. diff --git a/agentworking/readyos-bank-refactor/TEST_LOG.md b/agentworking/readyos-bank-refactor/TEST_LOG.md new file mode 100644 index 0000000..0d87ebf --- /dev/null +++ b/agentworking/readyos-bank-refactor/TEST_LOG.md @@ -0,0 +1,111 @@ +# ReadyOS Bank Refactor Test Log + +## Pre-change baseline + +| Gate | Result | +|---|---| +| All release-profile and EasyFlash builds | Pass | +| 512-byte shim verification | Pass | +| Old resume-contract verification | Pass | +| Schema-v4 control-bank verification | Pass | +| ReadyBASIC aggregate suite | Pass after two clean reruns for baseline flakes | +| ReadyBASIC ten-cycle cross-app state preservation | Pass, 212/212 | + +Post-change results will be appended here with exact commands, manifests, first +failing step, and rerun classification. + +## Post-change build and static gates + +| Command / gate | Result | +|---|---| +| `/bin/bash ./run.sh --build-all` (final EasyFlash cleanup, build `0.2.5D`) | Pass, exit 0 | +| `verify_readyos_shim.py --check-easyflash-bin` | Pass; exact 512-byte disk/EasyFlash shim | +| resume, schema-v5, dynamic-launcher, memory-map, ReadyBASIC shape verifiers | Pass before final full rebuild; repeat pending below | +| HTML classification and canonical full-shim-source verifier | Pass; 34 HTML documents classified, 5 full listings byte-exact | +| `python3 verify.py --profile precog-d81` | Pass; `ALL CHECKS PASSED` after updating obsolete schema-v4/C64-mirror assertions | +| `make easyflash-smoke` | Pass; loader preload markers, launcher entry/UI, persisted 16 MiB REU image, schema-v5 header, ReadyOS bank type, and every EasyFlash token mapping/status verified | + +## EasyFlash smoke hardening findings + +- An initial monitor-only schema fetch did not execute because EasyFlash owns + the `$DFxx` I/O window while monitor-injected code is active. The gate now + persists VICE's raw REU image and verifies physical `Skip+1` directly. +- That stronger check found the binary magic was `D2 C3 C2 35`, because cc65 + target-character translation had been applied to C character literals. + `REUCB_MAGIC0..3` now use explicit ASCII ABI bytes `52 43 42 35`; the rebuilt + EasyFlash smoke passes with the corrected on-REU header. + +## Focused post-change runtime probes + +| Command / manifest | Result | +|---|---| +| `make launcher-reu-state-vice`, `logs/vice_auto_20260802_003232` | Pass before final micromodule optimization | +| `make quicknotes-owned-reu-vice`, `logs/vice_auto_20260802_004417` and `...004436` | Pass both legs; owned bank visible before unload and free afterward | +| `make readyshell-cross-app-resume-vice`, `logs/vice_auto_20260802_010521` | Pass, 33/33, no degraded steps; Editor/ReadyShell/ReadyBASIC switching and resume state stable | +| `LAUNCHER_REU_STATE_SKIP_BUILD=1 make launcher-reu-state-vice`, `logs/vice_auto_20260802_013756` | Pass, 28/28 on final exact assembly alias; unload invalidation, reload, relaunch, and ReadyBASIC stability print verified | + +The first final-alias launcher attempt exposed a dropped lone RETURN after the +reload/dump sequence, not a runtime-state failure: cold launch, exit, unload, +reload, and the launcher screen had all passed. The probe now uses the same +deterministic text-monitor key-buffer path as the cross-app suite; the complete +rerun passed without degraded steps. + +## Final static gate before aggregate suites + +The schema-v5 control-bank verifier, dynamic launcher verifier, resume-contract +verifier, exact 512-byte shim verifier (including the then-current 104 zero +padding bytes), and +full memory-map verifier all passed against the final unique-name assembly +adapter build. Aggregate runtime results follow below. + +## Final regular-D81 aggregate + +All 26 targets in `make readybasic-vice-suites` passed without degraded steps. +This includes demo, repeat/labels, lifecycle, module overlay, plugin commands, +program/rbtest1, minimal and large-variable resume, screen-REU temporary data, +state, hotkeys, keyboard regression, ReuViewer F2 chain, ten-cycle cross-app +resume, second-entry Editor, graphics phases 1-5, multicolor bitmap, sprites, +sound, loaded-app coverage, and the 186-step visual suite. Salient manifests: + +- ten-cycle cross-app: `logs/vice_auto_20260802_024131`, 263/263; +- second-entry Editor: `logs/vice_auto_20260802_024615`, 192/192; +- loaded apps: `logs/vice_auto_20260802_025157`, 215/215; +- full visual suite: `logs/vice_auto_20260802_025522`, 186/186. + +Focused final probes also passed: launcher state 28/28 at +`logs/vice_auto_20260802_014929`; QuickNotes ownership/unload 15/15 and 17/17 +at `...030335` and `...030355`; ReadyShell cross-app 33/33 at `...030440`. + +## Final EasyFlash aggregate + +All 19 generated EasyFlash plans passed without degraded steps. Salient +manifests are: + +- ten-cycle cross-app: `logs/vice_auto_20260802_031224`, 265/265; +- demo: `logs/vice_auto_20260802_031419`, 80/80; +- full visual: `logs/vice_auto_20260802_032629`, 188/188; +- plugin commands: `logs/vice_auto_20260802_033724`, 123/123; +- authoritative ReadyOS-status F2 chain: + `logs/vice_auto_20260802_035055`, 70/70; +- second-entry Editor: `logs/vice_auto_20260802_035317`, 194/194; +- state: `logs/vice_auto_20260802_035511`, 59/59; +- ReadyShell cross-app: `logs/vice_auto_20260802_035555`, 35/35. + +The F2-chain harness was corrected to DMA its constrained token-status image +to ReadyOS-bank `$BA40`; writing the retired `$C836-$C838` bytes correctly has +no effect after this refactor. Deterministic direct-token re-entry replaced two +launcher-selection assumptions. The corrected run passed both F2 directions, +vector restoration, keyboard drainage, resume state, and exit suppression. + +## Final build, documentation, and deletion gates + +| Command / gate | Result | +|---|---| +| `/bin/bash ./run.sh --build-all` (`0.2.5I`) | Pass, all disk SKUs, KFF2, and EasyFlash | +| `make verify` (subsequent verification build `0.2.5J`) | Pass | +| `verify_readyos_shim.py --check-easyflash-bin` | Pass; 512 bytes; SHA-256 `7e34e228b6553b84bc47431d9938e3c53a9cc7c060f4cb26960f1b24f137e2a3` | +| `make readyshell-host-tests` | Pass | +| ReadyBASIC and ReadyShell memory-report regeneration | Pass | +| HTML status/source verification | Pass; 38 classified HTML files and 5 full shim listings (175 canonical directives each) | +| `git diff --check` | Pass | +| tracked deletion audit | Pass; zero deleted paths after restoring version-pruned release artifacts | diff --git a/agentworking/readyos-bank-refactor/headroom_after.json b/agentworking/readyos-bank-refactor/headroom_after.json new file mode 100644 index 0000000..ab193e0 --- /dev/null +++ b/agentworking/readyos-bank-refactor/headroom_after.json @@ -0,0 +1,1242 @@ +{ + "app_window_end": "0xC7FF", + "app_window_start": "0x1000", + "maps": [ + { + "app_window_end": "0xC7FF", + "app_window_headroom": 5070, + "bss_bytes": 2621, + "code_ro_init_bytes": 39363, + "data_bytes": 50, + "heap_capacity": 4958, + "heap_end": "0xC78F", + "heap_start": "0xB432", + "main_segment_total": 42034, + "map": "obj/launcher.map", + "name": "launcher", + "runtime_end": "0xB431", + "segments": { + "BSS": { + "end": "0xB431", + "size": 2621, + "start": "0xA9F5" + }, + "CODE": { + "end": "0xA3E1", + "size": 37807, + "start": "0x1033" + }, + "DATA": { + "end": "0xA9B2", + "size": 50, + "start": "0xA981" + }, + "INIT": { + "end": "0xA9CE", + "size": 28, + "start": "0xA9B3" + }, + "ONCE": { + "end": "0xA9F4", + "size": 38, + "start": "0xA9CF" + }, + "RODATA": { + "end": "0xA980", + "size": 1439, + "start": "0xA3E2" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 12619, + "bss_bytes": 9880, + "code_ro_init_bytes": 24471, + "data_bytes": 134, + "heap_capacity": 12506, + "heap_end": "0xC78F", + "heap_start": "0x96B6", + "main_segment_total": 34485, + "map": "obj/editor.map", + "name": "editor", + "runtime_end": "0x96B4", + "segments": { + "BSS": { + "end": "0x96B4", + "size": 9880, + "start": "0x701D" + }, + "CODE": { + "end": "0x6C16", + "size": 23524, + "start": "0x1033" + }, + "DATA": { + "end": "0x6FDA", + "size": 134, + "start": "0x6F55" + }, + "INIT": { + "end": "0x6FF6", + "size": 28, + "start": "0x6FDB" + }, + "ONCE": { + "end": "0x701C", + "size": 38, + "start": "0x6FF7" + }, + "RODATA": { + "end": "0x6F54", + "size": 830, + "start": "0x6C17" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9717, + "bss_bytes": 6047, + "code_ro_init_bytes": 31118, + "data_bytes": 222, + "heap_capacity": 9604, + "heap_end": "0xC78F", + "heap_start": "0xA20C", + "main_segment_total": 37387, + "map": "obj/quicknotes.map", + "name": "quicknotes", + "runtime_end": "0xA20A", + "segments": { + "BSS": { + "end": "0xA20A", + "size": 6047, + "start": "0x8A6C" + }, + "CODE": { + "end": "0x8596", + "size": 30052, + "start": "0x1033" + }, + "DATA": { + "end": "0x8A29", + "size": 222, + "start": "0x894C" + }, + "INIT": { + "end": "0x8A45", + "size": 28, + "start": "0x8A2A" + }, + "ONCE": { + "end": "0x8A6B", + "size": 38, + "start": "0x8A46" + }, + "RODATA": { + "end": "0x894B", + "size": 949, + "start": "0x8597" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 8139, + "bss_bytes": 1321, + "code_ro_init_bytes": 37486, + "data_bytes": 158, + "heap_capacity": 8026, + "heap_end": "0xC78F", + "heap_start": "0xA836", + "main_segment_total": 38965, + "map": "obj/calcplus.map", + "name": "calcplus", + "runtime_end": "0xA834", + "segments": { + "BSS": { + "end": "0xA834", + "size": 1321, + "start": "0xA30C" + }, + "CODE": { + "end": "0x9D96", + "size": 36196, + "start": "0x1033" + }, + "DATA": { + "end": "0xA2C9", + "size": 158, + "start": "0xA22C" + }, + "INIT": { + "end": "0xA2E5", + "size": 28, + "start": "0xA2CA" + }, + "ONCE": { + "end": "0xA30B", + "size": 38, + "start": "0xA2E6" + }, + "RODATA": { + "end": "0xA22B", + "size": 1173, + "start": "0x9D97" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 34041, + "bss_bytes": 101, + "code_ro_init_bytes": 12916, + "data_bytes": 46, + "heap_capacity": 33928, + "heap_end": "0xC78F", + "heap_start": "0x4308", + "main_segment_total": 13063, + "map": "obj/hexview.map", + "name": "hexview", + "runtime_end": "0x4306", + "segments": { + "BSS": { + "end": "0x4306", + "size": 101, + "start": "0x42A2" + }, + "CODE": { + "end": "0x403F", + "size": 12301, + "start": "0x1033" + }, + "DATA": { + "end": "0x425F", + "size": 46, + "start": "0x4232" + }, + "INIT": { + "end": "0x427B", + "size": 28, + "start": "0x4260" + }, + "ONCE": { + "end": "0x42A1", + "size": 38, + "start": "0x427C" + }, + "RODATA": { + "end": "0x4231", + "size": 498, + "start": "0x4040" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 15026, + "bss_bytes": 1062, + "code_ro_init_bytes": 30970, + "data_bytes": 46, + "heap_capacity": 14914, + "heap_end": "0xC78F", + "heap_start": "0x8D4E", + "main_segment_total": 32078, + "map": "obj/clipmgr.map", + "name": "clipmgr", + "runtime_end": "0x8D4D", + "segments": { + "BSS": { + "end": "0x8D4D", + "size": 1062, + "start": "0x8928" + }, + "CODE": { + "end": "0x856D", + "size": 30011, + "start": "0x1033" + }, + "DATA": { + "end": "0x88E5", + "size": 46, + "start": "0x88B8" + }, + "INIT": { + "end": "0x8901", + "size": 28, + "start": "0x88E6" + }, + "ONCE": { + "end": "0x8927", + "size": 38, + "start": "0x8902" + }, + "RODATA": { + "end": "0x88B7", + "size": 842, + "start": "0x856E" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 31605, + "bss_bytes": 221, + "code_ro_init_bytes": 15232, + "data_bytes": 46, + "heap_capacity": 31492, + "heap_end": "0xC78F", + "heap_start": "0x4C8C", + "main_segment_total": 15499, + "map": "obj/reuviewer.map", + "name": "reuviewer", + "runtime_end": "0x4C8A", + "segments": { + "BSS": { + "end": "0x4C8A", + "size": 221, + "start": "0x4BAE" + }, + "CODE": { + "end": "0x49E6", + "size": 14772, + "start": "0x1033" + }, + "DATA": { + "end": "0x4B6B", + "size": 46, + "start": "0x4B3E" + }, + "INIT": { + "end": "0x4B87", + "size": 28, + "start": "0x4B6C" + }, + "ONCE": { + "end": "0x4BAD", + "size": 38, + "start": "0x4B88" + }, + "RODATA": { + "end": "0x4B3D", + "size": 343, + "start": "0x49E7" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 30596, + "bss_bytes": 277, + "code_ro_init_bytes": 16184, + "data_bytes": 47, + "heap_capacity": 30484, + "heap_end": "0xC78F", + "heap_start": "0x507C", + "main_segment_total": 16508, + "map": "obj/sysinfo.map", + "name": "sysinfo", + "runtime_end": "0x507B", + "segments": { + "BSS": { + "end": "0x507B", + "size": 277, + "start": "0x4F67" + }, + "CODE": { + "end": "0x4ACD", + "size": 15003, + "start": "0x1033" + }, + "DATA": { + "end": "0x4F24", + "size": 47, + "start": "0x4EF6" + }, + "INIT": { + "end": "0x4F40", + "size": 28, + "start": "0x4F25" + }, + "ONCE": { + "end": "0x4F66", + "size": 38, + "start": "0x4F41" + }, + "RODATA": { + "end": "0x4EF5", + "size": 1064, + "start": "0x4ACE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 6823, + "bss_bytes": 8927, + "code_ro_init_bytes": 31203, + "data_bytes": 151, + "heap_capacity": 6710, + "heap_end": "0xC78F", + "heap_start": "0xAD5A", + "main_segment_total": 40281, + "map": "obj/tasklist.map", + "name": "tasklist", + "runtime_end": "0xAD58", + "segments": { + "BSS": { + "end": "0xAD58", + "size": 8927, + "start": "0x8A7A" + }, + "CODE": { + "end": "0x866B", + "size": 30265, + "start": "0x1033" + }, + "DATA": { + "end": "0x8A37", + "size": 151, + "start": "0x89A1" + }, + "INIT": { + "end": "0x8A53", + "size": 28, + "start": "0x8A38" + }, + "ONCE": { + "end": "0x8A79", + "size": 38, + "start": "0x8A54" + }, + "RODATA": { + "end": "0x89A0", + "size": 821, + "start": "0x866C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 12865, + "bss_bytes": 4397, + "code_ro_init_bytes": 29780, + "data_bytes": 62, + "heap_capacity": 12752, + "heap_end": "0xC78F", + "heap_start": "0x95C0", + "main_segment_total": 34239, + "map": "obj/simplefiles.map", + "name": "simplefiles", + "runtime_end": "0x95BE", + "segments": { + "BSS": { + "end": "0x95BE", + "size": 4397, + "start": "0x8492" + }, + "CODE": { + "end": "0x7F44", + "size": 28434, + "start": "0x1033" + }, + "DATA": { + "end": "0x844F", + "size": 62, + "start": "0x8412" + }, + "INIT": { + "end": "0x846B", + "size": 28, + "start": "0x8450" + }, + "ONCE": { + "end": "0x8491", + "size": 38, + "start": "0x846C" + }, + "RODATA": { + "end": "0x8411", + "size": 1229, + "start": "0x7F45" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9925, + "bss_bytes": 2142, + "code_ro_init_bytes": 34799, + "data_bytes": 238, + "heap_capacity": 9812, + "heap_end": "0xC78F", + "heap_start": "0xA13C", + "main_segment_total": 37179, + "map": "obj/simplecells.map", + "name": "simplecells", + "runtime_end": "0xA13A", + "segments": { + "BSS": { + "end": "0xA13A", + "size": 2142, + "start": "0x98DD" + }, + "CODE": { + "end": "0x90F2", + "size": 32960, + "start": "0x1033" + }, + "DATA": { + "end": "0x989A", + "size": 238, + "start": "0x97AD" + }, + "INIT": { + "end": "0x98B6", + "size": 28, + "start": "0x989B" + }, + "ONCE": { + "end": "0x98DC", + "size": 38, + "start": "0x98B7" + }, + "RODATA": { + "end": "0x97AC", + "size": 1722, + "start": "0x90F3" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 28894, + "bss_bytes": 1203, + "code_ro_init_bytes": 16961, + "data_bytes": 46, + "heap_capacity": 28782, + "heap_end": "0xC78F", + "heap_start": "0x5722", + "main_segment_total": 18210, + "map": "obj/game2048.map", + "name": "game2048", + "runtime_end": "0x5721", + "segments": { + "BSS": { + "end": "0x5721", + "size": 1203, + "start": "0x526F" + }, + "CODE": { + "end": "0x50CE", + "size": 16540, + "start": "0x1033" + }, + "DATA": { + "end": "0x522C", + "size": 46, + "start": "0x51FF" + }, + "INIT": { + "end": "0x5248", + "size": 28, + "start": "0x522D" + }, + "ONCE": { + "end": "0x526E", + "size": 38, + "start": "0x5249" + }, + "RODATA": { + "end": "0x51FE", + "size": 304, + "start": "0x50CF" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 22481, + "bss_bytes": 4276, + "code_ro_init_bytes": 20301, + "data_bytes": 46, + "heap_capacity": 22368, + "heap_end": "0xC78F", + "heap_start": "0x7030", + "main_segment_total": 24623, + "map": "obj/deminer.map", + "name": "deminer", + "runtime_end": "0x702E", + "segments": { + "BSS": { + "end": "0x702E", + "size": 4276, + "start": "0x5F7B" + }, + "CODE": { + "end": "0x5C1F", + "size": 19437, + "start": "0x1033" + }, + "DATA": { + "end": "0x5F38", + "size": 46, + "start": "0x5F0B" + }, + "INIT": { + "end": "0x5F54", + "size": 28, + "start": "0x5F39" + }, + "ONCE": { + "end": "0x5F7A", + "size": 38, + "start": "0x5F55" + }, + "RODATA": { + "end": "0x5F0A", + "size": 747, + "start": "0x5C20" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 30566, + "bss_bytes": 908, + "code_ro_init_bytes": 15544, + "data_bytes": 86, + "heap_capacity": 30454, + "heap_end": "0xC78F", + "heap_start": "0x509A", + "main_segment_total": 16538, + "map": "obj/sidetris.map", + "name": "sidetris", + "runtime_end": "0x5099", + "segments": { + "BSS": { + "end": "0x5099", + "size": 908, + "start": "0x4D0E" + }, + "CODE": { + "end": "0x4872", + "size": 14400, + "start": "0x1033" + }, + "DATA": { + "end": "0x4CCB", + "size": 86, + "start": "0x4C76" + }, + "INIT": { + "end": "0x4CE7", + "size": 28, + "start": "0x4CCC" + }, + "ONCE": { + "end": "0x4D0D", + "size": 38, + "start": "0x4CE8" + }, + "RODATA": { + "end": "0x4C75", + "size": 1027, + "start": "0x4873" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9598, + "bss_bytes": 4803, + "code_ro_init_bytes": 32379, + "data_bytes": 324, + "heap_capacity": 9486, + "heap_end": "0xC78F", + "heap_start": "0xA282", + "main_segment_total": 37506, + "map": "obj/cal26.map", + "name": "cal26", + "runtime_end": "0xA281", + "segments": { + "BSS": { + "end": "0xA281", + "size": 4803, + "start": "0x8FBF" + }, + "CODE": { + "end": "0x86EB", + "size": 30393, + "start": "0x1033" + }, + "DATA": { + "end": "0x8F7C", + "size": 324, + "start": "0x8E39" + }, + "INIT": { + "end": "0x8F98", + "size": 28, + "start": "0x8F7D" + }, + "ONCE": { + "end": "0x8FBE", + "size": 38, + "start": "0x8F99" + }, + "RODATA": { + "end": "0x8E38", + "size": 1869, + "start": "0x86EC" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 1969, + "bss_bytes": 6327, + "code_ro_init_bytes": 38676, + "data_bytes": 132, + "heap_capacity": 1856, + "heap_end": "0xC78F", + "heap_start": "0xC050", + "main_segment_total": 45135, + "map": "obj/dizzy.map", + "name": "dizzy", + "runtime_end": "0xC04E", + "segments": { + "BSS": { + "end": "0xC04E", + "size": 6327, + "start": "0xA798" + }, + "CODE": { + "end": "0xA208", + "size": 37334, + "start": "0x1033" + }, + "DATA": { + "end": "0xA755", + "size": 132, + "start": "0xA6D2" + }, + "INIT": { + "end": "0xA771", + "size": 28, + "start": "0xA756" + }, + "ONCE": { + "end": "0xA797", + "size": 38, + "start": "0xA772" + }, + "RODATA": { + "end": "0xA6D1", + "size": 1225, + "start": "0xA209" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 19737, + "bss_bytes": 5351, + "code_ro_init_bytes": 21969, + "data_bytes": 47, + "heap_capacity": 19624, + "heap_end": "0xC78F", + "heap_start": "0x7AE8", + "main_segment_total": 27367, + "map": "obj/readyirc.map", + "name": "readyirc", + "runtime_end": "0x7AE6", + "segments": { + "BSS": { + "end": "0x7AE6", + "size": 5351, + "start": "0x6600" + }, + "CODE": { + "end": "0x61F2", + "size": 20928, + "start": "0x1033" + }, + "DATA": { + "end": "0x65BD", + "size": 47, + "start": "0x658F" + }, + "INIT": { + "end": "0x65D9", + "size": 28, + "start": "0x65BE" + }, + "ONCE": { + "end": "0x65FF", + "size": 38, + "start": "0x65DA" + }, + "RODATA": { + "end": "0x658E", + "size": 924, + "start": "0x61F3" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18603, + "bss_bytes": 6909, + "code_ro_init_bytes": 21365, + "data_bytes": 227, + "heap_capacity": 18490, + "heap_end": "0xC78F", + "heap_start": "0x7F56", + "main_segment_total": 28501, + "map": "obj/rirc-rrnet.map", + "name": "rirc-rrnet", + "runtime_end": "0x7F54", + "segments": { + "BSS": { + "end": "0x7F54", + "size": 6909, + "start": "0x6458" + }, + "CODE": { + "end": "0x6054", + "size": 20514, + "start": "0x1033" + }, + "DATA": { + "end": "0x6415", + "size": 227, + "start": "0x6333" + }, + "INIT": { + "end": "0x6431", + "size": 28, + "start": "0x6416" + }, + "ONCE": { + "end": "0x6457", + "size": 38, + "start": "0x6432" + }, + "RODATA": { + "end": "0x6332", + "size": 734, + "start": "0x6055" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 1537, + "bss_bytes": 0, + "code_ro_init_bytes": 9290, + "data_bytes": 0, + "main_segment_total": 2954, + "map": "obj/readybasic.map", + "name": "readybasic", + "runtime_end": "0xC1FE", + "segments": { + "BRIDGE": { + "end": "0xC1FE", + "size": 511, + "start": "0xC000" + }, + "ENTRY": { + "end": "0x11FF", + "size": 512, + "start": "0x1000" + }, + "HIDDEN": { + "end": "0xA78A", + "size": 1931, + "start": "0xA000" + } + } + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 21805, + "bss_bytes": 2708, + "code_ro_init_bytes": 22520, + "data_bytes": 71, + "heap_capacity": 21692, + "heap_end": "0xC78F", + "heap_start": "0x72D4", + "main_segment_total": 25299, + "map": "obj/ucitest.map", + "name": "ucitest", + "runtime_end": "0x72D2", + "segments": { + "BSS": { + "end": "0x72D2", + "size": 2708, + "start": "0x683F" + }, + "CODE": { + "end": "0x5933", + "size": 18689, + "start": "0x1033" + }, + "DATA": { + "end": "0x67FC", + "size": 71, + "start": "0x67B6" + }, + "INIT": { + "end": "0x6818", + "size": 28, + "start": "0x67FD" + }, + "ONCE": { + "end": "0x683E", + "size": 38, + "start": "0x6819" + }, + "RODATA": { + "end": "0x67B5", + "size": 3714, + "start": "0x5934" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 22782, + "bss_bytes": 48, + "code_ro_init_bytes": 24228, + "data_bytes": 46, + "heap_capacity": 22670, + "heap_end": "0xC78F", + "heap_start": "0x6F02", + "main_segment_total": 24322, + "map": "obj/readme.map", + "name": "readme", + "runtime_end": "0x6F01", + "segments": { + "BSS": { + "end": "0x6F01", + "size": 48, + "start": "0x6ED2" + }, + "CODE": { + "end": "0x39A9", + "size": 10615, + "start": "0x1033" + }, + "DATA": { + "end": "0x6E8F", + "size": 46, + "start": "0x6E62" + }, + "INIT": { + "end": "0x6EAB", + "size": 28, + "start": "0x6E90" + }, + "ONCE": { + "end": "0x6ED1", + "size": 38, + "start": "0x6EAC" + }, + "RODATA": { + "end": "0x6E61", + "size": 13496, + "start": "0x39AA" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18356, + "bss_bytes": 426, + "code_ro_init_bytes": 28251, + "data_bytes": 71, + "heap_capacity": 3506, + "main_segment_total": 28748, + "map": "obj/readyshell.map", + "name": "readyshell", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3506, + "heap_start": "0x804C", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x804B", + "segments": { + "BSS": { + "end": "0x804B", + "size": 426, + "start": "0x7EA2" + }, + "CODE": { + "end": "0x7A14", + "size": 27106, + "start": "0x1033" + }, + "DATA": { + "end": "0x7E4D", + "size": 71, + "start": "0x7E07" + }, + "INIT": { + "end": "0x7E69", + "size": 28, + "start": "0x7E4E" + }, + "ONCE": { + "end": "0x7EA1", + "size": 56, + "start": "0x7E6A" + }, + "RODATA": { + "end": "0x7E06", + "size": 1010, + "start": "0x7A15" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 17969, + "bss_bytes": 2090, + "code_ro_init_bytes": 26995, + "data_bytes": 50, + "heap_capacity": 17856, + "heap_end": "0xC78F", + "heap_start": "0x81D0", + "main_segment_total": 29135, + "map": "obj/launcher_easyflash.map", + "name": "launcher_easyflash", + "runtime_end": "0x81CE", + "segments": { + "BSS": { + "end": "0x81CE", + "size": 2090, + "start": "0x79A5" + }, + "CODE": { + "end": "0x70EB", + "size": 24761, + "start": "0x1033" + }, + "DATA": { + "end": "0x7962", + "size": 50, + "start": "0x7931" + }, + "INIT": { + "end": "0x797E", + "size": 28, + "start": "0x7963" + }, + "ONCE": { + "end": "0x79A4", + "size": 38, + "start": "0x797F" + }, + "RODATA": { + "end": "0x7930", + "size": 2117, + "start": "0x70EC" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18458, + "bss_bytes": 426, + "code_ro_init_bytes": 28149, + "data_bytes": 71, + "heap_capacity": 3608, + "main_segment_total": 28646, + "map": "obj/readyshell_easyflash.map", + "name": "readyshell_easyflash", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3608, + "heap_start": "0x7FE6", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7FE5", + "segments": { + "BSS": { + "end": "0x7FE5", + "size": 426, + "start": "0x7E3C" + }, + "CODE": { + "end": "0x79AE", + "size": 27004, + "start": "0x1033" + }, + "DATA": { + "end": "0x7DE7", + "size": 71, + "start": "0x7DA1" + }, + "INIT": { + "end": "0x7E03", + "size": 28, + "start": "0x7DE8" + }, + "ONCE": { + "end": "0x7E3B", + "size": 56, + "start": "0x7E04" + }, + "RODATA": { + "end": "0x7DA0", + "size": 1010, + "start": "0x79AF" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + } + ] +} diff --git a/agentworking/readyos-bank-refactor/headroom_before.json b/agentworking/readyos-bank-refactor/headroom_before.json new file mode 100644 index 0000000..805469a --- /dev/null +++ b/agentworking/readyos-bank-refactor/headroom_before.json @@ -0,0 +1,1242 @@ +{ + "app_window_end": "0xC5FF", + "app_window_start": "0x1000", + "maps": [ + { + "app_window_end": "0xC5FF", + "app_window_headroom": 4414, + "bss_bytes": 2421, + "code_ro_init_bytes": 39707, + "data_bytes": 50, + "heap_capacity": 4302, + "heap_end": "0xC58F", + "heap_start": "0xB4C2", + "main_segment_total": 42178, + "map": "obj/launcher.map", + "name": "launcher", + "runtime_end": "0xB4C1", + "segments": { + "BSS": { + "end": "0xB4C1", + "size": 2421, + "start": "0xAB4D" + }, + "CODE": { + "end": "0xA539", + "size": 38151, + "start": "0x1033" + }, + "DATA": { + "end": "0xAB0A", + "size": 50, + "start": "0xAAD9" + }, + "INIT": { + "end": "0xAB26", + "size": 28, + "start": "0xAB0B" + }, + "ONCE": { + "end": "0xAB4C", + "size": 38, + "start": "0xAB27" + }, + "RODATA": { + "end": "0xAAD8", + "size": 1439, + "start": "0xA53A" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 12045, + "bss_bytes": 9880, + "code_ro_init_bytes": 24533, + "data_bytes": 134, + "heap_capacity": 11932, + "heap_end": "0xC58F", + "heap_start": "0x96F4", + "main_segment_total": 34547, + "map": "obj/editor.map", + "name": "editor", + "runtime_end": "0x96F2", + "segments": { + "BSS": { + "end": "0x96F2", + "size": 9880, + "start": "0x705B" + }, + "CODE": { + "end": "0x6C54", + "size": 23586, + "start": "0x1033" + }, + "DATA": { + "end": "0x7018", + "size": 134, + "start": "0x6F93" + }, + "INIT": { + "end": "0x7034", + "size": 28, + "start": "0x7019" + }, + "ONCE": { + "end": "0x705A", + "size": 38, + "start": "0x7035" + }, + "RODATA": { + "end": "0x6F92", + "size": 830, + "start": "0x6C55" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 9164, + "bss_bytes": 6047, + "code_ro_init_bytes": 31159, + "data_bytes": 222, + "heap_capacity": 9052, + "heap_end": "0xC58F", + "heap_start": "0xA234", + "main_segment_total": 37428, + "map": "obj/quicknotes.map", + "name": "quicknotes", + "runtime_end": "0xA233", + "segments": { + "BSS": { + "end": "0xA233", + "size": 6047, + "start": "0x8A95" + }, + "CODE": { + "end": "0x85BF", + "size": 30093, + "start": "0x1033" + }, + "DATA": { + "end": "0x8A52", + "size": 222, + "start": "0x8975" + }, + "INIT": { + "end": "0x8A6E", + "size": 28, + "start": "0x8A53" + }, + "ONCE": { + "end": "0x8A94", + "size": 38, + "start": "0x8A6F" + }, + "RODATA": { + "end": "0x8974", + "size": 949, + "start": "0x85C0" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 7266, + "bss_bytes": 1321, + "code_ro_init_bytes": 37847, + "data_bytes": 158, + "heap_capacity": 7154, + "heap_end": "0xC58F", + "heap_start": "0xA99E", + "main_segment_total": 39326, + "map": "obj/calcplus.map", + "name": "calcplus", + "runtime_end": "0xA99D", + "segments": { + "BSS": { + "end": "0xA99D", + "size": 1321, + "start": "0xA475" + }, + "CODE": { + "end": "0x9EFF", + "size": 36557, + "start": "0x1033" + }, + "DATA": { + "end": "0xA432", + "size": 158, + "start": "0xA395" + }, + "INIT": { + "end": "0xA44E", + "size": 28, + "start": "0xA433" + }, + "ONCE": { + "end": "0xA474", + "size": 38, + "start": "0xA44F" + }, + "RODATA": { + "end": "0xA394", + "size": 1173, + "start": "0x9F00" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 32950, + "bss_bytes": 101, + "code_ro_init_bytes": 13495, + "data_bytes": 46, + "heap_capacity": 32838, + "heap_end": "0xC58F", + "heap_start": "0x454A", + "main_segment_total": 13642, + "map": "obj/hexview.map", + "name": "hexview", + "runtime_end": "0x4549", + "segments": { + "BSS": { + "end": "0x4549", + "size": 101, + "start": "0x44E5" + }, + "CODE": { + "end": "0x4282", + "size": 12880, + "start": "0x1033" + }, + "DATA": { + "end": "0x44A2", + "size": 46, + "start": "0x4475" + }, + "INIT": { + "end": "0x44BE", + "size": 28, + "start": "0x44A3" + }, + "ONCE": { + "end": "0x44E4", + "size": 38, + "start": "0x44BF" + }, + "RODATA": { + "end": "0x4474", + "size": 498, + "start": "0x4283" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 14112, + "bss_bytes": 1062, + "code_ro_init_bytes": 31372, + "data_bytes": 46, + "heap_capacity": 14000, + "heap_end": "0xC58F", + "heap_start": "0x8EE0", + "main_segment_total": 32480, + "map": "obj/clipmgr.map", + "name": "clipmgr", + "runtime_end": "0x8EDF", + "segments": { + "BSS": { + "end": "0x8EDF", + "size": 1062, + "start": "0x8ABA" + }, + "CODE": { + "end": "0x86FF", + "size": 30413, + "start": "0x1033" + }, + "DATA": { + "end": "0x8A77", + "size": 46, + "start": "0x8A4A" + }, + "INIT": { + "end": "0x8A93", + "size": 28, + "start": "0x8A78" + }, + "ONCE": { + "end": "0x8AB9", + "size": 38, + "start": "0x8A94" + }, + "RODATA": { + "end": "0x8A49", + "size": 842, + "start": "0x8700" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 29454, + "bss_bytes": 229, + "code_ro_init_bytes": 16863, + "data_bytes": 46, + "heap_capacity": 29342, + "heap_end": "0xC58F", + "heap_start": "0x52F2", + "main_segment_total": 17138, + "map": "obj/reuviewer.map", + "name": "reuviewer", + "runtime_end": "0x52F1", + "segments": { + "BSS": { + "end": "0x52F1", + "size": 229, + "start": "0x520D" + }, + "CODE": { + "end": "0x5043", + "size": 16401, + "start": "0x1033" + }, + "DATA": { + "end": "0x51CA", + "size": 46, + "start": "0x519D" + }, + "INIT": { + "end": "0x51E6", + "size": 28, + "start": "0x51CB" + }, + "ONCE": { + "end": "0x520C", + "size": 38, + "start": "0x51E7" + }, + "RODATA": { + "end": "0x519C", + "size": 345, + "start": "0x5044" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 30021, + "bss_bytes": 277, + "code_ro_init_bytes": 16247, + "data_bytes": 47, + "heap_capacity": 29908, + "heap_end": "0xC58F", + "heap_start": "0x50BC", + "main_segment_total": 16571, + "map": "obj/sysinfo.map", + "name": "sysinfo", + "runtime_end": "0x50BA", + "segments": { + "BSS": { + "end": "0x50BA", + "size": 277, + "start": "0x4FA6" + }, + "CODE": { + "end": "0x4B0C", + "size": 15066, + "start": "0x1033" + }, + "DATA": { + "end": "0x4F63", + "size": 47, + "start": "0x4F35" + }, + "INIT": { + "end": "0x4F7F", + "size": 28, + "start": "0x4F64" + }, + "ONCE": { + "end": "0x4FA5", + "size": 38, + "start": "0x4F80" + }, + "RODATA": { + "end": "0x4F34", + "size": 1064, + "start": "0x4B0D" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 6402, + "bss_bytes": 8927, + "code_ro_init_bytes": 31112, + "data_bytes": 151, + "heap_capacity": 6290, + "heap_end": "0xC58F", + "heap_start": "0xACFE", + "main_segment_total": 40190, + "map": "obj/tasklist.map", + "name": "tasklist", + "runtime_end": "0xACFD", + "segments": { + "BSS": { + "end": "0xACFD", + "size": 8927, + "start": "0x8A1F" + }, + "CODE": { + "end": "0x8610", + "size": 30174, + "start": "0x1033" + }, + "DATA": { + "end": "0x89DC", + "size": 151, + "start": "0x8946" + }, + "INIT": { + "end": "0x89F8", + "size": 28, + "start": "0x89DD" + }, + "ONCE": { + "end": "0x8A1E", + "size": 38, + "start": "0x89F9" + }, + "RODATA": { + "end": "0x8945", + "size": 821, + "start": "0x8611" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 12636, + "bss_bytes": 4397, + "code_ro_init_bytes": 29497, + "data_bytes": 62, + "heap_capacity": 12524, + "heap_end": "0xC58F", + "heap_start": "0x94A4", + "main_segment_total": 33956, + "map": "obj/simplefiles.map", + "name": "simplefiles", + "runtime_end": "0x94A3", + "segments": { + "BSS": { + "end": "0x94A3", + "size": 4397, + "start": "0x8377" + }, + "CODE": { + "end": "0x7E29", + "size": 28151, + "start": "0x1033" + }, + "DATA": { + "end": "0x8334", + "size": 62, + "start": "0x82F7" + }, + "INIT": { + "end": "0x8350", + "size": 28, + "start": "0x8335" + }, + "ONCE": { + "end": "0x8376", + "size": 38, + "start": "0x8351" + }, + "RODATA": { + "end": "0x82F6", + "size": 1229, + "start": "0x7E2A" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 9407, + "bss_bytes": 2142, + "code_ro_init_bytes": 34805, + "data_bytes": 238, + "heap_capacity": 9294, + "heap_end": "0xC58F", + "heap_start": "0xA142", + "main_segment_total": 37185, + "map": "obj/simplecells.map", + "name": "simplecells", + "runtime_end": "0xA140", + "segments": { + "BSS": { + "end": "0xA140", + "size": 2142, + "start": "0x98E3" + }, + "CODE": { + "end": "0x90F8", + "size": 32966, + "start": "0x1033" + }, + "DATA": { + "end": "0x98A0", + "size": 238, + "start": "0x97B3" + }, + "INIT": { + "end": "0x98BC", + "size": 28, + "start": "0x98A1" + }, + "ONCE": { + "end": "0x98E2", + "size": 38, + "start": "0x98BD" + }, + "RODATA": { + "end": "0x97B2", + "size": 1722, + "start": "0x90F9" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 28580, + "bss_bytes": 1203, + "code_ro_init_bytes": 16763, + "data_bytes": 46, + "heap_capacity": 28468, + "heap_end": "0xC58F", + "heap_start": "0x565C", + "main_segment_total": 18012, + "map": "obj/game2048.map", + "name": "game2048", + "runtime_end": "0x565B", + "segments": { + "BSS": { + "end": "0x565B", + "size": 1203, + "start": "0x51A9" + }, + "CODE": { + "end": "0x5008", + "size": 16342, + "start": "0x1033" + }, + "DATA": { + "end": "0x5166", + "size": 46, + "start": "0x5139" + }, + "INIT": { + "end": "0x5182", + "size": 28, + "start": "0x5167" + }, + "ONCE": { + "end": "0x51A8", + "size": 38, + "start": "0x5183" + }, + "RODATA": { + "end": "0x5138", + "size": 304, + "start": "0x5009" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 22167, + "bss_bytes": 4276, + "code_ro_init_bytes": 20103, + "data_bytes": 46, + "heap_capacity": 22054, + "heap_end": "0xC58F", + "heap_start": "0x6F6A", + "main_segment_total": 24425, + "map": "obj/deminer.map", + "name": "deminer", + "runtime_end": "0x6F68", + "segments": { + "BSS": { + "end": "0x6F68", + "size": 4276, + "start": "0x5EB5" + }, + "CODE": { + "end": "0x5B59", + "size": 19239, + "start": "0x1033" + }, + "DATA": { + "end": "0x5E72", + "size": 46, + "start": "0x5E45" + }, + "INIT": { + "end": "0x5E8E", + "size": 28, + "start": "0x5E73" + }, + "ONCE": { + "end": "0x5EB4", + "size": 38, + "start": "0x5E8F" + }, + "RODATA": { + "end": "0x5E44", + "size": 747, + "start": "0x5B5A" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 30286, + "bss_bytes": 908, + "code_ro_init_bytes": 15312, + "data_bytes": 86, + "heap_capacity": 30174, + "heap_end": "0xC58F", + "heap_start": "0x4FB2", + "main_segment_total": 16306, + "map": "obj/sidetris.map", + "name": "sidetris", + "runtime_end": "0x4FB1", + "segments": { + "BSS": { + "end": "0x4FB1", + "size": 908, + "start": "0x4C26" + }, + "CODE": { + "end": "0x478A", + "size": 14168, + "start": "0x1033" + }, + "DATA": { + "end": "0x4BE3", + "size": 86, + "start": "0x4B8E" + }, + "INIT": { + "end": "0x4BFF", + "size": 28, + "start": "0x4BE4" + }, + "ONCE": { + "end": "0x4C25", + "size": 38, + "start": "0x4C00" + }, + "RODATA": { + "end": "0x4B8D", + "size": 1027, + "start": "0x478B" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 9084, + "bss_bytes": 4803, + "code_ro_init_bytes": 32381, + "data_bytes": 324, + "heap_capacity": 8972, + "heap_end": "0xC58F", + "heap_start": "0xA284", + "main_segment_total": 37508, + "map": "obj/cal26.map", + "name": "cal26", + "runtime_end": "0xA283", + "segments": { + "BSS": { + "end": "0xA283", + "size": 4803, + "start": "0x8FC1" + }, + "CODE": { + "end": "0x86ED", + "size": 30395, + "start": "0x1033" + }, + "DATA": { + "end": "0x8F7E", + "size": 324, + "start": "0x8E3B" + }, + "INIT": { + "end": "0x8F9A", + "size": 28, + "start": "0x8F7F" + }, + "ONCE": { + "end": "0x8FC0", + "size": 38, + "start": "0x8F9B" + }, + "RODATA": { + "end": "0x8E3A", + "size": 1869, + "start": "0x86EE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 1834, + "bss_bytes": 6327, + "code_ro_init_bytes": 38299, + "data_bytes": 132, + "heap_capacity": 1722, + "heap_end": "0xC58F", + "heap_start": "0xBED6", + "main_segment_total": 44758, + "map": "obj/dizzy.map", + "name": "dizzy", + "runtime_end": "0xBED5", + "segments": { + "BSS": { + "end": "0xBED5", + "size": 6327, + "start": "0xA61F" + }, + "CODE": { + "end": "0xA08F", + "size": 36957, + "start": "0x1033" + }, + "DATA": { + "end": "0xA5DC", + "size": 132, + "start": "0xA559" + }, + "INIT": { + "end": "0xA5F8", + "size": 28, + "start": "0xA5DD" + }, + "ONCE": { + "end": "0xA61E", + "size": 38, + "start": "0xA5F9" + }, + "RODATA": { + "end": "0xA558", + "size": 1225, + "start": "0xA090" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 19005, + "bss_bytes": 5351, + "code_ro_init_bytes": 22189, + "data_bytes": 47, + "heap_capacity": 18892, + "heap_end": "0xC58F", + "heap_start": "0x7BC4", + "main_segment_total": 27587, + "map": "obj/readyirc.map", + "name": "readyirc", + "runtime_end": "0x7BC2", + "segments": { + "BSS": { + "end": "0x7BC2", + "size": 5351, + "start": "0x66DC" + }, + "CODE": { + "end": "0x62CE", + "size": 21148, + "start": "0x1033" + }, + "DATA": { + "end": "0x6699", + "size": 47, + "start": "0x666B" + }, + "INIT": { + "end": "0x66B5", + "size": 28, + "start": "0x669A" + }, + "ONCE": { + "end": "0x66DB", + "size": 38, + "start": "0x66B6" + }, + "RODATA": { + "end": "0x666A", + "size": 924, + "start": "0x62CF" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 17871, + "bss_bytes": 6909, + "code_ro_init_bytes": 21585, + "data_bytes": 227, + "heap_capacity": 17758, + "heap_end": "0xC58F", + "heap_start": "0x8032", + "main_segment_total": 28721, + "map": "obj/rirc-rrnet.map", + "name": "rirc-rrnet", + "runtime_end": "0x8030", + "segments": { + "BSS": { + "end": "0x8030", + "size": 6909, + "start": "0x6534" + }, + "CODE": { + "end": "0x6130", + "size": 20734, + "start": "0x1033" + }, + "DATA": { + "end": "0x64F1", + "size": 227, + "start": "0x640F" + }, + "INIT": { + "end": "0x650D", + "size": 28, + "start": "0x64F2" + }, + "ONCE": { + "end": "0x6533", + "size": 38, + "start": "0x650E" + }, + "RODATA": { + "end": "0x640E", + "size": 734, + "start": "0x6131" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 1025, + "bss_bytes": 0, + "code_ro_init_bytes": 9390, + "data_bytes": 0, + "main_segment_total": 3054, + "map": "obj/readybasic.map", + "name": "readybasic", + "runtime_end": "0xC1FE", + "segments": { + "BRIDGE": { + "end": "0xC1FE", + "size": 511, + "start": "0xC000" + }, + "ENTRY": { + "end": "0x11FF", + "size": 512, + "start": "0x1000" + }, + "HIDDEN": { + "end": "0xA7EE", + "size": 2031, + "start": "0xA000" + } + } + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 21230, + "bss_bytes": 2708, + "code_ro_init_bytes": 22583, + "data_bytes": 71, + "heap_capacity": 21118, + "heap_end": "0xC58F", + "heap_start": "0x7312", + "main_segment_total": 25362, + "map": "obj/ucitest.map", + "name": "ucitest", + "runtime_end": "0x7311", + "segments": { + "BSS": { + "end": "0x7311", + "size": 2708, + "start": "0x687E" + }, + "CODE": { + "end": "0x5972", + "size": 18752, + "start": "0x1033" + }, + "DATA": { + "end": "0x683B", + "size": 71, + "start": "0x67F5" + }, + "INIT": { + "end": "0x6857", + "size": 28, + "start": "0x683C" + }, + "ONCE": { + "end": "0x687D", + "size": 38, + "start": "0x6858" + }, + "RODATA": { + "end": "0x67F4", + "size": 3714, + "start": "0x5973" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 22468, + "bss_bytes": 48, + "code_ro_init_bytes": 24030, + "data_bytes": 46, + "heap_capacity": 22356, + "heap_end": "0xC58F", + "heap_start": "0x6E3C", + "main_segment_total": 24124, + "map": "obj/readme.map", + "name": "readme", + "runtime_end": "0x6E3B", + "segments": { + "BSS": { + "end": "0x6E3B", + "size": 48, + "start": "0x6E0C" + }, + "CODE": { + "end": "0x38E3", + "size": 10417, + "start": "0x1033" + }, + "DATA": { + "end": "0x6DC9", + "size": 46, + "start": "0x6D9C" + }, + "INIT": { + "end": "0x6DE5", + "size": 28, + "start": "0x6DCA" + }, + "ONCE": { + "end": "0x6E0B", + "size": 38, + "start": "0x6DE6" + }, + "RODATA": { + "end": "0x6D9B", + "size": 13496, + "start": "0x38E4" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 18185, + "bss_bytes": 426, + "code_ro_init_bytes": 27910, + "data_bytes": 71, + "heap_capacity": 3846, + "main_segment_total": 28407, + "map": "obj/readyshell.map", + "name": "readyshell", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3846, + "heap_start": "0x7EF8", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7EF6", + "segments": { + "BSS": { + "end": "0x7EF6", + "size": 426, + "start": "0x7D4D" + }, + "CODE": { + "end": "0x78BF", + "size": 26765, + "start": "0x1033" + }, + "DATA": { + "end": "0x7CF8", + "size": 71, + "start": "0x7CB2" + }, + "INIT": { + "end": "0x7D14", + "size": 28, + "start": "0x7CF9" + }, + "ONCE": { + "end": "0x7D4C", + "size": 56, + "start": "0x7D15" + }, + "RODATA": { + "end": "0x7CB1", + "size": 1010, + "start": "0x78C0" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 17635, + "bss_bytes": 1890, + "code_ro_init_bytes": 27017, + "data_bytes": 50, + "heap_capacity": 17522, + "heap_end": "0xC58F", + "heap_start": "0x811E", + "main_segment_total": 28957, + "map": "obj/launcher_easyflash.map", + "name": "launcher_easyflash", + "runtime_end": "0x811C", + "segments": { + "BSS": { + "end": "0x811C", + "size": 1890, + "start": "0x79BB" + }, + "CODE": { + "end": "0x7116", + "size": 24804, + "start": "0x1033" + }, + "DATA": { + "end": "0x7978", + "size": 50, + "start": "0x7947" + }, + "INIT": { + "end": "0x7994", + "size": 28, + "start": "0x7979" + }, + "ONCE": { + "end": "0x79BA", + "size": 38, + "start": "0x7995" + }, + "RODATA": { + "end": "0x7946", + "size": 2096, + "start": "0x7117" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC5FF", + "app_window_headroom": 18287, + "bss_bytes": 426, + "code_ro_init_bytes": 27808, + "data_bytes": 71, + "heap_capacity": 3948, + "main_segment_total": 28305, + "map": "obj/readyshell_easyflash.map", + "name": "readyshell_easyflash", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3948, + "heap_start": "0x7E92", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7E90", + "segments": { + "BSS": { + "end": "0x7E90", + "size": 426, + "start": "0x7CE7" + }, + "CODE": { + "end": "0x7859", + "size": 26663, + "start": "0x1033" + }, + "DATA": { + "end": "0x7C92", + "size": 71, + "start": "0x7C4C" + }, + "INIT": { + "end": "0x7CAE", + "size": 28, + "start": "0x7C93" + }, + "ONCE": { + "end": "0x7CE6", + "size": 56, + "start": "0x7CAF" + }, + "RODATA": { + "end": "0x7C4B", + "size": 1010, + "start": "0x785A" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + } + ] +} diff --git a/agentworking/readyos-bank-refactor/headroom_comparison.md b/agentworking/readyos-bank-refactor/headroom_comparison.md new file mode 100644 index 0000000..987fa39 --- /dev/null +++ b/agentworking/readyos-bank-refactor/headroom_comparison.md @@ -0,0 +1,35 @@ +# ReadyOS Bank Refactor Memory Comparison + +Generated from linker maps before and after the schema-v5 ReadyOS-bank refactor. +Positive headroom/heap deltas mean more free C64 RAM; negative code/data/BSS deltas mean smaller linked segments. + +| App/map | Code/RO/init before | after | delta | Data before | after | delta | BSS before | after | delta | Heap before | after | delta | Window headroom before | after | delta | +| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | +| launcher | 39707 | 39301 | -406 | 50 | 50 | 0 | 2421 | 2509 | 88 | 4302 | 5132 | 830 | 4414 | 5244 | 830 | +| editor | 24533 | 24384 | -149 | 134 | 134 | 0 | 9880 | 9880 | 0 | 11932 | 12594 | 662 | 12045 | 12706 | 661 | +| quicknotes | 31159 | 31031 | -128 | 222 | 222 | 0 | 6047 | 6047 | 0 | 9052 | 9692 | 640 | 9164 | 9804 | 640 | +| calcplus | 37847 | 37363 | -484 | 158 | 158 | 0 | 1321 | 1321 | 0 | 7154 | 8150 | 996 | 7266 | 8262 | 996 | +| hexview | 13495 | 12793 | -702 | 46 | 46 | 0 | 101 | 101 | 0 | 32838 | 34052 | 1214 | 32950 | 34164 | 1214 | +| clipmgr | 31372 | 30847 | -525 | 46 | 46 | 0 | 1062 | 1062 | 0 | 14000 | 15036 | 1036 | 14112 | 15149 | 1037 | +| reuviewer | 16863 | 15109 | -1754 | 46 | 46 | 0 | 229 | 221 | -8 | 29342 | 31616 | 2274 | 29454 | 31728 | 2274 | +| sysinfo | 16247 | 16184 | -63 | 47 | 47 | 0 | 277 | 277 | 0 | 29908 | 30484 | 576 | 30021 | 30596 | 575 | +| tasklist | 31112 | 31116 | 4 | 151 | 151 | 0 | 8927 | 8927 | 0 | 6290 | 6798 | 508 | 6402 | 6910 | 508 | +| simplefiles | 29497 | 29693 | 196 | 62 | 62 | 0 | 4397 | 4397 | 0 | 12524 | 12840 | 316 | 12636 | 12952 | 316 | +| simplecells | 34805 | 34712 | -93 | 238 | 238 | 0 | 2142 | 2142 | 0 | 9294 | 9900 | 606 | 9407 | 10012 | 605 | +| game2048 | 16763 | 16838 | 75 | 46 | 46 | 0 | 1203 | 1203 | 0 | 28468 | 28904 | 436 | 28580 | 29017 | 437 | +| deminer | 20103 | 20178 | 75 | 46 | 46 | 0 | 4276 | 4276 | 0 | 22054 | 22492 | 438 | 22167 | 22604 | 437 | +| sidetris | 15312 | 15457 | 145 | 86 | 86 | 0 | 908 | 908 | 0 | 30174 | 30540 | 366 | 30286 | 30653 | 367 | +| cal26 | 32381 | 32292 | -89 | 324 | 324 | 0 | 4803 | 4803 | 0 | 8972 | 9572 | 600 | 9084 | 9685 | 601 | +| dizzy | 38299 | 38553 | 254 | 132 | 132 | 0 | 6327 | 6327 | 0 | 1722 | 1980 | 258 | 1834 | 2092 | 258 | +| readyirc | 22189 | 21882 | -307 | 47 | 47 | 0 | 5351 | 5351 | 0 | 18892 | 19712 | 820 | 19005 | 19824 | 819 | +| rirc-rrnet | 21585 | 21278 | -307 | 227 | 227 | 0 | 6909 | 6909 | 0 | 17758 | 18578 | 820 | 17871 | 18690 | 819 | +| readybasic | 9390 | 9290 | -100 | 0 | 0 | 0 | 0 | 0 | 0 | — | — | — | 1025 | 1537 | 512 | +| ucitest | 22583 | 22520 | -63 | 71 | 71 | 0 | 2708 | 2708 | 0 | 21118 | 21692 | 574 | 21230 | 21805 | 575 | +| readme | 24030 | 24105 | 75 | 46 | 46 | 0 | 48 | 48 | 0 | 22356 | 22792 | 436 | 22468 | 22905 | 437 | +| readyshell | 27910 | 28069 | 159 | 71 | 70 | -1 | 426 | 426 | 0 | 3846 | 3688 | -158 | 18185 | 18539 | 354 | +| launcher_easyflash | 27017 | 27043 | 26 | 50 | 50 | 0 | 1890 | 1978 | 88 | 17522 | 17920 | 398 | 17635 | 18033 | 398 | +| readyshell_easyflash | 27808 | 28149 | 341 | 71 | 71 | 0 | 426 | 426 | 0 | 3948 | 3608 | -340 | 18287 | 18458 | 171 | + +Before snapshot end: `0xC5FF`. After snapshot end: `0xC7FF`. +ReadyBASIC has no conventional cc65 BSS/heap: its custom assembler/linker budget is enforced separately by `verify_readybasic_plugin.py`. +ReadyShell heap is bounded by its unchanged overlay load address, while its full snapshot headroom includes the new app-private `$C600-$C7FF` tail. diff --git a/agentworking/readyos-bank-refactor/headroom_comparison_optimized.md b/agentworking/readyos-bank-refactor/headroom_comparison_optimized.md new file mode 100644 index 0000000..75041f2 --- /dev/null +++ b/agentworking/readyos-bank-refactor/headroom_comparison_optimized.md @@ -0,0 +1,35 @@ +# ReadyOS Bank Refactor Memory Comparison + +Generated from linker maps before and after the schema-v5 ReadyOS-bank refactor. +Positive headroom/heap deltas mean more free C64 RAM; negative code/data/BSS deltas mean smaller linked segments. + +| App/map | Code/RO/init before | after | delta | Data before | after | delta | BSS before | after | delta | Heap before | after | delta | Window headroom before | after | delta | +| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | +| launcher | 39707 | 39325 | -382 | 50 | 50 | 0 | 2421 | 2509 | 88 | 4302 | 5108 | 806 | 4414 | 5220 | 806 | +| editor | 24533 | 24408 | -125 | 134 | 134 | 0 | 9880 | 9880 | 0 | 11932 | 12570 | 638 | 12045 | 12682 | 637 | +| quicknotes | 31159 | 31055 | -104 | 222 | 222 | 0 | 6047 | 6047 | 0 | 9052 | 9668 | 616 | 9164 | 9780 | 616 | +| calcplus | 37847 | 37397 | -450 | 158 | 158 | 0 | 1321 | 1321 | 0 | 7154 | 8116 | 962 | 7266 | 8228 | 962 | +| hexview | 13495 | 12827 | -668 | 46 | 46 | 0 | 101 | 101 | 0 | 32838 | 34018 | 1180 | 32950 | 34130 | 1180 | +| clipmgr | 31372 | 30881 | -491 | 46 | 46 | 0 | 1062 | 1062 | 0 | 14000 | 15002 | 1002 | 14112 | 15115 | 1003 | +| reuviewer | 16863 | 15143 | -1720 | 46 | 46 | 0 | 229 | 221 | -8 | 29342 | 31582 | 2240 | 29454 | 31694 | 2240 | +| sysinfo | 16247 | 16184 | -63 | 47 | 47 | 0 | 277 | 277 | 0 | 29908 | 30484 | 576 | 30021 | 30596 | 575 | +| tasklist | 31112 | 31140 | 28 | 151 | 151 | 0 | 8927 | 8927 | 0 | 6290 | 6774 | 484 | 6402 | 6886 | 484 | +| simplefiles | 29497 | 29717 | 220 | 62 | 62 | 0 | 4397 | 4397 | 0 | 12524 | 12816 | 292 | 12636 | 12928 | 292 | +| simplecells | 34805 | 34736 | -69 | 238 | 238 | 0 | 2142 | 2142 | 0 | 9294 | 9876 | 582 | 9407 | 9988 | 581 | +| game2048 | 16763 | 16872 | 109 | 46 | 46 | 0 | 1203 | 1203 | 0 | 28468 | 28870 | 402 | 28580 | 28983 | 403 | +| deminer | 20103 | 20212 | 109 | 46 | 46 | 0 | 4276 | 4276 | 0 | 22054 | 22458 | 404 | 22167 | 22570 | 403 | +| sidetris | 15312 | 15481 | 169 | 86 | 86 | 0 | 908 | 908 | 0 | 30174 | 30516 | 342 | 30286 | 30629 | 343 | +| cal26 | 32381 | 32316 | -65 | 324 | 324 | 0 | 4803 | 4803 | 0 | 8972 | 9548 | 576 | 9084 | 9661 | 577 | +| dizzy | 38299 | 38587 | 288 | 132 | 132 | 0 | 6327 | 6327 | 0 | 1722 | 1946 | 224 | 1834 | 2058 | 224 | +| readyirc | 22189 | 21906 | -283 | 47 | 47 | 0 | 5351 | 5351 | 0 | 18892 | 19688 | 796 | 19005 | 19800 | 795 | +| rirc-rrnet | 21585 | 21302 | -283 | 227 | 227 | 0 | 6909 | 6909 | 0 | 17758 | 18554 | 796 | 17871 | 18666 | 795 | +| readybasic | 9390 | 9290 | -100 | 0 | 0 | 0 | 0 | 0 | 0 | — | — | — | 1025 | 1537 | 512 | +| ucitest | 22583 | 22520 | -63 | 71 | 71 | 0 | 2708 | 2708 | 0 | 21118 | 21692 | 574 | 21230 | 21805 | 575 | +| readme | 24030 | 24139 | 109 | 46 | 46 | 0 | 48 | 48 | 0 | 22356 | 22758 | 402 | 22468 | 22871 | 403 | +| readyshell | 27910 | 28188 | 278 | 71 | 71 | 0 | 426 | 426 | 0 | 3846 | 3568 | -278 | 18185 | 18419 | 234 | +| launcher_easyflash | 27017 | 27043 | 26 | 50 | 50 | 0 | 1890 | 1978 | 88 | 17522 | 17920 | 398 | 17635 | 18033 | 398 | +| readyshell_easyflash | 27808 | 28149 | 341 | 71 | 71 | 0 | 426 | 426 | 0 | 3948 | 3608 | -340 | 18287 | 18458 | 171 | + +Before snapshot end: `0xC5FF`. After snapshot end: `0xC7FF`. +ReadyBASIC has no conventional cc65 BSS/heap: its custom assembler/linker budget is enforced separately by `verify_readybasic_plugin.py`. +ReadyShell heap is bounded by its unchanged overlay load address, while its full snapshot headroom includes the new app-private `$C600-$C7FF` tail. diff --git a/agentworking/readyos-bank-refactor/headroom_current_final.json b/agentworking/readyos-bank-refactor/headroom_current_final.json new file mode 100644 index 0000000..cd429f9 --- /dev/null +++ b/agentworking/readyos-bank-refactor/headroom_current_final.json @@ -0,0 +1,1242 @@ +{ + "app_window_end": "0xC7FF", + "app_window_start": "0x1000", + "maps": [ + { + "app_window_end": "0xC7FF", + "app_window_headroom": 5244, + "bss_bytes": 2509, + "code_ro_init_bytes": 39301, + "data_bytes": 50, + "heap_capacity": 5132, + "heap_end": "0xC78F", + "heap_start": "0xB384", + "main_segment_total": 41860, + "map": "obj/launcher.map", + "name": "launcher", + "runtime_end": "0xB383", + "segments": { + "BSS": { + "end": "0xB383", + "size": 2509, + "start": "0xA9B7" + }, + "CODE": { + "end": "0xA3A3", + "size": 37745, + "start": "0x1033" + }, + "DATA": { + "end": "0xA974", + "size": 50, + "start": "0xA943" + }, + "INIT": { + "end": "0xA990", + "size": 28, + "start": "0xA975" + }, + "ONCE": { + "end": "0xA9B6", + "size": 38, + "start": "0xA991" + }, + "RODATA": { + "end": "0xA942", + "size": 1439, + "start": "0xA3A4" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 12706, + "bss_bytes": 9880, + "code_ro_init_bytes": 24384, + "data_bytes": 134, + "heap_capacity": 12594, + "heap_end": "0xC78F", + "heap_start": "0x965E", + "main_segment_total": 34398, + "map": "obj/editor.map", + "name": "editor", + "runtime_end": "0x965D", + "segments": { + "BSS": { + "end": "0x965D", + "size": 9880, + "start": "0x6FC6" + }, + "CODE": { + "end": "0x6BBF", + "size": 23437, + "start": "0x1033" + }, + "DATA": { + "end": "0x6F83", + "size": 134, + "start": "0x6EFE" + }, + "INIT": { + "end": "0x6F9F", + "size": 28, + "start": "0x6F84" + }, + "ONCE": { + "end": "0x6FC5", + "size": 38, + "start": "0x6FA0" + }, + "RODATA": { + "end": "0x6EFD", + "size": 830, + "start": "0x6BC0" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9804, + "bss_bytes": 6047, + "code_ro_init_bytes": 31031, + "data_bytes": 222, + "heap_capacity": 9692, + "heap_end": "0xC78F", + "heap_start": "0xA1B4", + "main_segment_total": 37300, + "map": "obj/quicknotes.map", + "name": "quicknotes", + "runtime_end": "0xA1B3", + "segments": { + "BSS": { + "end": "0xA1B3", + "size": 6047, + "start": "0x8A15" + }, + "CODE": { + "end": "0x853F", + "size": 29965, + "start": "0x1033" + }, + "DATA": { + "end": "0x89D2", + "size": 222, + "start": "0x88F5" + }, + "INIT": { + "end": "0x89EE", + "size": 28, + "start": "0x89D3" + }, + "ONCE": { + "end": "0x8A14", + "size": 38, + "start": "0x89EF" + }, + "RODATA": { + "end": "0x88F4", + "size": 949, + "start": "0x8540" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 8262, + "bss_bytes": 1321, + "code_ro_init_bytes": 37363, + "data_bytes": 158, + "heap_capacity": 8150, + "heap_end": "0xC78F", + "heap_start": "0xA7BA", + "main_segment_total": 38842, + "map": "obj/calcplus.map", + "name": "calcplus", + "runtime_end": "0xA7B9", + "segments": { + "BSS": { + "end": "0xA7B9", + "size": 1321, + "start": "0xA291" + }, + "CODE": { + "end": "0x9D1B", + "size": 36073, + "start": "0x1033" + }, + "DATA": { + "end": "0xA24E", + "size": 158, + "start": "0xA1B1" + }, + "INIT": { + "end": "0xA26A", + "size": 28, + "start": "0xA24F" + }, + "ONCE": { + "end": "0xA290", + "size": 38, + "start": "0xA26B" + }, + "RODATA": { + "end": "0xA1B0", + "size": 1173, + "start": "0x9D1C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 34164, + "bss_bytes": 101, + "code_ro_init_bytes": 12793, + "data_bytes": 46, + "heap_capacity": 34052, + "heap_end": "0xC78F", + "heap_start": "0x428C", + "main_segment_total": 12940, + "map": "obj/hexview.map", + "name": "hexview", + "runtime_end": "0x428B", + "segments": { + "BSS": { + "end": "0x428B", + "size": 101, + "start": "0x4227" + }, + "CODE": { + "end": "0x3FC4", + "size": 12178, + "start": "0x1033" + }, + "DATA": { + "end": "0x41E4", + "size": 46, + "start": "0x41B7" + }, + "INIT": { + "end": "0x4200", + "size": 28, + "start": "0x41E5" + }, + "ONCE": { + "end": "0x4226", + "size": 38, + "start": "0x4201" + }, + "RODATA": { + "end": "0x41B6", + "size": 498, + "start": "0x3FC5" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 15149, + "bss_bytes": 1062, + "code_ro_init_bytes": 30847, + "data_bytes": 46, + "heap_capacity": 15036, + "heap_end": "0xC78F", + "heap_start": "0x8CD4", + "main_segment_total": 31955, + "map": "obj/clipmgr.map", + "name": "clipmgr", + "runtime_end": "0x8CD2", + "segments": { + "BSS": { + "end": "0x8CD2", + "size": 1062, + "start": "0x88AD" + }, + "CODE": { + "end": "0x84F2", + "size": 29888, + "start": "0x1033" + }, + "DATA": { + "end": "0x886A", + "size": 46, + "start": "0x883D" + }, + "INIT": { + "end": "0x8886", + "size": 28, + "start": "0x886B" + }, + "ONCE": { + "end": "0x88AC", + "size": 38, + "start": "0x8887" + }, + "RODATA": { + "end": "0x883C", + "size": 842, + "start": "0x84F3" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 31728, + "bss_bytes": 221, + "code_ro_init_bytes": 15109, + "data_bytes": 46, + "heap_capacity": 31616, + "heap_end": "0xC78F", + "heap_start": "0x4C10", + "main_segment_total": 15376, + "map": "obj/reuviewer.map", + "name": "reuviewer", + "runtime_end": "0x4C0F", + "segments": { + "BSS": { + "end": "0x4C0F", + "size": 221, + "start": "0x4B33" + }, + "CODE": { + "end": "0x496B", + "size": 14649, + "start": "0x1033" + }, + "DATA": { + "end": "0x4AF0", + "size": 46, + "start": "0x4AC3" + }, + "INIT": { + "end": "0x4B0C", + "size": 28, + "start": "0x4AF1" + }, + "ONCE": { + "end": "0x4B32", + "size": 38, + "start": "0x4B0D" + }, + "RODATA": { + "end": "0x4AC2", + "size": 343, + "start": "0x496C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 30596, + "bss_bytes": 277, + "code_ro_init_bytes": 16184, + "data_bytes": 47, + "heap_capacity": 30484, + "heap_end": "0xC78F", + "heap_start": "0x507C", + "main_segment_total": 16508, + "map": "obj/sysinfo.map", + "name": "sysinfo", + "runtime_end": "0x507B", + "segments": { + "BSS": { + "end": "0x507B", + "size": 277, + "start": "0x4F67" + }, + "CODE": { + "end": "0x4ACD", + "size": 15003, + "start": "0x1033" + }, + "DATA": { + "end": "0x4F24", + "size": 47, + "start": "0x4EF6" + }, + "INIT": { + "end": "0x4F40", + "size": 28, + "start": "0x4F25" + }, + "ONCE": { + "end": "0x4F66", + "size": 38, + "start": "0x4F41" + }, + "RODATA": { + "end": "0x4EF5", + "size": 1064, + "start": "0x4ACE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 6910, + "bss_bytes": 8927, + "code_ro_init_bytes": 31116, + "data_bytes": 151, + "heap_capacity": 6798, + "heap_end": "0xC78F", + "heap_start": "0xAD02", + "main_segment_total": 40194, + "map": "obj/tasklist.map", + "name": "tasklist", + "runtime_end": "0xAD01", + "segments": { + "BSS": { + "end": "0xAD01", + "size": 8927, + "start": "0x8A23" + }, + "CODE": { + "end": "0x8614", + "size": 30178, + "start": "0x1033" + }, + "DATA": { + "end": "0x89E0", + "size": 151, + "start": "0x894A" + }, + "INIT": { + "end": "0x89FC", + "size": 28, + "start": "0x89E1" + }, + "ONCE": { + "end": "0x8A22", + "size": 38, + "start": "0x89FD" + }, + "RODATA": { + "end": "0x8949", + "size": 821, + "start": "0x8615" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 12952, + "bss_bytes": 4397, + "code_ro_init_bytes": 29693, + "data_bytes": 62, + "heap_capacity": 12840, + "heap_end": "0xC78F", + "heap_start": "0x9568", + "main_segment_total": 34152, + "map": "obj/simplefiles.map", + "name": "simplefiles", + "runtime_end": "0x9567", + "segments": { + "BSS": { + "end": "0x9567", + "size": 4397, + "start": "0x843B" + }, + "CODE": { + "end": "0x7EED", + "size": 28347, + "start": "0x1033" + }, + "DATA": { + "end": "0x83F8", + "size": 62, + "start": "0x83BB" + }, + "INIT": { + "end": "0x8414", + "size": 28, + "start": "0x83F9" + }, + "ONCE": { + "end": "0x843A", + "size": 38, + "start": "0x8415" + }, + "RODATA": { + "end": "0x83BA", + "size": 1229, + "start": "0x7EEE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 10012, + "bss_bytes": 2142, + "code_ro_init_bytes": 34712, + "data_bytes": 238, + "heap_capacity": 9900, + "heap_end": "0xC78F", + "heap_start": "0xA0E4", + "main_segment_total": 37092, + "map": "obj/simplecells.map", + "name": "simplecells", + "runtime_end": "0xA0E3", + "segments": { + "BSS": { + "end": "0xA0E3", + "size": 2142, + "start": "0x9886" + }, + "CODE": { + "end": "0x909B", + "size": 32873, + "start": "0x1033" + }, + "DATA": { + "end": "0x9843", + "size": 238, + "start": "0x9756" + }, + "INIT": { + "end": "0x985F", + "size": 28, + "start": "0x9844" + }, + "ONCE": { + "end": "0x9885", + "size": 38, + "start": "0x9860" + }, + "RODATA": { + "end": "0x9755", + "size": 1722, + "start": "0x909C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 29017, + "bss_bytes": 1203, + "code_ro_init_bytes": 16838, + "data_bytes": 46, + "heap_capacity": 28904, + "heap_end": "0xC78F", + "heap_start": "0x56A8", + "main_segment_total": 18087, + "map": "obj/game2048.map", + "name": "game2048", + "runtime_end": "0x56A6", + "segments": { + "BSS": { + "end": "0x56A6", + "size": 1203, + "start": "0x51F4" + }, + "CODE": { + "end": "0x5053", + "size": 16417, + "start": "0x1033" + }, + "DATA": { + "end": "0x51B1", + "size": 46, + "start": "0x5184" + }, + "INIT": { + "end": "0x51CD", + "size": 28, + "start": "0x51B2" + }, + "ONCE": { + "end": "0x51F3", + "size": 38, + "start": "0x51CE" + }, + "RODATA": { + "end": "0x5183", + "size": 304, + "start": "0x5054" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 22604, + "bss_bytes": 4276, + "code_ro_init_bytes": 20178, + "data_bytes": 46, + "heap_capacity": 22492, + "heap_end": "0xC78F", + "heap_start": "0x6FB4", + "main_segment_total": 24500, + "map": "obj/deminer.map", + "name": "deminer", + "runtime_end": "0x6FB3", + "segments": { + "BSS": { + "end": "0x6FB3", + "size": 4276, + "start": "0x5F00" + }, + "CODE": { + "end": "0x5BA4", + "size": 19314, + "start": "0x1033" + }, + "DATA": { + "end": "0x5EBD", + "size": 46, + "start": "0x5E90" + }, + "INIT": { + "end": "0x5ED9", + "size": 28, + "start": "0x5EBE" + }, + "ONCE": { + "end": "0x5EFF", + "size": 38, + "start": "0x5EDA" + }, + "RODATA": { + "end": "0x5E8F", + "size": 747, + "start": "0x5BA5" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 30653, + "bss_bytes": 908, + "code_ro_init_bytes": 15457, + "data_bytes": 86, + "heap_capacity": 30540, + "heap_end": "0xC78F", + "heap_start": "0x5044", + "main_segment_total": 16451, + "map": "obj/sidetris.map", + "name": "sidetris", + "runtime_end": "0x5042", + "segments": { + "BSS": { + "end": "0x5042", + "size": 908, + "start": "0x4CB7" + }, + "CODE": { + "end": "0x481B", + "size": 14313, + "start": "0x1033" + }, + "DATA": { + "end": "0x4C74", + "size": 86, + "start": "0x4C1F" + }, + "INIT": { + "end": "0x4C90", + "size": 28, + "start": "0x4C75" + }, + "ONCE": { + "end": "0x4CB6", + "size": 38, + "start": "0x4C91" + }, + "RODATA": { + "end": "0x4C1E", + "size": 1027, + "start": "0x481C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9685, + "bss_bytes": 4803, + "code_ro_init_bytes": 32292, + "data_bytes": 324, + "heap_capacity": 9572, + "heap_end": "0xC78F", + "heap_start": "0xA22C", + "main_segment_total": 37419, + "map": "obj/cal26.map", + "name": "cal26", + "runtime_end": "0xA22A", + "segments": { + "BSS": { + "end": "0xA22A", + "size": 4803, + "start": "0x8F68" + }, + "CODE": { + "end": "0x8694", + "size": 30306, + "start": "0x1033" + }, + "DATA": { + "end": "0x8F25", + "size": 324, + "start": "0x8DE2" + }, + "INIT": { + "end": "0x8F41", + "size": 28, + "start": "0x8F26" + }, + "ONCE": { + "end": "0x8F67", + "size": 38, + "start": "0x8F42" + }, + "RODATA": { + "end": "0x8DE1", + "size": 1869, + "start": "0x8695" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 2092, + "bss_bytes": 6327, + "code_ro_init_bytes": 38553, + "data_bytes": 132, + "heap_capacity": 1980, + "heap_end": "0xC78F", + "heap_start": "0xBFD4", + "main_segment_total": 45012, + "map": "obj/dizzy.map", + "name": "dizzy", + "runtime_end": "0xBFD3", + "segments": { + "BSS": { + "end": "0xBFD3", + "size": 6327, + "start": "0xA71D" + }, + "CODE": { + "end": "0xA18D", + "size": 37211, + "start": "0x1033" + }, + "DATA": { + "end": "0xA6DA", + "size": 132, + "start": "0xA657" + }, + "INIT": { + "end": "0xA6F6", + "size": 28, + "start": "0xA6DB" + }, + "ONCE": { + "end": "0xA71C", + "size": 38, + "start": "0xA6F7" + }, + "RODATA": { + "end": "0xA656", + "size": 1225, + "start": "0xA18E" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 19824, + "bss_bytes": 5351, + "code_ro_init_bytes": 21882, + "data_bytes": 47, + "heap_capacity": 19712, + "heap_end": "0xC78F", + "heap_start": "0x7A90", + "main_segment_total": 27280, + "map": "obj/readyirc.map", + "name": "readyirc", + "runtime_end": "0x7A8F", + "segments": { + "BSS": { + "end": "0x7A8F", + "size": 5351, + "start": "0x65A9" + }, + "CODE": { + "end": "0x619B", + "size": 20841, + "start": "0x1033" + }, + "DATA": { + "end": "0x6566", + "size": 47, + "start": "0x6538" + }, + "INIT": { + "end": "0x6582", + "size": 28, + "start": "0x6567" + }, + "ONCE": { + "end": "0x65A8", + "size": 38, + "start": "0x6583" + }, + "RODATA": { + "end": "0x6537", + "size": 924, + "start": "0x619C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18690, + "bss_bytes": 6909, + "code_ro_init_bytes": 21278, + "data_bytes": 227, + "heap_capacity": 18578, + "heap_end": "0xC78F", + "heap_start": "0x7EFE", + "main_segment_total": 28414, + "map": "obj/rirc-rrnet.map", + "name": "rirc-rrnet", + "runtime_end": "0x7EFD", + "segments": { + "BSS": { + "end": "0x7EFD", + "size": 6909, + "start": "0x6401" + }, + "CODE": { + "end": "0x5FFD", + "size": 20427, + "start": "0x1033" + }, + "DATA": { + "end": "0x63BE", + "size": 227, + "start": "0x62DC" + }, + "INIT": { + "end": "0x63DA", + "size": 28, + "start": "0x63BF" + }, + "ONCE": { + "end": "0x6400", + "size": 38, + "start": "0x63DB" + }, + "RODATA": { + "end": "0x62DB", + "size": 734, + "start": "0x5FFE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 1537, + "bss_bytes": 0, + "code_ro_init_bytes": 9290, + "data_bytes": 0, + "main_segment_total": 2954, + "map": "obj/readybasic.map", + "name": "readybasic", + "runtime_end": "0xC1FE", + "segments": { + "BRIDGE": { + "end": "0xC1FE", + "size": 511, + "start": "0xC000" + }, + "ENTRY": { + "end": "0x11FF", + "size": 512, + "start": "0x1000" + }, + "HIDDEN": { + "end": "0xA78A", + "size": 1931, + "start": "0xA000" + } + } + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 21805, + "bss_bytes": 2708, + "code_ro_init_bytes": 22520, + "data_bytes": 71, + "heap_capacity": 21692, + "heap_end": "0xC78F", + "heap_start": "0x72D4", + "main_segment_total": 25299, + "map": "obj/ucitest.map", + "name": "ucitest", + "runtime_end": "0x72D2", + "segments": { + "BSS": { + "end": "0x72D2", + "size": 2708, + "start": "0x683F" + }, + "CODE": { + "end": "0x5933", + "size": 18689, + "start": "0x1033" + }, + "DATA": { + "end": "0x67FC", + "size": 71, + "start": "0x67B6" + }, + "INIT": { + "end": "0x6818", + "size": 28, + "start": "0x67FD" + }, + "ONCE": { + "end": "0x683E", + "size": 38, + "start": "0x6819" + }, + "RODATA": { + "end": "0x67B5", + "size": 3714, + "start": "0x5934" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 22905, + "bss_bytes": 48, + "code_ro_init_bytes": 24105, + "data_bytes": 46, + "heap_capacity": 22792, + "heap_end": "0xC78F", + "heap_start": "0x6E88", + "main_segment_total": 24199, + "map": "obj/readme.map", + "name": "readme", + "runtime_end": "0x6E86", + "segments": { + "BSS": { + "end": "0x6E86", + "size": 48, + "start": "0x6E57" + }, + "CODE": { + "end": "0x392E", + "size": 10492, + "start": "0x1033" + }, + "DATA": { + "end": "0x6E14", + "size": 46, + "start": "0x6DE7" + }, + "INIT": { + "end": "0x6E30", + "size": 28, + "start": "0x6E15" + }, + "ONCE": { + "end": "0x6E56", + "size": 38, + "start": "0x6E31" + }, + "RODATA": { + "end": "0x6DE6", + "size": 13496, + "start": "0x392F" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18539, + "bss_bytes": 426, + "code_ro_init_bytes": 28069, + "data_bytes": 70, + "heap_capacity": 3688, + "main_segment_total": 28565, + "map": "obj/readyshell.map", + "name": "readyshell", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3688, + "heap_start": "0x7F96", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7F94", + "segments": { + "BSS": { + "end": "0x7F94", + "size": 426, + "start": "0x7DEB" + }, + "CODE": { + "end": "0x795E", + "size": 26924, + "start": "0x1033" + }, + "DATA": { + "end": "0x7D96", + "size": 70, + "start": "0x7D51" + }, + "INIT": { + "end": "0x7DB2", + "size": 28, + "start": "0x7D97" + }, + "ONCE": { + "end": "0x7DEA", + "size": 56, + "start": "0x7DB3" + }, + "RODATA": { + "end": "0x7D50", + "size": 1010, + "start": "0x795F" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18033, + "bss_bytes": 1978, + "code_ro_init_bytes": 27043, + "data_bytes": 50, + "heap_capacity": 17920, + "heap_end": "0xC78F", + "heap_start": "0x8190", + "main_segment_total": 29071, + "map": "obj/launcher_easyflash.map", + "name": "launcher_easyflash", + "runtime_end": "0x818E", + "segments": { + "BSS": { + "end": "0x818E", + "size": 1978, + "start": "0x79D5" + }, + "CODE": { + "end": "0x711B", + "size": 24809, + "start": "0x1033" + }, + "DATA": { + "end": "0x7992", + "size": 50, + "start": "0x7961" + }, + "INIT": { + "end": "0x79AE", + "size": 28, + "start": "0x7993" + }, + "ONCE": { + "end": "0x79D4", + "size": 38, + "start": "0x79AF" + }, + "RODATA": { + "end": "0x7960", + "size": 2117, + "start": "0x711C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18458, + "bss_bytes": 426, + "code_ro_init_bytes": 28149, + "data_bytes": 71, + "heap_capacity": 3608, + "main_segment_total": 28646, + "map": "obj/readyshell_easyflash.map", + "name": "readyshell_easyflash", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3608, + "heap_start": "0x7FE6", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7FE5", + "segments": { + "BSS": { + "end": "0x7FE5", + "size": 426, + "start": "0x7E3C" + }, + "CODE": { + "end": "0x79AE", + "size": 27004, + "start": "0x1033" + }, + "DATA": { + "end": "0x7DE7", + "size": 71, + "start": "0x7DA1" + }, + "INIT": { + "end": "0x7E03", + "size": 28, + "start": "0x7DE8" + }, + "ONCE": { + "end": "0x7E3B", + "size": 56, + "start": "0x7E04" + }, + "RODATA": { + "end": "0x7DA0", + "size": 1010, + "start": "0x79AF" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + } + ] +} diff --git a/agentworking/readyos-bank-refactor/headroom_current_final.txt b/agentworking/readyos-bank-refactor/headroom_current_final.txt new file mode 100644 index 0000000..cd429f9 --- /dev/null +++ b/agentworking/readyos-bank-refactor/headroom_current_final.txt @@ -0,0 +1,1242 @@ +{ + "app_window_end": "0xC7FF", + "app_window_start": "0x1000", + "maps": [ + { + "app_window_end": "0xC7FF", + "app_window_headroom": 5244, + "bss_bytes": 2509, + "code_ro_init_bytes": 39301, + "data_bytes": 50, + "heap_capacity": 5132, + "heap_end": "0xC78F", + "heap_start": "0xB384", + "main_segment_total": 41860, + "map": "obj/launcher.map", + "name": "launcher", + "runtime_end": "0xB383", + "segments": { + "BSS": { + "end": "0xB383", + "size": 2509, + "start": "0xA9B7" + }, + "CODE": { + "end": "0xA3A3", + "size": 37745, + "start": "0x1033" + }, + "DATA": { + "end": "0xA974", + "size": 50, + "start": "0xA943" + }, + "INIT": { + "end": "0xA990", + "size": 28, + "start": "0xA975" + }, + "ONCE": { + "end": "0xA9B6", + "size": 38, + "start": "0xA991" + }, + "RODATA": { + "end": "0xA942", + "size": 1439, + "start": "0xA3A4" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 12706, + "bss_bytes": 9880, + "code_ro_init_bytes": 24384, + "data_bytes": 134, + "heap_capacity": 12594, + "heap_end": "0xC78F", + "heap_start": "0x965E", + "main_segment_total": 34398, + "map": "obj/editor.map", + "name": "editor", + "runtime_end": "0x965D", + "segments": { + "BSS": { + "end": "0x965D", + "size": 9880, + "start": "0x6FC6" + }, + "CODE": { + "end": "0x6BBF", + "size": 23437, + "start": "0x1033" + }, + "DATA": { + "end": "0x6F83", + "size": 134, + "start": "0x6EFE" + }, + "INIT": { + "end": "0x6F9F", + "size": 28, + "start": "0x6F84" + }, + "ONCE": { + "end": "0x6FC5", + "size": 38, + "start": "0x6FA0" + }, + "RODATA": { + "end": "0x6EFD", + "size": 830, + "start": "0x6BC0" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9804, + "bss_bytes": 6047, + "code_ro_init_bytes": 31031, + "data_bytes": 222, + "heap_capacity": 9692, + "heap_end": "0xC78F", + "heap_start": "0xA1B4", + "main_segment_total": 37300, + "map": "obj/quicknotes.map", + "name": "quicknotes", + "runtime_end": "0xA1B3", + "segments": { + "BSS": { + "end": "0xA1B3", + "size": 6047, + "start": "0x8A15" + }, + "CODE": { + "end": "0x853F", + "size": 29965, + "start": "0x1033" + }, + "DATA": { + "end": "0x89D2", + "size": 222, + "start": "0x88F5" + }, + "INIT": { + "end": "0x89EE", + "size": 28, + "start": "0x89D3" + }, + "ONCE": { + "end": "0x8A14", + "size": 38, + "start": "0x89EF" + }, + "RODATA": { + "end": "0x88F4", + "size": 949, + "start": "0x8540" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 8262, + "bss_bytes": 1321, + "code_ro_init_bytes": 37363, + "data_bytes": 158, + "heap_capacity": 8150, + "heap_end": "0xC78F", + "heap_start": "0xA7BA", + "main_segment_total": 38842, + "map": "obj/calcplus.map", + "name": "calcplus", + "runtime_end": "0xA7B9", + "segments": { + "BSS": { + "end": "0xA7B9", + "size": 1321, + "start": "0xA291" + }, + "CODE": { + "end": "0x9D1B", + "size": 36073, + "start": "0x1033" + }, + "DATA": { + "end": "0xA24E", + "size": 158, + "start": "0xA1B1" + }, + "INIT": { + "end": "0xA26A", + "size": 28, + "start": "0xA24F" + }, + "ONCE": { + "end": "0xA290", + "size": 38, + "start": "0xA26B" + }, + "RODATA": { + "end": "0xA1B0", + "size": 1173, + "start": "0x9D1C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 34164, + "bss_bytes": 101, + "code_ro_init_bytes": 12793, + "data_bytes": 46, + "heap_capacity": 34052, + "heap_end": "0xC78F", + "heap_start": "0x428C", + "main_segment_total": 12940, + "map": "obj/hexview.map", + "name": "hexview", + "runtime_end": "0x428B", + "segments": { + "BSS": { + "end": "0x428B", + "size": 101, + "start": "0x4227" + }, + "CODE": { + "end": "0x3FC4", + "size": 12178, + "start": "0x1033" + }, + "DATA": { + "end": "0x41E4", + "size": 46, + "start": "0x41B7" + }, + "INIT": { + "end": "0x4200", + "size": 28, + "start": "0x41E5" + }, + "ONCE": { + "end": "0x4226", + "size": 38, + "start": "0x4201" + }, + "RODATA": { + "end": "0x41B6", + "size": 498, + "start": "0x3FC5" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 15149, + "bss_bytes": 1062, + "code_ro_init_bytes": 30847, + "data_bytes": 46, + "heap_capacity": 15036, + "heap_end": "0xC78F", + "heap_start": "0x8CD4", + "main_segment_total": 31955, + "map": "obj/clipmgr.map", + "name": "clipmgr", + "runtime_end": "0x8CD2", + "segments": { + "BSS": { + "end": "0x8CD2", + "size": 1062, + "start": "0x88AD" + }, + "CODE": { + "end": "0x84F2", + "size": 29888, + "start": "0x1033" + }, + "DATA": { + "end": "0x886A", + "size": 46, + "start": "0x883D" + }, + "INIT": { + "end": "0x8886", + "size": 28, + "start": "0x886B" + }, + "ONCE": { + "end": "0x88AC", + "size": 38, + "start": "0x8887" + }, + "RODATA": { + "end": "0x883C", + "size": 842, + "start": "0x84F3" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 31728, + "bss_bytes": 221, + "code_ro_init_bytes": 15109, + "data_bytes": 46, + "heap_capacity": 31616, + "heap_end": "0xC78F", + "heap_start": "0x4C10", + "main_segment_total": 15376, + "map": "obj/reuviewer.map", + "name": "reuviewer", + "runtime_end": "0x4C0F", + "segments": { + "BSS": { + "end": "0x4C0F", + "size": 221, + "start": "0x4B33" + }, + "CODE": { + "end": "0x496B", + "size": 14649, + "start": "0x1033" + }, + "DATA": { + "end": "0x4AF0", + "size": 46, + "start": "0x4AC3" + }, + "INIT": { + "end": "0x4B0C", + "size": 28, + "start": "0x4AF1" + }, + "ONCE": { + "end": "0x4B32", + "size": 38, + "start": "0x4B0D" + }, + "RODATA": { + "end": "0x4AC2", + "size": 343, + "start": "0x496C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 30596, + "bss_bytes": 277, + "code_ro_init_bytes": 16184, + "data_bytes": 47, + "heap_capacity": 30484, + "heap_end": "0xC78F", + "heap_start": "0x507C", + "main_segment_total": 16508, + "map": "obj/sysinfo.map", + "name": "sysinfo", + "runtime_end": "0x507B", + "segments": { + "BSS": { + "end": "0x507B", + "size": 277, + "start": "0x4F67" + }, + "CODE": { + "end": "0x4ACD", + "size": 15003, + "start": "0x1033" + }, + "DATA": { + "end": "0x4F24", + "size": 47, + "start": "0x4EF6" + }, + "INIT": { + "end": "0x4F40", + "size": 28, + "start": "0x4F25" + }, + "ONCE": { + "end": "0x4F66", + "size": 38, + "start": "0x4F41" + }, + "RODATA": { + "end": "0x4EF5", + "size": 1064, + "start": "0x4ACE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 6910, + "bss_bytes": 8927, + "code_ro_init_bytes": 31116, + "data_bytes": 151, + "heap_capacity": 6798, + "heap_end": "0xC78F", + "heap_start": "0xAD02", + "main_segment_total": 40194, + "map": "obj/tasklist.map", + "name": "tasklist", + "runtime_end": "0xAD01", + "segments": { + "BSS": { + "end": "0xAD01", + "size": 8927, + "start": "0x8A23" + }, + "CODE": { + "end": "0x8614", + "size": 30178, + "start": "0x1033" + }, + "DATA": { + "end": "0x89E0", + "size": 151, + "start": "0x894A" + }, + "INIT": { + "end": "0x89FC", + "size": 28, + "start": "0x89E1" + }, + "ONCE": { + "end": "0x8A22", + "size": 38, + "start": "0x89FD" + }, + "RODATA": { + "end": "0x8949", + "size": 821, + "start": "0x8615" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 12952, + "bss_bytes": 4397, + "code_ro_init_bytes": 29693, + "data_bytes": 62, + "heap_capacity": 12840, + "heap_end": "0xC78F", + "heap_start": "0x9568", + "main_segment_total": 34152, + "map": "obj/simplefiles.map", + "name": "simplefiles", + "runtime_end": "0x9567", + "segments": { + "BSS": { + "end": "0x9567", + "size": 4397, + "start": "0x843B" + }, + "CODE": { + "end": "0x7EED", + "size": 28347, + "start": "0x1033" + }, + "DATA": { + "end": "0x83F8", + "size": 62, + "start": "0x83BB" + }, + "INIT": { + "end": "0x8414", + "size": 28, + "start": "0x83F9" + }, + "ONCE": { + "end": "0x843A", + "size": 38, + "start": "0x8415" + }, + "RODATA": { + "end": "0x83BA", + "size": 1229, + "start": "0x7EEE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 10012, + "bss_bytes": 2142, + "code_ro_init_bytes": 34712, + "data_bytes": 238, + "heap_capacity": 9900, + "heap_end": "0xC78F", + "heap_start": "0xA0E4", + "main_segment_total": 37092, + "map": "obj/simplecells.map", + "name": "simplecells", + "runtime_end": "0xA0E3", + "segments": { + "BSS": { + "end": "0xA0E3", + "size": 2142, + "start": "0x9886" + }, + "CODE": { + "end": "0x909B", + "size": 32873, + "start": "0x1033" + }, + "DATA": { + "end": "0x9843", + "size": 238, + "start": "0x9756" + }, + "INIT": { + "end": "0x985F", + "size": 28, + "start": "0x9844" + }, + "ONCE": { + "end": "0x9885", + "size": 38, + "start": "0x9860" + }, + "RODATA": { + "end": "0x9755", + "size": 1722, + "start": "0x909C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 29017, + "bss_bytes": 1203, + "code_ro_init_bytes": 16838, + "data_bytes": 46, + "heap_capacity": 28904, + "heap_end": "0xC78F", + "heap_start": "0x56A8", + "main_segment_total": 18087, + "map": "obj/game2048.map", + "name": "game2048", + "runtime_end": "0x56A6", + "segments": { + "BSS": { + "end": "0x56A6", + "size": 1203, + "start": "0x51F4" + }, + "CODE": { + "end": "0x5053", + "size": 16417, + "start": "0x1033" + }, + "DATA": { + "end": "0x51B1", + "size": 46, + "start": "0x5184" + }, + "INIT": { + "end": "0x51CD", + "size": 28, + "start": "0x51B2" + }, + "ONCE": { + "end": "0x51F3", + "size": 38, + "start": "0x51CE" + }, + "RODATA": { + "end": "0x5183", + "size": 304, + "start": "0x5054" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 22604, + "bss_bytes": 4276, + "code_ro_init_bytes": 20178, + "data_bytes": 46, + "heap_capacity": 22492, + "heap_end": "0xC78F", + "heap_start": "0x6FB4", + "main_segment_total": 24500, + "map": "obj/deminer.map", + "name": "deminer", + "runtime_end": "0x6FB3", + "segments": { + "BSS": { + "end": "0x6FB3", + "size": 4276, + "start": "0x5F00" + }, + "CODE": { + "end": "0x5BA4", + "size": 19314, + "start": "0x1033" + }, + "DATA": { + "end": "0x5EBD", + "size": 46, + "start": "0x5E90" + }, + "INIT": { + "end": "0x5ED9", + "size": 28, + "start": "0x5EBE" + }, + "ONCE": { + "end": "0x5EFF", + "size": 38, + "start": "0x5EDA" + }, + "RODATA": { + "end": "0x5E8F", + "size": 747, + "start": "0x5BA5" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 30653, + "bss_bytes": 908, + "code_ro_init_bytes": 15457, + "data_bytes": 86, + "heap_capacity": 30540, + "heap_end": "0xC78F", + "heap_start": "0x5044", + "main_segment_total": 16451, + "map": "obj/sidetris.map", + "name": "sidetris", + "runtime_end": "0x5042", + "segments": { + "BSS": { + "end": "0x5042", + "size": 908, + "start": "0x4CB7" + }, + "CODE": { + "end": "0x481B", + "size": 14313, + "start": "0x1033" + }, + "DATA": { + "end": "0x4C74", + "size": 86, + "start": "0x4C1F" + }, + "INIT": { + "end": "0x4C90", + "size": 28, + "start": "0x4C75" + }, + "ONCE": { + "end": "0x4CB6", + "size": 38, + "start": "0x4C91" + }, + "RODATA": { + "end": "0x4C1E", + "size": 1027, + "start": "0x481C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9685, + "bss_bytes": 4803, + "code_ro_init_bytes": 32292, + "data_bytes": 324, + "heap_capacity": 9572, + "heap_end": "0xC78F", + "heap_start": "0xA22C", + "main_segment_total": 37419, + "map": "obj/cal26.map", + "name": "cal26", + "runtime_end": "0xA22A", + "segments": { + "BSS": { + "end": "0xA22A", + "size": 4803, + "start": "0x8F68" + }, + "CODE": { + "end": "0x8694", + "size": 30306, + "start": "0x1033" + }, + "DATA": { + "end": "0x8F25", + "size": 324, + "start": "0x8DE2" + }, + "INIT": { + "end": "0x8F41", + "size": 28, + "start": "0x8F26" + }, + "ONCE": { + "end": "0x8F67", + "size": 38, + "start": "0x8F42" + }, + "RODATA": { + "end": "0x8DE1", + "size": 1869, + "start": "0x8695" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 2092, + "bss_bytes": 6327, + "code_ro_init_bytes": 38553, + "data_bytes": 132, + "heap_capacity": 1980, + "heap_end": "0xC78F", + "heap_start": "0xBFD4", + "main_segment_total": 45012, + "map": "obj/dizzy.map", + "name": "dizzy", + "runtime_end": "0xBFD3", + "segments": { + "BSS": { + "end": "0xBFD3", + "size": 6327, + "start": "0xA71D" + }, + "CODE": { + "end": "0xA18D", + "size": 37211, + "start": "0x1033" + }, + "DATA": { + "end": "0xA6DA", + "size": 132, + "start": "0xA657" + }, + "INIT": { + "end": "0xA6F6", + "size": 28, + "start": "0xA6DB" + }, + "ONCE": { + "end": "0xA71C", + "size": 38, + "start": "0xA6F7" + }, + "RODATA": { + "end": "0xA656", + "size": 1225, + "start": "0xA18E" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 19824, + "bss_bytes": 5351, + "code_ro_init_bytes": 21882, + "data_bytes": 47, + "heap_capacity": 19712, + "heap_end": "0xC78F", + "heap_start": "0x7A90", + "main_segment_total": 27280, + "map": "obj/readyirc.map", + "name": "readyirc", + "runtime_end": "0x7A8F", + "segments": { + "BSS": { + "end": "0x7A8F", + "size": 5351, + "start": "0x65A9" + }, + "CODE": { + "end": "0x619B", + "size": 20841, + "start": "0x1033" + }, + "DATA": { + "end": "0x6566", + "size": 47, + "start": "0x6538" + }, + "INIT": { + "end": "0x6582", + "size": 28, + "start": "0x6567" + }, + "ONCE": { + "end": "0x65A8", + "size": 38, + "start": "0x6583" + }, + "RODATA": { + "end": "0x6537", + "size": 924, + "start": "0x619C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18690, + "bss_bytes": 6909, + "code_ro_init_bytes": 21278, + "data_bytes": 227, + "heap_capacity": 18578, + "heap_end": "0xC78F", + "heap_start": "0x7EFE", + "main_segment_total": 28414, + "map": "obj/rirc-rrnet.map", + "name": "rirc-rrnet", + "runtime_end": "0x7EFD", + "segments": { + "BSS": { + "end": "0x7EFD", + "size": 6909, + "start": "0x6401" + }, + "CODE": { + "end": "0x5FFD", + "size": 20427, + "start": "0x1033" + }, + "DATA": { + "end": "0x63BE", + "size": 227, + "start": "0x62DC" + }, + "INIT": { + "end": "0x63DA", + "size": 28, + "start": "0x63BF" + }, + "ONCE": { + "end": "0x6400", + "size": 38, + "start": "0x63DB" + }, + "RODATA": { + "end": "0x62DB", + "size": 734, + "start": "0x5FFE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 1537, + "bss_bytes": 0, + "code_ro_init_bytes": 9290, + "data_bytes": 0, + "main_segment_total": 2954, + "map": "obj/readybasic.map", + "name": "readybasic", + "runtime_end": "0xC1FE", + "segments": { + "BRIDGE": { + "end": "0xC1FE", + "size": 511, + "start": "0xC000" + }, + "ENTRY": { + "end": "0x11FF", + "size": 512, + "start": "0x1000" + }, + "HIDDEN": { + "end": "0xA78A", + "size": 1931, + "start": "0xA000" + } + } + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 21805, + "bss_bytes": 2708, + "code_ro_init_bytes": 22520, + "data_bytes": 71, + "heap_capacity": 21692, + "heap_end": "0xC78F", + "heap_start": "0x72D4", + "main_segment_total": 25299, + "map": "obj/ucitest.map", + "name": "ucitest", + "runtime_end": "0x72D2", + "segments": { + "BSS": { + "end": "0x72D2", + "size": 2708, + "start": "0x683F" + }, + "CODE": { + "end": "0x5933", + "size": 18689, + "start": "0x1033" + }, + "DATA": { + "end": "0x67FC", + "size": 71, + "start": "0x67B6" + }, + "INIT": { + "end": "0x6818", + "size": 28, + "start": "0x67FD" + }, + "ONCE": { + "end": "0x683E", + "size": 38, + "start": "0x6819" + }, + "RODATA": { + "end": "0x67B5", + "size": 3714, + "start": "0x5934" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 22905, + "bss_bytes": 48, + "code_ro_init_bytes": 24105, + "data_bytes": 46, + "heap_capacity": 22792, + "heap_end": "0xC78F", + "heap_start": "0x6E88", + "main_segment_total": 24199, + "map": "obj/readme.map", + "name": "readme", + "runtime_end": "0x6E86", + "segments": { + "BSS": { + "end": "0x6E86", + "size": 48, + "start": "0x6E57" + }, + "CODE": { + "end": "0x392E", + "size": 10492, + "start": "0x1033" + }, + "DATA": { + "end": "0x6E14", + "size": 46, + "start": "0x6DE7" + }, + "INIT": { + "end": "0x6E30", + "size": 28, + "start": "0x6E15" + }, + "ONCE": { + "end": "0x6E56", + "size": 38, + "start": "0x6E31" + }, + "RODATA": { + "end": "0x6DE6", + "size": 13496, + "start": "0x392F" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18539, + "bss_bytes": 426, + "code_ro_init_bytes": 28069, + "data_bytes": 70, + "heap_capacity": 3688, + "main_segment_total": 28565, + "map": "obj/readyshell.map", + "name": "readyshell", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3688, + "heap_start": "0x7F96", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7F94", + "segments": { + "BSS": { + "end": "0x7F94", + "size": 426, + "start": "0x7DEB" + }, + "CODE": { + "end": "0x795E", + "size": 26924, + "start": "0x1033" + }, + "DATA": { + "end": "0x7D96", + "size": 70, + "start": "0x7D51" + }, + "INIT": { + "end": "0x7DB2", + "size": 28, + "start": "0x7D97" + }, + "ONCE": { + "end": "0x7DEA", + "size": 56, + "start": "0x7DB3" + }, + "RODATA": { + "end": "0x7D50", + "size": 1010, + "start": "0x795F" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18033, + "bss_bytes": 1978, + "code_ro_init_bytes": 27043, + "data_bytes": 50, + "heap_capacity": 17920, + "heap_end": "0xC78F", + "heap_start": "0x8190", + "main_segment_total": 29071, + "map": "obj/launcher_easyflash.map", + "name": "launcher_easyflash", + "runtime_end": "0x818E", + "segments": { + "BSS": { + "end": "0x818E", + "size": 1978, + "start": "0x79D5" + }, + "CODE": { + "end": "0x711B", + "size": 24809, + "start": "0x1033" + }, + "DATA": { + "end": "0x7992", + "size": 50, + "start": "0x7961" + }, + "INIT": { + "end": "0x79AE", + "size": 28, + "start": "0x7993" + }, + "ONCE": { + "end": "0x79D4", + "size": 38, + "start": "0x79AF" + }, + "RODATA": { + "end": "0x7960", + "size": 2117, + "start": "0x711C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18458, + "bss_bytes": 426, + "code_ro_init_bytes": 28149, + "data_bytes": 71, + "heap_capacity": 3608, + "main_segment_total": 28646, + "map": "obj/readyshell_easyflash.map", + "name": "readyshell_easyflash", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3608, + "heap_start": "0x7FE6", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7FE5", + "segments": { + "BSS": { + "end": "0x7FE5", + "size": 426, + "start": "0x7E3C" + }, + "CODE": { + "end": "0x79AE", + "size": 27004, + "start": "0x1033" + }, + "DATA": { + "end": "0x7DE7", + "size": 71, + "start": "0x7DA1" + }, + "INIT": { + "end": "0x7E03", + "size": 28, + "start": "0x7DE8" + }, + "ONCE": { + "end": "0x7E3B", + "size": 56, + "start": "0x7E04" + }, + "RODATA": { + "end": "0x7DA0", + "size": 1010, + "start": "0x79AF" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + } + ] +} diff --git a/agentworking/readyos-bank-refactor/headroom_current_optimized.json b/agentworking/readyos-bank-refactor/headroom_current_optimized.json new file mode 100644 index 0000000..5727816 --- /dev/null +++ b/agentworking/readyos-bank-refactor/headroom_current_optimized.json @@ -0,0 +1,1242 @@ +{ + "app_window_end": "0xC7FF", + "app_window_start": "0x1000", + "maps": [ + { + "app_window_end": "0xC7FF", + "app_window_headroom": 5220, + "bss_bytes": 2509, + "code_ro_init_bytes": 39325, + "data_bytes": 50, + "heap_capacity": 5108, + "heap_end": "0xC78F", + "heap_start": "0xB39C", + "main_segment_total": 41884, + "map": "obj/launcher.map", + "name": "launcher", + "runtime_end": "0xB39B", + "segments": { + "BSS": { + "end": "0xB39B", + "size": 2509, + "start": "0xA9CF" + }, + "CODE": { + "end": "0xA3BB", + "size": 37769, + "start": "0x1033" + }, + "DATA": { + "end": "0xA98C", + "size": 50, + "start": "0xA95B" + }, + "INIT": { + "end": "0xA9A8", + "size": 28, + "start": "0xA98D" + }, + "ONCE": { + "end": "0xA9CE", + "size": 38, + "start": "0xA9A9" + }, + "RODATA": { + "end": "0xA95A", + "size": 1439, + "start": "0xA3BC" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 12682, + "bss_bytes": 9880, + "code_ro_init_bytes": 24408, + "data_bytes": 134, + "heap_capacity": 12570, + "heap_end": "0xC78F", + "heap_start": "0x9676", + "main_segment_total": 34422, + "map": "obj/editor.map", + "name": "editor", + "runtime_end": "0x9675", + "segments": { + "BSS": { + "end": "0x9675", + "size": 9880, + "start": "0x6FDE" + }, + "CODE": { + "end": "0x6BD7", + "size": 23461, + "start": "0x1033" + }, + "DATA": { + "end": "0x6F9B", + "size": 134, + "start": "0x6F16" + }, + "INIT": { + "end": "0x6FB7", + "size": 28, + "start": "0x6F9C" + }, + "ONCE": { + "end": "0x6FDD", + "size": 38, + "start": "0x6FB8" + }, + "RODATA": { + "end": "0x6F15", + "size": 830, + "start": "0x6BD8" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9780, + "bss_bytes": 6047, + "code_ro_init_bytes": 31055, + "data_bytes": 222, + "heap_capacity": 9668, + "heap_end": "0xC78F", + "heap_start": "0xA1CC", + "main_segment_total": 37324, + "map": "obj/quicknotes.map", + "name": "quicknotes", + "runtime_end": "0xA1CB", + "segments": { + "BSS": { + "end": "0xA1CB", + "size": 6047, + "start": "0x8A2D" + }, + "CODE": { + "end": "0x8557", + "size": 29989, + "start": "0x1033" + }, + "DATA": { + "end": "0x89EA", + "size": 222, + "start": "0x890D" + }, + "INIT": { + "end": "0x8A06", + "size": 28, + "start": "0x89EB" + }, + "ONCE": { + "end": "0x8A2C", + "size": 38, + "start": "0x8A07" + }, + "RODATA": { + "end": "0x890C", + "size": 949, + "start": "0x8558" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 8228, + "bss_bytes": 1321, + "code_ro_init_bytes": 37397, + "data_bytes": 158, + "heap_capacity": 8116, + "heap_end": "0xC78F", + "heap_start": "0xA7DC", + "main_segment_total": 38876, + "map": "obj/calcplus.map", + "name": "calcplus", + "runtime_end": "0xA7DB", + "segments": { + "BSS": { + "end": "0xA7DB", + "size": 1321, + "start": "0xA2B3" + }, + "CODE": { + "end": "0x9D3D", + "size": 36107, + "start": "0x1033" + }, + "DATA": { + "end": "0xA270", + "size": 158, + "start": "0xA1D3" + }, + "INIT": { + "end": "0xA28C", + "size": 28, + "start": "0xA271" + }, + "ONCE": { + "end": "0xA2B2", + "size": 38, + "start": "0xA28D" + }, + "RODATA": { + "end": "0xA1D2", + "size": 1173, + "start": "0x9D3E" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 34130, + "bss_bytes": 101, + "code_ro_init_bytes": 12827, + "data_bytes": 46, + "heap_capacity": 34018, + "heap_end": "0xC78F", + "heap_start": "0x42AE", + "main_segment_total": 12974, + "map": "obj/hexview.map", + "name": "hexview", + "runtime_end": "0x42AD", + "segments": { + "BSS": { + "end": "0x42AD", + "size": 101, + "start": "0x4249" + }, + "CODE": { + "end": "0x3FE6", + "size": 12212, + "start": "0x1033" + }, + "DATA": { + "end": "0x4206", + "size": 46, + "start": "0x41D9" + }, + "INIT": { + "end": "0x4222", + "size": 28, + "start": "0x4207" + }, + "ONCE": { + "end": "0x4248", + "size": 38, + "start": "0x4223" + }, + "RODATA": { + "end": "0x41D8", + "size": 498, + "start": "0x3FE7" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 15115, + "bss_bytes": 1062, + "code_ro_init_bytes": 30881, + "data_bytes": 46, + "heap_capacity": 15002, + "heap_end": "0xC78F", + "heap_start": "0x8CF6", + "main_segment_total": 31989, + "map": "obj/clipmgr.map", + "name": "clipmgr", + "runtime_end": "0x8CF4", + "segments": { + "BSS": { + "end": "0x8CF4", + "size": 1062, + "start": "0x88CF" + }, + "CODE": { + "end": "0x8514", + "size": 29922, + "start": "0x1033" + }, + "DATA": { + "end": "0x888C", + "size": 46, + "start": "0x885F" + }, + "INIT": { + "end": "0x88A8", + "size": 28, + "start": "0x888D" + }, + "ONCE": { + "end": "0x88CE", + "size": 38, + "start": "0x88A9" + }, + "RODATA": { + "end": "0x885E", + "size": 842, + "start": "0x8515" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 31694, + "bss_bytes": 221, + "code_ro_init_bytes": 15143, + "data_bytes": 46, + "heap_capacity": 31582, + "heap_end": "0xC78F", + "heap_start": "0x4C32", + "main_segment_total": 15410, + "map": "obj/reuviewer.map", + "name": "reuviewer", + "runtime_end": "0x4C31", + "segments": { + "BSS": { + "end": "0x4C31", + "size": 221, + "start": "0x4B55" + }, + "CODE": { + "end": "0x498D", + "size": 14683, + "start": "0x1033" + }, + "DATA": { + "end": "0x4B12", + "size": 46, + "start": "0x4AE5" + }, + "INIT": { + "end": "0x4B2E", + "size": 28, + "start": "0x4B13" + }, + "ONCE": { + "end": "0x4B54", + "size": 38, + "start": "0x4B2F" + }, + "RODATA": { + "end": "0x4AE4", + "size": 343, + "start": "0x498E" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 30596, + "bss_bytes": 277, + "code_ro_init_bytes": 16184, + "data_bytes": 47, + "heap_capacity": 30484, + "heap_end": "0xC78F", + "heap_start": "0x507C", + "main_segment_total": 16508, + "map": "obj/sysinfo.map", + "name": "sysinfo", + "runtime_end": "0x507B", + "segments": { + "BSS": { + "end": "0x507B", + "size": 277, + "start": "0x4F67" + }, + "CODE": { + "end": "0x4ACD", + "size": 15003, + "start": "0x1033" + }, + "DATA": { + "end": "0x4F24", + "size": 47, + "start": "0x4EF6" + }, + "INIT": { + "end": "0x4F40", + "size": 28, + "start": "0x4F25" + }, + "ONCE": { + "end": "0x4F66", + "size": 38, + "start": "0x4F41" + }, + "RODATA": { + "end": "0x4EF5", + "size": 1064, + "start": "0x4ACE" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 6886, + "bss_bytes": 8927, + "code_ro_init_bytes": 31140, + "data_bytes": 151, + "heap_capacity": 6774, + "heap_end": "0xC78F", + "heap_start": "0xAD1A", + "main_segment_total": 40218, + "map": "obj/tasklist.map", + "name": "tasklist", + "runtime_end": "0xAD19", + "segments": { + "BSS": { + "end": "0xAD19", + "size": 8927, + "start": "0x8A3B" + }, + "CODE": { + "end": "0x862C", + "size": 30202, + "start": "0x1033" + }, + "DATA": { + "end": "0x89F8", + "size": 151, + "start": "0x8962" + }, + "INIT": { + "end": "0x8A14", + "size": 28, + "start": "0x89F9" + }, + "ONCE": { + "end": "0x8A3A", + "size": 38, + "start": "0x8A15" + }, + "RODATA": { + "end": "0x8961", + "size": 821, + "start": "0x862D" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 12928, + "bss_bytes": 4397, + "code_ro_init_bytes": 29717, + "data_bytes": 62, + "heap_capacity": 12816, + "heap_end": "0xC78F", + "heap_start": "0x9580", + "main_segment_total": 34176, + "map": "obj/simplefiles.map", + "name": "simplefiles", + "runtime_end": "0x957F", + "segments": { + "BSS": { + "end": "0x957F", + "size": 4397, + "start": "0x8453" + }, + "CODE": { + "end": "0x7F05", + "size": 28371, + "start": "0x1033" + }, + "DATA": { + "end": "0x8410", + "size": 62, + "start": "0x83D3" + }, + "INIT": { + "end": "0x842C", + "size": 28, + "start": "0x8411" + }, + "ONCE": { + "end": "0x8452", + "size": 38, + "start": "0x842D" + }, + "RODATA": { + "end": "0x83D2", + "size": 1229, + "start": "0x7F06" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9988, + "bss_bytes": 2142, + "code_ro_init_bytes": 34736, + "data_bytes": 238, + "heap_capacity": 9876, + "heap_end": "0xC78F", + "heap_start": "0xA0FC", + "main_segment_total": 37116, + "map": "obj/simplecells.map", + "name": "simplecells", + "runtime_end": "0xA0FB", + "segments": { + "BSS": { + "end": "0xA0FB", + "size": 2142, + "start": "0x989E" + }, + "CODE": { + "end": "0x90B3", + "size": 32897, + "start": "0x1033" + }, + "DATA": { + "end": "0x985B", + "size": 238, + "start": "0x976E" + }, + "INIT": { + "end": "0x9877", + "size": 28, + "start": "0x985C" + }, + "ONCE": { + "end": "0x989D", + "size": 38, + "start": "0x9878" + }, + "RODATA": { + "end": "0x976D", + "size": 1722, + "start": "0x90B4" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 28983, + "bss_bytes": 1203, + "code_ro_init_bytes": 16872, + "data_bytes": 46, + "heap_capacity": 28870, + "heap_end": "0xC78F", + "heap_start": "0x56CA", + "main_segment_total": 18121, + "map": "obj/game2048.map", + "name": "game2048", + "runtime_end": "0x56C8", + "segments": { + "BSS": { + "end": "0x56C8", + "size": 1203, + "start": "0x5216" + }, + "CODE": { + "end": "0x5075", + "size": 16451, + "start": "0x1033" + }, + "DATA": { + "end": "0x51D3", + "size": 46, + "start": "0x51A6" + }, + "INIT": { + "end": "0x51EF", + "size": 28, + "start": "0x51D4" + }, + "ONCE": { + "end": "0x5215", + "size": 38, + "start": "0x51F0" + }, + "RODATA": { + "end": "0x51A5", + "size": 304, + "start": "0x5076" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 22570, + "bss_bytes": 4276, + "code_ro_init_bytes": 20212, + "data_bytes": 46, + "heap_capacity": 22458, + "heap_end": "0xC78F", + "heap_start": "0x6FD6", + "main_segment_total": 24534, + "map": "obj/deminer.map", + "name": "deminer", + "runtime_end": "0x6FD5", + "segments": { + "BSS": { + "end": "0x6FD5", + "size": 4276, + "start": "0x5F22" + }, + "CODE": { + "end": "0x5BC6", + "size": 19348, + "start": "0x1033" + }, + "DATA": { + "end": "0x5EDF", + "size": 46, + "start": "0x5EB2" + }, + "INIT": { + "end": "0x5EFB", + "size": 28, + "start": "0x5EE0" + }, + "ONCE": { + "end": "0x5F21", + "size": 38, + "start": "0x5EFC" + }, + "RODATA": { + "end": "0x5EB1", + "size": 747, + "start": "0x5BC7" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 30629, + "bss_bytes": 908, + "code_ro_init_bytes": 15481, + "data_bytes": 86, + "heap_capacity": 30516, + "heap_end": "0xC78F", + "heap_start": "0x505C", + "main_segment_total": 16475, + "map": "obj/sidetris.map", + "name": "sidetris", + "runtime_end": "0x505A", + "segments": { + "BSS": { + "end": "0x505A", + "size": 908, + "start": "0x4CCF" + }, + "CODE": { + "end": "0x4833", + "size": 14337, + "start": "0x1033" + }, + "DATA": { + "end": "0x4C8C", + "size": 86, + "start": "0x4C37" + }, + "INIT": { + "end": "0x4CA8", + "size": 28, + "start": "0x4C8D" + }, + "ONCE": { + "end": "0x4CCE", + "size": 38, + "start": "0x4CA9" + }, + "RODATA": { + "end": "0x4C36", + "size": 1027, + "start": "0x4834" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 9661, + "bss_bytes": 4803, + "code_ro_init_bytes": 32316, + "data_bytes": 324, + "heap_capacity": 9548, + "heap_end": "0xC78F", + "heap_start": "0xA244", + "main_segment_total": 37443, + "map": "obj/cal26.map", + "name": "cal26", + "runtime_end": "0xA242", + "segments": { + "BSS": { + "end": "0xA242", + "size": 4803, + "start": "0x8F80" + }, + "CODE": { + "end": "0x86AC", + "size": 30330, + "start": "0x1033" + }, + "DATA": { + "end": "0x8F3D", + "size": 324, + "start": "0x8DFA" + }, + "INIT": { + "end": "0x8F59", + "size": 28, + "start": "0x8F3E" + }, + "ONCE": { + "end": "0x8F7F", + "size": 38, + "start": "0x8F5A" + }, + "RODATA": { + "end": "0x8DF9", + "size": 1869, + "start": "0x86AD" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 2058, + "bss_bytes": 6327, + "code_ro_init_bytes": 38587, + "data_bytes": 132, + "heap_capacity": 1946, + "heap_end": "0xC78F", + "heap_start": "0xBFF6", + "main_segment_total": 45046, + "map": "obj/dizzy.map", + "name": "dizzy", + "runtime_end": "0xBFF5", + "segments": { + "BSS": { + "end": "0xBFF5", + "size": 6327, + "start": "0xA73F" + }, + "CODE": { + "end": "0xA1AF", + "size": 37245, + "start": "0x1033" + }, + "DATA": { + "end": "0xA6FC", + "size": 132, + "start": "0xA679" + }, + "INIT": { + "end": "0xA718", + "size": 28, + "start": "0xA6FD" + }, + "ONCE": { + "end": "0xA73E", + "size": 38, + "start": "0xA719" + }, + "RODATA": { + "end": "0xA678", + "size": 1225, + "start": "0xA1B0" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 19800, + "bss_bytes": 5351, + "code_ro_init_bytes": 21906, + "data_bytes": 47, + "heap_capacity": 19688, + "heap_end": "0xC78F", + "heap_start": "0x7AA8", + "main_segment_total": 27304, + "map": "obj/readyirc.map", + "name": "readyirc", + "runtime_end": "0x7AA7", + "segments": { + "BSS": { + "end": "0x7AA7", + "size": 5351, + "start": "0x65C1" + }, + "CODE": { + "end": "0x61B3", + "size": 20865, + "start": "0x1033" + }, + "DATA": { + "end": "0x657E", + "size": 47, + "start": "0x6550" + }, + "INIT": { + "end": "0x659A", + "size": 28, + "start": "0x657F" + }, + "ONCE": { + "end": "0x65C0", + "size": 38, + "start": "0x659B" + }, + "RODATA": { + "end": "0x654F", + "size": 924, + "start": "0x61B4" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18666, + "bss_bytes": 6909, + "code_ro_init_bytes": 21302, + "data_bytes": 227, + "heap_capacity": 18554, + "heap_end": "0xC78F", + "heap_start": "0x7F16", + "main_segment_total": 28438, + "map": "obj/rirc-rrnet.map", + "name": "rirc-rrnet", + "runtime_end": "0x7F15", + "segments": { + "BSS": { + "end": "0x7F15", + "size": 6909, + "start": "0x6419" + }, + "CODE": { + "end": "0x6015", + "size": 20451, + "start": "0x1033" + }, + "DATA": { + "end": "0x63D6", + "size": 227, + "start": "0x62F4" + }, + "INIT": { + "end": "0x63F2", + "size": 28, + "start": "0x63D7" + }, + "ONCE": { + "end": "0x6418", + "size": 38, + "start": "0x63F3" + }, + "RODATA": { + "end": "0x62F3", + "size": 734, + "start": "0x6016" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 1537, + "bss_bytes": 0, + "code_ro_init_bytes": 9290, + "data_bytes": 0, + "main_segment_total": 2954, + "map": "obj/readybasic.map", + "name": "readybasic", + "runtime_end": "0xC1FE", + "segments": { + "BRIDGE": { + "end": "0xC1FE", + "size": 511, + "start": "0xC000" + }, + "ENTRY": { + "end": "0x11FF", + "size": 512, + "start": "0x1000" + }, + "HIDDEN": { + "end": "0xA78A", + "size": 1931, + "start": "0xA000" + } + } + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 21805, + "bss_bytes": 2708, + "code_ro_init_bytes": 22520, + "data_bytes": 71, + "heap_capacity": 21692, + "heap_end": "0xC78F", + "heap_start": "0x72D4", + "main_segment_total": 25299, + "map": "obj/ucitest.map", + "name": "ucitest", + "runtime_end": "0x72D2", + "segments": { + "BSS": { + "end": "0x72D2", + "size": 2708, + "start": "0x683F" + }, + "CODE": { + "end": "0x5933", + "size": 18689, + "start": "0x1033" + }, + "DATA": { + "end": "0x67FC", + "size": 71, + "start": "0x67B6" + }, + "INIT": { + "end": "0x6818", + "size": 28, + "start": "0x67FD" + }, + "ONCE": { + "end": "0x683E", + "size": 38, + "start": "0x6819" + }, + "RODATA": { + "end": "0x67B5", + "size": 3714, + "start": "0x5934" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 22871, + "bss_bytes": 48, + "code_ro_init_bytes": 24139, + "data_bytes": 46, + "heap_capacity": 22758, + "heap_end": "0xC78F", + "heap_start": "0x6EAA", + "main_segment_total": 24233, + "map": "obj/readme.map", + "name": "readme", + "runtime_end": "0x6EA8", + "segments": { + "BSS": { + "end": "0x6EA8", + "size": 48, + "start": "0x6E79" + }, + "CODE": { + "end": "0x3950", + "size": 10526, + "start": "0x1033" + }, + "DATA": { + "end": "0x6E36", + "size": 46, + "start": "0x6E09" + }, + "INIT": { + "end": "0x6E52", + "size": 28, + "start": "0x6E37" + }, + "ONCE": { + "end": "0x6E78", + "size": 38, + "start": "0x6E53" + }, + "RODATA": { + "end": "0x6E08", + "size": 13496, + "start": "0x3951" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18419, + "bss_bytes": 426, + "code_ro_init_bytes": 28188, + "data_bytes": 71, + "heap_capacity": 3568, + "main_segment_total": 28685, + "map": "obj/readyshell.map", + "name": "readyshell", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3568, + "heap_start": "0x800E", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x800C", + "segments": { + "BSS": { + "end": "0x800C", + "size": 426, + "start": "0x7E63" + }, + "CODE": { + "end": "0x79D5", + "size": 27043, + "start": "0x1033" + }, + "DATA": { + "end": "0x7E0E", + "size": 71, + "start": "0x7DC8" + }, + "INIT": { + "end": "0x7E2A", + "size": 28, + "start": "0x7E0F" + }, + "ONCE": { + "end": "0x7E62", + "size": 56, + "start": "0x7E2B" + }, + "RODATA": { + "end": "0x7DC7", + "size": 1010, + "start": "0x79D6" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18033, + "bss_bytes": 1978, + "code_ro_init_bytes": 27043, + "data_bytes": 50, + "heap_capacity": 17920, + "heap_end": "0xC78F", + "heap_start": "0x8190", + "main_segment_total": 29071, + "map": "obj/launcher_easyflash.map", + "name": "launcher_easyflash", + "runtime_end": "0x818E", + "segments": { + "BSS": { + "end": "0x818E", + "size": 1978, + "start": "0x79D5" + }, + "CODE": { + "end": "0x711B", + "size": 24809, + "start": "0x1033" + }, + "DATA": { + "end": "0x7992", + "size": 50, + "start": "0x7961" + }, + "INIT": { + "end": "0x79AE", + "size": 28, + "start": "0x7993" + }, + "ONCE": { + "end": "0x79D4", + "size": 38, + "start": "0x79AF" + }, + "RODATA": { + "end": "0x7960", + "size": 2117, + "start": "0x711C" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + }, + "stack_reserve": 112 + }, + { + "app_window_end": "0xC7FF", + "app_window_headroom": 18458, + "bss_bytes": 426, + "code_ro_init_bytes": 28149, + "data_bytes": 71, + "heap_capacity": 3608, + "main_segment_total": 28646, + "map": "obj/readyshell_easyflash.map", + "name": "readyshell_easyflash", + "readyshell": { + "heap_end": "0x8DFD", + "heap_size": 3608, + "heap_start": "0x7FE6", + "himem": "0xC600", + "overlay_loadaddr": "0x8DFE", + "overlay_start": "0x8E00", + "overlay_window": 14336 + }, + "runtime_end": "0x7FE5", + "segments": { + "BSS": { + "end": "0x7FE5", + "size": 426, + "start": "0x7E3C" + }, + "CODE": { + "end": "0x79AE", + "size": 27004, + "start": "0x1033" + }, + "DATA": { + "end": "0x7DE7", + "size": 71, + "start": "0x7DA1" + }, + "INIT": { + "end": "0x7E03", + "size": 28, + "start": "0x7DE8" + }, + "ONCE": { + "end": "0x7E3B", + "size": 56, + "start": "0x7E04" + }, + "RODATA": { + "end": "0x7DA0", + "size": 1010, + "start": "0x79AF" + }, + "STARTUP": { + "end": "0x1032", + "size": 51, + "start": "0x1000" + } + } + } + ] +} diff --git a/agentworking/readyos-bank-refactor/regular-preload-debug-drive9.d81 b/agentworking/readyos-bank-refactor/regular-preload-debug-drive9.d81 new file mode 100644 index 0000000..356c19f Binary files /dev/null and b/agentworking/readyos-bank-refactor/regular-preload-debug-drive9.d81 differ diff --git a/agentworking/readyos-bank-refactor/regular-preload-debug.mon b/agentworking/readyos-bank-refactor/regular-preload-debug.mon new file mode 100644 index 0000000..1eed923 --- /dev/null +++ b/agentworking/readyos-bank-refactor/regular-preload-debug.mon @@ -0,0 +1,16 @@ +break $6c4f +x +m $c800 $c83f +> $df02 00 04 00 00 20 40 00 +> $df01 91 +m $0400 $043f +> $df02 00 04 40 b8 20 40 00 +> $df01 91 +m $0400 $043f +> $df02 00 04 00 00 21 40 00 +> $df01 91 +m $0400 $043f +> $df02 00 04 40 b8 21 40 00 +> $df01 91 +m $0400 $043f +q diff --git a/agentworking/readyos-bank-refactor/regular-preload-debug.reu b/agentworking/readyos-bank-refactor/regular-preload-debug.reu new file mode 100644 index 0000000..ece1779 Binary files /dev/null and b/agentworking/readyos-bank-refactor/regular-preload-debug.reu differ diff --git a/bin/boot.prg b/bin/boot.prg index 6278438..7031154 100644 Binary files a/bin/boot.prg and b/bin/boot.prg differ diff --git a/bin/boot_easyflash_roml.bin b/bin/boot_easyflash_roml.bin index 77957c0..79a3f9c 100644 Binary files a/bin/boot_easyflash_roml.bin and b/bin/boot_easyflash_roml.bin differ diff --git a/bin/cal26.prg b/bin/cal26.prg index ef0282c..772467f 100644 Binary files a/bin/cal26.prg and b/bin/cal26.prg differ diff --git a/bin/calcplus.prg b/bin/calcplus.prg index 8f68363..ae6749a 100644 Binary files a/bin/calcplus.prg and b/bin/calcplus.prg differ diff --git a/bin/clipmgr.prg b/bin/clipmgr.prg index fb96aec..4d9194c 100644 Binary files a/bin/clipmgr.prg and b/bin/clipmgr.prg differ diff --git a/bin/deminer.prg b/bin/deminer.prg index 0bde87d..f442865 100644 Binary files a/bin/deminer.prg and b/bin/deminer.prg differ diff --git a/bin/dizzy.prg b/bin/dizzy.prg index 067e17a..c15b9cf 100644 Binary files a/bin/dizzy.prg and b/bin/dizzy.prg differ diff --git a/bin/easyflash_shim.bin b/bin/easyflash_shim.bin index 2a845be..52935a9 100644 Binary files a/bin/easyflash_shim.bin and b/bin/easyflash_shim.bin differ diff --git a/bin/editor.prg b/bin/editor.prg index f00d7f9..79552a5 100644 Binary files a/bin/editor.prg and b/bin/editor.prg differ diff --git a/bin/game2048.prg b/bin/game2048.prg index 1049005..b04e48d 100644 Binary files a/bin/game2048.prg and b/bin/game2048.prg differ diff --git a/bin/hexview.prg b/bin/hexview.prg index e164aa6..080969d 100644 Binary files a/bin/hexview.prg and b/bin/hexview.prg differ diff --git a/bin/launcher.prg b/bin/launcher.prg index a87c899..e588569 100644 Binary files a/bin/launcher.prg and b/bin/launcher.prg differ diff --git a/bin/launcher_easyflash.prg b/bin/launcher_easyflash.prg index 6304198..313b790 100644 Binary files a/bin/launcher_easyflash.prg and b/bin/launcher_easyflash.prg differ diff --git a/bin/quicknotes.prg b/bin/quicknotes.prg index 90e02de..134c2e5 100644 Binary files a/bin/quicknotes.prg and b/bin/quicknotes.prg differ diff --git a/bin/readme.prg b/bin/readme.prg index 266ed11..dfd953e 100644 Binary files a/bin/readme.prg and b/bin/readme.prg differ diff --git a/bin/readybasic.prg b/bin/readybasic.prg index 5abc38e..2b55f35 100644 Binary files a/bin/readybasic.prg and b/bin/readybasic.prg differ diff --git a/bin/readyirc.prg b/bin/readyirc.prg index 4ceb211..3606ed4 100644 Binary files a/bin/readyirc.prg and b/bin/readyirc.prg differ diff --git a/bin/readyshell.prg b/bin/readyshell.prg index ced4da9..6648150 100644 Binary files a/bin/readyshell.prg and b/bin/readyshell.prg differ diff --git a/bin/readyshell_easyflash.prg b/bin/readyshell_easyflash.prg index 589bfb2..3d5d567 100644 Binary files a/bin/readyshell_easyflash.prg and b/bin/readyshell_easyflash.prg differ diff --git a/bin/reuviewer.prg b/bin/reuviewer.prg index ccaaa6e..41d9111 100644 Binary files a/bin/reuviewer.prg and b/bin/reuviewer.prg differ diff --git a/bin/rirc-rrnet.prg b/bin/rirc-rrnet.prg index 5e4f42b..5931bb4 100644 Binary files a/bin/rirc-rrnet.prg and b/bin/rirc-rrnet.prg differ diff --git a/bin/rscat.prg b/bin/rscat.prg index cbd62b8..e347b1f 100644 Binary files a/bin/rscat.prg and b/bin/rscat.prg differ diff --git a/bin/rscopy.prg b/bin/rscopy.prg index 26d64d0..082d84d 100644 Binary files a/bin/rscopy.prg and b/bin/rscopy.prg differ diff --git a/bin/rsdrvilst.prg b/bin/rsdrvilst.prg index 8f89310..553a981 100644 Binary files a/bin/rsdrvilst.prg and b/bin/rsdrvilst.prg differ diff --git a/bin/rsedit.prg b/bin/rsedit.prg index d65f76b..05169ff 100644 Binary files a/bin/rsedit.prg and b/bin/rsedit.prg differ diff --git a/bin/rsfops.prg b/bin/rsfops.prg index 2028fd5..c6695b2 100644 Binary files a/bin/rsfops.prg and b/bin/rsfops.prg differ diff --git a/bin/rsldv.prg b/bin/rsldv.prg index 7345d80..2fbd4ac 100644 Binary files a/bin/rsldv.prg and b/bin/rsldv.prg differ diff --git a/bin/rsparser.prg b/bin/rsparser.prg index 886bb5c..b3fd728 100644 Binary files a/bin/rsparser.prg and b/bin/rsparser.prg differ diff --git a/bin/rsstv.prg b/bin/rsstv.prg index a348b6d..d5d78b1 100644 Binary files a/bin/rsstv.prg and b/bin/rsstv.prg differ diff --git a/bin/rsvm.prg b/bin/rsvm.prg index c572899..efdc27a 100644 Binary files a/bin/rsvm.prg and b/bin/rsvm.prg differ diff --git a/bin/sidetris.prg b/bin/sidetris.prg index 9eb212b..01c50b1 100644 Binary files a/bin/sidetris.prg and b/bin/sidetris.prg differ diff --git a/bin/simplecells.prg b/bin/simplecells.prg index c115418..65d4582 100644 Binary files a/bin/simplecells.prg and b/bin/simplecells.prg differ diff --git a/bin/simplefiles.prg b/bin/simplefiles.prg index 1320636..97d0b43 100644 Binary files a/bin/simplefiles.prg and b/bin/simplefiles.prg differ diff --git a/bin/sysinfo.prg b/bin/sysinfo.prg index cf4d33d..76275b3 100644 Binary files a/bin/sysinfo.prg and b/bin/sysinfo.prg differ diff --git a/bin/tasklist.prg b/bin/tasklist.prg index 20e8fc4..013f26f 100644 Binary files a/bin/tasklist.prg and b/bin/tasklist.prg differ diff --git a/bin/ucitest.prg b/bin/ucitest.prg index 6decb30..58e0967 100644 Binary files a/bin/ucitest.prg and b/bin/ucitest.prg differ diff --git a/build/uci_dma_probe/readback/probe.prg b/build/uci_dma_probe/readback/probe.prg new file mode 100644 index 0000000..52eb98c Binary files /dev/null and b/build/uci_dma_probe/readback/probe.prg differ diff --git a/build/uci_dma_probe/readback/udma1.prg b/build/uci_dma_probe/readback/udma1.prg new file mode 100644 index 0000000..c7825b7 Binary files /dev/null and b/build/uci_dma_probe/readback/udma1.prg differ diff --git a/build/uci_dma_probe/readback/udma2.prg b/build/uci_dma_probe/readback/udma2.prg new file mode 100644 index 0000000..0848ea6 Binary files /dev/null and b/build/uci_dma_probe/readback/udma2.prg differ diff --git a/build/uci_dma_probe/readback/udma3.prg b/build/uci_dma_probe/readback/udma3.prg new file mode 100644 index 0000000..678f32f Binary files /dev/null and b/build/uci_dma_probe/readback/udma3.prg differ diff --git a/build/uci_dma_probe/readback_d64/probe.prg b/build/uci_dma_probe/readback_d64/probe.prg new file mode 100644 index 0000000..660849e Binary files /dev/null and b/build/uci_dma_probe/readback_d64/probe.prg differ diff --git a/build/uci_dma_probe/readback_d64/udma1.prg b/build/uci_dma_probe/readback_d64/udma1.prg new file mode 100644 index 0000000..c7825b7 Binary files /dev/null and b/build/uci_dma_probe/readback_d64/udma1.prg differ diff --git a/build/uci_dma_probe/uci_dma_probe.d64 b/build/uci_dma_probe/uci_dma_probe.d64 new file mode 100644 index 0000000..bd182b9 Binary files /dev/null and b/build/uci_dma_probe/uci_dma_probe.d64 differ diff --git a/build/uci_dma_probe/uci_dma_probe.d81 b/build/uci_dma_probe/uci_dma_probe.d81 new file mode 100644 index 0000000..cefc870 Binary files /dev/null and b/build/uci_dma_probe/uci_dma_probe.d81 differ diff --git a/build/uci_dma_probe/uci_dma_probe.prg b/build/uci_dma_probe/uci_dma_probe.prg new file mode 100644 index 0000000..52eb98c Binary files /dev/null and b/build/uci_dma_probe/uci_dma_probe.prg differ diff --git a/build/uci_dma_probe/udma1.prg b/build/uci_dma_probe/udma1.prg new file mode 100644 index 0000000..c7825b7 Binary files /dev/null and b/build/uci_dma_probe/udma1.prg differ diff --git a/build/uci_dma_probe/udma2.prg b/build/uci_dma_probe/udma2.prg new file mode 100644 index 0000000..0848ea6 Binary files /dev/null and b/build/uci_dma_probe/udma2.prg differ diff --git a/build/uci_dma_probe/udma3.prg b/build/uci_dma_probe/udma3.prg new file mode 100644 index 0000000..678f32f Binary files /dev/null and b/build/uci_dma_probe/udma3.prg differ diff --git a/build/uci_timing/apps_cfg_petscii.seq b/build/uci_timing/apps_cfg_petscii.seq new file mode 100644 index 0000000..fbb41ef --- /dev/null +++ b/build/uci_timing/apps_cfg_petscii.seq @@ -0,0 +1 @@ +[SYSTEM] VARIANT_NAME=PRECOG D81 VARIANT_BOOT_NAME=PRECOG D81 REU_BANK_SKIP=32 [LAUNCHER] LOAD_ALL_TO_REU=0 RUNAPPFIRST= C64U_IMAGE_PATH=/USB1/READYOS.D81 [APPS] 8:EDITOR:EDITOR:1 TEXT EDITOR WITH CLIPBOARD 8:READYSHELL:READYSHELL (BETA):2:RSOVL+ COMMAND SHELL POC SCAFFOLD RSPARSER@0:0000,RSVM@0:3800,RSDRVILST@0:7000,RSLDV@1:0000,RSSTV@0:A800,RSFOPS@1:3800,RSCAT@1:7000,RSCOPY@1:A800,RSEDIT@2:0000 8:SIMPLEFILES:SIMPLE FILES DUAL PANE FILE MANAGER AND SEQ VIEWER 8:CLIPMGR:CLIPBOARD MANAGE CLIPBOARD ITEMS 8:READYBASIC:READY BASIC (ALPHA):3:RBCORE+ SCOPED BASIC V2 BRIDGE POC RBCORE,RBCODE 8:CAL26:CALENDAR 26 CALENDAR FOR 2026 WITH APPOINTMENTS 8:TASKLIST:TASK LIST OUTLINER WITH NOTES AND SEARCH 8:REUVIEWER:REU VIEWER VIEW REU MEMORY USAGE 8:SYSINFO:SYSTEM INFO SYSTEM, REU, AND ULTIMATE STATUS 8:QUICKNOTES:QUICKNOTES REU-BACKED NOTE EDITOR 8:CALCPLUS:CALC PLUS KEYBOARD-FIRST EXPRESSION CALCULATOR 8:HEXVIEW:HEX VIEWER BROWSE MEMORY IN HEX FORMAT 8:SIMPLECELLS:SIMPLE CELLS (ALPHA) SPREADSHEET WITH FORMULAS AND COLORS 8:GAME2048:2048 GAME 2048 TILE PUZZLE 8:DEMINER:DEMINER MINESWEEPER-STYLE PUZZLE 8:DIZZY:DIZZY KANBAN FIZZY INSPIRED KANBAN APP 8:READYIRC:READYIRC ULTIMATE TCP IRC CLIENT 8:UCITEST:UCI TESTER ULTIMATE COMMAND INTERFACE LAB 8:RIRC-RRNET:READYIRC RRNET RR-NET TCP IRC CLIENT 8:README:READ.ME READYOS, ULTIMATE BUDDY, PRECOG POC OS \ No newline at end of file diff --git a/build/uci_timing/files_to_write.txt b/build/uci_timing/files_to_write.txt new file mode 100644 index 0000000..c76ae55 --- /dev/null +++ b/build/uci_timing/files_to_write.txt @@ -0,0 +1,29 @@ +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/editor.prg editor +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/readyshell.prg readyshell +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/rsparser.prg rsparser +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/rsvm.prg rsvm +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/rsdrvilst.prg rsdrvilst +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/rsldv.prg rsldv +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/rsstv.prg rsstv +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/rsfops.prg rsfops +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/rscat.prg rscat +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/rscopy.prg rscopy +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/rsedit.prg rsedit +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/simplefiles.prg simplefiles +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/clipmgr.prg clipmgr +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/readybasic.prg readybasic +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/cal26.prg cal26 +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/tasklist.prg tasklist +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/reuviewer.prg reuviewer +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/sysinfo.prg sysinfo +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/quicknotes.prg quicknotes +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/calcplus.prg calcplus +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/hexview.prg hexview +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/simplecells.prg simplecells +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/game2048.prg game2048 +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/deminer.prg deminer +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/dizzy.prg dizzy +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/readyirc.prg readyirc +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/ucitest.prg ucitest +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/rirc-rrnet.prg rirc-rrnet +/Users/karlprosserpp/dev/c64projects/readyosprecog/bin/readme.prg readme diff --git a/build/uci_timing/latest_1mhz_fast_raw_result.json b/build/uci_timing/latest_1mhz_fast_raw_result.json new file mode 100644 index 0000000..5260230 --- /dev/null +++ b/build/uci_timing/latest_1mhz_fast_raw_result.json @@ -0,0 +1,96 @@ +{ + "avg_header_tax_ms": 0, + "dir_probe": { + "data_len": 0, + "data_prefix_hex": "00000000", + "status_len": 0, + "status_prefix": "" + }, + "done": 1, + "dump": "/private/tmp/uci_timing_probe_c64u_rest_capture/probe_results_3000.bin", + "failures": 0, + "first_failure": { + "debug_status0": 0, + "debug_status1": 0, + "item": 0, + "launcher_error": 0, + "name": "" + }, + "header_tax_ms": 0, + "items": 29, + "loaded_kb": 607, + "max_load_ms": 3350, + "max_load_name": "editor", + "phases_ms": { + "first_load": 3350, + "subsequent_loads": 30383 + }, + "raw_phase_ticks": { + "first_load": 201, + "subsequent_loads": 1823 + }, + "raw_stage_ticks": { + "cd_dir": 22, + "cd_image": 22, + "cd_root": 20, + "close": 567, + "detect": 0, + "drvinfo": 19, + "file_info": 0, + "identify": 20, + "load_reu": 701, + "mount": 31, + "open": 620, + "read_header": 0, + "seek_payload": 0 + }, + "raw_subsequent_stage_ticks": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 547, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 676, + "mount": 0, + "open": 598, + "read_header": 0, + "seek_payload": 0 + }, + "raw_total_ticks": 2024, + "stages_ms": { + "cd_dir": 367, + "cd_image": 367, + "cd_root": 333, + "close": 9450, + "detect": 0, + "drvinfo": 317, + "file_info": 0, + "identify": 333, + "load_reu": 11683, + "mount": 517, + "open": 10333, + "read_header": 0, + "seek_payload": 0 + }, + "subsequent_stages_ms": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 9117, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 11267, + "mount": 0, + "open": 9967, + "read_header": 0, + "seek_payload": 0 + }, + "successes": 29, + "total_ms": 33733, + "version": 6 +} diff --git a/build/uci_timing/latest_1mhz_large_dizzy_result.json b/build/uci_timing/latest_1mhz_large_dizzy_result.json new file mode 100644 index 0000000..70dbd0f --- /dev/null +++ b/build/uci_timing/latest_1mhz_large_dizzy_result.json @@ -0,0 +1,96 @@ +{ + "avg_header_tax_ms": 0, + "dir_probe": { + "data_len": 0, + "data_prefix_hex": "00000000", + "status_len": 0, + "status_prefix": "" + }, + "done": 1, + "dump": "/private/tmp/uci_timing_probe_c64u_rest_capture/probe_results_3000.bin", + "failures": 0, + "first_failure": { + "debug_status0": 0, + "debug_status1": 0, + "item": 0, + "launcher_error": 0, + "name": "" + }, + "header_tax_ms": 0, + "items": 2, + "loaded_kb": 63, + "max_load_ms": 3367, + "max_load_name": "editor", + "phases_ms": { + "first_load": 3367, + "subsequent_loads": 1117 + }, + "raw_phase_ticks": { + "first_load": 202, + "subsequent_loads": 67 + }, + "raw_stage_ticks": { + "cd_dir": 22, + "cd_image": 23, + "cd_root": 19, + "close": 40, + "detect": 0, + "drvinfo": 20, + "file_info": 0, + "identify": 20, + "load_reu": 50, + "mount": 31, + "open": 44, + "read_header": 0, + "seek_payload": 0 + }, + "raw_subsequent_stage_ticks": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 20, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 25, + "mount": 0, + "open": 22, + "read_header": 0, + "seek_payload": 0 + }, + "raw_total_ticks": 269, + "stages_ms": { + "cd_dir": 367, + "cd_image": 383, + "cd_root": 317, + "close": 667, + "detect": 0, + "drvinfo": 333, + "file_info": 0, + "identify": 333, + "load_reu": 833, + "mount": 517, + "open": 733, + "read_header": 0, + "seek_payload": 0 + }, + "subsequent_stages_ms": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 333, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 417, + "mount": 0, + "open": 367, + "read_header": 0, + "seek_payload": 0 + }, + "successes": 2, + "total_ms": 4483, + "version": 6 +} diff --git a/build/uci_timing/latest_1mhz_safe_result.json b/build/uci_timing/latest_1mhz_safe_result.json new file mode 100644 index 0000000..a739d4c --- /dev/null +++ b/build/uci_timing/latest_1mhz_safe_result.json @@ -0,0 +1,68 @@ +{ + "avg_header_tax_ms": 0, + "dir_probe": { + "data_len": 0, + "data_prefix_hex": "00000000", + "status_len": 0, + "status_prefix": "" + }, + "done": 1, + "dump": "/private/tmp/uci_timing_probe_c64u_rest_capture/probe_results_3000.bin", + "failures": 0, + "first_failure": { + "debug_status0": 0, + "debug_status1": 0, + "item": 0, + "launcher_error": 0, + "name": "" + }, + "header_tax_ms": 0, + "items": 29, + "loaded_kb": 611, + "max_load_ms": 4417, + "max_load_name": "editor", + "phases_ms": { + "first_load": 4417, + "subsequent_loads": 79050 + }, + "raw_phase_ticks": { + "first_load": 265, + "subsequent_loads": 4743 + }, + "raw_stage_ticks": { + "cd_dir": 21, + "cd_image": 23, + "cd_root": 20, + "close": 580, + "detect": 0, + "drvinfo": 579, + "file_info": 634, + "identify": 589, + "load_reu": 724, + "mount": 32, + "open": 640, + "read_header": 582, + "seek_payload": 579 + }, + "raw_subsequent_stage_ticks": null, + "raw_total_ticks": 5008, + "stages_ms": { + "cd_dir": 350, + "cd_image": 383, + "cd_root": 333, + "close": 9667, + "detect": 0, + "drvinfo": 9650, + "file_info": 10567, + "identify": 9817, + "load_reu": 12067, + "mount": 533, + "open": 10667, + "read_header": 9700, + "seek_payload": 9650 + }, + "subsequent_stages_ms": null, + "successes": 29, + "total_ms": 83467, + "version": 4 +} diff --git a/build/uci_timing/latest_1mhz_small_rsedit_result.json b/build/uci_timing/latest_1mhz_small_rsedit_result.json new file mode 100644 index 0000000..e9e7f4f --- /dev/null +++ b/build/uci_timing/latest_1mhz_small_rsedit_result.json @@ -0,0 +1,96 @@ +{ + "avg_header_tax_ms": 0, + "dir_probe": { + "data_len": 0, + "data_prefix_hex": "00000000", + "status_len": 0, + "status_prefix": "" + }, + "done": 1, + "dump": "/private/tmp/uci_timing_probe_c64u_rest_capture/probe_results_3000.bin", + "failures": 0, + "first_failure": { + "debug_status0": 0, + "debug_status1": 0, + "item": 0, + "launcher_error": 0, + "name": "" + }, + "header_tax_ms": 0, + "items": 2, + "loaded_kb": 27, + "max_load_ms": 3367, + "max_load_name": "editor", + "phases_ms": { + "first_load": 3367, + "subsequent_loads": 1033 + }, + "raw_phase_ticks": { + "first_load": 202, + "subsequent_loads": 62 + }, + "raw_stage_ticks": { + "cd_dir": 21, + "cd_image": 23, + "cd_root": 20, + "close": 39, + "detect": 0, + "drvinfo": 20, + "file_info": 0, + "identify": 20, + "load_reu": 46, + "mount": 31, + "open": 44, + "read_header": 0, + "seek_payload": 0 + }, + "raw_subsequent_stage_ticks": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 19, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 21, + "mount": 0, + "open": 22, + "read_header": 0, + "seek_payload": 0 + }, + "raw_total_ticks": 264, + "stages_ms": { + "cd_dir": 350, + "cd_image": 383, + "cd_root": 333, + "close": 650, + "detect": 0, + "drvinfo": 333, + "file_info": 0, + "identify": 333, + "load_reu": 767, + "mount": 517, + "open": 733, + "read_header": 0, + "seek_payload": 0 + }, + "subsequent_stages_ms": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 317, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 350, + "mount": 0, + "open": 367, + "read_header": 0, + "seek_payload": 0 + }, + "successes": 2, + "total_ms": 4400, + "version": 6 +} diff --git a/build/uci_timing/latest_fast_raw_result.json b/build/uci_timing/latest_fast_raw_result.json new file mode 100644 index 0000000..3a5172d --- /dev/null +++ b/build/uci_timing/latest_fast_raw_result.json @@ -0,0 +1,66 @@ +{ + "avg_header_tax_ms": 0, + "dir_probe": { + "data_len": 0, + "data_prefix_hex": "00000000", + "status_len": 0, + "status_prefix": "" + }, + "done": 1, + "dump": "/private/tmp/uci_timing_probe_c64u_rest_capture/probe_results_3000.bin", + "failures": 0, + "first_failure": { + "debug_status0": 0, + "debug_status1": 0, + "item": 0, + "launcher_error": 0, + "name": "" + }, + "header_tax_ms": 0, + "items": 29, + "loaded_kb": 607, + "max_load_ms": 3300, + "max_load_name": "editor", + "phases_ms": { + "first_load": 3300, + "subsequent_loads": 30000 + }, + "raw_phase_ticks": { + "first_load": 198, + "subsequent_loads": 1800 + }, + "raw_stage_ticks": { + "cd_dir": 21, + "cd_image": 22, + "cd_root": 19, + "close": 562, + "detect": 0, + "drvinfo": 20, + "file_info": 0, + "identify": 19, + "load_reu": 689, + "mount": 31, + "open": 614, + "read_header": 0, + "seek_payload": 0 + }, + "raw_total_ticks": 1998, + "stages_ms": { + "cd_dir": 350, + "cd_image": 367, + "cd_root": 317, + "close": 9367, + "detect": 0, + "drvinfo": 333, + "file_info": 0, + "identify": 317, + "load_reu": 11483, + "mount": 517, + "open": 10233, + "read_header": 0, + "seek_payload": 0 + }, + "successes": 29, + "total_ms": 33300, + "version": 5 +} diff --git a/build/uci_timing/latest_large_dizzy_result.json b/build/uci_timing/latest_large_dizzy_result.json new file mode 100644 index 0000000..d298361 --- /dev/null +++ b/build/uci_timing/latest_large_dizzy_result.json @@ -0,0 +1,96 @@ +{ + "avg_header_tax_ms": 0, + "dir_probe": { + "data_len": 0, + "data_prefix_hex": "00000000", + "status_len": 0, + "status_prefix": "" + }, + "done": 1, + "dump": "/private/tmp/uci_timing_probe_c64u_rest_capture/probe_results_3000.bin", + "failures": 0, + "first_failure": { + "debug_status0": 0, + "debug_status1": 0, + "item": 0, + "launcher_error": 0, + "name": "" + }, + "header_tax_ms": 0, + "items": 2, + "loaded_kb": 63, + "max_load_ms": 3350, + "max_load_name": "editor", + "phases_ms": { + "first_load": 3350, + "subsequent_loads": 1100 + }, + "raw_phase_ticks": { + "first_load": 201, + "subsequent_loads": 66 + }, + "raw_stage_ticks": { + "cd_dir": 21, + "cd_image": 23, + "cd_root": 20, + "close": 40, + "detect": 0, + "drvinfo": 20, + "file_info": 0, + "identify": 20, + "load_reu": 50, + "mount": 31, + "open": 42, + "read_header": 0, + "seek_payload": 0 + }, + "raw_subsequent_stage_ticks": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 20, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 25, + "mount": 0, + "open": 21, + "read_header": 0, + "seek_payload": 0 + }, + "raw_total_ticks": 267, + "stages_ms": { + "cd_dir": 350, + "cd_image": 383, + "cd_root": 333, + "close": 667, + "detect": 0, + "drvinfo": 333, + "file_info": 0, + "identify": 333, + "load_reu": 833, + "mount": 517, + "open": 700, + "read_header": 0, + "seek_payload": 0 + }, + "subsequent_stages_ms": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 333, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 417, + "mount": 0, + "open": 350, + "read_header": 0, + "seek_payload": 0 + }, + "successes": 2, + "total_ms": 4450, + "version": 6 +} diff --git a/build/uci_timing/latest_result.json b/build/uci_timing/latest_result.json new file mode 100644 index 0000000..70dbd0f --- /dev/null +++ b/build/uci_timing/latest_result.json @@ -0,0 +1,96 @@ +{ + "avg_header_tax_ms": 0, + "dir_probe": { + "data_len": 0, + "data_prefix_hex": "00000000", + "status_len": 0, + "status_prefix": "" + }, + "done": 1, + "dump": "/private/tmp/uci_timing_probe_c64u_rest_capture/probe_results_3000.bin", + "failures": 0, + "first_failure": { + "debug_status0": 0, + "debug_status1": 0, + "item": 0, + "launcher_error": 0, + "name": "" + }, + "header_tax_ms": 0, + "items": 2, + "loaded_kb": 63, + "max_load_ms": 3367, + "max_load_name": "editor", + "phases_ms": { + "first_load": 3367, + "subsequent_loads": 1117 + }, + "raw_phase_ticks": { + "first_load": 202, + "subsequent_loads": 67 + }, + "raw_stage_ticks": { + "cd_dir": 22, + "cd_image": 23, + "cd_root": 19, + "close": 40, + "detect": 0, + "drvinfo": 20, + "file_info": 0, + "identify": 20, + "load_reu": 50, + "mount": 31, + "open": 44, + "read_header": 0, + "seek_payload": 0 + }, + "raw_subsequent_stage_ticks": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 20, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 25, + "mount": 0, + "open": 22, + "read_header": 0, + "seek_payload": 0 + }, + "raw_total_ticks": 269, + "stages_ms": { + "cd_dir": 367, + "cd_image": 383, + "cd_root": 317, + "close": 667, + "detect": 0, + "drvinfo": 333, + "file_info": 0, + "identify": 333, + "load_reu": 833, + "mount": 517, + "open": 733, + "read_header": 0, + "seek_payload": 0 + }, + "subsequent_stages_ms": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 333, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 417, + "mount": 0, + "open": 367, + "read_header": 0, + "seek_payload": 0 + }, + "successes": 2, + "total_ms": 4483, + "version": 6 +} diff --git a/build/uci_timing/latest_small_rsedit_result.json b/build/uci_timing/latest_small_rsedit_result.json new file mode 100644 index 0000000..5f64493 --- /dev/null +++ b/build/uci_timing/latest_small_rsedit_result.json @@ -0,0 +1,96 @@ +{ + "avg_header_tax_ms": 0, + "dir_probe": { + "data_len": 0, + "data_prefix_hex": "00000000", + "status_len": 0, + "status_prefix": "" + }, + "done": 1, + "dump": "/private/tmp/uci_timing_probe_c64u_rest_capture/probe_results_3000.bin", + "failures": 0, + "first_failure": { + "debug_status0": 0, + "debug_status1": 0, + "item": 0, + "launcher_error": 0, + "name": "" + }, + "header_tax_ms": 0, + "items": 2, + "loaded_kb": 27, + "max_load_ms": 3367, + "max_load_name": "editor", + "phases_ms": { + "first_load": 3367, + "subsequent_loads": 1033 + }, + "raw_phase_ticks": { + "first_load": 202, + "subsequent_loads": 62 + }, + "raw_stage_ticks": { + "cd_dir": 21, + "cd_image": 23, + "cd_root": 20, + "close": 40, + "detect": 0, + "drvinfo": 20, + "file_info": 0, + "identify": 20, + "load_reu": 45, + "mount": 31, + "open": 43, + "read_header": 0, + "seek_payload": 0 + }, + "raw_subsequent_stage_ticks": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 20, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 20, + "mount": 0, + "open": 22, + "read_header": 0, + "seek_payload": 0 + }, + "raw_total_ticks": 264, + "stages_ms": { + "cd_dir": 350, + "cd_image": 383, + "cd_root": 333, + "close": 667, + "detect": 0, + "drvinfo": 333, + "file_info": 0, + "identify": 333, + "load_reu": 750, + "mount": 517, + "open": 717, + "read_header": 0, + "seek_payload": 0 + }, + "subsequent_stages_ms": { + "cd_dir": 0, + "cd_image": 0, + "cd_root": 0, + "close": 333, + "detect": 0, + "drvinfo": 0, + "file_info": 0, + "identify": 0, + "load_reu": 333, + "mount": 0, + "open": 367, + "read_header": 0, + "seek_payload": 0 + }, + "successes": 2, + "total_ms": 4400, + "version": 6 +} diff --git a/build/uci_timing/launcher_uci_dma_timed.s b/build/uci_timing/launcher_uci_dma_timed.s new file mode 100644 index 0000000..5a74ac8 --- /dev/null +++ b/build/uci_timing/launcher_uci_dma_timed.s @@ -0,0 +1,1189 @@ +; +; launcher_uci_dma.s - Launcher-local Ultimate DOS REU loader. +; +; This module deliberately uses Ultimate DOS UCI only. It does not use SoftIEC. +; The experimental launcher supplies an Ultimate DOS directory path from +; apps.cfg; this module changes into that path, then loads plain filenames from +; inside the image filesystem. +; + + .export _launcher_uci_dma_detect + .export _launcher_uci_dma_load_prg + .export _launcher_uci_dma_quiesce + .export _launcher_uci_dma_clear_stage + .export _launcher_uci_dma_available + .export _launcher_uci_dma_name + .export _launcher_uci_dma_reu_bank + .export _launcher_uci_dma_reu_offset + .export _launcher_uci_dma_max_len + .export _launcher_uci_dma_expected_load_addr + .export _launcher_uci_dma_loaded_size + .export _launcher_uci_dma_last_error + .export _launcher_uci_dma_dbg_stat0 + .export _launcher_uci_dma_dbg_stat1 + .export _launcher_uci_dma_image_dir + .export _launcher_uci_dma_image_name + .export _launcher_uci_dma_mount_name + .export _launcher_uci_dma_assume_mounted + +CPU_PORT = $0001 + +UCI_STAT_DATA = $80 +UCI_STAT_STAT = $40 +UCI_STATE_MASK = $30 +UCI_STATE_IDLE = $00 +UCI_STATE_LAST = $20 +UCI_STATE_MORE = $30 +UCI_STAT_ABORT = $04 +UCI_STAT_ERROR = $08 + +ERR_NO_UCI = $01 +ERR_OPEN = $02 +ERR_STAT = $03 +ERR_SIZE = $04 +ERR_HEADER = $05 +ERR_SEEK = $06 +ERR_LOAD = $07 +ERR_PATH = $08 +ERR_CD_DIR = $09 +ERR_CD_DIR_STATUS = $0A +ERR_MOUNT = $0B +ERR_MOUNT_STATUS = $0C +ERR_CD_IMAGE = $0D +ERR_CD_IMAGE_STATUS = $0E +ERR_CD_ROOT = $0F +ERR_CD_ROOT_STATUS = $10 + + .macro BCC_FAR target + bcs :+ + jmp target +: + .endmacro + + .macro BEQ_FAR target + bne :+ + jmp target +: + .endmacro + + .macro BNE_FAR target + beq :+ + jmp target +: + .endmacro + + .segment "CODE" + +_launcher_uci_dma_detect: + lda #<$DF1C + ldx #>$DF1C + jsr try_base + bcs detect_yes + lda #<$DE1C + ldx #>$DE1C + jsr try_base + bcs detect_yes + lda #<$DFFC + ldx #>$DFFC + jsr try_base + bcs detect_yes + lda #$00 + sta _launcher_uci_dma_available + tax + rts +detect_yes: + lda #$01 + sta _launcher_uci_dma_available + tax + rts + +try_base: + jsr set_uci_base + jsr uci_id + and #$7F + cmp #$49 + beq try_base_yes + clc + rts +try_base_yes: + sec + rts + +_launcher_uci_dma_load_prg: + lda #'0' + jsr debug_stage + lda #$00 + sta _launcher_uci_dma_loaded_size + sta _launcher_uci_dma_loaded_size+1 + sta _launcher_uci_dma_last_error + sta clipped_load + lda _launcher_uci_dma_assume_mounted + beq load_regular_detect + lda #'5' + jsr debug_stage + jmp load_open_current_dir +load_regular_detect: + jsr utime_call_detect + bne load_have_uci + lda #ERR_NO_UCI + jmp load_fail +load_have_uci: + lda #'1' + jsr debug_stage + jsr utime_call_identify + BCC_FAR load_no_uci_fail + jsr utime_call_drvinfo + BCC_FAR load_no_uci_fail + lda _launcher_uci_dma_name + sta open_name_abs+1 + lda _launcher_uci_dma_name+1 + sta open_name_abs+2 + lda _launcher_uci_dma_image_dir + ora _launcher_uci_dma_image_dir+1 + beq load_path_missing + lda _launcher_uci_dma_image_name + ora _launcher_uci_dma_image_name+1 + beq load_path_missing + lda _launcher_uci_dma_mount_name + ora _launcher_uci_dma_mount_name+1 + bne load_have_image_path +load_path_missing: + lda #ERR_PATH + jmp load_fail +load_have_image_path: + lda _launcher_uci_dma_assume_mounted + beq load_mount_image_path + lda #'5' + jsr debug_stage + jmp load_open_current_dir +load_mount_image_path: + lda #root_name + sta cd_name_abs+2 + jsr utime_call_cd_root + BCC_FAR load_cd_root_fail + + lda _launcher_uci_dma_image_dir + sta cd_dir_check_abs+1 + sta cd_dir_retry_slash_abs+1 + sta cd_name_abs+1 + lda _launcher_uci_dma_image_dir+1 + sta cd_dir_check_abs+2 + sta cd_dir_retry_slash_abs+2 + sta cd_name_abs+2 + ldy #$00 +cd_dir_check_abs: + lda $FFFF,y + bne cd_dir_has_text + lda #ERR_PATH + jmp load_fail +cd_dir_has_text: + lda #'2' + jsr debug_stage + jsr utime_call_cd_dir + BCC_FAR load_cd_dir_fail + jsr status_ok + bcs cd_dir_ready + ldy #$00 +cd_dir_retry_slash_abs: + lda $FFFF,y + cmp #'/' + bne cd_dir_status_retry_fail + iny + lda _launcher_uci_dma_image_dir + clc + adc #$01 + sta cd_name_abs+1 + lda _launcher_uci_dma_image_dir+1 + adc #$00 + sta cd_name_abs+2 + jsr utime_call_cd_dir + BCC_FAR load_cd_dir_fail + jsr status_ok + bcs cd_dir_ready +cd_dir_status_retry_fail: + jmp load_cd_dir_status_fail + +cd_dir_ready: + lda _launcher_uci_dma_image_name + sta cd_image_check_abs+1 + sta cd_name_abs+1 + lda _launcher_uci_dma_image_name+1 + sta cd_image_check_abs+2 + sta cd_name_abs+2 + lda _launcher_uci_dma_mount_name + sta cd_mount_name_abs+1 + lda _launcher_uci_dma_mount_name+1 + sta cd_mount_name_abs+2 + ldy #$00 +cd_image_empty_check: +cd_image_check_abs: + lda $FFFF,y + bne cd_image_has_text + lda #ERR_PATH + jmp load_fail +cd_image_has_text: + lda #'3' + jsr debug_stage + jsr utime_call_mount + BCC_FAR load_mount_fail + lda #'4' + jsr debug_stage + jsr utime_call_cd_image + BCC_FAR load_cd_image_fail + jsr status_ok + bcs cd_image_status_ok + lda stat_len + BEQ_FAR cd_image_status_ok + lda _launcher_uci_dma_mount_name + sta cd_name_abs+1 + lda _launcher_uci_dma_mount_name+1 + sta cd_name_abs+2 + jsr utime_call_cd_image + BCC_FAR load_cd_image_fail + jsr status_ok + bcs cd_image_status_ok + lda stat_len + BEQ_FAR cd_image_status_ok + jmp load_cd_image_status_fail +cd_image_status_ok: + lda #'5' + jsr debug_stage + +load_open_current_dir: + jsr utime_call_open + BCC_FAR load_open_fail + jsr status_ok + BCC_FAR load_open_fail + lda #'7' + jsr debug_stage + + lda _launcher_uci_dma_reu_offset + sta current_off_lo + lda _launcher_uci_dma_reu_offset+1 + sta current_off_hi + lda _launcher_uci_dma_max_len + sta chunk_lo + sta _launcher_uci_dma_loaded_size + lda _launcher_uci_dma_max_len+1 + sta chunk_hi + sta _launcher_uci_dma_loaded_size+1 + lda chunk_lo + ora chunk_hi + BEQ_FAR load_size_fail + + lda #'9' + jsr debug_stage + jsr utime_call_load_reu + BCC_FAR load_load_fail + jsr status_ok + BCC_FAR load_load_fail + jmp load_success + +load_success: + jsr utime_call_close + lda #$00 + sta _launcher_uci_dma_last_error + lda #$01 + tax + rts +load_stat_fail: + lda #ERR_STAT + jmp load_fail_close +load_size_fail: + lda data_buf + sta _launcher_uci_dma_dbg_stat0 + lda data_buf+1 + sta _launcher_uci_dma_dbg_stat1 + jsr dos_close + lda #ERR_SIZE + sta _launcher_uci_dma_last_error + lda #$00 + tax + rts +load_open_fail: + lda #ERR_OPEN + jmp load_fail_close +load_header_fail: + lda #ERR_HEADER + jmp load_fail_close +load_seek_fail: + lda #ERR_SEEK + jmp load_fail_close +load_load_fail: + lda #ERR_LOAD + jmp load_fail_close +load_cd_root_fail: + lda #ERR_CD_ROOT + jmp load_fail_close +load_cd_root_status_fail: + lda #ERR_CD_ROOT_STATUS + jmp load_fail_close +load_cd_dir_fail: + lda #ERR_CD_DIR + jmp load_fail_close +load_cd_dir_status_fail: + lda #ERR_CD_DIR_STATUS + jmp load_fail_close +load_mount_fail: + lda #ERR_MOUNT + jmp load_fail_close +load_mount_status_fail: + lda #ERR_MOUNT_STATUS + jmp load_fail_close +load_cd_image_fail: + lda #ERR_CD_IMAGE + jmp load_fail_close +load_cd_image_status_fail: + lda #ERR_CD_IMAGE_STATUS + jmp load_fail_close +load_path_fail: + lda #ERR_PATH +load_fail_close: + pha + jsr dos_close + pla +load_fail: + sta _launcher_uci_dma_last_error + lda stat_buf + sta _launcher_uci_dma_dbg_stat0 + lda stat_buf+1 + sta _launcher_uci_dma_dbg_stat1 + lda #$00 + tax + rts +load_no_uci_fail: + lda #ERR_NO_UCI + jmp load_fail + +dos_identify: + jsr sync_interface + BCC_FAR command_fail + lda #$01 + jsr uci_write_cmd + lda #$01 + jsr uci_write_cmd + jsr uci_push_cmd + jmp drain_response + +ctrl_get_drvinfo: + jsr sync_interface + BCC_FAR command_fail + lda #$04 + jsr uci_write_cmd + lda #$29 + jsr uci_write_cmd + lda #$00 + jsr uci_write_cmd + jsr uci_push_cmd + jmp drain_response + +dos_close: + jsr sync_interface + BCC_FAR command_fail + lda #$01 + jsr uci_write_cmd + lda #$03 + jsr uci_write_cmd + jsr uci_push_cmd + jmp drain_response + +dos_cd: + jsr sync_interface + BCC_FAR command_fail + lda #$01 + jsr uci_write_cmd + lda #$11 + jsr uci_write_cmd + ldy #$00 +dos_cd_name: +cd_name_abs: + lda $FFFF,y + beq dos_cd_push + jsr uci_write_path_cmd + iny + bne dos_cd_name +dos_cd_push: + jsr uci_push_cmd + jmp drain_response + +dos_cd_path: + ldy #$00 +cd_path_read_abs: + lda $FFFF,y + beq dos_cd_path_done + cmp #'/' + bne dos_cd_path_segment + lda #$01 + jsr cd_path_advance + jmp dos_cd_path +dos_cd_path_segment: + jsr sync_interface + BCC_FAR command_fail + lda #$01 + jsr uci_write_cmd + lda #$11 + jsr uci_write_cmd + ldy #$00 +dos_cd_path_seg_loop: +cd_path_seg_read_abs: + lda $FFFF,y + beq dos_cd_path_seg_push + cmp #'/' + beq dos_cd_path_seg_push + jsr uci_write_path_cmd + iny + bne dos_cd_path_seg_loop +dos_cd_path_seg_push: + jsr uci_push_cmd + jsr drain_response + bcc dos_cd_path_fail + jsr status_ok + bcc dos_cd_path_fail + tya + jsr cd_path_advance + jmp dos_cd_path +dos_cd_path_done: + sec + rts +dos_cd_path_fail: + clc + rts + +cd_path_advance: + clc + adc cd_path_read_abs+1 + sta cd_path_read_abs+1 + sta cd_path_seg_read_abs+1 + lda cd_path_read_abs+2 + adc #$00 + sta cd_path_read_abs+2 + sta cd_path_seg_read_abs+2 + rts + +dos_mount_image: + jsr sync_interface + BCC_FAR command_fail + lda #$01 + jsr uci_write_cmd + lda #$23 + jsr uci_write_cmd + lda #$08 + jsr uci_write_cmd + ldy #$00 +dos_mount_name: +cd_mount_name_abs: + lda $FFFF,y + beq dos_mount_push + jsr uci_write_path_cmd + iny + bne dos_mount_name +dos_mount_push: + jsr uci_push_cmd + jmp drain_response + +dos_open_read: + jsr sync_interface + BCC_FAR command_fail + lda #$01 + jsr uci_write_cmd + lda #$02 + jsr uci_write_cmd + lda #$01 + jsr uci_write_cmd + ldy #$00 +dos_open_name: +open_name_abs: + lda $FFFF,y + beq dos_open_push + jsr uci_write_cmd + iny + bne dos_open_name +dos_open_push: + jsr uci_push_cmd + jmp drain_response + +dos_read_header: + jsr sync_interface + BCC_FAR command_fail + lda #$01 + jsr uci_write_cmd + lda #$04 + jsr uci_write_cmd + lda #$02 + jsr uci_write_cmd + lda #$00 + jsr uci_write_cmd + jsr uci_push_cmd + jmp drain_response + +dos_file_info: + jsr sync_interface + BCC_FAR command_fail + lda #$01 + jsr uci_write_cmd + lda #$07 + jsr uci_write_cmd + jsr uci_push_cmd + jmp drain_response + +dos_seek_payload: + jsr sync_interface + BCC_FAR command_fail + lda #$01 + jsr uci_write_cmd + lda #$06 + jsr uci_write_cmd + lda #$02 + jsr uci_write_cmd + lda #$00 + jsr uci_write_cmd + jsr uci_write_cmd + jsr uci_write_cmd + jsr uci_push_cmd + jmp drain_response + +dos_load_reu_chunk: + jsr sync_interface + BCC_FAR command_fail + lda #$01 + jsr uci_write_cmd + lda #$21 + jsr uci_write_cmd + lda current_off_lo + jsr uci_write_cmd + lda current_off_hi + jsr uci_write_cmd + lda _launcher_uci_dma_reu_bank + jsr uci_write_cmd + lda #$00 + jsr uci_write_cmd + lda chunk_lo + jsr uci_write_cmd + lda chunk_hi + jsr uci_write_cmd + lda #$00 + jsr uci_write_cmd + jsr uci_write_cmd + jsr uci_push_cmd + jmp drain_response + +command_fail: + clc + rts + +uci_write_path_cmd: + cmp #'a' + bcc uci_write_path_raw + cmp #'z'+1 + bcs uci_write_path_raw + and #$DF +uci_write_path_raw: + jmp uci_write_cmd + +debug_stage: + ; Hardware note: this visible screen store is part of the + ; C64U-proven UCI transaction shape. Replacing the stage writes with + ; private BSS stores made the same logical loader fall back on real + ; hardware, so do not "clean this up" without retesting on C64U. + sta $052C + rts + +sync_interface: + lda #$40 + sta timeout_hi +sync_loop: + jsr uci_status + sta last_status + and #UCI_STAT_ERROR + beq sync_no_error + jsr uci_clear_error + lda #$40 + sta timeout_hi + jmp sync_loop +sync_no_error: + lda last_status + and #UCI_STAT_ABORT + beq sync_no_abort + jsr uci_abort + lda #$40 + sta timeout_hi + jmp sync_loop +sync_no_abort: + lda last_status + and #UCI_STAT_DATA + beq sync_no_data + jsr uci_read_data + lda #$40 + sta timeout_hi + jmp sync_loop +sync_no_data: + lda last_status + and #UCI_STAT_STAT + beq sync_no_stat + jsr uci_read_stat + lda #$40 + sta timeout_hi + jmp sync_loop +sync_no_stat: + lda last_status + and #UCI_STATE_MASK + cmp #UCI_STATE_LAST + beq sync_accept + cmp #UCI_STATE_MORE + beq sync_accept + lda last_status + and #$31 + beq sync_ok + dec timeout_hi + bne sync_loop + jsr uci_abort + clc + rts +sync_accept: + jsr uci_accept_data + lda #$40 + sta timeout_hi + jmp sync_loop +sync_ok: + sec + rts + +wait_data_state: + lda #$80 + sta timeout_hi + ldy #$00 +wait_state_loop: + jsr uci_status + sta last_status + and #UCI_STAT_ERROR + bne wait_state_fail + lda last_status + and #UCI_STATE_MASK + cmp #UCI_STATE_LAST + beq wait_state_ok + cmp #UCI_STATE_MORE + beq wait_state_ok + cmp #UCI_STATE_IDLE + beq wait_state_ok + dey + bne wait_state_loop + dec timeout_hi + bne wait_state_loop +wait_state_fail: + clc + rts +wait_state_ok: + sec + rts + +wait_idle: + lda #$40 + sta timeout_hi + ldy #$00 +wait_idle_loop: + jsr uci_status + sta last_status + lda last_status + and #$31 + beq wait_idle_ok + dey + bne wait_idle_loop + dec timeout_hi + bne wait_idle_loop + clc + rts +wait_idle_ok: + sec + rts + +drain_response: + lda #$00 + sta data_len + sta stat_len + jsr wait_data_state + bcs drain_loop + clc + rts +drain_loop: + jsr uci_status + sta last_status + and #UCI_STAT_ERROR + beq drain_no_error + clc + rts +drain_no_error: + lda last_status + and #UCI_STATE_MASK + sta current_state + beq drain_done + cmp #UCI_STATE_LAST + beq drain_state_ok + cmp #UCI_STATE_MORE + beq drain_state_ok + jsr wait_data_state + bcs drain_loop + clc + rts +drain_state_ok: + lda #$10 + sta timeout_hi + ldy #$00 +drain_bytes: + jsr uci_status + sta last_status + and #UCI_STAT_DATA + beq drain_check_stat + jsr uci_read_data + ldx data_len + cpx #$20 + bcs drain_data_count + sta data_buf,x +drain_data_count: + lda data_len + cmp #$FF + beq drain_reset_guard + inc data_len + jmp drain_reset_guard +drain_check_stat: + lda last_status + and #UCI_STAT_STAT + beq drain_wait_byte + jsr uci_read_stat + ldx stat_len + cpx #$08 + bcs drain_reset_guard + sta stat_buf,x + inc stat_len +drain_reset_guard: + lda #$10 + sta timeout_hi + ldy #$00 + jmp drain_bytes +drain_wait_byte: + dey + bne drain_bytes + dec timeout_hi + bne drain_bytes + jsr uci_accept_data + lda current_state + cmp #UCI_STATE_LAST + bne drain_more + jsr wait_idle + sec + rts +drain_more: + jsr wait_data_state + bcc drain_more_fail + jmp drain_loop +drain_more_fail: + clc + rts +drain_done: + sec + rts + +status_ok: + lda stat_len + beq status_not_ok + lda stat_buf + cmp #'0' + bne status_not_ok + lda stat_buf+1 + cmp #'0' + bne status_not_ok +status_is_ok: + sec + rts +status_not_ok: + clc + rts + +data_or_status_ok: + lda stat_len + beq data_or_status_from_data + jmp status_ok +data_or_status_from_data: + lda data_len + beq status_not_ok + sec + rts + +set_uci_base: + sta uci_base_lo + stx uci_base_hi + lda uci_base_lo + sta uci_status_abs+1 + sta uci_push_abs+1 + sta uci_accept_abs+1 + sta uci_abort_abs+1 + sta uci_clear_abs+1 + clc + adc #$01 + sta uci_write_abs+1 + sta uci_id_abs+1 + clc + adc #$01 + sta uci_data_abs+1 + clc + adc #$01 + sta uci_stat_abs+1 + lda uci_base_hi + sta uci_status_abs+2 + sta uci_push_abs+2 + sta uci_accept_abs+2 + sta uci_abort_abs+2 + sta uci_clear_abs+2 + sta uci_write_abs+2 + sta uci_id_abs+2 + sta uci_data_abs+2 + sta uci_stat_abs+2 + rts + +uci_write_cmd: + sta uci_value + php + sei + lda CPU_PORT + pha + and #$F8 + ora #$07 + sta CPU_PORT + lda uci_value +uci_write_abs: + sta $DF1D + pla + sta CPU_PORT + plp + lda uci_value + rts + +uci_id: + php + sei + lda CPU_PORT + pha + and #$F8 + ora #$07 + sta CPU_PORT +uci_id_abs: + lda $DF1D + tax + pla + sta CPU_PORT + plp + txa + rts + +uci_status: + php + sei + lda CPU_PORT + pha + and #$F8 + ora #$07 + sta CPU_PORT +uci_status_abs: + lda $DF1C + tax + pla + sta CPU_PORT + plp + txa + rts + +uci_read_data: + php + sei + lda CPU_PORT + pha + and #$F8 + ora #$07 + sta CPU_PORT +uci_data_abs: + lda $DF1E + tax + pla + sta CPU_PORT + plp + txa + rts + +uci_read_stat: + php + sei + lda CPU_PORT + pha + and #$F8 + ora #$07 + sta CPU_PORT +uci_stat_abs: + lda $DF1F + tax + pla + sta CPU_PORT + plp + txa + rts + +uci_push_cmd: + php + sei + lda CPU_PORT + pha + and #$F8 + ora #$07 + sta CPU_PORT + lda #$01 +uci_push_abs: + sta $DF1C + pla + sta CPU_PORT + plp + rts + +uci_accept_data: + php + sei + lda CPU_PORT + pha + and #$F8 + ora #$07 + sta CPU_PORT + lda #$02 +uci_accept_abs: + sta $DF1C + pla + sta CPU_PORT + plp + rts + +uci_abort: + php + sei + lda CPU_PORT + pha + and #$F8 + ora #$07 + sta CPU_PORT + lda #$04 +uci_abort_abs: + sta $DF1C + pla + sta CPU_PORT + plp + rts + +uci_clear_error: + php + sei + lda CPU_PORT + pha + and #$F8 + ora #$07 + sta CPU_PORT + lda #$08 +uci_clear_abs: + sta $DF1C + pla + sta CPU_PORT + plp + rts + +_launcher_uci_dma_quiesce: + lda _launcher_uci_dma_available + beq quiesce_done + jsr sync_interface + bcc quiesce_done + jsr wait_idle +quiesce_done: + rts + +_launcher_uci_dma_clear_stage: + lda #' ' + sta $052C + sta $052D + sta $052E + sta $052F + sta $0530 + sta $0531 + sta $0532 + sta $0533 + rts + + + +; Probe-only instrumentation wrappers. These preserve the carry flag returned +; by the underlying launcher UCI call so the production control flow is intact. + .import _utime_stage_begin + .import _utime_stage_end + +utime_call_detect: + lda #$00 + jsr _utime_stage_begin + jsr _launcher_uci_dma_detect + php + lda #$00 + jsr _utime_stage_end + plp + rts + +utime_call_identify: + lda #$01 + jsr _utime_stage_begin + jsr dos_identify + php + lda #$01 + jsr _utime_stage_end + plp + rts + +utime_call_drvinfo: + lda #$02 + jsr _utime_stage_begin + jsr ctrl_get_drvinfo + php + lda #$02 + jsr _utime_stage_end + plp + rts + +utime_call_cd_root: + lda #$03 + jsr _utime_stage_begin + jsr dos_cd + php + lda #$03 + jsr _utime_stage_end + plp + rts + +utime_call_cd_dir: + lda #$04 + jsr _utime_stage_begin + jsr dos_cd + php + lda #$04 + jsr _utime_stage_end + plp + rts + +utime_call_mount: + lda #$05 + jsr _utime_stage_begin + jsr dos_mount_image + php + lda #$05 + jsr _utime_stage_end + plp + rts + +utime_call_cd_image: + lda #$06 + jsr _utime_stage_begin + jsr dos_cd + php + lda #$06 + jsr _utime_stage_end + plp + rts + +utime_call_open: + lda #$07 + jsr _utime_stage_begin + jsr dos_open_read + php + lda #$07 + jsr _utime_stage_end + plp + rts + +utime_call_info: + lda #$08 + jsr _utime_stage_begin + jsr dos_file_info + php + lda #$08 + jsr _utime_stage_end + plp + rts + +utime_call_read_header: + lda #$09 + jsr _utime_stage_begin + jsr dos_read_header + php + lda #$09 + jsr _utime_stage_end + plp + rts + +utime_call_seek: + lda #$0A + jsr _utime_stage_begin + jsr dos_seek_payload + php + lda #$0A + jsr _utime_stage_end + plp + rts + +utime_call_load_reu: + lda #$0B + jsr _utime_stage_begin + jsr dos_load_reu_chunk + php + lda #$0B + jsr _utime_stage_end + plp + rts + +utime_call_close: + lda #$0C + jsr _utime_stage_begin + jsr dos_close + php + lda #$0C + jsr _utime_stage_end + plp + rts + + .segment "RODATA" + +root_name: .byte "/", 0 + + .segment "BSS" + +_launcher_uci_dma_available: .res 1 +_launcher_uci_dma_name: .res 2 +_launcher_uci_dma_reu_bank: .res 1 +_launcher_uci_dma_reu_offset: .res 2 +_launcher_uci_dma_max_len: .res 2 +_launcher_uci_dma_expected_load_addr: .res 2 +_launcher_uci_dma_loaded_size: .res 2 +_launcher_uci_dma_last_error: .res 1 +_launcher_uci_dma_dbg_stat0: .res 1 +_launcher_uci_dma_dbg_stat1: .res 1 +_launcher_uci_dma_image_dir: .res 2 +_launcher_uci_dma_image_name: .res 2 +_launcher_uci_dma_mount_name: .res 2 +_launcher_uci_dma_assume_mounted: .res 1 + +uci_base_lo: .res 1 +uci_base_hi: .res 1 +uci_value: .res 1 +last_status: .res 1 +current_state: .res 1 +timeout_hi: .res 1 +data_len: .res 1 +stat_len: .res 1 +remaining_lo: .res 1 +remaining_hi: .res 1 +chunk_lo: .res 1 +chunk_hi: .res 1 +current_off_lo: .res 1 +current_off_hi: .res 1 +clipped_load: .res 1 +data_buf: .res 32 +stat_buf: .res 8 diff --git a/build/uci_timing/msg_variant.inc b/build/uci_timing/msg_variant.inc new file mode 100644 index 0000000..25a9bdc --- /dev/null +++ b/build/uci_timing/msg_variant.inc @@ -0,0 +1,5 @@ +; Auto-generated by build_apps_catalog_petscii.py. Do not edit by hand. + +msg_variant: + .byte "precog d81" +msg_variant_end: diff --git a/build/uci_timing/readback/apps.cfg b/build/uci_timing/readback/apps.cfg new file mode 100644 index 0000000..fbb41ef --- /dev/null +++ b/build/uci_timing/readback/apps.cfg @@ -0,0 +1 @@ +[SYSTEM] VARIANT_NAME=PRECOG D81 VARIANT_BOOT_NAME=PRECOG D81 REU_BANK_SKIP=32 [LAUNCHER] LOAD_ALL_TO_REU=0 RUNAPPFIRST= C64U_IMAGE_PATH=/USB1/READYOS.D81 [APPS] 8:EDITOR:EDITOR:1 TEXT EDITOR WITH CLIPBOARD 8:READYSHELL:READYSHELL (BETA):2:RSOVL+ COMMAND SHELL POC SCAFFOLD RSPARSER@0:0000,RSVM@0:3800,RSDRVILST@0:7000,RSLDV@1:0000,RSSTV@0:A800,RSFOPS@1:3800,RSCAT@1:7000,RSCOPY@1:A800,RSEDIT@2:0000 8:SIMPLEFILES:SIMPLE FILES DUAL PANE FILE MANAGER AND SEQ VIEWER 8:CLIPMGR:CLIPBOARD MANAGE CLIPBOARD ITEMS 8:READYBASIC:READY BASIC (ALPHA):3:RBCORE+ SCOPED BASIC V2 BRIDGE POC RBCORE,RBCODE 8:CAL26:CALENDAR 26 CALENDAR FOR 2026 WITH APPOINTMENTS 8:TASKLIST:TASK LIST OUTLINER WITH NOTES AND SEARCH 8:REUVIEWER:REU VIEWER VIEW REU MEMORY USAGE 8:SYSINFO:SYSTEM INFO SYSTEM, REU, AND ULTIMATE STATUS 8:QUICKNOTES:QUICKNOTES REU-BACKED NOTE EDITOR 8:CALCPLUS:CALC PLUS KEYBOARD-FIRST EXPRESSION CALCULATOR 8:HEXVIEW:HEX VIEWER BROWSE MEMORY IN HEX FORMAT 8:SIMPLECELLS:SIMPLE CELLS (ALPHA) SPREADSHEET WITH FORMULAS AND COLORS 8:GAME2048:2048 GAME 2048 TILE PUZZLE 8:DEMINER:DEMINER MINESWEEPER-STYLE PUZZLE 8:DIZZY:DIZZY KANBAN FIZZY INSPIRED KANBAN APP 8:READYIRC:READYIRC ULTIMATE TCP IRC CLIENT 8:UCITEST:UCI TESTER ULTIMATE COMMAND INTERFACE LAB 8:RIRC-RRNET:READYIRC RRNET RR-NET TCP IRC CLIENT 8:README:READ.ME READYOS, ULTIMATE BUDDY, PRECOG POC OS \ No newline at end of file diff --git a/build/uci_timing/readback/utime b/build/uci_timing/readback/utime new file mode 100644 index 0000000..d42b668 Binary files /dev/null and b/build/uci_timing/readback/utime differ diff --git a/build/uci_timing/readyos.d81 b/build/uci_timing/readyos.d81 new file mode 100644 index 0000000..7b243fa Binary files /dev/null and b/build/uci_timing/readyos.d81 differ diff --git a/build/uci_timing/readyos_reu_config.inc b/build/uci_timing/readyos_reu_config.inc new file mode 100644 index 0000000..06a529b --- /dev/null +++ b/build/uci_timing/readyos_reu_config.inc @@ -0,0 +1,4 @@ +; Auto-generated by build_apps_catalog_petscii.py. Do not edit by hand. +; This is compiled into the boot/shim image; runtime apps.cfg is not read for this value. + +READYOS_REU_BANK_SKIP = 32 diff --git a/build/uci_timing/uci_timing_probe.prg b/build/uci_timing/uci_timing_probe.prg new file mode 100644 index 0000000..d42b668 Binary files /dev/null and b/build/uci_timing/uci_timing_probe.prg differ diff --git a/build/uci_timing/uci_timing_probe.s b/build/uci_timing/uci_timing_probe.s new file mode 100644 index 0000000..67355ff --- /dev/null +++ b/build/uci_timing/uci_timing_probe.s @@ -0,0 +1,648 @@ + + .segment "LOADADDR" + .word $0801 + + .segment "STARTUP" + .word basic_next + .word 10 + .byte $9e, "2061", 0 +basic_next: + .word 0 + + .import _launcher_uci_dma_detect + .import _launcher_uci_dma_load_prg + .import _launcher_uci_dma_quiesce + .import _launcher_uci_dma_clear_stage + .import _launcher_uci_dma_name + .import _launcher_uci_dma_reu_bank + .import _launcher_uci_dma_reu_offset + .import _launcher_uci_dma_max_len + .import _launcher_uci_dma_expected_load_addr + .import _launcher_uci_dma_loaded_size + .import _launcher_uci_dma_last_error + .import _launcher_uci_dma_dbg_stat0 + .import _launcher_uci_dma_dbg_stat1 + .import _launcher_uci_dma_image_dir + .import _launcher_uci_dma_image_name + .import _launcher_uci_dma_mount_name + .import _launcher_uci_dma_assume_mounted + + .export _utime_stage_begin + .export _utime_stage_end + +CHROUT = $FFD2 +GETIN = $FFE4 +RESULTS = $3000 +STAGE_COUNT = $0D +current_name = $04 + + .macro PRINT label + lda #