
************************************************************************
************************************************************************
**                                                                    **
**               Application notes for Winbond devices                **
**                                                                    **
**                       (Informal Document)                          **
**                                                                    **
**    To find the application notes for your device search for the    **
**    'core' part name.  As an example using the 25P80 8 pin SOIC you **
**    would search on '25P80'                                         **
**                                                                    **
************************************************************************
************************************************************************


************************************************************************

25P10
----------
25P20
----------

1.Four levels of "BLOCK PROTECT" can be implemented
for these device as follows:

Security Fuse     Block Protect Start Addresses

 SF2     SF1      25P10         25P20
-------------     ------------  -----------
  0       0       None          None
  0       1       None          $30000-3FFFF
  1       0       None          $20000-3FFFF
  1       1       $0-FFFF       $00000-3FFFF

2.Enabling the "Erase EE device" option will remove all block protection.

NOTE: Devices require "Erase EE device" option to be enabled when re-programming.

3. Status Register Format:

 ,_______________________________________________________________________
 |        |        |        |        |        |        |        |        |
 |  SRWD  |   0    |   0    |   0    |  BP1   |  BP0   |  WEL   |  WIP   |
 |        |        |        |        |        |        |        |        |
 `-----------------------------------------------------------------------`
   Bit 7     Bit 6    Bit 5    Bit 4    Bit 3    Bit 2    Bit 1    Bit 0

Address of status register:
25P10: $20000
25P20: $40000

4.Setting the "Program Protect Register" to Yes allows programming of
the 'Status Register Write Disable' (SRWD) bit.

For enabling "Program Protect Register" in TaskLink for windows(TLwin)
or TaskLink for DOS(TLdos) you must set the Enable Special Data #2
option.


************************************************************************

 25P40
 ----------
 25P80
 ----------

  PROGRAMMING OF THE "STATUS REGISTER PROTECT" (SRP) AND "BLOCK PROTECT"
  (TB,BP2,BP1,BP0) BITS

  Format of Protection Data in User RAM:
      7       6        5        4        3        2        1        0
 |--------|--------|--------|--------|--------|--------|--------|--------|
 |        |        |        |        |        |        |        |        |
 |  SRWD  |   0    |   0    | BP2    |  BP1   |  BP0   |  WEL   |  WIP   |
 |        |        |        |        |        |        |        |        |
 |--------|--------|--------|--------|--------|--------|--------|--------|

  Applying the following Protection Data into User RAM at the defined
  User RAM Address and enabling the "Program protect reg." flag in the
  in the programming operations will allow the following device
  protection programming support:

  User RAM Protection
  Data at User RAM
  Address: 0x80000           Area Protected for 25P40
  ------------------     -----------------------------------
  Data: 0x00          =  none
  Data: 0x04          =  0x70000 -> 0x7FFFF
  Data: 0x08          =  0x60000 -> 0x7FFFF
  Data: 0x0C          =  0x40000 -> 0x7FFFF
  Data: 0x10          =  0x00000 -> 0x7FFFF
  Data: 0x14          =  0x00000 -> 0x7FFFF
  Data: 0x18          =  0x00000 -> 0x7FFFF
  Data: 0x1C          =  0x00000 -> 0x7FFFF
  Data: 0x80          =  Status Register only
  Data: 0x84          =  Status Register and 0x70000 -> 0x7FFFF
  Data: 0x88          =  Status Register and 0x60000 -> 0x7FFFF
  Data: 0x8C          =  Status Register and 0x40000 -> 0x7FFFF
  Data: 0x90          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0x94          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0x98          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0x9C          =  Status Register and 0x00000 -> 0x7FFFF

  User RAM Protection
  Data at User RAM
  Address: 0x100000           Area Protected for 25P80
  ------------------     -----------------------------------
  Data: 0x00          =  none
  Data: 0x04          =  0xF0000 -> 0xFFFFF
  Data: 0x08          =  0xE0000 -> 0xFFFFF
  Data: 0x0C          =  0xC0000 -> 0xFFFFF
  Data: 0x10          =  0x80000 -> 0xFFFFF
  Data: 0x14          =  0x00000 -> 0xFFFFF
  Data: 0x18          =  0x00000 -> 0xFFFFF
  Data: 0x1C          =  0x00000 -> 0xFFFFF
  Data: 0x80          =  Status Register only
  Data: 0x84          =  Status Register and 0xF0000 -> 0xFFFFF
  Data: 0x88          =  Status Register and 0xE0000 -> 0xFFFFF
  Data: 0x8C          =  Status Register and 0xC0000 -> 0xFFFFF
  Data: 0x90          =  Status Register and 0x80000 -> 0xFFFFF
  Data: 0x94          =  Status Register and 0x00000 -> 0xFFFFF
  Data: 0x98          =  Status Register and 0x00000 -> 0xFFFFF
  Data: 0x9C          =  Status Register and 0x00000 -> 0xFFFFF

 For enabling "Program Protect Reg." in TaskLink for Windows(TLwin)
 or TaskLink for DOS(TLdos) you must set the Enable Special Data #2
 option.

************************************************************************

 25X10
 ----------
 25X20
 ----------
 25X40
 ----------
 25X80
 ----------
 25X16
 ----------
 25X32
 ----------

  PROGRAMMING OF THE "STATUS REGISTER PROTECT" (SRP) AND "BLOCK PROTECT"
  (TB,BP2,BP1,BP0) BITS

  Format of Protection Data in User RAM:
      7       6        5        4        3        2        1        0
 |--------|--------|--------|--------|--------|--------|--------|--------|
 |        |        |        |        |        |        |        |        |
 |  SRWD  |   0    |  TB    | BP2    |  BP1   |  BP0   |  WEL   |  WIP   |
 |        |        |        |        |        |        |        |        |
 |--------|--------|--------|--------|--------|--------|--------|--------|

  Applying the following Protection Data into User RAM at the defined
  User RAM Address and enabling the "Program protect reg." flag in the
  in the programming operations will allow the following device
  protection programming support:

  User RAM Protection
  Data at User RAM
  Address: 0x20000           Area Protected for 25X10
  ------------------     -----------------------------------
  Data: 0x00          =  none
  Data: 0x04          =  0x10000 -> 0x1FFFF
  Data: 0x08          =  0x00000 -> 0x1FFFF
  Data: 0x0C          =  0x00000 -> 0x1FFFF
  Data: 0x20          =  none
  Data: 0x24          =  0x00000 -> 0x1FFFF
  Data: 0x28          =  0x00000 -> 0x1FFFF
  Data: 0x2C          =  0x00000 -> 0x1FFFF
  Data: 0x80          =  Status Register only
  Data: 0x84          =  Status Register and 0x10000 -> 0x1FFFF
  Data: 0x88          =  Status Register and 0x00000 -> 0x1FFFF
  Data: 0x8C          =  Status Register and 0x00000 -> 0x1FFFF
  Data: 0xA0          =  Status Register only
  Data: 0xA4          =  Status Register and 0x00000 -> 0x1FFFF
  Data: 0xA8          =  Status Register and 0x00000 -> 0x1FFFF
  Data: 0xAC          =  Status Register and 0x00000 -> 0x1FFFF

  User RAM Protection
  Data at User RAM
  Address: 0x40000           Area Protected for 25X20
  ------------------     -----------------------------------
  Data: 0x00          =  none
  Data: 0x04          =  0x30000 -> 0x3FFFF
  Data: 0x08          =  0x20000 -> 0x3FFFF
  Data: 0x0C          =  0x00000 -> 0x3FFFF
  Data: 0x20          =  none
  Data: 0x24          =  0x00000 -> 0x0FFFF
  Data: 0x28          =  0x00000 -> 0x1FFFF
  Data: 0x2C          =  0x00000 -> 0x3FFFF
  Data: 0x80          =  Status Register only
  Data: 0x84          =  Status Register and 0x30000 -> 0x3FFFF
  Data: 0x88          =  Status Register and 0x20000 -> 0x3FFFF
  Data: 0x8C          =  Status Register and 0x00000 -> 0x3FFFF
  Data: 0xA0          =  Status Register only
  Data: 0xA4          =  Status Register and 0x00000 -> 0x0FFFF
  Data: 0xA8          =  Status Register and 0x00000 -> 0x1FFFF
  Data: 0xAC          =  Status Register and 0x00000 -> 0x3FFFF

  User RAM Protection
  Data at User RAM
  Address: 0x80000           Area Protected for 25X40
  ------------------     -----------------------------------
  Data: 0x00          =  none
  Data: 0x04          =  0x70000 -> 0x7FFFF
  Data: 0x08          =  0x60000 -> 0x7FFFF
  Data: 0x0C          =  0x40000 -> 0x7FFFF
  Data: 0x10          =  0x00000 -> 0x7FFFF
  Data: 0x14          =  0x00000 -> 0x7FFFF
  Data: 0x18          =  0x00000 -> 0x7FFFF
  Data: 0x1C          =  0x00000 -> 0x7FFFF
  Data: 0x20          =  none
  Data: 0x24          =  0x00000 -> 0x0FFFF
  Data: 0x28          =  0x00000 -> 0x1FFFF
  Data: 0x2C          =  0x00000 -> 0x3FFFF
  Data: 0x30          =  0x00000 -> 0x7FFFF
  Data: 0x34          =  0x00000 -> 0x7FFFF
  Data: 0x38          =  0x00000 -> 0x7FFFF
  Data: 0x3C          =  0x00000 -> 0x7FFFF
  Data: 0x80          =  Status Register only
  Data: 0x84          =  Status Register and 0x70000 -> 0x7FFFF
  Data: 0x88          =  Status Register and 0x60000 -> 0x7FFFF
  Data: 0x8C          =  Status Register and 0x40000 -> 0x7FFFF
  Data: 0x90          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0x94          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0x98          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0x9C          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0xA0          =  Status Register only
  Data: 0xA4          =  Status Register and 0x00000 -> 0x0FFFF
  Data: 0xA8          =  Status Register and 0x00000 -> 0x1FFFF
  Data: 0xAC          =  Status Register and 0x00000 -> 0x3FFFF
  Data: 0xB0          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0xB4          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0xB8          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0xBC          =  Status Register and 0x00000 -> 0x7FFFF

  User RAM Protection
  Data at User RAM
  Address: 0x100000           Area Protected for 25X80
  ------------------     -----------------------------------
  Data: 0x00          =  none
  Data: 0x04          =  0xF0000 -> 0xFFFFF
  Data: 0x08          =  0xE0000 -> 0xFFFFF
  Data: 0x0C          =  0xC0000 -> 0xFFFFF
  Data: 0x10          =  0x80000 -> 0xFFFFF
  Data: 0x14          =  0x00000 -> 0xFFFFF
  Data: 0x18          =  0x00000 -> 0xFFFFF
  Data: 0x1C          =  0x00000 -> 0xFFFFF
  Data: 0x20          =  none
  Data: 0x24          =  0x00000 -> 0x0FFFF
  Data: 0x28          =  0x00000 -> 0x1FFFF
  Data: 0x2C          =  0x00000 -> 0x3FFFF
  Data: 0x30          =  0x00000 -> 0x7FFFF
  Data: 0x34          =  0x00000 -> 0xFFFFF
  Data: 0x38          =  0x00000 -> 0xFFFFF
  Data: 0x3C          =  0x00000 -> 0xFFFFF
  Data: 0x80          =  Status Register only
  Data: 0x04          =  Status Register and 0xF0000 -> 0xFFFFF
  Data: 0x08          =  Status Register and 0xE0000 -> 0xFFFFF
  Data: 0x0C          =  Status Register and 0xC0000 -> 0xFFFFF
  Data: 0x10          =  Status Register and 0x80000 -> 0xFFFFF
  Data: 0x14          =  Status Register and 0x00000 -> 0xFFFFF
  Data: 0x18          =  Status Register and 0x00000 -> 0xFFFFF
  Data: 0x1C          =  Status Register and 0x00000 -> 0xFFFFF
  Data: 0xA0          =  Status Register only
  Data: 0xA4          =  Status Register and 0x00000 -> 0x0FFFF
  Data: 0xA8          =  Status Register and 0x00000 -> 0x1FFFF
  Data: 0xAC          =  Status Register and 0x00000 -> 0x3FFFF
  Data: 0xB0          =  Status Register and 0x00000 -> 0x7FFFF
  Data: 0xB4          =  Status Register and 0x00000 -> 0xFFFFF
  Data: 0xB8          =  Status Register and 0x00000 -> 0xFFFFF
  Data: 0xBC          =  Status Register and 0x00000 -> 0xFFFFF

  User RAM Protection
  Data at User RAM
  Address: 0x200000           Area Protected for 25X16
  ------------------     -----------------------------------
  Data: 0x00          =  none
  Data: 0x04          =  0x1F0000 -> 0x1FFFFF
  Data: 0x08          =  0x1E0000 -> 0x1FFFFF
  Data: 0x0C          =  0x1C0000 -> 0x1FFFFF
  Data: 0x10          =  0x180000 -> 0x1FFFFF
  Data: 0x14          =  0x100000 -> 0x1FFFFF
  Data: 0x18          =  0x000000 -> 0x1FFFFF
  Data: 0x1C          =  0x000000 -> 0x1FFFFF
  Data: 0x20          =  none
  Data: 0x24          =  0x000000 -> 0x00FFFF
  Data: 0x28          =  0x000000 -> 0x01FFFF
  Data: 0x2C          =  0x000000 -> 0x03FFFF
  Data: 0x30          =  0x000000 -> 0x07FFFF
  Data: 0x34          =  0x000000 -> 0x0FFFFF
  Data: 0x38          =  0x000000 -> 0x1FFFFF
  Data: 0x3C          =  0x000000 -> 0x1FFFFF
  Data: 0x80          =  Status Register only
  Data: 0x84          =  Status Register and 0x1F0000 -> 0x1FFFFF
  Data: 0x88          =  Status Register and 0x1E0000 -> 0x1FFFFF
  Data: 0x8C          =  Status Register and 0x1C0000 -> 0x1FFFFF
  Data: 0x90          =  Status Register and 0x180000 -> 0x1FFFFF
  Data: 0x94          =  Status Register and 0x100000 -> 0x1FFFFF
  Data: 0x98          =  Status Register and 0x000000 -> 0x1FFFFF
  Data: 0x9C          =  Status Register and 0x000000 -> 0x1FFFFF
  Data: 0xA0          =  Status Register only
  Data: 0xA4          =  Status Register and 0x000000 -> 0x00FFFF
  Data: 0xA8          =  Status Register and 0x000000 -> 0x01FFFF
  Data: 0xAC          =  Status Register and 0x000000 -> 0x03FFFF
  Data: 0xB0          =  Status Register and 0x000000 -> 0x07FFFF
  Data: 0xB4          =  Status Register and 0x000000 -> 0x0FFFFF
  Data: 0xB8          =  Status Register and 0x000000 -> 0x1FFFFF
  Data: 0xBC          =  Status Register and 0x000000 -> 0x1FFFFF

  User RAM Protection
  Data at User RAM
  Address: 0x400000           Area Protected for 25X32
  ------------------     -----------------------------------
  Data: 0x00          =  none
  Data: 0x04          =  0x3F0000 -> 0x3FFFFF
  Data: 0x08          =  0x3E0000 -> 0x3FFFFF
  Data: 0x0C          =  0x3C0000 -> 0x3FFFFF
  Data: 0x10          =  0x380000 -> 0x3FFFFF
  Data: 0x14          =  0x300000 -> 0x3FFFFF
  Data: 0x18          =  0x200000 -> 0x3FFFFF
  Data: 0x1C          =  0x000000 -> 0x3FFFFF
  Data: 0x20          =  none
  Data: 0x24          =  0x000000 -> 0x00FFFF
  Data: 0x28          =  0x000000 -> 0x01FFFF
  Data: 0x2C          =  0x000000 -> 0x03FFFF
  Data: 0x30          =  0x000000 -> 0x07FFFF
  Data: 0x34          =  0x000000 -> 0x0FFFFF
  Data: 0x38          =  0x000000 -> 0x1FFFFF
  Data: 0x3C          =  0x000000 -> 0x3FFFFF
  Data: 0x80          =  Status Register only
  Data: 0x84          =  Status Register and 0x3F0000 -> 0x3FFFFF
  Data: 0x88          =  Status Register and 0x3E0000 -> 0x3FFFFF
  Data: 0x8C          =  Status Register and 0x3C0000 -> 0x3FFFFF
  Data: 0x90          =  Status Register and 0x380000 -> 0x3FFFFF
  Data: 0x94          =  Status Register and 0x300000 -> 0x3FFFFF
  Data: 0x98          =  Status Register and 0x200000 -> 0x3FFFFF
  Data: 0x9C          =  Status Register and 0x000000 -> 0x3FFFFF
  Data: 0xA0          =  Status Register only
  Data: 0xA4          =  Status Register and 0x000000 -> 0x00FFFF
  Data: 0xA8          =  Status Register and 0x000000 -> 0x01FFFF
  Data: 0xAC          =  Status Register and 0x000000 -> 0x03FFFF
  Data: 0xB0          =  Status Register and 0x000000 -> 0x07FFFF
  Data: 0xB4          =  Status Register and 0x000000 -> 0x0FFFFF
  Data: 0xB8          =  Status Register and 0x000000 -> 0x1FFFFF
  Data: 0xBC          =  Status Register and 0x000000 -> 0x3FFFFF



 For enabling "Program Protect Reg." in TaskLink for Windows(TLwin)
 or TaskLink for DOS(TLdos) you must set the Enable Special Data #2
 option.


************************************************************************
************************************************************************
