# Third-party and open-source code in the VT1200 ROM A map of the non-DEC code in `vt1200_v22.bin` (md5 `b46a3e442ccb86134d2356bd70d22fd2`), and how each identification was made. Two kinds of evidence are used, and they are not equivalent: * **Source IDs** — `$Header:` (RCS) and `@(#)` (SCCS) strings compiled into the image. These name the original source file and, for RCS, the revision and date. Strong, but they are file names, not a licence statement. * **Code match** — disassembly compared with a known source tree (e.g. the X11R4 sources under `reference/x11/r4`). Copyright strings are quoted where they exist. **The absence of a copyright string is not evidence of absence**: most of this code carries its notice in source comments, which do not survive compilation. ## Summary | component | evidence | notes | |---|---|---| | **MIT X11 R4** | `mfb*`, `pcf*`, `snf*`, `bdf*`, `Xlib` strings; exact match to `reference/x11/r4/.../pcfrbitmaps.c` | X server + Xlib + font parsers | | **BSD 4.3-era TCP/IP** | `$Header`/`@(#)` IDs for the full socket/TCP/IP/mbuf file set | ported at DEC by `craig`, 1989-10-05/06 | | **BSD BIND resolver** | `res_comp.c`, `res_init.c`, `res_mkquery.c`, `res_send.c`, `gethostent.c` | classic 4.8/4.9-era resolver | | **BSD telnet + TN3270** | `telnet.c`, `commands.c`, `network.c`, `ring.c`, `sys_bsd.c`, `terminal.c`, `utilities.c`, `tn3270.c` | same 1989 import | | **BSD inetd** | `inetd.c` | | | **BSD lpd lineage** | `lpd_lance_devdriver.c` | LANCE driver for the printer daemon | | **BSD libc pieces** | `strcasecmp.c`, `ctype.c`, `errlst.c`, `inet_addr.c`, `inet_ntoa.c` | mixed with the TI runtime (below) | | **TI C runtime V2.00** | ROM `strlen`/`strcpy`/`strcmp` match `RTS.SRC` instruction for instruction | proprietary, shipped with the SDK | | **Bitstream / Bigelow & Holmes / DEC Japan fonts** | copyright strings, font names | third-party, **not** open source | ## 1. MIT X11 R4 The largest non-BSD body. The server is the MIT sample server, with both framebuffer implementations: * `mfbValidateGC`, `mfbFaultGlyph`, `mfbFreeGlyphCacheSpace`, `mfbDestroyDMD` — monochrome framebuffer (`mfb`). * `cfb` strings are present as well (colour framebuffer), though the VT1200 is monochrome. * Font formats: `pcfReadBitmaps`, `pcfReadProperties`, `pcfReadMetrics`, `pcfReadEncoding`, `pcfReadAccelerators`, `Invalid SNF font file format`, `unknown bdf encoding format`. * Xlib: `BadLength - request length incorrect; internal Xlib error`, `Xlib: sequence lost`, `XlibMessage`, `/usr/lib/X11/XErrorDB`. The PCF error strings match `reference/x11/r4/contrib/server/pcf/fonts/lib/pcf/pcfrbitmaps.c` byte for byte (including `allocation failure in pcfReadBitmaps (offsets,%d)`, which R5's monolithic `pcfread.c` does not contain). That is the basis for calling it R4 rather than "X11 generally". There is **no X11 copyright string** in the image; the identification is code-level. ## 2. BSD TCP/IP stack The file IDs are the classic BSD 4.3/Net-1 set. RCS headers show a bulk import by `craig` on 1989-10-05/06, with later files (e.g. `route.c`) on 1990-03-15. | layer | source files | |---|---| | sockets / mbufs | `uipc_domain.c`, `uipc_mbuf.c`, `uipc_proto.c`, `uipc_socket.c`, `uipc_socket2.c`, `uipc_usrreq.c`, `sys_socket.c`, `mbuf_calls.c`, `uio.c`, `syscalls.c`, `af.c` | | TCP | `tcp_input.c`, `tcp_output.c`, `tcp_subr.c`, `tcp_timer.c`, `tcp_usrreq.c`, `tcp_debug.c` | | UDP / IP / ICMP / raw | `udp_usrreq.c`, `ip_input.c`, `ip_output.c`, `ip_icmp.c`, `raw_ip.c`, `raw_cb.c`, `raw_usrreq.c` | | interfaces / routing | `if.c`, `if_ether.c`, `if_loop.c`, `if_sl.c`, `route.c`, `in.c`, `in_pcb.c`, `in_cksum.c`, `in_proto.c`, `inet_addr.c`, `inet_ntoa.c` | `if_sl.c` (SLIP) is the clearest sign that this is the stock BSD file set rather than a lookalike. DEC's own additions in the same area are distinguishable by name and by the absence of SCCS/RCS IDs: `lance_inet_interface.c`, `dwt_file.c`, `dwt_tftp.c`, `sys_dwt.c`, `server.c`, `init.c`, `test.c`, `xclients_smlat_dispatch.c`, `inode.c`. **Licence caveat:** no "Regents of the University of California" string appears in the image. The BSD notice was in source comments. The RCS/SCCS IDs and the file set establish lineage; they do not establish the licence text that accompanied it. ## 3. BSD resolver, telnet and inetd * **BIND resolver:** `res_comp.c`, `res_init.c`, `res_mkquery.c`, `res_send.c`, plus `gethostent.c`. This is the 4.8/4.9-era resolver, the source of the "Primary name server IP address %s is invalid." path. * **telnet:** `telnet.c`, `commands.c`, `main.c`, `network.c`, `ring.c`, `sys_bsd.c`, `terminal.c`, `utilities.c`, `tn3270.c`. This is the whole BSD telnet client source set, including TN3270. * **inetd:** `inetd.c`. * **lpd lineage:** `lpd_lance_devdriver.c` — the LANCE device driver for the printer daemon; the `lpd_` prefix points at BSD `lpd`. ## 4. TI C runtime — not open source, but identifiable The ROM's string and memory functions are the TI RTS V2.00, not BSD: * ROM `strlen` at `0x07F68B1A` implements exactly `rstr = string - 1; n = 0; while (*++rstr) n++;` * ROM `strcpy` at `0x07F68AE4` matches the RTS loop and return value. * ROM `strcmp` at `0x07F68AA0` matches the RTS comparison. * ROM `memcpy` at `0x07F68880` is `PIXBLT_L_L`, consistent with the RTS `memcpy` → `movmem`. The SDK ships `RTS.LIB`, `RTS.SRC` (full source), `FLIB.LIB` and the headers on the 1987 C-tools floppy (`1987-11-06 TMS34010 Simulator-C Tools-ASM Tools.img`, dir `C2`). **The allocator is not the RTS one.** `RTS.SRC`'s `memory.c` uses a 1000-byte static `sys_memory`; the ROM's `malloc` (`0x07EE0246`) is a multi-arena allocator over the 4 MiB RAM (`0x1E8930` arenas, global pool `0x1E8AC0`). So the firmware mixes the TI runtime (strings, ctype, qsort, printf) with a different memory manager. ## 5. Fonts (third-party, not open source) Copyright strings in the font data: * `Copyright (c) 1988 Bigelow & Holmes Inc.` — Pellucida. * `Copyright (c) 1988 Bitstream, Inc., Portions Copyright 1988 Digital Equipment Corp.` — Bitstream Terminal. * `Copyright (c) 1988 Digital Equipment Corporation Japan.` — JISX0208 Kanji. * `Copyright (c) 1988/1990 Digital Equipment Corp.` — DEC Terminal, DECtech. ## 6. Checked and not found No `regex`/`regcomp`, no `curses` or `termcap`, no `getopt`, no `crypt` strings, no MD5, no zlib, no NFS, no SNMP, no Kerberos, no PEX/XIE server extensions. The `ICE` and `XIE` substring counts are noise ("device", "service", …), not the X11 protocols. ## 7. Open question: the `dwt_prf` transform The rdebug challenge is structurally **DES**: eight 64-entry S-box tables at `0x1C0200`, 6-bit indices, 16 Feistel rounds, a fixed key schedule. There are no `DES` or `crypt` strings, so the implementation is not attributable from the binary alone. If it is standard DES with a fixed key, the challenge is much weaker than the "font render + Feistel" description first suggested. ## Reproduce ```sh cd /home/arti/code/k-space/vt1200 # every compiled source id, unique rg -o '@\(#\)[A-Za-z0-9_.-]+|\$Header: [A-Za-z0-9_.-]+' \ reference/rom-strings.txt | sed 's/@(#)//; s/\$Header: //' | sort -u # X11 fingerprints rg -n 'mfb|pcf|snf|bdf|Xlib|XErrorDB' reference/rom-strings.txt # font copyrights rg -n 'Copyright \(c\) 1988 (Bigelow|Bitstream)|Digital Equipment Corporation Japan' \ reference/rom-strings.txt ```