[HN Gopher] Alan Turing's 1950 manual for the Mark I electronic ...
___________________________________________________________________
Alan Turing's 1950 manual for the Mark I electronic computer [pdf]
Author : lisper
Score : 167 points
Date : 2024-09-23 04:36 UTC (18 hours ago)
(HTM) web link (archive.computerhistory.org)
(TXT) w3m dump (archive.computerhistory.org)
| pncnmnp wrote:
| It looks like this is part of the Knuth Digital Archive Project:
| https://archive.computerhistory.org/resources/text/Knuth_Don....
| There's some fascinating stuff in there, like this "What a
| Programmer Does" (https://archive.computerhistory.org/resources/t
| ext/Knuth_Don...).
| vessenes wrote:
| Boy I love this. Both for the pleasure of reading what Turing
| thought his 'experienced' operators needed to know, and also for
| the glimpse back at all the engineering, physical constraints,
| and solutions pulled together. Within a few pages we're talking
| about where on a physical circle "tubes" physical bits reside,
| just, you know, as a starting intro. Really amazing.
| adrian_b wrote:
| This Ferranti Mark I computer is notable because, despite being
| one of the earliest electronic computers, its instruction set
| included 4 instructions that are now included in most modern
| ISAs, but which have been missing for many decades from the
| instruction sets of most later computers, with the exception of
| the supercomputers made by CDC and Cray.
|
| Those 4 instructions, with their mnemonics in the Intel/AMD x86
| CPUs are:
|
| LZCNT (leading zero bits count), which was named "The position of
| the most significant digit" in this manual.
|
| POPCNT (population count), which was named "Sideways adder" in
| Mark I (it is listed in a table at the end of this manual).
|
| RDRAND (read random number), which was named "The random numbers
| generator" in this manual.
|
| RDTSC (read time stamp counter), "The clock" in this manual.
|
| It is said that some or even all of these less usual instructions
| had been suggested by Alan Turing himself to the designers of
| Ferranti Mark I.
|
| Another notable instruction of Ferranti Mark I was used to
| produce an audible beep, like the internal loudspeaker of the
| older IBM PC compatibles, "The hooter" in this manual.
| dboreham wrote:
| Men in black always want popcount (it's been added to various
| architectures over the years at their request) so this makes
| sense given his background.
| kichimi wrote:
| >Men in black always want popcount (it's been added to
| various architectures over the years at their request)
|
| I've heard this a few times, do you have anything that
| explains this?
| adrian_b wrote:
| It is said that NSA has requested the addition of POPCNT to
| the Control Data Corporation CDC 6600 (1964), as a
| condition for procurement.
|
| The condition has remained in force later, so all its
| successors, like CDC 7600 (1969) or Cray-1 (1976), have
| included POPCNT.
|
| POPCNT has been added to the x86 ISA by AMD, in
| "Barcelona", in 2007, presumably because some customer for
| AMD Opteron has requested it. This happened during the
| period when the AMD server CPUs were much better than the
| Intel Xeons, so any wise customer was buying Opterons, not
| Xeons. Intel has followed AMD and it has added POPCNT to
| Nehalem, in 2008/2009 (for server CPUs, Nehalem has been
| the first that was better for any purpose than the AMD
| server CPUs, unlike for consumer CPUs, where Intel had
| surpassed AMD already since the middle of 2007, with Core
| 2).
| SoftTalker wrote:
| > POPCNT has been added to the x86 ISA by AMD, in
| "Barcelona", in 2007, presumably because some customer
| for AMD Opteron has requested it.
|
| Might have been Cray, they were using Opteron in that
| era.
| Jabrov wrote:
| Check out
| https://vaibhavsagar.com/blog/2019/09/08/popcount/
| dbcurtis wrote:
| Back in my days as a CPU logic designer, I actually worked
| on a scientific mainframe where the MIB came by and said
| "We'll buy some if you add a vector pop count."
|
| Anyway.... if you have cipher text that has been scrambled
| by a linear-feedback shift register, you can take two
| copies of the cipher text, shift one copy by N bits, XOR
| them together, and do a pop count on the result. Repeat for
| bunch of different N's. For some N that corresponds to the
| length of the LFSR the auto-correlation will be much
| better. So now you have at least that to go on... of course
| you don't know the feedback equation and you don't know the
| initialization constant, but you have the start of a
| handle.
| solarexplorer wrote:
| IIRC it also introduced index based addressing. Before that,
| people just wrote self modifying code to index arrays...
| adrian_b wrote:
| True.
|
| The 8 index registers ("B-tube") are called B0 to B7 in this
| manual.
|
| The B0 index register is hardwired to have the read-only
| value "0".
|
| A read-only null register continues to be used in many modern
| instruction sets, e.g. in POWER or in Aarch64.
| SilasX wrote:
| Semi-related: one thing I liked about the video game Turing
| Complete [1] is that, once you've built the computer and
| implemented its (binary) machine code ... it doesn't give you
| an assembly language, or suggest one!
|
| It has you start programming in binary, and then just tells you
| how to make your own mnemonics to substitute for having to
| write out each 8-bit input. So you end up picking them based on
| what commands appear most often in practice.
|
| One instruction I ended up creating was JNEQCI, "jump if not
| equal, comparing to immediate". (jump if not equal where the
| first operand is treated as a register and the second as a
| constant/immediate value)
|
| [1] from LevelHead, and similar to nand2tetris in that you
| build a computer from its circuits and then program it
| cmehdy wrote:
| All Zachtronics games are a strong recommend for anybody who
| doesn't already know them.
|
| Exapunks and Opus Magnum are probably the more casual ones to
| get into, but everything they make is awesome and pretty
| challenging.
| doormatt wrote:
| FYI, Turing Complete - while a fantastic game, is not made by
| Zachtronics.
| SilasX wrote:
| Oops, fixed. Thanks. I had just lumped it in with all the
| others.
| fsckboy wrote:
| to save you time, this is a summary of the links various people
| here are posting:
|
| popcnt of a word counts the number of bits that are "1"
|
| https://www.talkchess.com/forum3/viewtopic.php?t=38521
|
| the NSA wanted to do cryptanalysis on intercepted messages, and
| since the CDC 6000 had 60-bit words, one word was enough to
| store most alphabets they were interested in. They were able
| to: Split a message into lines Set a
| bit for each unique character they encountered per line
| Use popcount to count the distinct characters Use the
| count as a hash for further cryptanalysis
|
| Curiously, popcount seems to have disappeared from instruction
| sets between the mid-1970s and the mid-2000s.
|
| (of course for all we know this could be NSA disinformation ;)
|
| That's the answer to the NSA question. There are other uses
| described here
| https://vaibhavsagar.com/blog/2019/09/08/popcount/ including
| for Hamming codes and Neural nets and more.
| mikewarot wrote:
| My how things have changed.... he says "Desk Machine"... and of
| course I think Keyboard, Computer, Monitor, Mouse.. ;-) Instead
| of one of the Friden Calculators.
|
| Like this one, seen in a storage rack somewhere deep inside a
| TARDIS.
|
| https://en.wikipedia.org/wiki/Friden,_Inc.#/media/File:Fride...
| hinkley wrote:
| Some of the control codes we use in ttys today came from
| teletype machines that were already around for five to ten
| years in 1950. Also when the 132 character wide terminal
| standard was born. Thats's another valid interpretation of
| desktop.
| adrian_b wrote:
| The width of 132 characters was the width of the line
| printers, which were the main output device of the first
| commercial electronic computers.
|
| The line printers had been designed from the beginning as
| computer peripherals, because previously there was no need
| for such high printing speeds. They were called line printers
| because all 132 characters of a line were printed
| simultaneously, by impact.
|
| The first computers were not multitasking, so they could not
| be used for anything else while printing. Because of this, a
| very high printing speed was necessary, which required the
| development of the line printers. Later, when printing no
| longer blocked the execution of other tasks, the very
| expensive line printers could be replaced in many cases by
| cheaper printers, like dot-matrix printers or daisy-wheel
| printers.
|
| Many more recent operating systems, like Unix or MS-DOS, have
| kept the abbreviation LPT for printers, even if by that time
| the line printers were already obsolete and they were very
| seldom encountered.
|
| All early experimental computers used teletype machines for
| interactive communication with the computer. In the later
| commercial computers, teletypes continued to be used for the
| operator console, while the batch jobs of the non-privileged
| computer users would have had only the line printer or the
| card puncher as output peripherals.
|
| If there have ever been any teletypes with an output width
| greater than 80 columns, they must have been very seldom
| used. At the standard typewriter pitch of 10 cpi, 132
| characters require paper with the width of 14 inches
| (including the perforated margins). That would have required
| a huge teletype. I do not believe that such a big teletype
| has existed.
| zabzonk wrote:
| > do not believe that such a big teletype has existed.
|
| Decwriter II, according to wkipedia -
| https://en.wikipedia.org/wiki/DECwriter. I've actually used
| one of these, but I can't remember the printing width.
| adrian_b wrote:
| Thanks for the link.
|
| Nevertheless, I see that Decwriter II was not a true
| teletype. It was a teletype emulator derived from a dot-
| matrix printer and it was introduced very late in the
| evolution of computers, in 1974, at a time when the true
| teletypes had already become obsolete and more than two
| decades after the line printers that have established the
| standard width of 132 characters.
|
| Decwriter II could provide a width of 132 characters only
| because the dot-matrix printer on which it was based was
| built to be able to use the standard line printer
| continuous perforated paper of 14 inches, like most other
| dot-matrix printers.
|
| It is likely that Decwriter II has been used much more
| often as a remote teleprinter than as an interactive
| teletype and in the latter case it was used only because
| some users were forced to use it because their bosses did
| not buy decent computer terminals for them.
| flyinghamster wrote:
| Teletype Model 38 (essentially a wide version of the 33
| with a two-color ribbon) could print 132 columns as well.
| adrian_b wrote:
| That is interesting, but Model 38 was also a very late
| model (1972), launched at a time when teletypes were
| becoming obsolete and more than two decades after the
| line printers that have established the 132-character
| width.
|
| The existence of such very late wide teletypes did not
| have any influence on the appearance of the 132-character
| width, which had been used in line printers since around
| 1950.
| hinkley wrote:
| I did a lot of paper crafts with that wide format paper
| that one of my parents brought home from work pre-
| recycling. There was a certain thing I liked to make where
| the aspect ratio of the sheets was just perfect. That paper
| had neat green and white stripes on it too.
| joshdavham wrote:
| It's interesting to see how he had to write math in this paper.
| Instead of being able to type it, he had to leave spaces and fill
| it with his own handwriting. Maybe LaTeX isn't so bad after all.
| analog31 wrote:
| My parents wrote their graduate theses this way too, in the
| 1950s, except that the spaces were for chemical formulas.
| typon wrote:
| Am I tripping or is the linked manual for the Mark II, not the
| Mark I?
| larsga wrote:
| It says very clearly on the title page it's for the Mark II,
| and in the text he says the advice is based on experience with
| the Mark I, so it's definitely for the Mark II.
| adrian_b wrote:
| The manual is for the experimental Manchester Mark II, which
| is very similar to the commercial product derived from it,
| Ferranti Mark I.
|
| So both the handwritten title about Ferranti Mark I and the
| typed title about Manchester Mark II are right. Only the name
| of the PDF file is wrong.
|
| Manchester Mark I had been an earlier and simpler
| experimental computer, while Ferranti Mark I was a commercial
| product. It actually was the first commercial electronic
| computer, with its first delivery a little before UNIVAC I.
| eschulz wrote:
| Good catch. It's for the Mark II and seems to be written based
| primarily on his experiences with the Mark I. I do not know if
| you are tripping.
| adrian_b wrote:
| It is for Manchester Mark II, which is very similar to
| Ferranti Mark I, so both titles are correct.
| larsga wrote:
| That was interesting. I just casually clicked on the link and
| before I knew it I had read 20 pages.
| krunck wrote:
| "It is not difficult to see that information expressed with one
| set of symbols can be translated into information expressed with
| another sot by some suitable conventions, e.g. to convert
| sequences of decimal digits into sequences of O's and 1's we
| could replace 0 by 0000, 1 by 1000, 2 by 0100, 3 by 1100, 4 by
| 0010, 5 by 1010, 6 by 0110, 7 by 1110, 8 by 0001, and 9 by 1001."
|
| I've never seen someone use this form of binary notation(little-
| endian?) when _writing_ binary numbers.
|
| Edit: I suppose he's writing the numbers in the order they'd be
| input into the machine.
| abecedarius wrote:
| I've read that since Arabic goes right-to-left, decimal numbers
| are little-endian there.
| LoganDark wrote:
| That is indeed little-endian. And cursed.
| retrac wrote:
| > in the order they'd be input into the machine
|
| That is the usual why for little endian. Same reason why little
| endian byte ordering is used on the 8008 and successors. The
| processor needs the lower byte first, to calculate the carry
| over to the high byte. Bit serial machines (like the Mark 1 and
| most other early computers) operate in a similar manner, just
| one bit at a time, from least to most significant digit.
| ahoka wrote:
| A little bit easier on the eyes:
| https://rauterberg.employee.id.tue.nl/lecturenotes/DDM110%20...
| luke-stanley wrote:
| Thanks.
| lisper wrote:
| Personally, I think the modern typesetting discards a lot of
| the essential value of the original. My interest in this manual
| stems not from any desire to program a Mark I, but because I
| want to connect with the past and understand what programmers
| of that era had to deal with. A big part of that was
| documentation that was not pristine, that was full of hand-
| written notes and symbols that they had to somehow make sense
| of nonetheless. It's like the difference between a real vintage
| airplane and a modern replica. The replica looks superficially
| the same, but when you look at the details it feels, well,
| modern. There's something radically different about flying a
| plane with period [1] vs modern [2] avionics.
|
| [1]
| https://media.defense.gov/2015/Aug/03/2001266310/780/780/0/1...
|
| [2] https://www.scalewings.com/sw-51-mustang/
| Animats wrote:
| This is dated 1950, when the Manchester "Baby" was working, but
| the Mark I wasn't working yet. This was five years after Von
| Neumann's original draft of the EDVAC design. The EDVAC itself
| was delivered in 1949. Actual EDVAC report [2] (reset in Tex for
| readability) [3].
|
| The EDVAC report is something everyone in computer science should
| read, if they haven't already.
|
| The big problem in the early days was memory. Early memory
| systems were not only small, but were usually delay lines, where
| you have to wait for the slot you want to come around, like a
| disk. Not random access. Both the EDVAC and the MARK I had some
| true CRT-type random access memory, but not much of it. The Mark
| I had an index register, which was missing from the EDVAC. That
| was the last essential piece of CPU architecture needed to make
| programming reasonably sane. Otherwise you had to store into your
| program code to index.
|
| [1]
| https://en.wikipedia.org/wiki/First_Draft_of_a_Report_on_the...
|
| [2] https://archive.org/details/firstdraftofrepo00vonn
|
| [3] https://archive.org/details/vnedvac
| crawfishphase wrote:
| still better than brainfuck
___________________________________________________________________
(page generated 2024-09-23 23:00 UTC)