本文へ移動
cccskills
無料GitHub で公開

zx80-video-audit

Validate and implement Sinclair ZX80 video emulation in the EMULATORS repository, including CPU-driven display generation, display-file execution, Z80 M1/refresh/HALT/INT interactions, character and inverse-video fetches, line counter and shift register behavior, horizontal and vertical sync, collapsed display files, PAL timing, flicker, and cassette/video coupling. Use when Codex reviews or edits namespace ZX81 code for the /mZX80 model, especially ULA, ULARegisters, MemoryVideoCode, Memory, PortManager, Screen, CPU interrupt timing, raster, or video tests.

インストール方法を見る

含まれるファイル(3)

  • SKILL.md4.5 KB
  • agents/openai.yaml205 B
  • references/zx80-video.md10.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

ZX80 Video Audit

Core Workflow

Treat ZX80 video as a cycle-sensitive collaboration between the Z80, ROM software, memory aliases, and discrete TTL logic, not as a conventional framebuffer.

  1. Read references/zx80-video.md before judging behavior.
  2. Inspect .codex/docs/ZX80Video.pdf when circuit diagrams, oscilloscope traces, pixel synchronization, or porch behavior matter. Render relevant pages because the PDF contains no extractable text.
  3. Confirm the selected machine is /mZX80 (ZX81::Type::_ZX80). Do not silently apply ZX81 NMI or ULA behavior.
  4. Inspect the local implementation paths:
    • include/ZX81/ULA.hpp, src/ZX81/ULA.cpp
    • include/ZX81/ULARegisters.hpp, src/ZX81/ULARegisters.cpp
    • include/ZX81/Memory.hpp, src/ZX81/Memory.cpp
    • include/ZX81/ZX81.hpp, src/ZX81/ZX81.cpp
    • include/ZX81/PortManager.hpp, src/ZX81/PortManager.cpp
    • include/ZX81/Screen.hpp, src/ZX81/Screen.cpp
    • Z80 M1, refresh, HALT, WAIT, INT, and instruction-cycle code under include/FZ80 and src/FZ80
  5. When changing C++ code, also use $emulators-framework-cpp-style.
  6. Separate observed hardware behavior, ROM-dependent scheduling, and host-window cropping. A plausible screenshot does not prove correct bus or interrupt timing.

Audit Priorities

Prioritize correctness in this order:

  • 6.5 MHz pixel clock, 3.25 MHz CPU clock, and two pixels per CPU T-state.
  • Display-file echo and opcode-fetch qualification: address decoding, /M1, memory read, character-byte capture, and forced NOP behavior.
  • Bit 6 pass-through, HALT end-of-line handling, repeated HALT M1/refresh cycles, R-register progression, A6-driven maskable interrupt, and interrupt acknowledge.
  • Character address formation from I=0x0E, character bits 0-5, scanline counter 0-7, ROM glyph fetch, and bit 7 inverse video.
  • Eight-pixel shift-register output without gaps, overlaps, stale bytes, or off-by-one pixels.
  • Collapsed and expanded display-file rows, left alignment, 32-character maximum, and blank remainder after HALT.
  • Horizontal sync placement and line completion; vertical sync and keyboard/cassette coupling.
  • ZX80 flicker semantics: ordinary program execution and key processing pre-empt video generation.
  • PAL frame geometry. Treat the repository's current PAL-only and unexpanded restrictions as implementation scope, not universal hardware facts.

Validation Strategy

Build evidence at three levels:

  1. Bus trace: record CPU cycles with PC, address bus, data before/after interception, /M1, /MREQ, /RFSH, /HALT, /INT, interrupt acknowledge, I, R, and line counter.
  2. Signal trace: record pixel clock, character load, shift output, HSYNC, VSYNC, and composite level transitions.
  3. Rendered result: compare full, collapsed, short, inverse, and checkerboard rows; also test the transition from display generation to user code.

Use small deterministic fixtures before whole programs:

  • One row containing a single normal character followed by HALT.
  • The same glyph inverted with bit 7.
  • Empty, partially expanded, and fully expanded rows.
  • Codes with bit 6 clear versus set, including 0x76.
  • Alternating/checkerboard glyphs to expose pixel-width jitter.
  • A key-processing or computation interval that must blank the ZX80 display.

Report timing with an explicit convention: CPU T-states versus 6.5 MHz pixel/logic clocks, inclusive counter values versus elapsed cycles, and the edge used as line origin.

Change Guardrails

  • Preserve the shared ZX81 namespace while keeping _ZX80 branches explicit where hardware differs.
  • Do not add an NMI generator to ZX80 behavior.
  • Do not replace CPU/bus-driven behavior with direct display-file rendering when cycle-visible effects are in scope.
  • Do not assume standard broadcast porches that the original circuit did not generate.
  • If a source and a trace disagree, preserve the trace, identify model/circuit revision and measurement points, and state the uncertainty.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Validate Commodore 1540/1541/1541C/1541-II compatible disk-drive behavior in EMULATORS, including IEC serial bus protocol, device numbers, KERNAL traps, CBM DOS commands/status, D64 image parsing, BAM/directory/file chains, PETSCII filenames, 6502 drive CPU/ROM/RAM expectations, 6522 VIA wiring, GCR/track/sector geometry, motor/head timing, and compatibility boundaries for 1541-like devices. Use when Codex reviews or edits C64, VIC-20, C264, COMMODORE disk, serial I/O, D64, CBM DOS, IEC, VIA, GCR, or 1541 drive code.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Validate Commodore 64 CIA 6526 emulation in EMULATORS, including CIA1/CIA2 $DC00/$DD00 register behavior, ports, DDRs, keyboard/joystick matrix, IEC/user port, VIC bank selection, timers A/B, underflow timing, PB toggle/pulse output, TOD clock/alarm, serial shift register, FLAG, ICR masks and IRQ/NMI lines. Use when Codex reviews or edits C64 CIA, timers, ports, keyboard, joystick, serial bus, interrupts, TOD, or VIC bank control.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Validate Commodore 64 memory map, PLA/bank switching, 6510 port $0000/$0001 behavior, VIC bank selection, color RAM, ROM/RAM overlays, cartridge mapping, and mirrored I/O in the EMULATORS C64 namespace. Use when Codex reviews or edits C64 memory, PLA, CPU-visible address decoding, VIC-visible memory, color memory, char ROM, cartridge, expansion I/O, or mapped chip register behavior.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Validate Commodore MPS-801 serial dot matrix printer behavior in EMULATORS, including SerialPrinterMPS801 classes and their MatrixPrinterEmulation and SerialPrinterPeripheralSimulation hierarchy, IEC/KERNAL-trap printer routing, device numbers, secondary addresses, PETSCII/character sets, 6x7 glyphs, double width, graphics mode, reverse field, tab and dot positioning, line/page geometry, PostScript output, and fidelity boundaries. Use when Codex reviews or edits COMMODORE MPS801 printer code, generated printer output, PostScript printer templates, C64/VIC-20/C264 serial-printer behavior, or compares implementation against .codex/docs/MPS801.pdf and historical MPS-801 sources.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Validate Commodore MPS-802 and 1526 serial dot matrix printer behavior in EMULATORS, including SerialPrinterMPS802 classes and their MatrixPrinterEmulation and SerialPrinterPeripheralSimulation hierarchy, IEC/KERNAL-trap printer routing, device numbers, secondary-address functions, PETSCII/character sets, 8x8 glyphs, enhanced width, reverse and paging modes, formatter strings, programmable characters, line/page geometry, PostScript output, and fidelity boundaries. Use when Codex reviews or edits COMMODORE MPS802 printer code, generated printer output, PostScript printer templates, C64/VIC-20/C264 serial-printer behavior, or compares implementation against .codex/docs/MPS802.pdf, the MPS-802 user guide, and 1526/MPS-802/4023 service information.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Validate Commodore 64 SID 6581/8580 sound emulation in EMULATORS, including $D400-$D7FF register decoding, voices, frequency, pulse width, control bits, ADSR/envelope behavior, oscillator sync/ring/noise/test, filters, volume DAC/sample clicks, paddles, read-only registers, mirrors, and reSID integration. Use when Codex reviews or edits SID, Sound, audio wrapper, register, filter, waveform, envelope, or mapped SID behavior.

日本語の概要は準備中です。原文の説明を表示しています。

Commnets/EMULATORS102026年10月9日 更新

Commnets のスキルをすべて見る

このスキルの問題を報告する