==============================================================
A-NET SIXEL-TV 9000 - YouTube BBS Door  (Windows 7/8/10/11 x64)
==============================================================

A BBS door for Synchronet or Mystic on Windows.  Users dial in
with SyncTERM (or any other sixel-capable terminal), search
YouTube or paste a URL, and watch the video render inside an
ANSI CRT-TV frame on their screen.

Audio is served out-of-band via a tiny HTTP server built into
the door -- the door shows the user a short URL that they open
on their phone or a second browser tab, and MP3 audio streams
there while the sixel video plays in their BBS window.

--------------------------------------------------------------
 FILES IN THIS ARCHIVE
--------------------------------------------------------------
  sixeldoor.exe   (Windows 7/8/10/11 x64) executable (~5 MB, static)
  run.bat         Wrapper your BBS calls (edit this)
  README.txt      This file
  FILE_ID.DIZ     Short description for BBS file listings

--------------------------------------------------------------
 REQUIREMENTS ON THE BBS SERVER
--------------------------------------------------------------
  * Windows  7, 8, 10, or 11 (64-bit)
  * ffmpeg.exe -- put next to sixeldoor.exe or on PATH
  * yt-dlp.exe -- put next to sixeldoor.exe or on PATH

Recommended download sources (current as of 2026):

  * yt-dlp.exe  (64-bit):  github.com/yt-dlp/yt-dlp/releases
                (32-bit):  same page, grab yt-dlp_x86.exe
                           and rename to yt-dlp.exe

  * ffmpeg.exe  (64-bit):  gyan.dev/ffmpeg/builds/  ("essentials")
                (32-bit):  github.com/sudo-nautilus/FFmpeg-Builds-Win32

Keep yt-dlp CURRENT.  YouTube changes extraction weekly and
stale versions will fail with HTTP 403.  Run it occasionally:

    yt-dlp.exe --update

--------------------------------------------------------------
 INSTALL
--------------------------------------------------------------

1.  Create the target folder and unzip:

      mkdir C:\sbbs\xtrn\ytube
      Unzip this archive to that folder.

2.  Download ffmpeg.exe and yt-dlp.exe (links above) and drop
    them in C:\sbbs\xtrn\ytube\ next to sixeldoor.exe.

3.  Open run.bat in Notepad.  Change the block marked
    "EDIT THESE":

      set SIXELDOOR_HOSTNAME=bbs.yoursite.com

    Replace with your BBS's real public hostname or IP.
    Users open the audio URL on their phone, so this MUST
    resolve from outside your LAN.

4.  Punch a hole in Windows Firewall for the audio port:

      netsh advfirewall firewall add rule ^
        name="sixeldoor audio" dir=in action=allow ^
        protocol=TCP localport=18080

5.  Register the door in Synchronet scfg (on Windows, still
    use scfg.exe):

      External Programs -> Online Programs (Doors) -> (Add)

      Name:                 YouTube (Sixel)
      Internal Code:        SIXELYT
      Command Line:         C:\sbbs\xtrn\ytube\run.bat %f
      BBS Drop File Type:   DOOR32.SYS
      Place Drop File in:   Node Directory
      Intercept I/O:        Yes
      Multiple Concurrent:  Yes
      Native (32-bit):      No

6.  Dial in from SyncTERM and test.  If something misbehaves,
    check the log at:

      %TEMP%\sixeldoor.log
      (typically  C:\Users\<sysop>\AppData\Local\Temp\sixeldoor.log )

--------------------------------------------------------------
 MYSTIC BBS  (Windows)
--------------------------------------------------------------

Mystic speaks DOOR32.SYS natively.  In your door config:

    [door]
    name = YouTube (Sixel)
    cmd  = C:\mystic\doors\sixelyt\run.bat %Pdoor32.sys
    level = 10

--------------------------------------------------------------
 NOTES & LIMITATIONS
--------------------------------------------------------------

* Only sixel-capable terminals render the video.  SyncTERM
  works.  NetRunner / MagiTerm / IGTerm draw the ANSI UI but
  show sixel escape garbage for the video.  The door's
  capability probe catches this on real BBS connections and
  shows a "your terminal doesn't support sixel" screen, then
  disconnects cleanly.

* Concurrent users:  each door process tries to bind TCP port
  18080 for its audio server.  The first user gets 18080;
  subsequent users get OS-assigned high ports.  Open a port
  range in Windows Firewall if you expect concurrent sessions.

* Logs go to %TEMP%\sixeldoor.log.  If opening the log file
  fails for any reason, logging is silenced -- nothing ever
  leaks to the user's screen.

* Door32.sys / drop-file compatible.  DOOR.SYS also auto-
  detected as a fallback for older BBS systems.

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

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