I've always been sure that "machine language" and "machine code" are totally synonymous and mean programming directly in the language the machine understands, whether in binary, hex, or decimal; whether using some kind of hex editor or a BASIC loader with a POKE loop and DATA statements.
These two were opposed to "assembly language" which means programming in text mnemonics that a program called an "assembler" converted into the numbers the machine would understand; whether compiling directly into RAM, producing an object file that needed linking, or producing an executable file.
But I've just watched a good YouTube video on retrocomputing channel 8-Bit Show And Tell called '"Hello World" on Commodore 64 in Assembly Language, Machine Code'.
It's a good video for anyone into retrocomputing who didn't do programming back in the day or only programmed BASIC.
But he demonstrates three ways to program. One he calls "assembly language", one "machine language", and another "machine code".
I'd never heard of anyone differentiating those last two before. Was this a widespread view among programmers? Just among 6502 programmers? Just among C64 programmers? Something that some people used to do in the 8-bit days that nobody does anymore? Maybe it's an accepted difference everybody uses that I alone missed?
Here's the relevant parts of the content creator's notes in the video's chapter index:
I Googled these terms: "TMP" is Turbo Macro Pro, an assembler for the Commodore 64. "Supermon64" is a machine-language monitor for the Commodore 64.
His clearest definition of the contrast between the three terms seems to be in the intro to the "Machine code with BASIC loader" section:
Okay so we've looked at Assembly Language and Turbo Macro Pro we've looked at what we might call machine language in supermon and now well yeah basically the lowest level is what we might call machine code which is just programming and hex bytes
In the part he considers "machine language" but not "machine code" he's using the C64 monitor "Supermon64" in which he enters MOS opcodes and the monitor converts that opcode to hex bytes. I would consider this to be programming in assembly language. But I never had such a tool back in the day.
In a response to my comment on the video, the author clarified thusly:
when authors (or speakers) use both terms with intention, there's definitely a trend to using "machine language" to mean the mnemonic representation and "machine code" to mean the numeric/hex representation. The term "code" comes from the cryptic numbers that represent the machine instructions
Interestingly, "machine language" was favoured in the US while while "machine code" was favoured in the UK. In both cases by a factor of two, and both peaked about 1985.