Hacker News new | ask | show | jobs
by Someone 1876 days ago
> I could enter that program in the system monitor, but I needed a way to run it.

The simple way: in that mini debugger, the ‘G’ command (for ‘Go’) takes an optional address and jumps to it. “G 40F6D8”, for example, continued execution at address 40F6D8.

2 comments

I don't remember the exact details, but I did try the G command, and it didn't work out. The problem was something like the program had nowhere to return to, so just ending with RTS would crash, and ending with a call to ExitToShell() would just restart At Ease and put you right back in the secure environment. I had to trick the computer into executing the program as a subroutine from inside another running program, which is accomplished by using the drag hook.
I thought the _Launch call to start a new program killed the current program, so I didn’t consider how to return to the original program. However, they my have changed that when MultiFinder was introduced.

I guess the proper way would have been to JMP to wherever a bare ‘G’ would have returned, not an RTS (if there is a proper way to do this kind of thing. I’m not sure the system guaranteed what you could do at that time. You might be in a memory manager call, which meant any drawing calls were off limits)

Fun memories.

sm 0 a9f4 g 0