{
  "date": "2026-10-14",
  "version": "0.4.0",
  "scope": "Documentation-based reconstruction; functional checks do not establish original PEL hardware identity",
  "reports": {
    "compatibility": {
      "date": "2026-10-14",
      "version": "0.4.0",
      "status": "passed",
      "scope": "Experimental Apple hardware and video adapter; authentic PEL wiring unavailable",
      "checks": [
        {
          "name": "The same 6502 diagnostic program gives identical integrated/reference device results",
          "passed": true
        },
        {
          "name": "Keyboard latch preserves the character and C010 clears bit7",
          "passed": true
        },
        {
          "name": "All three pushbuttons read actual C061/C062/C063 inputs",
          "passed": true
        },
        {
          "name": "Four paddle timers separate minimum, quarter, half and maximum positions",
          "passed": true
        },
        {
          "name": "Language-card D000 banks isolate writes and E000 RAM remains shared",
          "passed": true
        },
        {
          "name": "C082 restores actual embedded firmware and ROM writes are ignored",
          "passed": true
        },
        {
          "name": "Speaker accesses generate genuine nonzero PCM samples while muted",
          "passed": true
        },
        {
          "name": "Program execution keeps the existing PEL CPU and 96KiB VRAM",
          "passed": true
        },
        {
          "name": "text page1 mono passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "text page1 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "text page1 color passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "text page1 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "text page2 mono passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "text page2 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "text page2 color passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "text page2 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "lores page1 mono passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "lores page1 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "lores page1 color passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "lores page1 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "lores page2 mono passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "lores page2 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "lores page2 color passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "lores page2 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "hires page1 mono passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "hires page1 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "hires page1 color passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "hires page1 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "hires page2 mono passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "hires page2 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "hires page2 color passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "hires page2 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "mixed page1 mono passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "mixed page1 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "mixed page1 color passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "mixed page1 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "mixed page2 mono passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "mixed page2 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "mixed page2 color passes source→PEL planes→common renderer",
          "passed": true
        },
        {
          "name": "mixed page2 unchanged frame does not rewrite VRAM",
          "passed": true
        },
        {
          "name": "Page flipping changes actual rendered contents",
          "passed": true
        },
        {
          "name": "Reset returns the same CPU and shared VRAM renderer to the native console",
          "passed": true
        },
        {
          "name": "No browser errors",
          "passed": true
        }
      ],
      "diagnostic": {
        "bytes": 960,
        "sha256": "cd3934fd134532bd6d2b5be2f3f9e1e317e1e4189865c9854fdf59db25b52296",
        "nativeResults": [
          203,
          75,
          128,
          0,
          128,
          0,
          128,
          128,
          128,
          0,
          0,
          128,
          128,
          0,
          0,
          0,
          0,
          34,
          51,
          17,
          51,
          111,
          111,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          165
        ],
        "referenceResults": [
          203,
          75,
          128,
          0,
          128,
          0,
          128,
          128,
          128,
          0,
          0,
          128,
          128,
          0,
          0,
          0,
          0,
          34,
          51,
          17,
          51,
          111,
          111,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          165
        ],
        "speaker": {
          "available": true,
          "enabled": false,
          "contextState": "not-created",
          "speakerTransitions": 272,
          "sampleBuffers": 27,
          "nonzeroSamples": 18150,
          "playedBuffers": 0,
          "queuedBuffers": 0
        }
      },
      "videoCases": [
        {
          "mode": "text",
          "page": 1,
          "color": false,
          "height": 200,
          "canvasSHA256": "e41d1a2a93a037baeb974c29c9e013001e6fc0ffa710423c88302ff88bc5a5e3",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "text",
          "page": 1,
          "color": true,
          "height": 400,
          "canvasSHA256": "4913b6d2362b55fa66c02bdc07c56a6b628b114663f3bf24e8fee2ba3000a26f",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "text",
          "page": 2,
          "color": false,
          "height": 200,
          "canvasSHA256": "35b6229b3334551312b2275999256733acef6ed0fbdb342396caed7670d659f1",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "text",
          "page": 2,
          "color": true,
          "height": 400,
          "canvasSHA256": "87a4697e84d11bfd8de97002691fd3acc68467e71e07bc77fd1730d127c20418",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "lores",
          "page": 1,
          "color": false,
          "height": 200,
          "canvasSHA256": "3793118248902d516017597dc44a779604404f2287af5b24ac59c4e5df8538c0",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "lores",
          "page": 1,
          "color": true,
          "height": 400,
          "canvasSHA256": "a7cb4e71962b906d9d32167ed260fedce93c960dfdb8b21ba22d48a4bc015655",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "lores",
          "page": 2,
          "color": false,
          "height": 200,
          "canvasSHA256": "09acea0296ae4a348790c27faaeb00284b82f6b4e418d78d4b5c2c36fff2c2ae",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "lores",
          "page": 2,
          "color": true,
          "height": 400,
          "canvasSHA256": "0bcbb0de2dcef5fbae15d5343fd3b9fbb634caa388ce760c786aa128e37811d0",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "hires",
          "page": 1,
          "color": false,
          "height": 200,
          "canvasSHA256": "18369150d72194ef5bfb2e25ca8a7a9363938f6723a5b20edecbaa3eb580c2e3",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "hires",
          "page": 1,
          "color": true,
          "height": 400,
          "canvasSHA256": "f63b651cbe681b724e6db105b38616a8a7d085ac3bf66be202349397f1834c52",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "hires",
          "page": 2,
          "color": false,
          "height": 200,
          "canvasSHA256": "2dfec6ec6abe1d14b1d1b183d44b698990c8c4f7f04b36c2662e9c73272648af",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "hires",
          "page": 2,
          "color": true,
          "height": 400,
          "canvasSHA256": "4e598883a5911875c9b90723084939c8c75e5c31b3f9f327e31c68dcfa505ba4",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "mixed",
          "page": 1,
          "color": false,
          "height": 200,
          "canvasSHA256": "250f0e6ebc2ee4ff0dc802648385868c0d76c26f33090cbbdbd0788cd1e4f414",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "mixed",
          "page": 1,
          "color": true,
          "height": 400,
          "canvasSHA256": "2e4f203f822a512317e1db4cf6083daf8cb870a22f714c58842b6d133804a999",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "mixed",
          "page": 2,
          "color": false,
          "height": 200,
          "canvasSHA256": "abee5c3ef6c4167acfbea76152e0882c6dfeabab8f4a0e0c33e52c91d693096f",
          "pixelMismatches": 0,
          "planeMismatches": 0
        },
        {
          "mode": "mixed",
          "page": 2,
          "color": true,
          "height": 400,
          "canvasSHA256": "76d1181b666d181eee306836961cd5eb21a88932103b95e83b9b294f02761fb5",
          "pixelMismatches": 0,
          "planeMismatches": 0
        }
      ],
      "errors": []
    },
    "peripherals": {
      "date": "2026-10-14",
      "version": "0.4.0",
      "status": "passed",
      "checks": [
        {
          "name": "Native monitor does not pretend to expose unverified PEL peripheral registers",
          "passed": true
        },
        {
          "name": "A user gesture activates WebAudio and real C030 code schedules nonzero audio buffers",
          "passed": true
        },
        {
          "name": "Mute cancels queued playback while the CPU continues generating samples",
          "passed": true
        },
        {
          "name": "Pause cancels pending audio buffers",
          "passed": true
        },
        {
          "name": "All four sliders feed actual paddle inputs",
          "passed": true
        },
        {
          "name": "Mouse X/Y feed paddle0/1 without stepping the CPU",
          "passed": true
        },
        {
          "name": "The selected second pair feeds paddle2/3 and preserves paddle0/1",
          "passed": true
        },
        {
          "name": "PB0 keydown reaches the actual I/O bit",
          "passed": true
        },
        {
          "name": "PB0 keyup releases the actual I/O bit",
          "passed": true
        },
        {
          "name": "PB1 keydown reaches the actual I/O bit",
          "passed": true
        },
        {
          "name": "PB1 keyup releases the actual I/O bit",
          "passed": true
        },
        {
          "name": "PB2 keydown reaches the actual I/O bit",
          "passed": true
        },
        {
          "name": "PB2 keyup releases the actual I/O bit",
          "passed": true
        },
        {
          "name": "Losing focus releases game-port buttons",
          "passed": true
        },
        {
          "name": "Center restores all four inputs to half range",
          "passed": true
        },
        {
          "name": "Native reset disables sound controls and restores the monitor profile",
          "passed": true
        },
        {
          "name": "Returning to Apple after native reset keeps audio muted",
          "passed": true
        },
        {
          "name": "Real touch drag controls the selected paddles",
          "passed": true
        },
        {
          "name": "The mobile page has no horizontal overflow",
          "passed": true
        },
        {
          "name": "Local file:// peripheral controls reach the same CPU bus",
          "passed": true
        },
        {
          "name": "No browser errors",
          "passed": true
        }
      ],
      "audible": {
        "available": true,
        "enabled": true,
        "contextState": "running",
        "speakerTransitions": 440,
        "sampleBuffers": 20,
        "nonzeroSamples": 20480,
        "playedBuffers": 5,
        "queuedBuffers": 5
      },
      "muted": {
        "available": true,
        "enabled": false,
        "contextState": "running",
        "speakerTransitions": 564,
        "sampleBuffers": 22,
        "nonzeroSamples": 22518,
        "playedBuffers": 5,
        "queuedBuffers": 0
      },
      "pause": {
        "available": true,
        "enabled": true,
        "contextState": "running",
        "speakerTransitions": 688,
        "sampleBuffers": 25,
        "nonzeroSamples": 25585,
        "playedBuffers": 8,
        "queuedBuffers": 0
      },
      "mobilePositions": [
        0.9000000340978527,
        0.2,
        0.5,
        0.5
      ],
      "errors": []
    },
    "cpu": {
      "date": "2026-10-14",
      "version": "0.4.0",
      "status": "passed",
      "validBCDArithmeticCases": 40000,
      "checks": [
        {
          "name": "ADC/SBC results and carry for all valid two-digit BCD operands and both carry states",
          "passed": true
        },
        {
          "name": "IRQ is masked by SEI",
          "passed": true
        },
        {
          "name": "NMI enters ROM vector despite interrupt masking and RTI restores stack/status",
          "passed": true
        },
        {
          "name": "Unmasked IRQ enters ROM vector; NMOS decimal flag and RTI state survive",
          "passed": true
        }
      ],
      "scope": "Actual pinned NMOS core and new native bus; valid BCD coverage, not all invalid BCD flags or original PEL interrupt wiring",
      "nativeBundleSHA256": "dfce7aca596d5989ce534023e3731a5781a24b312f92965f69608bba9c1e9080"
    },
    "native": {
      "schema": 1,
      "subject": "Experimental PEL native NMOS6502 bus",
      "historicalAuthenticityVerified": false,
      "checks": [
        {
          "name": "NMOS CPU reset vector and ROM execution produce pixels",
          "pass": true
        },
        {
          "name": "CPU keyboard polling and acknowledgment consume native YUASCII",
          "pass": true
        },
        {
          "name": "Original Orao glyph positions translate all Croatian uppercase input",
          "pass": true
        },
        {
          "name": "ROM writes are ignored and both ROM banks have distinct vectors",
          "pass": true
        },
        {
          "name": "Native I/O leaves live original FF00 graphics addresses in ROM",
          "pass": true
        },
        {
          "name": "Full 256 KiB CPU port access with stable lower memory and upper bank overlay",
          "pass": true
        },
        {
          "name": "Color card displays 640×400 RGB bitplanes and mono uses plane0",
          "pass": true
        },
        {
          "name": "VRAM pointer wraps at physical 32 KiB plane boundary",
          "pass": true
        },
        {
          "name": "CPU-selected display start scrolls actual pixels with circular active bitmap",
          "pass": true
        },
        {
          "name": "Text diagnostics reflect firmware mirror without affecting pixels",
          "pass": true
        },
        {
          "name": "CPU decimal arithmetic remains NMOS 6502 behavior",
          "pass": true
        }
      ],
      "bundle": {
        "path": "native/pel-native.js",
        "sha256": "dfce7aca596d5989ce534023e3731a5781a24b312f92965f69608bba9c1e9080"
      },
      "checkCount": 11,
      "passed": true
    },
    "rom": {
      "date": "2026-10-14",
      "status": "passed",
      "scope": "CPU executes reconstructed ROM; historical PEL identity not verified",
      "romSHA256": "585e3017b04137d11be8301821ba791b2a7875f74e8c8099f3aca4671e7d8414",
      "nativeBundleSHA256": "dfce7aca596d5989ce534023e3731a5781a24b312f92965f69608bba9c1e9080",
      "checks": [
        {
          "name": "ROM boots native manager and CPU writes native bitmap",
          "passed": true
        },
        {
          "name": "Retained floating-point BASIC evaluates expression",
          "passed": true
        },
        {
          "name": "Stored program tokenization, FOR/NEXT, LIST, RUN and native scrolling",
          "passed": true
        },
        {
          "name": "INPUT in stored program and RETURN to system manager",
          "passed": true
        },
        {
          "name": "Native physical RAM bank commands reach full expansion",
          "passed": true
        },
        {
          "name": "Croatian glyphs and color console use ROM rendering",
          "passed": true
        },
        {
          "name": "Color console scroll advances display start without rebuilding all glyphs",
          "passed": true
        }
      ]
    },
    "ui": {
      "native_boot": {
        "mode": "pel",
        "version": "0.4.0",
        "nativeVersion": "0.4.0",
        "clockHz": 2000000,
        "text": "IMPULS - 9010 / ORAO 64\nPOKUSNI PEL ROM 0.4 - NIJE IZVORNI DUMP\nBOS/SM PREDLOZAK + EAGLE BASIC IZ ORLA 32\nZA UPUTE UPIŠI HELP; BASIC ZA PROGRAMIRANJE.\n\nSM>",
        "cpu": {
          "a": 0,
          "x": 0,
          "y": 4,
          "s": 39,
          "pc": 49413,
          "sp": 253,
          "cycles": 4100003
        },
        "appleABI": {
          "available": true,
          "enabled": false,
          "version": "0.4.0",
          "services": [
            {
              "name": "COUT",
              "address": 65005
            },
            {
              "name": "COUT1",
              "address": 65008
            },
            {
              "name": "RDKEY",
              "address": 64780
            },
            {
              "name": "KEYIN",
              "address": 64795
            },
            {
              "name": "GETLNZ",
              "address": 64871
            },
            {
              "name": "GETLN",
              "address": 64874
            },
            {
              "name": "CROUT",
              "address": 64910
            },
            {
              "name": "HOME",
              "address": 64600
            },
            {
              "name": "SETTXT",
              "address": 64313
            },
            {
              "name": "SETGR",
              "address": 64320
            },
            {
              "name": "PLOT",
              "address": 63488
            },
            {
              "name": "SETCOL",
              "address": 63588
            },
            {
              "name": "WAIT",
              "address": 64680
            },
            {
              "name": "BELL",
              "address": 65338
            },
            {
              "name": "SETKBD",
              "address": 65161
            },
            {
              "name": "SETVID",
              "address": 65171
            },
            {
              "name": "INIT",
              "address": 64303
            },
            {
              "name": "SETNORM",
              "address": 65156
            },
            {
              "name": "HGR",
              "address": 62434
            },
            {
              "name": "HGR2",
              "address": 62424
            },
            {
              "name": "HPLOT",
              "address": 62551
            }
          ],
          "overlaySpans": 0,
          "source": "packed-Apple-II+-ROM-executed-by-same-NMOS-6502",
          "appleHardwareIO": true,
          "fullAppleROM": true,
          "historicalPELImplementationVerified": false
        },
        "videoWrites": 101928,
        "originalPELROM": false,
        "reconstruction": true
      },
      "original_orao_basic_and_croatian_input_preserved": true,
      "checkbox_enables_apple_hardware_on_same_cpu": {
        "available": true,
        "enabled": true,
        "romOffset": 20480,
        "romBytes": 12288,
        "sameCPU": true,
        "sameLowerRAM": true,
        "fullAppleROM": true,
        "hardwareIO": true,
        "videoConverter": "hypothetical-280x192-to-640x200-or-640x400",
        "languageCard": {
          "bank2": true,
          "readRAM": false,
          "writeRAM": false
        },
        "expansionMappedInApplePersonality": false,
        "historicalPELImplementationVerified": false,
        "personality": "apple-II+-compatible",
        "cpuIdentityPreserved": true
      },
      "disabling_calls_restores_monitor": true,
      "reset_restores_pel_monitor_and_synchronizes_checkbox": true,
      "native_binary_calls_and_keyboard": {
        "awaiting": {
          "state": "pel",
          "text": "APPLE II+ U PEL ROMU\nHOME / COUT / RDKEY / WAIT\nTIPKA:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
          "pc": 64804,
          "keyboardPending": 0,
          "enabled": true,
          "test": {
            "title": "Apple II+ sistemski pozivi u PEL ROM-u",
            "address": 2048,
            "entry": 2048,
            "expected": {
              "keyAddress": 2544,
              "doneAddress": 2545,
              "waitingText": "TIPKA:",
              "plotAddress": 1340,
              "plotNibble": 5
            }
          }
        },
        "completed": {
          "text": "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@E@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n\n\n\n",
          "pc": 2124,
          "keyPending": 0,
          "videoWrites": 415536,
          "expected": {
            "keyAddress": 2544,
            "doneAddress": 2545,
            "waitingText": "TIPKA:",
            "plotAddress": 1340,
            "plotNibble": 5
          },
          "key": 203,
          "done": 1,
          "plot": 5,
          "cpuIdentityPreserved": true
        }
      },
      "repeated_rom_test_clears_old_completion_through_cpu_execution": true,
      "mobile_no_horizontal_overflow": {
        "width": 390,
        "viewport": 390
      },
      "memory_color_and_basic_after_reset": true,
      "native_apple_game_keyboard_and_color": {
        "nativeBeforeShip": 20,
        "nativeAfterShip": 21
      },
      "dos_binary_upload_automatically_uses_native_apple_compatibility": true,
      "ambiguous_raw_binary_rejected": true,
      "separate_apple_reference_preserved": {
        "beforeShip": 20,
        "afterShip": 21
      },
      "file_local_native_calls_and_reset": true,
      "errors": {
        "browser": [],
        "local_file": [],
        "failed_requests": []
      },
      "tested_files": {
        "firmware/pel-rom-v0.4.bin": {
          "bytes": 32768,
          "sha256": "585e3017b04137d11be8301821ba791b2a7875f74e8c8099f3aca4671e7d8414"
        },
        "firmware/rom.js": {
          "bytes": 116893,
          "sha256": "fdc20522cfc044e0089386843550a37cec4a89b3e483536e6e73f6c7e37ca093"
        },
        "firmware/apple-call-test.js": {
          "bytes": 873,
          "sha256": "2761ae106b1b31605df310baf6ba6dd4043336aacdd36897b04fbd110c7bf18b"
        },
        "native/pel-native.js": {
          "bytes": 110818,
          "sha256": "dfce7aca596d5989ce534023e3731a5781a24b312f92965f69608bba9c1e9080"
        },
        "app.js": {
          "bytes": 29256,
          "sha256": "76c9563c9ffc0a734723f2aed8395df354ed2316c41cdc550d2957d9e99186a7"
        },
        "index.html": {
          "bytes": 12964,
          "sha256": "dc687b435b29b04a978119c46910c345e2aeeed7c63539597993031ebc6b021c"
        },
        "style.css": {
          "bytes": 13474,
          "sha256": "92433db35b9cfc16786e7eb896fe85881b6cea87de4a0c4cdf0554b48fb00aac"
        }
      }
    },
    "sabotage": {
      "date": "2026-10-14",
      "version": "0.4.0",
      "profile": "Apple II+ compatible PEL hardware personality on the unchanged native 6502 instance; experimental combined 32 KiB firmware",
      "fixture": {
        "name": "sabotage-mark-allen-1981.dsk",
        "bytes": 143360,
        "sha256": "ef76d4cdebf06e69c4fe9ff3207a28e66175ba2298cfd40d13e3b4366bbf4a71",
        "source": "https://mirrors.apple2.org.za/ftp.apple.asimov.net/images/games/action/Sabotage.dsk",
        "scope": "Local compatibility fixture outside publication; commercial original, redistribution license not established",
        "authenticity": "Preservation archive image; not authenticated as a byte-identical original physical disk"
      },
      "nativeDiskIIBoot": true,
      "sameNativeCPU": true,
      "separateReferenceCPUUnchanged": true,
      "gameInstructionIdentityVerified": true,
      "titleCaptured": true,
      "titleEvidence": "Original game-generated instruction screen with SABOTAGE and BY MARK ALLEN header",
      "boot": [
        {
          "cycles": 2733820,
          "pc": 47305,
          "video": {
            "width": 640,
            "height": 400,
            "planes": 3,
            "colors": 8,
            "stride": 80,
            "text": true,
            "mixed": false,
            "hires": false,
            "page": 1,
            "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
            "physicalVRAMBytes": 98304,
            "renderer": "PEL-planar-VRAM",
            "adapter": {
              "active": true,
              "frames": 8,
              "changedBytes": 89570,
              "hardwareVerified": false
            },
            "appleSourceRaster": {
              "width": 560,
              "height": 384,
              "logicalWidth": 280,
              "logicalHeight": 192
            }
          }
        },
        {
          "cycles": 4733820,
          "pc": 47442,
          "video": {
            "width": 640,
            "height": 400,
            "planes": 3,
            "colors": 8,
            "stride": 80,
            "text": true,
            "mixed": false,
            "hires": false,
            "page": 1,
            "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
            "physicalVRAMBytes": 98304,
            "renderer": "PEL-planar-VRAM",
            "adapter": {
              "active": true,
              "frames": 9,
              "changedBytes": 96170,
              "hardwareVerified": false
            },
            "appleSourceRaster": {
              "width": 560,
              "height": 384,
              "logicalWidth": 280,
              "logicalHeight": 192
            }
          }
        },
        {
          "cycles": 6733825,
          "pc": 45493,
          "video": {
            "width": 640,
            "height": 400,
            "planes": 3,
            "colors": 8,
            "stride": 80,
            "text": true,
            "mixed": false,
            "hires": false,
            "page": 1,
            "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
            "physicalVRAMBytes": 98304,
            "renderer": "PEL-planar-VRAM",
            "adapter": {
              "active": true,
              "frames": 10,
              "changedBytes": 102824,
              "hardwareVerified": false
            },
            "appleSourceRaster": {
              "width": 560,
              "height": 384,
              "logicalWidth": 280,
              "logicalHeight": 192
            }
          }
        },
        {
          "cycles": 8733827,
          "pc": 45424,
          "video": {
            "width": 640,
            "height": 400,
            "planes": 3,
            "colors": 8,
            "stride": 80,
            "text": true,
            "mixed": false,
            "hires": false,
            "page": 1,
            "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
            "physicalVRAMBytes": 98304,
            "renderer": "PEL-planar-VRAM",
            "adapter": {
              "active": true,
              "frames": 11,
              "changedBytes": 102824,
              "hardwareVerified": false
            },
            "appleSourceRaster": {
              "width": 560,
              "height": 384,
              "logicalWidth": 280,
              "logicalHeight": 192
            }
          }
        },
        {
          "cycles": 10733829,
          "pc": 47394,
          "video": {
            "width": 640,
            "height": 400,
            "planes": 3,
            "colors": 8,
            "stride": 80,
            "text": false,
            "mixed": false,
            "hires": true,
            "page": 1,
            "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
            "physicalVRAMBytes": 98304,
            "renderer": "PEL-planar-VRAM",
            "adapter": {
              "active": true,
              "frames": 12,
              "changedBytes": 168486,
              "hardwareVerified": false
            },
            "appleSourceRaster": {
              "width": 560,
              "height": 384,
              "logicalWidth": 280,
              "logicalHeight": 192
            }
          }
        },
        {
          "cycles": 12733832,
          "pc": 44203,
          "video": {
            "width": 640,
            "height": 400,
            "planes": 3,
            "colors": 8,
            "stride": 80,
            "text": false,
            "mixed": false,
            "hires": true,
            "page": 1,
            "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
            "physicalVRAMBytes": 98304,
            "renderer": "PEL-planar-VRAM",
            "adapter": {
              "active": true,
              "frames": 13,
              "changedBytes": 192652,
              "hardwareVerified": false
            },
            "appleSourceRaster": {
              "width": 560,
              "height": 384,
              "logicalWidth": 280,
              "logicalHeight": 192
            }
          }
        },
        {
          "cycles": 14733834,
          "pc": 44188,
          "video": {
            "width": 640,
            "height": 400,
            "planes": 3,
            "colors": 8,
            "stride": 80,
            "text": false,
            "mixed": false,
            "hires": true,
            "page": 1,
            "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
            "physicalVRAMBytes": 98304,
            "renderer": "PEL-planar-VRAM",
            "adapter": {
              "active": true,
              "frames": 14,
              "changedBytes": 218472,
              "hardwareVerified": false
            },
            "appleSourceRaster": {
              "width": 560,
              "height": 384,
              "logicalWidth": 280,
              "logicalHeight": 192
            }
          }
        },
        {
          "cycles": 16733834,
          "pc": 47444,
          "video": {
            "width": 640,
            "height": 400,
            "planes": 3,
            "colors": 8,
            "stride": 80,
            "text": false,
            "mixed": false,
            "hires": true,
            "page": 1,
            "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
            "physicalVRAMBytes": 98304,
            "renderer": "PEL-planar-VRAM",
            "adapter": {
              "active": true,
              "frames": 15,
              "changedBytes": 218472,
              "hardwareVerified": false
            },
            "appleSourceRaster": {
              "width": 560,
              "height": 384,
              "logicalWidth": 280,
              "logicalHeight": 192
            }
          }
        },
        {
          "cycles": 18733836,
          "pc": 16452,
          "video": {
            "width": 640,
            "height": 400,
            "planes": 3,
            "colors": 8,
            "stride": 80,
            "text": true,
            "mixed": false,
            "hires": true,
            "page": 1,
            "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
            "physicalVRAMBytes": 98304,
            "renderer": "PEL-planar-VRAM",
            "adapter": {
              "active": true,
              "frames": 16,
              "changedBytes": 276848,
              "hardwareVerified": false
            },
            "appleSourceRaster": {
              "width": 560,
              "height": 384,
              "logicalWidth": 280,
              "logicalHeight": 192
            }
          }
        }
      ],
      "playing": {
        "cycles": 19083839,
        "pc": 21581,
        "video": {
          "width": 640,
          "height": 400,
          "planes": 3,
          "colors": 8,
          "stride": 80,
          "text": false,
          "mixed": false,
          "hires": true,
          "page": 1,
          "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
          "physicalVRAMBytes": 98304,
          "renderer": "PEL-planar-VRAM",
          "adapter": {
            "active": true,
            "frames": 18,
            "changedBytes": 310712,
            "hardwareVerified": false
          },
          "appleSourceRaster": {
            "width": 560,
            "height": 384,
            "logicalWidth": 280,
            "logicalHeight": 192
          }
        },
        "desiredGun": 4,
        "actualGun": 4,
        "score": 0,
        "shellFlags": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "bitmapSHA256": "6a92c5830b516679d082c171ec974f26f0308b87e19d68358d1aa2f28dff8a47"
      },
      "left": {
        "cycles": 19183842,
        "pc": 25512,
        "video": {
          "width": 640,
          "height": 400,
          "planes": 3,
          "colors": 8,
          "stride": 80,
          "text": false,
          "mixed": false,
          "hires": true,
          "page": 1,
          "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
          "physicalVRAMBytes": 98304,
          "renderer": "PEL-planar-VRAM",
          "adapter": {
            "active": true,
            "frames": 19,
            "changedBytes": 310824,
            "hardwareVerified": false
          },
          "appleSourceRaster": {
            "width": 560,
            "height": 384,
            "logicalWidth": 280,
            "logicalHeight": 192
          }
        },
        "desiredGun": 10,
        "actualGun": 10,
        "score": 0,
        "shellFlags": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "bitmapSHA256": "c260544b480295197cf66723ab5d0ba40d123b7219d7d4ee0df5a211c61966c7"
      },
      "right": {
        "cycles": 19283842,
        "pc": 21234,
        "video": {
          "width": 640,
          "height": 400,
          "planes": 3,
          "colors": 8,
          "stride": 80,
          "text": false,
          "mixed": false,
          "hires": true,
          "page": 1,
          "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
          "physicalVRAMBytes": 98304,
          "renderer": "PEL-planar-VRAM",
          "adapter": {
            "active": true,
            "frames": 20,
            "changedBytes": 310914,
            "hardwareVerified": false
          },
          "appleSourceRaster": {
            "width": 560,
            "height": 384,
            "logicalWidth": 280,
            "logicalHeight": 192
          }
        },
        "desiredGun": 4,
        "actualGun": 4,
        "score": 0,
        "shellFlags": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "bitmapSHA256": "c804174ebfd06e7065ba6a61f5edd38ab5ff1b92dfb4cc9475a69eeb291b79df"
      },
      "beforeFire": {
        "cycles": 19683844,
        "pc": 21602,
        "video": {
          "width": 640,
          "height": 400,
          "planes": 3,
          "colors": 8,
          "stride": 80,
          "text": false,
          "mixed": false,
          "hires": true,
          "page": 1,
          "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
          "physicalVRAMBytes": 98304,
          "renderer": "PEL-planar-VRAM",
          "adapter": {
            "active": true,
            "frames": 24,
            "changedBytes": 311240,
            "hardwareVerified": false
          },
          "appleSourceRaster": {
            "width": 560,
            "height": 384,
            "logicalWidth": 280,
            "logicalHeight": 192
          }
        },
        "desiredGun": 28,
        "actualGun": 28,
        "score": 0,
        "shellFlags": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "bitmapSHA256": "7005a7e97acab5c2e87f2172f4b5875bb13cb5ccc0a25211cad806813137fcf5"
      },
      "fired": {
        "cycles": 19713844,
        "pc": 21260,
        "video": {
          "width": 640,
          "height": 400,
          "planes": 3,
          "colors": 8,
          "stride": 80,
          "text": false,
          "mixed": false,
          "hires": true,
          "page": 1,
          "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
          "physicalVRAMBytes": 98304,
          "renderer": "PEL-planar-VRAM",
          "adapter": {
            "active": true,
            "frames": 25,
            "changedBytes": 311346,
            "hardwareVerified": false
          },
          "appleSourceRaster": {
            "width": 560,
            "height": 384,
            "logicalWidth": 280,
            "logicalHeight": 192
          }
        },
        "desiredGun": 28,
        "actualGun": 28,
        "score": 0,
        "shellFlags": [
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "bitmapSHA256": "fc5aacb8260cd3bfaf9d8e3c82bd5dab6ea98b148141615177d5324c32b2376b"
      },
      "later": {
        "cycles": 20713844,
        "pc": 21527,
        "video": {
          "width": 640,
          "height": 400,
          "planes": 3,
          "colors": 8,
          "stride": 80,
          "text": false,
          "mixed": false,
          "hires": true,
          "page": 1,
          "source": "Apple-video-adapter-to-PEL-VRAM; shared-PEL-renderer",
          "physicalVRAMBytes": 98304,
          "renderer": "PEL-planar-VRAM",
          "adapter": {
            "active": true,
            "frames": 26,
            "changedBytes": 311396,
            "hardwareVerified": false
          },
          "appleSourceRaster": {
            "width": 560,
            "height": 384,
            "logicalWidth": 280,
            "logicalHeight": 192
          }
        },
        "desiredGun": 28,
        "actualGun": 28,
        "score": 0,
        "shellFlags": [
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "bitmapSHA256": "ed41c48f7dc7d233ecb21b327d82d9d3250a729569e8385a2478c94ba200a7a0"
      },
      "controls": {
        "left": "D",
        "right": "F",
        "fire": "Space (any key other than D/F)",
        "leftAndRightChange6502State": true,
        "fireCreates6502Entity": true
      },
      "render": {
        "colorWidth": 640,
        "colorHeight": 400,
        "monoWidth": 640,
        "monoHeight": 200,
        "hiresPage": 1,
        "colorSHA256": "acc7b2089594f425df5629b11670f79bae0efa96fd9076830ce241dbdeb66f69",
        "monoSHA256": "6daf2a659ff43310eb95cca6a5f52df587ad1563e9bc4b05e7f4b653b0c6697d",
        "colorToggleChangesPixels": true,
        "simulationCyclesStableDuringColorToggle": true
      },
      "scope": "This test confirms that the reconstructed PEL emulator can execute an original Apple disk on its existing CPU using the embedded Apple ROM and experimental Apple-compatible bus. It does not establish the historical PEL ROM or bank/video decoder map.",
      "witness": {
        "source": "User recollection in this chat",
        "claim": "Remembers Apple II Sabotage running on Impuls",
        "status": "Historical witness; not a ROM dump, measured decoder map or technical proof of the reconstructed PEL firmware"
      },
      "errors": []
    },
    "homepage": {
      "date": "2026-10-14",
      "fiveVariants": true,
      "nativeROMActivation": true,
      "correctCroatianBootText": true,
      "AppleROMCallsWithinNativeSameCPU": true,
      "priorVariantStillAvailable": true,
      "originalEmulatorAndThreeTapeGroupsStillReady": true,
      "errors": []
    }
  }
}
