z390 Portable Mainframe Assembler and Emulator

z390 Project Download
Archive History

Automated Software Tools Corporation
For the latest z390 full release download plus any PTF''s visit Download Archive.  Below are RPI's for z390 prior releases.  For pending RPI's visit RPI Support Request Log.
Release RPI Date OS P/E Sev Problem or Enhancement Description Req
1.2.00g   01/08/07     Maintenance and enhancement release with DFP and TCP/IP sockets support plus SOA application generator.  
  522 12/24/06 XP E 1 Add additional DFP regression tests to TESTDFP1.MLC DSH
  523 12/24/06 XP E 1 Update to Sun Microsystems J2SE 1.5.0 update 10 and verify all regression tests. DSH
  524 12/28/06 XP E 1 Add new TCPIO macro and svc x'7C' to support TCP/IP sockets protocol client/server messaging with functions OPEN, CLOSE, SEND, and RECEIVE.  Add new SOA directory with Service Oriented Architecture (SOA) client server application generation macros in SOA\MACLIB and demo application in SOA\DEMO.  See SOA\README.TXT and run SOA\DEMOSTD.BAT to build and run demo as standard statically linked local application.  Then run SOA\DEMOSOA.BAT to generate, build, and run demo as client server application using 2 remote services to add extended DFP numbers and integer numbers.   Run SOA\DEMOSTOP.BAT to assemble, link, and execute utility to stop server running on specified port.  This support can be used with client applications in any language on any platform supporting TCP/IP sockets to call z390 assembler services on any other TCP/IP connected platform.  Additional SOA demos with clients in other languages calling z390 assembler services will be added to www.mfatc.org as time permits. DSH
  525 12/28/06 XP E 1 Change mz390 to log error and continue versus aborting on subscript out of range. DSH
  526 12/29/06 XP P 1 Change sz390 to trap CFD input decimal value errors and simply exit with return code 12. DSH
  527 12/29/06 XP P 1 Add missing DFP instructions CPSDR LCDFR LDGR LGDR LNDFR LPDFR.  And fix rounding for CGDTR, CGXTR, IEDTR, and IEXTR.  See updated RT\TEST\TESTDFP1.MLC. MM
  528 12/31/06 XP P 1 Correct mz390 to strip trailing period after subscripted parm variable in expression and remove redundant strip code from model variable replacement logic causing one too many stripped periods after SETC variable but not subscripted variables. DSH
  529 01/01/07 XP P 1 Correct mz390 to issue error for undefined &var substitution when running MAC versus ASM which ignores undefined &var's for compatibility. DSH
  530 01/01/07 XP E 1 Add option FORMAT extension to PUNCH to request formatting continuations like MLC or BAL.  The default for punch is variable length ascii with no fixed limit on line lengths.   See SOA\DEMO\DEMOSOA.BAT generation for example usage. DSH
  531 01/06/07 XP P 2 Change pz390 to correct trace format for new DFP instructions and use new instruction format table and switch to optimize tracing. MM
v1.2.00f         Cumulative fixes and enhancements to v1.2.00  
  406 08/08/06 XP E 1 Add ez390 emulation support for remaining new DFP Decimal Floating Point instructions added to az390 in RPI 407 defined in Preliminary DFP doc and referenced on Tachyon website opcode list and IBM APAR #PK18170. DSH
  519 12/21/06 XP P 2 Correct mz390 to prevent error 132 indicating macro proto-type does not match macro file name when mixed case is used.  See LINKLIB\FPCONVRT.MLC DSH
  520 12/21/06 XP E 1 Update the z390 Macro and SVC Services Guide contributed by Melvyn Maltz with CTD and CFD macro DFP ED, DD, and LD conversion support. MM
  521 12/22/06 XP P 2 Correct mz390 to prevent invalid index trap when AIF label is undefined and test fails on first execution and test is true on 2nd execution using generated pseudo code.  See updated RT\TEST\TESTPC1. DSH
v1.2.00e   12/17/06     Cumulative fixes and enhancements to v1.2.00  
  517 12/15/05 XP P 1 Correct pz390 trap on inexact result on DDTR for values such as 9.8/9.9 using default half-up rounding for all ED, DD, and LD operations. MM
  518 12/16/05 XP P 1 Correct additional DFP bugs and add the following instruction support using default half-up rounding:
1)  Add AXTR, SXTR, NXTR. and DXTR extended DFP instr.
2)  Correct pz390 to issue 0C6 specification exception on HFP, BFP, and DFP extended fetch from invalid register pair.
3)   Correct sz390 CTD to handle leading 0 on fractional values. See updated TESTFP1, TESTDFP1, and TESTFPC1  regression tests.
v1.2.00d   12/14/06     Cumulative fixes and enhancements to v1.2.00  
  407 08/08/06 XP E 1 Add z390 initial support for IEEE-754R Decimal Floating Point (DFP) standard arithmetic as defined in Preliminary DFP doc.    Add az390 data formats ED, DD, and LD and associated (MIN) and (MAX) constants.  Add az390 support for all DFP instructions.  Add ez390 runtime support for the following DFP long format instructions: ADTR, SDTR, MDTR, DDTR, CDTR, EEDTR, and CSDTR.  See pending RPI 406 for remaining new instructions.  See IBM General Decimal Arithmetic for overview and description of densely packed decimal encoding method. See following updated regression tests:
1)  TESTINS1.MLC - 54 new DFP instruction assembly tests
2)  TESTDC1.MLC - verify DFP min and max constants
3)  TESTFPC1.MLC - test DFP constants using CTD/CFD svcs with values from -max to +max for each type.
4)  TESTFPC2.MLC - test min and max using CTD/CFD svcs.
5)  TESTDFP1.MLC - test new DFP instruction emulation
6)  DEMODFP1.MLC - simple demo showing different results using HFP DH versus DFP DD long operations to add 1.1+2.2.  The DH results have rounding error due to irrational fraction in binary versus exact result using DD base 10 format.
  513 12/02/06 XP P 1 Correct CFD and CTD support to prevent erroneous RC=8 and update TESTCFD1.MLC and TESTCTD1.MLC to test return codes.  See updated documentation on Macros and SVC's contributed by Melvyn Maltz..  MM
  514 12/02/06 XP E 1 Add CFD and CTD macro/svc support for DFP data type conversion to/from decimal display formats.  See updated TESTCFD1.MLC, TESTCTD1.MLC, TESTFPC1.MLC and TESTFPC2.MLC. DSH
  515 12/09/06 XP E 1 Change ez390 TEST option to remove EZ390I message prefix from console and log displays. DSH
  516 12/12/06 XP P 1 Correct mz390 to handle double single quotes in PUNCH text to be output as single quote. DSH
v1.2.00c   11/31/06     Cumulative fixes and enhancements for v1.2.00  
  508 11/29/06 XP P 1 Correct command error 51 occurring on INI startup commands and invalid path for batch commands from file menu after CD command has been issued.  Also correct incorrect z390.log path with extra separator and suffix.  I've added new startup command test and additional manual GUI tests to my regression test scripts. MM
  509 11/30/06 LX P 1 Change font default from "Courier New" to "Monospace" for improved look on Linux (no change for Windows). MW
  510 11/30/06 LX P 1 Change the hard coded NOTEPAD command to EDITOR and use the following corrected default program names with optional environment variable overrides:
Program Environment Var. Windows Def. Linux Def.
ACROBAT Z390ACROBAT start acroread
BROWSER Z390BROWSER start firefox
EDITOR Z390EDIT (corrected 11/02/09) notepad.exe xemacs
  511 11/30/06 LX E 1 Add az390 option MCALL with default NOMCALL to show each macro call statement and operands plus each macro exit along with macro nesting level on PRN listing.  These call comment statements also appear in generated BAL file using the mz390 option LISTCALL. MW
  512 12/02/06 LX E 1 Change CFD to support general floating point values for 128 bit format and truncate to exact integer.  Change return codes for CFD and CTD to be as follows:
1)  RC=0 ok
2)  RC=8 invalid type or register request
3)  RC=12 invalid value (out of range)

See updated TESTCFD1.MLC

v1.2.00b   11/29/06     PTF with cumulative fixes for v1.2.00  
  417 08/14/06 XP E 1 Add DS/DC full bit length support.  See new regression test RT\TEST\TESTDC2.MLC AK
  500 11/17/06 LX E 1 Update z390 source to support Windows and Linux as follows:
Application Windows Linux
Actobat PDF reader Start acroread
Browser Start foxfire
Command processor cmd.exe perl
Editor Notepad xemacs

1)  Fix GUI commands using above defaults
2)  Use system separator (vs \r\n) for Windows and Linux
2)  Run z390 from any directory using the following search paths:
     a) The directory given in the Z390 environment variable
     b) $HOME/lib/z390
     c) /usr/local/lib/z390
     d) /usr/lib/z390

  501 11/28/06 XP P 1 Correct az390 to handle literal minus absolute expression in operand. AK
  502 11/28/06 XP P 2 For compatibility, ignore undefined variables in model statements. AK
  503 11/28/06 XP P 2 Remove duplicate MNOTE's from SYSTERM log. AK
  504 11/28/06 XP P 2 Update the following contributed by Melvyn Maltz:
1)  z390 program services
2)  z390 macro ans svc services

3)  z390 Benchmark Statistics using INSTIME.MLC
  505 11/28/06 XP P 2 Correct ez390 interact TEST mode to prevent duplicate messages on console. MM
  506 11/28/06 XP P 2 Correct z390 command scrolling to omit duplicates. MM
  507 11/28/06 XP E 1 Add input field register support for CTD and output register support for CFD. MM
1.2.00a         PTF with cumulative fixes for v1.2.00  
  417 08/14/06 XP E 1 Add DS/DC full bit length support.  (Only type A and B supported in this fist phase.  Remaining types will be in v1.2.00b as time ran out.) AK
  498 11/16/06 XP E 1 Change mz390 to suppress blank lines generated from macro code. HS
  499 11/16/06 XP P 1 Merge modifications and fixes to z390 open source to enable it to run both command line and GUI interfaces on Linux based on contributions by Martin ward.  The mods to v1.2.00 for Linux are available here z390 Linux Support.  The changes made to v1.2.00a source code to merge this changes are as follows:
1) Retain specified file names in lower case to match actual file name since Linux has case sensitive file system.
2) Issue CD file to change directory and/or drive on Linux versus separate drive change command then directory change command on Windows.
3) Correct bug in code to convert from absolute path to relative path where first character of relative path was being dropped.
4) Change BLDL to match on upper or lower case member names in CDE entries which now contain mixed case file names.
5)  Add new global variable z390_os_type in tz390.java to allow
alternate code paths for different host operating systems indicated by z390_os_win and z390_os_linux..
6) Fix created variables to force uppercase variable names
1.2.00   11/13/06     Maintenance and enhancement release  
  255 03/21/06 XP E 1 Add + line indicators on PRN for macro generated statements.  See DEMO\DEMO.PRN. AK
  471 10/07/06 XP P 2 Correct sz390 to cancel STIMER exits at abend. MM
  472 10/07/06 XP P 2 Correct TTIMER to default to TYPE=TU for CANCEL.  See RT\TEST\TESTTIM2.MLC. MM
  473 10/07/06 XP P 1 Correct CALL macro bugs and add additional regression tests.  See updated RT\TEST\TESTCAL1 and RT\TEST\TESTERR2 MM
  474 10/07/06 XP E 2 Change TEST to display traces for all instructions including invalid opcodes when TRACE option is on. See updated RT\TEST\TESTTST1. MM
  475 10/07/06 XP P 1 Correct ESTAE to support format ESTAE EXIT,CT,PARAM=RESTART.  See RT\TEST\TESTSTA1. MM
  476 10/10/06 XP E 1 Speed up MVST by changing from byte by byte copy and test to first scan for ending byte and then issue system array copy to move specified number of bytes.  See RT\TEST\TESTINS2. MM
  477 10/10/06 XP E 1 Enhance CTD and CFD macros as follows:
1)  Support ASCII option for display format input and output
2)  Support register format for input fields
3)  Return code 12 for invalid input values instead of message
4)  Add macro label support
5) Use keyword IN= and OUT=
  478 10/12/06 XP E 1 Improve alignment of error and trace messages by padding program and macro names shorter than 8 characters to 8 for display in messages. See RT\TEST\TESTERR1.BAL and RT\TEST\TESTPC1.TRM. AK
  481 10/14/06 XP E 1 Add support for attribute operators I' and S' previously not supported at all.  See RT\TEST\TESTSYM1. CN
  482 10/15/06 XP E 1 Update z390 documentation
1) z390 Macro and SVC Services document contributed by Melvyn Maltz
2) z390 Macro Pseudo Code new documentation with example trace
3) z390_Linux_Support contributed by Martin Ward
  484 10/19/06 XP E 1 Change all TRACE option output to go to separate files as follows:
1) mz390 - TRACEM and TRACEP to file.TRM
2) az390 - TRACEA to file.TRA
3) lz390 - TRACEL to file.TRL
4) ez390 - TRACE to file.TRE
5) TRACEALL will generate all of the above with all traces.
Each trace file is limited by MAXSIZE option which has default of 50 MB.  See RT\TEST\TESTPC1.TRM and RT\TEST\TESTOPR1.TRM showing all variables in all AIF and SET statements executed.
  488 11/06/06 XP P 1 Correct az390 to issue error for label reference which is only defined as macro label type 'M' but has not been defined as ordinary symbol.  See updated RT\TEST\TESTERR2.MLC MM
  489 11/09/06 XP P 1 Correct az390 to prevent trap on ENTRY symbol which is undefined at the time of first reference due to being a macro label versus ordinary symbol.  See updated RT\TEST\TESTASM1.MLC. BD
  490 11/12/06 XP P 2 Correct the following ez390 TEST command processor errors:
1)  Prevent trap on invalid numeric input .
2)  Correct L command 0r and 15r to only dump specified reg.
3) Put all log messages on TRE trace file in TRACE or TEST mode.
  491 11/12/06 XP P 1 Correct FREEMAIN svc support to correct corrupted FQE length field after merging two FQE entries.  See new RT\TEST\TESTMEM4.MLC from Melvyn Maltz. MM
  492 11/12/06 XP P 1 Correct mz390 to allow blank continuation lines.  See updated RT\TEST\TESTASM1.MLC. AK
  493 11/12/06 XP P 1 Correct az390 to correctly handle OPSYN for instructions with no operands such as ISK.  See updated RT\TEST\TESTASM1.MLC.  This also fixes error on other S type instructions with no operands when coded without comma to indicate following comments. AK
  494 11/12/06 XP P 1 Support bit lengths for any DS field when it is not followed by another field.  See RPI 417 pending for remaining bit length support coming.   See RT\TEST\TESTASM1. AK
  495 11/12/06 LX E 1 Add initial support for Linux provided by Martin Ward.  See new z390 web page for Linux with download of Pearle script and modified version of tz390.java to support case sensitive file names. MW
  496 11/13/06 XP P 1 Correct az390 to show correct file number in error message cross reference. DSH
  497 11/13/06 XP E 1 Change mz390.bat macro assembler batch command driver to allocate default 100 MB of memory for user application.  The Windows default appears to be about 50 MB.  This can be set up to limit of physical memory available for very large assemblies.  The largest user case tested on v1.2 has over 450 macros, executed over 45k macro calls.  This assembly used 88 MB of memory and ran in 24 seconds as shown by ERR file statistics. DSH
1.1.02c   11/03/06     Cumulative fixes and enhancements for v1.1.02  
  467 09/26/06 XP E 1 Add additional mz390 pseudo code support:
1) AGO and AIF
3) Add mz390 option PC to generate pseudo code for mz390
4) Add mz390 option TRACEP to trace gen and exec of pseudo code
5) Add mz390 option PCOPT to optimize generated pseudo code:
   a.)  PUSHV, ADD 1, STORV  optimized to single INC.
   b/)  PSUHV, SUB 1, STORV optimized to single DEC.
   c.)  CONCAT with null string reduced to single PUSH.
   d.)  PUSHA, UCOMP reduced to PUSHA with neg. value
   e.)  PUSHA, ADD/SUB/MPY/DIV/COMP?? reduced to 1 op
   f.)  Optimize computed AGO using generating GBLA array
         of target line addresses for reuse regardless of whether PC
         option is on or off.  Note corresponding GBLC arrray of macro
         labels is also generated for display if TRACEP is on.
For example usage run demo\demom8q1 with NOPC and then PC to see difference in speed.  With NOPC it takes over 3 seconds, and with PC it runs under 1 second.   Also see regression tests TESTOPR1 and TESTPC1 with TRACEP generated TRM files.  Note TRM files can be very large showing every macro variable value used in every operation of every AIF and SET instruction. TRACEM now generates same source and generated BAL trace with or without option PC so it can be used to isolated where differences occur when running with with or without PC option.
  468 10/04/06 XP P 1 Correct mz390 to return T'&var = 'N' if &var is numeric sdt within quotes. BD
  469 10/05/06 XP E 2 Add new A'symbol operator extension to return 1 if symbol is defined in look-ahead symbol table else 0. AK
  479 10/12/06 XP P 1 Correct &SYSSTYP to return CSECT for sections started with START. AK
  480 10/13/06 XP P 2 Correct error messages for T' operator indicating L' error etc. CN
  483 10/19/06 XP P 1 Correct lz390 to prevent trap and issue error when obj file being read is truncated due to error in az390. DSH
  485 10/26/06 XP P 1 Correct mz390/az390 locking to ensure az390 processing of last generated BAL line is complete before proceeding with mz390 conditional macro code processing.  This fixes infrequent situation where mz390 posts new bal line and checks if az390 is waiting before az390 ever has chance to leave previous wait state and process the new bal line. DSH
  486 10/30/06 XP E 1 Upgraded Java SDK and JRE to 1.5.0 update 9.  All regression tests will be run on this release starting with z390 v1.1.02c.  The only visable change from running same tests on update 7 is an increase of 8 MB in memory usage shown in .ERR files. DSH
  487 11/03/06 XP P 1 Correct mz390 to prevent character string starting with '~' from causing erroneous expression stack error.  See updated RT\TEST\TESTASM1.MLC HS
1.1.02b 09/26/06 Cumulative fixes for v1.1.02
439 09/08/06 XP E 1 Add mz390 pseudo code generator for conditional macro instructions to speed up execution.  Option PC is new default option to generate pseudo code during first execution of sstatement for reuse if executed again.  Specify NOPC to turn the option off.  Option MAXPC(nnn) can be used to change default pseudo code operation cache working set of 50000.  Pseudo code generation is only of significant benefit when macro code is repeatedly executed many times.  Statistics are provided on total pseudo code operations generated and executed plus the total number of pseudo code lists allocated and reused on least recently used basis if cache size exceeded.  These statistics can be used to compare benefit of pseudo code generation and different cache sizes.  This initial PTF version only supports AGO code generation but it is enough to see the potential benefit.  With PC option an AGO loop executed a million times runs at 2.2 MIPS versus 0.15 MIPS with NOPC option.  The dramatic difference is due to overhead of repeated regular expression parsing and hashed symbol table lookups.  Additional pseuod code support for AIF, SET, and other statements will be added in future versions. DSH
461 09/22/06 XP P 2 Add CCGE and CCLE options to RT1 and fix regression test RT\TEST\TESTTIM2 to allow remaining time interval to be same as previously or greater/less to prevent intermittant failures depending on system activity. DSH
462 09/25/06 XP P 1 Correct mz390 to always assume shorter operand is lower when comparing two string operands. DSH
463 09/25/06 XP P 1 Correct mz390 and az390 to correctly handle quoted string parm spanning 1 or more continuation lines followed by additional parms. DSH
464 09/25/06 XP E 1 Change az390 to only display MNOTE's o ERR file during final assembly phase. DSH
465 09/25/06 XP E 1 Change az390 to allow register 0 to function as a valid base for DSECT such as in the case of PSA.  See RT\TESTASM1.MLC. DSH
466 09/26/06 XP P 1 Correct mz390 lookahead support to handle single character symbols, unlabled DS/DC, and mulitple DSECT's.  See RT\TEST\TESTSYM1.MLC. DSH
1.1.02a         Cumulative PTF fixes for v1.1.02  
  444 09/12/06 XP E 1 Change MNOTE' process to exclude * type from ERR file. AK
  445 09/13/06 XP P 1 Correct mz390 dynamic array expansion bug causing expanded arrays to be reset to initial values.  See RT\TEST\TESTSET1. DSH
  446 09/21/06 XP P 1 Correct mz390 define function D' to return setb type versus seta type to prevent NOT operator from performing binary NOT versus logical NOT.  See RT\TEST\TESTSET1. DSH
  447 09/14/06 XP P 1 Correct mz390 N'&PARM(...) to return correct count when subscript includes variable.  See RT\TEST\TESTMAC1.MLC. DSH
  448 09/14/06 XP P 1 Correct az390 to allow use of DS/DC/EQU processes during lookahead phase of MLC loading without sym lock error. DSH
  449 09/16/06 XP P 1 Correct mz390 to restrict ordinary symbol lookup to just literal symbols with no quotes and variable setc symbols in AIF or SET expressions.  DSH
  450 09/16/06 XP P 1 Correct az390 to prevent truncation of symbol cross reference table when symbol only referenced in lookahead is encountered. DSH
  451 09/17/06 XP P 1 Correct az390 to prevent EQU symbol defined as relative via EQU from being updated to current location counter at end of BAL statement processing when alias EQU opcode being used. DSH
  452 09/18/06 XP P 1 Correct TTIMER to correctly return remaining time before canceling timer with option CANCEL.  See updated RT\TEST\TESTTIM2.MLC regression test. MM
  453 09/18/06 XP E 1 Speedup MVST using direct memory byte access.  See BMK\INSTTIME.BAT instruction timing report. MM
  454 09/18/06 XP E 1 Add pz390 instructions as follows:
1) TRE translate extended for > 256 character fields
2) TROO one byte to one byte
3) TROT one byte to two bytes
4) TRTO two bytes to one byte
5) TRTT two bytes to two bytes
See RT\TEST\TESTINS2.MLC regression tests and updated RT\TEST\TESTINS1.MLC instruction formats.
  455 09/18/06 XP E 1 Remove erroneous console output from az390 and lz390 such as LISTUSE and ESD listings. MM
  456 09/18/06 XP P 1 Correct mz390 expression parser to correctly handle duplication operator within complex expressions.  See RT\TEST\TESTSET1. AB
  457 09/18/06 XP P 1 Correct az390 to allow literal references across multiple CSECTS. AB
  458 09/18/06 XP P 1 Correct az390 to support DC S type constants with explicit offset(base) self defining terms.  See updated RT\TEST\TESTDC1. AB
  459 09/18/06 XP P 1 Correct lz390 to prevent trap when external references not found. Correct az390 to generate CSECT ESD's in object file before ENTRY, EXTRN, and WXTRN entries. AB
  460 09/21/06 XP P 1 Correct gz390 to wait for ez390 to close after PF3 exit. DSH
1.1.02   09/12/06     Full release with cumulative fixes and enhancements
1. MVS macros now in optional download zip

2, z390 v1.1.02 regression tests now in optional download zip
To run all z390 regression tests, install z390 and the above zips into the z390 install directory with folder names option on, start z390 GUI or command line and then run RT.BAT.  It will take a few minutes and will end with list of difference files in descending order by size in the RT\ALL directory.  To verify that all the z390 install demos work without the optional zips, run RTDEMO.BAT.
  363 07/09/06 XP E 1 Move current MVS macro directory and TEST directory to two separate downloadable zip files on www.z390.org:
1.  z390_MVS.ZIP contains MVS 3.8J macros which has the following directory structure:
   MVS    - public domain MVS 3.8J directory
        MACLIB - MVS 3.8J macros in ascii with .MAC
        TEST - test assembly programs using MVS\MACLIB
            SAVE - last verified copy of test files
        DEMO - demo programs using MVS\MACLIB
            SAVE - last verified copy of demo files
        DIF - generated dif files for RTMVS.BAT
2.  z390_v1102_RT.ZIP contains the z390 regression test directory for z390 v1.1.02 which has the following structure:
  RT       - regression test primary directory
     TEST - source and generated test program files
         SAVE - last verified save of all TEST directory files
     DIF    - generated dif files for TEST versus SAVE
                  by running RTTEST.BAT from z390 root dir.
     ALL   - generated comparison dif files for RTLINK,
                  RTDEMO, RTCICS, RTMVS, and RTTEST
                   by running RT.BAT.

The RTTEST and other regression tests consist of the following:
  1.  Assemble, link, and execute each z390 regression test to
       generate TEST files BAL, PRN, OBJ, LST, LOG, ERR, etc.
  2.  Compare each TEST file with corresponding SAVE file to
       generate the DIF comparison files using Windows FC utility.
       macro text processing programs are used to comparison BAT.)
  3.  Sort and list the DIF directory in descending order by size of
       of the comparison file to highlight any changes.  A few tests
/       such as TESTIM2 using timing will always have differences.

The regression tests using the z390_MVS_MACLIB public domain macro library can be run by using the command RTMVS.BAT from the z390 command line.  The RTMVS regression tests include assembly and execution of DEMO program with WTO using the MVS WTO macro with no changes since the form of the WTO used is compatible at the SVC 35 interface level.  Note this is not true with most other macros and the z390 system macros must be used at assembly time.

  395 08/05/06 XP E 2 Enhance TEST facility as follows:
1.  Correct IC and STC to only show 1 byte of storage.
3.  Change SS instr. to show up to 16 bytes of to and from fields.
4.  Allow up to 100 A hex address break settings.  Re-entry address stop to remove it or enter S to clear all breaks.
6.  Document that comments on break command show at break.
7.  Support use of "EPA" as entry point address reference.
8.  Support multiple indirect address references.
9.  Compact trace listing for duplicate lines.
See RT\TEST\TESTTST1 regression test.
  400 08/07/06 XP E 1 Publish INSTIME V6 benchmark instruction time report contributed by Melvyn Maltz. MM
430 09/02/06 XP P 1 Correct az390 to allow low memory references using register 0 base. AB
  431 09/02/06 XP E 1 Add new option LISTUSE with default on to list current USING definitions after each USING and DROP statement.  Specify NOLISTUSE to turn this option off.  Also fix bugs in DROP dropping wrong labeled using and dropping labeled using by register in error. AB
432 09/03/06 XP P 1 Correct mz390 to close AREAD or PUNCH open file before switching between AREAD or PUNCH access to the same file so any of the 10 files for each type can be accessed repeatedly in either mode.  See TESTPCH1 regression test. DSH
433 09/03/06 XP P 1 Correct mz390 to always wait for az390 to complete execution when running option ASM.  If mz390 aborts due to severe error, force az390 to abort as well and wait for az390 to end after creating PRN with both mz390 and az390 abort errors. DSH
434 09/04/06 XP E 1 Improve performance of mz390 for large macro expansions:
1)  Correct mz390 to check MAXLCL versus MAXSYM for local variable overflow.
2) Save macro label line numbers to reduce need to repeat key index lookups for AGO and AIF statements.
3) Optimize local and global key index routines by eliminating use of random number function and just using string hashcode to derive hash index resulting in 10% elapsed time reduction for large programs.
4) Optimize regular expression parsing patterns to move most frequent patterns to the front and consolidate patterns if possible.
5) See RPI 439 for planned addition of pseudo code generator for faster execution of macro code statements.
435 09/04/06 XP P 1 Correct mz390 to support default allocation of local macro variable array when subscripted element is set prior to any declaration.  See updated RT\TEST\TESTSET1.MLC regression test. DSH
436 09/04/06 XP P 1 Correct mz390 to correctly parse AREAD and PUNCH operands for end of DSNAME and ignore comments.  See updated RT\TEST\TESTPCH3.MLC regression test. DSH
437 09/06/06 XP P 1 Eliminate TEXT option and always allow AREAD text input of any length from optional AREAD text files.  Inline AREAD input strings may also be longer than 71 characters if the starting inline data input line is continued with non-blank character in position 72. Note PUNCH output text file records can be of any length.  Also correct mz390 bug to check for macro not found previously to avoid erroneous error 119 macro index table exceeded error. DSH
438 09/07/06 XP E 1 Add az390 initial very limited support for DS/DC bit lengths if and only if the bit length is a multiple of 8.  See RPI 417 pending for addition of full bit length support. AB
440 09/08/06 XP E 2 Route all MNOTE's to ERR file as well as BAL and PRN files.  Correct ez390 and sz390 to honor NOCON option. AB
441 09/08/06 XP P 1 Update pz390 as follows:
1) Correct 0C7 on TP command with bad sign and length 1-8. 
2) Speed up TRT by ending loop at first hit.
3) Add move string instruction MVST.
442 09/08/06 XP P 1 Correct az390 calculation of symbol value based on * location counter in DSECT during first pass which can cause mz390 to fetch bad value even though az390 corrects it on second pass.  See updated RT\TEST\TESTSYM1.MLC. DSH
443 09/10/06 XP E 1 Add new benchmark test macro text processing program BMK\BMKTIME.MLC which can be used to measure the elapsed time of any process run between calls to BMKTIME which records starting time on first call and ending time and elapsed time on second call with SYSPARM set to text file to contain timing statistics.  Run BMK\BMKTIME.BAT for example timing of DEMO\DEMOM8Q1.MLC showing 40k macro instructions per second versus 35k on previous release. DSH
1.1.01e   09/02/06     PTF cumulative fixes for v1.1.01  
  423 08/31/06 XP P 1 Prevent recursive abort error when az390 attempts to close down by catching internal exception on separate thread.  Also add same exception handling in ez390, sz390, and gu390_screen threads. AB
  424 08/31/06 XP P 1 Correct az390 to correctly handle invalid constants in E, D, F, H, and L type DC statements and issue appropriate error. AB
  425 09/01/06 XP P 1 Generate mz390 statistics just before END statement if BAL and STATS option specified so the statistics show up on both BAL and PRN files.  Force listing of all file cross references with error count > 0 at the end of  both PRN and ERR file for easy reference.  Show the total number of errors on each file reference.  Correct ERR file to set default .ERR suffix when not specified.  Add file and line cross reference after bal line number on all error messages (not available when az390 is run separately from mz390). AB
  426 09/01/06 XP P 1 If the mz390 macro expansion had hard errors, suppress multiple passes in az390 attempting to resolve forward references and go directly to last pass to generate PRN listing to save time. AB
  427 09/01/06 XP P 1 Correct mz390 to issue error if option NOASM is specified and attempt to access valid ordinary symbol name is made in AIF expression. AB
  428 09/01/06 XP P 1 Correct sz390 to ignore high bit in 8 byte address stop address. JG
1.1.01d   08/30/06     Cumulative PTF fixes for v1.1.01  
  410 08/12/06 XP P 2 Correct mz390 to issue error for incorrect DSNAME= or DDNAME= extension on PUNCH or AREAD statements.  See new LINKLIB\RTGENBAT.MLC.  Correct mz390 to substitute macro variables on PUNCH statement on BAL as well as PCH.  Correct AREAD to return 1 space for lines with all spaces or cr,lf only.  A 0 length string from AREAD indicates end of file.  Add AREAD and PUNCH I/O counts to mz390 stats.  See new regression test directory processing programs LINKLIB\RTGENDIR.MLC and LINKLIB\RTGENCMP.MLC used in RT batch commands to generated BAT files for comparing files in 2 directories.  If MNOTE level 16 or abort is issued, return it as mz390 return code instead of 0 which is returned for mnote levels 0-15 for az390 to list and handle.. DSH
  411 08/14/06 XP E 1 Improve performance of mz390 as follows:
1.  Reducing string concatenation wherever possible to reduce string garbage collection overhead.
2.  Replace while loops to init arrays with Array.fill function.
3.  Replace while loops to copy arrays with System.arraycopy.
  412 08/14/06 XP P 1 Correct mz390 to reset abort flag during loading of macros in order to display multiple errors found during loading such as multiple duplicate macro labels.  Eliminate duplicate mz390I pgm and options msgs in z390 GUI log. Correct missing space on error message 72. AB
  414 08/14/06 XP P 1 Correct mz390 to recognize ERR(nnn) override for maximum errors.  If nnn is 0, no limit is set. AB
  415 08/14/06 XP P 1 Change mz390 to automatically call az390 when option ASM (renamed from option MFC) is on.  This enables mz390 to share the az390 symbol table during first pass for AIF expressions including ordinary symbols such as calculated length of DSECT's.  The ASM, ASML, and ASMLG commands have all been updated to eliminate separate az390 step by using mz390 with new default ASM and NOBAL which suppresses creation of BAL file.  The MAC command assumes NOASM and BAL to enable using the macro processor as a powerful macro based text editor with no mainframe ASM dependencies.  The AZ390.BAT command can still be used to run az390 separately after first creating BAL file using MAC with BAL option which may be used in testing.  See RT\TEST\TESTSYM1 for macro code test of ordinary symbol DSECT length in AIF. AB
  416 08/14/06 XP P 1 Correct az390 loop on invalid DS/DC length expression.  AB
  419 08/20/06 XP E 1 Correct mz390 T', L', and D' operators to correctly parse SETC variable text to extract first ordinary symbol as operand for operator.  The symbol may have labeled using prefix and may have trailing expression operator such as T'&PARM where &PARM is BLK.FLD+5.   See updated RT\TEST\TESTSYM1 regression test. AB
  420 08/21/06 XP E 1 Allow support for multiple AREAD and PUNCH files using ID=n where n is 0 to 9.  Also support DSN= as alias for DSNAME= in AREAD and PUNCH extended options, and add documentation on extensions to User Guide.  See RT\TEST\TESTPCH3 new regression test to copy and merge 2 text files. AB
  421 08/24/06 XP E 1 Correct support for &var.nn'...' to concatenate duplication string.  See updated RT\TEST\TESTOPR1 regression test. AB
  422 08/30/06 XP P 1 Correct incorrect comparison between two strings padded with blanks to the same length but with unequal EBCDIC characters > 128. AB
1.1.01c   08/10/06     PTF cumulative fixes for v1.1.01  
  390 08/04/06 XP P 1 Remove DSH2 change to FPCONVRT and change DSH3 to use IC RO versus IC R1 and remove the extra LR R0,R1.  Superseded by RPI 405.  RTLINK.BAT. DB
  391 08/04/06 XP P 2 Change FPCONMFC to change trailing null bytes in decimal output area to spaces.  See RTLINK.BAT. DSH
  393 08/05/06 XP P 1 Issue SF05 program check if wait svc issued with wait count higher than total entries in the ECB list or if ecb_list exceeds max of 16. MM
  394 08/05/06 XP E 2 Correct GETMAIN macro to issue warning and ignore any SP= subpool specified.  See RPI 244 and RPI 248 pending request for subpool support.  All pools are combined currently so PURGE of subpool is not currently supported. MM
  396 08/06/06 XP E 2 Change TESTTIM2 to expand STIMER REAL test to allow 15 seconds for task to get 2 seconds of cpu time.  It was set at 2.5 seconds and caused U101 abend when background Windows task caused cpu time to be shared thus requiring over 4 seconds to get 2. GG
  397 08/06/06 XP P 1 Fix pz390 to issue S0C5 on all memory accesses beyond current memory allocation based on MEM(mb) setting.  Previously it was only checking instruction address resulting in exception handler in ez390 trapping exception from pz390 running on separate thread causing synchronization problem with log output when running under z390 GUI interface.  Fix also applied to ez390 exception handler to try and correct synchronization problem when similar unexpected exceptions occurs in pz390. ABE
  398 08/06/06 XP P 1 Fix pz390 divide D and DR instructions to avoid truncating divisor prior to divide.  Also speed up D, DR, SLDL, SLDA, SRDL, and SRDA by using long shift and or versus byte buffer int stores and long fetch.  See updated TESTINS2 with expanded D and DR tests. GP
  401 08/07/06 XP P 1 Fix mz390 to expand arrays as required when multiple store values exceed current allocated size.  Previously only declaration or initial store index could automatically force expansion.  Also display separate statistics for global seta, setb, and setc cells.  See TESTSET2. AB
  402 08/07/06 XP P 1 Change mz390 to report count of MNOTE warnings with level 1-4. AB
  403 08/07/06 XP P 1 Change az390 to correctly restore original opcode usage when original opcode name is set to previously defined alternate name for the original opcode.  See updated TESTSYN2. AB
  404 08/07/06 XP E 1 Update mz390 to support EQU 4th and 5th operand assembler and program attributes and include all of the following expression operators (NC no change if already supported):
  A2B - convert value to binary string (3 = '11')
  A2C - convert value to character string (240 = '1')
  A2D-  convert value to decimal string (1 = '1')
  A2X - convert value to hex string (240 = 'F0')
  AND - logical and (NC)
  B2A - convert binary string to value (B2A('100') = 4)
  B2C - convert binary string to character string ('11110000' = '1')
  B2D-  convert binary string to decimal string ('100'  = '4')
  B2X - convert binary string to hex string ('11110000' = 'F0')
  C2A - convert 0-4 characters to value (C2A('0') = 240)
  C2B - convert character string to binary string ('1' = '11110000')
  C2D-  convert character string to decimal string ('1'  = '240')
  C2X - convert character string to hex string ('1' = 'F0')
  D2A - convert decimal string to value (D2A('-2') = -2
  D2B - convert decimal string to binary string ('4' = '100')
  D2C-  convert decimal string to character string('240'  = '1')
  D2X - convert decimal string to hex string ('240' = 'F0')
  DCLEN - length of string after reducing double ' and &
  DCVAL - return string with double ' and & reduced
  DCEQUOTE - return string without first and last ' if any
  DOUBLE - double quotes and & in string (NC)
  FIND - return index of any char in string2 found in string1 (NC)
  INDEX - return index of string2 found in string1 else 0 (NC)
  ISBIN - return 1 if valid binary string else 0
  ISDEC - return 1 if valid decimal string else 0
  ISHEX - return 1 if valid hex string else 0
  ISSYM - return 1 if valid character string for symbol else 0
  LOWER - return lower case string (NC)
  NOT - logical or arithmetic not (NC)
  OR - logical or (NC)
  UPPER - return upper case string (NC)
  SIGNED - return decimal string with minus sign if negative
  SLA - shift left arithmetic (2 SLA 1 = 4)
  SLL - shift left logical (2 SLL 1 = 4)
  SRA - shift right arithmetic (4 SRA 1 = 2)
  SRL - shift right logical (4 SRL 1 = 2)
  SYSATTRA - return assembler attribute for symbol (EQU 4th)
  SYSATTRP - return program attribute for symbol (EQU 5th)
  X2A = convert hex string to value (X2A('F0') = 240) 
  X2B - convert hex string to binary string ('F0' = '11110000')
  X2C-  convert hex string to character string('F0'  = '1')
  X2D - convert hex string to decimal string ('F0' = '240')
  XOR - logical exclusive or (NC)
  405 08/07/06 XP P 1 Fix mz390 to correct error handling O' operator to test opcode and replace current FPCONVRT.MAC with updated version contributed by David Bond that has previous fixes plus new support for IEEE-754R decimal floating point ED, DD, and LD (MIN) and (MAX) values if the assembler supports z9-bc instructions including SRNMT tested via O'SRNMT.  See RPI's 406-407 for additional z390 support pending for z9-bc instructions and IEEE-754R decimal floating point.  See IBM General Decimal Arithmetic for overview.   See TESTOPR1 for updated O' tests. DB
  408 08/09/06 XP P 2 Fix gz390 GUAM graphical user access method to expand the default screen size by a few pixels to prevent cutting off part of border characters on screen.  Also fix trap in gz390 when running DEMOGUI5 which tries to resize graph view.  See RPI 137 pending to complete addition of graphics support when time permits. GP
  409 08/10/06 XP P 2 Optimize speed of mz390 starting with optimization of find_key_index to avoid extra string concatenation of type by passing char type separately.  Also skip string compares if not target type.  At least 10% speed improvement observed on 2 second macro expansion of TESTINS2. AB
1.1.01b   08/04/06     Cumulative fixes and enhancements  for 1.1.01  
  365 07/13/06 XP P 1 Correct az390 to support literals as target of prefix operators such as L'=C'...'.  See updated TESTASM1. DSH
  366 07/13/06 XP P 1 Correct mz390 to correctly handle mixed case keyword override of default values.  See LINKLIB\FPCONVRT. DSH
  367 07/13/06 XP P 1 Add az390 support for floating point constants using (MIN) and (MAX) to indicate limit values.  See TEST\TESTDC1 and LINKLIB\TESTFPC2. DSH
  368 07/13/06 XP P 1 Add az390 support for  S scale modifier and ignore ACONTROL and ALIAS control commands.  See TESTDC1 for scale test and TESTASM1 for ACONTROL and ALIAS. DSH
  369 07/14/06 XP P 1 Correct mz390 to ignore 4th and 5th EQU operands defining program type and assembler type which are ignored for now.  See updated TESTASM1. DSH
  370 07/14/06 XP E 1 Add extension macro CFD covert from decimal to support converting from free form decimal numbers including scientific notation in 45 character field to the following formats:
  1) Convert to 128 bit integer from 45 byte scientific notation
  2) Convert to EH short from 45 byte scientific notation
  3) Convert to EB short from 45 byte scientific notation
  4) Convert to DH long from 45 byte scientific notation
  5) Convert to DB long from 45 byte scientific notation
  6) Convert to LH extended from 45 byte scientific notation
  7) Convert to LB extended from 45 byte scientific notation
The macro uses svc 171.  See new regression test TESTCFD1 for examples.  See LINKLIB\TESTFPC1 for extensive test.
  371 07/14/06 XP P 1 Correct az390 to allow spaces within hexadecimal type DC constants such as DC X'0123 4567 89AB CDEF'.  See TESTDC1. DSH
  372 07/15/06 XP P 1 Correct az390 to correctly handle multiple LOCTR sections where new LOCTR is defined following previous LOCTR which is not the last LOCTR in the CSECT or DSECT.  See LINKLIB\FPCONVRT assembled by RTLINK.BAT for test. DSH
  373 07/16/06 XP P 1 Correct az390 alignment of L type 16 byte fields to multiple of 8 instead of 16.  See TESTDC1. DSH
  374 07/17/06 XP E 1 Add new z390 open source directory LINKLIB with the following programs:
1.)  FPCONVRT.MAC - floating point conversion routine generation macro contributed by David Bond with Tachyon Software.  The original source code can be downloaded here: ftp.tachyonsoft.com/tachyon/fpconvrt.zip.  Note the program can be assembled and executed using z390 without any changes.  However, 4 single line changes were required to FPCONVRT.MAC in order to successfully run the test programs below with identical results compared to z390 svc calls.  The changes are tagged with DSH1-DSH4. 
2.  FPCCONVRT.MLC - 3 line macro call program to assemble FPCONVRT.MAC to FPCONVRT.OBJ format for static linking using the ARCHLVL set by new ARCHLVL macro.
3.  ARCHLVL.MAC - macro to set desired OS or z/OS architecture level global variable &ARCHLVL and &ARCHSFX 32 or 64 bit register suffix of null or "G".  All of these programs have been successfully tested with ARCHLVL=2 for OS 32 bit linkage and also ARCHLVL=5 for z/OS 64 bit register linkage plus use of z9-101 instructions.  Note the current setting for this macro is ARCHLVL=5 for testing the 64 bit support.  However, you can use ARCHLVL=2 for typical 32 bit application testing on the PC.. 
4.  FPCONMFC.MLC - interface program to map z390 CTD and CFD macro calls into corresponding calls to FPCONVRT when the LINKAGE=MF option is used.  The CTD and CFD macros default to using z390 svc 170 and 171 for maximum speed.  The LINKAGE=MF option generates calls to FPCONMFC and in turn FPCONVRT for source code compatibility with the mainframe.  Note this program also uses ARCHLVL to determine correct linkage for FPCONVRT calls.
5.  TESTFPC1.MLC is a regression test of CTD, CFD, FPCONMFC, and FPCONVRT for all floating point types plus 128 bit integers using both SVC and MF linkage.  Note the default LINKAGE=SVC is significantly faster for testing on PC.  After testing you can use the MF calls to FPCONVRT when required to port applications to the mainframe.
6. TESTFPC2.MLC is regression test of all 6 floating point (MAX) and (MIN) value constant conversions to and from decimal values.
7.  CVTTOHEX.MLC is a callable routine to convert any number of specified bytes to hex for use in displays.  See TESTFPC1 for example use.
8.  See RTLINK.BAT for assembly, link, and execution of test programs in LINKLIB. 
  375 07/18/06 XP P 1 Correct az390 to issue error when USING label prefix used with absolute or complex expression reference.  See TESTERR2. DSH
  376 07/20/06 XP P 1 Correct pz390 to return condition code 1 when AL??? instructions turn on high bit but there is no carry.  Previously it was setting condition code 3 in error.  See updated regression test TESTINS1. AW
  377 07/20/06 XP P 1 Correct sz390 to prevent DCB recursive error processing trying to find file name for missing DDNAME.  Nasty bug as it puts Eclipse in a tight loop until stack overflows.  See TESTERR7. AW
  378 07/20/06 XP P 1 Correct az390 and lz390 to use the first SYSOBJ directory to access primary OBJ file.  It was failing when concatenated directories were specified.  See RTLINK.BAT for TESTFPC1 using SYSOBJ(LINKLIB).. DSH
  379 07/21/06 XP E 1 Update DO macro to use IF and ENDIF to support compound WHILE and UNTIL conditions.  See LINKLIB\FPCONMFC. DSH
  380 07/21/06 XP E 1 Add callable routine named CVTTOHEX to convert field to hex.  See LINKLIB\TESTFPC1 for example usage. DSH
  381 07/22/06 XP E 1 Update CALL macro to support register replacement of parameters in standard form as well as execute form.  See LINKLIB\TESTFPC1 calls to CVTTOHEX. DSH
  382 07/23/06 XP P 1 Fix az390 to correctly generated F and H constants up to 16 bytes and issue error if out of range.  It was limited to +-32 bit constants with extension.  Note 16 byte constants are an extension of HLASM.  See updated TEST\TESTDC1 and LINKLIB\FPCONMFC. DSH
  383 07/24/06 XP P 1 Fix pz390 MLG and MLGR to multiply R1+1 and S2/R2 to compute 128 bit result in R0:R1.  It was using R1.  See TESTINS2 and FPCONMFC. DSH
  384 07/26/06 XP P 1 Fix az390 and pz390 to generate all zeros for HFP E, D, and L exact zero and set LH second exponent to mod 127 value if underflow.  It was setting exponent to x'40'.  See TESTDC1 and TESTFPC1 and TESTFPC2. DSH
  385 07/26/06 XP E 1 Change lz390 to display each ESD CSECT included in 390 load module with relative offset and length on LST and ignore 0 length CSECT's.  Also display ENTRY and RLD's.  See TESTRLD1. DSH
  386 07/30/06 XP P 1 Fix pz390 to eliminate trap on MVCL when data length is zero and only pad characters stored.  See TESTFPC1. DSH
  387 07/30/06 XP P 1 Fix az390 and pz390 to support 20 bit signed displacement in LAY and other RXY type instructions.  See FPCONVRT when assembled using ArchLvl=5 which uses z9 processor instructions including LAY. DSH
  388 08/03/06 XP P 1 Fix az390 to correctly generate specified number of duplicate E, D, or F constants.  It was only generating one and overlaying the rest.  Also correct DS FD to generate 8 vs 4 byte fields.   See TESTDC1. DSH
  389 08/03/06 XP P 1 Fix pz390 to correct CVB, CVBY, CVBG, CVD, CVDY, and CVDG failing to convert some values correctly and not issuing fixed divide exception when expected in some cases.  See expanded regression test TESTCVB1 and TESTCVBG as well as updated TESTINS2. MM
1.1.01a   07/11/06     Cumulative fixes for release 1.1.01  
  359 07/08/06 XP P 1 Correct mz390 to handle macro prototype variables with mixed case names.  Previously they had to be caps to work properly.  See updated TESTMAC1. SB
  360 07/09/06 XP E 2 Add macro CTD and associated convert to display svc 170 to perform these extended display output conversions:
  1) Convert 128 bit integer to 40 byte display
  2) Convert EH short to 40 byte scientific notation
  3) Convert EB short to 40 byte scientific notation
  4) Convert DH long to 40 byte scientific notation
  5) Convert DB long to 40 byte scientific notation
  6) Convert LH extended to 40 byte scientific notation
  7) Convert LB extended to 40 byte scientific notation
See new TESTCTD1.MLC regression test.  Also see www.mfatc.org SQRT2 demos to calculate and display square root of 2 in HLASM, HLA, C++, COBOL, and Java with arbitrary BigDecimal class precision showing 1000 digit precision example in addition to the IEEE standard 32, 64, and 128 bit precision results.
  361 07/08/06 XP P 1 Add missing regression test batch command RT7.BAT which is the same as RT1 but with no check of 0 return code for ez390. AB
  362 07/08/06 XP P 1 Change ASM, ASML, ASMLG, MAC, and EXEC to all proceed without error if return code is not greater than 4.  Currently anything but 0 pauses with message to check errors. AB
  364 07/10/06 XP P 1 Correct SQDB instruction which was truncating IEEE 64 bit precision to 32 bit precision.  See updated TESTCTD1 regression test and www.mfatc.org HLASM SQRT2.MLC.. DSH
1.1.01   07/07/06     Maintenance Release  
  320 06/03/06 XP E 1 Update instruction timing statistics program and reports contributed by Melvyn Maltz.  The program now has directory option set by SYSPARM so program does not require reassembly to change directory.  See results showing performance gains with v1.1.01 versus base line using v1.0.12a.  The program documentation is here. MM
  355 07/01/06 XP E 1 Add updated documentation on program, and storage services contributed by Melvyn Maltz. MM
  357 07/06/06 XP E 1 Increase instruction execution speed by over 50% by breaking opcode primary switch into 4 separate switches to reduce Java virtual machine overhead of loading large switch table versus performing additional if statements.  Also reduce the size and therefore the memory working set of z390.jar over 50% by rebuilding classes for the jar without debugging information.  See performance results using www.mfatc.org MIPS.MLC demo program to caculate instruction rate for BRCT loop, and see regression test TESTTIM2.MLC instruction count for CLI, BNE loop while waiting for STIMER exit. DSH
  358 07/07/06 XP P 2 Correct TEST mode to prevent trap error on invalid S command such as S FF358. which is  an incomplete memory change break operand. AB
1.1.00f   07/06/06     PTF cumulative fixes for v1.1.00  
  325 06/03/06 XP P 1 Correct KEB and KDB to allow exact zero without error.  See updated TESTFP1. MM
  326 06/03/06 XP P 2 Add support for test data class instructions TCEB, TCDB, and TCXB.  See updated TESTFP1. MM
  333 06/04/06 XP P 1 Correct FIEBR, FIDBR, FIXBR, TBEDR, TBDR, CFEBR, CFDBR, CFXBR, CBEBR, CBDBR, CGDBR, CGXBR, CFER, CFDR, CFXR, CGER, CGDR, and CGXR  to support additional rounding modes specified by mask, and add support for SRNM to set rounding mode.  See updated TESTFP1. MM
  335 06/05/06 XP P 1 Correct mask trace on RRF2 format instructions such as TBEDR.  See updated TESTFP1. DSH
  347 06/12/06 XP E 1 Add test option to stop at specified instruction address using G or T with hex or relative address expression.  G or T with alpha opcode will stop at next opcode.  G or T with hex address or expression will stop at address.  G or T with decimal value will execute number of instructions.  See updated TESTTST1. AB
  348 06/13/06 XP P 2 Correct trace to only show 2 bytes of storage for half word RX and RXY type instructions.  Add blank line in trace after successful branch to indicate non-sequential code.  See updated TESTINS2 with trace compare. AB
  351 07/01/06 XP P 1 Correct OPSYN support to correctly find and replace opcodes which have been used prior to first opsyn reference.  See updated TESTYSYN2. AB
  352 07/01/06 XP P 1 Correct DCB support to only require full word alignment versus double word alignment. AB
  353 07/01/06 XP P 1 Correct mz390 expression parser to correctly handle target of prefix operator such as UPPER, LOWER, FIND, INDEX in parenthesis.  See updated TESTMAC1. SB
  356 07/05/06 XP P 2 Correct az390 to not abort on missing operands for CVD etc.  See updated TESTERR2. AB
1.1.00e   06/16/06     Cumulative fixes for v1.1.00  
  349 06/16/06 XP P 1 Correct mz390 to prevent loop when EQU parm contains error during loading of macro file. AB
  350 06/16/06 XP P 1 Correct mz390 TRACEALL option to prvent null value display instead of "OPEN CODE" for global values during loading of MLC file.  Note the TRACEM option does not display source during loading. AB
1.1.00d   06/16/06     Cumulative fixes for v1.1.00  
  317 05/25/06 XP E 2 Change DFHEIA0 and DFHEIA1 stubs to exit without allocating or deallocating DSA etc. when length is 0 indicating calling program does not use DSA or any CICS services.  This allows any program to be assembled using CICS option.  See RTCICS.BAT regression tests. DSH
  319 06/03/06 XP P 2 Fix TESTCMD2 to wait for both processes to finish before terminating normally with end of file message from both processes.  See updated TESTCMD2.MLC regression test. SD
  321 06/03/06 XP P 2 Correct ESTAE and ESPIE error MNOTE message to include macro names. MM
  322 06/03/06 XP P 2 Correct CALL macro to process VL option for MF=L option.  See updated TESTCAL2.MLC. MM
  323 06/03/06 XP P 1 Correct pz390 to stop on test opcode break point for first instruction in stimer exit. MM
  324 06/03/06 XP P 1 Correct GETMAIN macro code generated for A= option to store register 0 versus register 1.  Correct STORAGE macro to store address in memory at address specified in ADDR=(REG).  See updated TESTMEM1-3 test results. MM
  327 06/04/06 XP P 1 Issue error message if duplication factor negative. DSH
  329 06/04/06 XP E 1 Remove file suffix from all &SYS????_MEMBER variables for mainframe compatibility.  As long as default suffixes are used, this should minimize required user changes.  See updated TEST\TESTSYS1. AB
  330 06/04/06 XP E 1 Add all MNOTE errors with severity greater than 0 to ERR log file for both mz390 and az390.  See updated RTTEST.ERR log. AB
  331 06/04/06 XP P 1 Correct mz390 to expand macro if found for cancelled OPSYN opcode and correct error on repeated call to a loaded macro file containing inline macro. AB
  334 06/05/06 XP P 1 Move zstrmac structured macros to the main mac directory so there is no extra macro library parm required for use.  If user has different version of same structured macros, that library must be placed ahead of mac directory.  Add cics directory to PTF zip for all cics updates. DSH
  336 06/05/06 XP P 1 Correct mz390 AIF parsing error on expression with D' operator.  Correct support for SETA expression evaluation of ordinary symbol value.  See updated TESTMAC1. AB
  337 06/06/06 XP P 1 Correct z390 GUI dialog to correctly pass file name without truncating first character when execution path is a long spacey name in quotes. DSH
  338 06/08/06 XP P 1 Correct mz390 to correctly handle duplication factor for strings in expressions such as &X SETC (10)'1'.  See updated TESTMAC1. AB
  339 06/08/06 XP P 1 Ignore unsupported options on PRINT such as NOMCALL, UHEAD. AB
  340 06/08/06 XP P 1 Correct mz390 and az390 to support all symbol type attribute characters A-Z.  Correct mz390 and az390 to support value, length, and type  operands on EQU. AB
  341 06/08/06 XP P 1 Correct az390 to correctly process ORG ,  when there has not been any previous ORG or section change forcing section length update. See CICS\TESTAPL1.MLC which previously had wrong length of DFHEISTG DSECT. AB
  342 06/09/06 XP P 1 Correct mz390 parsing of parameters to correctly handle prefix operators within parenthesis such as (X+L'Y,L'X-L'Y).  See updated TESTASM1. AB
  343 06/09/06 XP P 1 Correct N'&array support to return highest subscript stored instead of current size. AB
  344 06/10/06 XP E 1 Change mz390 errors issued for undefined macro labels during loading to issue MNOTE 4 warning messages.  DSH
  345 06/11/06 XP P 1 Correct mz390 set statement processing to handle store into subscripted array using subscripted array subscript expression, and add bounds checking for both high and low subscripts. AB
  346 06/13/06 XP P 1 Correct mz390 expression parser to correctly evaluate C'....' self defining terms in lower case as well as upper case.  It was forcing value to use upper case previously. AB
1.1.00c   05/24/06     Cumulative fixes for v1.1.00  
  227 03/13/06 XP E 1 Add following enhancements to TN3270 support:
1) Replace gz390 GUAM GUI TN3270 screen display using JTextArea component with new Graphics2D display component which can support drawing multiple font characters and symbols, plus support extended TN3270 data stream highlighting and color attributes.  The Graphics2D component support is packaged in gz390_screen class which is loaded and controlled by GUAM gz390 driver.  test_screen is a new class which be run standalone for testing new graphics functions.
2)Add  APL character support via Graphics Escape order X'08' preceding APL character in TN3270 data stream.  See DEMO\DEMOAPL1.MLC for demo which shows all of the APL symbols using unicode characters.
2) Add GE graphic escape order X'08' to TN3270 SYBMOLS.  See DEMO\DEMOAPL1.MLC for display of APL graphics.
3) Support AID x'60' to indicate no AID since last reset keyboard.
4) Add support for GUAM SCREEN,COLOR command to set default TN3270 screen background and text colors.
5) Add support for SFE extended TN3270 data stream field start setting attributes, highlighting, and color.  Only the color is currently functional.  See RPI 203 targeted for June to add highlighting support.  See DEMOAPL1.MLC which uses SFE to display title text in blue versus default of black on green set via GUAM SCREEN,COLOR command.
1.1.00b   05/16/06     Cumulative maintenance fixes for v1.1.00  
  314 05/12/06 XP P 2 Add old alternate opcodes AIFB and AGOB.  See updated TESTMAC2. SD
  315 05/13/06 XP E 1 Add the following mz390 support:
1)  Compound AIF/AIFB with alternate continuation format option.
2)  Computed AGO/AGOB with alternate continuation format option.
3) Improve mz390 execution speed using local key indexing to find macro labels instead of serial table search.  Increase local macro key hash index range from 13 to 47 to reduce requied compares.
4) Add new option REFORMAT with defaults set to false.  When specified BAL is reformatted to  place opcode starting in position 10 and operands in position 16.  The default is useful for structured code that is indented.
See updated TESTMAC2 and TESTERR1.
  316 05/15/06 XP E 1 Add the following basic structured programming macros and copy book in new ZSTRMAC directory:
1) IF, ELSE, ELSEIF, and ENDIF - alternate selection
2) DO WHILE=, DO UNTIL=, and ENDDO - iteration
3) ZSTREQU.CPY - copybook to define symbols E, EQ, NE, etc.
The ASMMSP copybook in the MAC directory must be included in each program using using the ZSTRMAC structured macros.  The  ZSTRMAC macros are public domain and are derived from macros on CBT overflow tape 178 which were developed in 1974.  See ACM SIGPLAN article date February 1975.  The macros were  contributed to the SHARE SPLA library in the late 1970's.  The macros have been renamed and updated for compatibility with the IBM toolkit structured macros based on this SHARE presentation by Edward Jaffe.  Individual IF test operands may be in (...) and compound tests may be connected with AND or OR.  The test operand sequence is:
1) compare instruction opcode
2) first compare instruction operand
3) BC compare type (see EQU symbols in ZSTREQU.CPY)
4) second compare instruction operand
See new DEMO\DEMOSTR1 for example program usage.
1.1.00a   05/12/06     Cumulative fixes for Release 1.1.00  
  313 05/11/06 XP P 1 Correct mz390 and az390 following errors:
1)  Fix comma delimited continuation statements to correctly handle parameters containing single quote operators such as L'.  
2) Set positional parm count to 0 when single comma is used to allow comments on macro call statement.  It was being set to 1.
3) Fix expression parser to handle unary operators +- preceeding (...).
4) Show original macro name BAL and PRN files when macro OPSYN name alias is used.
5) Set return code for max MNOTE level, but do not issue az390 error which forces return code 16.
6)  Replace duplicate code for statement parsing to handle continuations with shared code in tz390 that uses precompiled regular expression parsing versus less efficient spilt() method.
1.1.00   05/09/06     Maintenance and enhancement release with initial
 z390 EXEC CICS Compatible Assembler Support
  243 03/20/06 XP E 1 Add option SYSTERM(file) support as follows:
1) Create or mod systerm file specified with .ERR suffix.  The default systerm file name is the same as the program name.
2) Update mz390, az390, lz390, and ez390 to mod the systerm file specified with program start and stop records plus error messages, and correct to always set return code.  Each record is prefixed with time of day unless NOTIMING specified.  The program end record includes return code, elapsed seconds, memory use in MB, total I/O count, and total instructions.
3) The batch commands MAC, ASM, ASML, ASMLG, and EXEC delete the default systerm file at the beginning.  The if errorlevel 1 pause has been removed from mz390.bat, az390.bat, lz390.bat, and ez390.bat.  The TEST z command resets error count and return code to zero.
See TEST\RTTEST.ERR for error log for all RTTEST regression tests.
  280 04/12/06 XP E 1 Add WAIT support for multiple event ECBLIST.  See TESTTIM2 for ECB= and TESTECB1 for ECBLIST= regression tests. AB
  281 04/12/06 XP E 1 Add DCBE support for compatibility (z390 DCB supports 31 bit EODAD and SYNAD by default).  See updated TESTDCB2 using DCBE EODAD exit. AB
  308 05/04/06 XP E 1 Add initial support for z390 EXEC CICS Compatible Assembler Support as follows:
1) CICS indicates EXEC CICS program and honors PROLOG and EPILOG insertion options.
2) PROLOG defaults on to insert DFHEIGBL global variable macro at beginning of program, inserts DFHEISTG dynamic storage macro at first DFHEISTG DSECT statement, and inserts DFHEIENT entry macro at first CSECT in program.
3) EPILOG defaults on to insert DFHEIEND exit macro at END statement.
4) Correct QUAM WINDOW,VIEW switching support to not require reset of screen.  (Used by CICS.MLC to switch between MCS view for commands and TN3270 SCREEN view for transactions.
See CICS\TESTCIC1.MLC and CICS\TESTCIC2.MLC regression test application using EXEC CICS - SEND, RECIEVE, LOAD. RETURN.  See TESTGUI4 and TESTGU6 for EXEC CICS application supporting multiple TN3270 fields.  Use command RTCICS to assemble and link all CICS regression test programs and use new command CICS.BAT to start EXEC CICS command processor to run CICS tranactions.  Specify transaction name as PARM(name) option to start first transaction automatically.  See online documentation z390 EXEC CICS Assembler Support.
  309 05/04/06 XP P 2 Correct the z390 GUI EDIT menu selection to remember last directory accessed and start next selection there. SD
  310 05/07/06 XP P 1 Correct mz390 to issue error when non blank non macro comment line appears before the MACRO statement in a macro file. DSH
  311 05/07/06 XP P 1 Correct BLDL svc to issue error if the entries are not in alphabetical sequence and reduce entry length count to not include length for compatibility.  See updated TESTBLD1 and see usage in CICS.MLC command processor to find tranaction module in SYS390 dir. MM
  312 05/09/06 XP E 1 Add debugging usability improvements:
1)  Add SVC trace function name and key parms such as program name for LINK, LOAD, XCTL and DELETE.  plus register usage information.  See TESTINS2.LOG for example of SVC trace info.
2) Add program name to ending return code message in log to identify which program in a batch process caused non zero return code pause.
1.0.14d   05/02/06       24. RPI 305 update ESPIE and ESTAE to pass EPIE and ESTA control block
in register 1 to user exit. See new EPIED and ESTAD DSECT macros
defining layout of registers and PSW which user can modify prior to
exiting via BR 14. Recursive entry causes abend. See new TESTSPI1
and TESTSTA1 plus TESTINS2 which uses both. The ZCVTD macro has also
been updated to show location of these control blocks.

25. RPI 306 update mz390 to support OPSYN of any macro name. See

26. RPI 307 update pz390 to correct MYLR and MAYLR which had
duplicate setup calls corrupting next instruction. Also update
trace format for IPM. See updated TESTFP1 with new opcode tests
and new trace verfication.
1.0.14c   04/28/06       17. RPI 298 add MAYLR, MYLR, MAYHR, MYHR, MAYL, MYL, MAYH, and MYH
instruction support. Note results are normalized. Correct opcodes
for MY and MYH due to typo. Correct ez390 to return to TEST when
second opcode byte is invalid. Correct RXF and RRE FIX?? trace

18. RPI 299 Correct pz390 to issue 0C5 when accessing beyond memory.

19. RPI 300 Correct mz390 to expand COPY's within macros during

20. RPI 301 Correct az390 to handle base registers across LOCTR
more than 1 LOCTR section. Force 0C7 on 0 sign in PD. Correct
lz390 to verify ESD ranges in OBJ records.

21. RPI 302 Correct mz390 and az390 to allow tabs anywhere and
process as single space.

22. RPI 303 Correct ICM, ICMH, and ICMY to correctly set CC. See
TESTINS2 for additional tests added.

23. RPI 304 Correct az390 to support NOPRINT on PRINT statements.
1.0.14b   04/26/06       4. RPI 279 Add STIMER REAL,EXIT support plus TTIMER and POST.
See updated TESTTIM2.MLC

5. RPI 285 correct az390 to print errors and MNOTE's regardless of

6. RPI 286 move z390 interval CVT memory fields to ZCVT
which starts at X'2000' after PSA. See ZCVTD macro and
TESTZCV1.MLC Move CVT to X'A000' with pointer at X'10' in PSA
and only define OS/MVS compatible fields in CVT such as CVTDATE and

7. RPI 288 correct az390 to handle ENTRY defined as CSECT.

8. RPI 289 surpress EJECT and SPACE on PRN listing.

9. RPI 290 update all macros to always define label if any, and
check for MF= and issue MNOTE error if not supported. Add CALL
MF=L and MF=(E,list) support.

10. RPI 291 add ENQ and DEQ macros for compatiblity but don't
generate any code for testing.

11. RPI 292 Correct DCB to support MACRF field in (....).

12, RPI 293 add initial EXEC SQL INCLUDE member support which
parses all EXEC space delimited statements into macro comma
delimited call during MLC and macro loading. EXEC CICS and DLI
support is coming but only EXEC SQL INCLUDE member is supported
currently my executing macro by the member name specified. See

13. RPI 294 Correct error message indicating MLC source not found.

14. RPI 295 correct condition codes for ICM, ICMH, ICMY, OIHL, OILH.
See updated TESTINS2.

15. RPI 296 correct the following instructions with no operands

16. RPI 297 change SNAP macro to use L vs LA for storage operands
to allow multiple CSECT ranges.
1.0.14a   04/19/06       1. RPI 241 - correct mz390 to ignore errors on &variable substitution
on BAL output and let az390 flag any errors. This allows invalid
variables in comments or data to not generate errors.

2. RPI 283 - correct FREEMAIN macro to ignore SP= and correct
other MNOTE error messages. Note SP= support will be required
only if the test application uses subpool purge. See pending RPI248.

3. RPI 284 - add the following maximum table limit optional overrides:
a. MAXCALL(50) - maximum nested macro calls
b. MAXESD(1000) - maximum external symbol definitions
c. MAXFILE(1000) - maximum macro files loaded
d. MAXGBL(50000) - maximum global macro variables and cells
e. MAXLCL(50000) - maximum local macro variables and cells
f. MAXLINE(200000) - maximum source MLC, MAC, and CPY lines loaded
g. MAXPARM(10000) - maximum positional and key word parameters
h. MAXRLD(10000) - maximum relocatable definitions
i. MAXSYM(50000) - maximum ordinary symbols and macro labels
j. Previous MAXFILE(50) for max file size renamed to MAXSIZE(50) mb
These limits are targeted to handle 99% of assembler programs
without overcommiting memory for the few very large programs that
will require one or more overrides. RPI's to adjust defaults welcome.
1.0.14   04/14/06       Add PROFILE and IPL options.  Add DS type extensions CA, CE, FD, AD, VD.  Add STIMER support.


RPI 244 - Improve macro compatibility by ignoring valid keyword parms that are not required, issuing MNOTE error for those options not supported yet, plus the following:
BLDL - add for support of DE= (See new TESTBLD1)CALL - support LINKINST= CLOSE support (reg)DCB - allow LRECL=0 DCB - support RECFM=FA, FBA, VA, VBAESPIE - support PARAM=ESTAE - support OV,CT and PARAM= FREEMAIN - R0=len, R1=addr, check for conflictsGETMAIN - support LOC=ANY, ignore SP=LINK - support DE=LOAD - support DE=OPEN - support (reg) and  MODE=31SNAP - support PSW optionSTORAGE - support LOC=ANY, ignore SP=TN3270 - add missing error messages for SBA editsXCTL - support DE=RPI 276 - Add following customization startup support:
1) Add mz390 option PROFILE(copybook) which will insert COPY copybook as first statement in the MLC source being loaded into memory.  This copybook can include macro code to change global system variables, load and or execute macros, and could include use of AREAD to read the following source code and process it as text for analysis purposes and output reports via PUNCH.  See TESTPRO1.MLC executed with option PROFILE(TESTPRO1.CPY) to execute TESTPROS.MAC at startup and TESTPROT at end of mz390 processsing to generate MNOTE with start and end time and date..2)  Add ez390 option IPL(program) which will execute specified program on the SYS390 path at startup.  This module can update the CVT and any files requiring modification before starting normal execution of application program.  The address of the CVT is at X'16' in the reserved 8k PSA starting at  0.  The next 24k will be reserved for the CVT and any resident code placed there by SYSINIT.  The 24 bit DSA will start at x'10000' and the 31 bit DSA will start at x'1000000'.   See CVTD macro for currently supported fields.  See TESTIIPL2.MLC which displays IPL date from CVTDATE DS PL4 at offset x'38' in CVT which is initialized by TESTIPL1 using command ASMLG TEST\TESTIPL2  IPL(TEST\TESTIPL1).RPI 277 - Correct az390 to correctly assemble instructions of type E ( PR. UPT, PTFF, SCKPF, TAM, SAM24, SAM31, SAM64, and TRAP2), plus type S (IPK, PTLB, SAL), plus type RRE (PALB). These instructions may have leading comma before comments. See updated TESTINS1.
RPI 278 - Correct az390 to support NOPRINT option on PUSH and POP. See updated TESTASM1.
RPI 279 - Correct mz390 and az390 to use the timeout limit specified. It was using local duplicate variable in error, and not responding to change in 15 second default via TIME(..)
RPI 280 – Correct mz390 max symbol test and increase both mz390 and az390 max symbol limit from 10,000 to 50,000.
RPI 259 - Add compatibility features:
1) Add all the remaining predefined &SYS variables with the following conventions:
  SYSADATA_DSN - full path and file name if any  SYSADATA_MEMBER - current macro name if any  SYSADATA_VOLUME - drive letter if any  SYSIN_DSN - MLC full path and file name  SYSIN_MEMBER = MLC file name without suffix  SYSIN_VOLUME - MLC drive letter  SYSJOB - current job = MLC file name without suffix  SYSLIB_DSN - MAC full path and file name if any  SYSLIB_MEMBER - MAC file name without suffix  SYSLIB_VOLUME - MAC drive letter if any  SYSLIN_DSN - OBJ full path and file name  SYSLIN_MEMBER - OBJ file name without suffix  SYSLIN_VOLUME - OBJ drive letter  SYSM_HSEV - highest MNOTE error level  SYSM_SEV - highest MNOTE level in last macro  SYSOPT_DBCS - set false indicating no DBCS support  SYSOPT_OPTABLE - "z390" opcode table name  SYSOPT_RENT - set true if RENT option specified  SYSOPT_XOBJECT - set true if GOFF or XOBJECT  SYSPRINT_DSN - PRN full path and file name  SYSPRINT_MEMBER - PRN file name without type  SYSPRINT_VOLUME - PRN drive letter  SYSPUNCH_DSN - PCH full path and file name  SYSPUNCH_MEMBER - PCH file name without type  SYSPUNCH_VOLUME - PCH drive letter  SYSSEQF - source sequence field set to 0 length string  SYSSTEP - current step = MLC file name  SYSSTMT - next MLC statement number  SYSTERM_DSN - ERR full path and file name  SYSTERM_MEMBER - ERR file name without type  SYSTERM_VOLUME - ERR file drive letterSee updated TESTSYS1.MLC regression test.
RPI 273 - Correct mz390 error message line number reference showing 0 vs 1 for continuation error on first line of file. See updated TESTERR1.
RPI 274 - Fix following mz390 errors:
1) Correct duplicate macro labels on MEND statements not correctly handled.  Regression from RPI 213 new support for macro labels on MEND caused by RPI 266 new support for inline macros in macro files which does support other duplicate macro labels.  See updated TESTMAC8.MLC and TESTMAC8.MAC.2) Correct expression parser to correctly handle C type self defining term with double quote embedded.  See updated TESTMAC1.3) Correct expression parser precedence table to correctly handle (A EQ B)OR('C' EQ 'D').  It was failing on ('.  See updated TESTMAC2.4)  Correct az390 dependent USING reference to DSECT symbol that has current addressability established by a previous labeled USING.  See updated TESTUSE1.6)  Correct mz390 macro variable substitution on OPSYN statements.  See updated TESTSYN1.


1.0.13e   04/09/06       22. RPI 259 add remaining &SYS global and local system variables for
compatiblity. See TESTSYS1.

23. RPI 273 correct BAL line number references in error messages.
See updated TESTERR1.

24. RPI 274 correct macro labels on MEND, C type self defining terms
with embedded quotes, cumplex AIF expression with OR(' sequence,
non specific USING reference to prior labeled USING, and OPSYN , error.

25, RPI 275 correct ML and MLR to only use low 32 bits of r1+1.
See updated TESTINS2.
1.0.13d   04/05/06       19. RPI 270 add extended DS/DC types CA/CE/AD/FD/VD and 8 byte RLD

20. RPI 271 correct interactive TEST dump format for last line.

21. RPI 272 correct MR instruction to only use low 32 bits of r1+1
and r2 to form 64 bit product stored in r1 and r1+1. It was using
all 64 bits of r1 and r1+1.
1.0.13c   04/03/06       13. RPI 235 - fix z390 CD command path display and support CD commands
without requiring space separator like Windons (i.e. CD..)

14. RPI 264 - improve error handling as followsL
a) Abort with error if source files contain non-ascii characters
b) If not TEXT option, abort if source line > 80
c) Allow up to 3 passes in az390 to reduce errors

15. RPI 265 - Correct az390 to support DC fields with no data for
alignment. See updated TESTDC1.

16. RPI 266 - Correct mz380 to support inline macros within macro files
as well as open code. See new TESTMAC8.

17. RPI 267 - Correct pz390 to only flush extended floating point cache
registers if both registers have not been changed and prevent TEST
mode trap when tracing to invalid instruction causing 0C1.

18. RPI 268 - Add option TEXT to enable mz390 to read and write text
files with any line length without continuation formatting. Also
add DSNAME= as well as DDNAME= extentions to AREAD and PUNCH to
enable reading and writing multiple source files in one
execution. See new TESTTXT1 which creates 2 HTML text files
from sinle eecution of testTXT1.MLC with option TEXT.
1.0.13b   03/22/06       5. RPI 237 - Correct DROP for labeled USING causing error. See updated

6. RPI 251 - Fix bug in TEST trace option involving 3 flavors of RRF format
instructions. See updated TESTTST1 which now includes trace to break on CGXR.
See TESTTST1.SVG for expected log output used to verify batch TEST session.

7. RPI 252 - Publish updated Guide for Program Services and Storage Services
from Melvyn Maltz to document new STIMER and STORAGE macros.

8. RPI 254 - Support blank COM, CSECT, DSECT, LOCTR, RSECT, or START.

9. RPI 256 - Allow macro labels to start with ._ as well as A-Z@#$.
Also issue error if az390 label has invalid characters.
See updated TESTMAC1 and TESTERR2.

10. RPI 257 - Correct mz390 to accept * as second operand in substring
expression indicating remaining length of string. See updated TESTMAC1.

11. RPI 258 - Correct az390 to process , delimiter on ORG statement.
See updated TESTASM1.

12. RPI 260 - Improve error message for expression parsing errors and
add documentation to user guide on how expressions are parsed using
variable stack and operator stack. See updated TESTERR2.
1.0.13a   03/20/06       1. RPI 232 - support integer constants with exponents such as 1E3 = 1000

2. RPI 236 - support running z390 from CD or read only server directory

3. RPI 242 - correct mz390 not initializing LCLA and GBLC variables in
some cases.

4. RPI 250 - correct mz390 to correctly handle keyword macro values with
special characters within (...) without quotes.
1.0.13   03/17/06       Add limited COM, RSECT, and START support.  Add CVT OS flag support.

RPI 209 - Add STIMER macro and svc support with option to wait specified period of time.  See TESTTIM2.MLC regression test for BINTVL, MICVL, and TUINTVL wait options.

RPI 210 - GETMAIN and FREEMAIN compatibility fixes:

  • 1)  Allow R/RU for FREEMAIN
  • 2)  Support LOC=(24) or (24,31) in addition to ABOVE/BELOW/ANY
  • 3) Add STORAGE macro support.
  • See TESTMEM3 for STORAGE amd LOC tests.

RPI 211 - Make TGET and TPUT more mainframe compatible including:

  • 1) Support register form with address and option bits in registers.
  • 2) Add NOEDIT option support
  • 3) Allow optional ESC, ERASE/WRITE, WCC in buffer.

RPI 212 - Correct TN3270 bugs:

  • 1) Initialize state of TN3270 screen to unprotected data field rather than protected.
  • 2) Wrap screen address when updating screen address for next input character.  Wrap to user input field else 0.
  • 3) Update status line with terminal errors and also show status of keyboard lock.
  • 4) Speed up processing by avoiding full screen update and GUI repaint too frequently.

RPI 213 - Correct mz390 to support macro label on MEND statement.  See TESTMAC4.MLC.

RPI 214 - Correct mz390 2 expression parser errors:

  • 1)  Correctly handle multiply as last operation in first operand of a sub-string expression (i.e. 'ABC'(1*2,1) becomes 'B').
  • 2)  Correctly handle string literal following sub-string expression without requiring concatenation operator (i.e. 'ABC'(2,1)'DEF' becomes 'BDEF'). 

RPI 216 - Change PF13 to PF24 alternate keystroke from shift F1-F12 to use control-alt F1-F12 to avoid conflicts with shift-F10 using in J2SE for popup menus.


RPI 217 - Correct GUAM graphics command for TEXT to correctly set text length of text.  See DEMO\DEMOGUI5.

RPI 218 - Improve pz390 performance significantly in GUAM mode by replacing ez390 thread yield with sleep interval.  See difference in DEMOGUI2 MIP rate calc increasing by over 1 MIP.


1.0.12b   02/27/06       8. RPI 219 corrections to bugs in v1.0.12a including:
a) Correct TGET macro errors
b) Correct TGET error messages
c) Correct TPUT to require WCC following optional ESC, WRITE for
d) For TPUT NOEDIT or ASIS, require WRITE command before WCC.
See new demo and regression test TESTGUI6 which is an interactive TN3270 application with 3 fields (1 is numeric). The user can tab between fields, enter any or all, see updates, use AID keys, F1 for help, and F3 for exit.
1.0.12a   02/24/06       Cumulative FIxes for v1.0.12

1. RPI 211 Make TGET and TPUT more mainframe compatible including:
a) Support register form with address and option bits in registers.
b) Add NOEDIT option support
c) Allow optional ESC, ERASE/WRITE, WCC in buffer.

2. RPI 212 - Correct TN3270 bugs:
a) Initialize state of TN3270 screen to unprotected data field rather than protected.
b) Wrap screen address when updating screen address for next input character. Wrap to user input field else 0.
c) Update status line with terminal errors and also show status of keyboard lock.
d) Speed up processing by avoiding full screen update and GUI repaint too frequently.

3. RPI 213 Correct mz390 to support macro label on MEND statement. See TESTMAC4.MLC.

4. RPI214 Correct mz390 2 expression parser errors:
a) Correctly handle multiply as last operation in first operand of a sub-string expression (i.e. 'ABC'(1*2,1) becomes 'B').
b) Correctly handle string literal following sub-string expression without requiring concatenation operator (i.e. 'ABC'(2,1)'DEF' becomes 'BDEF'). See TESTMAC5.MLC.

5. RPI 216 Change PF13 to PF24 alternate keystroke from shift F1-F12 to use control-alt F1-F12 to avoid conflicts with shift-F10 using in J2SE for popup menus.

6. RPI 217 Correct GUAM graphics command for TEXT to correctly set text length of text.

7. RPI 218 Improve pz390 performance significantly in GUAM mode by replacing ez390 thread yield with sleep interval. See difference in DEMOGUI2 MIP rate calc increasing by over 1 MIP.

1.0.12   02/20/06       Add z9 processor instructions.  Add TGET/TPUT FULLSCR and ASIS support.  
1.0.11   01/31/06       Add binary OBJ mainframe compatibility.  Add macro dynamic arrray expansion.  
1.0.10a   01/16/06       1. RPI 173 - add LRV, LPQ, and STPQ instructions
2. RPI 174 - fix ALC?? and SLB?? when input condition  code is 0
3. RPI 176 - add check for missing address parm to TIME macro
4. RPI 177 - add check for missing length parm to CMDPROC macro
1.0.10   01/14/06       Add OPSYN support and BMK\INSTTIME.MLC instruction timing analysis by Melvyn Maltz.
  1. RPI 107 - Improve maintainability of the z390 java source code by splitting sources into smaller classes by function:
  2. 1)  Move z390 instruction processing code out of ez390 to separate class pz390.
  3. 2)  Also changed ez390 to run pz390 on separate thread for about 10%-15% performance improvement across the board.
  4. RPI 148 - Add &SYSMAC system variable.  See TESTSYS1.
  5. RPI 149 - Fix bug when redefining instruction with inline macro with MFC option.  See TESTMAC3 which redefines B and BRC 15.
  6. RPI 150 - Add OPSYN support.  See TESTSYN1 regression test.
  7. RPI 151 - Add user option to define first level svc handler by setting new svc PSW mask to x'FF' and new address.  When mask is set, the old svc PSW is store and control is transferred to the new svc PSW address.  To execute native z390 svcs, the handler must reset new svc PSW mask to X'00'..  LPSW instruction enabled as part of this RPI to allow handler to exit via LPSW SVC_OLD instruction without using any registers.  WTO macro changed to use BRAS versus BAL so WTO can be used in handler without base register required.  See regression test TESTSVC1 which uses this option to map user svc 201 into a WTO svc 35.  Note it also checks for the svc 3 exit and does it in native mode so user does not have to turn off handler prior to normal exit.
  8. RPI 153 - Remove duplicate label from WTO MF=L option
  9. RPI 154 - Add new performance analysis program INSTTIME.MLC contributed by Melvin Maltz.  Run BMK\INSTTIME.BAT to generate new BMK\INSTTIME.OUT report file.   Note program has version and output path for report hard coded.  Starting with v1.0.10 the statistical report on z390 instruction timing will be available on web site here.
  10. RPI 155 - Upgraded to Sun Microsystems J2RE version for build and regression testing.
  11. RPI 156 - Correct SNAP macro to support PDATA parm value of DCB instead of previous TIOT to show open DCB's with DDNAME and DSNAME.  This makes SNAP more consistent with TEST subcommand D.
  12. RPI 157 - Correct az390 to flag extra operands at end of expressions.  See updated regression tests TESTDC1, TESTASC1, and TESTERR2.
  13. RPI 158 - Correct LLIHH, LLIHL, LLILH, and LLILL load logical instructions to clear remaining bits in 64 bit register.  See updated TESTINS2 and other regression tests which used LL type instructions instead of II type instructions in error.  Change usage of LLILH and LLILL to IILH and IIll in SNAP macro caught by this fix.  See regression test TESTDMP4.
  14. RPI 159 - Correct az390 regular expression parser to return = as token in order to detect error when absolute value operand is incorrectly defined as literal.  See updated regression test TESTERR2.
  15. RPI 160 - Correct LLGT instruction which was loading from 4 bytes beyond D2(B2).  See TESTINS2 correction.
  16. RPI 161 - Correct az390 RXY to allow d2(,b2) like RX instructions by eliminating duplicate code which did not get fixed in RPI 3.  See updated TESTINS1 regression test.
  17. RPI 162 - Correct GETMAIN macro to correctly support new LV=nnnK or LV=nnnM option.  Correct mz390 to correctly return numeric portion of string followed by non-numerics (i.e. &LEN SETA &LV should return 1 not 0 for &LV=1K.  See new TESTMEM2 regression test. 
  18. RPI 163 - Update all macros to suppress register loads for same register.
  19. RPI 164 - Correct az390 to allow locally defined ordinary symbol to resolve EXTRN reference so that CALL and SUBENTRY will resolve to local static call without duplicate label error.  See new regression test TESTCAL1.  See regression tests TESTCAL1 and TESTCAL2.  Existing regression tests for external static calls and dynamic calls are TESTEXT2 and TESTLNK1.
  20. RPI 165 - Add USAGE statement references to az390 XREF list.
  21. RPI 166 - Fix az390 to correctly generate RSY and SIY type instructions such as SRAG and TMY with explicit base and displacement.  See updated TESTINS2 for SRAG and TMY with explicit base register.
  22. RPI 167 - Issue error message for any source MLC statement which is continued due to non-blank character in position 72 and the following line has non-blank text before position 16.  Fix continuation errors in XCTL, ESPIE, LINK, LOAD, DELETE, and SNAP. 
  23. RPI 168 - Correct directory null pointer exception when using path with . for current directory.
  24. RPI 169 - Correct az390, lz390, and ez390 to always use BAL, OBJ, and 390 as primary input extension ignoring any user override for mz390 primary input extension.  Correct mz390 error message 39 to insert space between text and missing file name.
  25. RPI 170 - Allow fifth positional parameter 'S' on READ or WRITE. Any other value is an error since this parm is only used or RECFM=U which is not supported, and DCBBLKSI is always used as length.  See TESTDCB9.
  26. RPI 171 - Correct mz390 and az390 expression parser handling of unary minus in complex expressions and allow multiple +- unary operators in succession.  See TESTSET1 and TESTASM`1.


1.0.09b   01/07/06       1 RPI 149 Fix bug when redefining instruction as macro with MFC option.  
1.0.09a   12/28/05       1.  RPI  148 Add &SYSMAC support  
1.0.09   12/23/05       Add MFI mainframe compatibility option with performance improvement, extended symbol type and length operator support, and additional global and local system variable such as &SYSDATE, &SYSCLOCK, &SYSTEM_ID, and SYSTEM_JAVA extension. 
  1. RPI 57 - Add symbol cross reference option to az390.  New XREF option for az390 is on by default.  Specify NOXREF to turn off the cross reference for symbols and literals.
  2. RPI 103 - Add TEST support for multiple + or - operands in memory addresses.   For example you can now entry L 12R?+11R?+13F. to add base R12+ index R11 + offset.
  3. RPI 127 - Allow user specified file type overrides on filename parm and directory lists using path\*.type.  See new regression test TESTMCR1.ASM which uses macros with MCR suffix.
  4. RPI 130 - Add the following mz390 system variables:
  5. &SYSASM = z390
  7. &SYSDATC = YYYYMMDD year, month, day
  8. &SYSDATE = MM/DD/YY month, day, year within cc
  9. &SYSECT = current section
  10. &SYSLOC = current LOCTR or last section
  11. &SYSNEST = macro call nesting level
  12. &SYSPARM = mz390 user option sysparm(xxxxx)
  13. &SYSTEM_ID = operating system and version
  14. &SYSTEM_JAVA - Java vendor and version
  15. &SYSTIME = HH.MM time of day
  16. &SYSVER.= version of z390 macro assembler
  17. See TESTSYS1 regression test for all of above.  Note when option NOTIMING is specified the same time and date is always returned - 01/02/05 33:44:55.567000.
  18. RPI 133 - Add MAXFILE option with default of 10 MB maximum size for any output file from mz390, az390, lz390, or ez390.  You can override with MAXFILE(nn) in MB.
  19. RPI 138 - Change batch commands to place sysmac and syscpy parms before user overrides to they can be changed by user.
  20. RPI 139 - Allow comments on conditional macro instructions such as LCLA, SETA, AIF, etc..
  21. RPI 140 - Correct handling of * and .* comments in macros to avoid erroneous opcode processsing.
  22. RPI 141 - Correct handling of lower case macro opcodes.
  23. RPI 142 - Add mz390 support for T' operator types:
  24. ABCDEFHLPSVXYZ and explicit length types:
  25. RBCKKGGKPRVXRZ  plus O, J, I, and M types for omitted, control section, insruction, and macro labels.  See TESTSYM1 for additional regression tests added.
  26. RPI 143 - Correct N'&SYSLIST to return actual positional parm count rather than minimum of positional parms defined on prototype statement.
  27. RPI 144 - Correct precedence in mz390 expression parser to make + or - higher than logical compare
  28. RPI 145 - Correct precedence in mz390 expression parser to prevent error when K' operator appears as only token in substring starting offset expression ot when two K' operators appear in succession.
  29. RPI 146 - Add new mainframe compatibility option for mz390 called MFC as default which prevents instruction opcodes from being treated as macros unless previously defined via inline macro.  This option for mz390 replaces option SYM to request ordinary symbol label type and length support during macro processing.  To turn off both opcode checking and symbol support, specify NOMFC.  Also new statistic added showing unique instruction count.
  30. RPI 147 - For mainframe compatibility correct NOT for SETB type variables to return 0 or 1 rather than complement (ie -1 for NOT 1).


1.0.08c   12/20/05       1. RPI103 Allow multiple test memory address expressions with + or -
2. RPI143 Correct N'&SYSLIST to return actual parm count
instead of defined positional parms based on prototype
3. RPI144 Correct precedence between logical operators and + - * /
1.0.08b   12/19/05       1. RPI 57 Support az390 xref of symbols and literals by default.
Specify NOXREF to turn it off.
2. RPI 139 Allow comments on LCL/GBL/SET/AIF macro code statements
3. RPI 140 Correct handling of * and .* to skip parsing for opcode.
4. RPI 141 Correct handling of lower case macro opcodes.
5. RPI 142 Expand T' and L' support to include all DS/DC types plus J, I, M, and O types. See TESTSYM1 for expanded regression tests.
1.0.08   12/15/05       Add GUI graphical user interface with MCS console view for WTO and WTOR, TN3270 view for TPUT and TGET in edit and FULLSCR 3270 data stream mode, and graphic display view.
  1. RPI 47 - Add GUI option to ez390 which enables GUI dialog window with 3 different view options:
  2. 1) MCS console view for WTO and WTOR messages.  Run  DEMOGUI1 and DEMOGUI2 with GUI option for demo.
  3. 2) TN3270 view for TPUT and TGET with EDIT and FULLSCR options.  Run DEMOGUI3 and DEMOGUI4 with GUI option for demo  (FULLSCR support is not done yet and uses EDIT mode for now - see RPI 136).
  4. 3) GRAPH view support for graphics output generated using GUI macro graphics options.  Run DEMOGUI5 with GUI option for demo (Graphics support not done yet so demo just shows title and text output on graphic display for now - see RPI 137).  Note this demo also outputs MCS and TN3270 messages so you can view all 3 displays via menu.  See new z390 GUI Graphical User Interface Guide for supported macro interfaces. 
  5. RPI 105 - Research issue with maximum memory that can be allocated via MEM(mb) option on a system.  The J2RE virtual machine option -Xmx can be used to set maximum memory available.  See FAQ for more information and example.
  6. RPI 108 - Improve performance of additional compute intensive instructions:
  7. 1) BC no branch reduced from 519 to 343 NS by skipping RX target address fetch if no branch to be taken.
  8. 2) AP and all PD speedup by using Long versus BigInteger when values within range.
  9. 3) MVCL and MVCLE speedup by using block copy and fill.
  10. 4) MVZ, MVN, OC, NC, XC all speeded up by replacing byte loop with Long, Int, Short, byte loops.
  11. 5)All instructions speedup by replacing mem.get(...) buffered fetch with mem_byte[...] direct byte array fetch, also mem.put() and reg.get() and reg.put().
  12. See Benchmark Testing page for more results.
  13. RPI 109 - Fix packed decimal instructions to issue 0C7 versus 0C5 under certain error conditions.  Note 0C5 is the default abend for any error not recognized or specifically handled by ez390.
  14. RPI 110 - Fix SNAP macro bug setting wrong bit for STORAGE request.  Update SNAP svc to correctly format TIOT entries for closed files showing DCBOFLG open bit off.  Add check for register conflict.  See TESTDCBD for regression test including SNAP of open and closed DCB's.
  15. RPI 111 - Fix LOAD support to strip leading and trailing blanks in DSNAME field.  This fix causes a LOAD of a file name and suffix matching any previously loaded file or 390 program to be treated as identical resulting in CDE use count being incremended and same address being returned in register 0.  Register 1 is set to length in double words or 390 or bytes for any other file.  See updated TESTLOD2 regression test.
  16. RPI 112 - Fix I/O macros:
  17. 1)  POINT - add missing AGO
  18. 2) CLOSE - check for invalid DCB RX form (reg) vs ((reg))
  19. 3) Correct EZ390E error 90 for I/O error on READ/WRITE
  20. RPI 113 - Fix all z390 file handling to correctly handle files with drive letter and colon path but no file separator in the path.
  21. RPI 114 - Fix WTO and WTOR to use more unique labels to avoid duplicating user labels.
  22. RPI 115 - Fix mz390 and az390 continuation processing to correctly handle comma and space appearing within literal which is continued (previous truncating line after comma).  See TESTDCBA for example.
  23. RPI 116 - Issue error if no END statement found in az390.
  24. RPI 117 - Fix GETMAIN and FREEMAIN macros to allow 31 bit length for LV=, support nnnK = nnn * 1<<10 and nnnM = nnn * (1<<20) short form extensions, issue error for missing LV=, and correct spelling errors.
  25. RPI 118 - Fix LINK, LOAD, XCTL, and DELETE macros to use SR verus LA, check for register conflicts.  Correct OI for VL bit setting in LINK, XCTL, and CALL.  Remove BALR, USING and add optional register restore in XCTL.
  26. RPI 119 - Add floating point and hex options to EQUREGS macro.  See TESTSET1.MLC for new tests of multiple value sets required for EQUREGS update.  See TESTEQU1 regression test for use of REGS=GPR/FPR and TYPE=DEC/HEX options.
  27. RPI 120 - Fix assembly of SRP instruction when using explicit d2(b2) operand (was dropping base).  See updated TESTINS2 regression test.
  28. RPI 121 - Change TEST subcommand Q to abort rather than continue execution.  Fix G xxx where xxx is invalid to just issue error message and return to prompt instead of running.
  29. RPI 122 - Add support for following az390 statements:
  30. 1) AMODE, RMODE - ignored (use linker options)
  32. RPI 123 - Correct multiple directory search logic to correctly handle multiple directories in mz390, lz390, and ez390.
  33. RPI 124 - Truncate trailing blanks and sequence # beyond 72 during loading of mz390 and az390 source code.
  34. RPI 125 - Add support for setting multiple SET values in array by adding multiple expressions separated by commas,  See updated TESTSET1 regression test.
  35. RPI 126 - Ignore duplicate macro variable array declarations and use the first declaration to set fixed maximum array size.  This is a current restriction compared to mainframe which allows arrays to grow dynamically.
  36. RPI 129 - Fix mz390 expression parser to handle '....' setc strings where sdt of the form c'...' or b'...'  or x'...' is returned as regular expression for last character and single quote of literal. 
  37. RPI 131 - Ignore label field in TITLE statements to prevent duplicate label errors.
  38. RPI 132 - Correct ESPIE macro to correctly handle range of interrupt codes within list of interrupts.
  39. RPI 134 - Fix all macros to generate label if specified for &N.
  40. RPI 135 - Move shared tables and file methods to tz390 to reduce redundant code, and improve consistency.  Fix shared find file method used by mz390, lz390, and ez390 to support both ; and  + path separators.


1.0.07b   12/05/05       1.  RPI 47 new ez390 GUI option to support GUI window MCS view
(additional TN3270 view and graphics views coming in v1008)
2. RPI 111 remove leading and trailing blanks on file name for LOAD
3. RPI 112 correct POINT and CLOSE macro errors
4. RPI 113 correct file handling to support drive letter and no \.
5. RPI 114 correct WTO to use more unique labels to avoid duplication
6 RPI 115 correct mz390 and az390 continuation support to allow comma
space within character strings without truncation
7 RPI 116 issue error if no END statement in az390 causing literal error
1.0.07a   11/24/05       1.  RPI 105 execution paramter -Xmx can be used to increamse memory limit
2. RPI 108 ez390 performance improvements for BC, AP, MVCL
3. RPI 109 packed decimal instructions issue 0C5 verus 0C7.
4. RPI 110 SNAP macro correction
1.0.07   11/20/05       Add additional benchmark timing support and debugging aides
  1. RPI 8 2 Document instruction timing results on website and look for ways to speed-up frequently used instructions.  Performance RPI's will be accepted including requests to add new svcs and/or opcodes to "microcode" frequently used instructions loops that need more speed.  See instruction timming benchmark test program BMKINS1.MLC with results posted on Benchmark page of www.z390.org.  The first performance improvement completed was replacement of MVC byte loop with single function move or fill function resulting in reduction of 256 byte move from 41 microseconds to 880 nanoseconds.
  2. RPI 92 Correct instruction trace format errors in test versus normal instruction trace due to type index off by 1 causing those instructions such as CVDG at beginning of new type to be formatted as previous type.  See BMKINS1.MLC for usage of CVDG.
  3. RPI 93 Correct SNAP svc x'51' which was incorrectly using ending storage address as length instead of ending address.  See updated TESTDMP4.MLC.
  4. RPI 94 Add new extended TIME NS macro option to return high resolution nano-second timer value useful for interval measurements.  See BMKINS1 for example usage.
  5. RPI 95 Update LOAD macro with DDNAME= and DSNAME= support identical to LINK macro.  Add new XCTL macro using svc 7.  Add DDNAME= and DSNAME= conflict check on LINK, LOAD, XCTL, and DCB.  See TESTLNK1 for LINK tests.  See TESTLOD1 for LOAD tests, and see TESTXCL1-3 for XCTL test.  See TESTERR3 for conflict error tests.
  6. RPI 96 Add validity checking for DCB LRECL, BLKSIZE and RECFM.  Accept both OPEN file and OPEN (reg) as extensions for input.  Correct missing AGO in POINT macro.  See TESTERR3.
  7. RPI 98 Add new DUMP and ASCII mode to the GUI option menu. Also correct failure observed on first batch command after changing menu options due to not correctly flushing queues between end of previous batch initiator process and restart.  Manual test of batch commands with DUMP and ASCII options tested.
  8. RPI 99 Correct mz390 AIF expression parser bug when substring expression appears after logical operator in complex expression.  See TESTERR3 tests using complex AIF testsin DCB macro.
  9. RPI 100 When running in TEST mode, issue ABEND dump if requested before returning to test prompt.  Also reformat ABEND dump to include system/user type ABEND codes with PSW and current instruction.  If dump requested by caller or system dump option then also display GPR and FPR registers, TIOT DCB's if any, CDE program entries, and dump of each program.  See TESTDMP1 to TESTDMP4 for examples of ABEND and SNAP output.
  10. RPI 101 Correct erroneous read past end of file error due to not resetting TIOT DCB rba pointer on reopen of existing entry.  See new TESTDCBD and TESTDCBE (same test run in ASCII mode) regression test program provided by MM.  Note ASCII mode does not translate RT or VT input so all the hex values including EBCDIC characters are retained as is in input records.
  11. RPI 102 Add additional LOAD and DELETE macro support:  Return 390 file length as double word count in R1 for OS compatibility.  If DDNAME or DSNAME point to file spec with path, file name, and suffix other than 390 then set R0 to load point for file content and set R1 to total file length in bytes.  Allow DDNAME or DSNAME to replace EP or EPLOC.  See TESTLOD2 regression test loading 2 text files.
  12. RPI 106 Correct following instruction bugs: SPM and IPM not putting mask in correct position (MM)  NR, OR, and XR condition code not set (MM)  PR restoring R15 incorrectly (IS) See TESTINS2, TESTFP1, AND ESPIE macro updated regression tests.


1.0.06   11/14/05       Enhance ASCII mode support including PKA and UNPKA instructions.  Enhance CMDPROC to support multiple tasks.  Add DUMP option, SNAP macro, and TEST sub-commands to display GPR and FPR registers, CDE program info, TIOT DCB info, and memory statistics.  Add XLATE translation macro.

1.  RPI 85 - Issue errors for DC F and H type signed field values that exceed range for length specified.  See TESTERR2.

2.  RPI 86 - Add following additional TEST sub-commands:

  •   D - display DCB file information
  •   F - display floating point registers
  •   M - display memory totals
  •   P -  display program information 
  •   R - display general registers 
  • See TESTTST1 updated regression test.

3.  RPI 87 - Correct erroneous error 102 on ORG statement occurring whenever last expression calc prior to ORG resulted in absolute value rather than RX type symbol in same csect.  See TESTASM1.

4.  RPI 88 - Correct error in OPEN and CLOSE macro for DCB register parm.  Add DCB validity checking at execution time.  Note this RPI requires reassembly of all DCB's with new validation field named DCBID in DCB and DCBD macros.  See new TESTERR6 regression test.

6.  RPI 89 - Add option for LOAD and LINK to use extended keyword DDNAME= or DSNAME= defining program file path list or specific file via environment variable or program constant with file specification. If directory path list is specified, then EP or EPLOC is required to define the program name.  If a file specification for 390 program is specified, then it overrides any EP or EPLOC name.  DSNAME overrides DDNAME.  See TESTLNK1 for example regression test.

7.  RPI 90 - Correct v1.0.05 regression error causing trap when single character labels B, C, or X are used due to erroneous test of 2nd character for self defining term quote.  See TESTASM1 updated regression test.

8.  RPI 91 - Add support for XLATE macro via svc x'67' to translate between ASCII and EBCDIC.  See regression test TESTXLT1


1.0.05a   11/09/05       PTF with test fixes for 7 RPI's - ASCII and DUMP options, CMDPROC, and COPY with comments

2.  RPI 74 - issue errors for bad relative instruction addresses
3.  RPI 75 - add DUMP option with default set to indicative dump only
4.  RPI 76, 77, 79 - support multiple CMD processes and cleanup controls (see updated CMDPROC macro and TESTCMD1 and TESTCMD2)
5.  RPI 84 - allow comments on copy statements

1.0.05   11/04/05       Add TIME macro SVC 11 extensions for CLOCK type STCK, STCKE, and JAVA different epoch clock time formats

1.  RPI 58 - Correct STCK and STCKE to be mainframe OS time compatible.  STCK stores double word with bit 51 corresponding to microseconds from January 1, 1900.  STCKE stores 16 bytes with bit 59 corresponding to microseconds from January 1, 1900.  See TESTTIM1.MLC update.

2.  RPI 61 - Remove duplicate CR,LF from RECFM=FT and VT output format in ASCII mode.  No duplicates found, see RPI66 and regression test TESTDCBC.

3.  RPI 62 - Remove extra space from command recall in TEST mode.  Manual GUI test.

4.  RPI 63 - Recognize x'1A' as end of file marker on DCB RECFM=FT or VT read and branch to EODAD.  Note you can use superzap (www.superzap.net) to view and verify hex codes in any Windows file such as the input and output test file in this regression test.  I also used superzap to add the hex x'1a' code to test file with the command sequence OPEN, DUMP, SFL (set file length), and REP command.  See TESTEOF1.MLC.

5.  RPI 64 - Correct error handling for invalid DCBDSNAM field with or without TEST mode.  The DCB synad handling routine now issues error message followed by S013 abend for consistent handling with or without TEST active.  See TESTERR4.MLC.

6.  RPI 65 - Correct BALR, BASR, and BASSM to branch when R1 = R2.  See TESTINS2.MLC update.

7.  RPI 66 - Correct ASCII mode padding of RECFM=FT records to use ASCII X'20' versus EBCDIC X'40'.  This should also fix RPI61.  See TESTDCBC.MLC run in ASCII mode.

8.  RPI 67 - Change TEST mode command G, T, or Z opcode to always execute at least 1 instruction before breaking on next matching opcode.  Breaking on BCT to itself now executes once per G, T, or Z BCT.  Manual test.

9.  RPI 68 - Add 3 SVC type extended options to the current IBM compatible TIME macro:

  • 1.  CLOCKTYPE=STCK store double word with bit 51 = microseconds from Jan. 1, 1900 IBM Epoch.
  • 2.  CLOCKTYPE=STCKE store 2 double words with bit 59 = microseconds from Jan 1, 1900 IBM Epoch.
  • 3.  CLOCKTYPE=JAVA store double word with bit 63 = microseconds from Jan 1. 1970 Java Epoch.
  • See TESTTIM1.MLC update.

10.  RPI 69 - Change ED and EDMK to map X'40' to ASCII space X'20' when running in ASCII mode.  Note the following ASCII characters cannot appear as characters in ASCII mode due to conflicts with predefined special codes:

  •    1.  ASCII @ (X'40')
  •    2.  ASCII space (X'20')
  •    3.  ASCII ! (X'21')
  •    4.  ASCII " (X'22')
  • The above codes can be moved into edited fields after ED/EDMK.  See TESTASC3.MLC regression test which is run in ASCII mode.

11.  RPI 70 - After install of z390 v1.0.04 on Win/2000 with J2RE 1.5.0_5, system failure with error - java.lang.UnsupportedClassVersionError: mz390 (Unsupported major.minor version 49.0).  Planned fix is to build 1.0.05 on XP update 4 instead of XP update 5 since that fixed win/2000 problem seen back in v1.0.00.  Manual test on Windows/2000.

12.  RPI 71 - ez390 loader incorrectly relocating AL3(*) type address constant.  See TESTINS2.MLC  update.


1.0.04   10/29/05       Add CMDPROC macro and SVC 34 to start, stop, read, and write messages to Windows started task.

1.  RPI 60 – correct mz390 expression parser to correctly handle multiple logical conditions.  See GET, PUT, READ, WRITE macro example AIF test for R1 conflicts.

1.0.03b   10/26/05       1.  RPI 48 – correct GET, PUT, READ, and WRITE macros to detect register 1 conflicts and issue MNOTES.  See TESTERR3.

2.  RPI 49 – correct D instruction to use low half or register pair like DR.  See updated TESTINS2.

3.  RPI 50 – issue 0C1 abend for undefined svc requests versus abort error message so it can be trapped by TEST mode.

4.  RPI 51 – exit TEST mode on Q command without error message.

5.  RPI 52 – standardize all error messages using “?z390E error” where ? is G for GUI, M – macro processor, A – assembler, L = linker, and E – execution.

6.  RPI 53 – set R15 to error number in DCB synad exit.

7.  RPI 54 – document how to cancel batch tasks in user guide and FAQ on website.

8.  RPI 55 – update /SC startup option to execute GUI commands from specified file. 

9.  RPI 56 – update ABEND macro and SVC 13 processing to dump registers and program memory to log when DUMP is requested.

10.  RPI 59 – add DROP 15 to SUBENTRY to avoid multiple USING’s.

1.0.03a   10/23/05       PTF with hyper fixes for ED, EDMK, TM, and DCB I/O RECFM=FT for ASCII

1.  RPI 42 - use full EBCDIC to ASCII translate table for GET/PUT FT and
for PGMNAME, DDNAM, DSNAM translations.

2.  RPI 43 - correct ED/EDMK significance indicatior on 1 byte too early.

3.  RPI 44 - correct TM to set CC3 when AND'd mask and test byte = mask.

4.  RPI 45 - correct register label on TEST list command and trace regs.

1.0.03   10/21/05       Add CUSE, CLST, SRST instructions.  Add macro enhancements for SAVE, RETURN, LINK, LOAD, WTO MF=

1.  RPI 23  - add string instructions CLST, CUSE, and SRST.  See updated TEST\TESTINS2.MLC regression tests.

2.  RPI 24  - change batch task commands to use %~dp0 path wherever needed instead of changing directory to allow user to use relative paths in alternate directories.

3.  RPI 25 – change the trace options for mz390, az390, and lz390 to TRACEM, TRACEA, and TRACEL respectively.  The TRACEALL option will generate all detail traces.

4.  RPI 26 – correct DCB missing label .DDDEF

5.   RPI 27 – issue error message for all macro undefined keyword parameters

6.  RPI 28 – change default for DCB DSNAME field to EBCDIC.  Use ASCII option for all fields to be genereated in ASCII vs EBCDIC.

7.  RPI 29 – change error messages to have consistent error prefix in upper case with I or E for information or error.

8.  RPI 30 – add SAVE and RETURN standard linkage macros

9.  RPI 31 – set r15 to zero on normal svc exit.

10.  RPI 32 – support multiple directory list for SYSMAC, SYSCPY, SYSOBJ, and SYS390 delimited by “+” to avoid conflict with BAT parm parsing

11.  RPI 33 – change default PSW program mask to suppress fixed point overflow.  To trap this or other exceptions use ESPIE or ESTAE macros.  See regression test TESTINS2 for examples.

12.  RPI 34 – support EBCDIC and ASCII full charater set translation instead of only printable characters.

13.  RPI 35 – correct loop in batch task TEST mode execution when the GUI interface is cancelled before batch task is cancelled.

14.  RPI 36 – trap any abend in TEST mode and issue error message and return to the TEST prompt.

15.  RPI 37 – update user guide on use of G, T, Z to break on opcode, and other documentation updates.

16.  RPI 38 – issue error if user supplied register parameters conflict with use of R1 for DCB or DECB in GET, PUT, READ, or WRITE.

17.  RPI 39 – set batch return code to R15 on normal exit else 16.

18.  RPI 40 – correct 2 expression parser bugs in mz390 for ‘?’ string and ‘&MF (2)’(1,1) type operands where ? is a valid prefix operator such as T’ or K’ and &MF(2) is any parameter sublist in string.

19.  RPI 41 – add the following additional parameter support in macros:

  • CALL – VL positional parm
  • LINK – PARAM= and VL=1 keyword parms
  • WTO   - MF=L keyword parm


1.0.02   10/14/05       Add extended DCB DSNAME, DDNAME, and RECORD= optional fields

1,  RPI 14  - correct desktop z390 icon to point to install directory when location is changed by user during install

2.  RPI 15  - remove CMD prefix from GUI command line generated entries using file menu to run batch command tasks.  And turn off batch task when command is done.

3.  RPI 16  - remove dependency between TEST and TRACE options on the GUI options menu.

4.  RPI 17  - allow help commands such as HELP and ABOUT to be entered via command line by turning off CMD mode at end of each batch task unless user requested has requested it stay on via the view menu or CMD command.

5.  RPI 18  - add support for RECORD= parm on DCB to define default record area for GET, PUT, READ, WRITE if not specified on those macros referencing the DCB.

6.  RPI 19  - add support for DSNAME= on DCB defining ASCII file specification including path and delimited by null or double quotes for long spacey names up to 265 characters.

7.  RPI 20  - correct erroneous 62 error on output file which does not exist yet.

8.  RPI 21  - issue 0C5 addressing exception abend when PSW set to address beyond allocated memory.

9.  RPI 22  - turn time limit option off when test option specified.


1.0.01   10/06/05       1.  RPI 4  - Allow changing install directory

2.  RPI 5  - Option ASCII to generate ASCII vs EBCDIC character fields in DC C'...' etc.  Also support C"..." ASCII character generation.

3.  RPI 6  - Option to limit errors ERR(nn)

4.  RPI 7  - Document I/O support describing DCB and DDNAME usage.

5.  RPI 8  - Correct "compatible java" on about menu

6.  RPI 12  - remove erroneous error 35 after error 45

7.  RPI 13  - correct up and down arrow scrolling of previous commands entered via GUI command line.


1.0.00a   10/04/05       First PTF with RPI hyper fixes


1.0.00   09/30/05     Initial release  

This page last updated Friday September 10, 2010.   Webmaster 
Copyright 2007 Automated Software Tools Corporation