Telidraw NAPLPS toolkit

Telidraw

A NAPLPS toolkit and editor for the modern web. Parse, render, author and export ANSI X3.110-1983 videotex artwork.

Open the editor Browse 374 renders

NAPLPS πŸ“Ίβœ¨

A modern .NET 10 toolkit for the North American Presentation Level Protocol Syntax, ANSI X3.110-1983 β€” with live-rendering examples from the historical corpus. Click any tile below to open the full-size APNG; each is a bit-identical render from a real .nap file in Examples/.

πŸ–ΌοΈ Browse the full visual corpus β†’

All 372 renders in one gallery, with transport controls to scrub through the drawing sequence frame by frame, and before/after diffs for every recent change to the renderer. For background on the format, Prodigy, and Telidon, see the Wikipedia articles: NAPLPS, Prodigy (online service), Telidon. ⚠️WARNING:⚠️ These are various amazing rabbit holes, be warned! πŸ‡πŸ•³οΈ


girl.nap

dragon.nap

seaport.nap

earth.nap

SAIL.NAP

santa.nap

A from-scratch, spec-focused parser, renderer, encoder, and authoring toolchain, with 375+ historical example files. The 1983 BYTE Magazine NAPLPS articles and historical spec documents are bundled in docs/ as reference. πŸ“š

Current version 0.12.0
Tests 800+ unit tests, plus round-trip Telidraw and visual regression baselines across the corpus
Spec coverage 98% (see docs/gaps.md for needs, and docs/naplps.md for the knowns)

What's in the box πŸ“¦

Quick start πŸš€

# Build everything
					dotnet build NAPLPS.sln

					# Launch the editor
					dotnet run --project Telidraw

					# Compile a .td source file to .nap
					dotnet run --project Telidraw -- compile path/to/scene.td -o path/to/scene.nap

					# Export .nap as APNG
					dotnet run --project Telidraw -- export path/to/scene.nap --format=apng

					# Dump file metadata
					dotnet run --project Telidraw -- info path/to/scene.nap
				

Open any file from Examples/ to see it render. The repo includes 375+ historical NAPLPS files, plus hand-authored Telidraw templates in Examples/telidraw/ (hello, house, star, spirograph, snowflake, clock, palette demo, menu page). 🎨

Toggle View > Toolbox to enter authoring mode. Toggle View > Properties for the attribute panel. The Telidraw source pane is accessible from the main canvas area when a file is loaded; edits sync back to the visual canvas.

Documentation map πŸ—ΊοΈ

Doc What's in it
README.md You are here. Cliff notes and pointers.
Visual corpus πŸ–ΌοΈ Every render in the corpus, frame-by-frame playback, and the change history of the renderer
docs/app.md πŸ–₯️ The editor: tools, panels, menus, keyboard shortcuts, CLI commands, export formats, network mode, macro recorder, DRCS / Texture designers
docs/naplps.md πŸ“– The spec: byte-stream layout, G-set invocation, ESC sequences, PDI command family, coordinate encoding, text / color / texture semantics, mosaic + DRCS, plus how the parser implements the state machine
docs/telidraw.md ✍️ The DSL: keyword reference, directives, block structure, expression grammar, round-trip guarantees
docs/quickref.md πŸ”– Normative reference: opcode tables, operand layouts, in-use table rules
docs/gaps.md πŸ•³οΈ Spec gaps and deliberate deviations, by category
docs/tools.md πŸ”§ Developer workflow: running tests, visual regression workflow, AOT status, dev commands, native interop examples
tools/aot/README.md 🌐 Ten native interop demos (C, C++, Rust, Python, Node.js, Go, Zig, PHP, Ruby, Swift) that link against the AOT-published library
IDEAS.md πŸ’‘ Ideas and open TODOs
docs/ πŸ“š Original source material: 1983 BYTE Magazine NAPLPS articles, ANSI X3.110-1983 standard PDF

Key invariants βœ…

Every commit must maintain:

  1. βœ… All unit tests pass (spec, commands, DSL, encoder, decoder, Telidraw compiler, renderer)
  2. πŸ” Telidraw round-trip byte-identical across the full corpus (.nap β†’ decompile β†’ recompile β†’ same bytes)
  3. πŸ’Ύ Disk-honest (FromFile β†’ ToBytes matches source bytes; the parser preserves every byte, even spec-undefined ones, for lossless round-trip)
  4. πŸ–ΌοΈ Visual regression baselines pass (APNG bit-identical to a curated corpus)
  5. πŸ§ͺ Editor launches, renders, saves (smoke test)

Running the full suite:

dotnet test NAPLPSTests/NAPLPSTests.csproj
					

License πŸ“„

MIT. See LICENSE.

Contributing 🀝

Pull requests welcome, especially for:

Please run the full test suite before submitting. The round-trip and visual regression tests catch most regressions that type-level unit tests miss. 🎯