Text 2395, 151 rader
Skriven 2026-09-08 17:58:23 av Gary McCulloch (1:154/50)
Ärende: Empire 3.0
==================
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
|