Re: SixPacks mods for GCIC users

"paoloG" <[email protected]> Sat, 06 Nov 2010 13:31:31 -0000
Newsgroups gmane.comp.emulators.hercules390.vm
Message-ID <[email protected]>



--- In [email protected], "kerravon86" <kerravon86@...> wrote:
>
> --- In [email protected], "paoloG" <crc@> wrote:
> >
> >  I used it to do some mods to CMS of VM/370 (module 
> > DMSINA) to correct a malfunction (alignment error) 
> > in interpreting abbreviated CMS commands (only on 
> > ARM processors - so not of great interest for many people ;-)
> 
> Don't be so sure. I don't really use either VM
> or ARM, but I'm always interested in bug fixes.
> 
> In fact, I'm especially interested in a bug fix
> that would only show up on a particular processor.
> And even more interested if it's IBM's code.
> 
> Can you provide the fix and an explanation please?
> 
> Thanks.  Paul.
>

Of course I can.

CMS accepts abbreviated commands: for example you
can type 'l', 'li', 'lis', 'list', and all of them are
equivalent to 'listfile'.

In VM/370 running on an ARM based Hercules, I was 
compelled to use the full length commands; most of
abbreviated commands didn't work, giving strange messages.

In CMS there is a module, DMSINA (part of CMS nucleus), 
that reads the abbreviated command and returns the full command,
looking at an internal synonym table (user can provide a custom
synonym table too).

The synonym table is made of 17 bytes entries (two 8 bytes
fields with complete and synonym command and a 1 byte field 
with the length of compare).

DMSINA returns the 8 bytes of the complete command (split in 
two 4 bytes words) in registers 0 and 1; it does a LM 0,1,0(3)
addressing the synonym table.

It's clear that, being the synonym table entries 17 bytes long,
3 times out of 4 the command name field is not aligned to a fullword.

In this case the LM 0,1,0(3) gives erratic results.

I had the idea to split the LM instruction into two L intructions,
and it worked.

Original instruction:

LM     R0,R1,0(R3)    SUBSTITUTE 'MATCH' FOR     @V305032 00223100

New instructions:

L    R0,0(R3)    SUBSTITUTE 'MATCH' FOR           @V305032 00223100
L    R1,4(R3)    SUBSTITUTE 'MATCH' FOR           @V305032 00223105

Special thanks to Rocky: I am fully unable to use CMS original line
editor:-), so I used is amazing GCIC editor.

BFN

Paul