• Please review our updated Terms and Rules here

How were business apps done in BASIC?

UCSD Pascal was a major player in the later 70s and early 80s.
It was, but it was also problematic, particularly the early ones, that it took over the system, rather than running on top of it. Later, with the DOS versions, they shifted from that a bit. But early on, it was the whole enchilada.

No HL language was as efficient on resource-constrained systems as Forth was (and still is). Add to that OOP that Forth (almost) always had (CREATE..DOES) — even, when the term itself wasn't even coined, and its „virtual memory” ability thank to Forth's „block system”.
Early Forth suffered this similarly (among other things). And while all of those features were indeed useful features of the Forth system, they weren't enough to let the system break out into the mainstream. dBase sold a lot more copies, and shipped more applications into more verticals than any Forth system ever did.
 
This is great information. I have been wondering the same thing. I would like to find some software for vintage hardware (Z80 CP/M or X86 DOS) that does accounting and inventory. It has perplexed me on how database and data storage was done. I am too young (37 currently) to have dealt with anything that doesn't have SQL type connections. I used Foxpro and Dbase a tiny bit, but it was to salvage data and import into SQL databases.

If I were to write software for older hardware with some type of database and with current technology, what is the best way to do that? Is there a way to integrate a MySQL connection into a basic or pascal program? maybe a way to use SQL through a serial port?
I don't mean to hijack the thread but this is very interesting and would love to hear more about how databases in the late 70's to early 80's functioned and a reliable way to reproduce the effect. By the way, if you're curious about the latest trends in blockchain and gaming, you might want to check out https://icoholder.com/en/games for some insightful information.
Choose a language that was popular during the vintage era, such as Pascal or BASIC. These languages have a simple syntax and are well-suited for the limitations of early hardware.
 
I'm privileged to say that I was the author of a business BASIC (manual is on archive.org). None of this B+ tree stuff--just an integrated ISAM. Decimal arithmetic. I have sample code if you're curious.
So, I was noodling about with this. Trying to better understand ISAM and how it works.

Fundamentally, perhaps simplistically, it's a static tree with the leaf pages pointing to the records.

When a new entry is added, the tree is walked to find the leaf page that "handles" the range of data the new record would belong. If there's room in the page for the new entry, the entry (i.e. the key/record id pair) is inserted into the page, and the page is resorted. If there is no room, then an overflow page is added and the new entry is stored there.

It's not clear to me if the new page is sorted as well. It seems that the key point here is that, as I understand it, keys are not "shoved out" into overflow pages. Rather, overflow pages are simply created and populated as a bag of unsorted keys. That part is muddy.

When the ISAM index is created, it could be good practice to create the new index with space for new entries, in order to reduce the number of overflow pages, but at the cost of disk space that sits idle. And that makes sense for indexes that are receiving "random" updates (i.e. last name, or something else).

However, if you're inserting rows into, say, a Customer Master, where each row get an incrementing Customer ID, then creating an index with space doesn't make much sense. The IDs are unique, assigned once, and never increasing. So, there won't be a case where you may insert IDs 101, then 201, then 301, and then, back, to 105 or 256. But it does suggest when creating a new index, that you would pre-allocate space for the new IDs. That is, if you already have 1000 customers (numbered 1-1000), when you reorganize the index, you may create an index for 1-1500. That makes adding new IDs a simple update of the appropriate leaf node, but not commit the actual records themselves. At least, that's my intuition.

Is that your experience?

As an aside, I was playing with doing some sorting in BASIC. A simple shell sort.

I ran it on a cycle accurate 4.77 PC simulator. And it took over 18s to sort 100 random integers.

It just reminds us how much we've gained and amazed that we were able to get anything accomplished back in the day.
 
Two files--one of data (with keys) and an index of nothing but keys and pointer to records in the data file. The data can be read sequentially--and ISTR that I included an "Active" flag with each data record. You can (obviously) access the data file records by referring to them by index value. Pretty simple, actually. Maintenance of the index list is done in this case with an ordered linked list (the stuff was written nearly 50 years ago, so my memory may be faulty). Since the data file also contains the index key values, it can be used to rebuild a corrupted or lost index file. There's also stuff in there about record locking, which should be obvious. All done in 8080 assembly code.

The thing about the old way of thinking is that floppy disks are more prone to errors than hard disks, so "you can't get there from here" situations had to be avoided.
 
Done right, BASIC could do amazing things with little the little memory we had to use. I wrote a program for a picture frame shop to take & print orders, keep inventory, create invoices plus a few other things. This was done on a TRS-80 Model 100 with 32K RAM. The program was published in a trade journal in 1983ish. I used it for about 5 years before I wrote one on a desktop XT computer using Clipper Aug86 version.

framer
 
In the mid 80s I wrote a ton of business software in Basic. When MS-DOS came out, I remember using a TSR library called FABS plus. Unfortunately I can’t find any traces of it, although there is a relatively recent replacement:


It was pretty fast and quite sophisticated as it allowed to store (in separate index b-tree files) primary and secondary keys pointing to records in the data files.

The last version I used even allowed to maintain index files in a multiuser networked environment…

If you are interested I am sure I can find the original library in some old backup
Hi. I've been looking everywhere for this software, but I can't find it. The download link on the developer's website doesn't work. It would be a great help if you could send me a copy. Thanks.
 
In the mid 80s I wrote a ton of business software in Basic. When MS-DOS came out, I remember using a TSR library called FABS plus. Unfortunately I can’t find any traces of it, although there is a relatively recent replacement:


It was pretty fast and quite sophisticated as it allowed to store (in separate index b-tree files) primary and secondary keys pointing to records in the data files.

The last version I used even allowed to maintain index files in a multiuser networked environment…

If you are interested I am sure I can find the original library in some old backup
Hi. I've been looking everywhere for this software, but I can't find it. The download link on the developer's website doesn't work. It would be a great help if you could send me a copy. Thanks.
 
Might be unobtainium, who knows...

If you can find software that was compiled using it, you may able to partially recover it through disassembly/decompilation.
 
I think this solution is a last resort. If tpaxia can find a backup, I'd have an original and certainly fully functional product. I don't need it to solve a specific problem; I'm only interested in it for research purposes, and it's not worth the effort to disassemble a program. Anyway, thank you for your kind help.
 
Old thread, but here are my $0.02:

I would say that it depended a lot on exactly what software and what hardware it was.
I.E. for example if the target was a Commodore 64 then any search operations on larger databases would have to run in the disk drive as it would read disks about as fast as a PC or any other computer with 5.25" DD drives, while data transfers between the drive and computer were painfully slow.

Also at least before PCs more or less no microcomputer had enough RAM to keep all data in RAM if we for example talk about book keeping for a small mon-and-pop style shop company.
Those companies would typically have one voucher (??? Swedish "verifikation) per business day, and a few extras for special things. Like one voucher with the data from the cash register, that might have had say 10-20 stock categories that all items were lumped in under. So for example a grocery store would probably have had book keeping and cash register categories for vegetables, meat products, diary products, bread and such, but no way of distinguishing beef from ham, milk from cream or lettuce from tomatoes. Same for a consumer electronics store, "hifi", "portabel audio", "TVs", "VCRs", "accessories" and such would the categories probably be. Thus each daily voucher would contain a line for each of these categories, and then a line for each payment method, and a line for VAT. (Multiple lines for shops that had different VAT levels ; here in Sweden for example grocery stores have every now and then had had lower VAT for food than for other products).

I don't know if book keeping software used "double-entry bookkeeping" within the software, or if they just stored one of the two ways of representing the data and generated the other when viewing data.

Anyways, the amount of data at the time for that type of shop was at the time slightly too much for the available book keeping software for a C64 to handle (V-Bok from ADB-Väst here in Sweden), while software that would comfortably run on a PC/XT and where the data files would fit on a 360k disk would have enough capacity. This is IMHO really interesting since a C64 1541 disk had a 170k capacity, I.E. slightly below half of a PC 360k disk. I don't know if the C128+1571 version of that book keeping software would be enough for that type of business.
Btw, Apple II weren't common here in Sweden, but this makes me wonder to what extent Apple II were used for book keeping? As I understand it on one hand it was more common to have two drives than say with a C64, but on the other hand the capacity of each disk were even lower (early on 113k, later 140k, as compared to Commodores 170k).

Other small businesses that didn't have a shop where customers walked in could easily use those less capable book keeping packages though. I.E. say a farm, a contractor running heavy machinery or whatnot, that would just have a few vouchers each month, would have way less data than a C64 could handle.

Also re speed: Note that speed had to be compared to doing things manually. And also, for book keeping I think that searches weren't done that often. I.E. you entered things in order to comply with regulations. Today you probably combine book keeping with a more fine grained inventory system, and actually use it all as data for how your business performs. Back in the days book keeping was a necessary must that the book keeping department at larger companies, or for a smaller company a secretary, the owner themselves or a book keeping company would do, and the data was just used to file in tax reports and whatnot. There for sure must had been companies that had more modern style systems, like how I think people talking about AS/400 / IBM i mentions that Target still uses IBM i and probably used it back in the days. But that would probably be more of an exception than the rule.

Also: business software were really expensive! I haven't dug that deep but a quick google AI summary states that Hogia, the most well known microcomputer book keeping software here in Sweden, cost between a few thousand to ten thousand SEK, which you can roughly convert to EUR by dividing by ten. But that was in 1980's money, so would be the equivalent of way more in today's money value.
A related story: A company called Swedish Partner made a file compatible program called Masterbok, which they sold way cheaper. It was said that it was just a rewrite in another language, and in particular that software came with files with names like "BRUN.EXE" and whatnot, which makes me think that it was written in Basic. A the time it seems like a common setup would be that a book keeping company would run the expensive Hogia software while clients would run Masterbok, and the clients would enter their vouchers and whatnot and once a year send/give a disk to the accountant company which would then do the end-of-year thing, calculating/filing taxes and whatnot, which was the part of book keeping where you needed to keep up to date with regulations. (Like I remember a bit from book keeping back in the 1980's and when seeing the book keeping from a NGO I was part of in the early 2010's the only major change was that the account number for cash was moved from 1010 to IIRC somewhere in the 17xx or 19xx range. In other words there were like one change in 20-30 years that you had to know if you just entered the vouchers, and that was also a change that would only happen when starting a company (or NGO or whatnot). I think that you wouldn't change account numbers for the book keeping of an existing company unless something really extraordinary would happen.

Re inventory:
I've always wondered what companies actually used inventory systems, except for super large companies that could go for IBM mainframe stuff?
Say if you run some sort of mechanics shop - the inventory would be useless unless it kept track of each type of bolt, nut and washer. The same goes for say repairing consumer electronics - you couldn't use an inventory system to automatically restock unless it kept track of every single component. And every such shop would have all standard E12 resistor values in the 10 ohms to 10 megaohm range, for a few different max power ratings. The resistors alone would he 721 values for each power rating. If you had 1/4W, ½W, 1W and 2W that would be 2884 different items. And then you'd have to key in what was consumed when doing repairs. The other option would be to just look in your drawers and order the items that you ran low on.
A somewhat related tangent: There were also sellers focusing on charging for the comfort of not having to keep track of your stock. Here in Sweden one of those were Moon Radio, where their seller would visit you and check your component inventory and suggest what you'd order, and then you'd end up paying perhaps 5x the cost of buying from general components importers (where you had to phone/mail/fax in your order yourself).
Also the consumption rate was low. Like say if you spent an hour repairing a TV you might end up having replaced a few resistors, a transistor or two, and perhaps a few capacitors or so. Or in some cases replace one or in rare cases two IC's. Thus there weren't that much demand for restocking components.
Another tangent: For some businesses the accounting and inventory system would probably still struggle for being the main source of data. I.E. for a grocery store you'd also need the expiration date for items, otherwise you'd have to manually enter what items you'd first sell at reduced rate and later have to throw away (I bet that in practice those items ends up as untaxed employee benefits...).

Also: In addition to book keeping, I bet that word processing was the by far mostly used software for small companies. You could just have a template where you'd manually enter the customer name and items for sending invoices, without having any mail merge or inventory/order system connected to it, and still save lots of work while also making it look "professional". Yes, beleive it or not, some customers would treat invoices as more "serious" if they were printed using a dot matrix printer than if they were hand written or written using a typewriter (or for that sake a LQ printer). A smaller company would never for example order paper with pre printed letter headers and whatnot, and thus having that already in place for in invoice would be a great time saving as compared to writing it using a type writer. (They would likely have a pre made stamp with the company name, address and phone number(s) though, so for hand written invoices you'd just put that stamp on the invoice rather than typing that all out).

Edit: In case anyone is intereted, I have a copy of Masterbok but it has the customer name in the executables. That customer doesn't exist but public records and whatnot would dox where I got it, so I can't really share it (could put it on some sort of to-share whenever I'm not with us any more though, if that's even possible). I could check which files are part of it, and if anyone is interested I could also run experiments / analyze it. I.E. send me some software that checks for "signatures" for what it was written in and whatnot and I could try that out (on a virtualized/emulated machine).
 
Hi. I've been looking everywhere for this software, but I can't find it. The download link on the developer's website doesn't work. It would be a great help if you could send me a copy. Thanks.
I might have some CDs with it in storage. I don’t know if I can still read them (after 35+ years) but I’ll take a look and let you know. The manual is still available…

The library was for MSDOS.

At this point it should be relatively easy to reverse engineer it with Claude and make a compatible one…

Update: found it: "FABS/PC VERSION 1.13 "
I might have more recent versions but I'll have to check in storage.
 
Last edited:
I was looking for Udo Gertz's FATS software, which is compatible with fabs but is also more extensive and has more features. It should also be newer, making it easier to find. Does anyone have it available?
 
Going back to the original question, I wrote a simple billing system for the largest taxi firm in our town in Basic. They had a PET 3032, disk 3040, printer 3022, but no software. The program I wrote could have 100 accounts, 100 drivers, a few thousand dockets per month. Uncompiled basic, so not fast, but it worked fine. I wrote it then moved on, 10 years later came back, it was still in use!
 
Here's something most folks probably aren't aware of (because multi-value database marketing is so atrocious that if they sold sushi, they'd advertise it as "Cold, Dead, Fish."), but a LOT of business applications were written using Pick BASIC. The systems ranged from small mom & pop stores all the way up to full ERP systems with complete accounting packages (which is what I work on). Amazing stuff. Sadly out-marketed by the SQL Mafia.

Another thing folks interested in BASIC should check out is this: http://annex.retroarchive.org/crescent - it's all the MS-DOS BASIC programming tools from Crescent Software. I purchased the whole product line in 2018 and released it into the public domain. Go check it out - it's pretty cool.

g.
 
Here's something most folks probably aren't aware of (because multi-value database marketing is so atrocious that if they sold sushi, they'd advertise it as "Cold, Dead, Fish."), but a LOT of business applications were written using Pick BASIC. The systems ranged from small mom & pop stores all the way up to full ERP systems with complete accounting packages (which is what I work on). Amazing stuff. Sadly out-marketed by the SQL Mafia.

Another thing folks interested in BASIC should check out is this: http://annex.retroarchive.org/crescent - it's all the MS-DOS BASIC programming tools from Crescent Software. I purchased the whole product line in 2018 and released it into the public domain. Go check it out - it's pretty cool.
Calcolo Codice Fiscale
g.
Thanks for sharing this. I knew BASIC was popular for learning and hobby projects, but I didn't realize how widely Pick BASIC was used in real business and ERP systems. It's also great that you released the Crescent Software tools into the public domain that's a nice way to preserve a piece of DOS programming history for anyone interested in classic BASIC development.
 
You're quite welcome!

A bit of useless trivia - the payroll company ADP was a Pick (multi-value) shop - so much so they had their own internal version of Pick. (or a Pick-like such as Ultimate or PRIME) They still may be a Pick shop, but I'm not sure.

g.
 
Back
Top