What's New:

Version 3.2
  - Added Drag and Drop Support for bin files and image files.

  - Added a E3 hole open routine using the public key C0 update packet
    which was enabled with update 32.

  - Added a E3 hole open routine using the new D2 nano.

  - Integrated Imgtool into the program.


Version 3.1a
  - Fixed the "Access violation" fault when clicking the add updates button.

  - Added .cor file type to the open menu.
  

Version 3.1
  - Added support for update 63.

  - Modified the "Add Updates" function so you can select the number of updates to add.
    Note: Adding updates no longer closes the E3 hole in expert mode automatically.

  - Added warning prompts to the "Add Updates" and "Roll Back Updates" functions.

  
Version 3.0
  - Changed all "42" instructions to "40" instructions.
    This fixes the false looping problem on cards with 62 updates.

  - Added support for 62 updates.
  - Added 885B thru 88A5 to the clean.

    *IMPORTANT* In order to add updates to areas that were previously card specific,
    I had to change the clean to modify bytes in the eeprom that were previously skipped over.
    This means you will see differences if you clean a bin to the same number of updates between
    this version of BasicH and earlier versions.
    For example, if you take a bin that was cleaned to 26 updates with a previous version
    and then re-clean it with this version on BasicH you will see approximately 27 bytes that change.
    (approximately because some of your card specific data may match the bytes being overwritten,
    the worst case is 27).
    It does not matter. What is changing is the old card specific data (which is not being used)
    is being overwritten with updates 43, 45, 53, 55, 56, 57 and 59.
    Specifically 885B thru 885D and 888E thru 88A5 is left with updates 43, 45, 53, 55, 56, 57 and 59
    after a clean to below update 43. Don't panic, it does not matter what data is in there.

  - The Rollback function now removes updates down to the desired USW + 1, then adds updates from 27 to
    the desired USW. This was done to deal with the overlapping updates that hit 85D3 - 85D4.
    This will also handle future overlapping updates.

  - The ZKT test is now run everytime you open a bin file. 

  
Version 2.9
  - Support for 35 updates added.

    Note: updates 33, 34, and 35 are all added and removed together.
    There is no need to handle them separately because they are currently incomplete and
    and are just being used as hash targets.

  - Save Filename now defaults to Cam ID.

  - Write via 48 hole is now safer, it calls no functions in eeprom after Cmd0c,
    so it should be somewhat safer on unknown scripts.

  - Added code to verify the Cam ID to the ZKT in a eeprom image.
    Thanks once again to the anonymous contributors.

  - Fixed the check digit on the Cam ID, it now handles zero correctly.

  - Fixed the "Roll back to 32" Main Menu item (it didn't do anything when selected).
  
  - Fixed a minor bug with .img files. If a comment line contained a ":", BasicH would 
    still try to parse it.
     
Version 2.8
  - Support for 33 updates added.

  - Changed the passive eeprom read to use the 48 hole, thanks to anonymous once again.

  - BasicH now computes the check digit of the Cam ID.

  - "One Step Clean" bin file names now use leading zeros and check digit.

  - Fixed the roll back function to reset the USW when rolling back updates.
 
    
Version 2.7
  - New hole open packet that works on most write protected cards.
    Thanks to anonymous once again.

  - Added support for Daylight savings time.


Version 2.6
  - This version was released to save dssbumbie's butt. Just kidding.... :)

  - Support for 32 updates added.

  - I moved the patch with img file function to the expert menu because of
    newbies looping cards trying to write stealthed 3m's and such using BasicH.

    If you try to load a image of a 3M, Or overwrite the image of a 3M,
    chances are you will LOOP your card. Read the section titled "Config/Write Mode"
    for more information on what's safe to write, and how.

Version 2.5a
  - 48 hole open packet works with any USW now. Geez.

  - The keypad now works in edit mode.

Version 2.5
  - Changed the 48 hole open packet to NOT whack the guide byte,
    sorry all you sub users!!!
    Once again the cloakworks guys set me straight.

  - Added the menu item for the one step clean to 31 that I missed.


Version 2.4
  - Works with cards at 31 updates using the 48 hole.
    Thanks to the anonymous hacker that came up with the 48 hole.
    Please note, this hole will not work on cards with write protected 3M's on them.
    Remove the 3M first, then use BasicH.

  - Added the ability to modify the eprom image using intel hex format files.
    This is the same format that the Wildthing uses, they call them "img" files.

  - Removed the Fix 745 function. This only worked on a narrow group of cards anyway.

  - The clean function now skips over 8000 - 801F, and now includes 8023.
    This makes it the same as BasicU (Thanks Dexter).


Version 2.3
  - 8460-8467 and 84F9-84FF is now repaired with a "clean". Thanks to seed for catching this.

  - Added the C9 open routines back in as a fall back incase the 2D did not work.
    This is the same routine that version 1.6 used.

  - The passive read is much faster now, it reads the eprom in 4 1K chunks now.

  - Added menu items to roll back to xx updates.

  - Added menu items to clean up to xx updates

  - Added menu items to One Step Clean up to xx updates


Version 2.2
  All outstanding issues have been addressed:

  - BasicH will now test if your card needs updates and apply them if required.

  - BasicH should now work on canceled subscription cards.

  - Fixed the bug that was causing the "Can't initialize port ComX:".

  - Fixed a buffer overrun bug that was causing BasicH to crash.

  - I went back to the old way of adding updates which was via the 09 hole.

  - Modified the "is E3 open" routine so that it will work on all cards.

  - Added a button and menu item to roll back to 26 updates.

  - Extended the restricted write range to from 858B - 8594 to 8588 - 8594.
    (BasicH will not write to the range 8588 - 8594)

Version 2.1
  - The hole open packet now uses the 2D(CF) hole. it uses the "OpenE3Via2DSafely.xvb"
    version that does not depend on 8613. It also patches 8613 like OpenE3Via2DSafely.xvb does.

  - Added a "Passive Eprom Read using 2D Hole" to "Expert Mode" that will read the eeprom without opening any holes.
    This is a completely non-invasive read. No eeprom is modified to perform this read.
	The downside is that it takes about 2 minutes to read the eprom.

Version 2.0
  - Increased the receive timeout from 100ms to 300ms in yet another attempt to eliminate timeouts.

  - Added a delay after saving the eprom image when using 1 step clean in yet another attempt to eliminate timeouts.

  - Added a test to verify the code for the C6 nano. If this test fails, the older JSP style C0 packets
    are sent to open the E3 hole. If the test passes, a passive B5 test to make sure that updates
    6, 21 and optionally update 26 are present on the card.
    This is done Because the C6/C0 packets do a single byte modification to open the E3 hole, if these updates
    are not present, the packet could kill the card.
    This passive B5 test now covers 8588 thru 8597. Version 1.7, 1.8, and 1.9 only tested 8588 thru 858F.
    If these tests fail, the older JSP style C0 packets are sent to open the E3 hole.
	If you select "Bypass Safety Checks" from the config menu, the older JSP style C0 packets are
    sent to open the E3 hole.


Version 1.9
  - Since the cat is out of the bag, I have included a xpl file  (BasicH29.xpl)
    that contains the C6/C0 packets that are used to open a card with 29 updates.
    As you can see, the packets are much smaller than the original C0 packet to remove update 29.
    The file "BasicH29.xpl" that is included in this zip is a working script for cards with a USW of 29.

  - Added a limit for the number of bytes for the ATR response so that 99'd cards will not
    appear to hang the program.

  - The program has been renamed to BasicH. In Future releases, the zip file will also be called BasicH.


Version 1.8
  - I think I fixed the problem with a ex-sub at zero USW. There should be no need to add updates
    via magic1a.xpl anymore.
    All problems that were being reported in the forums should be fixed.

  - Added a "Fix Call Ext. 745" button & menu item.
    This will zero out 832C - 836B, and write known good seed values to 8468-8477.
	This should fix problems that result in an improper response to the zero knowledge test.
	Note: This will not work if your keys are messed up.

  - I removed the zero out 832C - 836B from the clean because the "fix 745" does that now.

  - Added a option to ignore the ATR check.

  - Added a option to bypass the "updates > 29" safety check.

  - Added a larger delay after card response when opening using the C0 hole.
    I also added a small delay based on the number of bytes written when using the E3 hole.
    I hope this will prevent the mysterious timeouts I keep hearing about.
    I have never seen the timeout occur myself and the beta testers didn't see it either.


    A note about testing:
      I test BasicH on 3 different cards myself. Then I give it to about 10 beta testers.
      Beta testing usually lasts about a week. By the time it's released, it's solid code.
      I can't possibly test every scenario that might occur, I can only test with what I have.


Version 1.7

  I would like to thank the cloakworks guys for helping me with the
  hole open routines and safety checks. They have shared their knowledge freely,
  and kept me from going to far into the weeds.
  I would also like to thank The Rebel Alliance, and everyone else who has helped
  and inspired me with this project. A team is much stronger than a single player.

  - Works on cards with up to 29 updates.
    If the card has update 29 on it, BasicH will open the E3 hole at any USW value up to FF(hex).

  - The hole open routines are now much nicer to virgin cards.
    A test is done to see if the card has update 29 regardless of the USW.
    If update 29 is present on your card, more tests are done to see if any real
    updates beyond 29 have been made. Since updates > 29 do not yet exist, some guessing
    was done as to which areas of the eprom may be affected by the next update.

    If update 29 is present on your card, the C0 hole is used to open the E3 hole.
    If update 29 is not present, the card is sent packets to enable the update handler,
    and enable nano commands. The C9 hole is then used to open the E3 hole.

  - The clean will now zero out 832C - 836B, and repair 836C - 836F.

  - The clean will add all 29 updates.

  - The "add updates" now adds all 29 updates.

  - The un28 button has been changed to un29, it will remove update29 and reset the USW to 28.

  - A ATR check is done to make sure you have a DSS H card.
    This program STILL won't work on a DSS HU card, or any other smartcard out there :)

  - The "Close Mode" has been removed. Since the addition of the "Add Updates" button,
    it has been redundant and was causing much newbie confusion.
    The close mode is always "Close E3".

  - The PPV clean will not change the purchase limits or status bits anymore.
    This makes it nicer for subscribed cards.

  - Added a cursor byte location to the status line to aid with eprom editing.

  - User settings: Comm Port, Write Mode, and User Mode are now saved and restored.


Version 1.6

  Notice:
    BasicH will NOT work on cards with 29 updates. I have included the JSP
    RemoveUpdate29.xvb script to remove update 29. The reason I did not build it
    in to BasicH is that it is a dangerous process to use the C0 hole that
    RemoveUpdate29.xvb uses. I'll leave it in your hands to remove update 29.


  -  Modified the clean so it does a "deep clean" to the EEPROM.
     The areas of the EEPROM like guide byte, purchase info,
     timezone and other "status" areas are now cleared.
     It cleans to the point of a "3E" instruction.

  -  Added a "One Step Clean" button for all the people who don't
     like to press 3 buttons to do a clean operation to their EEPROM.

     Some added benefits are:
        - it is much faster to clean the EEPROM because the E3 hole is left open
          until the cleaned EEPROM image is written back to the card.

        - A EEPROM image is automatically saved before the clean as "XXXXXXXXX_raw.bin"
          where "XXXXXXXXX" is your CAM id number.


  - Added a Expert mode.
    In expert mode, YOU are responsible for opening and closing the E3 hole.
    All the automatic hole open and close routines are bypassed in this mode.
    No checks are made to see if the hole is open or closed.
    There are 3 ways to close the hole, one is to select "Close Hole", another
    is to select "Add 28 Updates", and the 3rd way is to change mode from Expert
    to Normal and do an operation that closes the hole i.e. Write Eprom, Wipe PPV, Etc.

    DONT FORGET TO CLOSE THE HOLE IF YOU ARE IN THIS MODE!.

    I added this mode so that there is no overhead of opening and closing the
    holes for each operation.

    If you don't have a clue why you would want to do this, then you shouldn't
    be using this mode.


Version 1.5
  -  Added a Un28 function to put cards back to 26 updates.
     The "clean" and "close mode" are still set to add all 28 updates.

  -  Fixed the bug causing the "Access violation in module BasicH.exe
     read of address FFFFFFFF" message.
     Thanks go out to the person who sent in the bin file.

Version 1.4
  -  Works on 28 updated cards. Many thanks to "The Rebel Alliance" for showing the way :)

  -  The "add updates" now adds all 28 updates.

  -  Fixed a cursor repositioning bug that occurred when flipping between info
	 and EEPROM edit.

  -  Added a "Are you sure?" prompt to the EEPROM write function.

  -  Changed hole open routine (again) to open 09 hole first, then use 09 to open E3 hole.

  -  Increased the byte delay to 750ms between bytes sent.

  -  You can now click on the status bar to change parameters.

Version 1.3
  -  Changed "clean image" to not leave any holes open (as SuperBinFix did).

  -  Added new "Card" functions: Unmarry,  Wipe PPV, Timezone change.

  -  Changed button bar to small buttons to make room for the new functions.

  -  Added a 250 ms delay between packets to try to eliminate the timeout
     problems some people are experiencing that I can't seem to duplicate!

Version 1.2
  - This program should now work on any card with a USW up to 255(decimal),
    as long as the card has had 26 updates at one point and there is no
    serious corruption of the EEPROM.

  - Added com3 and com4 support

  - Added a "Add 26 Updates" menu selection under the "Card" menu.

  - Added a "EEPROM File Info" option to display Cam ID, IRD, and other info
    about the EEPROM image in memory.

  - The E3 hole and USW are fixed up in the image that is read from the card.

  - Changed the default close mode to "Close E3" because it's so much faster.

  - Changed hole open routine to only open E3 hole.

Version 1.1
  - Added Menu's for all functions.

  - Added Hex Editor.

  - Added status bar to screen

  - Added new close modes "Add 26 updates" and "Close 09 and E3"



Important Notice:
  Please do not use versions 1.7 thru 2.1
  There was a bug that was started in version 1.7 and got fixed in 2.2
  The bug was a buffer that was to small to receive the data read back from a E3 open check.
  The overflow would smash into the data space of the program. This is why the "Can't initialize port ComX:"
  bug was occurring, and I suspect why cards were getting killed.

