C:\> ver  ·  MS-DOS 6.22  ·  Microsoft Visual Basic for MS-DOS 1.00
C:\> run legacy_

Custom ERPs for 5 industries.
BASIC on a microcomputer.
No mainframe.
One developer.

Nine systems, built and maintained across eighteen years (1988 to 2006) and run in production by real companies. Preserved, anonymized, and running in your browser.

~46,000curated app lines
9preserved systems
5industries
3,949populated customer records
18year evidence span

The 1988 Landscape

Software this comprehensive ran on mainframes and minicomputers. A single system covering general ledger, receivables, payables, inventory, and payroll implied a hardware budget in the tens or hundreds of thousands of dollars and a team to install and maintain it. Writing that capability in BASIC, for a PC, sat outside what the industry treated as feasible.

Each system reached past bookkeeping into the specifics of its business. The one written for a food manufacturer carried recipe and formula management with job costing, tracing raw materials through production runs and assigning cost to each batch. The equipment-rental system modeled rental agreements, depreciation, and serial-numbered inventory that moved between stores. The dental-lab system billed against a catalog of procedures. A produce distributor's receivables and a payroll bureau's quarterly filings were handled the same way: a domain model built for the work, sitting on one shared, integrated general ledger.

The Competition, circa 1990

SystemCostTeamSupport model
SAP R/2 (mainframe)$500K – $2M+20–50 peopleConsulting firm
Peachtree (PC, market leader)$2,000 – $5,000Self-installPhone
Accpac (PC, per module)$495 – $5,000Reseller channelPhone
QuickBooks (PC, from 1992)$99Not an ERP
MCS< $50K, all-in1 personHe answered the phone

The modules SAP R/3 would ship in 1992 (GL, AR, AP, inventory, payroll) were already running here on a microcomputer, custom-fit to each business.

Two Timelines

What he shipped, against what the industry shipped.

1988

PFC, a 12-module ERP, begins

Food manufacturing, with GL, AP, AR, financial statements, payroll, inventory, order entry, and time sheets, plus job costing and recipe management. Written in QuickBASIC 4.5.

Industry: Oracle Financials launches at mainframe prices. dBASE IV ships. SAP is R/2, mainframe only.
1990

MPC goes live at McKenry Produce

Full accounting for an agricultural business: preserved masters with 410 populated customer records and 51 populated employee records, and the most mature receivables he ever wrote, split across six dedicated sub-modules. It ran daily until 2001.

1991

Payroll becomes a product, and a service

The 2,000-line payroll engine is extracted and shipped as a standalone product: MCS and BAJ first, then HBS and IMM. One codebase, four industries, each with its own menu and configuration. He also runs it as a payroll service bureau, processing other companies' payrolls himself, pay period after pay period, for years.

Industry: The xBase/Clipper world peaks. Clipper sells to Computer Associates for $190 million in 1992.
1992

The platform catches up

Microsoft releases Visual Basic for MS-DOS in September, and later projects migrate to it, the same compiler family he had bet on four years earlier.

Industry: SAP R/3 launches in July (implementations: $500K to $2M). QuickBooks launches at $99, with GL and basic AR/AP but no inventory or job costing.
1995

New verticals: FOG and RDL

An equipment-rental system with multi-store support, agreements, depreciation, and 3,479 populated customer records, then a dental-lab billing system with a 120-record procedure catalog and 11,638 invoice records. The rental system carries his whole accounting engine inside it, and runs three businesses in succession at one Tennessee address: E-Z Rentals, then ACE of Tennessee, then A+ Rentals, supported remotely by modem over the years.

Industry: Windows 95 ships. Great Plains and Accpac fight for the PC mid-market. "SaaS" does not exist.
2006

Still running, still maintained

The software keeps working long after DOS itself is history, with accounting modules recompiled as late as 2005 and rental books posting entries into 2006. From the first line in 1988, the surviving evidence spans eighteen years. The files alone do not prove uninterrupted production use throughout that span.

today

Preserved and running

Historical source and executables are preserved alongside derived demo data and portability fixes. Structured identity fields in the browser bundles are scrubbed and audited; unresolved formats and real-data backups remain outside those bundles.

What Was Unusual in the Code

These are not thin front-ends over a database. Where a commercial developer would reach for a toolkit or a team, one person built the layers underneath, and did it well enough that the systems ran for years.

One codebase behind many systems. The payroll module, roughly 2,000 lines handling employees, checks, federal tax withholding, and W-2s, runs nearly unchanged inside six of the nine systems. The accounting core was reused the same way. He wrote the hard part once and carried it forward for eighteen years.

Receivables broken into six programs. In the produce ERP, accounts receivable is not one module but six specialized programs for entry, sales, detail, history, reporting, and setup. Commercial packages shipped AR as a single module; he saw six distinct workflows and built each.

Its own indexed database, in application code. Records are fixed-length binary structures in indexed files, with separate name and key indexes and record locking for shared access. It held over 11,000 invoices and thousands of customers per system with no database product underneath, just his code managing the indexes.

Its own login. The rental system authenticates by transforming each typed character, binary-searching a sorted password file for the result, and checking a per-user permission level before every sensitive action. Small, homemade, and real.

Screens painted straight to video memory. Precompiled screen layouts are loaded directly into the display's memory rather than drawn field by field, so a full form appears at once. On a 1990 PC it made a text interface feel instant.

flowchart TD
    PR["One payroll engine
~2,000 lines · employees · checks
FIT · FICA · Medicare · W-2s
"]:::hub PR --> MPC["MPC
produce ERP"]:::sys PR --> MCS["MCS
+ ledger"]:::sys PR --> BAJ["BAJ
standard"]:::sys PR --> HBS["HBS
home business"]:::sys PR --> IMM["IMM
mechanical"]:::sys PR --> FOG["FOG
rental system"]:::sys classDef hub fill:#241a0e,stroke:#ffb000,color:#ffe8bf; classDef sys fill:#16261c,stroke:#1d9e44,color:#d6e6da;

The same payroll code runs in six systems. The accounting core was reused the same way, carried from the produce company and embedded whole inside the rental system, which is why FOG is the largest and most complete of the nine.

Run It Yourself

The software runs live over synthetic data, dropped straight at its main menu. Start with FOG, the equipment-rental system: it runs its own general ledger, payables, payroll, and statements alongside the rental business, so it is the whole accounting engine and a full vertical application at once. Run the rental side or the accounting side.

◈ Live in your browser arrows & Enter navigate · Esc backs out
FOG rental system screen
The actual 1990s program, running on your machine
◼ EPSON FX-80 · LPT1 · CONTINUOUS FEED
· printer idle ·

reports the app prints to LPT1 scroll here

                        

The rest of the collection boots right here too:

Read the Source

Running the software is one thing; the code is the other. All ~46,000 lines of BASIC are on GitHub to read, unmodified except for documented portability fixes. A few worth opening: