		       SROM Utilities Version 4.05 Release (2-Mar-1998)
		  -----------------------------------------------------------


Version 4.05:
-------------

SROMPROD:
   a. Added the flag "/token_format" to enable users with Token Ring
      format of addresses use this utility.
      In such a case this user needs to write the first token ring address 
      to be programmed to the "addr.log" file, and the maximal token ring 
      address to the "addr.max" file. In this case, using the "/token_format"
      flag in the command line will translate those addresses to an IEEE 
      format addresses. The address shown in the "addr.log" and "addr.max"
      files will remain in the token ring format, while the address written 
      to the SROM will be in IEEE format.
   b. Changed the "addr.log" file to contain the address to be programmed 
      to the SROM, and not the last address that was programmed to an SROM.
      Thus, the user does not need to write into this file the first address
      to be used minus one, but the first address itself.
   c. Changed the function "IncrAddr" in the "dev.c" file to increment the
      address in the "addr.log" file by the ControllerCount (the number of 
      controllers attached to the SROM) and not by one as it was the default 
      until now.
   d. Changed internal variables of functions which are very big (arrays of 4K size) 
      to be static ones and hence be kept on the heap. Otherwise they are kept on the 
      stack, but the stack is not big enough for them (this was done in files
      common to SROMUTIL and SROMPROD).

SROMUTIL:
   a. Added support for Block Type 6 (external phy power-down).
   b. Added support for Magic Password.
   c. Corrected a bug that caused SROMUTIL to incorrectly announce a
      corrupted magic CRC when reading a 4K template file.
   d. Corrected a bug that caused BlockType5 not to be counted in the
      BlockCount field in the SROM.
      (This bug is actually a result of the fact that before BlockType5
      existed, the BlockCount was actually MediaCount, and since
      BlockType5 is not a media it was not counted.)
   e. Enabled SROMUTIL to accept also upper-case templates as well as 
      lower-case ones.


Version 4.04:
-------------

SROMPROD:
   a. Fixed a bug in the "SanityCheck" function, that caused SROMPROD
      to crash sometimes on some machines, when programming an SROM.
   b. Added wake up of the chip before any read or write to the
      SROM.

SROMUTIL:
   a. Changed the function "InitSROM" in the module srom.c to detect
      the SROM size, and called this function in "InitOurDevice" after
      getting CSR9. This causes the detecting of the SROM size to be
      performed only once for an SROM and not before each read or write
      to it. (This is also for SROMPROD.)
   b. Added functions that perform wake up to the chip (reset CFDD<30:31>).
      Even though the program worked fine, this was done to perform
      a "cleaner" and more correct execution.
   c. Changed bit #5 of Func0_HwOptions (OnNowD3AuxPwr) to be reserved,
      with no check box to change it. This is done due to changes in
      the specification.


Version 4.03:
-------------

   Changed the function "MakeSureSROMIsIdle" to "SROMSettler", which uses longer delays.
   This fixes a bug that made the program gert stuck when reading or writing to a
   GreenNet device. This function works correctly for all devices.

SROMPROD:
   a. Added support for the 21143 rev 4.1 (no functionality changes, just supporting 
      another revision).
 
   b. Added the possibility to program a 4K SROM using a 1K template.

   c. Added a "sanity check" that makes sure that the device being programmed has the 
      same ID and revision as in the top file of the desired template. Otherwise, 
      SROMPROD would not pjrogram a device with a template of a different one.
      Note that this sanity check requires that the .top file will also be available 
      when running the program, just as it is in SROMUTIL. 

SROMUTIL:
   a. Added support for the 21143 rev 4.1 (no functionality changes, just supporting
      another revision).

   b. Moved all the functions of the "TDataLine" class to the new file dataline.c.

   c. Restricted the possibility to add tuples only to devices that support CardBUS
      (21142, 21143 all revisions and 21540 all revisions).

   d. Restricted the possibility to add a magic block only to devices that support
      magic mode (21143 all revisions and 21540 all revisions).

   e. Eliminated the support for magic block when there is more than one device in
      the SROM. This is donesince it is not good for more than one device to have the
      same magic IEEE address.

   f. Eliminated the support for ID block when another different device is added
      ("different" is also when only the revisions are not identical). This is done
      because two different devices cannot share the same SubSystemID, CIS pointer
      and modem information.

   g. When a template can be compacted from 4K to 1K, it is done after verifying
      with the user.

   h. When a 1K template from the previous version has tuples in the SROM and needs
      to be enlarged to 4K, to fit the new version, it is done after verifying
      with the user.

   i. Fixed a bug in the function "NullIDBlock". The function checked the first
      9 bytes instead of the first 9 words of the SROM.


Version 4.02:
-------------

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!                                                                                                  !! 
!! LIMITATIONS:                                                                                     !! 
!! ------------                                                                                     !!
!!                                                                                                  !!
!! 1. When releasing this version, there were still no GreenNet cards available for testing.        !!
!!    Even though, the kit was released to enable users test the GreenNet functionality as soon as  !!
!!    it gets to the market. All testing for the GreenNet were done on a 21143, since the GreenNet  !!
!!    actually has the same processor as the 21143. If, when the GreenNet comes out, changes are    !!
!!    needed, they will be made as soon as possible, to enable users work with it.                  !!
!!                                                                                                  !!
!! 2. When creating a template for a GreenNet (21143 Rev 4.0 or 4.8) it is supposed that the        !!
!!    SROM is of 4K. This is assumed since the SROM cannot be read when creating a template.        !!
!!    There may even not be any SROM in the machine when creating a template.                       !!
!!    Thus, if you work with a 1K SROM, then, when the question "Would you like to have tuples?"    !!
!!    is prompted, if you answer NO, there is no problem, but if you want tuples and you answer YES,!! 
!!    then, when the question "Where will the tuples be located?" is prompted  you must answer      !!
!!    BROM and !!NOT!! SROM, since there is no space in a 1K SROM for tuples!!                      !!
!!    This problem does not exist when reading a template file or an SROM, because the reading      !!
!!    detects the SROM size.                                                                        !!
!!                                                                                                  !!
!! 3. When creating a template for a GreenNet (21143 rev 4.0 or 4.8) with a Magic Block, Leave the  !!
!!    "Magic Disable" bit of the Magic Command UNSET, to avoid problems in CarsBus!!                !!
!!                                                                                                  !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

SROMPROD:
   a. Added support for the GreenNet (21143 Rev 4.0 and 21143 rev 4.8).
      This includes also:
      - Support for programming and reading a 4K SROM 
	(8 bits address).

      - Support for Dual Function (Ethernet and Modem).

      - Programming Ethernet and modem tuples to
	the SROM.

   b. Added two modules to the prorgram:
      dualfunc.c and dualfunc.h to support the dual functionality.

   c. Added the flags "/ethernet_tuples=<file>" and 
      "/modem_tuples=<file>" for programming these tuples to 
      the SROM.

   d. Fixed a bug that appeared when the SROM was already programmed 
      with a  Magic Packet, SROMPROD did not confirm overriding this SROM.

SROMUTIL:

   a. Added support for the GreenNet (21143 Rev 4.0 and 21143 rev 4.8).
      This includes also:
      - Support for reading a 4K SROM (8 bits address).

      - Support for Dual Function (Ethernet and Modem).

      - Support for the new calculation of the CIS Pointer
	for the offsets of tuples that will be programmed to the SROM.

    b. Added three modeules to the program:
       dualfunc.c and dualfunc.h to support the dual functionality.
       grnutil.c to support the GreenNet.

Version 4.01:
-------------

SROMPROD:
   a. Changed Wake-On-Lan to Magic Packet.
      Magic Packet is a trademark of Advanced Micro Devices, Inc.

   b. Changed the default functionality of /magic_format, /magic_ieee
      and /magic_cmd flags as follows:
      - not using /magic_ieee or /magic_cmd will use the ones that are
	in the specified template file.
      - using /magic_ieee=self will use the board's IEEE address to be also
	the Magic IEEE address.

   c. Fixed a bug that caused SROMPROD not to find a NIC that the user
      defined using the "CFID=" flag. Now it works correctly and the
      user can program or dump an SROM of a NIC that is not supported 
      by SROMPROD.
      NOTE: It is the user responsibilty when he programs an SROM with 
      an unsupported CFID, since it may cause incompatibilities.

SROMUTIL:
   a. Changed Wake-On-Lan to Magic Packet. 
      Magic Packet is a trademark of Advanced Micro Devices, Inc.
    
   b. Moved the handling of the 21140 from SROMUTIL.C to a new file 
      named FNETUTIL.C.


Version 4.00:
-------------

SROMPROD:
   No Change.

SROMUTIL:
   a. Added support for Magic Information Block.

   b. Added the ability to add CIS information, if not existant, also
      when reading a device or a template and not only when creating
      a new template.

   c. Moved the handling of the DS21140 to a new file - fnetutil.c.
      The handling of the new DS21144 has been added to the file phrutil.c.

Version 3.03:
-------------

SROMPROD:
   No Change.

SROMUTIL:
   a. Added support for the 21143, including all special classes and windows.

   b. Devided the main file of the program to seperate files, according to the 
      chips names:
      tlputil.c (for the DS21041), twinutil.c (for the DS21142)
      and tw2util.c (for the DS21143). Handling the DS21140 is still in
      sromutil.c.

   c. Added a 'Type' protected field for the Block Type in DS21140MediaBlock, 
      DS21142MediaBlock and in DS21143MediaBlock, and matching public methods:
      SetBlockType and GetBlockType.
 
   d. Added support for Block Type 5 (Reset Sequence) for the 21140, 21142 and 
      the 21143.

   e. Defined a new structure - WORDsArray - which is an array of 10 words for
      the Reset Sequence (10 is the maximum number of words in the Reset
      Sequence).

   f. Added the possibility to add MII phy media that are Nway advertised only, 
      although they are not in the media capabilities. A warning message is issued 
      when defining no media in the capabilities of the phy (in this situation all 
      media defined are Nway advertised only).

   g. Hide all the information about Phy address and phy number from the user,
      to avoid confusion.

   h. Changed the default for the TTM Bit to be on (checked) for 10Mb Media
      and leave the default as off (unchecked) for 100Mb media.
      This was done to avoid the warning message about mismatch between 
      medium and TTM Bit (because the user often forgot to update the TTM Bit).

   i. Corrected a problem which caused the program to hang when trying to delete
      an item from an empty media list.

   j. Corrected a problem which caused the byte map (in the SROM menu) to be updated 
      only after saving the template to a file and loading it. 
      Now the byte map is updated whenever a change is made to the template.

   k. Corrected a problem which forced the user to enter a GPR Sequence and a
      Reset Sequence for an MII Phy. Since it is a board specific information, 
      from now on it is the user responsibility to enter a GPR Sequence and a 
      Reset Sequence whenever necessary.


Version 3.01.2:
---------------

SROMUTIL - no change.

SROMPROD:
	Support Magic SROM format, including calculating CRCs and
	keywords for controling the Magic data:
	/magic_format
	/magic_cmd
	/magic_ieee
	See readme.txt for usage details.


Version 3.01.1:
---------------

SROMUTIL - no change.

SROMPROD:
   a. The README.TXT file was updated to include documentation of the
      command line qualifier "/ignoreCRC", which causes the program not
      to reject template files with illegal CRCs. The program calculates
      a CRC for the data and writes the SROM with a legal CRC.

   b. A new command line qualifier was added - "noCRC".
      This is a special engineering option (documented in the README.TXT).
      When used, the program will not reject files with illegal CRCs, and
      neither will it calculate a legal CRC to be written to the SROM.
      SROMs with illegal data (but of legal length) can be produced this
      way.

   c. When asked to overwrite an SROM which is already in the new format,
      the program will give the user an option to write the IEEE address
      that was on the SROM, to the rewritten SROM. This way the existing
      IEEE address can be preserved and no new address is used.

   d. The parsing of the command line is no longer case-sensitive.

   e. When the command line qualifier "/dump" is used, the program will
      now also save SROMs with illegal CRCs to the specified file.

   f. When executed in a directory containing no ADDR.LOG file, the
      program does not create such a file if the IEEE address that the
      user specified is illegal. Previous versions created this file
      in any case, which could be confusing in future runs: if an illegal
      IEEE address was entered the file was left in the directory as
      a zero-length file, causing the next run to issue confusing error
      messages.


Revision History:
-----------------

Version 3.00:
-------------

1. SROMPROD:

   The command line is now parsed before the boards on the machine are
   inspected.

2. SROMUTIL:

   a. Support of SROM Format Version 3.00:

      The new extended media block format is now supported, making it
      possible to create template files with these media blocks (for MII
      media or other), and to read and parse SROMs and template files with
      this format.

      The utility makes some effort to safeguard the user against
      creating template files which might not be desired - such as
      template files with an external phy whose address is not zero.

   b. Compliance with the new naming guidelines:

      Changed the names DC21140, DC21041 to DS21140 and DS21041,
      respectively; changed the occurrences of DECChip to Digital
      Semiconductor .

   c. Default media:

      Removed the default media for the adapters: the creator of a
      template must select all media manually.
      Saving a template file with a 'mediumless' adapter is not
      permitted.

Version 3.00c:
--------------
1. SROMPROD:

   a. Running the utility for the first time should be done in a directory
      where there is no ADDR.LOG file. The utility will then prompt the
      user for the IEEE address to be written to the current chip, and
      thus create and initialize the ADDR.LOG file for subsequent use.

   b. The utility now supports DS21142: it is recognized and its SROM can
      be written to using the utility. A sample template file for DS21142
      is provided.

2. SROMUTIL:

   a. The phy chip address and/or index number are now displayed in hex.

   b. A problem in version 3.00, that caused wrong values to be displayed
      some of the times after re-entering a DS21140 media info window, was
      solved. This happened when re-entering the window while creating a
      template file, and while entering it at any time when reading an
      SROM or while reading an existent template file.
      Data saved before this re-entrance was not problematic.

   c. A problem in version 3.00 that sometimes caused miswrites of DS21041
      media data with the EXT bit set (which have CSR13-15 in the SROM) to
      the template file (and/or to the SROM), was solved.

   d. In version 3.00, when creating a template for DS21140 with different
      phy chips, a problem caused the program to terminate if some specific
      orderings of the media were used. The problem was solved.

Version 3.00d:
--------------

1. SROMPROD:
   A new feature was added: an SROM's contents can now be read and dumped to
   a file. The file name and the index of the SROM (if there is more than
   one SROM in the machine) are specified by the user; if a file name is not
   specified, the user is prompted to enter it.

2. SROMUTIL:
   Some of the program's source modules were modified; none of the
   functionality was changed.

3. general:
   The sample template file for DS21142 (DS21142.TXT) was replaced,
   because of inconsistencies in the former one.

Version 3.00e - INTERNAL:
-------------------------

1. SROMPROD:
   a. A new feature was added, enabling the program to read template files
   with comments in them.
      A comment is a string starting with a semicolon, ending with a carriage
   return (similar to comments in assembly language).
      Example:
      00
      1f ;GEP sequence
      09
      ;CRC for ROM
      01
      af

   b. Since template files for DS21142 can only be created manually as of
   now, the command-line flag "/ignoreCRC" should be used when writing such
   a file to the SROM. This was missed in the notes for previous releases.
   In general, manually created templates without valid SROM CRCs can be
   written to the SROM using SROMPROD and this flag.

   c. Documentation of the command-line option "cfid=New CFID" was added
   to the README.TXT file for this release. Previously it was documented
   only in the usage message in the program itself.

2. SROMUTIL:
   a. A new feature was added, enabling the program to read template files
   with comments in them.
      A comment is a string starting with a semicolon, ending with a carriage
   return (similar to comments in assembly language). See example above.

   b. Corrected problem in running with 21142-based networking cards: when
   run with unsupported cards, the program would detect no supported NICs
   and give notice about it; starting from version 3.00c, this would not
   work with 21142, and the system would hang. This has been corrected.

Version 3.00f:
--------------
1. SROMUTIL:
   a. Corrected a problem in running on a machine with a 21142-based
   networking card: if the program was run on a machine in which there
   was more than one NIC, one of which was a 21142, the program would
   print an error message when asked to read the SROMs in the machine;
   only upon another request the program would recognize the other
   NICs. In this version, the program prints a warning about 21142 being
   detected though not supported, and lists the other SROMs (as required).

   b. Corrected a problem in editing the media supported by phy chips:
   when editing a template file (or an SROM's contents), deleting a medium
   from a phy which contained other media (which were not deleted), or
   changing the medium's TTM bit or Nway advertisement bit, did not make the
   required changes in the template (or the rewritten SROM).

2. SROMPROD:
   a. Corrected a problem which caused the program not to accept a command
   line with the flag "SROM=x" for x's greater than 1.

   b. Added the SROM number and the file name to the message printed after
   dump is completed.

Version 3.01 - Beta (Internal Release):
---------------------------------------
1. SROMUTIL:

   a. Support of SROM format version 3.01 - supporting SROMs for 21142.

   b. The program now checks that the length field for extended media blocks
   is correct, and gives an error message if such a field is erroneous.
   The error message is printed upon selection of the file/SROM. The program
   does not exit after giving the error message. If the data is saved (or
   written to the SROM), the correct length will be calculated and used.

   c. MII Phy support:
   In previous versions supporting MII Phys, the program did not allow
   reading a template (or an SROM) for which the media capabilities were
   only a subset of the media advertised on Nway (upon such an encounter,
   the program produced an error message and exited).
   Templates of this type still cannot be manufactured by the utility,
   but if a template or an SROM like that is read by the program, a warning
   will be given but the program will not terminate.

   d. As in SROMPROD, corrected a problem in parsing template files with
   comments in them. For an example, see above.

2. SROMPROD:

   a. Corrected a problem which caused an unnecessary error message after
   program completion, when SROMs were written to in sequence.
   The problem fixed did not cause any functional problem.

   b. Corrected a problem in parsing template files with comments in them:
   in a pair of lines such as this

      00 ;comment and carriage return
      ;another comment with no white space before it

   the second line would not have been parsed as a comment; therefore, if it
   contains hex digits, they would have been written to the SROM.
   This is now fixed.

3. General:

   a. Replaced the DS21140.TXT sample template file with one in which
   the Command field and the General Purpose Port Data are changed, due to
   new information.
      The DS21142.TXT sample template was also changed to one supporting
   three non-MII media and a National phy daughter card.

Version 3.01.1 - Beta (Internal Release):
-----------------------------------------

SROMUTIL:
   Support of the CIS Cardbus Pointer field.

Version 3.01:
-------------

SROMUTIL:
   a. Version numbers:
      If a template/SROM is entered with data on it that are supported
   only by higher formats than was in that template/SROM, the program
   will warn the user; and if the user does not want to upgrade
   the version number, the program will not allow changing the data or
   writing it to the SROM. The program will allow saving it to a file.
      If a legal template/SROM is edited and data is added that is supported
   only by higher formats than was in that template/SROM, the program will
   warn the user; if the user does not want to upgrade the version number,
   the program will not allow changing the data or writing it to the SROM.
   The program will allow saving it to a file.

   b. If a template/SROM is entered with a 21142 info leaf that contains a
   medium block that is not extended (does not have the extended bit on in
   its first byte), the program warns the user, and allows the user to
   change it (make it extended). If the user does not change it, the program
   skips that medium block (according to its length field), and the data in
   that block is not kept - and will not be saved to file or written to
   the SROM (although the data read is left unaltered).

   c. If a template/SROM is entered with a 21140/21142 info leaf that
   contains a medium block with an unrecognized type, the program warns
   the user and skips that medium block (according to its length field).
   The data in that block is not kept - and will not be saved to file or
   written to the SROM (although the data read is left unaltered).


