==============================================================
 A-NET SIXEL-TV 9000 — Source Code
==============================================================

Go source for the sixel YouTube BBS door.  Single file, ~1000
lines, no build system beyond the Go toolchain.

--------------------------------------------------------------
 FILES IN THIS ARCHIVE
--------------------------------------------------------------
  main.go              The whole door (single file)
  go.mod / go.sum      Go module (deps pinned)
  testdata/door32.sys  Fake drop file for local testing
  run-local.sh         Socat harness that simulates a BBS
                       on localhost:2325 for dev testing
  build-static.sh      Builds the Linux static binary
  build-windows.sh     Cross-compiles all 4 Windows variants
  README.txt           This file
  FILE_ID.DIZ          Short description

--------------------------------------------------------------
 BUILD REQUIREMENTS
--------------------------------------------------------------
  * Go 1.20 or later  (1.20 needed for Windows 7 targets;
                       1.22+ required for Windows 10+ targets)
  * Internet access the first time, to fetch go-sixel
  * For local testing: socat, libsixel-bin (img2sixel), a
    sixel terminal (SyncTERM / foot / WezTerm / xterm -ti 340)

The build scripts assume Go is at /usr/lib/go-1.22/bin/go;
override with GO=/path/to/go if yours lives elsewhere.

--------------------------------------------------------------
 ONE-SHOT BUILD
--------------------------------------------------------------
  ./build-static.sh           # Linux x86_64 static binary
  ./build-windows.sh          # all 4 Windows .exe variants

Outputs end up in the same directory:

  sixeldoor-static          (Linux)
  sixeldoor.exe             (Win10+ 64-bit)
  sixeldoor-32.exe          (Win10+ 32-bit)
  sixeldoor-win7-64.exe     (Win7/8+ 64-bit)
  sixeldoor-win7-32.exe     (Win7/8+ 32-bit)

--------------------------------------------------------------
 LOCAL DEV TESTING
--------------------------------------------------------------

Start a socat listener that spawns the door for each
connection.  From this directory:

    ./run-local.sh

Then connect with SyncTERM:

    Address:     localhost
    Port:        2325
    Connection:  Raw  (not Telnet)
    Emulation:   CP437 / ANSI

Logs land in /tmp/sixeldoor.log.

--------------------------------------------------------------
 ARCHITECTURE
--------------------------------------------------------------

    Client (SyncTERM)
        |
        |  raw TCP (BBS door I/O)
        v
    BBS software  (spawns door with DOOR32.SYS drop file)
        |
        |  stdio
        v
    sixeldoor
       +--  ANSI CRT-TV frame render
       +--  search/URL prompt + dropfile-aware UI
       +--  video pipeline:
       |      yt-dlp | ffmpeg (image2pipe PPM)
       |               -> go-sixel encoder
       |               -> cursor-positioned writes to stdout
       +--  audio HTTP server (:18080):
             /a/<token> streams MP3 to phone browser

Dependencies:
  * github.com/mattn/go-sixel v0.0.5  (pinned; >= v0.0.9
    requires Go 1.24)

--------------------------------------------------------------
 LICENSE
--------------------------------------------------------------

MIT.  Use, modify, redistribute — just don't blame anyone if
your BBS catches fire.
