Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)

2017-05-12 Thread Paul Gilmartin
On 2017-05-12, at 16:53, Keven Hall wrote:

> Regarding code like:
>>BZNOERROR  (If RC==0.)
>>DCX'00',C'You shouldn'ta done that.'
> 
> I'd suggest documenting the error in source code rather than the instruction 
> cache (or using a 1-byte numeric error code.
>  
Good point.  So bunch them under a LOCTR far away and unlikely to
contend with cache.  1-byte error codes and reporting errors by
program check are a relic of antiquated storage constraints.  Even
decades ago, I remember a system from another vendor which had no
error codes.  Explanations appeared in the diagnostic manual
arranged by message texts in alphabetical order.  I suppose that
paid too little attention to national languages.  Nowadays for
systems lacking message codes, GIYF.

-- gil


Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)

2017-05-12 Thread Keven Hall
Regarding code like:
> BZNOERROR  (If RC==0.)
> DCX'00',C'You shouldn'ta done that.'

I'd suggest documenting the error in source code rather than the instruction 
cache (or using a 1-byte numeric error code.

Possibly I'm being pedantic.  For sure I'm dragging this thread ever further 
from its original subject.

Keven

> On May 12, 2017, at 11:57, Paul Gilmartin 
> <0014e0e4a59b-dmarc-requ...@listserv.uga.edu> wrote:
> 
>> On 2017-05-12, at 09:56, somitcw wrote:
>> 
>> My favourite was to branch to an odd address.
>> 
>> S0C1 and S0C7 ABENDs are common, but any S0C6 abend was mine.
>> If an operator called at 2:00AM, I would know who caused 3 pair of socks.
>> 
> Unfortunately, IIRC the exception occurs after the branch is taken
> so the PSW provides no ready indication of the point of error.
> 
>> Coding so that the assembler didn't flag it was needed but easy.
>> Something like:
>> 
>> BNE ERRLABEL-CSECT-1(BASEREG)
>> 
> I suppose that could be doctored so the PSW points near
> either the point at which the error was detected or to
> an error message.
> 
> I think of:
> BZNOERROR  (If RC==0.)
> DCX'00',C'You shouldn'ta done that.'
> NOERROR  DS0X
> 
> -- gil


Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)

2017-05-12 Thread Webster, Chris
The BEA tells where you came from.  It means (going back to an earlier comment) 
you don't need to branch around x'00'.  You can freely branch to it.  It is so 
useful I wish it was part of the symptom dump.

...chris.

-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On 
Behalf Of Paul Gilmartin
Sent: May-12-17 9:57 AM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Quick error termination of an assembler routine (Was: Performance 
of Decimal Floating Point Instruction)

On 2017-05-12, at 09:56, somitcw wrote:

> My favourite was to branch to an odd address.
> 
> S0C1 and S0C7 ABENDs are common, but any S0C6 abend was mine.
> If an operator called at 2:00AM, I would know who caused 3 pair of socks.
>  
Unfortunately, IIRC the exception occurs after the branch is taken so the PSW 
provides no ready indication of the point of error.

> Coding so that the assembler didn't flag it was needed but easy.
> Something like:
> 
>  BNE ERRLABEL-CSECT-1(BASEREG)
>  
I suppose that could be doctored so the PSW points near either the point at 
which the error was detected or to an error message.

I think of:
 BZNOERROR  (If RC==0.)
 DCX'00',C'You shouldn'ta done that.'
NOERROR  DS0X

-- gil


Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)

2017-05-12 Thread Paul Gilmartin
On 2017-05-12, at 09:56, somitcw wrote:

> My favourite was to branch to an odd address.
> 
> S0C1 and S0C7 ABENDs are common, but any S0C6 abend was mine.
> If an operator called at 2:00AM, I would know who caused 3 pair of socks.
>  
Unfortunately, IIRC the exception occurs after the branch is taken
so the PSW provides no ready indication of the point of error.

> Coding so that the assembler didn't flag it was needed but easy.
> Something like:
> 
>  BNE ERRLABEL-CSECT-1(BASEREG)
>  
I suppose that could be doctored so the PSW points near
either the point at which the error was detected or to
an error message.

I think of:
 BZNOERROR  (If RC==0.)
 DCX'00',C'You shouldn'ta done that.'
NOERROR  DS0X

-- gil


Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)

2017-05-12 Thread somitcw
My favourite was to branch to an odd address.

S0C1 and S0C7 ABENDs are common, but any S0C6 abend was mine.
If an operator called at 2:00AM, I would know who caused 3 pair of socks.

Coding so that the assembler didn't flag it was needed but easy.
Something like:

  BNE ERRLABEL-CSECT-1(BASEREG)


Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)

2017-05-12 Thread Bill Hitefield
An advantage of "DC X'00xx'" is it shows up in the "data at the PSW" in the 
abend summary.

Use a combination of both: 
DC X'00xx'
DC C'This is why the moon is blue.'

Bill Hitefield
Dino-Software Corporation
800.480.DINO
423.878.5660
www.dino-software.com


-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On 
Behalf Of John McKown
Sent: Thursday, May 11, 2017 2:43 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Quick error termination of an assembler routine (Was: Performance 
of Decimal Floating Point Instruction)

On Thu, May 11, 2017 at 1:34 PM, Gibney, Dave  wrote:

> In days of limited storage, sure. But, today, why not DC X''
> DC C'I blew up here because the moon is blue'
>
>
​Looks nice. I'd probably do
   DC H'0',C'FIXME: YOU DID SOMETHING WEIRD AND I''M CONFUSED.'​


-- 
Advertising is a valuable economic factor because it is the cheapest way of
selling goods, particularly if the goods are worthless. -- Sinclair Lewis


Maranatha! <><
John McKown


Re: Quick error termination of an assembler routine (Was: Performance of Decimal Floating Point Instruction)

2017-05-12 Thread MELVYN MALTZ
>>> I've never seen one, that I can remember, occur when executing data 

Way back when, I discovered this code in an IGZ (COBOL module)
BALR 14,15
DC CL6'PATCH'
etc.

According to IBM a return wasn't possible (it did), the DC is a nasty XC
This was done inside CICS and did sufficent damage to cause the CICS region to 
crash

I raised an APAR

Melvyn Maltz.

- Original Message - 
From: "Steve Thompson" 
To: 
Sent: Friday, May 12, 2017 3:07 AM
Subject: Re: Quick error termination of an assembler routine (Was: Performance 
of Decimal Floating Point Instruction)


> Has anyone ever seen S0C3 (PIC 3) as an accident?
> 
> I use EX 0,* to trigger a failure. I've never seen one, that I 
> can remember, occur when executing data (such as happens when one 
> takes a wild branch).
> 
> Just thought I'd ask while you all are kind of on the subject.
> 
> Regards,
> Steve.T


Re: Performance of Decimal Floating Point Instruction

2017-05-12 Thread Pieter Wiid
I wrote my own trace after seeing TRACE390, and not liking the way it did 
things. My code is re-entrant, up to date with most new instructions, caters 
for 64-bit, etc.
Was originally published in the MVS Update in the 90's, but much modified since 
then.

Obviously, with the release of the HLASM Toolkit's IDF, the something like 
TRACE390 is not really as helpful as it was 20 years ago.

-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On 
Behalf Of Farley, Peter x23353
Sent: 11 May 2017 21:32
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Performance of Decimal Floating Point Instruction

Excellent idea!  Could be a superb mechanism for setting up instruction-tracing 
or debugging software (see program TRACE390 in CBT file 391, for example) 
without the overhead of ESTAE or the (currently unsupported under z/OS) TRAP 
exits.

But perhaps not directly from any general register (think extreme EREG that 
reloads ALL registers from the last stack entry, including the one you used to 
execute the EREG, or LMG 0,15,...).  Perhaps a dedicated (set of?) "instruction 
register(s)"?  That would be cool.  Would need at least RR type instructions to 
load them from GR's.

Just dreaming . . .

Peter

-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On 
Behalf Of John McKown
Sent: Thursday, May 11, 2017 2:39 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Performance of Decimal Floating Point Instruction

On Thu, May 11, 2017 at 1:28 PM, Charles Mills  wrote:

> Absent EX how do you do a variable length PACK or MVO or ...
>

​I said that I didn't _like_ EX. Not that I didn't _use_ it. I'd prefer to 
"synthesize" an instruction into a 64 bit GPR​ and then "EX" the contents of 
the GPR. That would allow me to do more than just modify the value in second 
byte of the instruction. I understand why EX exists (just as you have pointed 
out) and why it does what it does. But a more generalized facility would be, to 
me, "nicer". But, in reality (which stinks in some ways), I understand that IBM 
won't create a new instruction "because John thinks it would be nice". [grin]


> Surely not with an MVI into the instruction stream ...
>
> Charles
>
>
--


This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus


Re: Performance of Decimal Floating Point Instruction

2017-05-12 Thread Pieter Wiid
Agreed

-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On 
Behalf Of Farley, Peter x23353
Sent: 11 May 2017 20:23
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Performance of Decimal Floating Point Instruction

PMFJI, but really, even for non-LE subroutines how hard is it to save your 
registers in your own R13 area, write an inline WTO with message indicating 
where and why you want to blow up and an ABEND macro right after?  Yes, the WTO 
is non-reentrant.  Making it reentrant is not that hard.  IMHO an ABEND macro 
with a unique abend code is far preferable to any of the discussed techniques 
except during actual development unit testing (before any client/user ever sees 
it), but maybe that's just me.

Peter

-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On 
Behalf Of John McKown
Sent: Thursday, May 11, 2017 1:52 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Performance of Decimal Floating Point Instruction

On Thu, May 11, 2017 at 12:32 PM, Charles Mills  wrote:

> And one of these days the architecture starts allowing EX of an EX and
> it fails the bite test.
>

​


> Charles
>

--


This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus