[HN Gopher] The IBM 650: An appreciation from the field (1986) [...
___________________________________________________________________
The IBM 650: An appreciation from the field (1986) [pdf]
Author : pncnmnp
Score : 41 points
Date : 2025-03-03 10:19 UTC (1 days ago)
(HTM) web link (ed-thelen.org)
(TXT) w3m dump (ed-thelen.org)
| yodon wrote:
| >Written by Donald Knuth
|
| A discussion of the joy he found programming a machine with 2000
| words of memory and 34 instructions.
| fipar wrote:
| I always loved his dedication of TAOCP to this computer, and
| this article is a great way to learn more about that particular
| relationship (of him with the computer).
| PaulHoule wrote:
| Notably TAOCP used the MIX fantasy assembly language [1]
| which fits his idea that beginners could take to assembly
| more easily than HLLs. Of course in 1967 HLLs were pretty
| immature.
|
| [1] https://en.wikipedia.org/wiki/MIX_(abstract_machine)
| MarkusWandel wrote:
| Basically the joy of programming on the bare metal - just a lot
| more metal in those days. Those of us decades younger got first
| experience with, say, a Commodore PET. Which despite running a
| programming language was still pretty bare metal. You poked at
| this memory location, and that happened. If it didn't happen fast
| enough, learn some machine language.
|
| I really don't know what the modern day equivalent is - of a
| machine that is so limited that you can really understand it
| completely, and develop programming skills by doing wizardly
| things with the limited resources.
| beng-nl wrote:
| Maybe the modern equivalent is an fpga? It is a flawed analogy
| but it is an environment where you program on the bare metal
| and there are limited resources and you may have to make every
| one count.
| zabzonk wrote:
| It was a joy. I remember in the late 1970s, after reading two
| text books I figured out how to write a little program in Z80
| assembler (and how to use the assembler), and shortly after how
| to read and debug the machine code the assembler produced (and
| a bit later how to use the very spooky linker).
|
| Nothing has quite got to me as much since. I thought I was
| Master Of The Universe!
| sedatk wrote:
| I had the same euphoric experience but with an opcode table
| published in a magazine instead of an assembler. :)
| zabzonk wrote:
| Indeed. After I had learned Z80 assembler from books, I
| managed to teach myself M6809 programming from the (very
| good) Motorola spec sheet. I was Master Of The Multiverse!
|
| Then I calmed down, and learned 6502 and 8086 from books.
| And nowadays I can hardly remember anything about them, or
| C or C++ which I've actually used to make money for most of
| my life. I'm nearly 72 now, so perhaps this is forgivable.
| I'd be interested to know how many young programmers learn
| an assembly language these days.
| theamk wrote:
| A small micro like Atmel (now Microchip) AVR series.
|
| One of my favorites are attiny84/attiny85 - 8 KB of program
| memory, 512 bytes of RAM, 8/14 pins DIP or SO package, needs no
| supporting circuitry (even power cap is optional), runs from
| 1.8-5V so you can connect it to a couple batteries directly.
|
| The device can be programmed in C or assembly. If programming
| in C, don't expect to be able to use regular C libraries: with
| just 512 bytes of ram, "char last_error[512]" will cause your
| device to run out of memory, so you normally write things from
| scratch. And 8 KB codespace is really not that big either. If
| programming in assembly, it's a RISC with 130 instructions, and
| there is no cache or unexpected interrupts - so things like
| counting execution cycles by hand work reliably. Even in C, I
| find myself thinking: "OK, that is going to be X instructions
| for prologue and Y instructions to write, when means I have Z
| uS of latency total"
|
| The device has some peripherals on board (like serial port and
| PWM generator), so capability-wise, it's closer to entire old
| computer (like ZX Spectrum) rather than a single CPU (like
| Z80). At the same time, there is no pre-programmed ROM, and all
| you need is to entirely understand a chip is a datasheet (177
| pages) and maybe instruction set manual (147 pages) - and
| that's it, there are no multi-thousand-pages supplemental docs.
|
| The best part is those things are actually useful. For example
| one of them is next to me, sniffing the signals that drive LCD
| display on commercial CO2 meter, and formatting them for IOT
| transmission. Capturing a ~2MHz signal with 8MHz chip was non-
| trivial, and required some neat tricks to get right.
|
| Another example is various toys - I have a box with a dozen of
| lights and a bunch of buttons and knobs. Pressing the buttons
| and turning the knobs changes the light pattern. Even adults
| often play with this.
| MarkusWandel wrote:
| The love letter to the IBM 650 specifically included
| interactive computing with it, having the machine to
| yourself, being able to single-step through programs and
| patch them and so on.
|
| Also it includes the social aspect (compete in what you can
| do with a program fitting on a single punched card). That was
| present in a room full of Commodore PET computers, with no
| other computing machines available to anyone there. Come up
| with a wizardly hack and immediately have an appreciative
| audience.
|
| The interactive aspect is missing with the attiny85 type of
| microcontrollers. You already have to be pretty good at bare
| metal type optimizations to use them, you can't easily
| _learn_ it on those devices
|
| I see mindbogglingly wizardly things being done with RP2040
| type boards. But that's orders of magnitude more wizardly
| than described here. But at least the "show it off" community
| exists.
| kevin_thibedeau wrote:
| I have a shell interface (line editing, command history)
| that runs on modern ATtiny 2-series. It is easy to have
| nice things on limited platforms.
| ferguess_k wrote:
| I bought a STM32 dev board and I'm pretty certain I can do bare
| metal programming on it too. It does have its ROM pre-loaded
| with the bootloader and maybe something else, but I don't have
| to use any library if I do not want.
|
| It is also very possible and profitable if we go down to 8-bit
| and 16-bit processors too, like 8051.
| kjellsbells wrote:
| > I really don't know what the modern day equivalent is
|
| This comes up on HN quite a bit, without a universal answer. I
| suspect that each respondent answers through the lens of what
| they remembered, or liked, about the platforms that were
| formative for them.
|
| Example: 1980s kids seem to have had formative computer
| experience where the computer was a self contained thing: no
| understanding of electronics needed, instant on, built in
| programming environment. Also there was a rich ecosystem of
| accompanying offline media, eg books on BASIC, magazines with
| program listings, etc. They gave their full attention to the
| machine.
|
| I also see people who grew up on Raspberry Pi and they have a
| different view, much more about hardware and pins and voltage.
| Equally valid but much more electronics-y. Also has a rich
| offline ecosystem.
|
| Of course modern hardware and OSes dont get close to either and
| so the closest experience is probably python in a browser,
| which really feels more like Learning for a Job than Fun with
| implicit Learning. The browser itself is an attention suck too
| - all too easy to switch away as soon as a little boredom sets
| in, and, as we know, boredom spurs creativity.
|
| I dont know if this exists, but a Switch-like platform with
| HDMI to the TV plus built in screen, BT keyboard, and a
| minimal, barely there OS might be one path. But it might still
| fail without the offline media. Maybe you sell it with an
| accompanying book of games you have to type in.
|
| Yeah, I know. Get off my lawn.
| oliviergg wrote:
| Very interesting read. I think you can have the same nostalgia
| for your first computer/langage in each generation ! I love the
| part where he describes the trick to reverse the 10 numbers
| 0123456789 with a program that fits on a single card.
| mmpollard wrote:
| Tangentially related, one of the coolest books I've ever read is
| called "the dream machine" -- it goes through a ton of the detail
| around opinions on projects like the IBM 650 and others at the
| time... Neat stuff.
|
| https://press.stripe.com/the-dream-machine
| svat wrote:
| Knuth's tribute to his first love; a delightful article which
| I've read multiple times.
|
| One thing that he wrote in this 1986 article about the 1950s has
| remained true for several decades since:
|
| > _During my student days I had never heard of the 701, and this,
| I think, leads to an important point: The IBM 650 was the first
| computer to be manufactured in really large quantities. Therefore
| the number of people in the world who knew about programming
| increased by an order of magnitude. Most of the world's
| programmers at that particular time knew only about the 650, and
| were unaware of the already extensive history of computer
| developments in other countries and on other machines. We can
| still see this phenomenon occurring today, as the number of
| programmers continues to grow rapidly._
|
| (BTW I wish someone would write an IBM 650 emulator on which we
| could try out the programs like his "Number Perverter
| Demonstration Card" in the appendix. Some of Knuth's early
| programs are also preserved and it would be wonderful to see them
| running.)
| Someone wrote:
| > I wish someone would write an IBM 650 emulator
|
| I don't know how good they are and there may have been multiple
| IBM 650s, but Google gives me several hits, including:
|
| - https://opensimh.org/simdocs/i650_doc.html
|
| - https://github.com/rsanchovilla/SimH_cpanel (adds front panel
| GUI to the above)
|
| - https://github.com/snick-a-doo/IBM650
|
| - https://code.google.com/archive/p/sim650 (incomplete)
| bableck wrote:
| I remember having to write an IBM 650 emulator using IBM 360
| assembler language in 1978/1979 as an assignment at the
| University of Iowa. We had to account for the drum rotation speed
| and where instructions were placed on the drum for efficiency. At
| that time, they did not yet offer a degree in computer science,
| so my major was mathematics with a minor in computer science. I
| took every available computer science class and had to take a
| "filler class" in COBOL from the college of Business. I went onto
| my first job after graduating in 1970 to write Assembler language
| code for one of the first online transaction processing systems
| in CICS for a hospital patient registration system. It was an
| amazing time and experience.
___________________________________________________________________
(page generated 2025-03-04 23:01 UTC)