On Fri, 25 Apr 1997 08:15:27 -0600 Ed Todd writes: |>I use the push down nature of the CALL stack quite a bit to optimize |>code |>space. | It sounds like you are relying on stack wrap-around, right? It |seems dangerous to me to leave stuff on the stack since I don't really |keep track of who's calling what from where. If there's some extra |garbage on the stack and I do a return... watch out! I don't think he's relying on the stack wraparound behavior. I think what he's doing is figuring that if a condition arises where he wants to forget whatever he was doing [literally] and go do something else, that it's eas- iest to simply never return from the earlier calls. For example, suppose that he's writing a simple input parser and an escape character is supposed to always exit whatever the system is doing and return to the main command loop. The only way to do so while "returning" properly is to have every single place his character input routine is called check whether it should exit. This is certainly not impossible to code, though it is rather a pain. In such situations if the command loop is run at the top level (i.e. *IT* is never going to have to do a "return" itself) it's convenient to just jump back to the command loop from the character-input routine. Some procedure calls will be left on the stack, but since nothing is going to try to "return" to them that won't be a problem. Attachment converted: wonderland:WINMAIL.DAT (????/----) (0000E91A)