41

In nearly all the assembly source files and published listings I read up to the early 1980s, the labels, mnemonics, and operands were written in all uppercase. Just a few years later, I noticed 80x86 code was mostly in all lowercase, as well as later code for other CPUs. By that time, all uppercase code seemed to have disappeared.

When did the switch to all lowercase assembly happen? Were there any specific CPUs or platforms that introduced or popularized this style?

TonyM
  • 3,704
  • 1
  • 19
  • 31
Paolo Amoroso
  • 1,520
  • 1
  • 9
  • 21
  • 3
    While looking through the sources for classic Atari games, I noticed that they used upper case for all of the code and line-end comments. However, some of the longer comments are mixed case, in areas where whole lines are excluded. Example: https://github.com/historicalsource/missile-command/blob/main/COIN65.XX – fadden Jan 30 '22 at 15:54
  • 20
    As soon as it was available and convenient in whatever environment. But there was a history of writing assembly code in all upper case: a lot of code was written on the ASR-33. So, some assembly code would have used lower case when available devices started to conveniently support lower case, but some people still write assembly in all upper case yet today. – Erik Eidt Jan 30 '22 at 19:16
  • 29
    Your timeline seems to coincide with when computers gained lowercase letters, maybe that's your answer? – Glen Yates Jan 30 '22 at 21:14
  • 3
    One other point is that early dot-matrix printers only had seven pins, and thus the letters y, p, g and j looked bad when printed. Upper case was easier to read from printouts. – RonJohn Jan 31 '22 at 00:17
  • 4
    @RonJohn: On many high-end line printers, depending upon the contents of the installed printing chains, lines which contained only uppercase letters, digits, and a few common symbols would print much faster than lines which contained lowercase letters or less common symbols. I don't remember the precise details, but if a printer's chain had eight sets of the digits 0-9, dollar sign, period, comma, parentheses, plus, minus, slash, and asterisk spaced around it, along with sets copies of A-Z and some more punctuation, and one set of a-z and everything else, then the printer could... – supercat Jan 31 '22 at 00:58
  • 3
    @RonJohn: ...with each rotation of the chain output about eight lines containing any combination of the most common characters or four lines containing A-Z and other common characters, but only one line containing lowercase letters. – supercat Jan 31 '22 at 01:00
  • 9
    For me it was ~ 1984. I had a course in Univac 1100 assembler. Everyone was using UPPER CASE. I discovered the newer version of the assembler that handled mixed case. Asked the professor - "sure, you can use it" and I did. – manassehkatz-Moving 2 Codidact Jan 31 '22 at 03:48
  • 3
    As others have said, it's partly when the industry had lower case commonly enough for habits to change, it appears to me. I wrote all my assembly source in upper case from the mid-80s onwards because that's what I saw in professional source and in published listing, like the ZX Spectrum ROM disassembly and the IBM PC BIOS source listing. Come the 2000's, when I first saw lower case in HLLs then assembly, and those listings and mine just look SHOUTY. Guess my move from early CP/M and DOS to Windows had a lot to do with it, always seeing finer on-screen text and such a range of characters. – TonyM Jan 31 '22 at 08:24
  • 2
    For me, assembler became lower case when I learned POKE 59468,14 – JeremyP Jan 31 '22 at 08:46
  • 1
    N.B.: We're still waiting for engineering drawings to use mixed case. CAD has supported it for ages, but I think we're still short on engineers who know when to capitalize. – Theodore Jan 31 '22 at 14:42
  • 1
    Observation: Of two of the larger platforms, my impression is that Motorola assembly code started to show up a in lower case a bit earlier than Zilog and Intel. – tofro Jan 31 '22 at 15:05
  • Yep. In Lance R. Leventhal's 1979 "Z80 ASSEMBLY LANGUAGE PROGRAMMING" (a published book, ISBN 0-931988-21-7), it is all uppercase, including the comments. – Peter Mortensen Jan 31 '22 at 16:27
  • 3
    @Theodore: Election ballots in the US often write candidate names in uppercase only, even though printing technology has supported lowercase for centuries. Using only uppercase Latin letters without accents means one can't get the case wrong. If a drawing has a labels xc and XC at various places without any surrounding text, there would be a high likelihood of them getting confused. Using uppercase only avoids such confusion. – supercat Jan 31 '22 at 19:49
  • 2
    @Theodore, yep...or when full stops aren't needed on abbreviations :-) – TonyM Jan 31 '22 at 19:59
  • 1
    @Theodore Which of course leads to the warnings in Windows and elsewhere if you try to enter a password with CAPS LOCK on. – manassehkatz-Moving 2 Codidact Jan 31 '22 at 23:26
  • 1
    @manassehkatz-Moving2Codidact: https://www.youtube.com/watch?v=FE_p5N89XQI – ninjalj Feb 03 '22 at 03:04

12 Answers12

44

It changed when people learned that a) they HAD lowercase, b) typing in uppercase is a pain in the neck, c) that it doesn't matter what case it's in.

It's just the natural progression as capabilities expanded.

Simply someone started and said "What the heck am I doing this for?".

The earliest published example I could find (through a non-exhaustive search) was for a Z80 routine published in Dr. Dobbs in Oct of 1981.

That said, I'm pretty sure when I was doing assembly back in the early 80s, I, too, used uppercase "because assembly".

But, yea, typing in upper case is a pain in the neck, frankly. Especially since I haven't had a CAPSLOCK key in 15 years.

Will Hartung
  • 12,276
  • 1
  • 27
  • 53
  • 12
    "I haven't had a CAPSLOCK key in 15 years." Indeed, I reassign the caps lock key to control, because it's in a better location than the control key on most keyboards, I never use caps lock, and I use control characters a lot. – DrSheldon Jan 30 '22 at 18:39
  • 26
    I'm not sure your personal choice of not having a CAPSLOCK key should be relevant for the general public. With one, typing lowercase or UPPERCASE requires the same effort. Did computers of the time have a CAPSLOCK key? – Diego Sánchez Jan 31 '22 at 07:50
  • 6
    If a given monitor/assembler required commands to be in uppercase, they would have been configured so that they automatically appeared that way upon entry, without the need to use the Shift key. Manually entering commands in uppercase would have been required only if you were typesetting them for publication—but even then, CapsLock keys have been around forever, notwithstanding the fact that you in particular choose to remap yours. – Psychonaut Jan 31 '22 at 09:45
  • 6
    Up until the 1980s much assembler development was done using ASR-33s or mainframes with a limited character set. I remember changing the default for a lab full of networked machines I looked after in about '85. There was a consensus that upper-case letters tended to be more rectangular in order to fill the available per-character bitmap, and that lower-case letters were easier on the eyes since their shape was more varied. – Mark Morgan Lloyd Jan 31 '22 at 11:26
  • 2
    @Psychonaut If ... they would have been configured that way. If there were no expected input devices with lower case, there's no need to convert lower-case input. (And ditto for capslock keys). Example: TSS-8, a timesharing system for the PDP-8. – dave Jan 31 '22 at 13:02
  • 4
    WHen I started computing in the late 70's, terminals and printers with lowercase capabilities were significantly more expensive. And some operating systems didn't have good support for lowercase. – Barmar Jan 31 '22 at 16:50
  • 1
    @DrSheldon, I've never seen a keyboard with lowercase without CAPS LOCK... – vonbrand Feb 02 '22 at 23:04
  • @vonbrand The keyboard has a caps lock key, I (as well as many others) remap it to Ctrl. – Will Hartung Feb 02 '22 at 23:43
  • @WillHartung I hear about this for the first time. Definitely, on IBM PC under MS-DOS or Windows Caps Lock is not necessary because the filenames and commands do not distinguish case, but this is not the case for other OSes. – Anixx Feb 07 '22 at 18:54
27

I guess there is no straight answer, as it's a fuzzy move spread across a long time, many machines, OSes and applications. Also, with each generation, systems usually start out with only one case. If restricted to a single case, western (Latin) cultures used to fall back to Roman times by using upper case only (*1).

When did Assembly code begin being written in lowercase?

I guess the most important point has already been touched by Will's answer:

  • When they finally had lower case, and
  • when assemblers started to be case-insensitive.

Both of this depends on hard-/software development, including the adoption of codes providing lower case at all and OS input routines no longer uppercasing everything entered by default. Development varied on machines, thus there is no specific point in time.

But there are maybe a few additions more to habit and psychology.

  • On a mainframe side, using upper-case remained supported by (optional but default) automatic conversion. (*2)
  • People continued with upper-case this out of habit, but also as
  • Upper case was considered 'proper'.

Then there came along a generation of programmers that first used the lowest cost devices possible - teletypes - and thus got used to the look - except to the computer, everything typed was upper case.

This generation of systems, nowadays mostly summarized as 'Minis', 'felt' several issues:

  • Default code sets were capable of upper and lower case.
  • The landscape was rather non-homogeneous, that is all lower terminals, all upper and dual case were used at the same time.
  • There was no fine chiselled OS-I/O structure unifying input.
  • There was no room for large intermediate layers.
  • Software development was decentralized and quite fast or ad hoc.

As a result, input files came in whatever case typed. Without central conversion in file upload or storage, programmers added internal case conversion to their Assemblers (*3). As a result, files not only stayed the way they were created, but also all output showed the verbatim input, not converted to upper-case like before.

Overall it was a process repeated with each new field computers reached, as early Micros showed the same limitations that mainframes and Minis had when being introduced: only caps. Just take the 'big three': TRS-80, Apple II and Commodore PET. They all started out in upper case.

  • Apple saved on character generator; lower case could only be added as hack. (*4)
  • Tandy saved as well, but sold a lower case mod soon.
  • Commodore could be switched into lower case mode, but would lose its graphics abilities in turn.

It wasn't until the mid 80s that lower case was really hassle-free on all common platforms - and the overwhelming number of them being Micros, running on software ported from, or at least inspired by, Minis (*5).

In some way it marks a generation shift, as everyone after that could use a case-insensitive Assembler without any pressure to use upper case; they simply did it, never learned different and the world moved on.


In fact, the mid/late 80s also mark the moment in time when this development in turn influenced the 'old' world of mainframes. It was around that time that mainframe assemblers started to allow bells and whistles unheard of before ... like

  • Label names longer than 8 characters,
  • Heck, at some point even variable length and even worse
  • Introduction of (optional) case sensitivity

Well, the new generation got its will, even on old iron :))


*1 - Lower case letters were added rather late, starting around the 4th century and only in handwriting. It wasn't until the 8th century that "Minuscules" looked mostly like we know them today.

*2 - That means, any input was turned into upper case processed and outputted as such, so all seen was upper case, regardless how it was inputted.

*3 - A mode nowadays called case-insensitive :=)

*4 - A seriously odd hack. Input-wise it involved connecting the shift keys to one of the game inputs, while output was handled by using Inverse characters as upper case and regular ones as lower - all still using upper case glyphs. Sounds weird, is weird, but after some time one gets used to it and it feels fine. That is until using a different computer again. :))

*5 - By then the percentage of programmers of mainframes or even minis started to become invisible compared to the all present desktop micro.

Raffzahn
  • 222,541
  • 22
  • 631
  • 918
  • 9
    "Mixed case" -- the DEC VT05 was a nasty contributor to this. Upper-case only display, dual-case input. So you might have no idea which case you were using. The assembler didn't care. Editors did. ("I can see the damn line, so why can't the editor find it?") – dave Jan 30 '22 at 19:16
  • 8
    Back in the day, on the PET, I used lower case to make the program look "more professional". Mind, by the same token, I made a routine to print strings at "300 baud" so it would look like "a real computer". So, just shows where my head and perceptions were at in times past. – Will Hartung Jan 30 '22 at 22:50
  • 3
    "Just take the 'big three': TRS-80, Apple II and Commodore PET. They all started out in upper case." This is the big one - people are lazy. If caps come out by default then people will type in caps. If lowercase comes out by default then people will type in lowercase. – J... Jan 31 '22 at 19:32
  • 3
    Instead of paying $100 (later $60) to Radio Shack for the lowercase kit, you could piggyback one more RAM chip onto one of the existing ones, jumper one or two leads from the chip to the board, and Do It Yourself for $10 or so. I miss that kind of hackability. I guess the millionfold performance improvement has been worth it, though. – jeffB Jan 31 '22 at 19:56
  • On the second Apple II plus that I ever had occasion to use, which employed 13-sector disks, printing character codes 97 to 122 (with CHR$) would produce lowercase. I was taken aback to later on to find that such behavior wasn't universal on Apple machines. I wonder what sort of mod kit that machine would have had installed? – supercat Feb 01 '22 at 00:05
  • @supercat Well, did it have an 80 column card? They had their own VDU and chargen. Driver ROMs were made to accept lower as well - if produced somehow :) – Raffzahn Feb 01 '22 at 00:44
  • @Raffzahn: I didn't find out about PR#3 until after I was confused by why my code to convert text to lowercase wasn't working, but I don't know why I would have been surprised when such code failed if I hadn't seen it work before. The TI 99/4 (not 4a) which I'd programmed didn't have lowercase built into the machine, but did have on the printer, but I don't know why I would have expected the Apple to work with lowercase on the screen when other machines didn't. – supercat Feb 01 '22 at 06:21
  • 1
    @Raffzahn: I think I may have a hypothesis: some programs from that era, including Tawal's Last Redoubt (which I played back then), install a character-output driver that renders mixed-case text on the hi-res screen. I wonder if I might have been in graphics mode without realizing it when I'd earlier confirmed that PRINT CHR$(97) would output a lowercase a? – supercat Feb 01 '22 at 21:17
  • 1
    There's a legend (I forget where I read it) that in the early days of teletypes, they knew they could only support one case and had to choose between upper and lower. Lower case was recognized as being clearly superior for readability, but management insisted on upper case, on the grounds that writing "God" as god would be improper. – Nate Eldredge Apr 21 '22 at 17:09
  • On the Apple][+, the mod involved replacing the character ROM on the motherboard with one that had lower-case characters (the default one just had uppercase). The wire from the shift key to the game port then allowed software to convert input characters (which were always uppercase) to lowercase when the shift key was not depressed. – Chris Dodd Aug 23 '23 at 00:19
18

It depends on the local culture. If you look at man pages from 1st or 2nd edition Unix, then it appears they always did use lower case. On the other hand, in DEC we tended to write in upper case.

There are two drivers for this as far as I can see: (1) the I/O devices you have available, and (2) the code you've been exposed to. I wrote MACRO-11 in upper case because all the MACRO-11 I read was written in upper case. I don't even recall whether the DEC assemblers were case-insensitive; probably they were.

In short - I dispute the notion that there was 'a time' when this happened.


P.S. Come to think of it, I also wrote BLISS in upper case (the compiler didn't care), simply because all the BLISS code I read was in upper case. You can perhaps regard this as adhering to convention for the sake of readability: today, I use Java conventions for Java, Python conventions for Python, etc.

dave
  • 35,301
  • 3
  • 80
  • 160
  • 1
    Re "...they always did use lower case": And we still suffer to this day. – Peter Mortensen Jan 31 '22 at 16:31
  • On UNIX the convention was to use lowercase, and if you had an upper-case only terminal it would convert everything to lowercase on input and back to uppercase on output, using backslash to get "real" uppercase. Linux still supports the XCASE terminal mode for doing this, though it was removed from POSIX. – Chris Dodd Aug 23 '23 at 00:12
12

Just guessing here, but the answer might be related to whether the typical input method (punch cards, teletype, video terminal, typing code using the built-in keyboard and character generator) for editing or entering assembly language code into a system defaults to UPPERCASE, or is even limited only to such representation of text. Ditto for printers used for printing out the program code listings.

For instance, the Commodore PET boots up in a mode which only allows uppercase characters. Granted, you can switch to an alternate character set which allows mixed case but at the expense of losing access to many block graphics characters (see PETSCII). On such a system, programming in uppercase is the natural default.

Conversely, programming would be awkward on a system which defaults to lowercase (mixed case) if the assembler or machine code monitor only accepted uppercase mnemonics — that is, if the programmer were required to constantly hold down the Shift key or keep the Shift Lock or Caps Lock function enabled while editing the code. On such a system, programming in lowercase is the natural default.

Computers started out as programmable number-crunching, code-breaking, data processing, simulation, and automation devices. For such purposes, all-caps text is sufficient. The glorified typewriter thing (word processing) only came later, and was perhaps the first application that actually required implementing lowercase?

The uppercase/lowercase usage in program code listings likely reflects these developments.

Jukka Aho
  • 2,012
  • 10
  • 13
  • 1
    In the days before people were concerned about being able to interchange data among different computers, PETSCII was a clever approach to not only making it possible to use a bigger range of graphics characters than would be otherwise be possible, but also avoiding the need to use caps-lock when feeding data to programs that expected uppercase ASCII codes and had no idea that lowercase even existed. – supercat Jan 31 '22 at 23:56
  • 1
    re Conversely, programming would be awkward on a system which defaults to lowercase (mixed case) if the assembler or machine code monitor only accepted uppercase mnemonics. In my experience, this is not true. The average terminal that has lower case "defaulted" to lower case (i.e., shift/caps lock needed for upper case), and yet we wrote assembly code in upper case. Having the caps lock key engaged was not particularly inconvenient - press it once when you started editing your code. – dave Feb 01 '22 at 13:09
12

RT-11 Realtime PDP-11 Operating System:

All code was written in MACRO-11. A short experiment of writing some of the utilities in C freaked out the attorneys and was stopped.

As of 1979, all source editing was done on VT100s or better, which readily handled cased input and display. Printers were capable of displaying both cases. Some still did compressed descenders to save a couple of pins in the print heads. (Incidentally, compressed descenders have reappeared in my Jeep's instrument and Sirius-XM radio displays – UGH!)

As RT-11 architect (in the 1980s and early 90s), I introduced a concept I called semper shiftus. The maximum MACRO-11 symbol was 6 characters long. It was case insensitive because it was converted to rad50 (don't ask), which was stored as uppercase. However, the visual representation of a symbol could have 6 bits of information added by using camelcase. The cases of individual letters could give more clues about the meaning of the name.

For instance, PMTBLK, when displayed as pMTblk, could more easily be understood as "pointer to empty block".

This concept was not accepted with universal joy.

jfwfmt
  • 151
  • 4
  • Despite not really answering the question, it did a great job putting an incredible wide smile on my face - especially the 'joyful' part. Thanks :)) – Raffzahn Jan 31 '22 at 04:07
  • 4
    RAD50, or "so who says a character has to have an integral number of bits, anyway?". – dave Jan 31 '22 at 14:31
  • For non-DECies, 50 characters was sufficient: 32 upper-case alphabetics, 12 decimal digits, space, dollar-sign, dot, and one other that tended to be OS-dependent. – dave Jan 31 '22 at 23:16
  • @another-dave twelve decimal digits? Am I missing a couple of fingers or something? – Omar and Lorraine Feb 01 '22 at 14:53
  • 1
    Sure: 0 1 2 3 4 5 6 7 8 9, count 'em: 12. – dave Feb 01 '22 at 15:08
  • I do however note that I only have 8 (decimal) fingers, and 2 thumbs. – dave Feb 01 '22 at 15:09
  • 3
    RAD40 only stored 26 upper-case alphabetics, 10 decimal digits, space, dollar-sign, dot, and one other that was OS (or application) dependent. (Rad40 was for those who thought in decimal (i.e. those who thought their thumbs were fingers)). – jfwfmt Feb 01 '22 at 21:24
  • You might want to add that a benefit of RADIX-50 (to use yet another variation of the name) is that you can encode six characters in 32 bits. It was also used on 36-bit machines because it left four bits free for symbol metadata. – Lars Brinkhoff Feb 02 '22 at 08:11
9

From personal experience, I started programming in assembler on a BBC micro in 1982. The documentation at the time used upper case, probably for historical reasons but perhaps to make it easy to identify code vs English text, so I did the same until I found out by accident that lower case was also valid. I tended to use upper case though because my teletype couldn’t print lower case characters as upper case even though it had an 8-bit paper tape punch. In later years, using lower case by default allowed the regression to camel-case, once the programming community had got used to using variable names of more than one character.

Frog
  • 1,385
  • 4
  • 7
  • 2
    I had a similar experience. Since I touch type, I didn't look at what I was typing and had a whole load of code in lowercase. Only realized what I had done when the assembler picked out a syntax error. I still prefer using uppercase for assembler – cup Jan 30 '22 at 22:31
  • 1
    I think you mean "regression to camel case" :-) – dave Feb 01 '22 at 13:11
9

Back in the 1970s, most line printers only did upper case. Some had lower case, but the longer print chain slowed them down considerably. So you couldn't rely on all printers having lower case, so you only used it occasionally.

Moreover, until the late 1970s you'd be lucky to have an input device that did lower case. Punched cards were upper-case only. So were teletypes. I typed (and edited, and printed out) my PhD thesis in 1975 using a paper-tape device called a Flexowriter, but they were expensive and scarce (I used them at night when the queues were shorter).

Lower-case started to become widely available around 1980, with the advent of VDUs and dot-matrix printers. It probably affected assembly programming rather later than most things because when you're dealing with short instruction names like ADD and SUB the readability benefit from lower-case is rather marginal. Certainly I was programming in assembler from 1977-1982 and it never occurred to us to use lower-case, even if it was becoming possible.

Incidentally some of my colleagues who wrote assembler were quite slow to move off punched cards. They found that inserting and removing cards from a deck was an intuitive way of editing an assembly-language program. Probably says something about the quality or performance of the interactive editors available at the time.

Michael Kay
  • 569
  • 2
  • 6
8

The PDP-1 computer from DEC built in 1960, used lower case for Assembler. I seem to recall that upper case was used for some special purpose, like referencing a macro parameter.

You can see some PDP-1 assembler for the Spacewar program here

Walter Mitty
  • 6,128
  • 17
  • 36
7

There was, once, a compelling reason for all programs to be written in all-caps: not all computers have always supported lowercase. This convention stuck longer for the languages that were typically used on those machines. In particular, Intel 8086/8088 assembly code was designed to be similar to 8080 assembly code, and some of the original microcomputers with an 8080 or Z80 CPU, such as the original TRS-80, did not have lowercase. You also see it with languages that were originally used on mainframes, such as Fortran and COBOL.

The shift seems to parallel the transition, circa 1980, from uppercase keywords in languages such as Fortran and Algol to lowercase keywords. Most older languages that started out with keywords like BEGIN and END also accepted begin, rather than reject programs where the intent was obvious. Then, newer languages made those the default, or even mandatory. C, designed on minicomputers of the early 1970s without already-obsolete mainframes or early 8-bit microcomputers in mind, was one of the first major languages to only accept lowercase keywords.

I have the impression that this became a stylistic choice. lowercase was the newfangled way to program, ALLCAPS the old-fashioned way, and only someone with a dinky little computer would need it. But it was probably mostly a matter of convenience. Once programmers switched from card punches to keyboards, lowercase was easier to type.

Davislor
  • 8,686
  • 1
  • 28
  • 34
  • 3
    Algol 60 the language never had "upper case" keywords. Some implementations did, but not the ones I used. On KDF9 paper tape, for example, the keywords were made from underlined lowercase letters, identically to the reference language. Any decision about upper case keywords was taken by the implementer. Algol 68 did have upper-case stropping as one of the suggested means of representing bolded characters (in 68, not just keywords, but other indicants too) but in that case, no pun intended, you were very much in mixed-case land -- INT and int were syntactically different entities. – dave Feb 01 '22 at 15:24
  • 1
    I remember that the Research Machines 380Z running CP/M would have caps lock on by default, and I think that may have been the case for the BBC micro too, so the idea of programming in upper case certainly continued well after lower case was supported. – Frog Feb 01 '22 at 19:33
  • @another-dave, Algol60 had no "keywords in (any) case", they were separate symbols. Algol60 was designed as a literary language, not really for computer implementation. Different Algol compilers handled "keywords" differently, e.g. all caps, 'in apostrophes', as keywords (like newer languages), ... – vonbrand Feb 02 '22 at 23:14
  • 1
    I am aware of Algol 60 terms (indeed, the machine I used equated each Algol basic symbol to one 8-bit value, i.e., procedure was a single "character" on this machine, as stored in an on-disc Algol 60 source program). I was following the terminology of this particular answer. I obviously disagree with the "not really for computer implementation", since for several years it was my primary programming language on several different computer systems. – dave Feb 02 '22 at 23:36
  • No, it's not a stylistic choice. Using lower case allows to use numbers at the same time on modern keyboard layouts without the need to press a shift key. That's not possible, if you use upper case letters. With uppercase you either always have to press the shift key as well, which is inconvenient, or you activate Caps Lock, but the number keys are no longer available in Caps Lock mode, to use them you would have to switch this mode off again. But digits are often required in programming. So it makes sense to write most of the code in lower case because it means fewer keystrokes. – Coder Aug 20 '23 at 02:03
  • @Coder - What systems do you use where Caps Lock makes the digit keys unavailable? You appear to be talking about Shift Lock, but no keyboard I currently use has such a thing. – dave Aug 20 '23 at 02:29
  • @another-dave You're right. My mistake. – Coder Aug 20 '23 at 02:51
5

In the late 60s when I learned assembly (first for a Honeywell 200, an IBM 1401 clone more-or-less, and then the GE 635) we submitted our programs on punch cards, which had only uppercase. Not too long after Dartmouth Time Sharing went live on the 635, a fellow student wrote a macro assembler which ran (and stored our code!) on the time sharing system, letting us get rid of the punch cards.

Nevertheless, our terminals were model 33 and 35 teletypes. Again, only uppercase. And, of course, the line printer also had only uppercase.

As I remember, and I could be wrong, even the early CRT terminals I first encountered in grad school on Decsystem 10 circa 1972 were upper case only. But we did have a primitive WYSIWYG editor, written by one of our professors. Night and day in terms of productivity, but still not particularly pretty.

I wish I could remember when I first saw a terminal with lower case, but I can't.

Ron
  • 151
  • 1
2

It may be worth noting that in the early days of computing, many documents consisting entirely of human-language text which was intended to be read solely by humans were reproduced in all caps. Photocopying machines were uncommon, and while typing a document on a mimeograph stencil would be more convenient than typing it onto a stack of cards, there was no convenient way to copy a mimeograph stencil into a form that could be distributed and allow multiple recipient to independently run off their own copies. If a supplier of computer equipment or software for it wanted to distribute documentation to customers who had printers, including the documentation in a form that could be reproduced easily using computer equipment could be cheaper and more useful than having to produce the document using a mimeograph, Linotype, or other such means.

If the documentation for how a language works is going to be printed in all caps, any language examples will need to be likewise, regardless of whether the language designer would have favored the use of all caps over lower case or mixed case.

supercat
  • 35,993
  • 3
  • 63
  • 159
2

I remember that in the early 1970s the Math Faculty at my university had a Honeywell GECOS system with a dual-case printer.

Most input was via IBM 2741 selectric typewriter, which allowed me to submit assignments for most of my essay courses on computer printout, rather than having to use a typewriter to directly type them on paper as most other students did. (Minor corrections were trivial, as opposed to having to retype the entire page.)

Input from punched cards (EBCDIC or BCD) was also possible, but those characters were by default all lower-case when sent to the printer (much easier to read than all upper-case).

The oldest personal code I could find in my archives is from 1976:

$ ls -l ap2c.txt
-r--r--r-- 1 ray ray 1245 Feb 19  1976 ap2c.txt

$ more ap2c.txt .titl FAST];INTERRUPT HANDLER and DIO RTC INTERRUPTS. .nrel .ent INTER .extd TOP,STACK,CLOCK .extn XOUTC,XOUTT,XINT,XINC INTER: inta 2];Interrupt Routine. skpdz DIO ]jmp XDIO ]skpdz RTC ]jmp XRTC ]skpdz TTI ]jmp @.INC ]skpdz TTI1 ]jmp @.INT ]skpdz TTO ]jmp @.OUTC ]skpdz TTO1 ]jmp @.OUTT ]sta 3, DIO3];clear garbage interrupt. ]lda 3,CLEAR ]add 2,3 ]sta 3,.+1 ]0 ]lda 2,FALSE];Stack false interrupt message. ]jmp STORE XDIO: sta 3,DIO3];DIO Interrupt. DLOOP: dias 3,DIO];restart device. ]lda 2,CALARM ]movl 3,3,snc];select CRT or TTY. ]lda 2,TALARM STORE: lda 3,TOP];get stack pointer. ]inc 3,3 ]addl# 3,3,szc];check for wrap around. ]lda 3,STACK ]sta 3,TOP sta 2,@TOP];store AC2 on stack. ]skpdz DIO ]jmp DLOOP]];loop if DIO has interrupted again. ]skpbz TTO1 ]jmp DIOX]];if stack was empty, send a null ]sub 2,2 ]];character to CRT and TTY to cause interrupts. ]doas 2,TTO1 ]doas 2,TTO DIOX: lda 3,DIO3 ]inten ]jmp @0 XRTC: nios RTC];RTC interrupt. ]isz CLOCK ]inten ]jmp @0 DIO3: 0 CALARM: 101461 TALARM: 130403 FALSE: 134070 CLEAR: nioc 0 .OUTC: XOUTC .OUTT: XOUTT .INT: XINT .INC: XINC .end

I believe that was for a "real time lab" course, where we wrote programs that monitored and controlled an electric train using a mini computer.

I managed to save one mail message from the professor for that course:

From: mamalcolm
Date: Fri Mar 12 1976 17:21
Subject: realtime train lab

THE NOVA IS AVAILABLE NOW. IT RUNS FAIRLY WELL, BUT ABOUT EVERY 30 OR 60 MINUTES IT CRAPS OUT. SYMPTOMS ARE THAT IT HALTS ON NON HALT STATEMENTS. THE REMEDY IS TO WACK THE NOVA CABINET ON THE SIDE WITH YOUR HAND AND TRY AGAIN. IF THAT DOESN'T WORK, TURN THE POWER OFF AND THEN BACK ON AND TRY AGAIN. IF THAT DOESN'T WORK, SEND ME MAIL. GOOD LUCK.

Given that he could type the subject in lowercase, I've no idea why the body is in TUC.

Ray Butterworth
  • 275
  • 1
  • 2
  • 7