D

2019-06-25 Thread glen herrmannsfeldt
Someone wrote: > Thought it was a double word > As in DS D It is a doubleword, specifically a long (64 bit) floating point type. And yes, DS D and DS 0D are commonly used when floating point is not intended. And as Fortran programmers would know, E is the short (32 bit) fl

debuggers

2018-08-06 Thread glen herrmannsfeldt
Bernd wrote: > We also had a self-written batch debugger, which relied completely on > S0C1 and SPIE to do its instrumentation and implement the breakpoints; > at least in the first version. Reminds me of a debugger I used with Orvyl/370 in S/370 days. I believe it used SVC 255 for breakpoint

S0C1

2018-08-06 Thread glen herrmannsfeldt
Shmuel (Seymour J.) Metz wrote: > No; it is guarantied to generate a program 001 interrupt. > You only get an ABEND S0C1 if there is no SPIE/ESPIE exit. I suspect that some use S0C1 as shorthand, and as you note incorrect, description for program interrupt 1.j It might be that some SPIE routines

Re: Count Words?

2018-06-14 Thread glen herrmannsfeldt
Nothing against discussions on how to write fast code, but I don’t believe that this is normally necessary. About 20 years ago, I was counting words, not just how many, but how many of each word, on gigabytes of text. (Full text US patents for two years.) I did it in Java (with JIT compiler o

Re: SDWA - SDWACMPC conversion

2018-04-16 Thread glen herrmannsfeldt
> Maybe I'm missing something, as this is a bit trickier than the usual > shlop, but wouldn't it be more efficient to OI the last byte of &TARGET > with x'F0', and skip the MVZ? Using =C'0123...'-C'0' for the TR table of > course. Maybe you are planning to do this a few billion times. Otherwis

Re: Load module

2017-11-14 Thread glen herrmannsfeldt
> Yes. My question was "In a called module, how do we determine > if it was called dynamically or statically” The whole design, since OS/360, is that you don’t. If you want to know, pass an argument to the load module that has a different value for the dynamic case. Using LINK, your module is

Re: Load module

2017-11-12 Thread glen herrmannsfeldt
> Sorry for the confusion caused. I strongly agree this is a basic question > and I too understand the Static, all the loads will be loaded in to main > memory and the load will be placed in to the main memory during execution > time, Dynamic. We can give Call macro and Load macro for the same. My

posix time epoch

2015-10-28 Thread glen herrmannsfeldt
For those doing time conversion, posix (used by most unix systems) uses the epoch of Jan. 1st, 1970. To convert from Jan 1st, 1900 to 1970, add -2208988790 seconds. I found this from: http://www.epochconverter.com/ But otherwise, it is 70 years with 17 leap days. -- glen

Assembler callable analogue of C/C++ time()

2015-10-28 Thread glen herrmannsfeldt
> SRLG uses a "source" and "target" register as well as #bits. > STCKE MILLSECS > LG R1,MILLSECS # IGNORE SECOND DOUBLE WORD > SRLG R1,R1,5 # SCOOT RIGHT 5 BITS > DSGF R1,=F'100' # DIVIDE BY A MILLION > CGHI R0,5

Re: Question of curiosity: Why are IVSK and TPROT instrictions privileged?

2015-10-26 Thread glen herrmannsfeldt
As mentioned previously, the ability to virtualize depends on instructions that can tell problem from supervisor state need to trap in problem state. The instruction I remember wondering most about when I was first learning S/370 assembler is STIDP. But that was before I knew about virtualizatio

Re: Branch Table

2015-10-04 Thread glen herrmannsfeldt
Remembering how the bits are stored in the FAT12 table, you could alternate between entries with the A first and last. It makes the table lookup code slightly more complicated, but allows for aligned A entries. This probably only makes sense for really big tables with hundreds or thousands of ent

Re: Branch table

2015-10-02 Thread glen herrmannsfeldt
> "Tony Harminc" wrote: (snip) >L R14,R4 (snip) > This sets R14 to the address of the adcon in the entry you just found > in the table (or it would if the above-mentioned boundary alignment > problem wasn't there). You need No, this loads R14 from an address ne

Re: local labels

2015-07-02 Thread glen herrmannsfeldt
As well as I know it, Macro-11, the assembler for the PDP-11, has local labels with the scope delimited by non-local labels. From: https://en.wikipedia.org/wiki/MACRO-11 .TITLE HELLO WORLD .MCALL .TTYOUT,.EXIT HELLO:: MOV #MSG,R1 ;STARTING ADDRESS OF STRING 1$: MOVB

local labels

2015-07-02 Thread glen herrmannsfeldt
someone wrote: > I was raised to do single-instruction branches thus: > TM FLAG,BIT Is the flag bit set? > BO*+8Yes, skip next instruction > L R15,SOMEVALNo, get the value > *+8 DS0H > Yes, of course I realize

360/20 instruction macros

2015-05-26 Thread glen herrmannsfeldt
OK, here are the macros as I use them, with the test for host machine removed. They come from the HRTPB360 program that is part of HASP. Note that OS/360 assemblers support BAS and BASR, possibly for the 360/67. -- glen *** V00

BASR

2015-05-25 Thread glen herrmannsfeldt
(someone wrote) "I may be wrong but I have the Impression hat the 360/20 version of BAS/BASR (that machine's equivalent to BAL/BALR had a different op code from the current BAS/BASR." I have assembled BAS and BASR with the Tachyon assemmbler with the right X'4D' and X'0D' opcodes. I

360/20 instructions

2015-05-21 Thread glen herrmannsfeldt
The detail on the instructions are in: httt://www.bitsavers.org/pdf/ibm/360/funcChar/A26-5847-3_360-20_funChar_Apr67.pdf The HRTBP360 program that IBM still distributes, I am told, with HASP, uses macros for the 360/20 specific instructions. (It was written to assembler with OS/360 or OS/VS2 ass

unusual instructions

2015-05-21 Thread glen herrmannsfeldt
"The OP said he was working with code for a model 20." That was only barely a true S360 and had a few instructions peculiar to it." Yes. XIO is the I/O instruction that reads or writes. Like other 360's, I/O is asynchronous. You have to test (with TIOB) to see if it is done yet. With 8K

absolute addressing, continued

2015-05-20 Thread glen herrmannsfeldt
Thanks all for the help with this one. I have known for a long time that the assembler could generate absolute addresses, but never asked why. For those still following, here is the program that reads the object deck: BASR 11,0-2: 0DB0 XIO 78(19,11),80 0: D012B04E0

absolute addressing

2015-05-18 Thread glen herrmannsfeldt
(snip, I wrote) >>I wonder if USING 0,0 and USING 4096,1 should work correctly. >What are you trying to accomplish? There are three forms of USING, >and all three require an address as the first operand. This is given as >a label to tell the assembler that the address of that label is in the >r

absolute addressing

2015-05-16 Thread glen herrmannsfeldt
Roger wrote: > I don't think R0 has ever worked as a base register. Try another. (after I wrote) >> I wonder if USING 0,0 and USING 4096,1 should work correctly. >> I have tried it with START 1000, and START 5000, respectively, >> such that addresses are in the appropriate range, but, using >>

absolute addressing example doesn't work

2015-05-15 Thread glen herrmannsfeldt
In the HLASM release 5 manual, there is an example: "If a register is specified with base address zero, the assembler will use it in preference to the default use of register zero. For example: | USING 3,0 | LA 7,5 | generates the instruction X'41703005'; in the absence of

USING 0,0

2015-05-15 Thread glen herrmannsfeldt
I wonder if USING 0,0 and USING 4096,1 should work correctly. I have tried it with START 1000, and START 5000, respectively, such that addresses are in the appropriate range, but, using the Tachyon assembler, get addressability errors. Or maybe there is an assembler option to allow this that I d

Re: Option to Prevent Data Loss Due to Truncation of Nominal Value

2015-05-01 Thread glen herrmannsfeldt
Seems to me what would be nice is a way to use the length of the second operand as the length for MVC or CLC. If you are copying into a buffer, it is the length of the source, not the length of the buffer, that you want to use. Once you do that, the given problem goes away. (You might then want

Intel Virtualization

2015-03-25 Thread glen herrmannsfeldt
> As for the ISA, Intel seems to be very "ad hoc" compared to the z > architecture. Especially in the virtualization arena. Basically, > the z has a _single_ virtualization instruction: SIE. > Intel has I don't know how many different versions of different > instructions to let hypervisors run a

Re: TOD

2015-03-24 Thread glen herrmannsfeldt
"Thanks you all very much, and I didn't realize it was in micro seconds. Thanks for that info." Bit 51 is in microseconds, so times 4096,or 2**(63-51). So, 5 seconds is 5*1000*1000*4096 or, as someone else indicated, X'4C4B4' Note that bit 31 is not so far from one second, being 2**20

Re: CE key

2015-03-12 Thread glen herrmannsfeldt
Here are pictures of the key switch: https://commons.wikimedia.org/wiki/File:Customer_Engineer_Key_Switch_for_IBM_S-360_computer,_view_1.JPG https://commons.wikimedia.org/wiki/File:Customer_Engineer_Key_Switch_for_IBM_S-360_computer,_view_2.JPG

Re: CE key

2015-03-11 Thread glen herrmannsfeldt
> If you're talking about the CE key that switched metering from > customer to IBM, I have no idea. Those were a real pin-tumbler lock; > not just a simple latch. They may even have been unique to each > machine, though I think it would've been impractical to have each CE > carry a jangling bunch o

CE key

2015-03-11 Thread glen herrmannsfeldt
I wonder if anyone knows where to find CE keys for S/360 CPUs. thanks, -- glen

new instructions (was: LZRG ...)

2015-03-11 Thread glen herrmannsfeldt
(snip, someone wrote) >> And POPCNT is another one. Why do I need to >> know the number of 1 bits in each individual byte in a GPR? On 2015-03-11, at 08:49, John McKown wrote: > Because CDC had it first? I suspect that it became a built-in > function in Pascal, CARD(), because Pascal was dev

Reference summary for 360/20

2014-11-14 Thread glen herrmannsfeldt
The mention of instruction sets and green cards reminds me, does anyone have a (scan of) a 360/20 Reference Summary? Some places indicate that it might be yellow or red. -- glen

Decimal intructions, was: Redesigning POps.

2014-11-14 Thread glen herrmannsfeldt
Gary wrote: > I have heard that only one machine was ever delivered without the > decimal set, but it may have just been rumour. All the 360/91's were delivered without the decimal instructions. The OS emulates them when the illegal instruction exception is generated. But maybe you meant only

Trial execution

2014-05-20 Thread glen herrmannsfeldt
Someone wrote: "The problem with TRT is it validates the whole TRT table before it starts to do the TRT." As far as I know, TR, but not TRT, can do a trial execution. First, it is only needed if the translate table starts within 256 bytes before a page boundary. But it is needed for TR, as

architecture book

2014-02-17 Thread glen herrmannsfeldt
My favorite book describing the variety of computer architectures is the Blaauw & Brooks book. Many of the examples have a little more detail for S/360 and S/370, but they have all of the important details for many other older and newer systems. Otherwise, the previously mentioned book seems to be

Re: OT: SI units and precision

2014-01-06 Thread glen herrmannsfeldt
Someone wrote: > At least that explains I don't need to worry that km is > not suddenly 1024m as soon as I carry a storage device ;-) Reminds me that I used to wonder if IBM sold computers in units of $1024, that is, k$. I presume everyone here knows that the serial numbers on S/370 CPUs are in

Re: Why is division by zero permitted?

2013-10-23 Thread glen herrmannsfeldt
>From C28-6514-5 on bitsavers, on page 16: "Division by zero is permitted and yields a zero result." After that, (and presumably also earlier) it has to stay that way as code (macros) might depend on that. There is no reason given. -- glen

Re: handling a remainder form a DP

2013-07-18 Thread glen herrmannsfeldt
> My result from a DP in dividing 1300 by 3 is 00 00 00 43 3C 00 1C > but on a calculator it is displayed as 433.3 - which is what > I want to display in a field on a screen. How do I turn that > remainder of 1C into the decimal value ? You should have enough to do it as scaled decimal. Consi

Re: Instruction Lists/Counts.

2013-02-15 Thread glen herrmannsfeldt
Instructions are hard to count, though instruction count isn't a very good way to determine CISCness. RISC tends to have a small number of instruction lengths, often 1. S/360 through z/ have three lengths. Not too CISCy, but not RISC. (VAX might have 14 or so, from one byte on up.) RISC tends to

Re: OPSYN self execution

2013-01-18 Thread glen herrmannsfeldt
Jonathan Scott wrote: > If you want to modify DC, you need to define an opcode which > refers to the original DC first so that you can invoke it from > within the macro. > DC_ OPSYN DC Set up alias for original DC > DC OPSYN MYDCRedirect DC to my macro > Then within the macro

DS 0H

2012-06-04 Thread glen herrmannsfeldt
(snip, I wrote) >> But, why the DS 0H instead of putting the label on the LM? > I do the same thing for "labels" to "code". Why? Hum, I guess > from reading the HASP code long ago. Also, it makes it > easier to insert a new instruction at that logical point in > the program without remembering to

more than one base register

2012-06-04 Thread glen herrmannsfeldt
Someone wrote: > MYCSECT CSECT > USING *,R15 > B BYID > ID DCC'module-name' > BASESDCA(MYCSECT) > DCA(MYCSECT+4096) > DCA(MYCSECT+2*4096) > DCA(MYCSECT+3*4096) > BYID DS0H > LMR9,R12,BASES >

bit masking

2012-05-28 Thread glen herrmannsfeldt
> I am working with some IPv6 addresses that are 128 bits long. > The input to the program is an ip name or address and the > number of high bits that I need to use for a compare against > another ip address. > So, I want to create run time routine to build the a > 16 byte 'and' bit field based on

Re: MNEMONICS

2012-02-13 Thread glen herrmannsfeldt
(someone wrote) > IHMO, the mnemonic for BCT was not well-chosen. > Better might have been DBZ > for Decrement and Branch on Zero. That would be Decrement and Branch on Not Zero, DBNZ, and also DBNZR. Sounds too much like DEC to me.(*) I believe none of the S/360 instructions are more than f

Re: How bad is the EX instruction?

2012-01-13 Thread glen herrmannsfeldt
> For short EX MVC's the burden of getting stuff in the right registers > makes MVCL less interesting. As I understand it, and doesn't seem to have been mentioned, the big effect on EX has to do with caching. I believe that it should be near code and not data. (That is, it goes into the instructio

Underscore character

2012-01-12 Thread glen herrmannsfeldt
(snip, someone wrote) > You've sometimes admonished me for taking the synchronic view > rather than the diachronic. But here, you're being narrowly > synchronic. In the Bad Old Days of Yore, mechanical serial > printers could be commanded to underscore with the sequence > . In this > diachronic

Re: FORTRAN II functions

2012-01-08 Thread glen herrmannsfeldt
(snip, someone wrote) > o IBM hexadecimal floating-point, HFP, > o ANSI binary floating-point, BFP, and > o ANSI decimal floating-point, DFP. > Of these the first two, HFP and BFP, make zeros positive; but the > third, DFP, supports both positive and negative zeros. The change to the Fortran s

Fortran II functions

2012-01-07 Thread glen herrmannsfeldt
> Finally, ISTR, but can find no references, that FORTRAN II had > a two argument SGNF(X,Y) defined as the magnitude of X with the > sign of Y. A plausible motivation is this was a single machine > instruction on the IBM 70x series -- doubleword shift with a > count of zero. The SIGN function is

Re: calling convention

2011-10-16 Thread glen herrmannsfeldt
(snip, I wrote) >> The OS/360 Fortran compilers (G and H) make local copies of scalar >> variables, and then copy them back before return. (Usually >> described as call by value result.) That is legal Fortran. > FORTRAN tries pretty hard to accommodate the idiosyncrasies > of various implementat

calling convention

2011-10-14 Thread glen herrmannsfeldt
(someone wrote) > My understanding is that the C standard calls for all parameters > to be passed by value. My experience is that IBM's C usually > passes parameters by reference except that if a parameter is a > pointer it gets passed by value. Go figger. That is most consistent with the way it

Re: EDIT instruction

2011-09-02 Thread glen herrmannsfeldt
(previously I wrote) >> The book "Computer Architecture: Concepts and Evolution" by >> Blaauw and Brooks has many descriptions on how instructions got >> to be the way they did. >> (Blaauw was the main designer of S/360... > I thought that Gene Amdahl was the principle architect of 360. > A searc

Instruction selection

2011-08-30 Thread glen herrmannsfeldt
Someone wrote: > Should we have machine instructions to compute a polynome of grade n? > I don't think so (but there were machines in the 60s which did just that, > and - in that period - they were faster by using such instructions). VAX had polynomial evaluation in the 1980's, and it was well kn

Re: EDIT instruction

2011-08-30 Thread glen herrmannsfeldt
>(after I wrote) >> The book "Computer Architecture: Concepts and Evolution" by >> Blaauw and Brooks has many descriptions on how instructions got >> to be the way they did. >> The book covers a wide variety of machines, though S/360 is >> a favorite example. (Blaauw was the main designer of S/3

Edit instruction

2011-08-30 Thread glen herrmannsfeldt
The book "Computer Architecture: Concepts and Evolution" by Blaauw and Brooks has many descriptions on how instructions got to be the way they did. The book covers a wide variety of machines, though S/360 is a favorite example. (Blaauw was the main designer of S/360, so it isn't so surprising.)

Re: Any ideas on how to know if a DDNAME is input or output?

2010-09-01 Thread glen herrmannsfeldt
The reminds me of some problems with Fortran many years ago. (Before OPEN was added, though I believe it is still optional.) It seems that Fortran opens the DDNAME for INOUT by default. That is true even if the first operation is READ, as one is allowed to REWIND (or BACKSPACE) and then WRITE. Th

Re: CDS and alignment question

2010-08-17 Thread glen herrmannsfeldt
It is the address in memory that matters. This reminds me of programs with two base registers, using LA to set the registers such that the offset of the second is 4095 from the first. All instruction addresses (an branch instructions) will then have an odd offset, legal but it looks funny. On th