[Simh] Single stepping.
Mark Pizzolato
Mark at infocomm.com
Sun Jan 29 20:08:28 EST 2017
Hi Rich,
On Sunday, January 29, 2017 at 4:43 PM, Richard Cornwell wrote:
> > On Sunday, January 29, 2017 at 12:50 PM, Richard Cornwell wrote:
> > > How is single stepping implemented from the point of view of the
> > > simulator?
> >
> > Well, as long as you're managing decrements to sim_interval to reflect
> > instructions executed, and you call sim_process_event when the
> > sim_interval value is <= 0 and return from sim_instr() when
> > sim_process_event () returns anything else but SCPE_OK, then it just
> > works.
> >
> > Under the covers SCP has a fake unit which it schedules for the
> > specified STEP count (default of 1) when you enter a STEP command at
> > the sim> prompt. That unit's service routine then gets dispatched to
> > when the step count expires and it does nothing but return SCPE_STEP
> > which should cause your above mentioned sim_process_event loop to
> > return from sim_instr().
> >
> > Make sense?
>
> That is what I thought. Now sim_interval for me counts memory cycles,
> since instructions are variable length. However I have noticed that
> "step" by itself does not always execute one instruction. I wonder if
> maybe we should look at how single stepping is implemented and
> perhaps pass an argument to sim_instr() to indicate that a number of
> steps is desired. One of the issues is that on machines like the KA10
> and I7090 interrupts execute an instruction out of sequence. Not sure
> if that should be counted as a step or not.
Well, if you want that behavior you can decrement sim_interval and \call
sim_process_event and exit sim_inst() wherever you do that (being careful
that everything is restartable from the point you exit). Or reconsider the
concept of having sim_interval track memory cycles instead of instructions....
What is the real value of keeping track of memory cycles?
- Mark
More information about the Simh
mailing list