I've recently been pawing through my old Basic manuals (I'm implementing a Basic environment for run). And what stands out is how incomplete and limited most of the old environments were (although I did love them at the time).
The Basics were grossly limited. Examples includes the Sinclair AND and OR statements, the very limited FN statements and severe limitations on FOR loops. Given the high expense of disks in those days, it's no surprise that disk handling was uneven at best.
Networking capabilities were trivial to non-existent, and mostly non-existent.
The connection to their environment was deeply weird. From a modern perspective, the first thing we normally do when we see a bit of hardware is to wrap it in a little bit of code to make it simpler to control. The common pattern in the old days was to revel in the POKE and PEEK statements, directly setting hardware registers.
The difference between then and now is that then my plan was to write an program to play lunar lander. My plan today is to write a program that will listen to my mailboxes and change the color of my lights accordingly ("Make it pink!", "Make it blue!")