• Please review our updated Terms and Rules here

Testimonies of using BASIC back in the day

"BASIC, FORTRAN, S-ALGOL, and PASCAL Benchmarks on microcomputers including the effects of floating point processor support" was published by Marcus Wigan in August of 1982 as mentioned earlier in this thread in a post by krebizfan:

Testimonies-of-using-BASIC-back-in-the-day post #39

Table 7 starting on page 14 showed results from running INTERFACE AGE benchmark BM9 using BASIC or BASIC compilers on a variety of microcomputers, and minicomputers.

I ran this benchmark on my Tektronix 4054A last night and got 310 seconds which put it in 12th place as my retyped table below shows.

...


Here is my updated table including a run made yesterday on a Tektronix 4051 with an 800KHz Motorola 6800 CPU, 8.2X slower than my Tektronix 4054A bit-slice CPU architecture with microcode floating point instructions.

The Tektronix 4054A microcomputer running BM9 with BASIC had the same performance as the Seattle Computer 8MHz 8086 system running MS BASIC and the terak 8510a LSI-11 running compiled BASIC.

The Seattle Computer 8MHz 8086 system running Compiled MS BASIC was 9x faster.
I guess I need to compile the program on my Tektronix 4054A - I suspect I should get much closer to the compiled MS BASIC performance on the Seattle Computer 8086 system.

[table="width: 1000, class: grid"]
[tr]
[td]CDC CYBER[/td]
[td]171[/td]
[td].[/td]
[td]NOS 1.4[/td]
[td]BASIC[/td]
[td]5[/td]
[/tr]
[tr]
[td]IBM [/td]
[td]3033[/td]
[td].[/td]
[td]VS2-10RVYL[/td]
[td]Stanford BASIC[/td]
[td]10[/td]
[/tr]
[tr]
[td]PRIME[/td]
[td]300[/td]
[td].[/td]
[td]PRIMOS[/td]
[td]BASIC[/td]
[td]25[/td]
[/tr]
[tr]
[td]Seattle System 2[/td]
[td]8086[/td]
[td]8[/td]
[td]MS-DOS[/td]
[td]MsB(compiled)[/td]
[td]33[/td]
[/tr]
[tr]
[td]DEC[/td]
[td]PDP11/70[/td]
[td].[/td]
[td]kSTS/E[/td]
[td]BASIC[/td]
[td]45[/td]
[/tr]
[tr]
[td]PRIME[/td]
[td]Jul-01[/td]
[td].[/td]
[td]PRIMOS[/td]
[td]BASIC V16.4[/td]
[td]63[/td]
[/tr]
[tr]
[td]DEC[/td]
[td]PDP10[/td]
[td].[/td]
[td]TOPS-10[/td]
[td]BASIC[/td]
[td]65[/td]
[/tr]
[tr]
[td]IBM [/td]
[td]S/34[/td]
[td].[/td]
[td]R-05[/td]
[td]BASIC[/td]
[td]129[/td]
[/tr]
[tr]
[td]Digital Microsystems[/td]
[td]HEX-29[/td]
[td]6[/td]
[td]HOST[/td]
[td]HBASIC_[/td]
[td]143[/td]
[/tr]
[tr]
[td]HP[/td]
[td]3000[/td]
[td].[/td]
[td].[/td]
[td]BASIC[/td]
[td]250[/td]
[/tr]
[tr]
[td]4MHz Z80A[/td]
[td]Z80[/td]
[td]4[/td]
[td]CP/M 2.2[/td]
[td]MsB(compiled)5.03[/td]
[td]277[/td]
[/tr]
[tr]
[td]Tektronix 4054A[/td]
[td]AMD2901[/td]
[td]25[/td]
[td].[/td]
[td]Tek 4050A ROM BASIC[/td]
[td]310[/td]
[/tr]
[tr]
[td]terak 8510a LSI-11[/td]
[td]CP1600[/td]
[td].[/td]
[td]UCSD 1.5[/td]
[td]BASIC 1.5 Compiler[/td]
[td]310[/td]
[/tr]
[tr]
[td]Seattle System 2[/td]
[td]8086[/td]
[td]8[/td]
[td]MS-DOS[/td]
[td]BASIC[/td]
[td]310[/td]
[/tr]
[tr]
[td]Alpha Micro AM100T[/td]
[td]WWD16[/td]
[td]3[/td]
[td]AMOS 4.3A[/td]
[td]AlphaBASIC[/td]
[td]317[/td]
[/tr]
[tr]
[td]Apple II+[/td]
[td]6502[/td]
[td]2[/td]
[td]DOS 3.3[/td]
[td]Microsoft TASC[/td]
[td]325[/td]
[/tr]
[tr]
[td]DEC[/td]
[td]PDP11/45[/td]
[td].[/td]
[td].[/td]
[td]BASIC[/td]
[td]330[/td]
[/tr]
[tr]
[td]Apple II+[/td]
[td]6502[/td]
[td]2[/td]
[td]DOS 3.3[/td]
[td]Expediter II compiler[/td]
[td]335[/td]
[/tr]
[tr]
[td]Data General[/td]
[td]NOVA3[/td]
[td].[/td]
[td]Timeshare[/td]
[td]BASIC 5.32[/td]
[td]517[/td]
[/tr]
[tr]
[td]BBC Micro[/td]
[td]6502[/td]
[td].[/td]
[td]BBC BASIC[/td]
[td]BBC Integer Basic[/td]
[td]523[/td]
[/tr]
[tr]
[td]SWTPC[/td]
[td]6800[/td]
[td].[/td]
[td]Software Dyn[/td]
[td]Compiler B 1.2[/td]
[td]528[/td]
[/tr]
[tr]
[td]Alpha Micro AM100[/td]
[td]WD16[/td]
[td]2[/td]
[td]AMOS 4.3A[/td]
[td]AlphaBASIC[/td]
[td]573[/td]
[/tr]
[tr]
[td]Technico SS-16[/td]
[td]9900[/td]
[td]3[/td]
[td]DOS[/td]
[td]SuperBASIC3[/td]
[td]585[/td]
[/tr]
[tr]
[td]terak 8510a LSI-11[/td]
[td]CP1600[/td]
[td].[/td]
[td]RT11 V0.3[/td]
[td]8k BASIC[/td]
[td]596[/td]
[/tr]
[tr]
[td]BBC Micro[/td]
[td]6502[/td]
[td]2[/td]
[td]BBC BASIC[/td]
[td]BBC F/POINT BASIC[/td]
[td]596[/td]
[/tr]
[tr]
[td]Ohio C4-P[/td]
[td]6502[/td]
[td]2[/td]
[td]OS65D 3.2[/td]
[td]Level I BASIC[/td]
[td]680[/td]
[/tr]
[tr]
[td]North Star FP[/td]
[td]Z80[/td]
[td]4[/td]
[td]MS-DOS[/td]
[td]MS BASIC[/td]
[td]685[/td]
[/tr]
[tr]
[td]terak 8510a LSI-11[/td]
[td]CP1600[/td]
[td].[/td]
[td]RT11 V0.3[/td]
[td]MUBASIC[/td]
[td]703[/td]
[/tr]
[tr]
[td]Apple II+[/td]
[td]6502[/td]
[td]2[/td]
[td]DOS[/td]
[td]Integer BASIC[/td]
[td]722[/td]
[/tr]
[tr]
[td]ADDS Multivision[/td]
[td]8085[/td]
[td]5[/td]
[td]NUON[/td]
[td]MBASIC 5.2[/td]
[td]877[/td]
[/tr]
[tr]
[td]4MHz Z80A[/td]
[td]Z80[/td]
[td]4[/td]
[td]CP/M 2.2[/td]
[td]MBASIC 4.5.1[/td]
[td]966[/td]
[/tr]
[tr]
[td]Apple II+[/td]
[td]6502[/td]
[td]2[/td]
[td]DOS 3.3[/td]
[td]APPLESOFT II[/td]
[td]970[/td]
[/tr]
[tr]
[td]Rexon RX30[/td]
[td]8086[/td]
[td]5[/td]
[td]RECAP[/td]
[td]Business BASIC[/td]
[td]1020[/td]
[/tr]
[tr]
[td]Cromemco[/td]
[td]Z80[/td]
[td]4[/td]
[td]CDOS[/td]
[td]Extended BASIC[/td]
[td]1196[/td]
[/tr]
[tr]
[td]North Star[/td]
[td]Z80[/td]
[td]4[/td]
[td]NS-DOS[/td]
[td]NS BASIC[/td]
[td]1149[/td]
[/tr]
[tr]
[td]Processor Tech Sol-20[/td]
[td].[/td]
[td].[/td]
[td]Solos[/td]
[td]Altair BASIC 8k[/td]
[td]1231[/td]
[/tr]
[tr]
[td]Exidy Sorcerer[/td]
[td]Z80[/td]
[td]4[/td]
[td].[/td]
[td]Microsoft BASIC[/td]
[td]1260[/td]
[/tr]
[tr]
[td]ISC Compucolor CC-II[/td]
[td]8080[/td]
[td].[/td]
[td].[/td]
[td]BASIC[/td]
[td]1267[/td]
[/tr]
[tr]
[td]Apple II+[/td]
[td]6502[/td]
[td]2[/td]
[td]CP/M 2[/td]
[td]GBASIC[/td]
[td]1284[/td]
[/tr]
[tr]
[td]Ohio C3-C[/td]
[td]6502[/td]
[td]1[/td]
[td]OS65D[/td]
[td]Level I BASIC[/td]
[td]1346[/td]
[/tr]
[tr]
[td]Commodore PET 2001[/td]
[td]6502[/td]
[td].[/td]
[td].[/td]
[td]Microsoft BASIC[/td]
[td]1374[/td]
[/tr]
[tr]
[td]ISC Compucolor 8051[/td]
[td]8080[/td]
[td].[/td]
[td]DOS[/td]
[td]BASIC 8001[/td]
[td]1375[/td]
[/tr]
[tr]
[td]Hewlett-Packard HP85[/td]
[td]NMOS[/td]
[td].[/td]
[td].[/td]
[td]BASIC[/td]
[td]1380[/td]
[/tr]
[tr]
[td]Basic/Four 600[/td]
[td]8080[/td]
[td].[/td]
[td].[/td]
[td]BASIC[/td]
[td]1404[/td]
[/tr]
[tr]
[td]Micro V Microstar 1[/td]
[td]8085[/td]
[td]3[/td]
[td]StarDOS[/td]
[td]StarDOS BASIC[/td]
[td]1438[/td]
[/tr]
[tr]
[td]Sinclair[/td]
[td]Z80[/td]
[td]2.5[/td]
[td].[/td]
[td]4k BASIC[/td]
[td]1514[/td]
[/tr]
[tr]
[td]Processor Tech Sol-20[/td]
[td].[/td]
[td].[/td]
[td]Solos[/td]
[td]PT Extended BASIC[/td]
[td]1812[/td]
[/tr]
[tr]
[td]Heath H89[/td]
[td]Z80[/td]
[td].[/td]
[td].[/td]
[td]Microsoft 4.7 BASIC[/td]
[td]1850[/td]
[/tr]
[tr]
[td]Zilog MCZ-1/70[/td]
[td]Z80[/td]
[td]2[/td]
[td]RIO[/td]
[td]Zilog BASIC[/td]
[td]1863[/td]
[/tr]
[tr]
[td]Tandy TRS Model 1[/td]
[td]Z80[/td]
[td]2[/td]
[td]TRSDOS[/td]
[td]Level II BASIC[/td]
[td]1929[/td]
[/tr]
[tr]
[td]IBM 5120[/td]
[td].[/td]
[td].[/td]
[td].[/td]
[td]BASIC[/td]
[td]1956[/td]
[/tr]
[tr]
[td]4MHz Z80[/td]
[td]Z80[/td]
[td]4[/td]
[td]CP/M 2.2[/td]
[td]CB80 v1.3[/td]
[td]1988[/td]
[/tr]
[tr]
[td]4MHz Z80[/td]
[td]Z80[/td]
[td]4[/td]
[td]CP/M 2.2[/td]
[td]BASIC-E(M9511 4M)[/td]
[td]2208[/td]
[/tr]
[tr]
[td]Vector MZ[/td]
[td]Z80[/td]
[td].[/td]
[td]MDOS[/td]
[td]Micropolis 8.5 BASIC[/td]
[td]2261[/td]
[/tr]
[tr]
[td]Digicomp P100-Z80[/td]
[td]Z80[/td]
[td]3[/td]
[td]CP/M 2.2[/td]
[td]BASIC-E(M9511 4M)[/td]
[td]2322[/td]
[/tr]
[tr]
[td]Cromemco CS3[/td]
[td]Z80[/td]
[td]4[/td]
[td]CDOS[/td]
[td]CBASIC-2[/td]
[td]2245[/td]
[/tr]
[tr]
[td]Texas Instruments99/4[/td]
[td]9900[/td]
[td].[/td]
[td].[/td]
[td]TI BASIC[/td]
[td]2479[/td]
[/tr]
[tr]
[td]Tektronix 4051[/td]
[td]6800[/td]
[td]0.8[/td]
[td].[/td]
[td]Tek 4050 ROM BASIC[/td]
[td]2535[/td]
[/tr]
[tr]
[td]Ortex Microengine[/td]
[td]CP1600[/td]
[td]2[/td]
[td]UCSD.H1[/td]
[td]BASIC 1.1[/td]
[td]3017[/td]
[/tr]
[tr]
[td]4MHz Z80A[/td]
[td]Z80[/td]
[td]4[/td]
[td]CP/M 2.2[/td]
[td]CBASIC v2.06[/td]
[td]3100[/td]
[/tr]
[tr]
[td]Zenith H89[/td]
[td]Z80[/td]
[td].[/td]
[td].[/td]
[td]Benton Harbor BASIC[/td]
[td]3550[/td]
[/tr]
[tr]
[td]Pocket TRS-80[/td]
[td]2x4CMOS[/td]
[td].[/td]
[td].[/td]
[td]BASIC[/td]
[td]55830[/td]
[/tr]
[tr]
[/table]
 
Last edited:
My story is a bit of a strange one. While I started programming BASIC in 1981 on Commodore Pets, I did get a job programming BASIC in the late 90's. It was software for casinos to track and manage slot machines. The software was written in HP-BASIC and ran on AIX servers. And there was some spaghetti code in there for sure. One example was for loops, three deep, and right in the middle was a subroutine and a goto to jump over it. :) I even found some dead code that I was able to remove and refactor. The code base had been started in the late 70s and was still in use.

Jason
 
When I started my first system administrator gig back in '95 the plastics thermoforming company where I was hired had a 10K line GWBASIC program that estimated costs for new forming jobs. The software was written by the owners son and I was not allowed to touch it (nor did I want to, not enough sauce for that spaghetti). It was actually an amazing piece of software that calculated everything from tooling to die and forming. When I left in 2000 they were still using it (probably are to this day).

The full company accounting package was also custom written in GWBASIC which I did end up rewriting in a combination of QuickBASIC 4.5, Visual Basic for DOS 1.0 using ISAM database, and Visual Basic for Windows. BASIC allowed me to write software quickly. They used my software until the mid 2000's when they switched over to a PeachTree accounting solution (the sysadmin that took over for me used to work for PeachTree, so makes sense).

Sure I could have used Pascal or C but compiled BASIC was plenty fast enough. Also, revisiting your BASIC code months, or even years, later for revisions was much easier as well.

In fact, I still enjoy writing code in BASIC to this day in a modern 64bit version of QuickBASIC called QB64 ( www.qb64.org ).
 
I used BASIC on a TRS-80 Color Computer II . BASIC had a form of inline assembly, with those DATA statements and POKING those values into RAM. As I recall, the smallest BASIC interpreter was maybe 2K - allowing it to fit nicely within a ROM, which was probably why it ever became so popular. Later BASICs were larger, but "in the beginning" (circa 1977) recall the base prices of new PCs was for like 4K to 16K RAM systems. Those machines were like glorified digital calculators (with much larger screens) - turn it on, compute a few things, turn it off.

Then they got more elaborate with the tape drives, which were like 50 to 300 characters per second load times. I saved a lot of programs on tape, marking the index number on the labels ("30-38 circle program" "50-65 ball bounce program" etc). Those index numbers weren't always reliable (such as when the tape drive started wearing out, or swapping between tape drives). The old Dungeons of Daggorath game is the oldest thing I can remember that let you save your game to tape (ZSAVE, and you could name your "file", like "ZSAVE LEVEL1"). There are probably earlier programs, but much of the actual mechanism to do the saving of data was available in the ROM of the system (that's how Daggorath did relatively so much for just being a 16KB game - lots of capability delegated to the "BIOS" in ROM).

If you had to spend like 5 minutes loading a (C, Pascal, Fortran) compiler from a tape, then where do you store your program that is to be compiled? I never had such a compiler (in the early days), so I'm not entirely sure of the sequence (maybe they could compile and run from an in-memory buffer). But I imagine, once you compiled it, it had to saved somewhere, then clear the compiler out of memory, load your program, try it out, etc. That'd be way too tedious for most home consumers, and raw assembly itself would have a similar workflow - the assembly has to assembled (into where, memory? a "file", when you had no disk drive?) Then load the assembled result and run that, and repeat? Some intermediate solution was needed, and BASIC filled that need.


Yes, disk drives were available, but still relatively expensive and not so reliable (like don't dare open the drive door while disk is spinning, don't power up while disk are inserted - those late 70s disk systems each had their own quirks {"flip disk to continue"} and gotchas, and various formats - plus, as mentioned, expensive). So BASIC was also "successful" due to that lack of disk drives in the very early days, and that it could fit in a ROM. I suppose any "serious developer" in those days would have a disk drive - anyone who wanted to craft a program for other people to use.


I can't remember when last used BASIC - maybe 1986, where yes then I got introduced to Turbo Pascal (and finally had some disk drives available on an early IBM PC).


Floating Point handling: floating point is pretty hard to implement and consumes a lot of code. Remember code-size itself competes with your available RAM space, since the program has to be loaded into RAM in order to be executed (something we tend to take for granted these days - a lot of my 64-bit compiled modern programs are like 30-40 *megabytes*, which is just all the linked together resulting code, and all that has to get loaded across the bus and into RAM, just like back in those days). VisiCalc as an example: if it takes 27KB to load, that leaves only about 5K to enter data (on a 32K system). Anyway, Apple INTEGER BASIC ROM didn't have floating point support. Implementing your own cost a lot of code space. In Commodore world, they got Microsoft's BASIC that had floating point support (story on how that came about is interesting to me, Bill hired help on that "math package"; but independently I found an old paper co-authored by Woz in implementing floating point -- published before he released INTEGER BASIC -- so he could have prepared his own "math package", but probably just ran out of time relative to everything else going on in the race to market {plus a "game machine" then didn't have much need for floating point, when drawing on fixed grid of pixels}). Anyway, point is, if a program did need floating point, they could save code-space by jumping directly into the BASIC ROM code that already implemented floating point (rather than wasting their own code space to duplicate that functionality). That's not exactly a trivial thing (prepping zeropage and contriving BASIC to invoke that portion of the interpreter), but certainly possible.


Disk drives certainly made life so much easier. Schools had to save money and couldn't buy lots of disk drives - so lots of the inexpensive machines with built in BASIC were in schools, maybe as late as about 1986. Just turn them on and start coding some stuff. BASIC served a good niche purpose for its day, helping to save cost by allowing a small ROM substitute the need for an expensive disk system - allowing the machine to be immediately useful by a wider population. As disks became more affordable, available, and reliable (over the next decade), there was less need for BASIC.

But think it's interesting that the idea of an interpreted language is semi-useful. For astro-image processing I use PixInsight, and I think it is one of the best examples of merging the best of compiled code and then using interpreted JavaScript. The main GUI portion of the application is in C++/QT, but many of the image processing modules are in JavaScript - so the user community can help refine those scripts to improve the "business logic" of multi-channel image processing, without having to have all the overhead of compiler tools and build times.
 
Last edited:
Back
Top