Sign in Join
Wiki copytemporary

ZSeries/Part 4: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11*[[ZSeries|Go back to zSeries]]* — [[ZSeries/Part 3|Go Back to Part 3]] — [[ZSeries/Part 5|Go Forward to Part 5]]
22
33These observations were contributed by Paul "kerravon86" via the Hercules-390 mailing list, in response to the January/February 2012 thread in fpc-devel. Paul is responsible for the unofficial /380 Hercules patches and for the port of GCC to IBM OSes including MVS.
44
55They are posted here with minimal editing or comment lest they be lost.
66
77------------------------------------------------------------------------
88
99Anyway, here are some interesting topics:
1010
1111<http://lists.freepascal.org/pipermail/fpc-devel/2012-January/028050.html>
1212
1313"if for no other reason than to keep C from being the only choice for developing programs on mainframes"
1414
1515Language wars - cool!
1616
1717<http://lists.freepascal.org/pipermail/fpc-devel/2012-January/028052.html>
1818
1919Interesting that mainframes are relatively immune from hacking.
2020
2121<http://lists.freepascal.org/pipermail/fpc-devel/2012-January/028054.html> <http://lists.freepascal.org/pipermail/fpc-devel/2012-January/028192.html>
2222
2323I read the link about the S370 being "broken", and I don't agree. S370 works fine. The "issue" about functions that are more than 4K in size being slower is not an issue in practice, because even if that were true, most functions do not exceed 4K anyway. At least from my experience with the GCC code.
2424
2525And even if GCC 4 doesn't support the older S370, GCCMVS 3.2.3 does, so I don't see an issue.
2626
2727<http://lists.freepascal.org/pipermail/fpc-devel/2012-January/028055.html>
2828
2929I don't agree that using S370 instructions is like using 8086 instructions when you have an 80386 available. The fact is that S370 provides everything required to produce 31-bit executables that run ATL with more than 16 MiB of memory on z/OS, while still running as 24-bit on MVS 3.8j.
3030
3131You can't compare that to a 16-bit 8086 and a 32-bit 80386.
3232
3333<http://lists.freepascal.org/pipermail/fpc-devel/2012-January/028063.html>
3434
3535With regard to CSECTS - I strongly suggest that you look at GCCMVS-generated code and stick to that. Which includes blank CSECTS. If you try automatically naming CSECTS, then when you have a name clash, you will not get a linker error. The bigger CSECT will just replace the smaller CSECT silently (from memory).
3636
3737I would also recommend taking a look at the MVSSUPA code in PDPCLIB. I believe that that code should support Pascal completely unchanged.
3838
3939Another comment I have is that if you wish to use S390 instructions to make life easier, it would be good if you could stick to instructions that fall into the list below, since those instructions are available in S380, even though they're not in S370, so your Pascal programs will still run under MVS 3.8j.
4040
4141BFN. Paul.
4242
4343/* The following ESA/390 features can be retrofitted to S/370 and
4444
45-`  may be activated if desired by uncommenting the appropriate`\
46-`  define statements below and performing a complete rebuild */`
45+```text
46+ may be activated if desired by uncommenting the appropriate
47+ define statements below and performing a complete rebuild */
48+```
4749
48501. define FEATURE_BASIC_FP_EXTENSIONS
49512. define FEATURE_BINARY_FLOATING_POINT
50523. define FEATURE_CHECKSUM_INSTRUCTION
51534. define FEATURE_COMPARE_AND_MOVE_EXTENDED
52545. define FEATURE_COMPRESSION
53556. define FEATURE_EXTENDED_TRANSLATION
54567. define FEATURE_EXTENDED_TRANSLATION_FACILITY_2
55578. define FEATURE_HFP_EXTENSIONS
56589. define FEATURE_HFP_MULTIPLY_ADD_SUBTRACT
575910. define FEATURE_HFP_UNNORMALIZED_EXTENSION
586011. define FEATURE_IMMEDIATE_AND_RELATIVE
596112. define FEATURE_SQUARE_ROOT
606213. define FEATURE_STRING_INSTRUCTION
6163
6264/* The following ESAME features can be retrofitted to S/370 and
6365
64-`  may be activated if desired by uncommenting the appropriate`\
65-`  define statements below and performing a complete rebuild */`
66+```text
67+ may be activated if desired by uncommenting the appropriate
68+ define statements below and performing a complete rebuild */
69+```
6670
67711. define FEATURE_ESAME_N3_ESA390
68722. define FEATURE_ETF2_ENHANCEMENT
69733. define FEATURE_ETF3_ENHANCEMENT
70744. define FEATURE_EXECUTE_EXTENSIONS_FACILITY
71755. define FEATURE_EXTENDED_IMMEDIATE
72766. define FEATURE_EXTENDED_TRANSLATION_FACILITY_3
73777. define FEATURE_GENERAL_INSTRUCTIONS_EXTENSION_FACILITY
74788. define FEATURE_LONG_DISPLACEMENT
75799. define FEATURE_MESSAGE_SECURITY_ASSIST
768010. define FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_1
778111. define FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_2
788212. define FEATURE_PARSING_ENHANCEMENT_FACILIT
7983
8084
8185*[[ZSeries|Go back to zSeries]]* — [[ZSeries/Part 3|Go Back to Part 3]] — [[ZSeries/Part 5|Go Forward to Part 5]]
8286
8387---
8488*From the Free Pascal wiki, page "ZSeries/Part 4", as it stood on 2015-10-28 after a change by FTurtle, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
8589Category: High-performance computing
8690Category: Mainframes

Back to history