SFSME v.60 - Registration Patch Notes
======================================
Patched by: xbit / X-Bit BBS (x-bit.org)
Date: June 2026


BACKGROUND
----------
SFSME (Spitfire Simple Message Editor) v.60 by Richard Lemaster was
a companion product to SFAME (Spitfire Full-Featured Advanced Message
Editor). Registration for SFSME was free to registered SFAME sysops -
you simply placed your SFAME.KEY file in the SFSME directory.

The problem: Richard released SFAME v1.5 as freeware at the end of the
BBS era, stripping the key system entirely. No SFAME.KEY was ever
included with the freeware release. SFSME was never updated to account
for this, leaving it permanently unregisterable by legitimate means.

Unregistered SFSME imposes a 5-second exit delay and appends "UNREG"
to netmail taglines.


FILES CHANGED
-------------
SFSME.OVR  - One-byte patch: offset 0x00B5, value 0x00 -> 0x01
             This changes the registration flag initialization from
             "unregistered" (0) to "registered via SFAME.KEY" (1),
             bypassing the nag/delay branch entirely.

SFAME.KEY  - Synthetic 256-byte key file (all zero bytes).
             Required because SFSME calls Pascal Reset() on SFAME.KEY
             at startup with I/O error checking enabled ({$I+}). Without
             the file present, DOS raises Runtime Error 002 (file not
             found) and SFSME crashes before reaching any error handler.
             The key validation uses a name-length-prefixed checksum:
             with name length = 0 (byte 0) and stored checksum = 0
             (byte 31), the computed checksum matches and validation
             passes cleanly. The "Registered To" display shows blank,
             which is acceptable.

SFSME.EXE  - Unmodified original (1996).


TECHNICAL DETAIL
----------------
SFSME.OVR is a Turbo Pascal FBOV overlay file. The registration flag
is a byte on the stack frame of the key validation function, initialized
at OVR offset 0x00B1 (C6 86 5D FF 00 = MOV [BP-0xA3], 0). Patching
the immediate value from 0x00 to 0x01 pre-seeds the flag as registered.
The key file reads still execute but cannot reset the flag to zero -
the only writes to the flag are 0x00 (init), 0x01 (SFAME.KEY found),
and 0x02 (SFSME.KEY found). All three states >= 1 are treated as
registered by the branch logic at OVR offset 0x0162.


PRESERVATION CONTEXT
--------------------
This patch is offered for BBS preservation purposes. SFAME and SFSME
were written by Richard Lemaster. Richard released SFAME as freeware
before his passing, expressing intent that the software remain freely
available. This patch extends that intent to SFSME.

X-Bit BBS Spitfire preservation page: https://x-bit.org/spitfire
