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