• Empire 3.0

    From Gary McCulloch@1:154/50 to All on Tue Sep 8 17:58:23 2026
    Empire v3.0 - a 1990 Amiga BBS door, put back into service -----------------------------------------------------------

    Empire is a multiplayer land-and-army door for C-Net/5 Amiga, written
    between 1990 and 1993 by Dr. John M. Hoyt (Warren Peace) and Chris
    A.D. (Crazy Cad). You rule an empire: buy land, work it with serfs,
    feed them and your army out of the harvest, invest what is left, and
    take land off the other rulers until somebody is crowned Emperor.

    It has been running on Reign of Fire since July 2019, and for most of
    that time parts of it were quietly broken. This is what got fixed and
    what got added.

    Crazy Cad released Empire as free software for any Amiga BBS and gave
    consent for the modification. His copyright headers, his artwork and
    his presence inside the game all stay exactly where they are.

    THREE THINGS THAT WERE BROKEN ON A LIVE BOARD

    * Every 40-column caller crashed on Your Stats. A 2020 edit stripped
    the right-hand column out of Emp.Stats.40 and left left( open on 21
    consecutive lines. The error log had recorded it three times in six
    years - Error Code=42, unbalanced parentheses - and nobody had read
    the log. It survived that long partly because the door cached its
    routine files into RAM: and only refreshed that copy when the Amiga
    was rebooted, so an edit stayed invisible until it was.

    * Emp.Update was corrupting every player file, nightly, at 1:00 AM.
    Its READUSER tested en.4 where it meant em.4. en.4 is never set
    there, so the test read the literal string "EN.4" - length 4,
    always less than 40 - and every run took the legacy-format branch
    and appended 36 trailing spaces to line 4. Player files had grown
    from about 91 bytes toward a 37,036-byte ceiling: 742 KB of padding
    across 30 players. No data was lost, since the fields sit at the
    front, but the whole directory was padding. The program is a
    one-shot v1.3-to-v1.4 migrator that had nothing left to migrate.
    Typo fixed, and it is off the scheduler.

    * Inactive players were never weeded. The guard was
    "if length(em.2)=10", and em.2 held dates like "Feb 22 53" - which
    is NINE characters whenever the day-of-year is under 100, so any
    ruler whose last turn fell before 10 April was permanently exempt.
    The year-wrap arm of the same comparison was unsatisfiable on top
    of that. Twenty-six players from 2019-2022 were still on the
    roster. Player dates are now ISO plus an absolute day number and
    the arithmetic is a subtraction.

    FEATURES THAT WERE ALREADY IN THERE AND COULD NOT BE REACHED

    * Head-to-head duels. Attack somebody who is in Empire on another
    node and the two nodes hand-shake through the ARexx clip list: the
    defender watches your battle line arrive blow by blow on their own
    screen, and gets told who executed them. Crazy Cad wrote all of it.
    The attacker's half waited 500 loop iterations with no delay in
    them - about a second on a 1992 Amiga, a few milliseconds under
    emulation - so the defender was never given time to reach a command
    prompt, and the whole feature was unreachable. Every wait in that
    path is wall-clock now.

    * The battle-line pacing. Emp.Config has a FightSpeed setting. It
    turns out Emp.Main is the only one of the four programs that reads
    the config with a marker that stops the read partway down the file,
    and FightSpeed had sat below that marker since the day it was
    added, so it was never read at all.

    * The SkyPix main menus. Emp.Menu1/4/5.80.tt4.960 are real SkyPix
    screens - box drawing, a loaded font - gated behind a 9600 CPS
    check from the modem era, with no ungated variant to fall back to.
    Nobody arriving over SSH will ever satisfy that check, so no SkyPix
    caller had seen them since 1996.

    * The new-player welcome screen. Empire has always opened a file
    called Emp.New for a first-time ruler. That file is not in the
    original distribution either - it was never written, on any board,
    for thirty years. New rulers got two lines of text and then a
    sixteen-item menu with no mechanic explained anywhere, and it
    shows: of 30 rulers on this board, 12 made a character and never
    took a single turn.

    NEW

    * A welcome screen. What the five numbers do, the order a year runs
    in, and the three things that decide your first one - starting with
    the fact that your thousand serfs want 20,000 bushels and the
    granary holds 10,000.

    * Challenges. A live duel needs both rulers on at the same moment,
    which on a small board is rare, so you can now leave a challenge at
    an offline ruler's gate instead. Your army and treasury are FROZEN
    into it at that moment: that is what they will face, however long
    they take to answer, so spending afterwards will not help you. They
    are offered it next time they enter Empire and may refuse. If they
    accept it is a full battle, and they can take land off YOU - which
    a defender never can otherwise, and which is what makes answering
    one worth their while. The fight is decided on the frozen numbers;
    the spoils and the casualties land on the empire the challenger
    actually has today, so answering a week-old challenge cannot roll
    back the challenger's week.

    * A weekly status report, generated on the Amiga on Sunday morning
    and posted to the C-Net echos - rankings, hall of fame, and the
    last few lines out of the battlefield log.

    * Proper terminal coverage. The door's file-suffix scheme had ended
    up inverted, with IBM CP437 line-drawing sitting in the fallback
    slot - so ASCII, Commodore and Amiga International callers got
    those bytes rendered as whatever their own character set holds
    there. Every screen is now layered across ASCII, Commodore PETSCII,
    IBM and SkyPix at 40 and 80 columns: 220 screen/width/terminal
    combinations, checked by a script rather than by eye.

    WHAT WAS DELIBERATELY LEFT ALONE

    Line 2 of every program still carries Crazy Cad's 1993 copyright,
    verbatim. Partly because v3.0 is not his and stamping our name there
    would be false - and partly because the game reads that line: any
    handle appearing in it is granted rank 5, King. That was his joke and
    it still works. Line 3 keeps the consent notice. The intro logo is
    his art. So is "King Crazy Cad visits your Empire!", the default
    Empire Wall message and the beheading text - his presence inside the
    game, which is the part worth keeping. His four readme files are
    untouched.

    TESTING

    Nothing reaches the board until the linter passes. It checks that the interpreted fragments balance per line - they are read one line at a
    time, so a stray parenthesis is not a load error but a runtime crash,
    for one terminal width, possibly years later - that line 2 still
    carries the original copyright, and that no setting Emp.Main needs
    has drifted below the marker that stops its config read. Pure-REXX
    logic is run under Regina on Linux against the real player data
    before it runs on the Amiga.

    That is roughly how all three of the live bugs were found: by reading
    logs nobody had read, and by testing the parts that could be tested
    off the machine.

    PLAY IT

    ssh call@call.rofbbs.com (no password)
    telnet call.rofbbs.com 6800
    dial 423-541-8271 (V.92, real iron on the end)

    Type EMP at the [Main]> prompt.

    Reign of Fire BBS - www.rofbbs.com - C-Net/5 on Amiga

    * ACIS Member. AmigaNet ArakNet C=Net DescipleNet FidoNet PiNet RetroNet
    * C-Net/5
    * Origin: call.rofbbs.com : 6800 6400 8502 : 423-541-8271 : rofbbs.com (1:154/50)