diff --git a/.gitignore b/.gitignore index 45d9c16c0..14699bab0 100644 --- a/.gitignore +++ b/.gitignore @@ -184,6 +184,7 @@ soa/demo/DEMOCMGR.[mM][lL][cC] soa/demo/DEMOMAIN.[mM][lL][cC] soa/demo/DEMOSUB1.[mM][lL][cC] soa/demo/DEMOSUB2.[mM][lL][cC] +vse/demo/DEMOVSE3.[tT][fF] zcobol/demo/COMPSUM.[mM][lL][cC] zcobol/demo/COPYFILE.[mM][lL][cC] zcobol/demo/COPYFILE_OLD.[mM][lL][cC] diff --git a/barcode/BLD390.BAT b/barcode/BLD390.BAT index f021262e5..c32070cfa 100644 --- a/barcode/BLD390.BAT +++ b/barcode/BLD390.BAT @@ -1,4 +1,4 @@ rem asml routines -call asm linklib\barcode\encodetr sysmac(+linklib\barcode) syscpy(+linklib\barcode) %1 %2 %3 %4 -call asml linklib\barcode\s4bcdrva sysmac(+linklib\barcode) syscpy(+linklib\barcode) %1 %2 %3 %4 -copy linklib\barcode\*.390 linklib +call bat\asm barcode\encodetr sysmac(+barcode) syscpy(+barcode) %1 %2 %3 %4 +call bat\asml barcode\s4bcdrva sysmac(+barcode) syscpy(+barcode) %1 %2 %3 %4 +copy barcode\*.390 linklib diff --git a/bat/BLDJAR.BAT b/bat/BLDJAR.BAT index 2d02efe1a..cc059d86e 100644 --- a/bat/BLDJAR.BAT +++ b/bat/BLDJAR.BAT @@ -1,6 +1,9 @@ @if /I "%1" == "tron" (echo on) else (echo off) rem create z390 jar file from sources -rem unless NoDocs is specified as an argument, generate javadoc files +rem A single parameter is allowed: +rem - NoDocs specifies to suppress generating javadoc files +rem - Debug specifies to generate jar with debug enabled +rem --> the default is to generate javadoc and suppress debug info setlocal if /I "%1" == "tron" (set z_TraceMode=tron @@ -31,8 +34,9 @@ copy src\*.java jar copy src\z390.man jar cd jar rem compile z390 java sources to class vm object code +if /I %1. EQU Debug. (set jvopt=-g) else (set jvopt=-g:none) java -version -javac.exe -g:none *.java +javac.exe %jvopt% *.java set z_ReturnCode=%ERRORLEVEL% if %z_ReturnCode% NEQ 0 (echo %0 ERROR: Error compiling z390 java sources goto return diff --git a/doc/contributing/contribute_code.md b/doc/contributing/contribute_code.md index b36f35f56..06de23566 100644 --- a/doc/contributing/contribute_code.md +++ b/doc/contributing/contribute_code.md @@ -69,8 +69,10 @@ The test scripts are in subdirectory z390test\src\test\groovy\org\z390\test Action | Command ------------------------------------------|------------ -get a list of gradlew command options | gradlew --help -force a test run | gradlew test -—rerun +get a list of gradlew command options | `gradlew --help` +force a test run | `gradlew test --rerun` +run a specific test/testset | `gradlew test --tests 'pattern'` +run all zCobol tests | `gradlew test --tests '*cbl*'` ## Proposing new functionality @@ -245,15 +247,15 @@ git documentation:https://git-scm.com/doc Action | Command ------------------------------------------|------------ -get list of available commands | git help -get syntax details for a git command | git help -create local clone of git repo | git clone -review status of current branch | git status -get list of all defined branches | git branch -v --all -prepare commit | git add . -commit a set of changes | git commit -m"desriptive comments" -push changes to your own fork | git push -graphical display of branches | git log --graph --oneline --decorate --all --- > when viewing the bracnches displayed | to scroll 1 line, to scroll a page, q to quit -go 'back in time' to a specific commit | git branch -f [] - | git switch +get list of available commands | `git help` +get syntax details for a git command | `git help ` +create local clone of git repo | `git clone ` +review status of current branch | `git status` +get list of all defined branches | `git branch -v --all` +prepare commit | `git add .` +commit a set of changes | `git commit -m"descriptive comments"` +push changes to your own fork | `git push` +graphical display of branches | `git log --graph --oneline --decorate --all` +-- > when viewing the bracnches displayed | ` to scroll 1 line, to scroll a page, q to quit` +go 'back in time' to a specific commit | `git branch -f []` + | `git switch ` diff --git a/doc/reference/soa_services.md b/doc/reference/soa_services.md index 72a807603..668651175 100644 --- a/doc/reference/soa_services.md +++ b/doc/reference/soa_services.md @@ -182,6 +182,7 @@ GENRUN= | name of the generated run command file | #### Usage +``` SOAGEN MAIN=DEMOMAIN, MAIN CLIENT APPLICATION PGM X CLIENT=DEMOCMGR, SOA CLIENT MSG MGR NAME X SERVER=DEMOSMGR, SOA SERVER MSG MGR NAME X @@ -194,6 +195,7 @@ GENRUN= | name of the generated run command file | GENBLD=DEMOBLD, GENERATED BUILD BAT FILE X GENRUN=DEMORUN GENERATED RUN BAT FILE END +``` The above SOA application generation macro call generates server message manager DEMOSMGR to run on the same host as client using diff --git a/doc/reference/zCOBOL_NIST_COBOL_1985_Test_Results.md b/doc/reference/zCOBOL_NIST_COBOL_1985_Test_Results.md index 2a4158a9a..8433dff8b 100644 --- a/doc/reference/zCOBOL_NIST_COBOL_1985_Test_Results.md +++ b/doc/reference/zCOBOL_NIST_COBOL_1985_Test_Results.md @@ -96,25 +96,25 @@ ZPAR utility commands: call zpar\ZPARSUM2 \work\nist\src\*.ERR ``` -| | |XLAT |XLAT |ASM |ASM |ASM |EXEC |EXEC | -|ID |TOT |RC=0 |RC>0 |RC<=4 |RC=8 |RC>8 |RC=0 |RC>0 | -|------|-----|-----|-----|------|-----|-----|-----|-----| -|CM | 7 | 7 | 0 | 0 | 7 | 0 | 0 | 0 | -|DB | 10 | 10 | 0 | 0 | 10 | 0 | 0 | 0 | -|EX | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | -|IC | 35 | 35 | 0 | 26 | 9 | 0 | 7 | 7 | -|IF | 42 | 42 | 0 | 0 | 42 | 0 | 0 | 0 | -|IX | 38 | 38 | 0 | 0 | 38 | 0 | 0 | 0 | -|NC | 92 | 92 | 0 | 18 | 72 | 0 | 2 | 18 | -|OB | 9 | 9 | 0 | 3 | 6 | 0 | 0 | 2 | -|RL | 32 | 32 | 0 | 0 | 32 | 0 | 0 | 0 | -|RW | 4 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | -|SG | 10 | 10 | 0 | 0 | 10 | 0 | 0 | 0 | -|SM | 7 | 7 | 0 | 1 | 6 | 0 | 0 | 1 | -|SQ | 82 | 82 | 0 | 0 | 82 | 0 | 0 | 0 | -|ST | 39 | 39 | 0 | 0 | 39 | 0 | 0 | 0 | -|------|-----|-----|-----|------|-----|-----|-----|-----| -|Total |408 | 408 | 0 | 48 | 358 | 0 | 9 | 28 | +| | |XLAT |XLAT |ASM |ASM |ASM |EXEC |EXEC | +|ID |TOT |RC=0 |RC>0 |RC<=4 |RC=8 |RC>8 |RC=0 |RC>0 | +|------|-----|-----|--------|---------|-----|--------|-----|--------| +|CM | 7 | 7 | 0 | 0 | 7 | 0 | 0 | 0 | +|DB | 10 | 10 | 0 | 0 | 10 | 0 | 0 | 0 | +|EX | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | +|IC | 35 | 35 | 0 | 26 | 9 | 0 | 7 | 7 | +|IF | 42 | 42 | 0 | 0 | 42 | 0 | 0 | 0 | +|IX | 38 | 38 | 0 | 0 | 38 | 0 | 0 | 0 | +|NC | 92 | 92 | 0 | 18 | 72 | 0 | 2 | 18 | +|OB | 9 | 9 | 0 | 3 | 6 | 0 | 0 | 2 | +|RL | 32 | 32 | 0 | 0 | 32 | 0 | 0 | 0 | +|RW | 4 | 4 | 0 | 0 | 4 | 0 | 0 | 0 | +|SG | 10 | 10 | 0 | 0 | 10 | 0 | 0 | 0 | +|SM | 7 | 7 | 0 | 1 | 6 | 0 | 0 | 1 | +|SQ | 82 | 82 | 0 | 0 | 82 | 0 | 0 | 0 | +|ST | 39 | 39 | 0 | 0 | 39 | 0 | 0 | 0 | +|------|-----|-----|--------|---------|-----|--------|-----|--------| +|Total |408 | 408 | 0 | 48 | 358 | 0 | 9 | 28 | Notes: 1. *The total NIST COBOL 1985 test suite includes 459 programs.* diff --git a/doc/user_guide/z390/commands.md b/doc/user_guide/z390/commands.md index d796fbc70..1fd380313 100644 --- a/doc/user_guide/z390/commands.md +++ b/doc/user_guide/z390/commands.md @@ -110,5 +110,5 @@ The ez390 emulator supports the following interactive test commands when the * `* addr` = hex.,+-hex, *+-hex, dec, nnr% (24 bit), nnr? (31 bit) * `* reg` = nnr where nn = 0-15 * `* sdt` = self defining term (b'01',c'ab',f'1',h'2',x'ff') -* `* ??` = break compare operator (=,!=,<,<=,>,>=) +* `* ??` = break compare operator (=,!=,<,<=,>,>=) diff --git a/doc/user_guide/z390/z390_options.md b/doc/user_guide/z390/z390_options.md index 7a34caa81..d7d6c71ee 100644 --- a/doc/user_guide/z390/z390_options.md +++ b/doc/user_guide/z390/z390_options.md @@ -21,36 +21,37 @@ The scope value details where the option is used. Option | Scope | Default | Description -------|-------|---------|-------------- -@filename | MALE | Options in Z390.OPT file if found. | Retrieve additional options from free form text file with default suffix OPT.  Options can be specified delimited by spaces on as many lines as required.  All characters on a line following * are ignored as comments. The @file option can be nested.  The default path is the program path.  If a file named Z390.OPT exists in the z390 install directory, these options will be applied first as default options. -ALIGN | A | YES | Align DS/DC data fields based on type unless explicit length is specified.  If duplication factor is 0, then NOALIGN is ignored. -ALLOW | M | NO | Allow extensions to HLASM syntax including:
1) No quotes required for SETC variables.
2) Duplication factor does not require (..).
3) Array declarations with variables in expression accepted
4) Substring starting beyond end returns null string
5) Quoted strings allowed in SETA and SETB expressions
6) Allow &var as null string if not found during substitution
7) Allow duplicate local and global variable declarations
8) Allow AREAD and PUNCH file records greater than 80 characters. 
The default of NOALLOW insures HLASM compatibility. +@filename | MALE | Options in Z390.OPT file if found. | Retrieve additional options from free form text file with default suffix OPT. Options can be specified delimited by spaces on as many lines as required. All characters on a line following * are ignored as comments. The @file option can be nested. The default path is the program path. If a file named Z390.OPT exists in the z390 install directory, these options will be applied first as default options. +ALIGN | A | YES | Align DS/DC data fields based on type unless explicit length is specified. If duplication factor is 0, then NOALIGN is ignored. +ALLOW | M | NO | Allow extensions to HLASM syntax including:
1) No quotes required for SETC variables.
2) Duplication factor does not require (..).
3) Array declarations with variables in expression accepted
4) Substring starting beyond end returns null string
5) Quoted strings allowed in SETA and SETB expressions
6) Allow &var as null string if not found during substitution
7) Allow duplicate local and global variable declarations
8) Allow AREAD and PUNCH file records greater than 80 characters.
The default of NOALLOW insures HLASM compatibility. AMODE24 | LE | NO | Set 390 load module options to start in 24 bit address mode. AMODE31 | LE | YES | Set 390 load module options to start in 31 bit address mode. -ASCII | AE | NO | Generate ASCII versus EBCDIC DC character constants, compare character strings in ASCII versus EBCDIC in macro processor, generate ASCII versus EBCDIC output for UNPK, ED, and EDMK. Note ASCII mode is not mainframe compatible and requires careful review of program to insure no EBCDIC immediate compare constants such as X'40', 64, X'F0', 240 etc. are used and that there are no assumptions about EBCDIC versus ASCII collating sequences which have numbers and letters reversed, and EBCDIC letters are non-contiguous. Typically HLASM compatible programs are run in default EBCDIC mode and DCB RECFM=FT\|VT or some other translation option is used to convert between EBCDIC and ASCII where necessary.  Note there are a few instructions affected by ASCII mode:
1) ED/EDMK generate ASCII versus EBCDIC but the mask must always be in EBCDIC (masks are usually coded in X'...' format)
2)  UNPK generates X'3' versus X'F' in zone field (high order nibble). -ASM | MA | YES |Run az390 assembler as subtask of mz390 passing BAL.  Note NOASM is for use in pure text processing programs which only use conditional macro code and AREAD/PUNCH with extensions to process ASCII text files. NOASM does not support ordinary symbol attribute tests, OPSYN, or lookahead mode, and requires CHKMAC(0) and CHKSRC(0-2). -ASSIST | MAE | NO | Enable assembly and execution of ASSIST I/O and debugging instructions. This option also sets NOLOADHIGH.  See [ASSIST Support](../../reference/assist.md). +ASCII | AE | NO | Generate ASCII versus EBCDIC DC character constants, compare character strings in ASCII versus EBCDIC in macro processor, generate ASCII versus EBCDIC output for UNPK, ED, and EDMK. Note ASCII mode is not mainframe compatible and requires careful review of program to insure no EBCDIC immediate compare constants such as X'40', 64, X'F0', 240 etc. are used and that there are no assumptions about EBCDIC versus ASCII collating sequences which have numbers and letters reversed, and EBCDIC letters are non-contiguous. Typically HLASM compatible programs are run in default EBCDIC mode and DCB RECFM=FT\|VT or some other translation option is used to convert between EBCDIC and ASCII where necessary. Note there are a few instructions affected by ASCII mode:
1) ED/EDMK generate ASCII versus EBCDIC but the mask must always be in EBCDIC (masks are usually coded in X'...' format)
2) UNPK generates X'3' versus X'F' in zone field (high order nibble). +ASM | MA | YES |Run az390 assembler as subtask of mz390 passing BAL. Note NOASM is for use in pure text processing programs which only use conditional macro code and AREAD/PUNCH with extensions to process ASCII text files. NOASM does not support ordinary symbol attribute tests, OPSYN, or lookahead mode, and requires CHKMAC(0) and CHKSRC(0-2). +ASSIST | MAE | NO | Enable assembly and execution of ASSIST I/O and debugging instructions. This option also sets NOLOADHIGH. See [ASSIST Support](../../reference/assist.md). AUTOLINK | L | YES | Search for unresolved external references in SYSOBJ directory list which defaults to linklib. BAL | M | NO | Generate BAL expanded assembler source file. BS2000 | MA | NO | Support Siemens BS2000 assembler global variables. CHKMAC(0-2) | M | 0 | Check macros during loading as follows:
0 - no checking
1- check for missing AGO and AIF labels and issue warning
2 - also check missing labels and also check for non comment text after MEND. -CHKSRC(0-3) | MA | 1 | Check input source files as follows:
0 - no checking
1 - check MLC or BAL input source files for any  non-ASCII characters and issue error
2 - check MLC, MAC, CPY, and BAL input source files for any non-ASCII characters and issue error.
3 - also check for out of sequence characters in 73-80 or any non-blank characters beyond 80 and issue error.
Note this should detect any EBCDIC literal character strings containing non-ASCII characters such as binary 0 byte which must be changed to hex X'00' type strings for portability. -CICS | MA | NO | Support EXEC CICS pre-processor expansion and constants.  If this option is not on during macro expansion, PROLOG and EPILOG option settings will be ignored. -CODEPAGE(ascii+ebcdic+LIST) | MALE | YES | The default is CODEPAGE(ISO-8859-1+IBM1047).  If +LIST is added the mapping of the 2 codepages along with printable character and Unicode values are displayed on ERR file.  A hex dump of the tables and a list of the valid ASCII and EBCDIC Unicode Charset codepages are listed. You can replace the EBCDIC codepage name with a file specification such as IBM1047.HCP (example included) which is in hex dump format.  The above defaults match z/OS. -CON | MALE | YES | Console output for all start/stop, error, trace, MNOTE's with level > 4, and WTO messages.  When the TRACE??? option is specified, the CON option is turned off so only start/stop and abort error messages appear on console log.  You can specify CON after last TRACE option to turn it back on if you want all display, trace, and error messages displayed on console log.  All the trace messages appear on corresponding TR? file for each z390 program executed. +CHKSRC(0-3) | MA | 1 | Check input source files as follows:
0 - no checking
1 - check MLC or BAL input source files for any non-ASCII characters and issue error
2 - check MLC, MAC, CPY, and BAL input source files for any non-ASCII characters and issue error.
3 - also check for out of sequence characters in 73-80 or any non-blank characters beyond 80 and issue error.
Note this should detect any EBCDIC literal character strings containing non-ASCII characters such as binary 0 byte which must be changed to hex X'00' type strings for portability. +CICS | MA | NO | Support EXEC CICS pre-processor expansion and constants. If this option is not on during macro expansion, PROLOG and EPILOG option settings will be ignored. +CODEPAGE(ascii+ebcdic+LIST) | MALE | YES | The default is CODEPAGE(ISO-8859-1+IBM1047). If +LIST is added the mapping of the 2 codepages along with printable character and Unicode values are displayed on ERR file. A hex dump of the tables and a list of the valid ASCII and EBCDIC Unicode Charset codepages are listed. You can replace the EBCDIC codepage name with a file specification such as IBM1047.HCP (example included) which is in hex dump format. The above defaults match z/OS. +CON | MALE | YES | Console output for all start/stop, error, trace, MNOTE's with level > 4, and WTO messages. When the TRACE??? option is specified, the CON option is turned off so only start/stop and abort error messages appear on console log. You can specify CON after last TRACE option to turn it back on if you want all display, trace, and error messages displayed on console log. All the trace messages appear on corresponding TR? file for each z390 program executed. DUMP | E | NO | Generate full memory dump on LOG or TRE if abort. EDF | M | YES | CICS Execution Diagnostic Facility. EPILOG | M | YES | Generate epilog macro call DFHEIEND for CICS program at END statement if CICS option and EPILOG option are on. ERR(100) | MALE | 100 | Terminate process if total errors for program exceeds limit. Use ERR(0) to eliminate any error limit and always generate PRN file. -ERRSUM | M | NO | Generate critical error summary on console and ERR file listing missing macros and copybooks. This option requires ASM option and is turned on automatically if missing macros or copybooks are found in the executed macro code path.  When ERRSUM is on, ERR(0) is set to prevent abort prior to finding all macro and copybook references.  All errors are listed on ERR file along with summary report.  Note several iterations may be required to identify and resolve all missing macros and copybooks. +ERRSUM | M | NO | Generate critical error summary on console and ERR file listing missing macros and copybooks. This option requires ASM option and is turned on automatically if missing macros or copybooks are found in the executed macro code path. When ERRSUM is on, ERR(0) is set to prevent abort prior to finding all macro and copybook references. All errors are listed on ERR file along with summary report. Note several iterations may be required to identify and resolve all missing macros and copybooks. GUAM | E | NO | Support one or more GUI Graphical User Access Method dialogs for MCS, TN3270, or graphics user interface. -INIT | E | YES | Initialize all registers to hex x'F4', all memory to hex x'F5', and all uninitialized load module areas to x'F6' for easier identification of access to uninitialized registers, memory or program fields. Use NOINIT to perform low value initialization. -INSTALL(dir) | MALE | NO | Define alternate z390 install directory to run batch command.  The default is set from Java property "user.dir". +INIT | E | YES | Initialize all registers to hex x'F4', all memory to hex x'F5', and all uninitialized load module areas to x'F6' for easier identification of access to uninitialized registers, memory or program fields. Use NOINIT to perform low value initialization. +INSTALL(dir) | MALE | NO | Define alternate z390 install directory to run batch command. The default is set from Java property "user.dir". IPL(pgm) | E | none | Execute 390 program at startup. LIST | ALE | YES | Generate PRN, LST, and LOG files for assembler, linker, and execution respectively. -LISTCALL | MA | YES | Generate level macro call and exit comments in BAL file which are used by assembler to format first level macro calls preceding assembler lines with "+" for macro generated source.  +LISTCALL | MA | YES | Generate level macro call and exit comments in BAL file which are used by assembler to format first level macro calls preceding assembler lines with "+" for macro generated source. LISTUSE | A | YES | List active USING definitions each time USING or DROP changes status in the PRN assembly listing file. -LOADHIGH | E | YES | Load programs and allocate memory for GETMAIN/STORAGE from high end of first FQE large enough to satisfy request.  The ASSIST option changes this option to NOLOADHIGH causing initial program to load starting at X'8000' which simplifies relative address calculations. -LOG(file) | MALE | pgm | Set file name for ERR, TR?, and LOG files.  The default is the program name.  This option is required when running multiple copies of the same program via CMD startup in order to create separate unique  ERR, TR?, and LOG files.  Otherwise duplicate programs running in parallel will mod the same ERR, TR?, and LOG file. +LOADHIGH | E | YES | Load programs and allocate memory for GETMAIN/STORAGE from high end of first FQE large enough to satisfy request. The ASSIST option changes this option to NOLOADHIGH causing initial program to load starting at X'8000' which simplifies relative address calculations. +LOG(file) | MALE | pgm | Set file name for ERR, TR?, and LOG files. The default is the program name. This option is required when running multiple copies of the same program via CMD startup in order to create separate unique ERR, TR?, and LOG files. Otherwise duplicate programs running in parallel will mod the same ERR, TR?, and LOG file. +MACHINE | A | -- | MACHINE / OPTABLE options determine which opcode table is used during assembly. See table below for details, MAXCALL(50) | M | 50 | Set limit for nested macro calls. MAXDISPLAY(80) | M | 80 | Use to increase zCOBOL DISPLAY line size up to 256 characters. MAXESD(1000) | AL | 1000 | Set limit for ESD sections or entries in one program. @@ -60,8 +61,8 @@ MAXHEIGHT(600) | E | 600 | Maximum pixel height for GUI dialog windows. MAXLCL(100000) | M | 100000 | Maximum local macro variables. MAXLINE(200000) | MA | 200000 | Maximum MLC, MAC, CPY, and BAL source lines that can be loaded into memory during an assembly. MAXLOG(1000000) | MALE | 1000000 | Maximum GUI log file output before truncation begins by removing 50% to limit memory consumption. The only limit on size of log file is MAXSIZE. -MAXPARM(100000) | M | 10000 | Maximum length of any string during macro processing.  This is an extension as HLASM limit is currently 1024. -MAXPASS(2) | A | 2 | Maximum passes of the BAL source by assembler to resolve forward nested symbol references prior to final pass to generate object code.  The number of LOCTR statements is added to this limit in order to resolve the final address of each LOCTR section. +MAXPARM(100000) | M | 10000 | Maximum length of any string during macro processing. This is an extension as HLASM limit is currently 1024. +MAXPASS(2) | A | 2 | Maximum passes of the BAL source by assembler to resolve forward nested symbol references prior to final pass to generate object code. The number of LOCTR statements is added to this limit in order to resolve the final address of each LOCTR section. MAXPC(50000) | M | 50000 | Maximum pseudo code instructions held in cache before LRU replacement begins. MAXQUE(1000) | E | 1000 | Maximum output queue length from any CMD started task before queue messages are automatically copied to GUI output log to conserve memory and prevent stall. MAXRLD(10000) | L | 10000 | Maximum RLD relocation records allowed in a program. @@ -70,67 +71,112 @@ MAXSYM(50000) | MA | 50000 | Maximum symbols in one macro assembly. MAXWARN(4) | MA | 4 | Maximum MNOTE warning level without generating error. MAXWIDTH(800) | E | 800 | Maximum pixel width for GUI dialog windows. MCALL | A | NO | List each macro call and exit on the PRN assembly listing in addition to first level calls if LISTCALL option is also on. -MEM(1) | E | 1 | Memory allocated for 390 program execution in MB.  Note for RMODE31 loads and GETMAIN's memory above the 16 MB line must be allocated.  For example MEM(32) would provide 16 MB below the line and 16 MB above. +MEM(1) | E | 1 | Memory allocated for 390 program execution in MB. Note for RMODE31 loads and GETMAIN's memory above the 16 MB line must be allocated. For example MEM(32) would provide 16 MB below the line and 16 MB above. MINHEIGHT(150) | E | 150 | Minimum pixel height for GUI dialog windows. MINWIDTH(150) | E | 150 | Minimum pixel width for GUI dialog windows. -MNOTE(0) | MA | 0 | Control MNOTE error/warning messages during macro expansion and assembly:
0 - default generates MNOTE error/warning during mz390 and az390
 1 - suppress mz390 error/warning and only pass MNOTE to az390
 2 - generates MNOTE error/warning during mz390 and suppresses passing them on to az390. -MOD | L | NO | Generate raw code file from lz390 with .MOD suffix and no header or trailer and no RLD's.  +MNOTE(0) | MA | 0 | Control MNOTE error/warning messages during macro expansion and assembly:
0 - default generates MNOTE error/warning during mz390 and az390
1 - suppress mz390 error/warning and only pass MNOTE to az390
2 - generates MNOTE error/warning during mz390 and suppresses passing them on to az390. +MOD | L | NO | Generate raw code file from lz390 with .MOD suffix and no header or trailer and no RLD's. OBJ | A | YES | Generate relocatable object code file. -OBJHEX | A | NO | Generate ASCII readable form of OBJ file with support for 31 bit long sections.  The default is to generate binary OBJ file which is compatible with mainframe linkers but is limited to 24 bit long sections. +OBJHEX | A | NO | Generate ASCII readable form of OBJ file with support for 31 bit long sections. The default is to generate binary OBJ file which is compatible with mainframe linkers but is limited to 24 bit long sections. +OPTABLE | A | DFLT | MACHINE / OPTABLE options determine which opcode table is used during assembly. See table below for details. PARM('text') | E | none | Define character string parm passed to executable program via address in R1 at startup pointing to a fullword pointing to a halfword length followed by EBCDIC characters. When the length is zero, no PARM is present. PC | M | YES | Generate macro pseudo code in cache memory for speeding up macro code that is executed more than once during macro expansion. -PCOPT | M | YES | Optimize macro pseudo code by looking for push, add/sub, store sequences and replacing them with inc/dec pseudo code opcodes.  These pseudo codes are maintained in a cache in memory during macro execution only and have no effect on generated object code. +PCOPT | M | YES | Optimize macro pseudo code by looking for push, add/sub, store sequences and replacing them with inc/dec pseudo code opcodes. These pseudo codes are maintained in a cache in memory during macro execution only and have no effect on generated object code. PRINTALL | A | NO | Suppress PRINT OFF and PRINT NOGEN commands to force all source lines on PRN listing. -PDSMEM8 | M | NO | If PDSMEM8 option is specified, error messages will be issued for any macro or copybook file names with length greater than 8.  This option is available to provide compatibility with mainframe PDS libraries that are limited to 8 character names. Note zCOBOL and zCICS use names longer than 8 characters such as zcobol\IDENTIFICATION.MAC and cics\CICS_INQUIRE.MAC. +PDSMEM8 | M | NO | If PDSMEM8 option is specified, error messages will be issued for any macro or copybook file names with length greater than 8. This option is available to provide compatibility with mainframe PDS libraries that are limited to 8 character names. Note zCOBOL and zCICS use names longer than 8 characters such as zcobol\IDENTIFICATION.MAC and cics\CICS_INQUIRE.MAC. PROFILE(file) | M | NO | Insert COPY file in front of MLC source file. -PROLOG | M | YES | Generate CICS prolog macro calls DFHEIGBL, DFHEISTG, and  DFHEIENT if CICS option and PROLOG options are on. +PROLOG | M | YES | Generate CICS prolog macro calls DFHEIGBL, DFHEISTG, and DFHEIENT if CICS option and PROLOG options are on. PROTECT | E | YES | Prevent modification of PSA in low memory 8K block. REFORMAT | M | NO | Reformat expanded BAL code to align all opcodes at column 10 and operands at column 16 if possible. REGS | E | NO | Generate GPR register trace before and after each instruction if TRACE option on. RMODE24 | LE | YES | Set 390 load module options to load module below the 24 bit address line. -RMODE31 | LE | NO | Set 390 load module options to load module above the 31 bit address line.  Note this load module option requires option MEM be set to include enough memory above the 31 bit address line. -STATS or STATS(file) | MALE | NO | Generate statistics file STA with final options listing, macro and copybook file listing, plus all program statistics.  If file is omitted the program path and file name are used with STA suffix. +RMODE31 | LE | NO | Set 390 load module options to load module above the 31 bit address line. Note this load module option requires option MEM be set to include enough memory above the 31 bit address line. +STATS or STATS(file) | MALE | NO | Generate statistics file STA with final options listing, macro and copybook file listing, plus all program statistics. If file is omitted the program path and file name are used with STA suffix. SYS390(dir) | LE | pgm dir | Define directory for storing and retrieving 390 load modules. -SYSBAL(dir) | MA | pgm dir | Define directory for storing and retrieving generated BAL files.  This option may also override file name and/or suffix (*.sfx overrides just the suffix in the pgm directory). -SYSCPY(dir) | MA | pgm dir | Define one or more directories for retrieving CPY source input files.  If the option starts with + the directories listed will be concatenated with current list.  Multiple directories are always separated by +.  This option may also override suffix by adding *.sfx. -SYSDAT(dir) | M | pgm dir | Define directory for retrieving DAT source input files for AREAD.  Set to SYSDAT(.) for current directory when no path is specified on DSNAME parm for AREAD. +SYSBAL(dir) | MA | pgm dir | Define directory for storing and retrieving generated BAL files. This option may also override file name and/or suffix (*.sfx overrides just the suffix in the pgm directory). +SYSCPY(dir) | MA | pgm dir | Define one or more directories for retrieving CPY source input files. If the option starts with + the directories listed will be concatenated with current list. Multiple directories are always separated by +. This option may also override suffix by adding *.sfx. +SYSDAT(dir) | M | pgm dir | Define directory for retrieving DAT source input files for AREAD. Set to SYSDAT(.) for current directory when no path is specified on DSNAME parm for AREAD. SYSERR(dir) | MALE | pgm dir | Define directory for output ERR files. This option may also override file name and/or suffix (*.sfx overrides just the suffix in the pgm directory). SYSLKD(file) | L | pgm dir | Define input source file for linker commands such as INCLUDE, ALIAS, ENTRY, and NAME. SYSLOG(dir) | E | pgm dir | Define directory for output LOG file. This option may also override file name and/or suffix (*.sfx overrides just the suffix in the pgm directory). -SYSLST(dir) | AL | pgm dir | Define directory for output LST files.  This option may also override file name and/or suffix (*.sfx overrides just the suffix in the pgm directory). -SYSMAC(dir) | M | mac dir | Define one or more directories for source MAC files.  If the option starts with + the directories listed will be appended to the maclib list.  Multiple directories can be specified in one parameter and are always separated by +. When you specify this option more than once and want previous parameter instructions to remain in place, ensure that you start parameter with a `+` otherwise it will drop prior directories.  This option may also override suffix by adding *.sfx. +SYSLST(dir) | AL | pgm dir | Define directory for output LST files. This option may also override file name and/or suffix (*.sfx overrides just the suffix in the pgm directory). +SYSMAC(dir) | M | mac dir | Define one or more directories for source MAC files. If the option starts with + the directories listed will be appended to the maclib list. Multiple directories can be specified in one parameter and are always separated by +. When you specify this option more than once and want previous parameter instructions to remain in place, ensure that you start parameter with a `+` otherwise it will drop prior directories. This option may also override suffix by adding *.sfx. SYSMLC(dir) | MA | pgm dir | Define directory for source input MLC files. SYSOBJ(dir) | AL | pgm dir | Define directory for OBJ relocatable object files. -SYSOPT(dir) | MALE | pgm dir | Define directory for @file option files.  This option may override suffix using *.sfx. +SYSOPT(dir) | MALE | pgm dir | Define directory for @file option files. This option may override suffix using *.sfx. SYSPARM('text') | M | none | Define text string which can be accessed by mz390 global macro variable &SYSPARM. -SYSPCH(dir) | M | pgm dir | Define directory for PCH output files from PUNCH.  This option may also override file name and/or suffix (*.sfx overrides just the suffix in the pgm directory).  Note PUNCH output is in ASCII source format and is not directed to the OBJ file.  These files may be used as linker input commands via SYSLKD(file) option.  Set to SYSPCH(.) for current directory when no path is specified on DSNAME parm for PUNCH. -SYSPRN(dir) | A | pgm dir | Define directory for assembler listing PRN output files. This option may also override file name and/or suffix (*.sfx overrides just the suffix in the pgm directory). -SYSTERM(file) | MALE | pgm.ERR | Define alternate file for all start/end messages plus any error messages, plus related source file statistics for each file containing errors.  The default is the program name with ERR suffix. +SYSPCH(dir) | M | pgm dir | Define directory for PCH output files from PUNCH. This option may also override file name and/or suffix (*.sfx overrides just the suffix in the pgm directory). Note PUNCH output is in ASCII source format and is not directed to the OBJ file. These files may be used as linker input commands via SYSLKD(file) option. Set to SYSPCH(.) for current directory when no path is specified on DSNAME parm for PUNCH. +SYSPRN(dir) | A | pgm dir | Define directory for assembler listing PRN output files. This option may also override file name and/or suffix (*.sfx overrides just the suffix in the pgm directory). +SYSTERM(file) | MALE | pgm.ERR | Define alternate file for all start/end messages plus any error messages, plus related source file statistics for each file containing errors. The default is the program name with ERR suffix. SYSTRC(dir) | MALE | pgm dir | Define directory for output TRACE TR? files. TEST | E | NO | Start execution with interactive TEST mode active which prompts for commands such as T opcode or G opcode to trace or execution to the next occurrence of opcode name. -TEST(ddname) | E | NO | Define input command file to run TEST commands. _ddname_ is an environment variable set to the name of the command file. +TEST(ddname) | E | NO | Define input command file to run TEST commands._ddname_ is an environment variable set to the name of the command file. THREAD | A | NO | Assign continuing CSECT addresses for multiple CSECT's assembled in the same module to help identify location of instruction and data labels. -TIME or TIME(seconds) | MALE | YES | Limit execution time of each program to the number of seconds specified.  The default is 15 seconds. This option is turned off if NOTIMING specified.  Use NOTIME to allow tasks such as SOA servers like z390CICS to run continuously while still supporting application use of timing functions. -TIMING | MALE | YES | Calculate elapsed time and instructions per second statistics for display on START/END messages and STA statistics. TIMING also displays current z390 and J2SE version on start message and memory usage on ended message.  Note NOTIMING is used in regression tests to force generated files to be identical by using fixed data/time stamp using GregorianCalendar(2005,0,2,22,33,44).  NOTIMING suppresses versions on start message and memory usage on ended message.  NOTIMING also sets NOTIME which prevents application from using time functions. -TRACE or TRACE(AEGILMPQTV) | E | NO | Turn on ez390 execution trace generation on TRE file and turn off CON. TRACE will display every instruction executed along with address and value of each operand.  Any combination of the following trace options can be set using the TRACE(...) option. TRACE(*) will also set TRACEALL. Note the &SYSTRACE global SETC variable can be used to turn any trace options on or off during execution. -TRACEA or TRACE(A) | A | NO | Turn on az390 assembly trace generation on TRA file and turn off CON.  TRACEA will display each BAL statement during each pass of the assembler. +TIME or TIME(seconds) | MALE | YES | Limit execution time of each program to the number of seconds specified. The default is 15 seconds. This option is turned off if NOTIMING specified. Use NOTIME to allow tasks such as SOA servers like z390CICS to run continuously while still supporting application use of timing functions. +TIMING | MALE | YES | Calculate elapsed time and instructions per second statistics for display on START/END messages and STA statistics. TIMING also displays current z390 and J2SE version on start message and memory usage on ended message. Note NOTIMING is used in regression tests to force generated files to be identical by using fixed data/time stamp using GregorianCalendar(2005,0,2,22,33,44). NOTIMING suppresses versions on start message and memory usage on ended message. NOTIMING also sets NOTIME which prevents application from using time functions. +TRACE or TRACE(AEGILMPQTV) | E | NO | Turn on ez390 execution trace generation on TRE file and turn off CON. TRACE will display every instruction executed along with address and value of each operand. Any combination of the following trace options can be set using the TRACE(...) option. TRACE(*) will also set TRACEALL. Note the &SYSTRACE global SETC variable can be used to turn any trace options on or off during execution. +TRACEA or TRACE(A) | A | NO | Turn on az390 assembly trace generation on TRA file and turn off CON. TRACEA will display each BAL statement during each pass of the assembler. TRACEALL | MALE | NO | Turn on all trace options generating TRM, TRA, TRL, and TRE files and turn off CON. -TRACEC or TRACE(C) | M | NO | Trace copy file code for TRACEM and TRACEP.  The default is NOTRACEC to eliminate redundant code that usually just contains global variable declarations. +TRACEC or TRACE(C) | M | NO | Trace copy file code for TRACEM and TRACEP. The default is NOTRACEC to eliminate redundant code that usually just contains global variable declarations. TRACEG or TRACE(G) | E | NO | Turn on ez390 emulator trace generation on TRE file with trace of GETMAIN/FREEMAIN FQE memory management control block changes and turn off CON. TRACEI or TRACE(I) | M | NO | TRACEI will trace each AINSERT showing source on the TRM trace file. -TRACEL or TRACE(L) | L | NO | Turn on lz390 linker trace generation on TRL file and turn off CON.  TRACEL shows each CSECT, ENTRY, EXTRN and OBJ file being loaded. -TRACEM or TRACE(M) | M | NO | Turn on mz390 macro processor trace generation on TRM file and turn off CON.  TRACEM displays each conditional macro statement executed plus stored values and AIF compare values. -TRACEP or TRACE(P) | M | NO | Turn on mz390 macro processor pseudo code generation and execution trace on TRM file and turn off CON.  TRACEP shows each conditional macro pseudo operation performed for each conditional macro statement and the values of all variables. +TRACEL or TRACE(L) | L | NO | Turn on lz390 linker trace generation on TRL file and turn off CON. TRACEL shows each CSECT, ENTRY, EXTRN and OBJ file being loaded. +TRACEM or TRACE(M) | M | NO | Turn on mz390 macro processor trace generation on TRM file and turn off CON. TRACEM displays each conditional macro statement executed plus stored values and AIF compare values. +TRACEP or TRACE(P) | M | NO | Turn on mz390 macro processor pseudo code generation and execution trace on TRM file and turn off CON. TRACEP shows each conditional macro pseudo operation performed for each conditional macro statement and the values of all variables. TRACEQ or TRACE(Q) | E | NO | Turn on ez390 emulator QSAM/BSAM DCB I/O trace generation on TRE file and turn off CON. -TRACES or TRACE(S) | M | NO | Display MLC source lines on console regardless of CON setting to help locate any loops, waits, or hangs in large macro process.  If MCALL is also on, then \*MCALL and \*MEXIT comments will also be displayed to show location with nested macros. +TRACES or TRACE(S) | M | NO | Display MLC source lines on console regardless of CON setting to help locate any loops, waits, or hangs in large macro process. If MCALL is also on, then \*MCALL and \*MEXIT comments will also be displayed to show location with nested macros. TRACET or TRACE(T) | E | NO | Turn on ez390 emulator TGET/TPUT and TCP/IO trace generation on TRE file and turn off CON. TRACEV or TRACE(V) | E | NO | Turn on ez390 emulator VSAM ACB/RPL I/O trace generation on TRE file and turn off CON. -TRAP | E | YES | Trap any unexpected J2SE program exceptions and generate emulator 0C5 exception which can be handled by SPIE/STAE exits if defined.  NOTRAP can be used with Eclipse source debugger to stop at J2SE statement causing exception. +TRAP | E | YES | Trap any unexpected J2SE program exceptions and generate emulator 0C5 exception which can be handled by SPIE/STAE exits if defined. NOTRAP can be used with Eclipse source debugger to stop at J2SE statement causing exception. TS | MALE | NO | Generate JDBC compatible time-stamp on all TRACE and ERR file records for use in debugging time dependent issue. VCB | E | YES | Generate VSAM cache buffer for improving VSAM performance by storing most recently accessed records and indexes. WRITENONPRINTABLE | MA | NO | Write non-printable characters to PRN, BAL and PCH files. The default value NOWRITENONPRINTABLE replaces all non-printable characters with the '.' character. This avoids issues caused by writing control characters such as 0x0A (Line Feed) or 0x0D (Carriage Return). XREF | A | YES | Cross reference symbols to source lines in PRN assembly listing. -ZSTRMAC | M | YES | Support expansion of ZSTRMAC structured conditional macro code instructions during loading of MLC, MAC, and CPY files.   Note z390 macros in z390\mac directory now are using zstrmac for structured coding. NOZSTRMAC can only be used with MVS, VSE, or other non-structured macro libraries. +ZSTRMAC | M | YES | Support expansion of ZSTRMAC structured conditional macro code instructions during loading of MLC, MAC, and CPY files. Note z390 macros in z390\mac directory now are using zstrmac for structured coding. NOZSTRMAC can only be used with MVS, VSE, or other non-structured macro libraries. ZVSAM | E | 0 | ZVSAM 0=no vsam, 1=zvsam1 support, 2=zvsam2 support. +# Machine and optable options and equivalences +| Machine | Machine | Optable | Optable | Description | +|-----------|-----------|---------|---------|------------------------------------------------------------------------------| +| | | DOS | | | +| S370 | | 370 | | | +| S370XA | ARCH-0 | XA | | | +| S370ESA | ARCH-1 | ESA | | Synonyms for ESA | +| S390 | ARCH-2 | ESA | | | +| S390E | ARCH-3 | ESA | | | +| | ARCH-4 | ESA | | | +| zSeries | ZSeries-1 | ZS1 | ZOP | Synonyms for ZOP | +| ZS | ZS-1 | ZS1 | ZOP | | +| z800 | z900 | ZS1 | ZOP | | +| | ARCH-5 | ZS1 | ZOP | | +| z890 | z990 | ZS2 | YOP | Synonyms for YOP | +| zSeries-2 | ZS-2 | ZS2 | YOP | | +| | ARCH-6 | ZS2 | YOP | | +| zSeries-3 | ZS-3 | ZS3 | Z9 | Synonyms for Z9 | +| z9 | ARCH-7 | ZS3 | Z9 | | +| zSeries-4 | ZS-4 | ZS4 | Z10 | Synonyms for Z10 | +| z10 | ARCH-8 | ZS4 | Z10 | | +| zSeries-5 | ZS-5 | ZS5 | Z11 | Synonyms for Z11 | +| z114 | z196 | ZS5 | Z11 | | +| z11 | ARCH-9 | ZS5 | Z11 | | +| zSeries-6 | ZS-6 | ZS6 | Z12 | Synonyms for Z12 | +| zBC12 | zEC12 | ZS6 | Z12 | | +| z12 | ARCH-10 | ZS6 | Z12 | | +| zSeries-7 | ZS-7 | ZS7 | Z13 | Synonyms for Z13 | +| z13 | ARCH-11 | ZS7 | Z13 | | +| zSeries-8 | ZS-8 | ZS8 | Z14 | Synonyms for Z14 | +| z14 | ARCH-12 | ZS8 | Z14 | | +| zSeries-9 | ZS-9 | ZS9 | Z15 | Synonyms for Z15 | +| z15 | ARCH-13 | ZS9 | Z15 | | +| zSeries-10| ZS-10 | ZSA | Z16 | Synonyms for Z16 | +| z16 | ARCH-14 | ZSA | Z16 | | +| | | UNI | | All current instructions from optables above | +| | | [DFLT] | | Cannot be specified, same as UNI plus one z390 directive for zCobol support | +| | | z390 | | UNI plus all z390 instructions; not compatible with HLASM | + +Remark: there is no machine option keyword equivalent for optable(DOS). + +Remark: option allow adds z390 instructions to specified optable. + +Remark: option assist adds ASSIST instructions to specified optable. diff --git a/guam/demo/DEMOGUI1.BAT b/guam/demo/DEMOGUI1.BAT index ebd27ef4d..92bda8ddb 100644 --- a/guam/demo/DEMOGUI1.BAT +++ b/guam/demo/DEMOGUI1.BAT @@ -1 +1 @@ -asmlg demo\demogui1 gui test trace +bat\asmlg guam\demo\demogui1 guam test trace diff --git a/guam/test/TEST.BAT b/guam/test/TEST.BAT index 99321e14b..fd0b6cabc 100644 --- a/guam/test/TEST.BAT +++ b/guam/test/TEST.BAT @@ -1,5 +1,5 @@ rem run the tn3270 test tutorial pgms -call asmlg tn3270\hello1 guam -call asmlg tn3270\hello2 guam -call asmlg tn3270\hello3 guam -call asmlg tn3270\aid guam +call bat\asmlg guam\demo\HELLO1 guam +call bat\asmlg guam\demo\HELLO2 guam +call bat\asmlg guam\demo\HELLO3 guam +call bat\asmlg guam\test\AID guam diff --git a/rt/bat/RUNBR14OWE.BAT b/rt/bat/RUNBR14OWE.BAT index b5b688fa5..001f5476d 100644 --- a/rt/bat/RUNBR14OWE.BAT +++ b/rt/bat/RUNBR14OWE.BAT @@ -26,17 +26,20 @@ call bat\asm %z_TraceMode% rt\mlc\IEFBR14E set z_ReturnCode=%ERRORLEVEL% if %z_ReturnCode% NEQ 12 (echo %0 ERROR: IEFBR14E did not end with RC=12; RC=%z_ReturnCode% set z_ReturnCode=8 - goto return) + goto return) else ( + echo %0 OKAY : IEFBR14E ended with RC=12; as expected) call bat\asml %z_TraceMode% rt\mlc\IEFBR14E set z_ReturnCode=%ERRORLEVEL% if %z_ReturnCode% NEQ 12 (echo %0 ERROR: IEFBR14E did not end with RC=12; RC=%z_ReturnCode% set z_ReturnCode=8 - goto return) + goto return) else ( + echo %0 OKAY : IEFBR14E ended with RC=12; as expected) call bat\asmlg %z_TraceMode% rt\mlc\IEFBR14E set z_ReturnCode=%ERRORLEVEL% if %z_ReturnCode% NEQ 12 (echo %0 ERROR: IEFBR14E did not end with RC=12; RC=%z_ReturnCode% set z_ReturnCode=8 - goto return) + goto return) else ( + echo %0 OKAY : IEFBR14E ended with RC=12; as expected) set z_ReturnCode=0 goto return diff --git a/rt/bat/RUNOPTABLES.BAT b/rt/bat/RUNOPTABLES.BAT index 49d368a4e..bd14d44b7 100644 --- a/rt/bat/RUNOPTABLES.BAT +++ b/rt/bat/RUNOPTABLES.BAT @@ -17,12 +17,22 @@ set z_MaxRetCode=0 rem Optable DOS set Z390PRN=rt\rt\OPCD$DOS.PRN set HLASMPRN=rt\rt\OPCD$DOS.TF1 -set SYSOUT=rt\rt\OPCD$DOS.OUT -call bat\asmlg.bat %z_TraceMode% rt\rt\OPCD$DOS @rt\rt\OPCD$DOS.OPT +call bat\asmlg.bat %z_TraceMode% rt\rt\OPCD$ @rt\rt\OPCD$DOS.OPT sysprn(rt\rt\OPCD$DOS.PRN) set z_ReturnCode=%ERRORLEVEL% -if %z_ReturnCode% EQU 0 (echo %0 - OPCD$DOS "optable(DOS)" is okay +if %z_ReturnCode% EQU 0 (echo %0 - OPCD$ "optable(DOS)" is okay ) else ( - echo %0 ERROR: OPCD$DOS returned %z_ReturnCode% for "optable(DOS)" + echo %0 ERROR: OPCD$ returned %z_ReturnCode% for "optable(DOS)" + if (%z_ReturnCode% GTR %z_MaxRetCode% (set z_MaxRetCode=%z_ReturnCode%) + ) + +rem Optable 370 +set Z390PRN=rt\rt\OPCD$370.PRN +set HLASMPRN=rt\rt\OPCD$370.TF1 +call bat\asmlg.bat %z_TraceMode% rt\rt\OPCD$ @rt\rt\OPCD$370.OPT sysprn(rt\rt\OPCD$370.PRN) +set z_ReturnCode=%ERRORLEVEL% +if %z_ReturnCode% EQU 0 (echo %0 - OPCD$ "optable(370)" is okay + ) else ( + echo %0 ERROR: OPCD$ returned %z_ReturnCode% for "optable(370)" if (%z_ReturnCode% GTR %z_MaxRetCode% (set z_MaxRetCode=%z_ReturnCode%) ) :return diff --git a/mac/ZRTOPTBL.CPY b/rt/rt/OPCD$.MLC similarity index 84% rename from mac/ZRTOPTBL.CPY rename to rt/rt/OPCD$.MLC index 75099e13a..529fab9f8 100644 --- a/mac/ZRTOPTBL.CPY +++ b/rt/rt/OPCD$.MLC @@ -1,13 +1,58 @@ +OPCD$ TITLE 'Validate opcode table' *********************************************************************** * Start create : 2024-05-31 * 1st delivery : * Designer : AF Kornelis * Programmer : AF Kornelis -* Purpose : Standard routine to -* compare a z390 optable listing -* with the HLASM equivalent +* Purpose : For validating opcode tables. +* For each optable option xxx we have +* a separate OPCD$xxx.OPT file and a OPCD$xxx.TF1 +* reference file produced by HLASM +* Assembling this program using the appropriate .OPT +* file produces a listing that includes a table of +* all mnemonics supported for the specified optable. +* Running the assembled program will compare the table +* of supported mnemonics against the reference file. *********************************************************************** + YREGS , * register equates + +*********************************************************************** +* +* Program entry and linkage +* +*********************************************************************** +OPCD$ CSECT , * + AIF (NOT D'AMODE).NOAMODE * Skip amode if mnemonic invalid +OPCD$ AMODE 24 * Not supported in DOS +.NOAMODE ANOP , + AIF (NOT D'RMODE).NORMODE * Skip rmode if mnemonic invalid +OPCD$ RMODE 24 * Not supported in DOS +.NORMODE ANOP , + + USING OPCD$,R15 * Establish addressability + B START * Skip header data + DC AL1(START-*),C'&SYSECT &SYSDATE &SYSTIME' +START DS 0H + STM R14,R12,12(R13) * Save GPRs + LR R12,R15 * Copy base address + DROP R15 * No longer needed + USING OPCD$,R12 * Re-establish addressability + + LA R15,SAVEAREA * Point new savearea + ST R15,8(,R13) * Set ptr to new savearea + ST R13,4(,R15) * Set ptr from new to prev save + LR R13,R15 * Activate new savearea + + B MAINLINE * Start the program +* +* Major constants for this program +MARKER DC C'Mnemonic Frmt HexOP Operands ' +&ENTRYLEN SETA (L'MARKER) * Marker Length = Entry Length +&TBLSIZE SETA 5000 * Max nr of opcodes to expect +&Z390LEN SETA 256 * Length of z390 listing record +&HLASMLEN SETA 160 * Length of HLASM listing record + *********************************************************************** * * Program initialization @@ -312,3 +357,5 @@ Z390TBL_END EQU *-1 * Last byte of table DS 0D HLASMTBL DS (&TBLSIZE)CL(&ENTRYLEN) * room for lots of opcodes HLASMTBL_END EQU *-1 * Last byte of table + + END , * diff --git a/rt/rt/OPCD$370.OPT b/rt/rt/OPCD$370.OPT new file mode 100644 index 000000000..659822340 --- /dev/null +++ b/rt/rt/OPCD$370.OPT @@ -0,0 +1,6 @@ +noallow + optable(370,list) + stats +noloadhigh +nodump +notest diff --git a/rt/rt/OPCD$370.TF1 b/rt/rt/OPCD$370.TF1 new file mode 100644 index 000000000..e84bfd260 --- /dev/null +++ b/rt/rt/OPCD$370.TF1 @@ -0,0 +1,288 @@ +1 High Level Assembler Option Summary (PTF UI80020) Page 1 +- HLASM R6.0 2024/06/06 09.09 +0 No Overriding ASMAOPT Parameters + Overriding Parameters- OPTABLE(370,LIST) + No Process Statements + + + Options for this Assembly +0 NOADATA + ALIGN + ASA + BATCH + CODEPAGE(047C) + NOCOMPAT + NODATAMAP + NODBCS + NODECK + DXREF + ESD + NOEXIT + FAIL(NOMSG,NOMNOTE,MAXERRS(500)) + FLAG(0,ALIGN,CONT,EXLITW,NOIMPLEN,NOLONGER,NOPAGE0,PUSH,RECORD,RENT,NOSIGNED,NOSUBSTR,NOTRUNC, + USING0) + NOFOLD + NOGOFF + ILMA + NOINFO + LANGUAGE(EN) + NOLIBMAC + LINECOUNT(60) + LIST(121) + 3 PARM/OPTION MACHINE(S370,LIST) + MXREF(SOURCE) + OBJECT + 3 PARM/OPTION OPTABLE(370,LIST) + NOPCONTROL + NOPESTOP + NOPROFILE + NORA2 + NORENT + RLD + RXREF + SECTALGN(8) + SIZE(MAX) + NOSUPRWARN + SYSPARM() + NOTERM + NOTEST + THREAD + NOTRANSLATE + TYPECHECK(MAGNITUDE,REGISTER,SIGNED) + USING(NOLIMIT,MAP,WARN(15)) + NOWORKFILE + XREF(SHORT,UNREFS) + + No Overriding DD Names +1 High Level Assembler Operation Code Table Contents Page 2 +- HLASM R6.0 2024/06/06 09.09 +0Mnemonic Frmt HexOP Operands Mnemonic Frmt HexOP Operands Mnemonic Frmt HexOP Operands +0A RX 5A R1,D2(X2,B2) ACONTROL HLASM ACTR HLASM + AD RX 6A R1,D2(X2,B2) ADATA HLASM ADR RR 2A R1,R2 + AE RX 7A R1,D2(X2,B2) AEJECT HLASM AER RR 3A R1,R2 + AGO HLASM AGOB HLASM AH RX 4A R1,D2(X2,B2) + AIF HLASM AIFB HLASM AINSERT HLASM + AL RX 5E R1,D2(X2,B2) ALIAS HLASM ALR RR 1E R1,R2 + AMODE HLASM ANOP HLASM AP SS FA D1(L1,B1),D2(L2,B2) + AR RR 1A R1,R2 AREAD HLASM ASPACE HLASM + AU RX 7E R1,D2(X2,B2) AUR RR 3E R1,R2 AW RX 6E R1,D2(X2,B2) + AWR RR 2E R1,R2 AXR RR 36 R1,R2 B RX 47F. D2(X2,B2) + BAL RX 45 R1,D2(X2,B2) BALR RR 05 R1,R2 BAS RX 4D R1,D2(X2,B2) + BASR RR 0D R1,R2 BC RX 47 M1,D2(X2,B2) BCR RR 07 M1,R2 + BCT RX 46 R1,D2(X2,B2) BCTR RR 06 R1,R2 BE RX 478. D2(X2,B2) + BER RR 078. R2 BH RX 472. D2(X2,B2) BHR RR 072. R2 + BL RX 474. D2(X2,B2) BLR RR 074. R2 BM RX 474. D2(X2,B2) + BMR RR 074. R2 BNE RX 477. D2(X2,B2) BNER RR 077. R2 + BNH RX 47D. D2(X2,B2) BNHR RR 07D. R2 BNL RX 47B. D2(X2,B2) + BNLR RR 07B. R2 BNM RX 47B. D2(X2,B2) BNMR RR 07B. R2 + BNO RX 47E. D2(X2,B2) BNOR RR 07E. R2 BNP RX 47D. D2(X2,B2) + BNPR RR 07D. R2 BNZ RX 477. D2(X2,B2) BNZR RR 077. R2 + BO RX 471. D2(X2,B2) BOR RR 071. R2 BP RX 472. D2(X2,B2) + BPR RR 072. R2 BR RR 07F. R2 BXH RS 86 R1,R3,D2(B2) + BXLE RS 87 R1,R3,D2(B2) BZ RX 478. D2(X2,B2) BZR RR 078. R2 + C RX 59 R1,D2(X2,B2) CATTR HLASM CCW HLASM + CCW0 HLASM CCW1 HLASM CD RX 69 R1,D2(X2,B2) + CDR RR 29 R1,R2 CDS RS BB R1,R3,D2(B2) CE RX 79 R1,D2(X2,B2) + CEJECT HLASM CER RR 39 R1,R2 CH RX 49 R1,D2(X2,B2) + CL RX 55 R1,D2(X2,B2) CLC SS D5 D1(L,B1),D2(B2) CLCL RR 0F R1,R2 + CLI SI 95 D1(B1),I2 CLM RS BD R1,M3,D2(B2) CLR RR 15 R1,R2 + CLRCH S 9F01 D2(B2) CLRIO S 9D01 D2(B2) CNOP HLASM + COM HLASM CONCS S B200 D2(B2) COPY HLASM + CP SS F9 D1(L1,B1),D2(L2,B2) CR RR 19 R1,R2 CS RS BA R1,R3,D2(B2) + CSECT HLASM CVB RX 4F R1,D2(X2,B2) CVD RX 4E R1,D2(X2,B2) + CXD HLASM D RX 5D R1,D2(X2,B2) DC HLASM + DD RX 6D R1,D2(X2,B2) DDR RR 2D R1,R2 DE RX 7D R1,D2(X2,B2) + DER RR 3D R1,R2 DISCS S B201 D2(B2) DP SS FD D1(L1,B1),D2(L2,B2) + DR RR 1D R1,R2 DROP HLASM DS HLASM + DSECT HLASM DXD HLASM ED SS DE D1(L,B1),D2(B2) + EDMK SS DF D1(L,B1),D2(B2) EJECT HLASM END HLASM + ENTRY HLASM EPAR RRE B226 R1 EQU HLASM + ESAR RRE B227 R1 EX RX 44 R1,D2(X2,B2) EXITCTL HLASM + EXTRN HLASM GBLA HLASM GBLB HLASM + GBLC HLASM HDR RR 24 R1,R2 HDV S 9E01 D2(B2) + HER RR 34 R1,R2 HIO S 9E00 D2(B2) IAC RRE B224 R1 + IC RX 43 R1,D2(X2,B2) ICM RS BF R1,M3,D2(B2) ICTL HLASM + IPK S B20B IPTE RRE B221 R1,R2 ISEQ HLASM + ISK RR 09 R1,R2 ISKE RRE B229 R1,R2 IVSK RRE B223 R1,R2 + L RX 58 R1,D2(X2,B2) LA RX 41 R1,D2(X2,B2) LASP SSE E500 D1(B1),D2(B2) + LCDR RR 23 R1,R2 LCER RR 33 R1,R2 LCLA HLASM + LCLB HLASM LCLC HLASM LCR RR 13 R1,R2 + LCTL RS B7 R1,R3,D2(B2) LD RX 68 R1,D2(X2,B2) LDR RR 28 R1,R2 + LE RX 78 R1,D2(X2,B2) LER RR 38 R1,R2 LH RX 48 R1,D2(X2,B2) + LM RS 98 R1,R3,D2(B2) LNDR RR 21 R1,R2 LNER RR 31 R1,R2 +1 High Level Assembler Operation Code Table Contents Page 3 +- HLASM R6.0 2024/06/06 09.09 +0Mnemonic Frmt HexOP Operands Mnemonic Frmt HexOP Operands Mnemonic Frmt HexOP Operands +0LNR RR 11 R1,R2 LOCTR HLASM LPDR RR 20 R1,R2 + LPER RR 30 R1,R2 LPR RR 10 R1,R2 LPSW SI 82 D1(B1) + LR RR 18 R1,R2 LRA RX B1 R1,D2(X2,B2) LRDR RR 25 R1,R2 + LRER RR 35 R1,R2 LTDR RR 22 R1,R2 LTER RR 32 R1,R2 + LTORG HLASM LTR RR 12 R1,R2 M RX 5C R1,D2(X2,B2) + MACRO HLASM MC SI AF D1(B1),I2 MD RX 6C R1,D2(X2,B2) + MDE RX 7C R1,D2(X2,B2) MDER RR 3C R1,R2 MDR RR 2C R1,R2 + ME RX 7C R1,D2(X2,B2) MEND HLASM MER RR 3C R1,R2 + MEXIT HLASM MH RX 4C R1,D2(X2,B2) MHELP HLASM + MNOTE HLASM MP SS FC D1(L1,B1),D2(L2,B2) MR RR 1C R1,R2 + MVC SS D2 D1(L,B1),D2(B2) MVCIN SS E8 D1(L,B1),D2(B2) MVCK SS D9 D1(R1,B1),D2(B2),R3 + MVCL RR 0E R1,R2 MVCP SS DA D1(R1,B1),D2(B2),R3 MVCS SS DB D1(R1,B1),D2(B2),R3 + MVI SI 92 D1(B1),I2 MVN SS D1 D1(L,B1),D2(B2) MVO SS F1 D1(L1,B1),D2(L2,B2) + MVZ SS D3 D1(L,B1),D2(B2) MXD RX 67 R1,D2(X2,B2) MXDR RR 27 R1,R2 + MXR RR 26 R1,R2 N RX 54 R1,D2(X2,B2) NC SS D4 D1(L,B1),D2(B2) + NI SI 94 D1(B1),I2 NOP RX 470. D2(X2,B2) NOPR RR 070. R2 + NR RR 14 R1,R2 O RX 56 R1,D2(X2,B2) OC SS D6 D1(L,B1),D2(B2) + OI SI 96 D1(B1),I2 OPSYN HLASM OR RR 16 R1,R2 + ORG HLASM PACK SS F2 D1(L1,B1),D2(L2,B2) PC S B218 D2(B2) + POP HLASM PRINT HLASM PT RRE B228 R1,R2 + PTLB S B20D PUNCH HLASM PUSH HLASM + RDD SI 85 D1(B1),I2 REPRO HLASM RIO S 9C02 D2(B2) + RMODE HLASM RRB S B213 D2(B2) RRBE RRE B22A R1,R2 + RSECT HLASM S RX 5B R1,D2(X2,B2) SAC S B219 D2(B2) + SCK S B204 D2(B2) SCKC S B206 D2(B2) SD RX 6B R1,D2(X2,B2) + SDR RR 2B R1,R2 SE RX 7B R1,D2(X2,B2) SER RR 3B R1,R2 + SETA HLASM SETAF HLASM SETB HLASM + SETC HLASM SETCF HLASM SH RX 4B R1,D2(X2,B2) + SIGP RS AE R1,R3,D2(B2) SIO S 9C00 D2(B2) SIOF S 9C01 D2(B2) + SL RX 5F R1,D2(X2,B2) SLA RS 8B R1,D2(B2) SLDA RS 8F R1,D2(B2) + SLDL RS 8D R1,D2(B2) SLL RS 89 R1,D2(B2) SLR RR 1F R1,R2 + SP SS FB D1(L1,B1),D2(L2,B2) SPACE HLASM SPKA S B20A D2(B2) + SPM RR 04 R1 SPT S B208 D2(B2) SPX S B210 D2(B2) + SR RR 1B R1,R2 SRA RS 8A R1,D2(B2) SRDA RS 8E R1,D2(B2) + SRDL RS 8C R1,D2(B2) SRL RS 88 R1,D2(B2) SRP SS F0 D1(L1,B1),D2(B2),I3 + SSAR RRE B225 R1 SSK RR 08 R1,R2 SSKE RRE B22B R1,R2 + SSM SI 80 D1(B1) ST RX 50 R1,D2(X2,B2) STAP S B212 D2(B2) + START HLASM STC RX 42 R1,D2(X2,B2) STCK S B205 D2(B2) + STCKC S B207 D2(B2) STCM RS BE R1,M3,D2(B2) STCTL RS B6 R1,R3,D2(B2) + STD RX 60 R1,D2(X2,B2) STE RX 70 R1,D2(X2,B2) STH RX 40 R1,D2(X2,B2) + STIDC S B203 D2(B2) STIDP S B202 D2(B2) STM RS 90 R1,R3,D2(B2) + STNSM SI AC D1(B1),I2 STOSM SI AD D1(B1),I2 STPT S B209 D2(B2) + STPX S B211 D2(B2) SU RX 7F R1,D2(X2,B2) SUR RR 3F R1,R2 + SVC RR 0A I1 SW RX 6F R1,D2(X2,B2) SWR RR 2F R1,R2 + SXR RR 37 R1,R2 TB RRE B22C R1,R2 TCH S 9F00 D2(B2) + TIO S 9D00 D2(B2) TITLE HLASM TM SI 91 D1(B1),I2 + TPROT SSE E501 D1(B1),D2(B2) TR SS DC D1(L,B1),D2(B2) TRT SS DD D1(L,B1),D2(B2) + TS SI 93 D1(B1) UNPK SS F3 D1(L1,B1),D2(L2,B2) USING HLASM + VA VST A420 VR1,VR3,RS2(RT2) VACD VST A417 VR1,RS2(RT2) VACDR VV A517 VR1,VR2 + VACE VST A407 VR1,RS2(RT2) VACER VV A507 VR1,VR2 VACRS S A6CB D2(B2) + VACSV S A6CA D2(B2) VAD VST A410 VR1,VR3,RS2(RT2) VADQ QV A590 VR1,QR3,VR2 + VADR VV A510 VR1,VR3,VR2 VADS QST A490 VR1,QR3,RS2(RT2) VAE VST A400 VR1,VR3,RS2(RT2) + VAEQ QV A580 VR1,QR3,VR2 VAER VV A500 VR1,VR3,VR2 VAES QST A480 VR1,QR3,RS2(RT2) +1 High Level Assembler Operation Code Table Contents Page 4 +- HLASM R6.0 2024/06/06 09.09 +0Mnemonic Frmt HexOP Operands Mnemonic Frmt HexOP Operands Mnemonic Frmt HexOP Operands +0VAQ QV A5A0 VR1,QR3,VR2 VAR VV A520 VR1,VR3,VR2 VAS QST A4A0 VR1,QR3,RS2(RT2) + VC VST A428 M1,VR3,RS2(RT2) VCD VST A418 M1,VR3,RS2(RT2) VCDQ QV A598 M1,QR3,VR2 + VCDR VV A518 M1,VR3,VR2 VCDS QST A498 M1,QR3,RS2(RT2) VCE VST A408 M1,VR3,RS2(RT2) + VCEQ QV A588 M1,QR3,VR2 VCER VV A508 M1,VR3,VR2 VCES QST A488 M1,QR3,RS2(RT2) + VCOVM RRE A643 R1 VCQ QV A5A8 M1,QR3,VR2 VCR VV A528 M1,VR3,VR2 + VCS QST A4A8 M1,QR3,RS2(RT2) VCVM RRE A641 VCZVM RRE A642 R1 + VDD VST A413 VR1,VR3,RS2(RT2) VDDQ QV A593 VR1,QR3,VR2 VDDR VV A513 VR1,VR3,VR2 + VDDS QST A493 VR1,QR3,RS2(RT2) VDE VST A403 VR1,VR3,RS2(RT2) VDEQ QV A583 VR1,QR3,VR2 + VDER VV A503 VR1,VR3,VR2 VDES QST A483 VR1,QR3,RS2(RT2) VL VST A409 VR1,RS2(RT2) + VLBIX RSEv E428 VR1,VR3,D2(B2) VLCDR VV A552 VR1,VR2 VLCER VV A542 VR1,VR2 + VLCR VV A562 VR1,VR2 VLCVM VS A681 RS2 VLD VST A419 VR1,RS2(RT2) + VLDQ QV A599 VR1,QR2 VLDR VV A519 VR1,VR2 VLE VST A409 VR1,RS2(RT2) + VLEL VR A628 VR1,QR3,R2 VLELD VR A618 VR1,QR3,R2 VLELE VR A608 VR1,QR3,R2 + VLEQ QV A589 VR1,QR2 VLER VV A509 VR1,VR2 VLH VST A429 VR1,RS2(RT2) + VLI RSEv E400 VR1,VR3,D2(B2) VLID RSEv E410 VR1,VR3,D2(B2) VLIE RSEv E400 VR1,VR3,D2(B2) + VLINT VST A42A VR1,RS2(RT2) VLM VST A40A VR1,RS2(RT2) VLMD VST A41A VR1,RS2(RT2) + VLMDQ QV A59A VR1,QR2 VLMDR VV A51A VR1,VR2 VLME VST A40A VR1,RS2(RT2) + VLMEQ QV A58A VR1,QR2 VLMER VV A50A VR1,VR2 VLMQ QV A5AA VR1,QR2 + VLMR VV A50A VR1,VR2 VLNDR VV A551 VR1,VR2 VLNER VV A541 VR1,VR2 + VLNR VV A561 VR1,VR2 VLPDR VV A550 VR1,VR2 VLPER VV A540 VR1,VR2 + VLPR VV A560 VR1,VR2 VLQ QV A5A9 VR1,QR2 VLR VV A509 VR1,VR2 + VLVCA S A6C4 D2(B2) VLVCU RRE A645 R1 VLVM VS A680 RS2 + VLVXA S A6C7 D2(B2) VLY VST A40B VR1,RS2(RT2) VLYD VST A41B VR1,RS2(RT2) + VLYE VST A40B VR1,RS2(RT2) VLZDR VV A51B VR1 VLZER VV A50B VR1 + VLZR VV A50B VR1 VM VST A422 VR1,VR3,RS2(RT2) VMAD VST A414 VR1,VR3,RS2(RT2) + VMADQ QV A594 VR1,QR3,VR2 VMADS QST A494 VR1,QR3,RS2(RT2) VMAE VST A404 VR1,VR3,RS2(RT2) + VMAEQ QV A584 VR1,QR3,VR2 VMAES QST A484 VR1,QR3,RS2(RT2) VMCD VST A416 VR1,VR3,RS2(RT2) + VMCDR VV A516 VR1,VR3,VR2 VMCE VST A406 VR1,VR3,RS2(RT2) VMCER VV A506 VR1,VR3,VR2 + VMD VST A412 VR1,VR3,RS2(RT2) VMDQ QV A592 VR1,QR3,VR2 VMDR VV A512 VR1,VR3,VR2 + VMDS QST A492 VR1,QR3,RS2(RT2) VME VST A402 VR1,VR3,RS2(RT2) VMEQ QV A582 VR1,QR3,VR2 + VMER VV A502 VR1,VR3,VR2 VMES QST A482 VR1,QR3,RS2(RT2) VMNSD VR A611 VR1,QR3,R2 + VMNSE VR A601 VR1,QR3,R2 VMQ QV A5A2 VR1,QR3,VR2 VMR VV A522 VR1,VR3,VR2 + VMRRS S A6C3 D2(B2) VMRSV S A6C1 D2(B2) VMS QST A4A2 VR1,QR3,RS2(RT2) + VMSD VST A415 VR1,VR3,RS2(RT2) VMSDQ QV A595 VR1,QR3,VR2 VMSDS QST A495 VR1,QR3,RS2(RT2) + VMSE VST A405 VR1,VR3,RS2(RT2) VMSEQ QV A585 VR1,QR3,VR2 VMSES QST A485 VR1,QR3,RS2(RT2) + VMXAD VR A612 VR1,QR3,R2 VMXAE VR A602 VR1,QR3,R2 VMXSD VR A610 VR1,QR3,R2 + VMXSE VR A600 VR1,QR3,R2 VN VST A424 VR1,VR3,RS2(RT2) VNQ QV A5A4 VR1,QR3,VR2 + VNR VV A524 VR1,VR3,VR2 VNS QST A4A4 VR1,QR3,RS2(RT2) VNVM VS A684 RS2 + VO VST A425 VR1,VR3,RS2(RT2) VOQ QV A5A5 VR1,QR3,VR2 VOR VV A525 VR1,VR3,VR2 + VOS QST A4A5 VR1,QR3,RS2(RT2) VOVM VS A685 RS2 VRCL S A6C5 D2(B2) + VRRS RRE A648 R1 VRSV RRE A64A R1 VRSVC RRE A649 R1 + VS VST A421 VR1,VR3,RS2(RT2) VSD VST A411 VR1,VR3,RS2(RT2) VSDQ QV A591 VR1,QR3,VR2 + VSDR VV A511 VR1,VR3,VR2 VSDS QST A491 VR1,QR3,RS2(RT2) VSE VST A401 VR1,VR3,RS2(RT2) + VSEQ QV A581 VR1,QR3,VR2 VSER VV A501 VR1,VR3,VR2 VSES QST A481 VR1,QR3,RS2(RT2) + VSLL RSEv E425 VR1,VR3,D2(B2) VSPSD VR A61A VR1,QR2 VSQ QV A5A1 VR1,QR3,VR2 + VSQD VST A453 VR1,RS2(RT2) VSQDR VV A553 VR1,VR2 VSQE VST A443 VR1,RS2(RT2) + VSQER VV A543 VR1,VR2 VSR VV A521 VR1,VR3,VR2 VSRL RSEv E424 VR1,VR3,D2(B2) + VSRRS S A6C2 D2(B2) VSRSV S A6C0 D2(B2) VSS QST A4A1 VR1,QR3,RS2(RT2) + VST VST A40D VR1,RS2(RT2) VSTD VST A41D VR1,RS2(RT2) VSTE VST A40D VR1,RS2(RT2) + VSTH VST A42D VR1,RS2(RT2) VSTI RSEv E401 VR1,VR3,D2(B2) VSTID RSEv E411 VR1,VR3,D2(B2) + VSTIE RSEv E401 VR1,VR3,D2(B2) VSTK VST A40F VR1,RS2(RT2) VSTKD VST A41F VR1,RS2(RT2) + VSTKE VST A40F VR1,RS2(RT2) VSTM VST A40E VR1,RS2(RT2) VSTMD VST A41E VR1,RS2(RT2) + VSTME VST A40E VR1,RS2(RT2) VSTVM VS A682 RS2 VSTVP S A6C8 D2(B2) +1 High Level Assembler Operation Code Table Contents Page 5 +- HLASM R6.0 2024/06/06 09.09 +0Mnemonic Frmt HexOP Operands Mnemonic Frmt HexOP Operands Mnemonic Frmt HexOP Operands +0VSVMM S A6C6 D2(B2) VTAD VST A454 VR1,VR3,RS2(RT2) VTAE VST A444 VR1,VR3,RS2(RT2) + VTSD VST A455 VR1,VR3,RS2(RT2) VTSE VST A445 VR1,VR3,RS2(RT2) VTVM RRE A640 + VX VST A426 VR1,VR3,RS2(RT2) VXEL VR A629 VR1,QR3,R2 VXELD VR A619 VR1,QR3,R2 + VXELE VR A609 VR1,QR3,R2 VXQ QV A5A6 VR1,QR3,VR2 VXR VV A526 VR1,VR3,VR2 + VXS QST A4A6 VR1,QR3,RS2(RT2) VXVC RRE A644 R1 VXVM VS A686 RS2 + VXVMM RRE A646 R1 VZPSD VR A61B VR1 WRD SI 84 D1(B1),I2 + WXTRN HLASM X RX 57 R1,D2(X2,B2) XATTR HLASM + XC SS D7 D1(L,B1),D2(B2) XI SI 97 D1(B1),I2 XR RR 17 R1,R2 + ZAP SS F8 D1(L1,B1),D2(L2,B2) +1 External Symbol Dictionary Page 6 +-Symbol Type Id Address Length Owner Id Flags Alias-of HLASM R6.0 2024/06/06 09.09 +0IEFBR14 SD 00000001 00000000 00000004 00 +1 Page 7 + Active Usings: None +0 Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2024/06/06 09.09 +0000000 00000 00004 1 IEFBR14 CSECT + 000000 1BFF 2 SR 15,15 + 000002 07FE 3 BR 14 + 4 END +1 Unreferenced Symbols Defined in CSECTs Page 8 +- Defn Symbol HLASM R6.0 2024/06/06 09.09 +0 1 IEFBR14 +1 General Purpose Register Cross Reference Page 9 +- Register References (M=modified, B=branch, U=USING, D=DROP, N=index) HLASM R6.0 2024/06/06 09.09 +0 0(0) (no references identified) + 1(1) (no references identified) + 2(2) (no references identified) + 3(3) (no references identified) + 4(4) (no references identified) + 5(5) (no references identified) + 6(6) (no references identified) + 7(7) (no references identified) + 8(8) (no references identified) + 9(9) (no references identified) + 10(A) (no references identified) + 11(B) (no references identified) + 12(C) (no references identified) + 13(D) (no references identified) + 14(E) 3B + 15(F) 2M 2 +1 Diagnostic Cross Reference and Assembler Summary Page 10 +- HLASM R6.0 2024/06/06 09.09 +0 No Statements Flagged in this Assembly + HIGH LEVEL ASSEMBLER, 5696-234, RELEASE 6.0, PTF UI80020 +0SYSTEM: z/OS 02.05.00 JOBNAME: JGANCI1 STEPNAME: ASM PROCSTEP: C +0Unicode Module: ASMA047C From Page 1148 To Page 17584 ECECP: International 1 + Data Sets Allocated for this Assembly + Con DDname Data Set Name Volume Member + P1 SYSIN JGANCI.TEST.SOURCE xxxxxx IEFBR14 + L1 SYSLIB JGANCI.TEST.MACRO xxxxxx + L2 SYS1.MACLIB xxxxxx + L3 SYS1.MODGEN xxxxxx + SYSLIN SYS24158.T090935.RA000.JGANCI1.OBJ.H01 xxxxxx + SYSPRINT JGANCI.TEST.SYSPRINT xxxxxx IEFBR14 + + 26600K allocated to Buffer Pool Storage required 200K + 4 Primary Input Records Read 0 Library Records Read 0 Work File Reads + 0 ASMAOPT Records Read 288 Primary Print Records Written 0 Work File Writes + 3 Object Records Written 0 ADATA Records Written +0Assembly Start Time: 09.09.35 Stop Time: 09.09.35 Processor Time: 00.00.00.0005 + Return Code 000 diff --git a/rt/rt/OPCD$DOS.MLC b/rt/rt/OPCD$DOS.MLC deleted file mode 100644 index 58c52a979..000000000 --- a/rt/rt/OPCD$DOS.MLC +++ /dev/null @@ -1,46 +0,0 @@ -OPCD$DOS TITLE 'Validate DOS opcode table' -*********************************************************************** -* Start create : 2024-05-31 -* 1st delivery : -* Designer : AF Kornelis -* Programmer : AF Kornelis -* Purpose : For testing -*********************************************************************** - - YREGS , * register equates - -*********************************************************************** -* -* Program entry and linkage -* -*********************************************************************** -OPCD$DOS CSECT , * -*PCD$DOS AMODE 24 * Not supported in DOS -*PCD$DOS RMODE 24 * Not supported in DOS - - USING OPCD$DOS,R15 * Establish addressability - B START * Skip header data - DC AL1(START-*),C'&SYSECT &SYSDATE &SYSTIME' -START DS 0H - STM R14,R12,12(R13) * Save GPRs - LR R12,R15 * Copy base address - DROP R15 * No longer needed - USING OPCD$DOS,R12 * Re-establish addressability - - LA R15,SAVEAREA * Point new savearea - ST R15,8(,R13) * Set ptr to new savearea - ST R13,4(,R15) * Set ptr from new to prev save - LR R13,R15 * Activate new savearea - - B MAINLINE * Start the program -* -* Major constants for this program -MARKER DC C'Mnemonic Frmt HexOP Operands ' -&ENTRYLEN SETA (L'MARKER) * Marker Length = Entry Length -&TBLSIZE SETA 5000 * Max nr of opcodes to expect -&Z390LEN SETA 256 * Length of z390 listing record -&HLASMLEN SETA 160 * Length of HLASM listing record - - COPY ZRTOPTBL * Logic to compare optable lists - - END , * diff --git a/rt/rt/OPCD$DOS.OPT b/rt/rt/OPCD$DOS.OPT index dfce0b632..2c32e09c6 100644 --- a/rt/rt/OPCD$DOS.OPT +++ b/rt/rt/OPCD$DOS.OPT @@ -1,5 +1,6 @@ -optable(dos,list) +noallow + optable(dos,list) stats noloadhigh - dump +nodump notest diff --git a/src/az390.java b/src/az390.java index 5ee7c0af4..9d4822a65 100644 --- a/src/az390.java +++ b/src/az390.java @@ -2242,22 +2242,49 @@ else if (tz390.op_trace_type[index]==153 // #500 case 58: my_format="QST"; // #500 my_operands="VR1,QR3,RS2(RT2)"; // #500 + if (tz390.op_trace_type[index]==581) // #533 + {my_operands="M1,QR3,RS2(RT2)"; // #533 + } // #533 break; case 59: my_format="QV"; // #500 my_operands="VR1,QR3,VR2"; // #500 + if (tz390.op_trace_type[index]==591) // #533 + {my_operands="M1,QR3,VR2"; // #533 + } // #533 + else if (tz390.op_trace_type[index]==592) // #533 + {my_operands="VR1,QR2"; // #533 + } // #533 break; case 60: my_format="VST"; // #500 my_operands="VR1,VR3,RS2(RT2)"; // #500 + if (tz390.op_trace_type[index]==601) // #533 + {my_operands="VR1,RS2(RT2)"; // #533 + } // #533 + else if (tz390.op_trace_type[index]==602) // #533 + {my_operands="M1,VR3,RS2(RT2)"; // #533 + } // #533 break; case 61: my_format="VV"; // #500 my_operands="VR1,VR2"; // #500 + if (tz390.op_trace_type[index]==611) // #533 + {my_operands="VR1,VR3,VR2"; // #533 + } // #533 + else if (tz390.op_trace_type[index]==612) // #533 + {my_operands="M1,VR3,VR2"; // #533 + } // #533 + else if (tz390.op_trace_type[index]==613) // #533 + {my_operands="VR1"; // #533 + } // #533 break; case 62: my_format="RRE"; // #500 my_operands="R1"; // #500 + if (tz390.op_trace_type[index]==621) // #533 + {my_operands=""; // #533 + } // #533 break; case 63: my_format="RSEv"; // #500 @@ -2270,6 +2297,12 @@ else if (tz390.op_trace_type[index]==153 // #500 case 65: my_format="VR"; // #500 my_operands="VR1,QR3,R2"; // #500 + if (tz390.op_trace_type[index]==651) // #533 + {my_operands="VR1,QR2"; // #533 + } // #533 + if (tz390.op_trace_type[index]==652) // #533 + {my_operands="VR1"; // #533 + } // #533 break; case 66: my_format="VS"; // #500 diff --git a/src/tz390.java b/src/tz390.java index b5eec3c15..7fc45eca6 100644 --- a/src/tz390.java +++ b/src/tz390.java @@ -320,14 +320,15 @@ public class tz390 { * 2021-09-07 dsh #230 fix E7CC option, fix E7C0-E7C7 OR 8 with operand * 2022-01-16 DSH #343 increase maxline from 200000 to 400000 for rpi\zivp.asm from Dan Greiner * 2022-01-22 DSH #335 acall - restored APARM used to set &(acall)(n) just before aentry - * 2022-03-26 DSH #375 change APARM opcode directive from APARM to ACALLPRM + * 2022-03-26 DSH #375 change APARM opcode directive from APARM to ACALLPRM * 2023-01-22 RPI 1598 re-implement javadoc changes by Hugh Sweeney * 2022-10-24 jjg #451 z390 ignores CODEPAGE option for input; * replace non-printable with '.' in PRN, BAL, PCH * 2023-06-21 AFK #485 fix O attribute value for extended mnemonics * 2023-06-22 AFK #495 fix O attribure value for vector instructions * 2023-07-02 DSH/AFK #503 add support for new z16 instructions to opcode tables - * 2024-05-30 afk #500 List suboption for options optable/machine not implemented correctly + * 2024-05-30 AFK #500 List suboption for options optable/machine not implemented correctly + * 2024-06-07 AFK #533 Correct OPTABLE(370,LIST) output to match HLASM ******************************************************** * Shared z390 tables (last RPI) *****************************************************/ @@ -1605,23 +1606,8 @@ public class tz390 { "--=USING,124,--", // 7370 "USING" 124 "--=WXTRN,120,--", // 7330 "WXTRN" 120 }; - String[] op_table_DOS_obsolete = // Table added for RPI 1209N - // These instructions are not included in pz390 and therefore cause a S0C1 failure when executed - {}; // list is empty now, to be removed once we are sure it will not be needed anymore #500 String[] op_table_DOS_notsupported = // Table added for RPI 1209A - { // #500 -// "WRD SI 84 D1(B1),I2", #500 -// "RDD SI 85 D1(B1),I2", #500 -// "SIO S 9C00 D2(B2)", #500 -// "SIOF S 9C01 D2(B2)", #500 -// "TIO S 9D00 D2(B2)", #500 -// "CLRIO S 9D01 D2(B2)", #500 -// "HIO S 9E00 D2(B2)", #500 -// "HDV S 9E01 D2(B2)", #500 -// "TCH S 9F00 D2(B2)", #500 -// "STIDC S B203 D2(B2)", #500 -// "RRB S B213 D2(B2)", #500 - "HPR SI 99 D1(B1)", // model 360/20 only + {"HPR SI 99 D1(B1)", // model 360/20 only "SPSW SI 81 D1(B1)", // model 360/20 only "TIOB IO 9A ??", // model 360/20 only "CIO IO 9B ??", // model 360/20 only @@ -1635,20 +1621,20 @@ public class tz390 { "A404=VMAE,VST,600", // "A404" "VMAE" "VST" 60 "A405=VMSE,VST,600", // "A405" "VMSE" "VST" 60 "A406=VMCE,VST,600", // "A406" "VMCE" "VST" 60 - "A407=VACE,VST,600", // "A407" "VACE" "VST" 60 - "A408=VCE,VST,600", // "A408" "VCE" "VST" 60 - "A409=VL,VST,600", // "A409" "VL" "VST" 60 - "A409=VLE,VST,600", // "A409" "VLE" "VST" 60 - "A40A=VLM,VST,600", // "A40A" "VLM" "VST" 60 - "A40A=VLME,VST,600", // "A40A" "VLME" "VST" 60 - "A40B=VLY,VST,600", // "A40B" "VLY" "VST" 60 - "A40B=VLYE,VST,600", // "A40B" "VLYE" "VST" 60 - "A40D=VST,VST,600", // "A40D" "VST" "VST" 60 - "A40D=VSTE,VST,600", // "A40D" "VSTE" "VST" 60 - "A40E=VSTM,VST,600", // "A40E" "VSTM" "VST" 60 - "A40E=VSTME,VST,600", // "A40E" "VSTME" "VST" 60 - "A40F=VSTK,VST,600", // "A40F" "VSTK" "VST" 60 - "A40F=VSTKE,VST,600", // "A40F" "VSTKE" "VST" 60 + "A407=VACE,VST,601", // "A407" "VACE" "VST" 60 // #533 Omit VR3 + "A408=VCE,VST,602", // "A408" "VCE" "VST" 60 // #533 M1 replaces VR1 + "A409=VL,VST,601", // "A409" "VL" "VST" 60 // #533 Omit VR3 + "A409=VLE,VST,601", // "A409" "VLE" "VST" 60 // #533 Omit VR3 + "A40A=VLM,VST,601", // "A40A" "VLM" "VST" 60 // #533 Omit VR3 + "A40A=VLME,VST,601", // "A40A" "VLME" "VST" 60 // #533 Omit VR3 + "A40B=VLY,VST,601", // "A40B" "VLY" "VST" 60 // #533 Omit VR3 + "A40B=VLYE,VST,601", // "A40B" "VLYE" "VST" 60 // #533 Omit VR3 + "A40D=VST,VST,601", // "A40D" "VST" "VST" 60 // #533 Omit VR3 + "A40D=VSTE,VST,601", // "A40D" "VSTE" "VST" 60 // #533 Omit VR3 + "A40E=VSTM,VST,601", // "A40E" "VSTM" "VST" 60 // #533 Omit VR3 + "A40E=VSTME,VST,601", // "A40E" "VSTME" "VST" 60 // #533 Omit VR3 + "A40F=VSTK,VST,601", // "A40F" "VSTK" "VST" 60 // #533 Omit VR3 + "A40F=VSTKE,VST,601", // "A40F" "VSTKE" "VST" 60 // #533 Omit VR3 "A410=VAD,VST,600", // "A410" "VAD" "VST" 60 "A411=VSD,VST,600", // "A411" "VSD" "VST" 60 "A412=VMD,VST,600", // "A412" "VMD" "VST" 60 @@ -1656,28 +1642,28 @@ public class tz390 { "A414=VMAD,VST,600", // "A414" "VMAD" "VST" 60 "A415=VMSD,VST,600", // "A415" "VMSD" "VST" 60 "A416=VMCD,VST,600", // "A416" "VMCD" "VST" 60 - "A417=VACD,VST,600", // "A417" "VACD" "VST" 60 - "A418=VCD,VST,600", // "A418" "VCD" "VST" 60 - "A419=VLD,VST,600", // "A419" "VLD" "VST" 60 - "A41A=VLMD,VST,600", // "A41A" "VLMD" "VST" 60 - "A41B=VLYD,VST,600", // "A41B" "VLYD" "VST" 60 - "A41D=VSTD,VST,600", // "A41D" "VSTD" "VST" 60 - "A41E=VSTMD,VST,600", // "A41E" "VSTMD" "VST" 60 - "A41F=VSTKD,VST,600", // "A41F" "VSTKD" "VST" 60 + "A417=VACD,VST,601", // "A417" "VACD" "VST" 60 // #533 Omit VR3 + "A418=VCD,VST,602", // "A418" "VCD" "VST" 60 // #533 M1 replaces VR1 + "A419=VLD,VST,601", // "A419" "VLD" "VST" 60 // #533 Omit VR3 + "A41A=VLMD,VST,601", // "A41A" "VLMD" "VST" 60 // #533 Omit VR3 + "A41B=VLYD,VST,601", // "A41B" "VLYD" "VST" 60 // #533 Omit VR3 + "A41D=VSTD,VST,601", // "A41D" "VSTD" "VST" 60 // #533 Omit VR3 + "A41E=VSTMD,VST,601", // "A41E" "VSTMD" "VST" 60 // #533 Omit VR3 + "A41F=VSTKD,VST,601", // "A41F" "VSTKD" "VST" 60 // #533 Omit VR3 "A420=VA,VST,600", // "A420" "VA" "VST" 60 "A421=VS,VST,600", // "A421" "VS" "VST" 60 "A422=VM,VST,600", // "A422" "VM" "VST" 60 "A424=VN,VST,600", // "A424" "VN" "VST" 60 "A425=VO,VST,600", // "A425" "VO" "VST" 60 "A426=VX,VST,600", // "A426" "VX" "VST" 60 - "A428=VC,VST,600", // "A428" "VC" "VST" 60 - "A429=VLH,VST,600", // "A429" "VLH" "VST" 60 - "A42A=VLINT,VST,600", // "A42A" "VLINT" "VST" 60 - "A42D=VSTH,VST,600", // "A42D" "VSTH" "VST" 60 - "A443=VSQE,VST,600", // "A443" "VSQE" "VST" 60 + "A428=VC,VST,602", // "A428" "VC" "VST" 60 // #533 M1 replaces VR1 + "A429=VLH,VST,601", // "A429" "VLH" "VST" 60 // #533 Omit VR3 + "A42A=VLINT,VST,601", // "A42A" "VLINT" "VST" 60 // #533 Omit VR3 + "A42D=VSTH,VST,601", // "A42D" "VSTH" "VST" 60 // #533 Omit VR3 + "A443=VSQE,VST,601", // "A443" "VSQE" "VST" 60 // #533 Omit VR3 "A444=VTAE,VST,600", // "A444" "VTAE" "VST" 60 "A445=VTSE,VST,600", // "A445" "VTSE" "VST" 60 - "A453=VSQD,VST,600", // "A453" "VSQE" "VST" 60 + "A453=VSQD,VST,601", // "A453" "VSQE" "VST" 60 // #533 Omit VR3 "A454=VTAD,VST,600", // "A454" "VTAD" "VST" 60 "A455=VTSD,VST,600", // "A455" "VTSD" "VST" 60 "A480=VAES,QST,580", // "A480" "VAES" "QST" 58 @@ -1686,51 +1672,51 @@ public class tz390 { "A483=VDES,QST,580", // "A483" "VDES" "QST" 58 "A484=VMAES,QST,580", // "A484" "VMAES" "QST" 58 "A485=VMSES,QST,580", // "A485" "VMSES" "QST" 58 - "A488=VCES,QST,580", // "A488" "VCES" "QST" 58 + "A488=VCES,QST,581", // "A488" "VCES" "QST" 58 // #533 M1 replaces VR1 "A490=VADS,QST,580", // "A490" "VADS" "QST" 58 "A491=VSDS,QST,580", // "A491" "VSDS" "QST" 58 "A492=VMDS,QST,580", // "A492" "VMDS" "QST" 58 "A493=VDDS,QST,580", // "A493" "VDDS" "QST" 58 "A494=VMADS,QST,580", // "A494" "VMADS" "QST" 58 "A495=VMSDS,QST,580", // "A495" "VMSDS" "QST" 58 - "A498=VCDS,QST,580", // "A498" "VCDS" "QST" 58 + "A498=VCDS,QST,581", // "A498" "VCDS" "QST" 58 // #533 M1 replaces VR1 "A4A0=VAS,QST,580", // "A4A0" "VAS" "QST" 58 "A4A1=VSS,QST,580", // "A4A1" "VSS" "QST" 58 "A4A2=VMS,QST,580", // "A4A2" "VMS" "QST" 58 "A4A4=VNS,QST,580", // "A4A4" "VNS" "QST" 58 "A4A5=VOS,QST,580", // "A4A5" "VOS" "QST" 58 "A4A6=VXS,QST,580", // "A4A6" "VXS" "QST" 58 - "A4A8=VCS,QST,580", // "A4A8" "VCS" "QST" 58 - "A500=VAER,VV,610", // "A500" "VAER" "VV" 61 - "A501=VSER,VV,610", // "A501" "VSER" "VV" 61 - "A502=VMER,VV,610", // "A502" "VMER" "VV" 61 - "A503=VDER,VV,610", // "A503" "VDER" "VV" 61 - "A506=VMCER,VV,610", // "A506" "VMCER" "VV" 61 + "A4A8=VCS,QST,581", // "A4A8" "VCS" "QST" 58 // #533 M1 replaces VR1 + "A500=VAER,VV,611", // "A500" "VAER" "VV" 61 // #533 Add VR3 + "A501=VSER,VV,611", // "A501" "VSER" "VV" 61 // #533 Add VR3 + "A502=VMER,VV,611", // "A502" "VMER" "VV" 61 // #533 Add VR3 + "A503=VDER,VV,611", // "A503" "VDER" "VV" 61 // #533 Add VR3 + "A506=VMCER,VV,611", // "A506" "VMCER" "VV" 61 // #533 Add VR3 "A507=VACER,VV,610", // "A507" "VACER" "VV" 61 - "A508=VCER,VV,610", // "A508" "VCER" "VV" 61 - // "A509=VLR,VV,610", // "A509" "VLR" "VV" 61 removed by dsh RPI 2202 + "A508=VCER,VV,612", // "A508" "VCER" "VV" 61 // #533 M1,VR3,VR2 + "A509=VLR,VV,610", // "A509" "VLR" "VV" 61 removed by dsh RPI 2202 #533 re-enabled "A509=VLER,VV,610", // "A509" "VLER" "VV" 61 "A50A=VLMR,VV,610", // "A50A" "VLMR" "VV" 61 "A50A=VLMER,VV,610", // "A50A" "VLMER" "VV" 61 - "A50B=VLZR,VV,610", // "A50B" "VLZR" "VV" 61 - "A50B=VLZER,VV,610", // "A50B" "VLZER" "VV" 61 - "A510=VADR,VV,610", // "A510" "VADR" "VV" 61 - "A511=VSDR,VV,610", // "A511" "VSDR" "VV" 61 - "A512=VMDR,VV,610", // "A512" "VMDR" "VV" 61 - "A513=VDDR,VV,610", // "A513" "VDDR" "VV" 61 - "A516=VMCDR,VV,610", // "A516" "VMCDR" "VV" 61 + "A50B=VLZR,VV,613", // "A50B" "VLZR" "VV" 61 // #533 Omit VR3 + "A50B=VLZER,VV,613", // "A50B" "VLZER" "VV" 61 // #533 Omit VR3 + "A510=VADR,VV,611", // "A510" "VADR" "VV" 61 // #533 Add VR3 + "A511=VSDR,VV,611", // "A511" "VSDR" "VV" 61 // #533 Add VR3 + "A512=VMDR,VV,611", // "A512" "VMDR" "VV" 61 // #533 Add VR3 + "A513=VDDR,VV,611", // "A513" "VDDR" "VV" 61 // #533 Add VR3 + "A516=VMCDR,VV,611", // "A516" "VMCDR" "VV" 61 // #533 Add VR3 "A517=VACDR,VV,610", // "A517" "VACDR" "VV" 61 - "A518=VCDR,VV,610", // "A518" "VCDR" "VV" 61 + "A518=VCDR,VV,612", // "A518" "VCDR" "VV" 61 // #533 M1,VR3,VR2 "A519=VLDR,VV,610", // "A519" "VLDR" "VV" 61 "A51A=VLMDR,VV,610", // "A51A" "VLMDR" "VV" 61 - "A51B=VLZDR,VV,610", // "A51B" "VLZDR" "VV" 61 - "A520=VAR,VV,610", // "A520" "VAR" "VV" 61 - "A521=VSR,VV,610", // "A521" "VSR" "VV" 61 - "A522=VMR,VV,610", // "A522" "VMR" "VV" 61 - "A524=VNR,VV,610", // "A524" "VNR" "VV" 61 - "A525=VOR,VV,610", // "A525" "VOR" "VV" 61 - "A526=VXR,VV,610", // "A526" "VXR" "VV" 61 - "A528=VCR,VV,610", // "A528" "VCR" "VV" 61 + "A51B=VLZDR,VV,613", // "A51B" "VLZDR" "VV" 61 // #533 Omit VR2 + "A520=VAR,VV,611", // "A520" "VAR" "VV" 61 // #533 Add VR3 + "A521=VSR,VV,611", // "A521" "VSR" "VV" 61 // #533 Add VR3 + "A522=VMR,VV,611", // "A522" "VMR" "VV" 61 // #533 Add VR3 + "A524=VNR,VV,611", // "A524" "VNR" "VV" 61 // #533 Add VR3 + "A525=VOR,VV,611", // "A525" "VOR" "VV" 61 // #533 Add VR3 + "A526=VXR,VV,611", // "A526" "VXR" "VV" 61 // #533 Add VR3 + "A528=VCR,VV,612", // "A528" "VCR" "VV" 61 // #533 M1,VR3,VR2 "A540=VLPER,VV,610", // "A540" "VLPER" "VV" 61 "A541=VLNER,VV,610", // "A541" "VLNER" "VV" 61 "A542=VLCER,VV,610", // "A542" "VLCER" "VV" 61 @@ -1748,27 +1734,27 @@ public class tz390 { "A583=VDEQ,QV,590", // "A583" "VDEQ" "QV" 59 "A584=VMAEQ,QV,590", // "A584" "VMAEQ" "QV" 59 "A585=VMSEQ,QV,590", // "A585" "VMSEQ" "QV" 59 - "A588=VCEQ,QV,590", // "A588" "VCEQ" "QV" 59 - "A589=VLEQ,QV,590", // "A589" "VLEQ" "QV" 59 - "A58A=VLMEQ,QV,590", // "A58A" "VLMEQ" "QV" 59 + "A588=VCEQ,QV,591", // "A588" "VCEQ" "QV" 59 // #533 M1 replaces VR1 + "A589=VLEQ,QV,592", // "A589" "VLEQ" "QV" 59 // #533 QR2 replaces QR3,VR2 + "A58A=VLMEQ,QV,592", // "A58A" "VLMEQ" "QV" 59 // #533 QR2 replaces QR3,VR2 "A590=VADQ,QV,590", // "A590" "VADQ" "QV" 59 "A591=VSDQ,QV,590", // "A591" "VSDQ" "QV" 59 "A592=VMDQ,QV,590", // "A592" "VMDQ" "QV" 59 "A593=VDDQ,QV,590", // "A593" "VDDQ" "QV" 59 "A594=VMADQ,QV,590", // "A594" "VMADQ" "QV" 59 "A595=VMSDQ,QV,590", // "A595" "VMSDQ" "QV" 59 - "A598=VCDQ,QV,590", // "A598" "VCDQ" "QV" 59 - "A599=VLDQ,QV,590", // "A599" "VLDQ" "QV" 59 - "A59A=VLMDQ,QV,590", // "A59A" "VLMDQ" "QV" 59 + "A598=VCDQ,QV,591", // "A598" "VCDQ" "QV" 59 // #533 M1 replaces VR1 + "A599=VLDQ,QV,592", // "A599" "VLDQ" "QV" 59 // #533 QR2 replaces QR3,VR2 + "A59A=VLMDQ,QV,592", // "A59A" "VLMDQ" "QV" 59 // #533 QR2 replaces QR3,VR2 "A5A0=VAQ,QV,590", // "A5A0" "VAQ" "QV" 59 "A5A1=VSQ,QV,590", // "A5A1" "VSQ" "QV" 59 "A5A2=VMQ,QV,590", // "A5A2" "VMQ" "QV" 59 "A5A4=VNQ,QV,590", // "A5A4" "VNQ" "QV" 59 "A5A5=VOQ,QV,590", // "A5A5" "VOQ" "QV" 59 "A5A6=VXQ,QV,590", // "A5A6" "VXQ" "QV" 59 - "A5A8=VCQ,QV,590", // "A5A8" "VCQ" "QV" 59 - "A5A9=VLQ,QV,590", // "A5A9" "VLQ" "QV" 59 - "A5AA=VLMQ,QV,590", // "A5AA" "VLMQ" "QV" 59 + "A5A8=VCQ,QV,591", // "A5A8" "VCQ" "QV" 59 // #533 M1 replaces VR1 + "A5A9=VLQ,QV,592", // "A5A9" "VLQ" "QV" 59 // #533 QR2 replaces QR3,VR2 + "A5AA=VLMQ,QV,592", // "A5AA" "VLMQ" "QV" 59 // #533 QR2 replaces QR3,VR2 "A600=VMXSE,VR,650", // "A600" "VMXSE" "VR" 65 "A601=VMNSE,VR,650", // "A601" "VMNSE" "VR" 65 "A602=VMXAE,VR,650", // "A602" "VMXAE" "VR" 65 @@ -1779,20 +1765,20 @@ public class tz390 { "A612=VMXAD,VR,650", // "A612" "VMXAD" "VR" 65 "A618=VLELD,VR,650", // "A618" "VLELD" "VR" 65 "A619=VXELD,VR,650", // "A619" "VXELD" "VR" 65 - "A61A=VSPSD,VR,650", // "A61A" "VSPSD" "VR" 65 - "A61B=VZPSD,VR,650", // "A61B" "VZPSD" "VR" 65 + "A61A=VSPSD,VR,651", // "A61A" "VSPSD" "VR" 65 // #533 QR2 replaces QR3,VR2 + "A61B=VZPSD,VR,652", // "A61B" "VZPSD" "VR" 65 // #533 Omit QR3,R2 "A628=VLEL,VR,650", // "A628" "VLEL" "VR" 65 "A629=VXEL,VR,650", // "A629" "VXEL" "VR" 65 - "A640=VTVM,RRE,620", // "A640" "VTVM" "RRE" 62 - "A641=VCVM,RRE,620", // "A641" "VCVM" "RRE" 62 - "A642=VCZVM,RRE,620", // "A642" "VCZVM" "RRE" 62 - "A643=VCOVM,RRE,620", // "A643" "VCOVM" "RRE" 62 - "A644=VXVC,RRE,620", // "A644" "VXVC" "RRE" 62 - "A645=VLVCU,RRE,620", // "A645" "VLVCU" "RRE" 62 - "A646=VXVMM,RRE,620", // "A646" "VXVMM" "RRE" 62 - "A648=VRRS,RRE,620", // "A648" "VRRS" "RRE" 62 - "A649=VRSVC,RRE,620", // "A649" "VRSVC" "RRE" 62 - "A64A=VRSV,RRE,620", // "A64A" "VRSV" "RRE" 62 + "A640=VTVM,62,621", // "A640" "VTVM" "RRE" 62 // #533 no args + "A641=VCVM,62,621", // "A641" "VCVM" "RRE" 62 // #533 no args + "A642=VCZVM,62,620", // "A642" "VCZVM" "RRE" 62 // #533 + "A643=VCOVM,62,620", // "A643" "VCOVM" "RRE" 62 // #533 + "A644=VXVC,62,620", // "A644" "VXVC" "RRE" 62 // #533 + "A645=VLVCU,62,620", // "A645" "VLVCU" "RRE" 62 // #533 + "A646=VXVMM,62,620", // "A646" "VXVMM" "RRE" 62 // #533 + "A648=VRRS,62,620", // "A648" "VRRS" "RRE" 62 // #533 + "A649=VRSVC,62,620", // "A649" "VRSVC" "RRE" 62 // #533 + "A64A=VRSV,62,620", // "A64A" "VRSV" "RRE" 62 // #533 "A680=VLVM,VS,660", // "A680" "VLVM" "VS" 66 "A681=VLCVM,VS,660", // "A681" "VLCVM" "VS" 66 "A682=VSTVM,VS,660", // "A682" "VSTVM" "VS" 66 @@ -1823,7 +1809,11 @@ public class tz390 { String[] op_table_370 = // Table added for RPI 1209A {"0D=BASR,RR,20", // 320 "0D" "BASR" "RR" 2 // RPI 1209N "4D=BAS,5,50", // 1150 "4D" "BAS" "RX" 5 + "9C02=RIO,7,70", // "9C02" "RIO" "S" 7 // #533 + "9F01=CLRCH,7,70", // "9F01" "CLRCH" "S" 7 // #533 "AE=SIGP,10,100", // 2540 "AE" "SIGP" "RS" 10 + "B200=CONCS,7,70", // "B200" "CONCS" "S" 7 // #533 + "B201=DISCS,7,70", // "B201" "DISCS" "S" 7 // #533 "B210=SPX,7,70", // 2670 "B210" "SPX" "S" 7 "B211=STPX,7,70", // 2680 "B211" "STPX" "S" 7 "B212=STAP,7,70", // 2690 "B212" "STAP" "S" 7 @@ -1853,7 +1843,7 @@ public class tz390 { "--=AINSERT,204,--", // 7630 "AINSERT" 204 "--=ALIAS,106,--", // 7190 "ALIAS" 106 "--=AMODE,107,--", // 7200 "AMODE" 107 - "--=ACALLPRM,228,--", // "ACALLPRM" resets ACALL parms just before AENTRY // DSH #375 rename APARM to ACALLPRM +// "--=ACALLPRM,228,--", // "ACALLPRM" resets ACALL parms just before AENTRY // DSH #375 rename APARM to ACALLPRM #533 "--=AREAD,206,--", // 7650 "AREAD" 206 "--=ASPACE,126,--", // 7390 "ASPACE" 126 "--=CATTR,108,--", // 7210 "CATTR" 108 @@ -1874,12 +1864,6 @@ public class tz390 { "--=SETCF,219,--", // 7780 "SETCF" 219 "--=XATTR,121,--", // 7340 "XATTR" 121 }; - String[] op_table_370_notsupported = // Table added for RPI 1209A - {"RIO S 9C02 D2(B2)", - "CLRCH S 9F01 D2(B2)", - "CONCS S B200 D2(B2)", - "DISCS S B201 D2(B2)", - }; String[] op_table_XA = // Table added for RPI 1209A {"0102=UPT,1,10", // 20 "0102" "UPT" "E" 1 "0B=BSM,RR,20", // 300 "0B" "BSM" "RR" 2 // RPI 1209N @@ -3296,12 +3280,17 @@ public class tz390 { }; String[] op_table_z390 = // Table added for RPI 1209 {"83=DIAGNOSE,10,100", // RPI 2213 ADD DIAGNOSE/DIAG RS - "83=DIAG,10,100", // RPI 2213 ADD DIAGNOSE/DIAG RS - "B214=SIE,7,70", // RPI 2213 ADD START INTERPRETIVE EXEC S + "83=DIAG,10,100", // RPI 2213 ADD DIAGNOSE/DIAG RS + "B214=SIE,7,70", // RPI 2213 ADD START INTERPRETIVE EXEC S "B22E=PGIN,14,140", // 2860 "B22E" "PGIN" "RRE" 14 "B22F=PGOUT,14,140", // 2870 "B22F" "PGOUT" "RRE" 14 - "--=,122,--", // 7350 "" 122 }; + String[] op_table_DFLT_directives = // Split directives from opcodes #533 + {"--=ACALLPRM,228,--", // "ACALLPRM" resets ACALL parms just before AENTRY #533 + }; // #533 + String[] op_table_z390_directives = // Split directives from opcodes #533 + {"--=,122,--", // 7350 "" 122 #533 + }; // #533 String[] opcode_masks = { // Table added for RPI 1209 "F=", // Always "0=N", // Never @@ -3574,47 +3563,33 @@ public void create_opcodes() // Routine added for RPI 1209 if (opt_assist == true) // RPI 1209M {process_opcodes(op_table_ASSIST); // RPI 1209M } // RPI 1209M + if (opt_optable.equals("Z390") // #533 + || opt_allow) // #533 + {process_opcodes(op_table_z390); // #533 + } // #533 if (opt_optable.equals("DOS")) {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N process_opcodes(op_table_DOS_directives); } if (opt_optable.equals("370")) {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N process_opcodes(op_table_370); - if (opt_vector) // RPI VF01 - {process_opcodes(op_table_vector); - } + process_opcodes(op_table_vector); // #533 process_opcodes(op_table_DOS_directives); process_opcodes(op_table_370_directives); } if (opt_optable.equals("XA")) {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N process_opcodes(op_table_370); - if (opt_vector) // RPI VF01 - {process_opcodes(op_table_vector); - } + process_opcodes(op_table_vector); // #533 process_opcodes(op_table_XA); process_opcodes(op_table_DOS_directives); process_opcodes(op_table_370_directives); } if (opt_optable.equals("ESA")) {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N process_opcodes(op_table_370); - if (opt_vector) // RPI VF01 - {process_opcodes(op_table_vector); - } + process_opcodes(op_table_vector); // #533 process_opcodes(op_table_XA); process_opcodes(op_table_ESA); process_opcodes(op_table_DOS_directives); @@ -3622,9 +3597,6 @@ public void create_opcodes() // Routine added for RPI 1209 } if (opt_optable.equals("ZOP")) {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N process_opcodes(op_table_370); process_opcodes(op_table_XA); process_opcodes(op_table_ESA); @@ -3634,9 +3606,6 @@ public void create_opcodes() // Routine added for RPI 1209 } if (opt_optable.equals("YOP")) {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N process_opcodes(op_table_370); process_opcodes(op_table_XA); process_opcodes(op_table_ESA); @@ -3647,9 +3616,6 @@ public void create_opcodes() // Routine added for RPI 1209 } if (opt_optable.equals("Z9")) // #503 {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N process_opcodes(op_table_370); process_opcodes(op_table_XA); process_opcodes(op_table_ESA); @@ -3661,9 +3627,6 @@ public void create_opcodes() // Routine added for RPI 1209 } if (opt_optable.equals("Z10")) // #503 {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N process_opcodes(op_table_370); process_opcodes(op_table_XA); process_opcodes(op_table_ESA); @@ -3676,63 +3639,36 @@ public void create_opcodes() // Routine added for RPI 1209 } // logic for optables Z11-Z14 is missing. See issue #510 if (opt_optable.equals("Z15")) // rpi 2202 - {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N - process_opcodes(op_table_370); - process_opcodes(op_table_XA); - process_opcodes(op_table_ESA); - process_opcodes(op_table_ZOP); - process_opcodes(op_table_YOP); - process_opcodes(op_table_ZS3); - process_opcodes(op_table_ZS4); - process_opcodes(op_table_Z15); // rpi 2202 - process_opcodes(op_table_DOS_directives); - process_opcodes(op_table_370_directives); - } - if (opt_optable.equals("Z16")) // #503 - {process_opcodes(op_table_DOS); // #503 - if (opt_allow) // #503 - {process_opcodes(op_table_DOS_obsolete); // #503 - } // #503 - process_opcodes(op_table_370); // #503 - process_opcodes(op_table_XA); // #503 - process_opcodes(op_table_ESA); // #503 - process_opcodes(op_table_ZOP); // #503 - process_opcodes(op_table_YOP); // #503 - process_opcodes(op_table_ZS3); // #503 - process_opcodes(op_table_ZS4); // #503 - process_opcodes(op_table_Z15); // #503 - process_opcodes(op_table_Z16); // #503 - process_opcodes(op_table_DOS_directives); // #503 - process_opcodes(op_table_370_directives); // #503 - } // #503 - if (opt_optable.equals("UNI")) {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N process_opcodes(op_table_370); - if (opt_vector) // RPI VF01 - {process_opcodes(op_table_vector); - } process_opcodes(op_table_XA); process_opcodes(op_table_ESA); process_opcodes(op_table_ZOP); process_opcodes(op_table_YOP); process_opcodes(op_table_ZS3); process_opcodes(op_table_ZS4); - process_opcodes(op_table_Z15); // rpi 2202 - process_opcodes(op_table_UNI); + process_opcodes(op_table_Z15); // rpi 2202 process_opcodes(op_table_DOS_directives); process_opcodes(op_table_370_directives); } - if (opt_optable.equals("Z390")) + if (opt_optable.equals("Z16")) // #503 + {process_opcodes(op_table_DOS); // #503 + process_opcodes(op_table_370); // #503 + process_opcodes(op_table_XA); // #503 + process_opcodes(op_table_ESA); // #503 + process_opcodes(op_table_ZOP); // #503 + process_opcodes(op_table_YOP); // #503 + process_opcodes(op_table_ZS3); // #503 + process_opcodes(op_table_ZS4); // #503 + process_opcodes(op_table_Z15); // #503 + process_opcodes(op_table_Z16); // #503 + process_opcodes(op_table_DOS_directives); // #503 + process_opcodes(op_table_370_directives); // #503 + } // #503 + if (opt_optable.equals("UNI") // #533 + || opt_optable.equals("DFLT") // #533 + || opt_optable.equals("Z390")) // #533 {process_opcodes(op_table_DOS); - if (opt_allow) // RPI 1209N - {process_opcodes(op_table_DOS_obsolete); // RPI 1209N - } // RPI 1209N process_opcodes(op_table_370); if (opt_vector) // RPI VF01 {process_opcodes(op_table_vector); @@ -3744,13 +3680,19 @@ public void create_opcodes() // Routine added for RPI 1209 process_opcodes(op_table_ZS3); process_opcodes(op_table_ZS4); process_opcodes(op_table_Z15); // rpi 2202 - process_opcodes(op_table_Z16); // #503 process_opcodes(op_table_UNI); -// process_opcodes(op_table_ASSIST); // RPI 1209M - process_opcodes(op_table_z390); process_opcodes(op_table_DOS_directives); process_opcodes(op_table_370_directives); } + if (opt_optable.equals("DFLT") // #533 + || opt_optable.equals("Z390") // #533 + || opt_allow) // #533 + {process_opcodes(op_table_DFLT_directives); // #533 + } // #533 + if (opt_optable.equals("Z390") // #533 + || opt_allow) // #533 + {process_opcodes(op_table_z390_directives); // #533 + } // #533 if (index2 == 0) // only on first pass: allocate tables {op_code = new String[op_code_count]; // no entries allocated for directives op_name = new String[op_code_count+op_directives_count]; @@ -4509,7 +4451,7 @@ else if (opt_optable.equals("*DFLT")) // no optable specified: use machine-deriv {opt_optable="Z390"; } else - {opt_optable="UNI"; + {opt_optable="DFLT"; // #533 } } // Suboption LIST for options MACHINE/OPTABLE is disallowed for optable UNI in compatibility mode // #503