“Jake, I don’t understand.”
“What don’t you understand, Sammy?
“All the numbers. In this old programmers’ manual.”
“That’s a program, Jake.”
“How could a bunch of numbers be a program? It doesn’t look anything like Java, or C++, or even that old Fortran code you showed me once.”
“Well, Sammy, look at this number here: ‘10097632’. The ‘10’ means ‘add.’
“Add what?
“Whatever’s in memory location 097632.”
“Add it to what?”
“Well, ‘add’ implies a location. It’s got to, doesn’t it? Because there’s only room in this instruction format for one opcode and one address. Typically, a storage register is the implied location. ‘Register A,’ the first one used to be called. Usually there were only two or three of this type of register.”
“So…”
“So, ‘10097632’ means take the number in memory location 097632, and add it to whatever’s in Register A.”
“OK, what then?”
“Whatever you want to do. Add it to something else; print it; compare it to what’s in some other location –.”
“That’s complicated, Jake.”
“That’s classic, Sammy. That’s the way the old computers were programmed. The most successful single-address machine was the IBM 7090/7094 mainframe family; and the general idea of a single-address instruction format goes back to Von Neumann, or even before that.”
“The good old days?”
“Not very good, not very productive. Easy to make mistakes, tough to find them. But at least you could see what the machine was doing, all the way down and every step of the way.”
<END>
