The reason for FGJKQW is simple: Look at the list of single-letter mnemonics for the 16 opcodes (called “orders” in the manual you cite). Sort them alphabetically, and look for the first six letters that are unused. Viola! (Of course, the problematic letter O is skipped, and for some reason, V as well.)
That’s how it was explained to me in 1973 by Mr. Willoughby, a math teacher who also taught Computer Programming in my high school. We didn’t actually have an LGP30, but he had learned on one, and graded our programs handed in written on paper.
Fortunately, this was only for the first half of the class; after we learned this machine language, we graduated to a higher-level language, Neat3, for the NCR (yes, the cash register company) Century 100, one of which the school district did own. Subsequent assignments were handed in on punchcards and actually compiled and run. By the teacher. After school. So you’d get back your compile error the next day, or if you were more fortunate, your output. If your program compiled and ran and gave the right answer the first time, you’d get a grade of 100. Then 97, 94, 91, etc. It was quite the motivation for carefully planning things out ahead of time.
And his reason for starting with machine language? “Well, you can’t expect anyone to understand what’s really going on in higher-level languages if you don’t know what’s happening underneath, right?” Worked for me.
> And his reason for starting with machine language? “Well, you can’t expect anyone to understand what’s really going on in higher-level languages if you don’t know what’s happening underneath, right?” Worked for me.
I teach a middle school class called "Computer Organization and Design". It's basically from gates and truth tables, up to implementing ALU functions, to understanding bits of sequential logic... then some handwavy computer architecture stuff to save time, and finally on to handing out a simplified, reduced-instruction ARMv7 THUMB machine language reference, and students writing their own programs on paper and assembling them.
There's a couple digital logic labs in there, and finally they get their own little computers with a simple monitor program that lets them enter programs, single step, and view registers.
I wasn't sure how reaction would be. Many of the students love it. Middle school students seem to do pretty good at this stuff, too-- their memory of learning arithmetic is recent enough that learning a bunch of new similar rules (combinatorial operations, multiplexing, hexadecimal, instruction encodings, etc) seems simple. And, well, no one told them this stuff is often considered "hard."
And it parallels the early learning my peer group and I experienced in the 80's.
We had Apple 2 type computers to work with and a small group of us were split off to do a deeper dive education. And really it was a sort of student guided education.
Basically, the teacher asked is to declare what we were going to try and do and that was more about making sure we did something besides play games than it was anything else.
So we did that and came to the same conclusion!
And that kicked off a love of the lower level computing that persists to this day. 6502 was not too difficult and what the teacher did was of high value:
They found us the info we needed. Data books, magazines, whatever contained material we could use. And we attacked it together.
One thing I picked up on super early was the powers of two and how it really all boils down to address lines! Was a great insight for a young person and I remember teaching others about hexadecimal, the first 16 powers of two and lots of number related things.
Others had something they grokked and together we learned a ton, each person teaching what they could to the others and doing projects together.
And we are talking stuff like:
Count numbers 0 to 9999999 on screen
Draw a Sprite and move it around
Play music on the speaker
Do maths of various kinds.
These were all slow or impractical using the Applesoft BASIC.
In assembly language, they made sense and were performant.
As machine code, they could be loaded from disk and called by BASIC.
The logic parts took me a while, but the moment AND, OR, XOR started to make sense was the moment I really started to do computing. Those things and the numbers and how they are used to represent stuff was the core of all that was to come.
We all sort of came to that understanding and it was all a beautiful experience. One of the best bits of it was our teacher being curious and as playful as we were! The tech was literally intoxicating.
Bet your experiences are much the same.
For what it is worth, the other core piece was I/O. That moment when one realizes they can POKE a number into a register, and for that matter knowing what a register vs. a RAM memory were, and then seeing an LED or hearing a speaker click were the absolute BEST!
In my view, making sure we have this kind of education happening is super important and ultra high value.
It is no different from the other basics:
Money
Wood
Metal
Computing
Cars and farm machinery
Electronics
Etc...
Many of my class ended High School with good, all around basic competency. I grew up in sometimes profound poverty. For me, it was actually a benefit because I was lucky to be among people who did not judge and gave me opportunity to put all those learned skills to use.
Made a huge difference in my own life.
But the same can be said of just about all the students I know being exposed to what I will just call fundamental type education. Everyone was capable and ready and able to learn just about anything.
Looking back at my class, a fair number of us went to college. Another big slice went into the various trades, and some into business.
The ones who were not involved in the fundemental type education generally struggled more.
Now this is all anecdotal, but I do find common themes when these discussions happen. Generally speaking, it can really help people and rarely hurts them to be exposed to potent basics early in life.
Well done.
What have they done with their little computers? Anything notable? If you can share, please do.
Thank you for your detailed answer! I enjoy hearing about other programs and experiences. I didn't have the benefit of something like this growing up, so I have to guess a fair bit about what is helpful and will only know for sure 15 years from now when my former students might tell me.
> What have they done with their little computers? Anything notable? If you can share, please do.
We only really picked up the computers themselves in the last 2-3 weeks of class; we were much more into theory and logic. I provided some system calls to move sprites around on the top of the screen, so there were some simple games written using that... and one student implemented a game inviting you to guess the computer's number.
> Basically, the teacher asked is to declare what we were going to try and do and that was more about making sure we did something besides play games than it was anything else.
This sounds really awesome. This sounds like what I try to do with after-school robotics.
My (older) brothers had a really awesome educational experience where the local district had set up something they called "Independent Learning Module" and later "Kleine Schule" that was very much self directed.
Education is much more regimented now-- whether in public schools or private schools. All the emphasis on standards, unified curriculum, alignment and articulation of courses to colleges, etc, have certainly improved the depth of education and likely improved the average quality of education. But these changes also make it harder to offer an experience like this.
Perhaps the pendulum is slowly starting to swing the other way, with a lot of discussion of "student agency".
From the after-school program-- it's interesting how students struggle at first with setting the agenda. I have high achieving students who breeze through all kinds of things that I think of as difficult. But then other things, like organizing a set of to-do items onto a calendar to make a coarse schedule, often seem daunting to the students and cause paralysis.
A few days later, we take that stuff and work out what we think needs doing and then we do it.
Of course it never works, or is slow. I remember the first attempt being slow. We computed all the crazy screen addresses. On an Apple this is far more convoluted than one might think.
An iteration or few later we have lookup tables, now understand why those were in the Apple documentation and a ship moving.
Wash, rinse repeat for all sorts of stuff.
If I had it to do over again, I would collect the bits of code, info and package it up with a lesson in each one.
Students work through those and end up with a library of things they can combine to do fun things.
We would get stuck on big picture stuff. That is where the teacher was super high value.
We would lose interest, or wonder about something else. They would remind us what we said we wanted to do and help us do it minimally.
That’s how it was explained to me in 1973 by Mr. Willoughby, a math teacher who also taught Computer Programming in my high school. We didn’t actually have an LGP30, but he had learned on one, and graded our programs handed in written on paper.
Fortunately, this was only for the first half of the class; after we learned this machine language, we graduated to a higher-level language, Neat3, for the NCR (yes, the cash register company) Century 100, one of which the school district did own. Subsequent assignments were handed in on punchcards and actually compiled and run. By the teacher. After school. So you’d get back your compile error the next day, or if you were more fortunate, your output. If your program compiled and ran and gave the right answer the first time, you’d get a grade of 100. Then 97, 94, 91, etc. It was quite the motivation for carefully planning things out ahead of time.
And his reason for starting with machine language? “Well, you can’t expect anyone to understand what’s really going on in higher-level languages if you don’t know what’s happening underneath, right?” Worked for me.