[Resplendent intro sounds]
*click*
*Compaq whirrs into life with a gradually increasing mechanical spin*
*hard drive clunking*
If you've used MS-DOS in the past, you're probably familiar with this character. This
is the pipe symbol, and it's incredibly useful. It allows you to "pipe" or send, the output
of one program, to another program.
"This episode is sponsored by SquareSpace. More on that later"
If I were to enter "type readme.txt" into this computer,
it would spool out a huge readme file, giving no time to read it. However, it I were to
enter "type readme.txt | more", the output gets sent to the 'more' command, which handily
breaks the document down into screen size chunks.
But there's an issue with this pipe symbol, and the issue is that, well, it doesn't actually
exist, and what's more, there are often two apparently identical instances of it on keyboards,
neither of which are existing in the way they're supposed to.
Allow me to explain.
[tense drum beat, intended to symbolise code communication methods]
For centuries mankind has been using code to communicate, but it was really the telegraph
which set a standard for a universally understood binary type communication with the International
Telegraph Alphabet. This used 5 pulses of electricity to encode the letters of the alphabet
and various figures, so they could be successfully decoded at the opposite end.
Computers also needed character codes, so that data could be sent, processed and stored
in the computer's memory. The problem was, by 1960, there was at least 29 different code
standards being used by computers around the world. IBM for example, even had multiple
character codes used across their own systems. Some standardisation was needed, just like
the Telegraph. Although that couldn't be adapted for computers, because if you arranged the
signals in binary order, it just produced a complete mess.
And so, the American Standards Association (ASA) began the process of character code
standardisation on the 4th August 1960, creating the X3.2 subcommittee for Coded Character
Sets and Data Format.
By March 1961, an initial code was produced. This one; 54 characters, arranged across 4
columns and 15 rows. This gives you a maximum of 60 characters, which fits into 6 bits.
It's a 6 bit code. So going from this example, T is column 3, which is 11 in binary, and
row 7, which is 0111, giving a binary code of 110111 for T. Of course, at the time, punched
card was used for entering data. So this would be represented by two punched holes, one space
and three more punched holes. This is also why we have null at the start of the table,
as that leaves all holes un-punched (binary 000000), and delete at the end of the table,
as that punches all holes, removing any data that was present (binary 111111).
However, that's not what the binary code for T would actually end up being, and, you'll
note that a lot of the characters we used today, are missing from this table. The lower
case alphabet for starters. Therefore it was decided in May 1961, that a family of related
codes, of different sizes would be created. A four bit numeric set, A shifted five bit
set, a six bit set for data processing, a 7 bit set for communications and an 8-bit
expanded set. The 7 bit set was identified as the prime set for information exchange.
It was this initial 7 bit set from the 1st June 1961. Already very different from the
first. It's also the first where we see the pipe symbol, or vertical line. The reason
for it's inclusion is that it's actually the logical OR symbol, and therefore grouped among
other mathematical symbols, such as greater than, less than, logical not. You get the
idea.
However this table, this code, gave minimal concessions to keyboard design. For instance,
if two symbols reside on a key, ideally you want them in the same row, because it equates
to only a single bit difference between each character. This allows the keyboard to be
mechanically simpler. You have to remember that, at this point, Hollerith or mechanical
keyboards were often used to physically punch data into card or tape, to be fed into the
computer, and so This character set lacked elegance and practicality.
And so, in collaboration with other global standards authorities, including the UK and
Europe, the arduous process of determining a satisfactory 7 bit standard began.
Now, I won't bore you with each subsequent revision, but I can tell you that it would
take another 6 years before the standard was agreed, with the vertical line phasing in
and out of existence throughout. By 12th May 1966, we had this setup. Which looks much
better, with corresponding shifted values in the correct rows, and the ability to create
subsets of the set.
The idea here was that the middle 4 columns, could be taken as an international subset,
and used on 6 bit machines, leaving some of the outside characters as part of the greater
7 bit set. Some of these outlying characters could also be re-purposed as part of a national
set, for localised accents and other requirements.
Based around this draft, the International Standards Organisation would draft this proposal.
You can see some characters are designated for national use. We also have a pound symbol
where hash was, giving you some idea as why American's refer to the hash, as the pound
symbol. However, even though this draft got international approval, it caused some upset,
mainly with an IBM user group known as SHARE. The chairman, H. W. Nelson, would pen an irate
letter to the ASA entitled;
"The Proposed revised American Standard Code for Information Interchange does NOT meet
the needs of computer programmers!";
His point was there weren't any characters in the international subset that can be used
to satisfactorily represent the logical operations of OR and NOT. His proposal was that the code
table be rearranged like so, with the vertical line/OR at position 2/3 and the not/negate
symbol at 2/4.
This would allow for operation of programming languages such as IBM's Programming Language
1 universally, and on a wider variety of platforms.
But as the original International Standards Organisation - or ISO - draft had already
been accepted, changes would be difficult. So a compromise was made. Both the circumflex
and exclamation mark would need to allow the ability to interchange with the logical NOT
and logical OR symbols respectively. As if they were shape-shifters. So in some uses,
such as programming, pressing these key commands would create logical symbols, and outside
of programming, or on a different machine, they would produce their original symbols.
So, in an attempt to appease this significant and important programming community, the standards
document was annotated as thus;
"it may be desirable to employ distinctive styling to facilitate their use for specific
purposes as, for example, to stylise the graphics in code positions 2/1 and 5/14 to those frequently
associated with logical OR and logical NOT respectively"
The original vertical line, found in 7/12 was then broken, so that users would not mistake
it as a logical OR symbol, which would then create erroneous output, and the ASCII character
codes were formed. So, this broken bar would become ASCII character 7C. You get that with
the formula 16 x X + Y, where X is the column number and Y is the row number. That gives
us 124, which is 7C in Hex.
-sponsor start-
Which brings me onto my sponsor, Square Space. Now, this is my last slot in this run with
Square Space, so I want to give them a big thanks for sponsoring me, and frankly, allowing
me to upgrade some of my videography equipment. Look out for some improvements in future videos.
But if you want to create your own website, for, well, any purpose, be it business or
pleasure. Square Space has your back.
It's incredibly simple to get a website up and running with a custom domain using their
platform, with effortless tools and guides to help you along, and right now you can grab
10% off your first purchase by visiting the link in the description; squarespace.com/nostalgianerd
But remember, this is the last sponsor segment in this run, so don't hang about. Check them
out with the link below.
-sponsor end-
[Funky synth music to ease us forward into a new world of ASCII]
And so, on the 5th July 1967, THIS would become the American Standards Code for Information
Interchange, or ASCII. With the equivalent ISO 464 code published as a recommendation
in December of the same year. Ensuring text remained readable and usable on multiple machines.
All fonts would therefore be created around this character set, with the keyboard interface
generating the correct signals to call the relevant characters up from ROM, or software.
So then, this explains why we have our broken vertical bar on the keyboard, and indeed,
why it appears in our software. It was part of the character set, but as, it was no longer
needed for it's original operation, computer programs began re-purposing it for their own
uses. So, going back to our initial example; this is how DOS ended up using it for the
useful PIPE command. Although, really it was stolen from Unix, which had been using it
since the early 70s.
BUT.... something happened between 1967 and the release of DOS & the IBM PC Compatible
that SHOULD have had implications.
[Implicating organ music to herald a new ASCII world order]
ENTER ASCII-1977
[Funky '70s rock with hammond organ]
Yeah man, the 70s were a different, funkier time, and it meant what was once taken out,
went back in.
Yes, ten years on, and with the SHARE group apparently a distant memory, ASCII-1977 went
about undoing the compromises of the original ASCII-1967; The hash symbol could no longer
be replaced by the pound. The Circumflex could no longer be stylised as a logical NOT, and
importantly, the exclamation mark could no longer be stylised as a vertical bar.
This meant, the original 7C broken bar, was repaired to be a beautiful full, flowing,
continuous bar. Yep, it was back in business again as Logical OR. Internationally these
had actually been done even sooner, with ISO 646-1973. Seems like it really was done just
to appease PL/1 programmers for a few years.
So enter the IBM PC in 1981, and enter Microsoft DOS, and what do we have.
Yup, we've still got that broken bar.
THIS CHARACTER DOES NOT CONFORM TO ASCII STANDARDS FOLKS. This character should not exist. But
yet, it does there, and it does on almost every keyboard of the 1980s and 1990s - or IBM PC compatibles AT least -
and in fact, still a LOT of keyboards up until this day.
But that in part is due to the IBM PC using it's own character set. This is called Code
Page 437, and should look pretty familiar to you. It's actually an 8 bit character set.
It just does away with the extra 1 bit parity check used on the original 7 bit ASCII set,
and gives us a load of graphical characters, Commonly used for DOS programs like Edit,
Scandisk and QBasic. All the non ASCII characters have bespoke numbering conventions, to avoid
confusion and interpretation issues.
It's based on ASCII, includes all printable ASCII characters and extended codes, and it's
sometimes referred to as "High ASCII". I'm not sure whether that's because it looks like
it's on drugs or not, but it's not strictly speaking ASCII compatible. But rather than
pulling the solid vertical bar from 1977 ASCII, it uses the broken bar that IBM had been accustomed
to since 1967.
Now, if you're from the United States, or really anywhere else, you might wonder why
it's down here. Well that's because this is a UK keyboard. Remember those earlier dollar
symbol, pound shenanigans. Yeah, so this is why UK keyboards are commonly 62 key, rather
than 61; The pound symbol is on 3, meaning the hash symbol is now on an extra key down
near our larger Enter key, meaning the key you Americans usually have over the enter
key is actually now down here, and up here.
Oh god, what the hell is this?
We have TWO vertical bars now. What is this? Two PIPE symbols. What is going on here then?
[Funky detective style music]
Yes, UK Keyboards have a second vertical line to the left of the 1 key. It's shared with
that logical NOT symbol and a grave accent, used in various languages. If you're American
and you have an international keyboard, then you'll find the second vertical line on the
same key as the first vertical line. Although I'm not sure that makes it easier to comprehend.
If anything, it's worse.
Anyway, on a lot of character sets, these two symbols will look identical. The original
PIPE is ASCII 007C, whilst this new one is 00A6, and it's accessed on a UK keyboard using
the Alt-GR key and the top left key. The reason it's here is due to the extended ASCII codes
introduced in 1985 with ISO 8859-1 or ECMA-94. Also known as Latin 1 it consists of 191 characters
from the latin script. Under DOS it was introduced as Code Page 850. You can see how it fits
alongside the original 7 bit set nicely.
With it, this character set re-introduced back the broken vertical bar. Yes; the bar
that was broken in 1967 to stop it being used the wrong way, was brought back. I guess because
people missed it. But, this new broken vertical bar, is a different character to 7C, so it
doesn't really have any purpose, other than to look like a broken bar. Which ironically,
is what 7C still looks like in a lot of fonts, and on a lot of keyboards.
I guess it gives you an extra tool for ASCII art at least.
So if you find an international or UK keyboard from 1985 onward, you'll likely find it has
two solid bars, or perhaps two broken bars, or even more weirdly, it'll likely had a broken
bar where the solid bar should be and a solid bar, where the new broken bar should be. Things have switched around...
In part, this is due to IBM's Model-M keyboard. It was also introduced in 1985, and has the
switched vertical bars, just like Code Page 437. It was also the basis for many keyboards
going forward.
Yup, it's confusing.
so you may come across the odd font that still has the back to front implementation.
Whether your keyboard has them the right way around will vary depending on your keyboard.
Some will, some won't. It's amazing, as we're talking about a hang-over from a standards
dispute that now goes back over half a century.
But regardless of how they look, the operating system will recognise them as intended. I
mean, it should anyway.
So that's why we have two keys with *almost* the same character, and it's also why those
keys, or the characters represented on those keys, don't actually exist. Well, not in the
way they're always intended.
So as a recap. This key was once a broken bar. Represented by a broken bar on screen.
But it should have been a solid bar, represented by a solid bar on screen. Mostly these days
that is the case.
This extra broken bar, located on some keyboards, that is sometimes portrayed as a solid bar,
but is in fact a broken bar, was introduced in 1985, and is really just for old times
sake, but is a distinct different character from the original broken bar, so doesn't really
serve that purpose.
Until it's given a purpose, just like this one was..... Maybe Unix can have an extra
pipe. It seems to like them. Or maybe Youtubers can just use them as a spacing tool in video titles.
So I hope that's explained something you probably never cared about, or wanted to know.
Thanks for watching, and have a great evening.
[70s music]