Not that I think they had a reason to bother with this, so I don't actually think this is the case in this case, but, just for the academic discussion:

Why couldn't a routine simply "jump to entered_val" or "copy 16 bytes starting at entered_val"?

A memory address is just a number, and a user can supply numbers all kinds of ways, with the ascii value of keystrokes being the simplest, and a program can use those supplied numbers, without ever having to have an included reference copy of those numbers already in the executable.

The code doesn't have to say "If they entered did X then jump to 0x0419" anywhere in it.

It could say "If they try to save a file named !####!.DO then read 12 bytes starting at 0x####, and if the checksum of the string is 81, then display the string." (obviously not this literally for several reasons) The code that uses the address, either as a jump target or a copy target, doesn't have to know the address ahead of time.

I guess if you take the idea far enough then you might as well include the fact that if nothing else, the user can write BASIC commands to peek the addresses and display them. The executable didn't include any reference to the address, the user just had to know what keys to press, and "what keys to press" was...a BASIC program. ;)

I guess that's technically an easter egg in the way like asking what is a sandwich. Like is a hamburger a sandwich? a hot dog? a wrap? Somewhere along the way you stop saying yes, though, probably the loose definition that let you include hamburger or hot dog still technically applies to a taco, and yet, no. So does writing and executing a program count as just a really fancy Konami code?

--
bkw



On 1/14/21 2:27 PM, Scott McDonnell wrote:
There would still need to be a pointer to pass to the display routine since it needs a char buffer to know what to display.

I would think that there would have be at least one reference to this address even just the first byte if they were going to display or even send this text over the serial bus.

Something would have to at least copy the bytes somewhere else unless there was some very clever indexing or adding to an address that obscures it. But most (decent) disassemblers would at least pick up a hint of that and try to label the location. In that above case you would probably see a label at every byte of the string.

Never say never! Assembly programmers are very clever.

-------- Original message --------
From: "Brian K. White" <[email protected]>
Date: 1/14/21 1:20 PM (GMT-05:00)
To: [email protected]
Subject: Re: [M100] Multiplan Easter Egg

On 1/14/21 12:46 PM, Scott McDonnell wrote:
 > Did the disassembler label and reference this location somewhere in the
 > code?
 >
 > If the code did anything with this string, rhere would be load
 > instructions somewhere pointing to this string.
 >
 > The disassemvler should have labeled the location as something like
 > M1969 if it is referenced or called from somewhere else.

It couldn't dynamically produce the address at run-time from the keystrokes?

--
bkw


--
bkw

Reply via email to