[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