The BASIC programming language turns 60

Fatesrider

Ars Legatus Legionis
24,987
Subscriptor
Texas Instruments TI-99/4A here with cassette drive connected to a 13" black and white tv.

edit: corrected model number format.
Commodore 64, here but it was a hand-me-down from my brother. I was taking paramedic certification classes at the community college and added a computer programming class as part of the sciences req.

Best program I ever wrote was one that calculated the amount of acceleration, turnaround at mid-point and coast time, then the amount of deceleration needed to get from Triton to Earth in 10 days. I assumed closest orbits for both.

The calculation was needed for scientific veracity in getting the group of corporate soldiers who were set up on a suicide mission to come back by a certain time so they could get revenge on the corporation that set them up to die in a book I was writing.

It took that program several hours to run.

Turns out it's a shade over 5 G's for almost five days with about an 11 hour turnover before a 5 G deceleration for almost five more days. And at midpoint, you can take off several seconds because you're going about twenty some percent of light speed.

Ten years later, I picked up a couple of other languages for fun and a bit of profit that helped in my IT business here and there. Haven't done any coding in years, though I was thinking about picking up Python.

Good memories there...
 
Upvote
5 (5 / 0)

Rick68

Seniorius Lurkius
7
TI-99/4A here as well. Mr. Bojangles was my first "long" project from the manuals, and it was the first time I discovered that nothing is saved and the tape adapter cable was a lifesaver. Damn good times.

View attachment 79747
Thanks for posting this as this was also my introduction to programming. It really was an excellent book! (I still have mine too -- Along with the TI-99/4A, PEB, Speech Synthesizer and even an MBX add-on). Played Tombstone City and one day decided the TI could do more than play games, so I picked up this book and started typing. I was simply hooked!

And it was my start to what would be my I.T. career.
 
Upvote
2 (2 / 0)

Dhalgren

Ars Scholae Palatinae
825
My first coding experience was BASIC on a VIC-20 with cassette tape store. Memories...
Mine was on a C64. I later did BASIC on an Apple II and remember missing some of the features of the C64 BASIC. If I'm recalling correctly, you could edit lines on the C64, but on the Apple you had to rewrite the whole line if there was an error.
 
Upvote
1 (1 / 0)

NetMage

Ars Tribunus Angusticlavius
9,746
Subscriptor
Which is my complaint with modern programming languages. Transitioning from spaghetti code to structured code (Pascal first, before I learned C) wasn't much of a problem; even in BASIC, I used a lot more GOSUBs than GOTOs. But OOP has such a huge learning overhead -- and typing overhead. In BASIC, you could type "100 PRINT "HELLO, WORLD" and RUN (or RUNSKI, on at least one machine), and it WORKED.
That’s one of the reasons new versions of C# Top Level Statements to eliminate most of the overhead. In C# 10, you can just write “Console.WriteLine(“Hello world!”);”

Of course, the run part is a little harder unless you install a helper.
 
Upvote
0 (0 / 0)

honkafied

Seniorius Lurkius
23
Subscriptor
Woz is such a Hero and Genius! An Absolute National Treasure. It’s been over 4 decades already and I still remember and cherish memories with my Dad and the Apple II. Integer Basic, AppleSoft, call-151, hr, hgr, beagle bros’ small code snippets, autoproofreader, and so much more!
One minor but interesting nit: Woz, absolute national treasure as he is, sadly didn't write AppleSoft BASIC. He was too busy working on the Disk ][ system. Jobs negotiated a flat-fee license of Microsoft's 6502 BASIC for (an insanely low) $31K USD, and in return, got a bug-riddled drop of source code that they had to make work on the Apple ][. Part of this process involved sending the code to a 3rd party over 110 baud modems to be cross-assembled!

Source: https://www.apple2history.org/history/ah16/
 
Upvote
10 (10 / 0)

floyd42

Ars Scholae Palatinae
1,190
Subscriptor++
I sold several graphics utilities to Nibble magazine, mostly tools to help you create and use Shape Tables for graphics. Also sold them a racing game called Formula Nibble which was mostly 6502 assembler for speed but used Basic as the front end.

View attachment 79762

Certainly looks primitive, huh? But at that time, state of the art was white roadside posts moving past you as you drove. I had color! Four of them!! :)

Nibble sold disks containing an issue's programs which was a popular alternative to typing in pages and pages of 6502 assembler and then trying to find all the typos you made.
Formula Nibble was by far and away my favorite thing they ever printed. I remember trying to follow along with the article going over the assembly code and being mystified.

There were so many amazing things in that magazine but Formula Nibble really caught my imagination. Nibble really made me feel like my Apple //e could do anything if I just had enough skill to make it happen.

So, almost forty years later, thank you so much for having such a positive impact on me. This really makes my day!
 
Upvote
4 (4 / 0)

Black Eagle

Ars Praetorian
523
Subscriptor
I have found using cassette drives for storage to be the aspect of ancient computing my kids took the most effort to convince I wasn't just making up for comedy purposes.
My very first memory of using a computer was an Apple ][ with a cassette tape as the storage medium when I was 5 or 6 years old.
 
Upvote
1 (1 / 0)

Brian.Inglis

Smack-Fu Master, in training
12
"As part of the deal to buy the GE computer, the undergraduates built the operating system in BASIC for General Electric's version of time-sharing." It's hard to imagine writing disk controllers, etc., in BASIC, and I don't think that's actually what was done; the Dartmouth Time Sharing System https://en.wikipedia.org/wiki/Dartmouth_Time_Sharing_System was probably written in assembler, as would have been common in the early 60s.
..."the lessons learned from these projects informed the development of BASIC, which started in 1963.
In the same year, Kemeny applied for a National Science Foundation grant to bring a GE-225 computer to Dartmouth and build the first fully functional general-purpose time-sharing system."
On GE or the GE-225 perhaps: MIT CTSS was 1st in 1961: https://en.wikipedia.org/wiki/Compatible_Time-Sharing_System
DEC (Digital Equipment Corp) Basic-Plus (became https://en.wikipedia.org/wiki/VSI_BASIC_for_OpenVMS) was a popular commercial language on their RSTS/E OS and PDP-11/70 machines. It lost popularity when VAX/VMS came out and could not run commercial programs any faster even when eventually native compiled by VAX/VMS BASIC.
HP BASIC was a totally different language and seemed to have more of a lab orientation.
 
Upvote
3 (3 / 0)

waltzmn

Wise, Aged Ars Veteran
104
Subscriptor
But I still haven't seen any nostagia for having to use fracking line numbers (shudder). The first time I touched Pascal I was so amazed to realize that we just didn't need them. They were just a silly leftover from when we computed with punch cards and teletype machines instead of having a screen. Mind. Blown.
Correction: Line numbers were a leftover from a time when we didn't have text editors. Most of the BASICs people around here have been nostalgic for have been microcomputer BASICs that had screens -- but there was often no way to edit a text file. The line numbers told the interpreter the order in which to run the lines -- but it was also how you could replace a line of code when it didn't work.

In most compiled BASICs, by the 1980s, you didn't need line numbers. Because they ran on machines with text editors. And, gradually, you started getting BASICs with function labels and the like, and BASIC and FORTRAN/Fortran became almost one language.

Which is not to say that I disagree with you on your major point. Pascal is still the language I'm nostalgic for. Yes, you can do all the same things in C, and at a level closer to assembly language, but it just isn't as beautiful a language as Pascal.

As long as you don't need string variables, anyway. :-/
 
Upvote
6 (6 / 0)

Tallawk

Ars Scholae Palatinae
987
Subscriptor++
But did anyone have the BASIC Programming cartridge for the Atari 2600?

As a kid I thought it was cool to have... but not being able to save your work immediately put a damper on putting any effort into using it.
Yes. It was pretty rough to work with. 63 bytes of instructions, as I recall.
 
Upvote
1 (1 / 0)
None of the clones bothered reimplementing the BASIC ROM. Their workalike was GW-BASIC, which took more RAM than BASICA (since it had to duplicate the ROM functionality), but ran the same programs at the same speed.

Thanks for reminding me the difference between GW Basic and BASIC

It must have been hitting the play and record buttons on the cassette deck to many times to save the programs, that fogged my memory banks
 
Upvote
1 (1 / 0)
Thanks for the ride on the Wayback Machine Benj.

Like many others, I did my first programming in BASIC. Mine was on an HP-3000 time-shared system using Teletypes. I didn't much programming for a while until I got out of school and then that's all I did using FORTRAN, Pascal, C, and C++. For my second job, I joined a company called Intelledex and I ran into BASIC again. Intelledex licensed BASIC from Microsoft and embedded it in their controllers and it was used to program the robots the company made. In the office they had a printout of that BASIC implementation and it used a whole box of fan-fold paper. I looked through it once and saw Bill Gates' and Paul Allen's names all over the place.

I never directly programmed a robot but I watched some people do it. One interesting feature was you could issue direct commands to tell the robot to move. This was done with a computer using a special program it ran that talked over a serial port to the controller. You would just type "Move w,x,y,z" or something similar. One of the MEs had made an end effector for the robot that would hold a pen. I had written a program that drew Spirograph shapes on the computer and I adapted it to send those motion commands to the robot. We attached the end effector to the robot, put a pen in it, and we had the robot drawing Spirograph shapes with the motion commands executed by the robot's built-in BASIC interpreter. It was pretty cool seeing a six-axis articulated robot drawing hypercycloids with very smooth curves. Those were fun times.

Incidentally, they called it RobotBASIC because they had added a bunch of motion commands to it. Also, an image search at google for Intelledex will show you what some of those robots looked like. We used a 605 for the drawing.
 
Upvote
3 (3 / 0)

MattGertz

Ars Praetorian
476
Subscriptor
As with others, BASIC was my first programming language as well -- I wrote a couple of very small programs in 1979 for some mainframe that the local community college had, the type of which I can't remember. (Earlier than that, I do recall that our math books from 4th grade on had little BASIC programs you could write if you had access to a computer -- they looked pretty alien to me.) Once I started taking computer classes, I'd write BASIC programs on the high school's miniframe, also writing them on my brother's C64, and idly wondering why these BASICs were slightly different to each other.

Fast forward several decades to 2006: I became the development manager for all of Visual Basic.NET at Microsoft. This was like being at the top of a mountain for me, standing on the shoulders of a lot of giants -- but when looking downward, realizing how far I could fall if I messed things up! VB.NET was just about at its zenith at that point, and had millions of customers who relied on it. The amount of responsibility on my shoulders weighed pretty heavily, and there was certainly some amount of Imposter's Syndrome on my part, especially as I came up through the org as a deployment project guy, only much later acquiring the performance oversight, VB editor and compiler oversight, and then the whole enchilada.

After a couple of years of that, I moved on to central engineering and later Xbox Live for a few years -- then, in 2013, it was back to running VB.NET again -- except, this time, the team was unified with C# and F#, and we were about to ship Roslyn (the "engine" underlying both VB.NET and C#), and also were pushing to get it open-sourced. VB.NET was no longer the 500-pound gorilla at Microsoft, and most of my focus was on C# -- but I was still personally using VB.NET to try out the new .NET stuff for a couple of years while I regained my footing, only later focusing on C# as my language of choice. Getting VB.NET (& C#) into open source is probably my fondest memory of that time -- a lot of work, but so worth it.

During all of that, I had to coordinate with the Office team on VBA, and also support the old native VB as well (though we thought of that as a different language that inspired VB.NET -- the differences were non-trivial and we reused nothing from it), so quite a lot of exposure. A lot of our internal testing was still built and run on VB.NET long after C# started eating into the customer base.

And VB & VB.NET customers were awesome to talk to! So many good ideas for the language & IDE, so much love for the rest of the community, so many cool things they were doing with it. (It only added to the pressure to realize that VB or VB.NET was being used to run hydroelectric plants or prescription drug services, though.) Though I enjoy what I'm doing in the Azure SDK org nowadays, I haven't personally encountered the same sort of community interaction since then and very much miss it.

I definitely plan to write a book about all of this once I retire -- lots of very cool memories, as well as a lot of "well, that could have gone better" memories as well.
 
Upvote
21 (21 / 0)

NetMage

Ars Tribunus Angusticlavius
9,746
Subscriptor
So many late comers (and a few early ones). I was in-between - I wrote my first computer language (after the TI SR-52) programs on a Wang PCS II which had a built-in BASIC and two floppy disks. It was borrowed from Wang by a math teacher who was trying to start computer classes. A while ago the teacher said he knew my friend and I were destined for computer careers when we both wrote competing word processors for the PCS II. They were both used by the school administration for years creating letters and forms to be printed.

My first home computer was an OSI C2-4P that came with a modified cassette desk for load/save and a modified B&W TV for a monitor that could display 64 characters per line. Programmed (Microsoft) Basic and learned 6502 assembler on it.
 
Upvote
1 (1 / 0)

zogus

Ars Tribunus Angusticlavius
7,184
Subscriptor
The buety about the days of basic, was that it just worked, no worrying about environmental variables, libraries, configuration files and settings. You could literally type sonething in from the magazines or tutorials of the day and they worked.
Well, you can still do that today with Python on the console screen, if you objective is to get the kind of output you could have gotten from Applesoft BASIC 40 years ago.
 
Upvote
2 (2 / 0)

mathguru

Ars Centurion
251
Subscriptor++
My fondest memory of BASIC is when I was in middle school computer class and I made a program that looked like I had logged/hacked into the "Central Trust International Exchange" (I had recently seen the movie Wargames). This was in a room full of Apple II computers plugged into a very long square metal tube of power outlets/surge protectors.

When the teacher saw what I was doing, she freaked out, thinking I was going to get the school raided by the FBI or something and pulled the plug on the entire row of computers, wiping out not only my program but all of the work of the other kids in that row.

These computers were not even networked, much less connected to a modem. :LOL:

I ended up with a detention and a call to my father, and was even further ostracized by most of the other kids for being a huge nerd and screwing up their assignment, but the other two nerdy kids in my class also thought it was hilarious.
This little anecdote breathed life into my day
 
Upvote
6 (6 / 0)

zogus

Ars Tribunus Angusticlavius
7,184
Subscriptor
IMO they did a lot of stuff that made VB.NET unnecessarily un-VB-like in the move to .NET (I say as someone who started professionally in VB6, VBScript, and classic ASP, worked mostly in VB.NET for years, and ended up switching to C# because Microsoft just supports it better and it doesn't seem like they're trying to force stuff developed for other languages into it nearly as much), and in introducing new functionality to VB.NET.
Honest question from a rank amateur who hasn’t written anything in Windows since VB6: is there any reason why anyone should be using VB.NET over C#?
 
Upvote
2 (2 / 0)

Bondi Surfer

Ars Scholae Palatinae
1,175
Subscriptor
Ahh, BASIC, you were good to me. I messed around with learning BASIC on the C64 in my childhood, mostly making games.

Then didn’t touch programming for decades…

…until six years ago when I learnt some VBA, and now have a very small VBA-focused tech startup.

So, thanks to the guys who helped kick off this journey!!
 
Upvote
1 (1 / 0)

malor

Ars Legatus Legionis
16,093
But I still haven't seen any nostagia for having to use fracking line numbers (shudder). The first time I touched Pascal I was so amazed to realize that we just didn't need them. They were just a silly leftover from when we computed with punch cards and teletype machines instead of having a screen. Mind. Blown.
That's where Djikstra's "GOTO Considered Harmful" maxim comes from... the world of line numbers, global variables, and global state. Combine that with extremely, extremely tight memory constraints, and programmers pulled all kinds of egregious bullshit to make their code run.... doing things like jumping into the middle of other routines to re-use the code at the end of the function. Add one line to the program and you could mess up all the jump targets and spend a week debugging the resultant mess.

Programmers are still fixated on the "goto is bad!" maxim, but they've forgotten why it was so bad. In a modern language, with subroutines, local namespaces, and controlled points of code entry and exit, it's very difficult to make any kind of real mess with gotos. Sometimes they just make more sense, or will let you write much faster code. If a goto fits your use case, go for it. It's not a code smell anymore, because you couldn't even possibly cause the kind of problems you did in BASIC.

If you have spaghetti problems in a modern language, it will be from bad design, not goto. :)
 
Upvote
6 (7 / -1)

zogus

Ars Tribunus Angusticlavius
7,184
Subscriptor
That's where Djikstra's "GOTO Considered Harmful" maxim comes from... the world of line numbers, global variables, and global state. Combine that with extremely, extremely tight memory constraints, and programmers pulled all kinds of egregious bullshit to make their code run.... doing things like jumping into the middle of other routines to re-use the code at the end of the function. Add one line to the program and you could mess up all the jump targets and spend a week debugging the resultant mess.

Programmers are still fixated on the "goto is bad!" maxim, but they've forgotten why it was so bad. In a modern language, with subroutines, local namespaces, and controlled points of code entry and exit, it's very difficult to make any kind of real mess with gotos. Sometimes they just make more sense, or will let you write much faster code. If a goto fits your use case, go for it. It's not a code smell anymore, because you couldn't even possibly cause the kind of problems you did in BASIC.

If you have spaghetti problems in a modern language, it will be from bad design, not goto. :)
Awesome! Can I take this as a permission from you to embed longjmp() willy-nilly in my C code? :judge:

(Just kidding, I haven’t written any C in years, and don’t remember ever using longjmp outside of exercises.)
 
Upvote
0 (0 / 0)

el_oscuro

Ars Praefectus
3,129
Subscriptor++
1981, starting high school: My dad bought a Heathkit H-89 which I helped him build. After it was built, I wanted to program arcade games, which were also new. I learned basic programming skills on the Dartmouth BASIC that came with the system, but quickly ran into a problem: That version of BASIC didn't have a method of detecting key presses. You had to press enter to submit input. Not exactly good for arcade games.

So I switched to assembly language which supported them. The transition was surprising easy, as the H-89 also came with a good editor and macro assembler. Instead of GOSUB, I just used JSR and for GOTO, the equivalent was JMP.

Of course, programming spaghetti code in assembly is a bad idea. Why is my game randomly locking up? It took me a few months to figure out that all of those GOTO/JMP were eventually clobbering the stack, and I learned how to code subroutines correctly.

Going full circle, a few years later, I had a C-64, but didn't have the money for the macro assembler cartridge. So I wrote an assembler in it's BASIC, along with a simple EDLN style text editor. Supported the complete 6502 instruction set and simple address labels. Best $35 I didn't spend.
 
Upvote
5 (5 / 0)

King_V

Ars Tribunus Militum
2,872
Oh no, it was :D It wasn't so bad if you had GOSUB at least. In the timeframe you're talking about you probably didn't, and AppleBASIC didn't, so I remember using REM to mark routines and printing them out to add textual labels on paper to keep track. At one point there was a TSR-style utility that came out that let you edit and renumber lines which was a godsend. Forget the name.
Hmmm, can't remember if the TRS-80 had GOSUB. That was my first exposure to BASIC, so I may not have learned about it yet at the point. But definitely on the Commodore 64 and 128, and I learned to make use of it.

Sadly, not as well as I might've done has I understood the concept of studied languages at even a fraction of the level I do now.

But, if I were to write BASIC code today on those old systems, it would definitely look different!
 
Upvote
2 (2 / 0)
When I was a kid, I use to go to the Lawrence Livermore Science Lab and go to their public computer room where they had dozens of paper teletypes for the public to use to play with BASIC.

You went to the Lawrence Hall of Science, at the top of Centennial Drive, overlooking Lawrence Berkeley Labs. Nothing Livermore about it.

I went there, too. $TREK (Trek 73) was the best Star Trek game ever.

The machine was an HP 2116. HP BASIC was my favorite, until I found DEC BASIC on RSTS/E, that's the best ever. It was structured (while, until), and I think it had real variable names, functions, parameters for subroutines. Maybe I'm dreaming...
 
Last edited:
Upvote
2 (2 / 0)

el_oscuro

Ars Praefectus
3,129
Subscriptor++
Same. BASIC on the venerable IIe in middle school (we were bussed to the "extension campus" for such advanced material). Also got to use Parallax BASIC in my high school electronics class to program Stamp-based microcontroller.

There's a boot-to-BASIC environment for the Pi Pico, in fact you can turn the board into the equivalent of an entire retro computer (with modern storage and peripherals): https://geoffg.net/picomite.html
Same here, but in the Army. My first duty assignment, my assignment was to program an Apple //e to render radar returns from a JSTARS reconnaissance aircraft. That Apple //e came with a 5MB profile hard drive and a serial interface. We would receive the radar returns through the interface, and my program would render them on the screen. Of course BASIC was too slow so I used 6502 assembly. The filesystem on the hard drive slowed down substantially if you had too many files, so I had to create and manage sub directories to keep the file count manageable.

We would then take the NTSC output from my program and overlay it on a static image of a map of West Germany and video tape it. Instant intelligence of Soviet troop and armor movements! Reading Tom Clancy's "Red Storm Rising" a few years later, I was surprised to find my project in the book.
 
Upvote
11 (11 / 0)
TI Basic on a TI-86 - my friend & I wrote our first video game on this. During class, on the down-lo (not a computer class), and passing the calculator back and forth. My friend had the patience to draw animations pixel by pixel using the calculator arrows, but not for learning BASIC. Me, I had the opposite problem. Together, genius.
 
Upvote
2 (2 / 0)
Upvote
1 (1 / 0)