@stargzer...thanks for all that.. I did know what BASIC stood for but not about its origins. And I didn't use any of the very early ones much, though I do remember working on something that needed LET for assignments. (Maybe that would have made more sense to your dad, @Chesler?)
> The original BASIC didn't have a DO WHILE
Just looked up in GWBASIC's manual and it does not either. I was probably thinking of QBASIC which I used a lot. Never used DO WHILE much, I preferred the other conditionals.
Gotta love the bazillions of lights (and sometimes switches) on the old computers...
I liked FORTRAN at the time, but I'd be hard pressed to remember any of it now :-)
The name BASIC came from Beginner's All-purpose Symbolic Instruction Code and it was developed at Dartmouth (not Microsoft!). It really was pretty basic at first.
The original BASIC didn't have a DO WHILE construct, only FOR...NEXT loops and GOTO and GOSUB statements. I don't remember if the version I used had the ON...GOTO/GOSUB statement. In the earlier versions every statement had to have a keyword at the beginning, so to assign a value it was LET Y=3 or LET X=X+1. It was great day for typists when BASIC interpreters finally made the LET part of an assignment statement optional!
I seem to recall that Dartmouth BASIC had built-in functions to perform matrix manipulations (MAT INV to invert, something I never understood or used; math was not a strong point). After all, it was invented by two Math professors using student labor. The professors (Kemeny and Kurtz) wrote a book called "BASIC Programming" that gave examples of how to us the language in various academic disciplines.
As for piles of paper ...
The control panel on the IBM 360 Model 25 had half a bazillion lights, but two of them were Wait and Sys. A hard Wait was when something got farbled and the program just sat there; it was called a Hard Wait. When a student's program started looping somewhere in core, the Sys light came on and stayed on, so we nicknamed it a Hard Sys.
A good source of large piles of paper occured when a FORTRAN student tried to print to a channel that wasn't punched on the printer's control tape (IBM 1403 printer). Then it was a contest to see if the operator could stop the printer before it slewed through a whole box of paper before he cancelled the program! At least we could recover the paper in that instance. If their program got into a loop (but not a hard Sys) and printed one character and a page feed continuously, well, there would be a pile of scrap paper.
Flurmy wrote: Think about the C syntax: it's made almost unreadable just to save some bytes IN THE SOURCE CODE!
If did your editing using ed on a 10 char/sec teletype, you'd want concise source code too :-)
Personally, I mostly like C's syntax, especially assignment operators like "+=" and the conditional expression "a? b: c". However, chacun a son goût (YMMV). As Flurmy said, there's always Cobol if you really like to type.
@Chesler....I'm glad Betajet came back to you and advised about the ASRs, as I know next to nothing about them.
As Betajet also remarked, the tape has even parity, ie bit 8 is always such that you have an even number of bits. So only bits 1-7 are used, as you say, true 7-bit ASCII.
When I was playing with GWBasic I noticed that it always displays commands in uppercase. If you look at a program file in (eg) Notepad, it looks like gobbledegook - I suspect they tokenised everything to save memory.
< ...codes 0141 to 0172..." I take it those are Octal? Long time since I have seen that. reminds me of what I think is the first story I ever wrote for EE Times:
I tried to teach my father what I was doing (payback for lots of math he'd taught me and many others). He had tried to learn some programming in the 1960s, but it didn't go anywhere.)
I remember he couldn't get past "N = N - 1". "How can N be equal to N minus 1?" "No Dad, that means 'Set N to be equal to...' "
And because Factorial was the first program I learned (computers were taught out of the math department) every time he asked me or my brother to show him programming, we had to start with that. He could learn videogames and the Web, but through generations of programmable calculators, pocket computers, and PCs that we brought home, he never learned to write a program.
The ASR-33 is UPPERCASE ONLY. If you want full ASCII, you need a Model 37 or Model 38. I used a Model 38 quite a bit. It also had a dual-color ribbon, with escape sequences to switch ribbon color. Great fun.
I used the Model 38 to write PDP-11 assembly language with lower-case comments. This was considered heresy at the time and made me a pariah among pariahs -- kind of like an EE student with a circular slide rule.
There's a nice photo of Teletype output on the familar yellow paper at Wikipedia.
Pedantry: Pascal uses "<>" (less than or greater than) for "not equal to". Pascal also uses the Algol ":=" for assignment, so that you can use "=" for equality. This avoids the need for C's "==" equality operator.
I blame the Model 026 keypunch, which influenced Fortran. The creators of Fortran were mathematicians, so I'm sure they would have loved to use the proper mathematical symbols instead of .GE. and .LT. for ">=" and "<". I'm sure glad we've left those silly notations behind! [What? You say they're still around in HTML? 'Strewth!]
Of course, now that we have full graphics displays and the Symbol font, we can fully expect languages to take advantage of these advances and not have syntax designed for a Model 38 teletype, right?
As for proper printing of ">=", "<=", and "!=", you can of course use overstrikes on a teletype or line printer. And if you're really a gutton for mathematical notation, there's always APL :-)
Back to the base topic, did the ASR-33 do lowercase?
The paper tape seems to truly be ASCII (true 7-bit ASCII, not UTF-8 or Code Page 437) but this program was all uppercase, and I think that's all we used, so we couldn't generate codes 0141 to 0172. I guess I'm looking at it backwards, it had a set of characters, and those characters were represented in ASCII; it is not necessary that tape with defined ASCII be read, and it's reasonable and simple for it to interpret 0141 'a' as 0101 'A'.
I remember the Teletypes recognized 0007, ^G, BEL, but we were discouraged from using it, because we had 16 such Teletypes arranged around the room. (Also two CRT terminals, probably earlier than VT-100.)
At that point, high school students had varying typing skills, and even with the program written out in longhand before class, we were limited by how many characters we could type in half of a 40-minute period. (Twice as many students as terminals.)
I think it was a sans serif font. Does anyone know a reasonable facsimile? Or have a sample we could feed into one of those "What font is this?" programs? It had a certain look, and books at the time (I had one which was a scientific approach to Monopoly, where the authors had run a simulation to find the odds of any property being hit) tended to show the results of computations as photographs of the printout, rather than typesetting the table the way the publisher would almost any other piece of manuscript.
@Chesler... "Is semicolon a delimeter to PRINT that says don't do a carriage return?" Yes, as I recall
; Semicolon means stop where you are and wait for the next print command
. comma means advance to the next TAB stop (useful for tables)
nothing means do a new line
I've often thought that the inventors of ASCII - who would have been computer nerds - should have thought to put in characters like not equals, equal to or Greater / Less than, etc. But they didn't, so we are stuck with these weird substitutions. I once wrote a terminal emulator in QuickBasic and it needed some weird characters. Fortunately I found a font editing program that let me create them.
I still love Basic and have never learned C (though that is one thing I want to do) and am doing some blogs on the PICAXE MCUs at the moment - great little things if you're a BASIC tragic like me.....