> On Sep 25, 2015, at 2:24 PM, Mark Pizzolato - Info Comm <[email protected]> 
> wrote:
> 
> On Friday, September 25, 2015 at 10:59 AM, Paul Koning wrote:
>> In doing a new simulator, I ran into an unexpected quirk of command parsing,
>> in particular handling of VM-specific commands.
>> 
>> The way it works is that a user command matches a command table entry if
>> the user string is a prefix of the command in the table.  And as soon as a
>> match is found, the search stops and that entry is used.
>> 
>> In addition, if a VM command table is supplied, that table is searched first,
>> and only if no match is found will the standard command table be searched.
>> 
>> These rules can produce some annoying surprises.  For example, suppose I
>> have a VM specific command table that contains just one entry, for the
>> command "SUFFIX".  The result is that the user command "S" now executes
>> "SUFFIX" rather than the expected "STEP".
> 
> 
> The most common use of a VM specific command table is to replace some 
> standard/general purpose SCP command.  This is done by each the VAX 
> simulators to replace the BOOT command.

Ok, that makes sense (and in fact I need that elsewhere). 

> 
> Three other simulators in the github repo provide a VM specific command table:
> IBM1130, PDQ-3 and SAGE.
> 
> The extended commands in the SAGE simulator ran into the exact same problem 
> you did since this system also wanted to add a command which started with S.  
> His ingenious solution to the problem was to redefine the STEP command in the 
> VM specific table dispatching to the standard STEP command handler (copying 
> the entry from the SCP defined command table). 
> 
>> A lot of programs that supply this sort of user interface use an "unambiguous
>> match" rule: a command is accepted if the supplied string is a prefix of 
>> exactly
>> one command table entry.  Then to allow specific shorthands like "s" there is
>> an additional rule that an exact match is accepted even if it is a prefix of 
>> some
>> other command.  And in such systems, you'd find an explicit table entry for
>> "s" as an alias of "step".
>> 
>> I'm wondering if a similar change for SIMH could be considered.  As it 
>> stands,
>> when I wanted to add a VM-specific command, the first choice for the
>> command name (START) and the second (NORMAL_START) conflict with
>> popular single-character command names.  I ended up with a command
>> name RESTART, which is reasonably obvious but doesn't match what the
>> corresponding operation is called in the real hardware.  The change I would
>> suggest is that a command lookup would scan both tables, and accept the
>> user entry if it is either an exact match, or a prefix match of exactly one 
>> entry
>> (across both tables).
> 
> This would get very messy since, for example, it would break the very common 
> usage of "S" to invoke the STEP command.  STEP is merely one of many existing 
> commands which start with S (SET, SHOW, SAVE, SHIFT, SEND, SCREENSHOT).  
> Messy since we'd have to allow the normal command parsing to provide the 
> original abbreviation paradigm and then complain about the conflicts with the 
> VM supplied cases AND also provide logic to explicitly allow replacement of 
> SCP provided commands which a VM really intends to replace.

My suggestion would preserve "S" and other single character abbreviations by 
adding an explicit "S" command (as an alias for "STEP").

> 
> I suggest you follow the example provided by the SAGE simulator.

Ok, yes, that sounds like a simpler solution.  Thanks.

        paul

_______________________________________________
Simh mailing list
[email protected]
http://mailman.trailing-edge.com/mailman/listinfo/simh

Reply via email to