Re: Branch-and-Link nomenclature question

2022-02-10 Thread Melvyn Maltz

Hi Guys,

Specifically to Dave Cole's query...

>>>(FWIW, I find both books to be abysmal documents!)
>>>(There. That ought to create a firestorm!)

A few years ago and on this forum  I dared to say that the PoO was 
totally inadequate for the 21st century...an opinion I still hold


It did get a 'firestorm' reaction, about evenly distributed between, 
"it's a bible and cannot be modified" to those agreeing with me


Among my suggestions, only applying to instruction descriptions is that...
These should be in a separate Manual, one 'page' per instruction, 
hyperlinks to similar instructions, maybe a tracker saying 'people who 
looked at AHI also looked at LHI :-)'


Perhaps there's someone out there who has the time

Melvyn Maltz.

On 10/02/2022 07:40 pm, David Cole wrote:

WRT:
"A gentle reminder on terminology: The term "JUMP" appears neither in 
the PoO nor in the z/Architecture Reference Summary (SA22-7832). What 
you refer to as "JAS (jump and save)" is simply reflecting the 
extended mnemonic for BRANCH RELATIVE AND SAVE (BRAS)."




The PoOps has some inconsistencies... One that I find rather 
irritating is the presences of extended mnemonics for a large number 
of newer instructions, but the omission of same for all of the BC, 
BRC, BRAS and related instructions.


Yes, I am quite aware that I included redundant entries in my list. I 
didn't care because it was beside the point.


Speaking of fake mnemonics... What is the difference between "extended 
mnemonics" (such as CGIJNE) and "alternative mnemonics" (such as JAS)? 
Is it that one is documented only in the PoOp and the other only in 
HLASM Ref?


(FWIW, I find both books to be abysmal documents!)
(There. That ought to create a firestorm!)


Dave






At 2/10/2022 01:27 PM, Dan Greiner wrote:
Having learned this stuff in the 1970s — before the linkage stack 
showed up in the late 1980s — I was accustomed to hearing them called 
simply "linkage instructions." For the common usage of application 
programmers who need a simple instruction to branch to Oz while 
leaving a footprint of how to get back to Kansas, that's probably 
sufficient.

.

The z/Architecture Principles of Operation (SA22-7832-10) refers to 
such instruction in a section labelled "Subroutine Linkage without 
the Linkage Stack" (p. 5-16 onward), with the simple stuff like 
BAL[R], BAS[R] and friends called "Simple Branch Instructions". This 
text shows the awkwardness that crept into the architecture when 
various commonly-used terms get redeployed for other purposes. [A 
brief aside: During the design of the S/360, the designers 
deliberately eschewed a stack architecture in favor of the chained 
save-area approach. With the advent of ESA, they changed their minds 
(sort of) and implemented a linkage stack.]


A gentle reminder on terminology: The term "JUMP" appears neither in 
the PoO nor in the z/Architecture Reference Summary (SA22-7832). What 
you refer to as "JAS (jump and save)" is simply reflecting the 
extended mnemonic for BRANCH RELATIVE AND SAVE (BRAS).


Re: Vector Ops

2021-12-14 Thread Melvyn Maltz

Hi Ray,

No need for a z15, z390 supports them :-)

Melvyn.

On 14/12/2021 01:06 pm, Ray Mansell wrote:
Excellent stuff, as always, Dan. Now, if only I could find a z15 on 
which to play :-)


Ray

On 12/14/2021 12:03 AM, Dan Greiner wrote:
Back in late September, I posted a series of PowerPoint slides 
describing the IBM z/Architecture vector facilities on my Google 
Drive: 
https://drive.google.com/file/d/13OhBkhgbU7N6a20nVo5uEAnR-s3-Pyz8/view?usp=sharing


The most common response I've received is something to the effect of 
"good stuff ... now what do I do with it?"


Last Christmas, I received a really annoying puzzle as a gift ... 
annoying because solving it involved a lot of repetitive stress on my 
already inflamed carpals. A simple C program did the trick, but I 
wanted to see if I could use the vector ops to do better, so I 
started researching them. This led to a months-long documentation 
project resulting in the slides mentioned above.


I've put together another short presentation — only 11 slides — that 
describe the puzzle and one solution using vector instructions. There 
are numerous features of the vector architecture, but this pitch 
illustrates what I think are a few key points: SIMD, branch 
avoidance, and a really neat instruction (VPERM). Unlike my previous 
stuff, there is no animation in these slides; the meat of it is in 
the presenter notes, so make sure you view the notes page.
https://docs.google.com/presentation/d/1gD089nRo8Lch-rkg7T7pbwclBAvsp0bf/edit?usp=sharing&ouid=104012833061983447284&rtpof=true&sd=true 



Enjoy!


Re: Base-less macros

2021-11-08 Thread Melvyn Maltz

Hi there,

I am sure Jonathan will confirm...but yes, even byte literals will be on 
an even boundary, they are sorted


If you code it and use LARL, you'll get an error if not on an even boundary

=CL5 may not align, a frequent source of 'it worked then but not now' 
syndrome


Melvyn Maltz.

On 08/11/2021 09:17 pm, Paul Gilmartin wrote:

On Nov 8, 2021, at 13:57:10, Melvyn Maltz wrote:

 ...
LARL R3,=C'ABCDE-'

Yes, it's a 5-byte literal extended to 6 to keep the LARL happy
  

Does giving a character constant even length guarantee even
alignment?  I'm thinking of such as:

   DC. 0H'0'
EVEN  DC  C'?'
ODD   DC  C'ABCDE-'

Are the rules special for literals?  What if you want a
speciic length?:

 LARL R3,=CL5'ABCDE-'

My head hurts,
gil


Re: Base-less macros

2021-11-08 Thread Melvyn Maltz

Hi there,

I hate the term base-less it means 'without foundation' !

I'm not sure what the fuss is about, I've been using base-free code with 
literals for years.


eg.
LARL R3,=C'ABCDE-'
MVC THERE(5),0(R3)

Yes, it's a 5-byte literal extended to 6 to keep the LARL happy

LARL has a range of +/- 2G which should keep most coders happy, so it 
doesn't matter where the LTORG is


Melvyn Maltz.

On 08/11/2021 12:25 am, Tony Thigpen wrote:
I finally am to the point where I no longer need to worry about 
specific customers having hardware that does not support relative 
instructions, so I am updating some macros I provide to be baseless.


What is the 'preferred' approach to macro generated constants? In the 
past, I have used both inline constants that I branch around, and 
ltorg literals (=c'x').


In the past, I have been bitten by using ltorg literals and the client 
did not put a LTORG after my macro causing a 'no active base register' 
issue. So, I am thinking inline with a BRAS is better.


Maybe there is another approach that I missed?

Suggestions?

Tony Thigpen


Re: A problem with OPEN and CLOSE macros

2021-06-13 Thread MELVYN MALTZ

Hi Guys,

Thanks for the responses, here's mine...

To Charles...
You made my point exactly, as you didn't at first realise what the code was 
doing, but you did 10 minutes later :-)


Mark Nelson is not your guy for this, unless you think there is an 
integrity issue
I believe there is, it certainly got Mark's attention, also a UK RACF expert 
that I know



Your gun, your bullet, your foot
What I was trying to demonstrate is how a hacker could subvert code without 
it being obvious what was happening. My code wasn't subtle, if I had wanted 
to hide my evil-doing...I could do


If I rewrote the code to overlay an I/O buffer then your company's data 
integrity is at risk !

Subverting z/OS or RACF is a little more difficult

To Seymour...
Like Charles, you haven't realised what the code does...exactly my point


Further, your code would fail

I sent Mark the full program,  I tested it and it works


R5 doesn't contain a DCB address.
I know...OPEN wouldn't get that far because the end-of-list bit stays with 
DCB 1

I'm using R5 to do something nasty to storage beyond the MF=L

Melvyn Maltz.

- Original Message - 
From: "Seymour J Metz" 

To: 
Sent: Sunday, June 13, 2021 3:29 PM
Subject: Re: A problem with OPEN and CLOSE macros


Using an operand with the wrong length is a basic error, not limited to OPEN 
or even to macros. Further, your code would fail even if you corrected 
HERE24O to  OPEN  (DCB1,INPUT,*,),MF=L; R5 doesn't contain a DCB address.



--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Assembler List [ASSEMBLER-LIST@LISTSERV.UGA.EDU] on 
behalf of MELVYN MALTZ [072265160664-dmarc-requ...@listserv.uga.edu]

Sent: Friday, June 11, 2021 4:36 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: A problem with OPEN and CLOSE macros

1) An OPEN/CLOSE with MF=L,MODE=24 can be overlayed with an
   MF=E,MODE=31 (and vice-versa). This results in destruction of the list,
   abends would occur

2) An OPEN/CLOSE with MF=L with (say) 2 entries can be overlayed with an
   MF=E with 3 entries. The end-of-list bit isn't touched, but a storage 
violation

   occurs

It is true that the "DFSMS Macro Instructions for Data Sets" does warn 
against mixed mode and MF=L/E length differences with the usual 
'unpredictable results may occur'


The first problem doesn't worry me, but the second one does, look at this 
cut-down code...no apologies for it being contrived...if I wanted to hide 
it, I could do...

LA  2,8-1
EX R2,EXMVC
LR5,EXMVC
OILF  R5,X'00FF'
OPEN  (DCB2,OUTPUT,(R5)),MF=(E,HERE24O),MODE=24
EX R2,EXMVC
...
HEREDC8C'A'
THERE  DC8C'B'
*
DCB1 DCB   ...
DCB2 DCB   ...
*
HERE24O  OPEN  (DCB1,INPUT),MF=L
EXMVC  MVC   THERE(0),HERE

Using OPEN/CLOSE to subvert code sends this into another dimension

I've been exchanging Emails with Mark Nelson (RACF Development) about this 
and have offered a solution, I can quite understand why IBM aren't keen on 
it


1) The OPEN/CLOSE list structure must change
The 'new' structure needs an 8-byte header
eg.
DC C'OPCL'  eyecatcher
DC X'mode bit'
DC XL3'no. of entries'

2) The OPEN/CLOSE SVC processors must be able to detect the 'old' and
  'new' formats in order not to disturb existing code

3) OPEN/CLOSE MF=E will have extra coding for the 'new' format only, to
   detect both mode and storage violation errors...setting an error code

Whether this is worth doing is largely up to the user community, I would be 
worried if an innocent looking macro could subvert program code


Your thoughts ?

Melvyn Maltz. 


A problem with OPEN and CLOSE macros

2021-06-11 Thread MELVYN MALTZ
1) An OPEN/CLOSE with MF=L,MODE=24 can be overlayed with an
MF=E,MODE=31 (and vice-versa). This results in destruction of the list, 
abends would occur

2) An OPEN/CLOSE with MF=L with (say) 2 entries can be overlayed with an 
MF=E with 3 entries. The end-of-list bit isn't touched, but a storage 
violation 
occurs

It is true that the "DFSMS Macro Instructions for Data Sets" does warn against 
mixed mode and MF=L/E length differences with the usual 'unpredictable results 
may occur'

The first problem doesn't worry me, but the second one does, look at this 
cut-down code...no apologies for it being contrived...if I wanted to hide it, I 
could do...
 LA  2,8-1
 EX R2,EXMVC
 LR5,EXMVC
 OILF  R5,X'00FF'
 OPEN  (DCB2,OUTPUT,(R5)),MF=(E,HERE24O),MODE=24
 EX R2,EXMVC
 ...
HEREDC8C'A'
THERE  DC8C'B'
*
DCB1 DCB   ...
DCB2 DCB   ...
*
HERE24O  OPEN  (DCB1,INPUT),MF=L
EXMVC  MVC   THERE(0),HERE

Using OPEN/CLOSE to subvert code sends this into another dimension

I've been exchanging Emails with Mark Nelson (RACF Development) about this and 
have offered a solution, I can quite understand why IBM aren't keen on it

1) The OPEN/CLOSE list structure must change
The 'new' structure needs an 8-byte header
eg.
DC C'OPCL'  eyecatcher
DC X'mode bit'
DC XL3'no. of entries'

2) The OPEN/CLOSE SVC processors must be able to detect the 'old' and
   'new' formats in order not to disturb existing code

3) OPEN/CLOSE MF=E will have extra coding for the 'new' format only, to
detect both mode and storage violation errors...setting an error code

Whether this is worth doing is largely up to the user community, I would be 
worried if an innocent looking macro could subvert program code

Your thoughts ?

Melvyn Maltz.


Relocatable immediate values

2020-11-23 Thread Melvyn Maltz
I have to thank my esteemed colleague Don Higgins for enabling this post

IILF R3,MYLABEL
...
MYLABEL DC 'HELLO'

This is interesting on a number of levels, yes, the immediate value is 
relocatable
I guess this is a 'good thing' for 32-bit immediate instructions...hmmm

My concern is though, are these instructions modal ?
I haven't tested all variants, but in 31-bit mode is the top bit on  ?
If so, LGFI would propagate it...if so it doesn't seem like a good thing

Not a lot about this in the PoP...nada  


Re: Is TESTCB a bad boy ?

2020-10-28 Thread MELVYN MALTZ

Apologies, I misremembered

Found a Functional Characteristics for the 360/50 and it's 0.5uS

Melvyn Maltz.

- Original Message - 
From: "Seymour J Metz" 

To: 
Sent: Wednesday, October 28, 2020 6:51 PM
Subject: Re: Is TESTCB a bad boy ?


WTF? Yes, on some models index was more expensive than base, but I don't 
know of any model where it was nearly as large as 50 microseconds.




--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Assembler List [ASSEMBLER-LIST@LISTSERV.UGA.EDU] on 
behalf of MELVYN MALTZ [072265160664-dmarc-requ...@listserv.uga.edu]

Sent: Tuesday, October 27, 2020 5:24 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is TESTCB a bad boy ?

To Charles...


EX 0, on a dynamically constructed TM...the hard way doing whatever...
had to be done

I don't want to get off topic, but TESTCB is the worst IBM macro I have ever
seen
Syntax checking...none, documentation...awful and misdescribed in the VSAM
Macro manual...I won't go on


And using an index register instead of a base register is frowned upon
(440D0014)

I doubt if it matters now, but you are right, back in 360/370 days the use
of index carried a 50uS overhead
I well remember obsessively recoding LA R5,1(R5) as LA R5,1(,R5) back in the
days

Melvyn Maltz.= 


Re: Is TESTCB a bad boy ?

2020-10-27 Thread MELVYN MALTZ

To Charles...

EX 0, on a dynamically constructed TM...the hard way doing whatever... 
had to be done
I don't want to get off topic, but TESTCB is the worst IBM macro I have ever 
seen
Syntax checking...none, documentation...awful and misdescribed in the VSAM 
Macro manual...I won't go on


And using an index register instead of a base register is frowned upon 
(440D0014)
I doubt if it matters now, but you are right, back in 360/370 days the use 
of index carried a 50uS overhead
I well remember obsessively recoding LA R5,1(R5) as LA R5,1(,R5) back in the 
days


Melvyn Maltz.

- Original Message - 
From: "Charles Mills" 

To: 
Sent: Tuesday, October 27, 2020 8:22 PM
Subject: Re: Is TESTCB a bad boy ?


Interesting code.

I suspect that others are correct: the EX target is far enough away as to 
not adversely affect the pipeline.


Two other comments though: EX 0, on a dynamically constructed TM seems like 
the hard way of doing whatever it was that had to be done. I would have to 
understand all the code to be sure, but that sure seems like doing things 
the hard way.


And using an index register instead of a base register is frowned upon 
(440D0014). Not sure if it is still true today, but once upon a time at 
least the use of an index register slowed things down by a cycle.


Charles


-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] 
On Behalf Of MELVYN MALTZ

Sent: Monday, October 26, 2020 7:22 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is TESTCB a bad boy ?

Thanks for all the responses, very useful

Perhaps I'd better state what environment I'm working in
I'm using the MVS 3.8 version of VSAM macros which are in the Public Domain
IDA019C1 is the xCB processor and I have the source code from that era

All of this has been adapted in z390 so that I have a emulated IBM VSAM
environment as far as xCB operations go

To respond to most of you

To Charles...
Rather than send you the unfathomable code from IDA019C1 here is an extract
from a z390 trace which shows a typical situation, code followed by source
800FDCCA 0 9291D014  MVI   S2(000FF98C)=96 I2=91='j'
IDA019C1 00105A  MVI   TSTOP(REG13),X'91'
800FDCCE 0 440D0014  EXR0=800FD42E S2(000FF98C)=91804001
IDA019C1 00105E  EX REG0,BITSTINS(REG13)

To Gary...

TESTCB has list, execute, and generate forms; they generate reentrant
code

Mostly they don't, some like MF=G have the potential but as always it's up
to the skill of the programmer to ensure re-entrancy

To Christopher...
As you can see from the above code the instruction doing the mod is about 7K
from the instruction being modified, so only that cache would be refreshed,
a minor overhead provided is wasn't being done a lot

I'm still a little concerned that TESTCB might be used internally by COBOL
etc and be taking a performance hit unknown to the users

Melvyn Maltz.

- Original Message - 
From: "Christopher Y. Blaicher" 

To: 
Sent: Monday, October 26, 2020 7:21 PM
Subject: Re: Is TESTCB a bad boy ?



A cache line is 256 bytes.  If the code that modifies an instruction is in
the same cache line as the instruction, then multiple cache line refreshes
have to happen.
The cache line for the modified instruction has to be brought into the
data cache and modified.  This causes the cache line in the instruction
cache to be invalidated.  The cache line then has to be refreshed into the
instruction cache and then the next instruction re-fetched.  Doing an EX
causes no cache line refreshes and does not interfere with the pipeline.
As I said, EX has its own set of overheads, but are a very small fraction
of modifying an instruction.

Chris Blaicher
Technical Architect
Precisely.com


-Original Message-
From: IBM Mainframe Assembler List
[mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Farley, Peter x23353
Sent: Monday, October 26, 2020 2:33 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is TESTCB a bad boy ?

This message originated Externally. Use proper judgement and caution with
attachments, links, or responses.


Isn't that true only if the dynamically built instruction isn't in the
same cache line as the code that performs the build and EX?

I've seen examples where the "built" instruction was a non-reentrant
location in the same CSECT and very near to the "build" instructions.  Not
my code, but I have seen it.

Peter

-Original Message-
From: IBM Mainframe Assembler List  On
Behalf Of Christopher Y. Blaicher
Sent: Monday, October 26, 2020 2:07 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is TESTCB a bad boy ?

This will not have the same performance hit.
The problem with the MVI was the CPU had to 1) bring the cache line into
the data cache; 2) apply the MVI data; 3) refresh the cache line in the
instruction cache; and finally 4) execute the ins

Re: Is TESTCB a bad boy ?

2020-10-26 Thread MELVYN MALTZ

Thanks for all the responses, very useful

Perhaps I'd better state what environment I'm working in
I'm using the MVS 3.8 version of VSAM macros which are in the Public Domain
IDA019C1 is the xCB processor and I have the source code from that era

All of this has been adapted in z390 so that I have a emulated IBM VSAM 
environment as far as xCB operations go


To respond to most of you

To Charles...
Rather than send you the unfathomable code from IDA019C1 here is an extract 
from a z390 trace which shows a typical situation, code followed by source

800FDCCA 0 9291D014  MVI   S2(000FF98C)=96 I2=91='j'
IDA019C1 00105A  MVI   TSTOP(REG13),X'91'
800FDCCE 0 440D0014  EXR0=800FD42E S2(000FF98C)=91804001
IDA019C1 00105E  EX REG0,BITSTINS(REG13)

To Gary...
TESTCB has list, execute, and generate forms; they generate reentrant 
code
Mostly they don't, some like MF=G have the potential but as always it's up 
to the skill of the programmer to ensure re-entrancy


To Christopher...
As you can see from the above code the instruction doing the mod is about 7K 
from the instruction being modified, so only that cache would be refreshed, 
a minor overhead provided is wasn't being done a lot


I'm still a little concerned that TESTCB might be used internally by COBOL 
etc and be taking a performance hit unknown to the users


Melvyn Maltz.

- Original Message - 
From: "Christopher Y. Blaicher" 

To: 
Sent: Monday, October 26, 2020 7:21 PM
Subject: Re: Is TESTCB a bad boy ?


A cache line is 256 bytes.  If the code that modifies an instruction is in 
the same cache line as the instruction, then multiple cache line refreshes 
have to happen.
The cache line for the modified instruction has to be brought into the 
data cache and modified.  This causes the cache line in the instruction 
cache to be invalidated.  The cache line then has to be refreshed into the 
instruction cache and then the next instruction re-fetched.  Doing an EX 
causes no cache line refreshes and does not interfere with the pipeline.
As I said, EX has its own set of overheads, but are a very small fraction 
of modifying an instruction.


Chris Blaicher
Technical Architect
Precisely.com


-Original Message-
From: IBM Mainframe Assembler List 
[mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Farley, Peter x23353

Sent: Monday, October 26, 2020 2:33 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is TESTCB a bad boy ?

This message originated Externally. Use proper judgement and caution with 
attachments, links, or responses.



Isn't that true only if the dynamically built instruction isn't in the 
same cache line as the code that performs the build and EX?


I've seen examples where the "built" instruction was a non-reentrant 
location in the same CSECT and very near to the "build" instructions.  Not 
my code, but I have seen it.


Peter

-Original Message-
From: IBM Mainframe Assembler List  On 
Behalf Of Christopher Y. Blaicher

Sent: Monday, October 26, 2020 2:07 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Is TESTCB a bad boy ?

This will not have the same performance hit.
The problem with the MVI was the CPU had to 1) bring the cache line into 
the data cache; 2) apply the MVI data; 3) refresh the cache line in the 
instruction cache; and finally 4) execute the instruction.
Doing an EX skips steps 1, 2 and 3.  EX has its own set of overheads, but 
nowhere near what all the cache hits have.


Chris Blaicher
Technical Architect
Precisely.com


-Original Message-----
From: IBM Mainframe Assembler List 
[mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Melvyn Maltz

Sent: Monday, October 26, 2020 11:16 AM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Is TESTCB a bad boy ?

This message originated Externally. Use proper judgement and caution with 
attachments, links, or responses.



In ancient times it was common practice to do this sort of thing...

SWITCH NOP GO
 MVI  SWITCH+1,X'F0'

I believe this clears the cache and causes severe performance hits

In my research into TESTCB for the z390 Project I found that it 
dynamically builds the subject instruction for an EX


Would this have the same performance hit ?

Melvyn Maltz.

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.




Is TESTCB a bad boy ?

2020-10-26 Thread Melvyn Maltz
In ancient times it was common practice to do this sort of thing...

SWITCH NOP GO
  MVI  SWITCH+1,X'F0'

I believe this clears the cache and causes severe performance hits

In my research into TESTCB for the z390 Project I found that it dynamically 
builds the subject instruction for an EX

Would this have the same performance hit ?

Melvyn Maltz.


Re: z390 Macros for Newer Instructions

2020-07-15 Thread MELVYN MALTZ

Hi John,

Please contact me directly using the zarf... address, I'll then give you an 
alternate


I've just logged in to the Yahoo z390 site via 
http://groups.yahoo.com/group/z390/


You are right that z390.org hasn't been updated for ages, there is another 
z390.info but 'm not sure what the differences are


I could certainly use some help with zVSAM V2 development

Regards,

Melvyn.

- Original Message - 
From: "John" <0da23edbcde9-dmarc-requ...@listserv.uga.edu>

To: 
Sent: Tuesday, July 14, 2020 10:12 PM
Subject: Re: z390 Macros for Newer Instructions



Melvyn,

I worked on z390 starting circa 2014, stopping in April 2017. I might
be interested in helping Don bring z390 up-to-date.

The last version of z390 I downloaded from the old z390 Yahoo group was
beta 12, roughly in September 2018. The Yahoo group no longer exists.
Is there a central location that contains the current z390? The
z390.org web site looks like it hasn't been updated in quite some time.

Can we discuss this off-list?

Regards, John Ganci

On Tue, 2020-07-14 at 20:07 +0100, MELVYN MALTZ wrote:

Hi Dan,

I know Don Higgins is working on bringing z390 up-to-date regarding
the
current P-o-Ops

There are now only Don and I trying to keep z390 development going,
you
would be most welcome to join us

Although Java skills are needed most, I could use a buddy to oversee
and
test my Assembler development work for zVSAM V2

Melvyn Maltz.

- Original Message - 
From: "Dan Greiner" 

To: 
Sent: Tuesday, July 14, 2020 6:51 PM
Subject: z390 Macros for Newer Instructions


I continue to noodle around with z390 and regularly find myself
missing
support for newer instructions (z390.org indicates that the latest
instructions supported are for the z10, circa 2008). Being a Java
moron,
updating the source to support newer ops was beyond my ken.

I finally got tired of coding various macros in support of newer
instructions, so I gleaned a list of newer mnemonics from the "IBM
z/Architecture Reference Summary" (SA22-7871-10) and extended
mnemonics from
the PoO (SA22-7832-12), and with a little calisthenics, converted
them into
889 macros (there are a lot of extended vector mnemonics). You are
welcome
to examine the results at:

https://drive.google.com/file/d/19lJfprlE0ZqIMYo1WXrEiW75Kri2lW7X/view?usp=sharing

CAVEAT EMPTOR! Absolutely no warranty is implied or expressed! Got
it? None!
Zippo!! Zilch!!!  The macros are simple minded, with no operand
validation;
so, if you code a general register higher than 15 or a vector
register
higher than 31, or if you omit an operand, bad things may happen. If
you so
happen to trip over an inaccurate result, a response posted to this
message
may (or may not) result in an update. 


Re: z390 Macros for Newer Instructions

2020-07-14 Thread MELVYN MALTZ

Hi Dan,

I know Don Higgins is working on bringing z390 up-to-date regarding the 
current P-o-Ops


There are now only Don and I trying to keep z390 development going, you 
would be most welcome to join us


Although Java skills are needed most, I could use a buddy to oversee and 
test my Assembler development work for zVSAM V2


Melvyn Maltz.

- Original Message - 
From: "Dan Greiner" 

To: 
Sent: Tuesday, July 14, 2020 6:51 PM
Subject: z390 Macros for Newer Instructions


I continue to noodle around with z390 and regularly find myself missing 
support for newer instructions (z390.org indicates that the latest 
instructions supported are for the z10, circa 2008). Being a Java moron, 
updating the source to support newer ops was beyond my ken.


I finally got tired of coding various macros in support of newer 
instructions, so I gleaned a list of newer mnemonics from the "IBM 
z/Architecture Reference Summary" (SA22-7871-10) and extended mnemonics from 
the PoO (SA22-7832-12), and with a little calisthenics, converted them into 
889 macros (there are a lot of extended vector mnemonics). You are welcome 
to examine the results at:


https://drive.google.com/file/d/19lJfprlE0ZqIMYo1WXrEiW75Kri2lW7X/view?usp=sharing

CAVEAT EMPTOR! Absolutely no warranty is implied or expressed! Got it? None! 
Zippo!! Zilch!!!  The macros are simple minded, with no operand validation; 
so, if you code a general register higher than 15 or a vector register 
higher than 31, or if you omit an operand, bad things may happen. If you so 
happen to trip over an inaccurate result, a response posted to this message 
may (or may not) result in an update. 


Re: Convert *signed* EBCDIC to packed decimal

2020-06-03 Thread MELVYN MALTZ

Hi Doug,

By s/370 I hope you mean z15...there are a few new instructions :-)

I would recommend getting z390, a free Assembler emulator, go here 
www.z390.org

You get me for free as a mentor as well :-)
Contact me directly, not through this forum

To your problem...
Yes, you do need to scan for a sign,
If you find a plus just set it to X'F0'
If you find a minus, set it to X'F0' and use NI to set the last byte to 
X'nD'

Then use CDZT or CXZT to convert to DFP

Using DFP is better than the old packed instructions
I expect there will be dissenters

Melvyn Maltz.

- Original Message - 
From: "Doug Wegscheid" 

To: 
Sent: Wednesday, June 03, 2020 9:26 PM
Subject: Convert *signed* EBCDIC to packed decimal



I'm getting reacquanted with s/370 assembler after a 40 years hiatus.
I'm working through some examples from my Kacmar book, and need to convert 
from a character string to a packed decimal. PACK almost works, except it 
does not handle a leading (or any) plus or minus signed.
Is there a *simple* way to do, or am I going to have to scan for the sign 
characters myself, remove them, pack the result, and flip the sign if it 
was negative?
Alternatively, is there some accessible prior art out there? 


Re: z/OS HLASM: EQU for statement labels

2020-06-02 Thread MELVYN MALTZ

Hi Guys,

I thought I would put my 2 cents worth in
I know that 55 years of Assembler coding doesn't count for much these days 
:-)


Labels...
Even back in the 60's I was taught never to put a label on an instruction
I only break that rule now for the subject of an EX (and its variants)
In the old days of real storage I used to code label EQU * and this was fine

Then paging came along and the recommendation was to keep in-line data close 
to the instructions using it (locality of reference). As people have 
mentioned this sometimes resulted in odd addresses and S0C1 abends (before 
unalignment was detected)


So I switched to label DS 0H in coding
Have to state the obvious...DS 0H might not be appropriate for some data as 
there are now many instructions that rely on specific alignments


I consider...
DS 0H
label EQU *
to be overkill and I would deduct 2 points

With changes in architecture, we now move in-line data to avoid cache 
problems
And did you know that this code...popular in ancient times is a performance 
disaster now

ONETIME NOP THERE
  MVI  ONETIME+1,X'F0'

Returning CC from a subroutine...
Have to point out that IBM do this in the VSAM TESTCB macro

Melvyn Maltz.

- Original Message - 
From: "David Woolbright" 

To: 
Sent: Tuesday, June 02, 2020 5:58 PM
Subject: Re: z/OS HLASM: EQU for statement labels


I’’m just a humble academic so I hesitate to weigh in.  I trained assembler 
programmers for one large credit card processing company for many years and 
their standard was to use EQU * as the target of all branches, mainly so new 
lines could be added easily. I’ve never had an odd address created 
accidentally using this technique, but it’s also the case that the assembler 
will warn you in cases where you do have an unfavorable address. I’m in the 
process of revising many years of teaching material into book format, so 
your opinions on this matter to me.  Using EQU for targets would seem to be 
a stylistic point on which reasonable people could disagree, but perhaps I’m 
wrong.



On Jun 2, 2020, at 11:49 AM, Seymour J Metz  wrote:


Is this useful?


Only if you're a sadist.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Assembler List [ASSEMBLER-LIST@LISTSERV.UGA.EDU] on 
behalf of Paul Gilmartin [0014e0e4a59b-dmarc-requ...@listserv.uga.edu]

Sent: Tuesday, June 2, 2020 11:40 AM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: z/OS HLASM: EQU for statement labels

On 2020-06-02, at 09:33:48, Charles Mills wrote:


I don't claim any benefit to the technique, it's just my habit. Actually 
I think the cleanest is a DS 0H followed by label EQU *. That clearly 
shows what is going on: re-establishing halfword alignment followed by 
mapping a label to an address.



I found it ironic that:
LABELCNOP  ...
assigns the address of the beginning of the padding rather
than the end to LABEL.  Is this useful?

Fortunately,
LABELDS0H
does the opposite so your 2-instruction construct is otiose.

-- gil 


Re: Sample code to practice assembler

2020-05-14 Thread MELVYN MALTZ

Hi JD,

Download the z390 product (it's free) from www.z390.org
It's an Assembler emulator for a PC under Windows or Linux

I teach and mentor students of Assembler and would be happy to help you in 
any way

z390 has it's own forums as well
Contact me here zarf77...@blueyonder.co.uk

Regards,

Melvyn (z390 Developer)

- Original Message - 
From: "johnnydeep san" 

To: 
Sent: Thursday, May 14, 2020 6:40 AM
Subject: Sample code to practice assembler



Hi all,

I'm new bee  and learning assembler by own. i'm glad to join this group. 
If

you guys having any link or doc for practice  basic Z/os  assembler code.
,please let me know.

Regards,
JD 


Re: Z390 Assembler Emulator

2020-05-11 Thread MELVYN MALTZ

Hi Frank,

I'm one of the few z390 developers left

Contact me directly here zarf77...@blueyonder.co.uk

z390 fully supports macro language, no special requirements
It could be that your SYSMAC concat isn't correct

Send me your BAT (renamed) and sample code and I'll sort out your problem
I don't know Linux, but I know someone who does

Melvyn Maltz.

- Original Message - 
From: "Frank Myers" 

To: 
Sent: Monday, May 11, 2020 11:05 PM
Subject: Z390 Assembler Emulator



Hi,

I installed the z390 emulator and assembler on Linux. I tried to assemble
some of my code, but found that It was not recognizing my Macros. I copied
them into the z390/mac directory, but still it does not find my Macros.
* Is there a required step to preprocess or register macros before they 
can

be used?  Or do the macros need to adhere to a fixed record length? Or
perhaps only a subset of IBM Assembler Macro language is supported? Or
perhaps some other magic?*

Thanks, in advance for any help or advise you can share.

Frank 


Re: Does S0C5 still exist ?

2020-01-30 Thread MELVYN MALTZ

Hi Steve,

You're the only person to actually meet my request...thankyou
I would much appreciate the code used, I tried B and MVI to your address in 
A/RMODE 31 but I get S0C4


Melvyn.

- Original Message - 
From: "Steve Smith" 

To: 
Sent: Thursday, January 30, 2020 12:39 AM
Subject: Re: Does S0C5 still exist ?



I proved it.

IEA995I SYMPTOM DUMP OUTPUT  909
SYSTEM COMPLETION CODE=0C5  REASON CODE=0005
TIME=19.17.34  SEQ=01808  CPU=  ASID=0038
PSW AT TIME OF ERROR  030C1001   FE8E8EA8  ILC 4  INTC 05
  NO ACTIVE MODULE FOUND
  NAME=UNKNOWN
  DATA AT PSW IS UNAVAILABLE AT THIS TIME
  GR 0: _17E00FFE   1: _003C
 2: DEAD_   3: _0001
 4: BEEF_   5: _004F81A0
 6: _004CCFC8   7: _00F97480
 8: _004FE838   9: _004F83E8
 A: _01D7B600   B: _0001
 C: _07D4BC98   D: _6F60
 E: _1E1E   F: _7E8E8E88
END OF SYMPTOM DUMP

It's about six lines of code that assumes you have less than a few
petabytes of real storage, and that I'll leave as an exercise.  Don't try
this at home.  It's rather dangerous code if you load the registers
pointing to memory that actually does exist.

I've seen many (far too many) dumps in my time, and that is definitely a
unique PSW.

sas 


Re: Does S0C5 still exist ?

2020-01-29 Thread MELVYN MALTZ

Hi Keven,

You might be the 5th, but the response is respected
I didn't know the LURA and STURA instructions but these require privops 
access


From other responses I conclude that S0C5 is not possible with DAT on, but I 

still feel that it's more to do with storage key protection than DAT

Again, turning DAT off requires rather special RACF access

Melvyn.

- Original Message - 
From: "Keven" 

To: 
Sent: Wednesday, January 29, 2020 11:36 PM
Subject: Re: Does S0C5 still exist ?






   I’ve developed code that executed LURA and STURA instructions and I saw 
a few S0C5s along the way. I remember thinking at the time that I had 
finally filled in my S0Cx card (I.e., I had at that point written code that 
had non-deliberately ABENDed with a S0C1 through S0C9. I might even have 
cracked a beer that evening to mark the event.I think S0C5 only results from 
an attempt to access real storage addresses outside the available range

I’m probably by now the 5th or so person to respond with this answer...










On Wed, Jan 29, 2020 at 5:01 PM -0600, "Steve Smith"  
wrote:











I think that's the winner!  Much easier than stepping into DAT-off on one's
own (unless you happen to actually still have a V=R region).

John McKown's suggestion is nice for runner-up.

sas

On Wed, Jan 29, 2020 at 5:12 PM Keith Moe  wrote:


 Yes. It is still possible to generate a REAL 0C5 (Addressing Exception)
abend. To do so, you must be in DAT OFF mode. z/OS has DAT OFF Services 
and

until you have a full 64-bit addressable real storage, an 0C5 can occur.

Back in 2005, I accidentally generated one in a DAT OFF service call.

Keith Moe
BMC Software, Inc. 


Re: Does S0C5 still exist ?

2020-01-29 Thread MELVYN MALTZ

Well, yes, it may be possible
I have a feeling that this is storage key related which is newer than DAT

Melvyn

- Original Message - 
From: "John McKown" 

To: 
Sent: Wednesday, January 29, 2020 9:47 PM
Subject: Re: Does S0C5 still exist ?



Cheat -- use the ABEND macro. Yes, you can use it to generate system anend
codes.

PIC 5 is basically that a physical address doesn't exist, so I doubt you
can generate it DAT on.

On Wed, Jan 29, 2020, 15:11 Melvyn Maltz <
072265160664-dmarc-requ...@listserv.uga.edu> wrote:

As part of a training exercise I was challenged to write code that 
abended

S0C5
While I'm very skilled at writing Assembler code that abends, I failed in
this case :-(

With the advent of much more secure storage allocation (if someone
mentions CICS Storage Violations the men in white coats will have to 
sedate

me) is it possible to create a S0C5 ?

Some simple code that does it please

Melvyn



Re: Does S0C5 still exist ?

2020-01-29 Thread MELVYN MALTZ

No, that's a S0C6

- Original Message - 
From: "John Melcher" <0a33cad2fca2-dmarc-requ...@listserv.uga.edu>

To: 
Sent: Wednesday, January 29, 2020 9:33 PM
Subject: Re: Does S0C5 still exist ?



Jdoesn't do it?



-Original Message-
From: IBM Mainframe Assembler List  On 
Behalf Of Joe Dolcini

Sent: Wednesday, January 29, 2020 3:32 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Does S0C5 still exist ?

*** External email: Verify sender before opening attachments or links ***


I thought it was leftover from MVT (non-virtual) days.  I found the 
following



S0C5 – Addressing Exception

Description
An address developed and used by the ABENDing program lies outside of the 
available virtual storage on the processor.


Possible Causes

Indexing, Subcripting outside the program’s assigned limits.
Un-initialized index
Attempt to read an unopened input file
A missing or misspelled DD statement.
An attempt to close a dataset second time An input/output instruction is 
terminated because an open is unable to complete Regarding the listed 
reasons that reference datasets, I didn’t think those would get an 0c5.




On Jan 29, 2020, at 3:23 PM, Steve Thompson  wrote:

Get the PoOP and look at Program Interrupt Code (PIC) 5.

I can't remember off the top of my head if this is addressing or 
specification exception.


Regards,
Steve Thompson

On 1/29/20 4:11 PM, Melvyn Maltz wrote:

As part of a training exercise I was challenged to write code that
abended S0C5 While I'm very skilled at writing Assembler code that
abends, I failed in this case :-( With the advent of much more secure 
storage allocation (if someone mentions CICS Storage Violations the men 
in white coats will have to sedate me) is it possible to create a S0C5 ?

Some simple code that does it please
Melvyn




Re: Does S0C5 still exist ?

2020-01-29 Thread MELVYN MALTZ

Thanks Steve,

Yes, it's in the Manual, but does it exist is my question ?
And yes, Addressing

Melvyn

- Original Message - 
From: "Steve Thompson" 

To: 
Sent: Wednesday, January 29, 2020 9:23 PM
Subject: Re: Does S0C5 still exist ?



Get the PoOP and look at Program Interrupt Code (PIC) 5.

I can't remember off the top of my head if this is addressing or 
specification exception.


Regards,
Steve Thompson

On 1/29/20 4:11 PM, Melvyn Maltz wrote:
As part of a training exercise I was challenged to write code that 
abended S0C5
While I'm very skilled at writing Assembler code that abends, I failed in 
this case :-(


With the advent of much more secure storage allocation (if someone 
mentions CICS Storage Violations the men in white coats will have to 
sedate me) is it possible to create a S0C5 ?


Some simple code that does it please

Melvyn



Does S0C5 still exist ?

2020-01-29 Thread Melvyn Maltz
As part of a training exercise I was challenged to write code that abended S0C5
While I'm very skilled at writing Assembler code that abends, I failed in this 
case :-(

With the advent of much more secure storage allocation (if someone mentions 
CICS Storage Violations the men in white coats will have to sedate me) is it 
possible to create a S0C5 ?

Some simple code that does it please

Melvyn


Re: Where do I find more info about new z15 instruction SORTL listed in Sept. APAR but not in POP

2019-12-01 Thread MELVYN MALTZ

Hi there,

APAR PH00902 has this neat get-out clause...


The presence of a mnemonic in the above lists does not necessarily mean that 
the corresponding instruction is available to use.  The list may include 
mnemonics reserved for possible future use, so that if the corresponding 
instructions are made available before the next major hardware level this 
will not result in any new potential clashes with library macros.


Melvyn Maltz.

- Original Message - 
From: "Charles Mills" 

To: 
Sent: Sunday, December 01, 2019 9:03 PM
Subject: Re: Where do I find more info about new z15 instruction SORTL 
listed in Sept. APAR but not in POP



There were not yet any exploiters and they aim to keep it that way!

Geez, you would think the several-year lead time on hardware design would 
have given the DFSORT team a decent head start.


Charles


-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] 
On Behalf Of Ed Jaffe

Sent: Sunday, December 1, 2019 9:56 AM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Where do I find more info about new z15 instruction SORTL 
listed in Sept. APAR but not in POP


On 12/1/2019 5:59 AM, Don Higgins wrote:

All

Where do I find more info about new z15 instruction SORTL listed in Sept. 
APAR but not in POP



I asked IBM about this pre-GA and was told that the doc was
*deliberately* left out of PoOp because there were not yet any
exploiters! WTF? How can anyone exploit something that isn't documented?
My "push back" on that was left unanswered... :-\ 


Re: C DLL Code from Assembler

2019-07-04 Thread MELVYN MALTZ

Hi Tony,

I'm in the process of rewriting GENCB for the z390 Emulator
It's in use by CICS and many other things


GENCB BLK=RPL,ACB=(R5),...

It would be a serious bug if it didn't work
I tried it and it works with  MF=omitted, E and G
An ST places the content of R5 into the ACE block
Register notation is invalid with MF=L

Melvyn Maltz.

- Original Message - 
From: "Tony Harminc" 

To: 
Sent: Tuesday, July 02, 2019 8:54 PM
Subject: Re: C DLL Code from Assembler


On Tue, 2 Jul 2019 at 12:50, John McKown  
wrote:



Wouldn't it be nice if IBM were to extend the GENCB macro to include
BLK=DCB in addition to BLK=ACB, BLK=RPL, BLK=EXLST, and BLK=NIB? OTOH, 
does

anyone actually use GENCB?


My impression is that GENCB and friends were effectively deprecated
long ago. We have them in some of our legacy VTAM code, and there are
all kinds of annoyances and things that they don't do correctly and
completely.  (For example, a GENCB BLK=RPL,ACB=(Rn),OPTCD=... fails to
store the supplied ACB address in the created RPL field RPLDACB.) It's
a nice idea but a poor implementation.

To say nothing about the need to bracket GENCB with
ACONTROL FLAG(NOPAGE0)
POP   ACONTROL
to avoid the HLASM complaint about no base register (because GENCB
references the CVT with a L 15,16). That they haven't made that
trivial fix in these many years says plenty.

Tony H. 


Re: Best practice using Conditional Assembly

2019-03-03 Thread MELVYN MALTZ

Hi Paul,

Others will give you code

Define an LCLC array
Keep a count of entries
Before inserting a new entry, scan the array to see if &XCODE  is already 
there

If it is...it's a duplicate
If not, add it and increment the count

Melvyn Maltz

- Original Message - 
From: "esst...@juno.com" 

To: 
Sent: Sunday, March 03, 2019 10:26 PM
Subject: Best practice using Conditional Assembly


Hi,.I construct a table using a set of Macros.
The macro supports four different TYPE fuctions.
I can have a TYPE=INITIAL, TYPE=ENTRY, TYPE=FINAL, and
TYPE=DSECT.
.
TYPE=INITIAL basically sets up pointers to the first entry, last entry,
and a count of the number of entries.
.
TYPE=ENTRY describes the individual elements in the table, each ENTRY
is identified by a four character Transaction Code.
.
I want to know how best to identify a duplicate Transaction Code during 
Assembly

of the Table.
.
For Example
SV5000XX TYPE=INITIAL
SV5000XX TYPE=ENTRY,XCODE=ABCD,P1=JOB001,P=JOB002,P3=JOB003
SV5000XX TYPE=ENTRY,XCODE=IJKL,P1=JOB021,P=JOB032,P3=JOB043
SV5000XX TYPE=ENTRY,XCODE=ABCD,P1=JOB0AA,P=JOB0BB,P3=JOB0CC
SV5000XX TYPE=FINAL
.
In the above scenario, I would want to flag entry three as a duplicate
XCODE of ABCD during assembly.
.
I want to know how best to identify a duplicate Transaction Code during 
Assembly

of the Table.
.
Any suggestions - sample conditional assembly code would be best
.
Paul D'Angelo
*
*
* 


Re: Two string instruction questions

2018-03-14 Thread MELVYN MALTZ

Hi Peter,

Partially right
In a VSAM file (KSDS only I think) you can request the Index to have 
compressed keys

Only worth while if the keys were large (max length is 127 bytes)

The Index entry would be compared to the previous and both the beginning and 
ending key bytes would be compared and whatever was the same got a length 
instead of the bytes, the final index entry looks horrible, but it saved 
valuable disk space back in the time when dinosaurs (like me) ruled the 
Earth :-) The RBA would not have been there for a KSDS


Have I got the very last "VSAM Logic" Manual on the planet ?

Melvyn Maltz

- Original Message - 
From: "Farley, Peter x23353" 

To: 
Sent: Wednesday, March 14, 2018 10:18 PM
Subject: Re: Two string instruction questions


I think I read somewhere that is what keyed VSAM Index records are, aren't 
they?  A count of equal key bytes and then the remaining non-equal bytes, 
followed by the RBA in the data component?  Or is that a fib I was told?


Peter

-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] 
On Behalf Of Charles Mills

Sent: Wednesday, March 14, 2018 5:49 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Two string instruction questions

That's interesting. Thanks!

I did think of what CUSE would be perfect for: what I know as "vertical 
compression" but Google does not seem to know the term. Think of standard 
run length compression as "horizontal." Picture something like that, but 
where a code indicates "the next 'n' bytes of this record are identical to 
the bytes in the same position in the previous record." Only works for 
sequential files, because you need the previous record to decode this 
records. But works well where there are a lot of repeating fields.


--


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. 


Re: Posting

2017-12-14 Thread MELVYN MALTZ

Thanks to Ed and Dave

But did you get the original posting...you didn't say

If you thought it too trivial/irrelevant  to respond to...that's fine
But if you didn't get it, that's not fine

Melvyn.

- Original Message - 
From: "Ed Jaffe" 

To: 
Sent: Thursday, December 14, 2017 8:05 PM
Subject: Re: Posting



On 12/14/2017 12:03 PM, MELVYN MALTZ wrote:

Did you receive the original post ? If not...why ?


Irrelevant. Every spam filter is unique. Your experience with your 
particular spam filter is unique to you on no one else...


--
Phoenix Software International
Edward E. Jaffe
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/


Re: Posting

2017-12-14 Thread MELVYN MALTZ

Hi Tom,

Thanks for the response

Yes, whatever I have set, I get everyone's posting including my own

When I posted the original "HLASM RFE revisited" I was surprised when I 
didn't receive the posting sent back to me and also that no-one had 
responded


I found that my Email client had rejected it as Spam and refused to send it 
on to me

However, the post "Posting" you picked up on did come back to me

Did you receive the original post ? If not...why ?

Melvyn.

- Original Message - 
From: "Tom Marchant" <00a69b48f3bb-dmarc-requ...@listserv.uga.edu>

To: 
Sent: Thursday, December 14, 2017 5:23 PM
Subject: Re: Posting


On Wed, 13 Dec 2017 17:26:51 -0500, Melvyn Maltz wrote:


For some reason my recent posting is going into Spam or
(in my case) being rejected as Spam before I get it


If I understand correctly, you are saying that you have REPRO set,
so that you receive your own postings, and that when your post
was sent to you it went to your spam folder. Is that correct?

If so, the problem would seem to be in your email client.

--
Tom Marchant 


Posting

2017-12-13 Thread Melvyn Maltz
For some reason my recent posting is going into Spam or (in my case) being 
rejected as Spam before I get it

It isn't Spam and is a topic for further discussion

The Posting is called: HLASM RFE revisited
Posted on: 11th Dec @ 09:36
It can be found on the listserv website 

Perhaps the moderator would like to comment


Re: Macro Processors

2017-12-12 Thread MELVYN MALTZ

Title: HLASM RFE Revisited
Posted on 11th Dec 09:36

- Original Message - 
From: "Charles Mills" 

To: 
Sent: Tuesday, December 12, 2017 12:51 AM
Subject: Re: Macro Processors


You want to give us a hint?

Charles


-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] 
On Behalf Of MELVYN MALTZ

Sent: Monday, December 11, 2017 4:00 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Macro Processors

Sorry Charles, I wasn't precise

The post is there, but the return of my post went into my Spam folder, which 
it hasn't done before For those (I think most) who receive all posts and 
replies it may not have hit your Inbox 


Re: Macro Processors

2017-12-11 Thread MELVYN MALTZ

Sorry Charles, I wasn't precise

The post is there, but the return of my post went into my Spam folder, which 
it hasn't done before
For those (I think most) who receive all posts and replies it may not have 
hit your Inbox


Something odd happened

Melvyn.

- Original Message - 
From: "Charles Mills" 

To: 
Sent: Monday, December 11, 2017 11:50 PM
Subject: Re: Macro Processors


Who is us guys and if it bounced, how would we respond?

Charles


-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] 
On Behalf Of MELVYN MALTZ

Sent: Monday, December 11, 2017 2:50 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Macro Processors

I might point out that zcobol (part of z390) was a translation of COBOL 
syntax which was then converted to Assembler by a large set of 
macros...thankyou Don Higgins 


Re: Macro Processors

2017-12-11 Thread MELVYN MALTZ
I might point out that zcobol (part of z390) was a translation of COBOL 
syntax which was then converted to Assembler by a large set of 
macros...thankyou Don Higgins


And while I'm here, I posted "HLASM RFE revisited", but the bounce back went 
into my Spam folder...it isn't and I would appreciate you guys finding it 
and responding


Melvyn Maltz.

- Original Message - 
From: "Charles Mills" 

To: 
Sent: Monday, December 11, 2017 10:16 PM
Subject: Re: Macro Processors


I get your point. The assembler macro facility is more like a facility for 
writing extensions to the assembler than it is like the C macro 
preprocessor. That ability to write a macro that is integrated in its 
processing with the main passes of the assembler -- yes, that is very cool.


In C I can write a macro FOO(bar) that expands out into C code -- shorthand, 
in other words. But an assembler macro has the ability to be more like an 
extension of the assembler itself, not simply a shorthand for some more 
wordy assembler instructions.


Charles


-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] 
On Behalf Of John Ehrman

Sent: Monday, December 11, 2017 12:19 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Macro Processors

Charles Mills noted...





Date: Sat, 9 Dec 2017 17:58:15 -0800
From: Charles Mills 






PL/I has a very powerful "macro" (preprocessor, I think they call it)
facility. I don't know it well at all, but in my impression it is more
powerful than either assembler or C macros.





I agree that PL/I's macro preprocessor is indeed powerful; but it and

all other macro facilities I know of lack a key feature of HLASM's

conditional assembly and macro facility: an intimate interaction

between the base language and the macro language. While the 


HLASM RFE revisited

2017-12-11 Thread Melvyn Maltz
To remind folks what I was proposing...
   1) More flexibility in defining 2 and 4-byte immediate values
   2) Arithmetic values reported as out-of-range, but seemed ok
   3) HLASM output shows some immediates but not others

Since my last posting which got favourable support I have been
exchanging Emails with Jonathan Scott

This has proved useful as I now have a better understanding of how
HLASM actually works

I don't entirely agree that it should work that way, but I would like
to throw both opinions back to the community to see what the general
view is

Jonathan has allowed me to quote from our private Emails provided I
don't misrepresent his views, and I will be vigilant not to do so

The symbols >>JS<< and >>MM<< are used to differentiate opinions

>>JS<<
Every assembler expression is evaluated in a way which is completely
unrelated to its context, currently as a 31-bit signed expression

For an immediate operand, the expression value is then assigned to the
instruction field, preserving the numerical interpretation of that
value according to whether the field is signed or unsigned

>>MM<<
This does explain the curiosity of LH 1,=X'' being valid and LHI
1,X'' being invalid. The LHI immediate will generate a binary
value of 65535 which is outside the range for the operand. If the
immediate were valid it would still comply with the PoOP "The second
operand is sign extended..."

Similarly, LHI 1,2X'FF isn't valid because strictly speaking the
immediate operand is not a single binary value

>>JS<<
And 2X'FF' would still be an invalid value for LHI regardless of
notation

There might be a partial solution...
>>JS<<
All I can say for now is that we are hoping to make checking more
consistent in the future by introducing a truncation check option
while at the same time providing an option to tolerate use of unsigned
values in signed fields and vice versa

>>MM<<
I guess we aren't going to get a true DC-type expression for 2 or
4-byte immediates unless the feeling is strong enough

One last point, as I don't work for an IBM customer I have no access
to the formal method of submitting an RFE. If the general feeling here
is that one should be submitted may I ask for someone to do this on my
behalf

Melvyn Maltz.


Re: z14 PoO Available - VFLL instruction

2017-09-24 Thread MELVYN MALTZ
And wouldn't it be great if it was called z390 and available on a website 
called www.z390.org and if just a few Java programmers could be bothered to 
spend a few hours achieving just that as Don, Melvyn, Abe and several others 
tried to do over the past years...doh.


And while I'm on the subject, does anyone remember that a few months ago I 
wanted the PoOPS ripped apart and reconstructed so that every single 
instruction had a page to itself with links ?
My suggestion got trashed...I still can't believe that the guys and gals 
here have so little imagination.


53 years of assembler coding and still no-one listens to me.

And just to annoy people even more, enhancing the IBM360 architecture is 
like redesigning the T-Rex...it's already extinct guys...time to move on.


Melvyn Maltz.

- Original Message - 
From: "Gary Weinhold" 

To: 
Sent: Sunday, September 24, 2017 11:59 PM
Subject: Re: z14 PoO Available - VFLL instruction


But wouldn't be great if the PoO could just be fed into a software 
emulator creator (in machine-readable format, of course) and out would 
come a software emulator. And the another process could create all the 
chips and microcode. That way the PoO would always exactly match the 
processor.


Gary Weinhold

From: a...@bixoft.nl
Sent: September 24, 2017 3:01 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Reply to: a...@bixoft.nl
Subject: Re: z14 PoO Available - VFLL instruction


All,

In the new PoO, on page 24-26, Programming Note for VFLL instruction,
there is what seems to be another copy-paste error. I quote:

*Programming Note*: If a trapping IEEE exception is
   encountered during execution of VECTOR LOAD
   LENGTHENED it is model dependent if the VIX in
   the VXC field is the index of the source or target element
   unless the IBM z/Architecture Principles of
   Operation is installed in which case it is always the
   index of the source element.

Beats me how the PoO could be installed in the processor,
but maybe I'm taking things too literally?

Can it be it should have referred to the vector-enhancement
facility 1 ?

Kind regards,
Abe Kornelis
==



Op 15-9-2017 om 8:07 schreef Dan Greiner:

The IBM z14 processor is generally available today (14 September 2017).

The z/Architecture Principles of Operation corresponding to the new z14 
processor is available at 
http://publibfp.dhe.ibm.com/epubs/pdf/dz9zr011.pdf


The z/Architecture Reference Summary corresponding to the new z14 
processor is available at 
http://publibfp.dhe.ibm.com/epubs/pdf/dz9zs009.pdf




Gary Weinhold
Senior Application Architect

DATAKINETICS | Data Performance & Optimization

Phone:  +1.613.523.5500 x216
Email:  weinh...@dkl.com<mailto:weinh...@dkl.com>

[http://www.dkl.com/wp-content/uploads/2015/07/dkl_logo.png]<http://www.dkl.com/>

Visit us online at www.DKL.com<http://www.dkl.com/>

[http://www.dkl.com/wp-content/uploads/2015/08/banner.png]<http://www.dkl.com/mailsig>

E-mail Notification: The information contained in this email and any 
attachments is confidential and may be subject to copyright or other 
intellectual property protection. If you are not the intended recipient, 
you are not authorized to use or disclose this information, and we request 
that you notify us by reply mail or telephone and delete the original 
message from your mail system.






Re: random quest

2017-05-16 Thread MELVYN MALTZ

Hi Richard,

Paul is right, we came up with the same solution

There are several statistical tests for randomness, perhaps the easiest to 
calculate is MSSD (mean squared successive differences) and you are on the 
right track


You can attach my name

Melvyn.

- Original Message - 
From: "Richard Kuebbing" 

To: 
Sent: Tuesday, May 16, 2017 11:46 PM
Subject: Re: random quest


Fantastic.  This looks to be the level of brilliance I was looking for - 
simplicity plus 100% solution.


So follow-up question.  I have a lot of advanced math in grad school, all 
inapplicable to this.  Is there any kind of measure of how "random" a set of 
numbers is?  Someone internal is bound to ask.  I am thinking of graphing 
the difference [=n(i+1)-n(i)] and looking at distribution.  The client(s) 
are business persons and are unlikely to ask.


Question 2:  I have a passion for documenting things.  Do you wish to have 
your name attached to this idea?


Tomorrow when I have time I will peruse all the answers.

Profound thanks

Peace be w/y'all

-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] 
On Behalf Of Farley, Peter x23353

Sent: Tuesday, May 16, 2017 4:51 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: random quest

1. Use either CEERAN0 or FUNCTION RANDOM to generate a column of 99,999 
random numbers.  It's OK if there are duplicates.
2. Add a second column using SORT with sequential numbers from 1 to 9 
(use the SEQNUM option).

3. SORT by the first column only and DO NOT specify the EQUALS option.
4. Use the numbers in column 2 after sorting as your 99,999 randomly ordered 
numbers


You can combine steps 2, 3, and 4 in one SORT execution.  INREC to add the 
SEQNUM's as a second column, SORT by first column, OUTREC to select only the 
second column for output.


HTH

Peter

-Original Message-
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] 
On Behalf Of Richard Kuebbing

Sent: Tuesday, May 16, 2017 4:28 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: random quest

So I need a set of 99,999 random numbers which are 5 digits and unique, i.e. 
no duplicates.  CEERAN0 and Cobol FUNCTION RANDOM both give sets w/30+% 
duplicates.


I have seen website random.org.

Anyone have to ever done this thing?

Anyone have suggestions?

--

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.



- The information contained in this 
communication (including any attachments hereto) is confidential and is 
intended solely for the personal and confidential use of the individual or 
entity to whom it is addressed. The information may also constitute a 
legally privileged confidential communication. If the reader of this message 
is not the intended recipient or an agent responsible for delivering it to 
the intended recipient, you are hereby notified that you have received this 
communication in error and that any review, dissemination, copying, or 
unauthorized use of this information, or the taking of any action in 
reliance on the contents of this information is strictly prohibited. If you 
have received this communication in error, please notify us immediately by 
e-mail, and delete the original message. Thank you 


Re: random quest

2017-05-16 Thread MELVYN MALTZ

Hi Richard,

I'll assume you'll want the five digit numbers in a random order

1) Have a look at the PPNO instruction

2) This technique will work, it might depend on whether you want to do this 
multiple times or just once
I'll assume you have a random number generator (rng), someone will have one 
if you don't

a) Build a table of numbers 1-9
b) Use the rng to select a number from 1-9, mark that entry as used and 
collect it
c) Use the rng again with range 1-8, select the nth unused and 
collect it
d) Repeat c and d dropping the range by one each time until you have none 
left


Regards,

Melvyn Maltz.

- Original Message - 
From: "Richard Kuebbing" 

To: 
Sent: Tuesday, May 16, 2017 9:28 PM
Subject: random quest


So I need a set of 99,999 random numbers which are 5 digits and unique, i.e. 
no duplicates.  CEERAN0 and Cobol FUNCTION RANDOM both give sets w/30+% 
duplicates.


I have seen website random.org.

Anyone have to ever done this thing?

Anyone have suggestions?

Richard Kuebbing

Efforts and courage are not enough without purpose and direction. - John F. 
Kennedy
Fasten your seat belts, it's going to be a bumpy ride. - Bette Davis (as 
character Margo Channing) _All About Eve_1950

Furious activity is no substitute for understanding. - H. H. Williams
Our greatest danger in life is in permitting the urgent things to crowd out 
the important. - Charles E. Hummel

Quidquid latine dictum sit, altum videtur.



- The information contained in this 
communication (including any attachments hereto) is confidential and is 
intended solely for the personal and confidential use of the individual or 
entity to whom it is addressed. The information may also constitute a 
legally privileged confidential communication. If the reader of this message 
is not the intended recipient or an agent responsible for delivering it to 
the intended recipient, you are hereby notified that you have received this 
communication in error and that any review, dissemination, copying, or 
unauthorized use of this information, or the taking of any action in 
reliance on the contents of this information is strictly prohibited. If you 
have received this communication in error, please notify us immediately by 
e-mail, and delete the original message. Thank you 


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: HLASM "Anomaly"

2017-03-26 Thread MELVYN MALTZ

To: Peter Relson

If you were a brickie building a wall would you NOT want to be told that you 
were using inferior mortar ?


Much the same with our building blocks...these items are inferior and I 
would not want them in any build of mine...if the programmer doesn't know 
about them, one day the wall will come tumbling down. If these were coded 
intentionally, I would suggest a better way

LHI 1,X''
DC Y(X'')

and this is in error DC Y(65535) 

No, I don't want a different rule set, I want the current one to serve the 
Assembler community better than it does at present


Melvyn Maltz.

- Original Message - 
From: "Peter Relson" 

To: 
Sent: Saturday, March 25, 2017 8:30 PM
Subject: Re: HLASM "Anomaly"


Regarding the lengthy discussion of immediate operands and whether there
should be warnings or errors, I will point out that there is next to zero
chance that the assembler will unconditionally change its rules in this
regard, as that could cause currently working JCL to fail (I'm with
Charles Mills in thinking that a warning in many cases is wishy-washy as
there are very few cases where a warning on an assembly should be accepted
by a build process, unless you like looking manually at the listing every
time to make sure that your expected warning is the only one that you're
getting).

If you want a different rule set, then you need to ask for an option by
which you can request a new rule set (and of course to have that new rule
set implemented, and that new option will not be the default).

We often choose to live with the poor decisions that we might have made on
initial implementation because compatibility is a huge strength of our
platform. A "good" example is the default of STORAGE OBTAIN to be "obtain
the storage in key 0" for a subpool that has multiple keys. That is an
awful default. The implementers did not realize that a "PC" in this case
was closer to the "SVC" GETMAIN than to the key-zero-required branch-entry
GETMAIN.  Once it was "out there" it was too late to change.

A discussion about what would be a good alternate rule set is welcome. Do
so. And submit a requirement for it. But griping about the existing rules
just for the sake of griping is not productive.

Peter Relson
z/OS Core Technology Design 


Re: HLASM "Anomaly"

2017-03-21 Thread MELVYN MALTZ

Hi Steves, and Paul,

Ok, I don't want this argument to get circular


Why not just specify -1

As in:
CLI HERE,-1
CLFI 1,-1
Ok, much easier to code CLFI 1,4X'FF'

Yes...I know why or why not

I have enough support for an RFE to be created, this will probably go to a 
vote in the UK and then be submitted to IBM. It will be up to IBM to judge 
the cost/benefit factors


Let me restate, whatever form the final RFE takes it will not affect current 
code, though it may produce warning messages not previous produced, eg. for 
LHI 1,X'' which has aleady been discussed to death


Melvyn Maltz.

- Original Message - 
From: "Steve Smith" 

To: 
Sent: Tuesday, March 21, 2017 2:18 AM
Subject: Re: HLASM "Anomaly"



On 3/20/2017 20:58, Paul Gilmartin wrote:

Please don't reply with "Subject:...Digest..."

Sorry... I wish I remembered to do that, but I usually don't.


On 2017-03-20, at 17:45, Steve Smith wrote:


Two's-complement is an amazingly great way for binary computers to store
negative numbers.  It is not so great for humans to read or write. 
First

of all, you have to know where the sign bit is, and X expressions are
ambiguous.  If you watch carefully, you'll see that HLASM (almost) 
always
left-fills to 32 bits (with 0s), so if you intend to specify -1, then 
you

must write X''.


Why not just write -1?
I would.  You could.  This was for those who really, really, want to pound 
the square peg into the round hole.



It would have been nice if different conventions were chosen back in the
dark ages, instead of conflating X strings with hex numbers.  But it 
isn't
nice, and you might as well learn how it works, and learn to live with 
it.



The consequences of that have pervaded this thread.
Sure, and there's value in discussing them.  But for generating RFEs and 
requirements, it's appropriate (it's necessary) to consider the costs as 
well as the benefits.  My take (and implication) is that the costs vastly 
outweigh the benefits.


-- gil

sas 


Re: HLASM "Anomaly"

2017-03-19 Thread MELVYN MALTZ

To: Abe and Paul,

Abe is quite right, when I started this thread I didn't realise just how 
many "anomalies" would pop out of the woodwork


LHI 1,X''
LHI 1,X'12345678'

Yes, you get a warning about the 2nd but not the 1st
As Abe said, I would also be drawn to the Programmer's intent, did they mean 
to code LGFI ?


Melvyn.

- Original Message - 
From: "Paul Gilmartin" <0014e0e4a59b-dmarc-requ...@listserv.uga.edu>

To: 
Sent: Saturday, March 18, 2017 10:21 PM
Subject: Re: HLASM "Anomaly"


On 2017-03-18, at 15:41, MELVYN MALTZ wrote:


A fine example is LHI 1,H2 and the next
Both of these assemble without error or warning (that's a big disagree)


Don't you believe -1 is a valid expression to LHI?  Or don't
you believe X'' is -1?

Remember, expressions are typeless.  Would you change that?  How?
That requires a lot of wise design.  What types should exist?  What
types should be allowed to be combined with what operators?

Too much of HLASM came about because someone thought some construct
worked the way he expected and twisted an account rep's arm to make
it so, and didn't care about the chaos this added to the specification.

Compare this with LHI 1,H5 and the next which generate a warning (do we 
need the warning ?)


Yes, since X'' is 65535, and not in the halfword range, -32768 to 
+32767.



- Original Message - From: "Paul Gilmartin"
Sent: Saturday, March 18, 2017 2:10 PM
Subject: Re: HLASM "Anomaly"

For which of these intructions do you agree/disagree with
HLASM's behavior:
...
H2   EQU   X''
   LHI   1,H2
   LHI   1,X''
   DCY(H2)
   DCY(X'')
...
H5   EQU   X''
   LHI   1,H5
   LHI   1,0+X''
   DCY(H5)
   DCY(X'')


-- gil 


Re: HLASM "Anomaly"

2017-03-18 Thread MELVYN MALTZ

Hi Paul,

For which of these instructions do you agree/disagree with HLASM's 
behavior:

It's a good set, even better than mine :-)

The most important thing is "does the coding method make it more readable or 
understandable within the context of the surrounding code ?"

If yes, all valid things must be allowed

Also remember that some of these parameters may be generated from macro 
variables


To get specific:
I can only use the DeZhi mainframe which uses HLASM V5...apologies if V6 
differs


A fine example is LHI 1,H2 and the next
Both of these assemble without error or warning (that's a big disagree)

Compare this with LHI 1,H5 and the next which generate a warning (do we need 
the warning ?)

I used to present students with DC X'5C'. What is it ?
Is it binary 92, or +5 in decimal, or an asterisk ?

Interesting that all of your code, despite E and W messages assemble 
correctly, except the last LHI which has the invalid 2AL1...doh


Melvyn Maltz.

- Original Message - 
From: "Paul Gilmartin" <0014e0e4a59b-dmarc-requ...@listserv.uga.edu>

To: 
Sent: Saturday, March 18, 2017 2:10 PM
Subject: Re: HLASM "Anomaly"


On 2017-03-17, at 17:40, MELVYN MALTZ wrote:


A pity our Emails crossed, with regards to the 2X'FF issue please read my 
latest post
As for the Scon...I agree with you, you must submit a bug report for that 
one



For which of these intructions do you agree/disagree with
HLASM's behavior:
START
H1   EQU   -1
LHI   1,H1
LHI   1,-1
DCY(H1)
DCY(-1)

H2   EQU   X''
LHI   1,H2
LHI   1,X''
DCY(H2)
DCY(X'')

H3   EQU   X''
LHI   1,H3
LHI   1,0+X''
DCY(H3)
DCY(X'')

H4   EQU   65535
LHI   1,H4
LHI   1,65535
DCY(H4)
DCY(65535)
DCH'65535'

H5   EQU   X''
LHI   1,H5
LHI   1,0+X''
DCY(H5)
DCY(X'')

TABLEDC2AL1(*-TABLE)
LHI   1,2AL1(*-TABLE)
END

As I said earlier, I place considerable value on simplicity and
uniformity of syntax rules.  I believe HLASM meets my expectations
well here.

As I also said, I'd welcome additional operators for forming expressions:
AND, OR, XOR, SLL, SLA, SRL, SRA, LT, LE, EQ, NE, GE, and GT.

And 64-bit arithmetic.  I'd not like to see distinct 32-bit and 64-bit
exprssion types,  Rather, all expressions should have 64-bit values.
But a switch to allow compatibility with existing ASMADATA format.

-- gil 


Re: HLASM "Anomaly"

2017-03-17 Thread MELVYN MALTZ

Hi Paul,

A pity our Emails crossed, with regards to the 2X'FF issue please read my 
latest post


As for the Scon...I agree with you, you must submit a bug report for that 
one


Regards,

Melvyn.

- Original Message - 
From: "Paul Gilmartin" <0014e0e4a59b-dmarc-requ...@listserv.uga.edu>

To: 
Sent: Friday, March 17, 2017 11:15 PM
Subject: Re: HLASM "Anomaly"



On 2017-03-17, at 04:44, Martin Ward wrote:


Given that 2X'FF' generates the same two bytes as X'',
there is no reason why we should not be allowed to replace
the latter by the former.


I tend more to be value-oriented.  The operand of MVHHI is an
expression, and it is prudently restricted to the range, [-32768,32767],
even as a Y-constant is.  Expressions can be EQUated.  What should
be the meaning of:
XEQU  2X'FF'
If the value is 65535, that's outside the halfword range and
MVHHI A,X  should fail, as should
DCY(X)

Don't make too many exceptions to too many rules.

One exception I'd like to see removed is, given addressability,
LAR1,=D'3.14'  works OK, while
DCS(=D'3.14')  fails.
Why should a base-displacement be resolvable in an instruction, but
not in an S-constant?  The same code should be used and work for both.

-- gil 


Re: HLASM Anomaly

2017-03-17 Thread MELVYN MALTZ
Hi Martin and Tom, and all others who have contributed

My thanks to Martin for his support

To Tom...this thread originated when I tried to code LLIHF R5,4C'I' and then 
later CIH R5,4C'I' 
When it failed to assemble in z390 I turned to DeZhi and it failed there too
Is that code good, bad or ugly ?
>>>I work as an assembler programmer...can't remember a time...needed to code 
>>>an immediate operand >>>that could have been specified that way if it were 
>>>possible
Welcome to the world of logical 32-bit immediates
I used to sniff at labelled USINGs, there was always another way...I wouldn't 
do without them now
After 52 years of IBM Assembler programming I still have things to learn :-)

And now...
I was inspired by John Ehrman's comment...
>>>constructs like BALR 2FL.41'7',3BL.4'101' -- I guess we never thought of 
>>>documenting that restriction because we >>>never thought someone would try 
>>>it! 
Until now !

Also John Dravnieks expertise...
>>>internally the assembler has an expression processor for instruction 
>>>operands, and it has another one for DC operands - >>>why it is this way I 
>>>do not know
>>>expecting the DC type processing to be done for the instruction operands, 
>>>and getting confused/annoyed/bewildered 
>>>that it does not work that way
Actually, although my initial remit just concerned immediates, I think there 
might be a justification for a single expression processor for both DC and 
instruction operands. This may make HLASM a little more efficient and easier to 
maintain than at present. John can have his bit-length operands and I can have 
my 4C'I' immediate and no-one will ever be confused/annoyed/bewildered ever 
again :-)

None of the rules below would affect the assembly of any existing program

Rule 1...All current DC expressions remain the same...of course
Rule 2...All DC-type expressions can be used in instruction operands as well as 
arithmetic expressions
  Only the rightmost bits of the result will be used according to 
the operand length
   If the result is larger than required for the operand (in 
value), a warning is issued 
   If the result is smaller than required, it is padded left with 
zero-bits 
Rule 3...I would prefer that warnings about arithmetic values being 
out-of-range were removed
  Which of these are not readable ? a) CFI 1,4X'FF' b) CLFI 
1,-1 
  Neither are currently valid
Rule 4...Yeh, John D's comment about J 10, well we still do B *+10
  It's 10 halfwords

I've also noticed that the HLASM output listing is very inconsistent about 
immediate operands, when I've done further research I'll include it in my RFE

Melvyn Maltz.

- Original Message - 
From: "Tom Marchant" <00a69b48f3bb-dmarc-requ...@listserv.uga.edu>
To: 
Sent: Friday, March 17, 2017 9:08 PM
Subject: Re: HLASM "Anomaly"


On Fri, 17 Mar 2017 10:44:41 +, Martin Ward wrote:

>Given that 2X'FF' generates the same two bytes as X'',
>there is no reason why we should not be allowed to replace
>the latter by the former [in an immediate expression].

Maybe so, but I don't see it as a significant limitation. 
Certainly not one that is worth the effort of making HLASM 
behave the way you think it "should".

I work as an assembler programmer and I can't remember 
a time when I needed to code an immediate operand that 
could have been specified that way if it were possible.

-- 
Tom Marchant


HLASM anomaly

2017-02-28 Thread Melvyn Maltz
To restate what I'm asking for...
   Now that we have 2 and 4-byte immediate values it would make sense
   to allow both duplication factor and explicit length for these
   Currently the instructions below would fail
  AHI 1,2X'FF'
  CFI 1,XL4'FF'

   Rather more contentious, I agree, is to imply an explicit length
   of 1, 2, or 4 bytes to any immediate if there were no dup/explicit
   already present

   So, CFI 1,C'9' generates X'00F9' (yuk)
   But if it were forced to have an explicit length it would be
   interpreted as CL4'9'=X'F9404040' which is what you might expect ???
   Ok, I'll be shot down on that one, but I'll still submit it

Steve Thomas---What does "immediate" mean to you ?
   It means a DC-type constant of any form that is only constrained by
   the length of the immediate according to the instruction

Paul Gilmartin---How do you feel about AHI 1,X'00'
   It exceeds the 2 byte limit and therefore invalid
   If the explicit length were to be implemented, then it would
   operate as XL2'00'=X''
   Yes, AHI 1,65535 is valid
   In z390, AHI 1,X'00' is valid
   In DeZhi, it generates but gives a warning

   Yes, it's an HLASM problem, some immediates are logical, some are
   algebraic, it doesn't really matter how the immediate is generated
   provided you get the result you intended

John Ehrman---Immediates are not absolute
   Sorry to disagree, 2X'FF' is just as absolute as X''
   I've always considered the result as definitive, not how we got there

   >>>consider AHI 0,(N)X'F'
   By that stage in the Assembly, it would be known (I hope) that
   AHI takes a 2-byte immediate, if the parsing of the DC-type
   immediate exceeded that, it's an error...no acrobatics needed

Chris Smith---Limits ot 16-bit signed...why examples of unsigned
   Immediates can be logical or algebraic, compare CFI with CLFI
   CLFI 1,-1 is a contradiction, but works !

John Dravnieks---
   Read above stuff, AHI 1,X'' does assemble with a warning

Charles Mills---
   Sorry, but an immediate operand is a unit of storage, the fact that
   it's embedded into an instruction is irrelevant

I'm sure they'll be more flak flying, but I'll wait a few days for the smoke to 
clear before I annoy Sharuff :-)

Mel.



HLASM anomaly

2017-02-22 Thread Melvyn Maltz
Immediate operands won't accept a duplication factor...why not ?
Can't find a reason in the HLASM manual

Try these...
CFI R1,4X'FF'
CFI R1,X''
CFI R1,-1
AHI R1,2X'FF'
AHI R1,X''
AHI R1,-1

Melvyn Maltz


Re: 360/20 instructions

2015-05-25 Thread Melvyn Maltz
You might also like to know of an undocumented instruction specific to the 
360/20.
This was a form of the Diagnose (opcode X'83') which allowed me to read the hex 
dials
on the console into storage.

This was extremely useful as I had the job of converting 1401 Autocoder into 
360/20 Assembler
and this instruction enabled me to replace the sense switches. 

On later machines under DOS I used the UPSI card.

Forgive me, but it's 50 years since I coded one of those and I can't remember 
the operand, but
I'm sure someone will.


Re: Redesigning the Principles of Operation Manual

2014-11-12 Thread MELVYN MALTZ

Hi Joey,

I think you miss the point.

Conciseness is essential.

What I am suggesting is that each instruction is concisely defined.

Start with ADD in Chapter 7, where 15 instructions are concisely compressed 
into a meaningless hotchpotch of description.


Do you think that a student after reading that section would know what ASI 
actually did ?


Mel.

- Original Message - 
From: "Capps, Joey" 

To: 
Sent: Wednesday, November 12, 2014 10:15 PM
Subject: Re: Redesigning the Principles of Operation Manual



Personally I don't think it's design was to save paper.
I think it was to 'be concise'.
And that is what I think it needs to be.

As for reorganizing it into different chapters, that might be useful.
But we cannot afford to have it lose its concise nature.

Joey


-Original Message-
From: IBM Mainframe Assembler List 
[mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Melvyn Maltz

Sent: Wednesday, November 12, 2014 4:04 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Redesigning the Principles of Operation Manual

One can see why the Principles of Operation manual (PoP) was designed in 
its present format...to save paper.


There is now no need to design this manual in a form that was suitable 30 
years ago.


Now that I've restarted teaching Assembler I realise that the PoP neither 
serves the professional learning new instructions or techniques nor the 
student learning for the first time.


The suggestions below have been compiled by myself and contacts and are 
not in any priority order. I offer these in order to stimulate discussion. 
I know IBM monitor this forum as I see names that I know.

IBM can join in as well.

1) Instruction descriptions
  Every instruction must be individually described. No more bunching.

2) Two Manuals
  ---PoP1 describes formats and techniques
  ---PoP2 describes instructions and examples

  Hyperlinks to similar instructions and examples.

3) Classification
  The current classification is inadequate, ie. CVD isn't a decimal 
instruction...there are many others.


  If you have to classify, then here is a suggestion...
  1) Boolean...AND/OR/XOR
  2) BranchBRANCH and PROGRAM
  3) Compare...COMPARE and TEST
 a) Binary
 b) Floating point
 c) Decimal
  4) Conversion...CONVERT/TRANSLATE/UNPACK/EDIT/PACK
 a) Character/Binary/Decimal
 b) Floating point
  5) Cryptography...COMPRESSION/CIPHER/PERFORM
  6) I/O...CHANNEL
  7) Maths
 a) Binary
 b) Floating point
 c) Decimal
  8) Move...PAGE/MOVE/LOAD/STORE/INSERT
  9) Trace..TRACE
 10) Transaction..TRANSACTION
 11) Trap...TRAP
 12) Others

4) An iPoP app that can display an individual instruction with multiple 
cross-references for local use.


5) A Web app to do the same, but has the advantage of being international 
and collective.

  "People who looked up LG also looked up LLGF"

Let the discourse begin.



Redesigning the Principles of Operation Manual

2014-11-12 Thread Melvyn Maltz
One can see why the Principles of Operation manual (PoP) was designed in its 
present format...to save paper.

There is now no need to design this manual in a form that was suitable 30 years 
ago.

Now that I've restarted teaching Assembler I realise that the PoP neither 
serves the professional learning new instructions or techniques nor the student 
learning for the first time.

The suggestions below have been compiled by myself and contacts and are not in 
any priority order. I offer these in order to stimulate discussion. I know IBM 
monitor this forum as I see names that I know.
IBM can join in as well.

1) Instruction descriptions
   Every instruction must be individually described. No more bunching.

2) Two Manuals
   ---PoP1 describes formats and techniques
   ---PoP2 describes instructions and examples

   Hyperlinks to similar instructions and examples.

3) Classification
   The current classification is inadequate, ie. CVD isn't a decimal 
instruction...there are many others.

   If you have to classify, then here is a suggestion...
   1) Boolean...AND/OR/XOR
   2) BranchBRANCH and PROGRAM
   3) Compare...COMPARE and TEST
  a) Binary
  b) Floating point
  c) Decimal
   4) Conversion...CONVERT/TRANSLATE/UNPACK/EDIT/PACK
  a) Character/Binary/Decimal
  b) Floating point
   5) Cryptography...COMPRESSION/CIPHER/PERFORM
   6) I/O...CHANNEL
   7) Maths
  a) Binary
  b) Floating point
  c) Decimal
   8) Move...PAGE/MOVE/LOAD/STORE/INSERT
   9) Trace..TRACE
  10) Transaction..TRANSACTION
  11) Trap...TRAP
  12) Others

4) An iPoP app that can display an individual instruction with multiple 
cross-references for local use.

5) A Web app to do the same, but has the advantage of being international and 
collective.
   "People who looked up LG also looked up LLGF"

Let the discourse begin.