In 1973, Mr. Willoughby taught the Abington (Pennsylvania) High School computer programming class to code in LGP-30 assembly language. We didn't actually have an LGP-30; it just happened to be what he had been taught on when he was young. All assignments were graded by him simulating your code in his head. Of course, we then went on to learn the (slightly) higher-level NEAT/3 language, for which the school actually had an NCR Century-100 mainframe that would run programs that we submitted on punch cards. Mr. Willoughby's (nobody knew teachers' first names back in the day) theory was that it was important to learn the lowest-level machine language first, so you could understand what was really going on underneath. Worked fine for me; evidently it's not quite so universal anymore.
https://www.goodreads.com/book/show/44882.Code
which covers things down to a quite low-level and was recently updated:
https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
However I strongly believe it's good to start with C. You can still rather quickly do interesting stuff, C is a small language so learning the language itself isn't a huge barrier.
A big benefit of the small language is that it leaves more time available to explore important concepts, not just the super low level ones (memory/pointers, etc) but really important parts of the stack that are infectious to everything else. Specifically things like syscalls and the libc interface that most other languages are essentially built on top of. Working with building blocks like pthreads directly is also very important IMO, both to get a handle on parallelism and concurrency primitives but also to learn why high level languages are so valuable. Similarly for stuff like important socket APIs ala select/epoll and implementing your own event loop.
I was lucky enough to learn all of this early in my career and luckier still to have been able to pass on this knowledge to many mentees over the years.
If there are any aspiring programmers here that want to build from a solid foundation then yeah, ignore the haters, write some C.
man pages and ironically ChatGPT are your friend, use them to explore the foundations of (most) modern code so when you start writing modern code in earnest/for money you will be substantially ahead of your peers in actual understanding.
When you know assembler you can always see what compiled programs run as no matter what language that program was written in, if you start with C you won't have that ability.
Also the realization, C isn't that special, plenty of ways to play around with pointers.
> The new computer had a one-plus-one addressing scheme, in which each machine instruction, in addition to the operation code and the address of the needed operand, had a second address that indicated where, on the revolving drum, the next instruction was located
Is this correct? The manual you have seems to have a diagram with a +1 operation on the "counter register", which loops back down.
All instructions seem to use a memory address, but they use this for doing the instruction thing (adding, subtracting etc).
Maybe I'm just not understanding the format.
In any case, it seems that while Mel wrote lots of code for the LGP-30, the actual hack in the story involved code that Mel was porting from LGP-30 to RPC-4000.
It was quite entertaining.
Apparently, Mel worked for Librascope for quite a while and wrote a lot of stuff. Mel's code is supposedly somewhat better commented and less cryptic than he is usually credited for (though from what I've heard self-modifying code on the LGP-30 was a somewhat intended feature). Whether or not that applies to Mel's blackjack program is probably anyone's guess. A paper tape dump of it is known to be out there, but I don't think the source code is.
The idea is to study some of those programs and maybe port a few to understand how the LGP-21 works (they are supposed to be similar), since so far I don't think much documentation on the LGP-21 has been found.
It provides a lot of context, and puts things into perspective.
Note that it helps to be familiar with The Story of Mel before listening to that episode. I think the podcast may have explained The Store of Mel itself in a previous episode that I haven't listened to yet, but I was personally familiar with it already through the usual folklore.
One of the things he did was restore a Bendix G-15.
It seems to use 0-9quvwxyz.
Does anyone know how/when they were standardize to what we have today?
https://www.kenbak.com/kenbak_registry
You can buy a replica one now (I've bought 2).
In UNIX-like systems (and POSIX in general), POSIX permissions are in groups of threes: rwx for user, group, and others. Hence `chmod 777` means "rwx for user, group, others" (i.e. everyone can do everything), `chmod 0644` means "rw for user, r for group and others", and so on.
Before we standardize on 8 bit bytes, there were all kinds of word sizes. Some machines had 18 bit words, for example. 18 is divisible by 3, but not by 4, so octal made more sense for those at least.
http://bitsavers.informatik.uni-stuttgart.de/pdf/univac/1100...
>FIXED-POINT OPERANDS: One 36-bit single precision word. Addition and subtraction can also be performed upon 2-word (72-bit) double precision operands and upon 18-bit half-words and 12-bit third-words; the leftmost bit holds the sign in each case. Moreover, partial words of 6,9, 12, or 18 bits can be transferred into and out of the arithmetic and control registers. The 11 00/80 can also perform decimal addition and subtraction operations on 9-bit bytes, packed 4 to a word.
My first idea was that you consciously or subconsciously have the front panels from PDPs in mind (which are very iconic), and a lot of PDP had word sizes that were either only or also divisible by 3 (like 12 or 18). Even for the PDP word sizes that were also divisible by 4, it still made sense to keep it in grouping of threes for the overall line.
Looking at the equally iconic IBM s/360 front panel (a 32 bit architecture), or the IMSAI 8080 (the Intel 8080 is 8 bit), you see the bits grouped by fours.
But then you have things like the Altair 8800, which is also 8080-based, and which awkwardly groups the bits in groups of 3 anyway, which does not even fit. So now I wonder how common exactly octal was even for multiple-of-4 bit machines.
[1] https://news.ycombinator.com/item?id=30409100 [2] https://en.wikipedia.org/wiki/Datapoint_2200
Related past discussions—others?
94 years ago today – Hacker legend Mel Kaye was born - https://news.ycombinator.com/item?id=42695655 - Jan 2025 (1 comment)
The Story of Mel (1983) - https://news.ycombinator.com/item?id=38981958 - Jan 2024 (2 comments)
The Story of Mel (1983) - https://news.ycombinator.com/item?id=37131315 - Aug 2023 (4 comments)
Mel Kaye – CV - https://news.ycombinator.com/item?id=36188537 - June 2023 (2 comments)
Show HN: We found the grave of hacking legend Mel Kaye - https://news.ycombinator.com/item?id=36031476 - May 2023 (2 comments)
Show HN: 40th Anniversary – Who are you, Mel Kaye? - https://news.ycombinator.com/item?id=36019424 - May 2023 (4 comments)
LGP-30 found in basement, the same model of drum computer programmed by “Mel” - https://news.ycombinator.com/item?id=33514399 - Nov 2022 (53 comments)
Mel's Hack – The Missing Bits - https://news.ycombinator.com/item?id=33392127 - Oct 2022 (48 comments)
The Story of Mel (1983) - https://news.ycombinator.com/item?id=32395589 - Aug 2022 (167 comments)
Mel's Loop – A Comprehensive Guide to The Story of Mel - https://news.ycombinator.com/item?id=31458048 - May 2022 (2 comments)
The Story of Mel (1983) - https://news.ycombinator.com/item?id=20671031 - Aug 2019 (3 comments)
https://news.ycombinator.com/item?id=20489273 (July 2019 - classic comment by YeGoblynQueenne)
LGP-30 – A Drum Computer of Significance - https://news.ycombinator.com/item?id=20484330 - July 2019 (39 comments)
A Real Programmer: The Story of Mel (1983) - https://news.ycombinator.com/item?id=19283255 - March 2019 (2 comments)
The Story of Mel, a Real Programmer (1983) - https://news.ycombinator.com/item?id=11820569 - June 2016 (4 comments)
The Story of Mel Explained - https://news.ycombinator.com/item?id=9913835 - July 2015 (25 comments)
The Story of Mel (1983) - https://news.ycombinator.com/item?id=9017099 - Feb 2015 (8 comments)
The Story Of Mel - https://news.ycombinator.com/item?id=7869771 - June 2014 (77 comments)
A picture of Mel Kaye (the Real Programmer) [pdf] - https://news.ycombinator.com/item?id=3110883 - Oct 2011 (5 comments)
Mel the programmer was a real person - https://news.ycombinator.com/item?id=1155322 - Feb 2010 (16 comments)
The story of Mel (1983) - https://news.ycombinator.com/item?id=678999 - June 2009 (22 comments)
The story of Mel, a Real Programmer - https://news.ycombinator.com/item?id=181144 - May 2008 (9 comments)
"A picture of Mel Kaye (the Real Programmer) [pdf]"
Are there any photos of 'drum memory'?
I've replaced the submitted URL (https://users.cs.utah.edu/~elb/folklore/mel-annotated/mel-an...) with the Story part, and added the Annotations part to the top text. Maybe that'll help.
About this document ...
The Story of Mel, A Real Programmer, Annotated
This document was generated using the LaTeX2HTML translator Version 95.1 (Fri Jan 20 1995) Copyright © 1993, 1994, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
The command line arguments were: latex2html mel-annotated.tex.
The translation was initiated by Erik Brunvand on Tue Oct 15 13:41:12 MDT 1996