bgribble@jarthur.claremont.edu (Bill Gribble) (11/27/90)
Let me disclaim by saying that I already know that the answer to this
question is a one-liner on the order of 'set file type to binary, you
fool.' (that's *not* the answer, by the way - just something equally
stupid.)
After compiling a simple program in asap - well, here it is:
----------------------------------------
push_r0_short=#06537
data.a #02d9d ; PRG
data.a #02dcc ; mcode segment 1
pt1beg: data.a pt1end-pt1beg ; size of object
call.3 push_short1
move.a @d0,a
add.a 5,d0
jump.a @a
pt1end:
data.a #02dcc
pt2beg: data.a pt2end-pt2beg
move.a @d0,a
add.a 5,d0
jump.a @a
push_short1:
clr.w a
inc.a a
move.w a,r0
call.a push_r0_short
ret
pt2end:
data.a #0312b ; END
------------------------------------------------------
I'm just trying to test whether the intuitive assumption that code can be
called between objects is true - of course it is, but that's not the point.
When I assemble and download, I get an object that looks like Code Code on
the stack - just what you'd expect. But when I hit the softkey
labeled 'TEST2', which is where it's stored, I get 'TEST2' on level 2 and
Code Code on level 1 rather than having the code evaluated. Hitting
the EVAL key gives 'TEST2' on level 4, Code Code on 3, EVAL (no delimiters)
on 2, and <1h>, the intended result, on level 1. What gives?
I think it's my exit code failing to do the right thing, but it follows
logic, examples, and past experience pretty well, so I don't know.
Any help would be appreciated.
*****************************************************************************
** Bill Gribble Harvey Mudd College, Claremont, CA **
** bgribble@jarthur.claremont.edu Never heard of it? You're stupid. **
*****************************************************************************bson@rice-chex.ai.mit.edu (Jan Brittenson) (11/28/90)
In article <9811@jarthur.Claremont.EDU> bgribble@jarthur.claremont.edu (Bill Gribble) writes: > push_r0_short=#06537 >push_short1: > clr.w a > inc.a a > move.w a,r0 > call.a push_r0_short > ret This isn't going to do what you're expecting. The routine at #6537 expects you to have previously saved the registers with a call to #679b. Change it to: push_r0_short=#6537 save_regs=#679b push_short1: clr.w a inc.a a move.w a,r0 call.a save_regs call.a push_r0_short ret