[SCSI] aic7xxx: upport all sequencer and core fixes from adaptec version 6.3.9
authorJames Bottomley <James.Bottomley@steeleye.com>
Thu, 4 Aug 2005 22:33:22 +0000 (17:33 -0500)
committerJames Bottomley <jejb@mulgrave.(none)>
Thu, 4 Aug 2005 22:41:25 +0000 (17:41 -0500)
This patch upports all relevant code fixes and bumps the driver version
to 7.0 to signify starting a new tree.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Documentation/scsi/aic7xxx.txt
drivers/scsi/aic7xxx/aic7xxx.h
drivers/scsi/aic7xxx/aic7xxx.reg
drivers/scsi/aic7xxx/aic7xxx.seq
drivers/scsi/aic7xxx/aic7xxx_93cx6.c
drivers/scsi/aic7xxx/aic7xxx_core.c
drivers/scsi/aic7xxx/aic7xxx_osm.c
drivers/scsi/aic7xxx/aic7xxx_osm.h
drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped
drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped
drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped

index 160e735..47e74dd 100644 (file)
@@ -1,5 +1,5 @@
 ====================================================================
-=    Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v6.2.28   =
+=    Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v7.0      =
 =                            README for                            =
 =                     The Linux Operating System                   =
 ====================================================================
@@ -131,6 +131,10 @@ The following information is available in this file:
       SCSI "stub" effects.
 
 2. Version History
+   7.0   (4th August, 2005)
+       - Updated driver to use SCSI transport class infrastructure
+       - Upported sequencer and core fixes from last adaptec released
+         version of the driver.
    6.2.36 (June 3rd, 2003)
         - Correct code that disables PCI parity error checking.
         - Correct and simplify handling of the ignore wide residue
index 088cbc2..91d294c 100644 (file)
@@ -37,7 +37,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.h#79 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.h#85 $
  *
  * $FreeBSD$
  */
@@ -243,7 +243,7 @@ typedef enum {
         */
        AHC_AIC7850_FE  = AHC_SPIOCAP|AHC_AUTOPAUSE|AHC_TARGETMODE|AHC_ULTRA,
        AHC_AIC7860_FE  = AHC_AIC7850_FE,
-       AHC_AIC7870_FE  = AHC_TARGETMODE,
+       AHC_AIC7870_FE  = AHC_TARGETMODE|AHC_AUTOPAUSE,
        AHC_AIC7880_FE  = AHC_AIC7870_FE|AHC_ULTRA,
        /*
         * Although we have space for both the initiator and
index 810ec70..e196d83 100644 (file)
@@ -39,7 +39,7 @@
  *
  * $FreeBSD$
  */
-VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $"
+VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $"
 
 /*
  * This file is processed by the aic7xxx_asm utility for use in assembling
@@ -1306,7 +1306,6 @@ scratch_ram {
         */
        MWI_RESIDUAL {
                size            1
-               alias   TARG_IMMEDIATE_SCB
        }
        /*
         * SCBID of the next SCB to be started by the controller.
@@ -1461,6 +1460,7 @@ scratch_ram {
         */
        LAST_MSG {
                size            1
+               alias   TARG_IMMEDIATE_SCB
        }
 
        /*
index d84b741..1519639 100644 (file)
@@ -40,7 +40,7 @@
  * $FreeBSD$
  */
 
-VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $"
+VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $"
 PATCH_ARG_LIST = "struct ahc_softc *ahc"
 PREFIX = "ahc_"
 
@@ -679,6 +679,7 @@ await_busfree:
                clr     SCSIBUSL;       /* Prevent bit leakage durint SELTO */
        }
        and     SXFRCTL0, ~SPIOEN;
+       mvi     SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT;
        test    SSTAT1,REQINIT|BUSFREE  jz .;
        test    SSTAT1, BUSFREE jnz poll_for_work;
        mvi     MISSED_BUSFREE call set_seqint;
@@ -1097,7 +1098,7 @@ ultra2_dmahalt:
                test    SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz dma_mid_sg;
                if ((ahc->flags & AHC_TARGETROLE) != 0) {
                        test    SSTAT0, TARGET jz dma_last_sg;
-                       if ((ahc->flags & AHC_TMODE_WIDEODD_BUG) != 0) {
+                       if ((ahc->bugs & AHC_TMODE_WIDEODD_BUG) != 0) {
                                test    DMAPARAMS, DIRECTION jz dma_mid_sg;
                        }
                }
index 468d612..3cb07e1 100644 (file)
@@ -28,9 +28,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_93cx6.c#17 $
- *
- * $FreeBSD$
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx_93cx6.c#19 $
  */
 
 /*
@@ -64,7 +62,6 @@
  *   is preceded by an initial zero (leading 0, followed by 16-bits, MSB
  *   first).  The clock cycling from low to high initiates the next data
  *   bit to be sent from the chip.
- *
  */
 
 #ifdef __linux__
  * Right now, we only have to read the SEEPROM.  But we make it easier to
  * add other 93Cx6 functions.
  */
-static struct seeprom_cmd {
+struct seeprom_cmd {
        uint8_t len;
-       uint8_t bits[9];
-} seeprom_read = {3, {1, 1, 0}};
+       uint8_t bits[11];
+};
 
+/* Short opcodes for the c46 */
 static struct seeprom_cmd seeprom_ewen = {9, {1, 0, 0, 1, 1, 0, 0, 0, 0}};
 static struct seeprom_cmd seeprom_ewds = {9, {1, 0, 0, 0, 0, 0, 0, 0, 0}};
+
+/* Long opcodes for the C56/C66 */
+static struct seeprom_cmd seeprom_long_ewen = {11, {1, 0, 0, 1, 1, 0, 0, 0, 0}};
+static struct seeprom_cmd seeprom_long_ewds = {11, {1, 0, 0, 0, 0, 0, 0, 0, 0}};
+
+/* Common opcodes */
 static struct seeprom_cmd seeprom_write = {3, {1, 0, 1}};
+static struct seeprom_cmd seeprom_read  = {3, {1, 1, 0}};
 
 /*
  * Wait for the SEERDY to go high; about 800 ns.
@@ -222,12 +227,25 @@ int
 ahc_write_seeprom(struct seeprom_descriptor *sd, uint16_t *buf,
                  u_int start_addr, u_int count)
 {
+       struct seeprom_cmd *ewen, *ewds;
        uint16_t v;
        uint8_t temp;
        int i, k;
 
        /* Place the chip into write-enable mode */
-       send_seeprom_cmd(sd, &seeprom_ewen);
+       if (sd->sd_chip == C46) {
+               ewen = &seeprom_ewen;
+               ewds = &seeprom_ewds;
+       } else if (sd->sd_chip == C56_66) {
+               ewen = &seeprom_long_ewen;
+               ewds = &seeprom_long_ewds;
+       } else {
+               printf("ahc_write_seeprom: unsupported seeprom type %d\n",
+                      sd->sd_chip);
+               return (0);
+       }
+
+       send_seeprom_cmd(sd, ewen);
        reset_seeprom(sd);
 
        /* Write all requested data out to the seeprom. */
@@ -277,7 +295,7 @@ ahc_write_seeprom(struct seeprom_descriptor *sd, uint16_t *buf,
        }
 
        /* Put the chip back into write-protect mode */
-       send_seeprom_cmd(sd, &seeprom_ewds);
+       send_seeprom_cmd(sd, ewds);
        reset_seeprom(sd);
 
        return (1);
index 7bc01e4..58ac461 100644 (file)
@@ -37,9 +37,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGES.
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#134 $
- *
- * $FreeBSD$
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#155 $
  */
 
 #ifdef __linux__
@@ -287,10 +285,19 @@ ahc_restart(struct ahc_softc *ahc)
                ahc_outb(ahc, SEQ_FLAGS2,
                         ahc_inb(ahc, SEQ_FLAGS2) & ~SCB_DMA);
        }
+
+       /*
+        * Clear any pending sequencer interrupt.  It is no
+        * longer relevant since we're resetting the Program
+        * Counter.
+        */
+       ahc_outb(ahc, CLRINT, CLRSEQINT);
+
        ahc_outb(ahc, MWI_RESIDUAL, 0);
        ahc_outb(ahc, SEQCTL, ahc->seqctl);
        ahc_outb(ahc, SEQADDR0, 0);
        ahc_outb(ahc, SEQADDR1, 0);
+
        ahc_unpause(ahc);
 }
 
@@ -1174,19 +1181,20 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat)
                                       scb_index);
                        }
 #endif
-                       /*
-                        * Force a renegotiation with this target just in
-                        * case the cable was pulled and will later be
-                        * re-attached.  The target may forget its negotiation
-                        * settings with us should it attempt to reselect
-                        * during the interruption.  The target will not issue
-                        * a unit attention in this case, so we must always
-                        * renegotiate.
-                        */
                        ahc_scb_devinfo(ahc, &devinfo, scb);
-                       ahc_force_renegotiation(ahc, &devinfo);
                        ahc_set_transaction_status(scb, CAM_SEL_TIMEOUT);
                        ahc_freeze_devq(ahc, scb);
+
+                       /*
+                        * Cancel any pending transactions on the device
+                        * now that it seems to be missing.  This will
+                        * also revert us to async/narrow transfers until
+                        * we can renegotiate with the device.
+                        */
+                       ahc_handle_devreset(ahc, &devinfo,
+                                           CAM_SEL_TIMEOUT,
+                                           "Selection Timeout",
+                                           /*verbose_level*/1);
                }
                ahc_outb(ahc, CLRINT, CLRSCSIINT);
                ahc_restart(ahc);
@@ -3763,8 +3771,9 @@ ahc_handle_devreset(struct ahc_softc *ahc, struct ahc_devinfo *devinfo,
                         /*period*/0, /*offset*/0, /*ppr_options*/0,
                         AHC_TRANS_CUR, /*paused*/TRUE);
        
-       ahc_send_async(ahc, devinfo->channel, devinfo->target,
-                      CAM_LUN_WILDCARD, AC_SENT_BDR, NULL);
+       if (status != CAM_SEL_TIMEOUT)
+               ahc_send_async(ahc, devinfo->channel, devinfo->target,
+                              CAM_LUN_WILDCARD, AC_SENT_BDR, NULL);
 
        if (message != NULL
         && (verbose_level <= bootverbose))
@@ -4003,14 +4012,6 @@ ahc_reset(struct ahc_softc *ahc, int reinit)
         * to disturb the integrity of the bus.
         */
        ahc_pause(ahc);
-       if ((ahc_inb(ahc, HCNTRL) & CHIPRST) != 0) {
-               /*
-                * The chip has not been initialized since
-                * PCI/EISA/VLB bus reset.  Don't trust
-                * "left over BIOS data".
-                */
-               ahc->flags |= AHC_NO_BIOS_INIT;
-       }
        sxfrctl1_b = 0;
        if ((ahc->chip & AHC_CHIPID_MASK) == AHC_AIC7770) {
                u_int sblkctl;
@@ -5036,14 +5037,23 @@ ahc_pause_and_flushwork(struct ahc_softc *ahc)
        ahc->flags |= AHC_ALL_INTERRUPTS;
        paused = FALSE;
        do {
-               if (paused)
+               if (paused) {
                        ahc_unpause(ahc);
+                       /*
+                        * Give the sequencer some time to service
+                        * any active selections.
+                        */
+                       ahc_delay(500);
+               }
                ahc_intr(ahc);
                ahc_pause(ahc);
                paused = TRUE;
                ahc_outb(ahc, SCSISEQ, ahc_inb(ahc, SCSISEQ) & ~ENSELO);
-               ahc_clear_critical_section(ahc);
                intstat = ahc_inb(ahc, INTSTAT);
+               if ((intstat & INT_PEND) == 0) {
+                       ahc_clear_critical_section(ahc);
+                       intstat = ahc_inb(ahc, INTSTAT);
+               }
        } while (--maxloops
              && (intstat != 0xFF || (ahc->features & AHC_REMOVABLE) == 0)
              && ((intstat & INT_PEND) != 0
index 116d0f5..e39361a 100644 (file)
@@ -635,6 +635,8 @@ ahc_linux_slave_alloc(struct scsi_device *sdev)
        
        targ->sdev[sdev->lun] = sdev;
 
+       spi_period(starget) = 0;
+
        return 0;
 }
 
index 0e47ac2..c529962 100644 (file)
@@ -265,7 +265,7 @@ ahc_scb_timer_reset(struct scb *scb, u_int usec)
 /***************************** SMP support ************************************/
 #include <linux/spinlock.h>
 
-#define AIC7XXX_DRIVER_VERSION "6.2.36"
+#define AIC7XXX_DRIVER_VERSION "7.0"
 
 /*************************** Device Data Structures ***************************/
 /*
index 7c1390e..2ce1feb 100644 (file)
@@ -2,8 +2,8 @@
  * DO NOT EDIT - This file is automatically generated
  *              from the following source files:
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $
  */
 typedef int (ahc_reg_print_t)(u_int, u_int *, u_int);
 typedef struct ahc_reg_parse_entry {
@@ -1298,7 +1298,6 @@ ahc_reg_print_t ahc_sg_cache_pre_print;
 #define        CMDSIZE_TABLE_TAIL              0x34
 
 #define        MWI_RESIDUAL                    0x38
-#define        TARG_IMMEDIATE_SCB              0x38
 
 #define        NEXT_QUEUED_SCB                 0x39
 
@@ -1380,6 +1379,7 @@ ahc_reg_print_t ahc_sg_cache_pre_print;
 #define        RETURN_2                        0x52
 
 #define        LAST_MSG                        0x53
+#define        TARG_IMMEDIATE_SCB              0x53
 
 #define        SCSISEQ_TEMPLATE                0x54
 #define                ENSELO                  0x40
index 9c71377..88bfd76 100644 (file)
@@ -2,8 +2,8 @@
  * DO NOT EDIT - This file is automatically generated
  *              from the following source files:
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $
  */
 
 #include "aic7xxx_osm.h"
index cf41136..4cee085 100644 (file)
@@ -2,13 +2,13 @@
  * DO NOT EDIT - This file is automatically generated
  *              from the following source files:
  *
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#56 $
- * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#39 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#58 $
+ * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.reg#40 $
  */
 static uint8_t seqprog[] = {
        0xb2, 0x00, 0x00, 0x08,
        0xf7, 0x11, 0x22, 0x08,
-       0x00, 0x65, 0xec, 0x59,
+       0x00, 0x65, 0xee, 0x59,
        0xf7, 0x01, 0x02, 0x08,
        0xff, 0x6a, 0x24, 0x08,
        0x40, 0x00, 0x40, 0x68,
@@ -21,15 +21,15 @@ static uint8_t seqprog[] = {
        0x01, 0x4d, 0xc8, 0x30,
        0x00, 0x4c, 0x12, 0x70,
        0x01, 0x39, 0xa2, 0x30,
-       0x00, 0x6a, 0xc0, 0x5e,
+       0x00, 0x6a, 0xc2, 0x5e,
        0x01, 0x51, 0x20, 0x31,
        0x01, 0x57, 0xae, 0x00,
        0x0d, 0x6a, 0x76, 0x00,
-       0x00, 0x51, 0x12, 0x5e,
+       0x00, 0x51, 0x14, 0x5e,
        0x01, 0x51, 0xc8, 0x30,
        0x00, 0x39, 0xc8, 0x60,
        0x00, 0xbb, 0x30, 0x70,
-       0xc1, 0x6a, 0xd8, 0x5e,
+       0xc1, 0x6a, 0xda, 0x5e,
        0x01, 0xbf, 0x72, 0x30,
        0x01, 0x40, 0x7e, 0x31,
        0x01, 0x90, 0x80, 0x30,
@@ -49,10 +49,10 @@ static uint8_t seqprog[] = {
        0x08, 0x6a, 0x78, 0x00,
        0x01, 0x50, 0xc8, 0x30,
        0xe0, 0x6a, 0xcc, 0x00,
-       0x48, 0x6a, 0xfc, 0x5d,
+       0x48, 0x6a, 0xfe, 0x5d,
        0x01, 0x6a, 0xdc, 0x01,
        0x88, 0x6a, 0xcc, 0x00,
-       0x48, 0x6a, 0xfc, 0x5d,
+       0x48, 0x6a, 0xfe, 0x5d,
        0x01, 0x6a, 0x26, 0x01,
        0xf0, 0x19, 0x7a, 0x08,
        0x0f, 0x18, 0xc8, 0x08,
@@ -93,7 +93,7 @@ static uint8_t seqprog[] = {
        0x00, 0x65, 0x20, 0x41,
        0x02, 0x57, 0xae, 0x00,
        0x00, 0x65, 0x9e, 0x40,
-       0x61, 0x6a, 0xd8, 0x5e,
+       0x61, 0x6a, 0xda, 0x5e,
        0x08, 0x51, 0x20, 0x71,
        0x02, 0x0b, 0xb2, 0x78,
        0x00, 0x65, 0xae, 0x40,
@@ -106,7 +106,7 @@ static uint8_t seqprog[] = {
        0x80, 0x3d, 0x7a, 0x00,
        0x20, 0x6a, 0x16, 0x00,
        0x00, 0x65, 0xcc, 0x41,
-       0x00, 0x65, 0xb2, 0x5e,
+       0x00, 0x65, 0xb4, 0x5e,
        0x00, 0x65, 0x12, 0x40,
        0x20, 0x11, 0xd2, 0x68,
        0x20, 0x6a, 0x18, 0x00,
@@ -140,27 +140,27 @@ static uint8_t seqprog[] = {
        0x80, 0x0b, 0xc4, 0x79,
        0x12, 0x01, 0x02, 0x00,
        0x01, 0xab, 0xac, 0x30,
-       0xe4, 0x6a, 0x6e, 0x5d,
+       0xe4, 0x6a, 0x70, 0x5d,
        0x40, 0x6a, 0x16, 0x00,
-       0x80, 0x3e, 0x84, 0x5d,
+       0x80, 0x3e, 0x86, 0x5d,
        0x20, 0xb8, 0x18, 0x79,
-       0x20, 0x6a, 0x84, 0x5d,
-       0x00, 0xab, 0x84, 0x5d,
+       0x20, 0x6a, 0x86, 0x5d,
+       0x00, 0xab, 0x86, 0x5d,
        0x01, 0xa9, 0x78, 0x30,
        0x10, 0xb8, 0x20, 0x79,
-       0xe4, 0x6a, 0x6e, 0x5d,
+       0xe4, 0x6a, 0x70, 0x5d,
        0x00, 0x65, 0xae, 0x40,
        0x10, 0x03, 0x3c, 0x69,
        0x08, 0x3c, 0x5a, 0x69,
        0x04, 0x3c, 0x92, 0x69,
        0x02, 0x3c, 0x98, 0x69,
        0x01, 0x3c, 0x44, 0x79,
-       0xff, 0x6a, 0x70, 0x00,
+       0xff, 0x6a, 0xa6, 0x00,
        0x00, 0x65, 0xa4, 0x59,
-       0x00, 0x6a, 0xc0, 0x5e,
-       0xff, 0x38, 0x30, 0x71,
+       0x00, 0x6a, 0xc2, 0x5e,
+       0xff, 0x53, 0x30, 0x71,
        0x0d, 0x6a, 0x76, 0x00,
-       0x00, 0x38, 0x12, 0x5e,
+       0x00, 0x53, 0x14, 0x5e,
        0x00, 0x65, 0xea, 0x58,
        0x12, 0x01, 0x02, 0x00,
        0x00, 0x65, 0x18, 0x41,
@@ -168,10 +168,10 @@ static uint8_t seqprog[] = {
        0x00, 0x65, 0xf2, 0x58,
        0xfd, 0x57, 0xae, 0x08,
        0x00, 0x65, 0xae, 0x40,
-       0xe4, 0x6a, 0x6e, 0x5d,
+       0xe4, 0x6a, 0x70, 0x5d,
        0x20, 0x3c, 0x4a, 0x79,
-       0x02, 0x6a, 0x84, 0x5d,
-       0x04, 0x6a, 0x84, 0x5d,
+       0x02, 0x6a, 0x86, 0x5d,
+       0x04, 0x6a, 0x86, 0x5d,
        0x01, 0x03, 0x4c, 0x69,
        0xf7, 0x11, 0x22, 0x08,
        0xff, 0x6a, 0x24, 0x08,
@@ -182,13 +182,13 @@ static uint8_t seqprog[] = {
        0x80, 0x86, 0xc8, 0x08,
        0x01, 0x4f, 0xc8, 0x30,
        0x00, 0x50, 0x6c, 0x61,
-       0xc4, 0x6a, 0x6e, 0x5d,
+       0xc4, 0x6a, 0x70, 0x5d,
        0x40, 0x3c, 0x68, 0x79,
-       0x28, 0x6a, 0x84, 0x5d,
+       0x28, 0x6a, 0x86, 0x5d,
        0x00, 0x65, 0x4c, 0x41,
-       0x08, 0x6a, 0x84, 0x5d,
+       0x08, 0x6a, 0x86, 0x5d,
        0x00, 0x65, 0x4c, 0x41,
-       0x84, 0x6a, 0x6e, 0x5d,
+       0x84, 0x6a, 0x70, 0x5d,
        0x00, 0x65, 0xf2, 0x58,
        0x01, 0x66, 0xc8, 0x30,
        0x01, 0x64, 0xd8, 0x31,
@@ -208,16 +208,16 @@ static uint8_t seqprog[] = {
        0xf7, 0x3c, 0x78, 0x08,
        0x00, 0x65, 0x20, 0x41,
        0x40, 0xaa, 0x7e, 0x10,
-       0x04, 0xaa, 0x6e, 0x5d,
-       0x00, 0x65, 0x56, 0x42,
-       0xc4, 0x6a, 0x6e, 0x5d,
+       0x04, 0xaa, 0x70, 0x5d,
+       0x00, 0x65, 0x58, 0x42,
+       0xc4, 0x6a, 0x70, 0x5d,
        0xc0, 0x6a, 0x7e, 0x00,
-       0x00, 0xa8, 0x84, 0x5d,
+       0x00, 0xa8, 0x86, 0x5d,
        0xe4, 0x6a, 0x06, 0x00,
-       0x00, 0x6a, 0x84, 0x5d,
+       0x00, 0x6a, 0x86, 0x5d,
        0x00, 0x65, 0x4c, 0x41,
        0x10, 0x3c, 0xa8, 0x69,
-       0x00, 0xbb, 0x8a, 0x44,
+       0x00, 0xbb, 0x8c, 0x44,
        0x18, 0x6a, 0xda, 0x01,
        0x01, 0x69, 0xd8, 0x31,
        0x1c, 0x6a, 0xd0, 0x01,
@@ -227,31 +227,32 @@ static uint8_t seqprog[] = {
        0x01, 0x93, 0x26, 0x01,
        0x03, 0x6a, 0x2a, 0x01,
        0x01, 0x69, 0x32, 0x31,
-       0x1c, 0x6a, 0xe0, 0x5d,
+       0x1c, 0x6a, 0xe2, 0x5d,
        0x0a, 0x93, 0x26, 0x01,
-       0x00, 0x65, 0xa8, 0x5e,
+       0x00, 0x65, 0xaa, 0x5e,
        0x01, 0x50, 0xa0, 0x18,
        0x02, 0x6a, 0x22, 0x05,
        0x1a, 0x01, 0x02, 0x00,
        0x80, 0x6a, 0x74, 0x00,
        0x40, 0x6a, 0x78, 0x00,
        0x40, 0x6a, 0x16, 0x00,
-       0x00, 0x65, 0xd8, 0x5d,
+       0x00, 0x65, 0xda, 0x5d,
        0x01, 0x3f, 0xc8, 0x30,
-       0xbf, 0x64, 0x56, 0x7a,
-       0x80, 0x64, 0x9e, 0x73,
-       0xa0, 0x64, 0x00, 0x74,
-       0xc0, 0x64, 0xf4, 0x73,
-       0xe0, 0x64, 0x30, 0x74,
-       0x01, 0x6a, 0xd8, 0x5e,
+       0xbf, 0x64, 0x58, 0x7a,
+       0x80, 0x64, 0xa0, 0x73,
+       0xa0, 0x64, 0x02, 0x74,
+       0xc0, 0x64, 0xf6, 0x73,
+       0xe0, 0x64, 0x32, 0x74,
+       0x01, 0x6a, 0xda, 0x5e,
        0x00, 0x65, 0xcc, 0x41,
        0xf7, 0x11, 0x22, 0x08,
        0x01, 0x06, 0xd4, 0x30,
        0xff, 0x6a, 0x24, 0x08,
        0xf7, 0x01, 0x02, 0x08,
-       0x09, 0x0c, 0xe6, 0x79,
+       0xc0, 0x6a, 0x78, 0x00,
+       0x09, 0x0c, 0xe8, 0x79,
        0x08, 0x0c, 0x04, 0x68,
-       0xb1, 0x6a, 0xd8, 0x5e,
+       0xb1, 0x6a, 0xda, 0x5e,
        0xff, 0x6a, 0x26, 0x09,
        0x12, 0x01, 0x02, 0x00,
        0x02, 0x6a, 0x08, 0x30,
@@ -264,29 +265,29 @@ static uint8_t seqprog[] = {
        0x00, 0xa5, 0x4a, 0x21,
        0x00, 0xa6, 0x4c, 0x21,
        0x00, 0xa7, 0x4e, 0x25,
-       0x08, 0xeb, 0xdc, 0x7e,
-       0x80, 0xeb, 0x06, 0x7a,
+       0x08, 0xeb, 0xde, 0x7e,
+       0x80, 0xeb, 0x08, 0x7a,
        0xff, 0x6a, 0xd6, 0x09,
-       0x08, 0xeb, 0x0a, 0x6a,
+       0x08, 0xeb, 0x0c, 0x6a,
        0xff, 0x6a, 0xd4, 0x0c,
-       0x80, 0xa3, 0xdc, 0x6e,
-       0x88, 0xeb, 0x20, 0x72,
-       0x08, 0xeb, 0xdc, 0x6e,
-       0x04, 0xea, 0x24, 0xe2,
-       0x08, 0xee, 0xdc, 0x6e,
+       0x80, 0xa3, 0xde, 0x6e,
+       0x88, 0xeb, 0x22, 0x72,
+       0x08, 0xeb, 0xde, 0x6e,
+       0x04, 0xea, 0x26, 0xe2,
+       0x08, 0xee, 0xde, 0x6e,
        0x04, 0x6a, 0xd0, 0x81,
        0x05, 0xa4, 0xc0, 0x89,
        0x03, 0xa5, 0xc2, 0x31,
        0x09, 0x6a, 0xd6, 0x05,
-       0x00, 0x65, 0x08, 0x5a,
+       0x00, 0x65, 0x0a, 0x5a,
        0x06, 0xa4, 0xd4, 0x89,
-       0x80, 0x94, 0xdc, 0x7e,
+       0x80, 0x94, 0xde, 0x7e,
        0x07, 0xe9, 0x10, 0x31,
        0x01, 0xe9, 0x46, 0x31,
-       0x00, 0xa3, 0xba, 0x5e,
-       0x00, 0x65, 0xfa, 0x59,
+       0x00, 0xa3, 0xbc, 0x5e,
+       0x00, 0x65, 0xfc, 0x59,
        0x01, 0xa4, 0xca, 0x30,
-       0x80, 0xa3, 0x34, 0x7a,
+       0x80, 0xa3, 0x36, 0x7a,
        0x02, 0x65, 0xca, 0x00,
        0x01, 0x65, 0xf8, 0x31,
        0x80, 0x93, 0x26, 0x01,
@@ -294,162 +295,162 @@ static uint8_t seqprog[] = {
        0x01, 0x8c, 0xc8, 0x30,
        0x00, 0x88, 0xc8, 0x18,
        0x02, 0x64, 0xc8, 0x88,
-       0xff, 0x64, 0xdc, 0x7e,
-       0xff, 0x8d, 0x4a, 0x6a,
-       0xff, 0x8e, 0x4a, 0x6a,
+       0xff, 0x64, 0xde, 0x7e,
+       0xff, 0x8d, 0x4c, 0x6a,
+       0xff, 0x8e, 0x4c, 0x6a,
        0x03, 0x8c, 0xd4, 0x98,
-       0x00, 0x65, 0xdc, 0x56,
+       0x00, 0x65, 0xde, 0x56,
        0x01, 0x64, 0x70, 0x30,
        0xff, 0x64, 0xc8, 0x10,
        0x01, 0x64, 0xc8, 0x18,
        0x00, 0x8c, 0x18, 0x19,
        0xff, 0x8d, 0x1a, 0x21,
        0xff, 0x8e, 0x1c, 0x25,
-       0xc0, 0x3c, 0x5a, 0x7a,
-       0x21, 0x6a, 0xd8, 0x5e,
+       0xc0, 0x3c, 0x5c, 0x7a,
+       0x21, 0x6a, 0xda, 0x5e,
        0xa8, 0x6a, 0x76, 0x00,
        0x79, 0x6a, 0x76, 0x00,
-       0x40, 0x3f, 0x62, 0x6a,
+       0x40, 0x3f, 0x64, 0x6a,
        0x04, 0x3b, 0x76, 0x00,
        0x04, 0x6a, 0xd4, 0x81,
-       0x20, 0x3c, 0x6a, 0x7a,
-       0x51, 0x6a, 0xd8, 0x5e,
-       0x00, 0x65, 0x82, 0x42,
+       0x20, 0x3c, 0x6c, 0x7a,
+       0x51, 0x6a, 0xda, 0x5e,
+       0x00, 0x65, 0x84, 0x42,
        0x20, 0x3c, 0x78, 0x00,
-       0x00, 0xb3, 0xba, 0x5e,
+       0x00, 0xb3, 0xbc, 0x5e,
        0x07, 0xac, 0x10, 0x31,
        0x05, 0xb3, 0x46, 0x31,
        0x88, 0x6a, 0xcc, 0x00,
-       0xac, 0x6a, 0xee, 0x5d,
+       0xac, 0x6a, 0xf0, 0x5d,
        0xa3, 0x6a, 0xcc, 0x00,
-       0xb3, 0x6a, 0xf2, 0x5d,
-       0x00, 0x65, 0x3a, 0x5a,
+       0xb3, 0x6a, 0xf4, 0x5d,
+       0x00, 0x65, 0x3c, 0x5a,
        0xfd, 0xa4, 0x48, 0x09,
        0x03, 0x8c, 0x10, 0x30,
-       0x00, 0x65, 0xe6, 0x5d,
-       0x01, 0xa4, 0x94, 0x7a,
+       0x00, 0x65, 0xe8, 0x5d,
+       0x01, 0xa4, 0x96, 0x7a,
        0x04, 0x3b, 0x76, 0x08,
        0x01, 0x3b, 0x26, 0x31,
        0x80, 0x02, 0x04, 0x00,
-       0x10, 0x0c, 0x8a, 0x7a,
-       0x03, 0x9e, 0x8c, 0x6a,
+       0x10, 0x0c, 0x8c, 0x7a,
+       0x03, 0x9e, 0x8e, 0x6a,
        0x7f, 0x02, 0x04, 0x08,
-       0x91, 0x6a, 0xd8, 0x5e,
+       0x91, 0x6a, 0xda, 0x5e,
        0x00, 0x65, 0xcc, 0x41,
        0x01, 0xa4, 0xca, 0x30,
-       0x80, 0xa3, 0x9a, 0x7a,
+       0x80, 0xa3, 0x9c, 0x7a,
        0x02, 0x65, 0xca, 0x00,
        0x01, 0x65, 0xf8, 0x31,
        0x01, 0x3b, 0x26, 0x31,
-       0x00, 0x65, 0x0e, 0x5a,
-       0x01, 0xfc, 0xa8, 0x6a,
-       0x80, 0x0b, 0x9e, 0x6a,
-       0x10, 0x0c, 0x9e, 0x7a,
-       0x20, 0x93, 0x9e, 0x6a,
+       0x00, 0x65, 0x10, 0x5a,
+       0x01, 0xfc, 0xaa, 0x6a,
+       0x80, 0x0b, 0xa0, 0x6a,
+       0x10, 0x0c, 0xa0, 0x7a,
+       0x20, 0x93, 0xa0, 0x6a,
        0x02, 0x93, 0x26, 0x01,
-       0x02, 0xfc, 0xb2, 0x7a,
-       0x40, 0x0d, 0xc6, 0x6a,
+       0x02, 0xfc, 0xb4, 0x7a,
+       0x40, 0x0d, 0xc8, 0x6a,
        0x01, 0xa4, 0x48, 0x01,
-       0x00, 0x65, 0xc6, 0x42,
-       0x40, 0x0d, 0xb8, 0x6a,
-       0x00, 0x65, 0x0e, 0x5a,
-       0x00, 0x65, 0xaa, 0x42,
-       0x80, 0xfc, 0xc2, 0x7a,
-       0x80, 0xa4, 0xc2, 0x6a,
+       0x00, 0x65, 0xc8, 0x42,
+       0x40, 0x0d, 0xba, 0x6a,
+       0x00, 0x65, 0x10, 0x5a,
+       0x00, 0x65, 0xac, 0x42,
+       0x80, 0xfc, 0xc4, 0x7a,
+       0x80, 0xa4, 0xc4, 0x6a,
        0xff, 0xa5, 0x4a, 0x19,
        0xff, 0xa6, 0x4c, 0x21,
        0xff, 0xa7, 0x4e, 0x21,
        0xf8, 0xfc, 0x48, 0x09,
        0x7f, 0xa3, 0x46, 0x09,
-       0x04, 0x3b, 0xe2, 0x6a,
+       0x04, 0x3b, 0xe4, 0x6a,
        0x02, 0x93, 0x26, 0x01,
-       0x01, 0x94, 0xc8, 0x7a,
-       0x01, 0x94, 0xc8, 0x7a,
-       0x01, 0x94, 0xc8, 0x7a,
-       0x01, 0x94, 0xc8, 0x7a,
-       0x01, 0x94, 0xc8, 0x7a,
-       0x01, 0xa4, 0xe0, 0x7a,
-       0x01, 0xfc, 0xd6, 0x7a,
-       0x01, 0x94, 0xe2, 0x6a,
-       0x01, 0x94, 0xe2, 0x6a,
-       0x01, 0x94, 0xe2, 0x6a,
-       0x00, 0x65, 0x82, 0x42,
-       0x01, 0x94, 0xe0, 0x7a,
-       0x10, 0x94, 0xe2, 0x6a,
+       0x01, 0x94, 0xca, 0x7a,
+       0x01, 0x94, 0xca, 0x7a,
+       0x01, 0x94, 0xca, 0x7a,
+       0x01, 0x94, 0xca, 0x7a,
+       0x01, 0x94, 0xca, 0x7a,
+       0x01, 0xa4, 0xe2, 0x7a,
+       0x01, 0xfc, 0xd8, 0x7a,
+       0x01, 0x94, 0xe4, 0x6a,
+       0x01, 0x94, 0xe4, 0x6a,
+       0x01, 0x94, 0xe4, 0x6a,
+       0x00, 0x65, 0x84, 0x42,
+       0x01, 0x94, 0xe2, 0x7a,
+       0x10, 0x94, 0xe4, 0x6a,
        0xd7, 0x93, 0x26, 0x09,
-       0x28, 0x93, 0xe6, 0x6a,
+       0x28, 0x93, 0xe8, 0x6a,
        0x01, 0x85, 0x0a, 0x01,
-       0x02, 0xfc, 0xee, 0x6a,
+       0x02, 0xfc, 0xf0, 0x6a,
        0x01, 0x14, 0x46, 0x31,
        0xff, 0x6a, 0x10, 0x09,
        0xfe, 0x85, 0x0a, 0x09,
-       0xff, 0x38, 0xfc, 0x6a,
-       0x80, 0xa3, 0xfc, 0x7a,
-       0x80, 0x0b, 0xfa, 0x7a,
-       0x04, 0x3b, 0xfc, 0x7a,
+       0xff, 0x38, 0xfe, 0x6a,
+       0x80, 0xa3, 0xfe, 0x7a,
+       0x80, 0x0b, 0xfc, 0x7a,
+       0x04, 0x3b, 0xfe, 0x7a,
        0xbf, 0x3b, 0x76, 0x08,
        0x01, 0x3b, 0x26, 0x31,
-       0x00, 0x65, 0x0e, 0x5a,
-       0x01, 0x0b, 0x0a, 0x6b,
-       0x10, 0x0c, 0xfe, 0x7a,
-       0x04, 0x93, 0x08, 0x6b,
-       0x01, 0x94, 0x06, 0x7b,
-       0x10, 0x94, 0x08, 0x6b,
+       0x00, 0x65, 0x10, 0x5a,
+       0x01, 0x0b, 0x0c, 0x6b,
+       0x10, 0x0c, 0x00, 0x7b,
+       0x04, 0x93, 0x0a, 0x6b,
+       0x01, 0x94, 0x08, 0x7b,
+       0x10, 0x94, 0x0a, 0x6b,
        0xc7, 0x93, 0x26, 0x09,
        0x01, 0x99, 0xd4, 0x30,
-       0x38, 0x93, 0x0c, 0x6b,
-       0xff, 0x08, 0x5a, 0x6b,
-       0xff, 0x09, 0x5a, 0x6b,
-       0xff, 0x0a, 0x5a, 0x6b,
-       0xff, 0x38, 0x28, 0x7b,
+       0x38, 0x93, 0x0e, 0x6b,
+       0xff, 0x08, 0x5c, 0x6b,
+       0xff, 0x09, 0x5c, 0x6b,
+       0xff, 0x0a, 0x5c, 0x6b,
+       0xff, 0x38, 0x2a, 0x7b,
        0x04, 0x14, 0x10, 0x31,
        0x01, 0x38, 0x18, 0x31,
        0x02, 0x6a, 0x1a, 0x31,
        0x88, 0x6a, 0xcc, 0x00,
-       0x14, 0x6a, 0xf4, 0x5d,
-       0x00, 0x38, 0xe0, 0x5d,
+       0x14, 0x6a, 0xf6, 0x5d,
+       0x00, 0x38, 0xe2, 0x5d,
        0xff, 0x6a, 0x70, 0x08,
-       0x00, 0x65, 0x54, 0x43,
-       0x80, 0xa3, 0x2e, 0x7b,
+       0x00, 0x65, 0x56, 0x43,
+       0x80, 0xa3, 0x30, 0x7b,
        0x01, 0xa4, 0x48, 0x01,
-       0x00, 0x65, 0x5a, 0x43,
-       0x08, 0xeb, 0x34, 0x7b,
-       0x00, 0x65, 0x0e, 0x5a,
-       0x08, 0xeb, 0x30, 0x6b,
+       0x00, 0x65, 0x5c, 0x43,
+       0x08, 0xeb, 0x36, 0x7b,
+       0x00, 0x65, 0x10, 0x5a,
+       0x08, 0xeb, 0x32, 0x6b,
        0x07, 0xe9, 0x10, 0x31,
        0x01, 0xe9, 0xca, 0x30,
        0x01, 0x65, 0x46, 0x31,
-       0x00, 0x6a, 0xba, 0x5e,
+       0x00, 0x6a, 0xbc, 0x5e,
        0x88, 0x6a, 0xcc, 0x00,
-       0xa4, 0x6a, 0xf4, 0x5d,
-       0x08, 0x6a, 0xe0, 0x5d,
+       0xa4, 0x6a, 0xf6, 0x5d,
+       0x08, 0x6a, 0xe2, 0x5d,
        0x0d, 0x93, 0x26, 0x01,
-       0x00, 0x65, 0xa8, 0x5e,
+       0x00, 0x65, 0xaa, 0x5e,
        0x88, 0x6a, 0xcc, 0x00,
-       0x00, 0x65, 0x8a, 0x5e,
+       0x00, 0x65, 0x8c, 0x5e,
        0x01, 0x99, 0x46, 0x31,
-       0x00, 0xa3, 0xba, 0x5e,
+       0x00, 0xa3, 0xbc, 0x5e,
        0x01, 0x88, 0x10, 0x31,
-       0x00, 0x65, 0x3a, 0x5a,
-       0x00, 0x65, 0xfa, 0x59,
+       0x00, 0x65, 0x3c, 0x5a,
+       0x00, 0x65, 0xfc, 0x59,
        0x03, 0x8c, 0x10, 0x30,
-       0x00, 0x65, 0xe6, 0x5d,
-       0x80, 0x0b, 0x82, 0x6a,
-       0x80, 0x0b, 0x62, 0x6b,
-       0x01, 0x0c, 0x5c, 0x7b,
-       0x10, 0x0c, 0x82, 0x7a,
-       0x03, 0x9e, 0x82, 0x6a,
-       0x00, 0x65, 0x04, 0x5a,
-       0x00, 0x6a, 0xba, 0x5e,
-       0x01, 0xa4, 0x82, 0x6b,
-       0xff, 0x38, 0x78, 0x7b,
+       0x00, 0x65, 0xe8, 0x5d,
+       0x80, 0x0b, 0x84, 0x6a,
+       0x80, 0x0b, 0x64, 0x6b,
+       0x01, 0x0c, 0x5e, 0x7b,
+       0x10, 0x0c, 0x84, 0x7a,
+       0x03, 0x9e, 0x84, 0x6a,
+       0x00, 0x65, 0x06, 0x5a,
+       0x00, 0x6a, 0xbc, 0x5e,
+       0x01, 0xa4, 0x84, 0x6b,
+       0xff, 0x38, 0x7a, 0x7b,
        0x01, 0x38, 0xc8, 0x30,
        0x00, 0x08, 0x40, 0x19,
        0xff, 0x6a, 0xc8, 0x08,
        0x00, 0x09, 0x42, 0x21,
        0x00, 0x0a, 0x44, 0x21,
        0xff, 0x6a, 0x70, 0x08,
-       0x00, 0x65, 0x7a, 0x43,
+       0x00, 0x65, 0x7c, 0x43,
        0x03, 0x08, 0x40, 0x31,
        0x03, 0x08, 0x40, 0x31,
        0x01, 0x08, 0x40, 0x31,
@@ -461,16 +462,16 @@ static uint8_t seqprog[] = {
        0x04, 0x3c, 0xcc, 0x79,
        0xfb, 0x3c, 0x78, 0x08,
        0x04, 0x93, 0x20, 0x79,
-       0x01, 0x0c, 0x8e, 0x6b,
+       0x01, 0x0c, 0x90, 0x6b,
        0x80, 0xba, 0x20, 0x79,
        0x80, 0x04, 0x20, 0x79,
-       0xe4, 0x6a, 0x6e, 0x5d,
-       0x23, 0x6a, 0x84, 0x5d,
-       0x01, 0x6a, 0x84, 0x5d,
+       0xe4, 0x6a, 0x70, 0x5d,
+       0x23, 0x6a, 0x86, 0x5d,
+       0x01, 0x6a, 0x86, 0x5d,
        0x00, 0x65, 0x20, 0x41,
        0x00, 0x65, 0xcc, 0x41,
-       0x80, 0x3c, 0xa2, 0x7b,
-       0x21, 0x6a, 0xd8, 0x5e,
+       0x80, 0x3c, 0xa4, 0x7b,
+       0x21, 0x6a, 0xda, 0x5e,
        0x01, 0xbc, 0x18, 0x31,
        0x02, 0x6a, 0x1a, 0x31,
        0x02, 0x6a, 0xf8, 0x01,
@@ -480,16 +481,16 @@ static uint8_t seqprog[] = {
        0xff, 0x6a, 0x12, 0x08,
        0xff, 0x6a, 0x14, 0x08,
        0xf3, 0xbc, 0xd4, 0x18,
-       0xa0, 0x6a, 0xc8, 0x53,
+       0xa0, 0x6a, 0xca, 0x53,
        0x04, 0xa0, 0x10, 0x31,
        0xac, 0x6a, 0x26, 0x01,
        0x04, 0xa0, 0x10, 0x31,
        0x03, 0x08, 0x18, 0x31,
        0x88, 0x6a, 0xcc, 0x00,
-       0xa0, 0x6a, 0xf4, 0x5d,
-       0x00, 0xbc, 0xe0, 0x5d,
+       0xa0, 0x6a, 0xf6, 0x5d,
+       0x00, 0xbc, 0xe2, 0x5d,
        0x3d, 0x6a, 0x26, 0x01,
-       0x00, 0x65, 0xe0, 0x43,
+       0x00, 0x65, 0xe2, 0x43,
        0xff, 0x6a, 0x10, 0x09,
        0xa4, 0x6a, 0x26, 0x01,
        0x0c, 0xa0, 0x32, 0x31,
@@ -499,128 +500,128 @@ static uint8_t seqprog[] = {
        0x36, 0x6a, 0x26, 0x01,
        0x02, 0x93, 0x26, 0x01,
        0x35, 0x6a, 0x26, 0x01,
-       0x00, 0x65, 0x9c, 0x5e,
-       0x00, 0x65, 0x9c, 0x5e,
+       0x00, 0x65, 0x9e, 0x5e,
+       0x00, 0x65, 0x9e, 0x5e,
        0x02, 0x93, 0x26, 0x01,
        0xbf, 0x3c, 0x78, 0x08,
-       0x04, 0x0b, 0xe6, 0x6b,
-       0x10, 0x0c, 0xe2, 0x7b,
-       0x01, 0x03, 0xe6, 0x6b,
-       0x20, 0x93, 0xe8, 0x6b,
-       0x04, 0x0b, 0xee, 0x6b,
+       0x04, 0x0b, 0xe8, 0x6b,
+       0x10, 0x0c, 0xe4, 0x7b,
+       0x01, 0x03, 0xe8, 0x6b,
+       0x20, 0x93, 0xea, 0x6b,
+       0x04, 0x0b, 0xf0, 0x6b,
        0x40, 0x3c, 0x78, 0x00,
        0xc7, 0x93, 0x26, 0x09,
-       0x38, 0x93, 0xf0, 0x6b,
+       0x38, 0x93, 0xf2, 0x6b,
        0x00, 0x65, 0xcc, 0x41,
-       0x80, 0x3c, 0x56, 0x6c,
+       0x80, 0x3c, 0x58, 0x6c,
        0x01, 0x06, 0x50, 0x31,
        0x80, 0xb8, 0x70, 0x01,
        0x00, 0x65, 0xcc, 0x41,
        0x10, 0x3f, 0x06, 0x00,
        0x10, 0x6a, 0x06, 0x00,
        0x01, 0x3a, 0xca, 0x30,
-       0x80, 0x65, 0x1c, 0x64,
-       0x10, 0xb8, 0x40, 0x6c,
+       0x80, 0x65, 0x1e, 0x64,
+       0x10, 0xb8, 0x42, 0x6c,
        0xc0, 0x3e, 0xca, 0x00,
-       0x40, 0xb8, 0x0c, 0x6c,
+       0x40, 0xb8, 0x0e, 0x6c,
        0xbf, 0x65, 0xca, 0x08,
-       0x20, 0xb8, 0x20, 0x7c,
+       0x20, 0xb8, 0x22, 0x7c,
        0x01, 0x65, 0x0c, 0x30,
-       0x00, 0x65, 0xd8, 0x5d,
-       0xa0, 0x3f, 0x28, 0x64,
+       0x00, 0x65, 0xda, 0x5d,
+       0xa0, 0x3f, 0x2a, 0x64,
        0x23, 0xb8, 0x0c, 0x08,
-       0x00, 0x65, 0xd8, 0x5d,
-       0xa0, 0x3f, 0x28, 0x64,
-       0x00, 0xbb, 0x20, 0x44,
-       0xff, 0x65, 0x20, 0x64,
-       0x00, 0x65, 0x40, 0x44,
+       0x00, 0x65, 0xda, 0x5d,
+       0xa0, 0x3f, 0x2a, 0x64,
+       0x00, 0xbb, 0x22, 0x44,
+       0xff, 0x65, 0x22, 0x64,
+       0x00, 0x65, 0x42, 0x44,
        0x40, 0x6a, 0x18, 0x00,
        0x01, 0x65, 0x0c, 0x30,
-       0x00, 0x65, 0xd8, 0x5d,
-       0xa0, 0x3f, 0xfc, 0x73,
+       0x00, 0x65, 0xda, 0x5d,
+       0xa0, 0x3f, 0xfe, 0x73,
        0x40, 0x6a, 0x18, 0x00,
        0x01, 0x3a, 0xa6, 0x30,
        0x08, 0x6a, 0x74, 0x00,
        0x00, 0x65, 0xcc, 0x41,
-       0x64, 0x6a, 0x68, 0x5d,
-       0x80, 0x64, 0xd8, 0x6c,
-       0x04, 0x64, 0x9a, 0x74,
-       0x02, 0x64, 0xaa, 0x74,
-       0x00, 0x6a, 0x60, 0x74,
-       0x03, 0x64, 0xc8, 0x74,
-       0x23, 0x64, 0x48, 0x74,
-       0x08, 0x64, 0x5c, 0x74,
-       0x61, 0x6a, 0xd8, 0x5e,
-       0x00, 0x65, 0xd8, 0x5d,
+       0x64, 0x6a, 0x6a, 0x5d,
+       0x80, 0x64, 0xda, 0x6c,
+       0x04, 0x64, 0x9c, 0x74,
+       0x02, 0x64, 0xac, 0x74,
+       0x00, 0x6a, 0x62, 0x74,
+       0x03, 0x64, 0xca, 0x74,
+       0x23, 0x64, 0x4a, 0x74,
+       0x08, 0x64, 0x5e, 0x74,
+       0x61, 0x6a, 0xda, 0x5e,
+       0x00, 0x65, 0xda, 0x5d,
        0x08, 0x51, 0xce, 0x71,
-       0x00, 0x65, 0x40, 0x44,
-       0x80, 0x04, 0x5a, 0x7c,
-       0x51, 0x6a, 0x5e, 0x5d,
-       0x01, 0x51, 0x5a, 0x64,
-       0x01, 0xa4, 0x52, 0x7c,
-       0x80, 0xba, 0x5c, 0x6c,
-       0x41, 0x6a, 0xd8, 0x5e,
-       0x00, 0x65, 0x5c, 0x44,
-       0x21, 0x6a, 0xd8, 0x5e,
-       0x00, 0x65, 0x5c, 0x44,
-       0x07, 0x6a, 0x54, 0x5d,
+       0x00, 0x65, 0x42, 0x44,
+       0x80, 0x04, 0x5c, 0x7c,
+       0x51, 0x6a, 0x60, 0x5d,
+       0x01, 0x51, 0x5c, 0x64,
+       0x01, 0xa4, 0x54, 0x7c,
+       0x80, 0xba, 0x5e, 0x6c,
+       0x41, 0x6a, 0xda, 0x5e,
+       0x00, 0x65, 0x5e, 0x44,
+       0x21, 0x6a, 0xda, 0x5e,
+       0x00, 0x65, 0x5e, 0x44,
+       0x07, 0x6a, 0x56, 0x5d,
        0x01, 0x06, 0xd4, 0x30,
        0x00, 0x65, 0xcc, 0x41,
-       0x80, 0xb8, 0x56, 0x7c,
-       0xc0, 0x3c, 0x6a, 0x7c,
-       0x80, 0x3c, 0x56, 0x6c,
-       0xff, 0xa8, 0x6a, 0x6c,
-       0x40, 0x3c, 0x56, 0x6c,
-       0x10, 0xb8, 0x6e, 0x7c,
-       0xa1, 0x6a, 0xd8, 0x5e,
-       0x01, 0xb4, 0x74, 0x6c,
-       0x02, 0xb4, 0x76, 0x6c,
-       0x01, 0xa4, 0x76, 0x7c,
-       0xff, 0xa8, 0x86, 0x7c,
+       0x80, 0xb8, 0x58, 0x7c,
+       0xc0, 0x3c, 0x6c, 0x7c,
+       0x80, 0x3c, 0x58, 0x6c,
+       0xff, 0xa8, 0x6c, 0x6c,
+       0x40, 0x3c, 0x58, 0x6c,
+       0x10, 0xb8, 0x70, 0x7c,
+       0xa1, 0x6a, 0xda, 0x5e,
+       0x01, 0xb4, 0x76, 0x6c,
+       0x02, 0xb4, 0x78, 0x6c,
+       0x01, 0xa4, 0x78, 0x7c,
+       0xff, 0xa8, 0x88, 0x7c,
        0x04, 0xb4, 0x68, 0x01,
        0x01, 0x6a, 0x76, 0x00,
-       0x00, 0xbb, 0x12, 0x5e,
-       0xff, 0xa8, 0x86, 0x7c,
-       0x71, 0x6a, 0xd8, 0x5e,
-       0x40, 0x51, 0x86, 0x64,
-       0x00, 0x65, 0xb2, 0x5e,
+       0x00, 0xbb, 0x14, 0x5e,
+       0xff, 0xa8, 0x88, 0x7c,
+       0x71, 0x6a, 0xda, 0x5e,
+       0x40, 0x51, 0x88, 0x64,
+       0x00, 0x65, 0xb4, 0x5e,
        0x00, 0x65, 0xde, 0x41,
-       0x00, 0xbb, 0x8a, 0x5c,
+       0x00, 0xbb, 0x8c, 0x5c,
        0x00, 0x65, 0xde, 0x41,
-       0x00, 0x65, 0xb2, 0x5e,
+       0x00, 0x65, 0xb4, 0x5e,
        0x01, 0x65, 0xa2, 0x30,
        0x01, 0xf8, 0xc8, 0x30,
        0x01, 0x4e, 0xc8, 0x30,
-       0x00, 0x6a, 0xb6, 0xdd,
-       0x00, 0x51, 0xc8, 0x5d,
+       0x00, 0x6a, 0xb8, 0xdd,
+       0x00, 0x51, 0xca, 0x5d,
        0x01, 0x4e, 0x9c, 0x18,
        0x02, 0x6a, 0x22, 0x05,
-       0xc0, 0x3c, 0x56, 0x6c,
+       0xc0, 0x3c, 0x58, 0x6c,
        0x04, 0xb8, 0x70, 0x01,
-       0x00, 0x65, 0xd4, 0x5e,
+       0x00, 0x65, 0xd6, 0x5e,
        0x20, 0xb8, 0xde, 0x69,
        0x01, 0xbb, 0xa2, 0x30,
        0x3f, 0xba, 0x7c, 0x08,
-       0x00, 0xb9, 0xce, 0x5c,
+       0x00, 0xb9, 0xd0, 0x5c,
        0x00, 0x65, 0xde, 0x41,
        0x01, 0x06, 0xd4, 0x30,
        0x20, 0x3c, 0xcc, 0x79,
-       0x20, 0x3c, 0x5c, 0x7c,
-       0x01, 0xa4, 0xb8, 0x7c,
+       0x20, 0x3c, 0x5e, 0x7c,
+       0x01, 0xa4, 0xba, 0x7c,
        0x01, 0xb4, 0x68, 0x01,
        0x00, 0x65, 0xcc, 0x41,
-       0x00, 0x65, 0x5c, 0x44,
+       0x00, 0x65, 0x5e, 0x44,
        0x04, 0x14, 0x58, 0x31,
        0x01, 0x06, 0xd4, 0x30,
        0x08, 0xa0, 0x60, 0x31,
        0xac, 0x6a, 0xcc, 0x00,
-       0x14, 0x6a, 0xf4, 0x5d,
+       0x14, 0x6a, 0xf6, 0x5d,
        0x01, 0x06, 0xd4, 0x30,
-       0xa0, 0x6a, 0xec, 0x5d,
+       0xa0, 0x6a, 0xee, 0x5d,
        0x00, 0x65, 0xcc, 0x41,
        0xdf, 0x3c, 0x78, 0x08,
        0x12, 0x01, 0x02, 0x00,
-       0x00, 0x65, 0x5c, 0x44,
+       0x00, 0x65, 0x5e, 0x44,
        0x4c, 0x65, 0xcc, 0x28,
        0x01, 0x3e, 0x20, 0x31,
        0xd0, 0x66, 0xcc, 0x18,
@@ -631,102 +632,102 @@ static uint8_t seqprog[] = {
        0xd0, 0x65, 0xca, 0x18,
        0x01, 0x3e, 0x20, 0x31,
        0x30, 0x65, 0xd4, 0x18,
-       0x00, 0x65, 0xe6, 0x4c,
+       0x00, 0x65, 0xe8, 0x4c,
        0xe1, 0x6a, 0x22, 0x01,
        0xff, 0x6a, 0xd4, 0x08,
        0x20, 0x65, 0xd4, 0x18,
-       0x00, 0x65, 0xee, 0x54,
+       0x00, 0x65, 0xf0, 0x54,
        0xe1, 0x6a, 0x22, 0x01,
        0xff, 0x6a, 0xd4, 0x08,
        0x20, 0x65, 0xca, 0x18,
        0xe0, 0x65, 0xd4, 0x18,
-       0x00, 0x65, 0xf8, 0x4c,
+       0x00, 0x65, 0xfa, 0x4c,
        0xe1, 0x6a, 0x22, 0x01,
        0xff, 0x6a, 0xd4, 0x08,
        0xd0, 0x65, 0xd4, 0x18,
-       0x00, 0x65, 0x00, 0x55,
+       0x00, 0x65, 0x02, 0x55,
        0xe1, 0x6a, 0x22, 0x01,
        0xff, 0x6a, 0xd4, 0x08,
        0x01, 0x6c, 0xa2, 0x30,
-       0xff, 0x51, 0x12, 0x75,
-       0x00, 0x51, 0x8e, 0x5d,
+       0xff, 0x51, 0x14, 0x75,
+       0x00, 0x51, 0x90, 0x5d,
        0x01, 0x51, 0x20, 0x31,
-       0x00, 0x65, 0x34, 0x45,
+       0x00, 0x65, 0x36, 0x45,
        0x3f, 0xba, 0xc8, 0x08,
-       0x00, 0x3e, 0x34, 0x75,
-       0x00, 0x65, 0xb0, 0x5e,
+       0x00, 0x3e, 0x36, 0x75,
+       0x00, 0x65, 0xb2, 0x5e,
        0x80, 0x3c, 0x78, 0x00,
        0x01, 0x06, 0xd4, 0x30,
-       0x00, 0x65, 0xd8, 0x5d,
+       0x00, 0x65, 0xda, 0x5d,
        0x01, 0x3c, 0x78, 0x00,
-       0xe0, 0x3f, 0x50, 0x65,
+       0xe0, 0x3f, 0x52, 0x65,
        0x02, 0x3c, 0x78, 0x00,
-       0x20, 0x12, 0x50, 0x65,
-       0x51, 0x6a, 0x5e, 0x5d,
-       0x00, 0x51, 0x8e, 0x5d,
-       0x51, 0x6a, 0x5e, 0x5d,
+       0x20, 0x12, 0x52, 0x65,
+       0x51, 0x6a, 0x60, 0x5d,
+       0x00, 0x51, 0x90, 0x5d,
+       0x51, 0x6a, 0x60, 0x5d,
        0x01, 0x51, 0x20, 0x31,
        0x04, 0x3c, 0x78, 0x00,
        0x01, 0xb9, 0xc8, 0x30,
-       0x00, 0x3d, 0x4e, 0x65,
+       0x00, 0x3d, 0x50, 0x65,
        0x08, 0x3c, 0x78, 0x00,
        0x3f, 0xba, 0xc8, 0x08,
-       0x00, 0x3e, 0x4e, 0x65,
+       0x00, 0x3e, 0x50, 0x65,
        0x10, 0x3c, 0x78, 0x00,
-       0x04, 0xb8, 0x4e, 0x7d,
+       0x04, 0xb8, 0x50, 0x7d,
        0xfb, 0xb8, 0x70, 0x09,
-       0x20, 0xb8, 0x44, 0x6d,
+       0x20, 0xb8, 0x46, 0x6d,
        0x01, 0x90, 0xc8, 0x30,
        0xff, 0x6a, 0xa2, 0x00,
-       0x00, 0x3d, 0xce, 0x5c,
+       0x00, 0x3d, 0xd0, 0x5c,
        0x01, 0x64, 0x20, 0x31,
        0xff, 0x6a, 0x78, 0x08,
        0x00, 0x65, 0xea, 0x58,
-       0x10, 0xb8, 0x5c, 0x7c,
-       0xff, 0x6a, 0x54, 0x5d,
-       0x00, 0x65, 0x5c, 0x44,
-       0x00, 0x65, 0xb0, 0x5e,
-       0x31, 0x6a, 0xd8, 0x5e,
-       0x00, 0x65, 0x5c, 0x44,
+       0x10, 0xb8, 0x5e, 0x7c,
+       0xff, 0x6a, 0x56, 0x5d,
+       0x00, 0x65, 0x5e, 0x44,
+       0x00, 0x65, 0xb2, 0x5e,
+       0x31, 0x6a, 0xda, 0x5e,
+       0x00, 0x65, 0x5e, 0x44,
        0x10, 0x3f, 0x06, 0x00,
        0x10, 0x6a, 0x06, 0x00,
        0x01, 0x65, 0x74, 0x34,
-       0x81, 0x6a, 0xd8, 0x5e,
-       0x00, 0x65, 0x60, 0x45,
+       0x81, 0x6a, 0xda, 0x5e,
+       0x00, 0x65, 0x62, 0x45,
        0x01, 0x06, 0xd4, 0x30,
-       0x01, 0x0c, 0x60, 0x7d,
-       0x04, 0x0c, 0x5a, 0x6d,
+       0x01, 0x0c, 0x62, 0x7d,
+       0x04, 0x0c, 0x5c, 0x6d,
        0xe0, 0x03, 0x7e, 0x08,
        0xe0, 0x3f, 0xcc, 0x61,
        0x01, 0x65, 0xcc, 0x30,
        0x01, 0x12, 0xda, 0x34,
        0x01, 0x06, 0xd4, 0x34,
-       0x01, 0x03, 0x6e, 0x6d,
+       0x01, 0x03, 0x70, 0x6d,
        0x40, 0x03, 0xcc, 0x08,
        0x01, 0x65, 0x06, 0x30,
        0x40, 0x65, 0xc8, 0x08,
-       0x00, 0x66, 0x7c, 0x75,
-       0x40, 0x65, 0x7c, 0x7d,
-       0x00, 0x65, 0x7c, 0x5d,
+       0x00, 0x66, 0x7e, 0x75,
+       0x40, 0x65, 0x7e, 0x7d,
+       0x00, 0x65, 0x7e, 0x5d,
        0xff, 0x6a, 0xd4, 0x08,
        0xff, 0x6a, 0xd4, 0x08,
        0xff, 0x6a, 0xd4, 0x08,
        0xff, 0x6a, 0xd4, 0x0c,
        0x08, 0x01, 0x02, 0x00,
-       0x02, 0x0b, 0x86, 0x7d,
+       0x02, 0x0b, 0x88, 0x7d,
        0x01, 0x65, 0x0c, 0x30,
-       0x02, 0x0b, 0x8a, 0x7d,
+       0x02, 0x0b, 0x8c, 0x7d,
        0xf7, 0x01, 0x02, 0x0c,
        0x01, 0x65, 0xc8, 0x30,
-       0xff, 0x41, 0xae, 0x75,
+       0xff, 0x41, 0xb0, 0x75,
        0x01, 0x41, 0x20, 0x31,
        0xff, 0x6a, 0xa4, 0x00,
-       0x00, 0x65, 0x9e, 0x45,
-       0xff, 0xbf, 0xae, 0x75,
+       0x00, 0x65, 0xa0, 0x45,
+       0xff, 0xbf, 0xb0, 0x75,
        0x01, 0x90, 0xa4, 0x30,
        0x01, 0xbf, 0x20, 0x31,
-       0x00, 0xbb, 0x98, 0x65,
-       0xff, 0x52, 0xac, 0x75,
+       0x00, 0xbb, 0x9a, 0x65,
+       0xff, 0x52, 0xae, 0x75,
        0x01, 0xbf, 0xcc, 0x30,
        0x01, 0x90, 0xca, 0x30,
        0x01, 0x52, 0x20, 0x31,
@@ -734,28 +735,28 @@ static uint8_t seqprog[] = {
        0x01, 0x65, 0x20, 0x35,
        0x01, 0xbf, 0x82, 0x34,
        0x01, 0x64, 0xa2, 0x30,
-       0x00, 0x6a, 0xc0, 0x5e,
+       0x00, 0x6a, 0xc2, 0x5e,
        0x0d, 0x6a, 0x76, 0x00,
-       0x00, 0x51, 0x12, 0x46,
+       0x00, 0x51, 0x14, 0x46,
        0x01, 0x65, 0xa4, 0x30,
        0xe0, 0x6a, 0xcc, 0x00,
-       0x48, 0x6a, 0x06, 0x5e,
+       0x48, 0x6a, 0x08, 0x5e,
        0x01, 0x6a, 0xd0, 0x01,
        0x01, 0x6a, 0xdc, 0x05,
        0x88, 0x6a, 0xcc, 0x00,
-       0x48, 0x6a, 0x06, 0x5e,
-       0x01, 0x6a, 0xe0, 0x5d,
+       0x48, 0x6a, 0x08, 0x5e,
+       0x01, 0x6a, 0xe2, 0x5d,
        0x01, 0x6a, 0x26, 0x05,
        0x01, 0x65, 0xd8, 0x31,
        0x09, 0xee, 0xdc, 0x01,
-       0x80, 0xee, 0xcc, 0x7d,
+       0x80, 0xee, 0xce, 0x7d,
        0xff, 0x6a, 0xdc, 0x0d,
        0x01, 0x65, 0x32, 0x31,
        0x0a, 0x93, 0x26, 0x01,
-       0x00, 0x65, 0xa8, 0x46,
-       0x81, 0x6a, 0xd8, 0x5e,
-       0x01, 0x0c, 0xd8, 0x7d,
-       0x04, 0x0c, 0xd6, 0x6d,
+       0x00, 0x65, 0xaa, 0x46,
+       0x81, 0x6a, 0xda, 0x5e,
+       0x01, 0x0c, 0xda, 0x7d,
+       0x04, 0x0c, 0xd8, 0x6d,
        0xe0, 0x03, 0x06, 0x08,
        0xe0, 0x03, 0x7e, 0x0c,
        0x01, 0x65, 0x18, 0x31,
@@ -774,7 +775,7 @@ static uint8_t seqprog[] = {
        0x01, 0x6c, 0xda, 0x34,
        0x3d, 0x64, 0xa4, 0x28,
        0x55, 0x64, 0xc8, 0x28,
-       0x00, 0x65, 0x06, 0x46,
+       0x00, 0x65, 0x08, 0x46,
        0x2e, 0x64, 0xa4, 0x28,
        0x66, 0x64, 0xc8, 0x28,
        0x00, 0x6c, 0xda, 0x18,
@@ -785,63 +786,63 @@ static uint8_t seqprog[] = {
        0x00, 0x6c, 0xda, 0x24,
        0x01, 0x65, 0xc8, 0x30,
        0xe0, 0x6a, 0xcc, 0x00,
-       0x44, 0x6a, 0x02, 0x5e,
+       0x44, 0x6a, 0x04, 0x5e,
        0x01, 0x90, 0xe2, 0x31,
-       0x04, 0x3b, 0x26, 0x7e,
+       0x04, 0x3b, 0x28, 0x7e,
        0x30, 0x6a, 0xd0, 0x01,
        0x20, 0x6a, 0xd0, 0x01,
        0x1d, 0x6a, 0xdc, 0x01,
-       0xdc, 0xee, 0x22, 0x66,
-       0x00, 0x65, 0x3e, 0x46,
+       0xdc, 0xee, 0x24, 0x66,
+       0x00, 0x65, 0x40, 0x46,
        0x20, 0x6a, 0xd0, 0x01,
        0x01, 0x6a, 0xdc, 0x01,
        0x20, 0xa0, 0xd8, 0x31,
        0x09, 0xee, 0xdc, 0x01,
-       0x80, 0xee, 0x2e, 0x7e,
+       0x80, 0xee, 0x30, 0x7e,
        0x11, 0x6a, 0xdc, 0x01,
-       0x50, 0xee, 0x32, 0x66,
+       0x50, 0xee, 0x34, 0x66,
        0x20, 0x6a, 0xd0, 0x01,
        0x09, 0x6a, 0xdc, 0x01,
-       0x88, 0xee, 0x38, 0x66,
+       0x88, 0xee, 0x3a, 0x66,
        0x19, 0x6a, 0xdc, 0x01,
-       0xd8, 0xee, 0x3c, 0x66,
+       0xd8, 0xee, 0x3e, 0x66,
        0xff, 0x6a, 0xdc, 0x09,
-       0x18, 0xee, 0x40, 0x6e,
+       0x18, 0xee, 0x42, 0x6e,
        0xff, 0x6a, 0xd4, 0x0c,
        0x88, 0x6a, 0xcc, 0x00,
-       0x44, 0x6a, 0x02, 0x5e,
-       0x20, 0x6a, 0xe0, 0x5d,
+       0x44, 0x6a, 0x04, 0x5e,
+       0x20, 0x6a, 0xe2, 0x5d,
        0x01, 0x3b, 0x26, 0x31,
-       0x04, 0x3b, 0x5a, 0x6e,
+       0x04, 0x3b, 0x5c, 0x6e,
        0xa0, 0x6a, 0xca, 0x00,
        0x20, 0x65, 0xc8, 0x18,
-       0x00, 0x65, 0x98, 0x5e,
-       0x00, 0x65, 0x52, 0x66,
+       0x00, 0x65, 0x9a, 0x5e,
+       0x00, 0x65, 0x54, 0x66,
        0x0a, 0x93, 0x26, 0x01,
-       0x00, 0x65, 0xa8, 0x46,
+       0x00, 0x65, 0xaa, 0x46,
        0xa0, 0x6a, 0xcc, 0x00,
        0xff, 0x6a, 0xc8, 0x08,
-       0x20, 0x94, 0x5e, 0x6e,
-       0x10, 0x94, 0x60, 0x6e,
-       0x08, 0x94, 0x7a, 0x6e,
-       0x08, 0x94, 0x7a, 0x6e,
-       0x08, 0x94, 0x7a, 0x6e,
+       0x20, 0x94, 0x60, 0x6e,
+       0x10, 0x94, 0x62, 0x6e,
+       0x08, 0x94, 0x7c, 0x6e,
+       0x08, 0x94, 0x7c, 0x6e,
+       0x08, 0x94, 0x7c, 0x6e,
        0xff, 0x8c, 0xc8, 0x10,
        0xc1, 0x64, 0xc8, 0x18,
        0xf8, 0x64, 0xc8, 0x08,
        0x01, 0x99, 0xda, 0x30,
-       0x00, 0x66, 0x6e, 0x66,
-       0xc0, 0x66, 0xaa, 0x76,
+       0x00, 0x66, 0x70, 0x66,
+       0xc0, 0x66, 0xac, 0x76,
        0x60, 0x66, 0xc8, 0x18,
        0x3d, 0x64, 0xc8, 0x28,
-       0x00, 0x65, 0x5e, 0x46,
+       0x00, 0x65, 0x60, 0x46,
        0xf7, 0x93, 0x26, 0x09,
-       0x08, 0x93, 0x7c, 0x6e,
+       0x08, 0x93, 0x7e, 0x6e,
        0x00, 0x62, 0xc4, 0x18,
-       0x00, 0x65, 0xa8, 0x5e,
-       0x00, 0x65, 0x88, 0x5e,
-       0x00, 0x65, 0x88, 0x5e,
-       0x00, 0x65, 0x88, 0x5e,
+       0x00, 0x65, 0xaa, 0x5e,
+       0x00, 0x65, 0x8a, 0x5e,
+       0x00, 0x65, 0x8a, 0x5e,
+       0x00, 0x65, 0x8a, 0x5e,
        0x01, 0x99, 0xda, 0x30,
        0x01, 0x99, 0xda, 0x30,
        0x01, 0x99, 0xda, 0x30,
@@ -858,11 +859,11 @@ static uint8_t seqprog[] = {
        0x01, 0x6c, 0x32, 0x31,
        0x01, 0x6c, 0x32, 0x31,
        0x01, 0x6c, 0x32, 0x35,
-       0x08, 0x94, 0xa8, 0x7e,
+       0x08, 0x94, 0xaa, 0x7e,
        0xf7, 0x93, 0x26, 0x09,
-       0x08, 0x93, 0xac, 0x6e,
+       0x08, 0x93, 0xae, 0x6e,
        0xff, 0x6a, 0xd4, 0x0c,
-       0x04, 0xb8, 0xd4, 0x6e,
+       0x04, 0xb8, 0xd6, 0x6e,
        0x01, 0x42, 0x7e, 0x31,
        0xff, 0x6a, 0x76, 0x01,
        0x01, 0x90, 0x84, 0x34,
@@ -870,14 +871,14 @@ static uint8_t seqprog[] = {
        0x01, 0x85, 0x0a, 0x01,
        0x7f, 0x65, 0x10, 0x09,
        0xfe, 0x85, 0x0a, 0x0d,
-       0xff, 0x42, 0xd0, 0x66,
-       0xff, 0x41, 0xc8, 0x66,
-       0xd1, 0x6a, 0xd8, 0x5e,
+       0xff, 0x42, 0xd2, 0x66,
+       0xff, 0x41, 0xca, 0x66,
+       0xd1, 0x6a, 0xda, 0x5e,
        0xff, 0x6a, 0xca, 0x04,
        0x01, 0x41, 0x20, 0x31,
        0x01, 0xbf, 0x82, 0x30,
        0x01, 0x6a, 0x76, 0x00,
-       0x00, 0xbb, 0x12, 0x46,
+       0x00, 0xbb, 0x14, 0x46,
        0x01, 0x42, 0x20, 0x31,
        0x01, 0xbf, 0x84, 0x34,
        0x01, 0x41, 0x7e, 0x31,
@@ -941,7 +942,7 @@ static ahc_patch_func_t ahc_patch17_func;
 static int
 ahc_patch17_func(struct ahc_softc *ahc)
 {
-       return ((ahc->flags & AHC_TMODE_WIDEODD_BUG) != 0);
+       return ((ahc->bugs & AHC_TMODE_WIDEODD_BUG) != 0);
 }
 
 static ahc_patch_func_t ahc_patch16_func;
@@ -1142,152 +1143,152 @@ static struct patch {
        { ahc_patch0_func, 196, 1, 1 },
        { ahc_patch9_func, 212, 6, 2 },
        { ahc_patch0_func, 218, 6, 1 },
-       { ahc_patch8_func, 226, 20, 2 },
+       { ahc_patch8_func, 226, 21, 2 },
        { ahc_patch1_func, 241, 1, 1 },
-       { ahc_patch1_func, 248, 1, 2 },
-       { ahc_patch0_func, 249, 2, 2 },
-       { ahc_patch11_func, 250, 1, 1 },
-       { ahc_patch9_func, 258, 27, 3 },
-       { ahc_patch1_func, 274, 10, 2 },
-       { ahc_patch13_func, 277, 1, 1 },
-       { ahc_patch14_func, 285, 14, 1 },
-       { ahc_patch1_func, 301, 1, 2 },
-       { ahc_patch0_func, 302, 1, 1 },
-       { ahc_patch9_func, 305, 1, 1 },
-       { ahc_patch13_func, 310, 1, 1 },
-       { ahc_patch9_func, 311, 2, 2 },
-       { ahc_patch0_func, 313, 4, 1 },
-       { ahc_patch14_func, 317, 1, 1 },
-       { ahc_patch15_func, 319, 2, 3 },
-       { ahc_patch9_func, 319, 1, 2 },
-       { ahc_patch0_func, 320, 1, 1 },
-       { ahc_patch6_func, 325, 1, 2 },
-       { ahc_patch0_func, 326, 1, 1 },
-       { ahc_patch1_func, 330, 47, 11 },
-       { ahc_patch6_func, 337, 2, 4 },
-       { ahc_patch7_func, 337, 1, 1 },
-       { ahc_patch8_func, 338, 1, 1 },
-       { ahc_patch0_func, 339, 1, 1 },
-       { ahc_patch16_func, 340, 1, 1 },
-       { ahc_patch6_func, 356, 6, 3 },
-       { ahc_patch16_func, 356, 5, 1 },
-       { ahc_patch0_func, 362, 7, 1 },
-       { ahc_patch13_func, 372, 5, 1 },
-       { ahc_patch0_func, 377, 52, 17 },
-       { ahc_patch14_func, 377, 1, 1 },
-       { ahc_patch7_func, 379, 2, 2 },
-       { ahc_patch17_func, 380, 1, 1 },
-       { ahc_patch9_func, 383, 1, 1 },
-       { ahc_patch18_func, 390, 1, 1 },
-       { ahc_patch14_func, 395, 9, 3 },
-       { ahc_patch9_func, 396, 3, 2 },
-       { ahc_patch0_func, 399, 3, 1 },
-       { ahc_patch9_func, 407, 6, 2 },
-       { ahc_patch0_func, 413, 9, 2 },
-       { ahc_patch13_func, 413, 1, 1 },
-       { ahc_patch13_func, 422, 2, 1 },
-       { ahc_patch14_func, 424, 1, 1 },
-       { ahc_patch9_func, 426, 1, 2 },
-       { ahc_patch0_func, 427, 1, 1 },
-       { ahc_patch7_func, 428, 1, 1 },
+       { ahc_patch1_func, 249, 1, 2 },
+       { ahc_patch0_func, 250, 2, 2 },
+       { ahc_patch11_func, 251, 1, 1 },
+       { ahc_patch9_func, 259, 27, 3 },
+       { ahc_patch1_func, 275, 10, 2 },
+       { ahc_patch13_func, 278, 1, 1 },
+       { ahc_patch14_func, 286, 14, 1 },
+       { ahc_patch1_func, 302, 1, 2 },
+       { ahc_patch0_func, 303, 1, 1 },
+       { ahc_patch9_func, 306, 1, 1 },
+       { ahc_patch13_func, 311, 1, 1 },
+       { ahc_patch9_func, 312, 2, 2 },
+       { ahc_patch0_func, 314, 4, 1 },
+       { ahc_patch14_func, 318, 1, 1 },
+       { ahc_patch15_func, 320, 2, 3 },
+       { ahc_patch9_func, 320, 1, 2 },
+       { ahc_patch0_func, 321, 1, 1 },
+       { ahc_patch6_func, 326, 1, 2 },
+       { ahc_patch0_func, 327, 1, 1 },
+       { ahc_patch1_func, 331, 47, 11 },
+       { ahc_patch6_func, 338, 2, 4 },
+       { ahc_patch7_func, 338, 1, 1 },
+       { ahc_patch8_func, 339, 1, 1 },
+       { ahc_patch0_func, 340, 1, 1 },
+       { ahc_patch16_func, 341, 1, 1 },
+       { ahc_patch6_func, 357, 6, 3 },
+       { ahc_patch16_func, 357, 5, 1 },
+       { ahc_patch0_func, 363, 7, 1 },
+       { ahc_patch13_func, 373, 5, 1 },
+       { ahc_patch0_func, 378, 52, 17 },
+       { ahc_patch14_func, 378, 1, 1 },
+       { ahc_patch7_func, 380, 2, 2 },
+       { ahc_patch17_func, 381, 1, 1 },
+       { ahc_patch9_func, 384, 1, 1 },
+       { ahc_patch18_func, 391, 1, 1 },
+       { ahc_patch14_func, 396, 9, 3 },
+       { ahc_patch9_func, 397, 3, 2 },
+       { ahc_patch0_func, 400, 3, 1 },
+       { ahc_patch9_func, 408, 6, 2 },
+       { ahc_patch0_func, 414, 9, 2 },
+       { ahc_patch13_func, 414, 1, 1 },
+       { ahc_patch13_func, 423, 2, 1 },
+       { ahc_patch14_func, 425, 1, 1 },
+       { ahc_patch9_func, 427, 1, 2 },
+       { ahc_patch0_func, 428, 1, 1 },
        { ahc_patch7_func, 429, 1, 1 },
-       { ahc_patch8_func, 430, 3, 3 },
-       { ahc_patch6_func, 431, 1, 2 },
-       { ahc_patch0_func, 432, 1, 1 },
-       { ahc_patch9_func, 433, 1, 1 },
-       { ahc_patch15_func, 434, 1, 2 },
-       { ahc_patch13_func, 434, 1, 1 },
-       { ahc_patch14_func, 436, 9, 4 },
-       { ahc_patch9_func, 436, 1, 1 },
-       { ahc_patch9_func, 443, 2, 1 },
-       { ahc_patch0_func, 445, 4, 3 },
-       { ahc_patch9_func, 445, 1, 2 },
-       { ahc_patch0_func, 446, 3, 1 },
-       { ahc_patch1_func, 450, 2, 1 },
-       { ahc_patch7_func, 452, 10, 2 },
-       { ahc_patch0_func, 462, 1, 1 },
-       { ahc_patch8_func, 463, 118, 22 },
-       { ahc_patch1_func, 465, 3, 2 },
-       { ahc_patch0_func, 468, 5, 3 },
-       { ahc_patch9_func, 468, 2, 2 },
-       { ahc_patch0_func, 470, 3, 1 },
-       { ahc_patch1_func, 475, 2, 2 },
-       { ahc_patch0_func, 477, 6, 3 },
-       { ahc_patch9_func, 477, 2, 2 },
-       { ahc_patch0_func, 479, 3, 1 },
-       { ahc_patch1_func, 485, 2, 2 },
-       { ahc_patch0_func, 487, 9, 7 },
-       { ahc_patch9_func, 487, 5, 6 },
-       { ahc_patch19_func, 487, 1, 2 },
-       { ahc_patch0_func, 488, 1, 1 },
-       { ahc_patch19_func, 490, 1, 2 },
-       { ahc_patch0_func, 491, 1, 1 },
-       { ahc_patch0_func, 492, 4, 1 },
-       { ahc_patch6_func, 497, 3, 2 },
-       { ahc_patch0_func, 500, 1, 1 },
-       { ahc_patch6_func, 510, 1, 2 },
-       { ahc_patch0_func, 511, 1, 1 },
-       { ahc_patch20_func, 548, 7, 1 },
-       { ahc_patch3_func, 583, 1, 2 },
-       { ahc_patch0_func, 584, 1, 1 },
-       { ahc_patch21_func, 587, 1, 1 },
-       { ahc_patch8_func, 589, 106, 33 },
-       { ahc_patch4_func, 591, 1, 1 },
-       { ahc_patch1_func, 597, 2, 2 },
-       { ahc_patch0_func, 599, 1, 1 },
-       { ahc_patch1_func, 602, 1, 2 },
-       { ahc_patch0_func, 603, 1, 1 },
-       { ahc_patch9_func, 604, 3, 3 },
-       { ahc_patch15_func, 605, 1, 1 },
-       { ahc_patch0_func, 607, 4, 1 },
-       { ahc_patch19_func, 616, 2, 2 },
-       { ahc_patch0_func, 618, 1, 1 },
-       { ahc_patch19_func, 622, 10, 3 },
-       { ahc_patch5_func, 624, 8, 1 },
-       { ahc_patch0_func, 632, 9, 2 },
-       { ahc_patch5_func, 633, 8, 1 },
-       { ahc_patch4_func, 643, 1, 2 },
-       { ahc_patch0_func, 644, 1, 1 },
-       { ahc_patch19_func, 645, 1, 2 },
-       { ahc_patch0_func, 646, 3, 2 },
-       { ahc_patch4_func, 648, 1, 1 },
-       { ahc_patch5_func, 649, 1, 1 },
-       { ahc_patch5_func, 652, 1, 1 },
-       { ahc_patch5_func, 654, 1, 1 },
-       { ahc_patch4_func, 656, 2, 2 },
-       { ahc_patch0_func, 658, 2, 1 },
-       { ahc_patch5_func, 660, 1, 1 },
-       { ahc_patch5_func, 663, 1, 1 },
-       { ahc_patch5_func, 666, 1, 1 },
-       { ahc_patch19_func, 670, 1, 1 },
-       { ahc_patch19_func, 673, 1, 1 },
-       { ahc_patch4_func, 679, 1, 1 },
-       { ahc_patch6_func, 682, 1, 2 },
-       { ahc_patch0_func, 683, 1, 1 },
-       { ahc_patch7_func, 695, 16, 1 },
-       { ahc_patch4_func, 711, 20, 1 },
-       { ahc_patch9_func, 732, 4, 2 },
-       { ahc_patch0_func, 736, 4, 1 },
-       { ahc_patch9_func, 740, 4, 2 },
-       { ahc_patch0_func, 744, 3, 1 },
-       { ahc_patch6_func, 750, 1, 1 },
-       { ahc_patch22_func, 752, 14, 1 },
-       { ahc_patch7_func, 766, 3, 1 },
-       { ahc_patch9_func, 778, 24, 8 },
-       { ahc_patch19_func, 782, 1, 2 },
-       { ahc_patch0_func, 783, 1, 1 },
-       { ahc_patch15_func, 788, 4, 2 },
-       { ahc_patch0_func, 792, 7, 3 },
-       { ahc_patch23_func, 792, 5, 2 },
-       { ahc_patch0_func, 797, 2, 1 },
-       { ahc_patch0_func, 802, 42, 3 },
-       { ahc_patch18_func, 814, 18, 2 },
-       { ahc_patch0_func, 832, 1, 1 },
-       { ahc_patch4_func, 856, 1, 1 },
-       { ahc_patch4_func, 857, 3, 2 },
-       { ahc_patch0_func, 860, 1, 1 },
-       { ahc_patch13_func, 861, 3, 1 },
-       { ahc_patch4_func, 864, 12, 1 }
+       { ahc_patch7_func, 430, 1, 1 },
+       { ahc_patch8_func, 431, 3, 3 },
+       { ahc_patch6_func, 432, 1, 2 },
+       { ahc_patch0_func, 433, 1, 1 },
+       { ahc_patch9_func, 434, 1, 1 },
+       { ahc_patch15_func, 435, 1, 2 },
+       { ahc_patch13_func, 435, 1, 1 },
+       { ahc_patch14_func, 437, 9, 4 },
+       { ahc_patch9_func, 437, 1, 1 },
+       { ahc_patch9_func, 444, 2, 1 },
+       { ahc_patch0_func, 446, 4, 3 },
+       { ahc_patch9_func, 446, 1, 2 },
+       { ahc_patch0_func, 447, 3, 1 },
+       { ahc_patch1_func, 451, 2, 1 },
+       { ahc_patch7_func, 453, 10, 2 },
+       { ahc_patch0_func, 463, 1, 1 },
+       { ahc_patch8_func, 464, 118, 22 },
+       { ahc_patch1_func, 466, 3, 2 },
+       { ahc_patch0_func, 469, 5, 3 },
+       { ahc_patch9_func, 469, 2, 2 },
+       { ahc_patch0_func, 471, 3, 1 },
+       { ahc_patch1_func, 476, 2, 2 },
+       { ahc_patch0_func, 478, 6, 3 },
+       { ahc_patch9_func, 478, 2, 2 },
+       { ahc_patch0_func, 480, 3, 1 },
+       { ahc_patch1_func, 486, 2, 2 },
+       { ahc_patch0_func, 488, 9, 7 },
+       { ahc_patch9_func, 488, 5, 6 },
+       { ahc_patch19_func, 488, 1, 2 },
+       { ahc_patch0_func, 489, 1, 1 },
+       { ahc_patch19_func, 491, 1, 2 },
+       { ahc_patch0_func, 492, 1, 1 },
+       { ahc_patch0_func, 493, 4, 1 },
+       { ahc_patch6_func, 498, 3, 2 },
+       { ahc_patch0_func, 501, 1, 1 },
+       { ahc_patch6_func, 511, 1, 2 },
+       { ahc_patch0_func, 512, 1, 1 },
+       { ahc_patch20_func, 549, 7, 1 },
+       { ahc_patch3_func, 584, 1, 2 },
+       { ahc_patch0_func, 585, 1, 1 },
+       { ahc_patch21_func, 588, 1, 1 },
+       { ahc_patch8_func, 590, 106, 33 },
+       { ahc_patch4_func, 592, 1, 1 },
+       { ahc_patch1_func, 598, 2, 2 },
+       { ahc_patch0_func, 600, 1, 1 },
+       { ahc_patch1_func, 603, 1, 2 },
+       { ahc_patch0_func, 604, 1, 1 },
+       { ahc_patch9_func, 605, 3, 3 },
+       { ahc_patch15_func, 606, 1, 1 },
+       { ahc_patch0_func, 608, 4, 1 },
+       { ahc_patch19_func, 617, 2, 2 },
+       { ahc_patch0_func, 619, 1, 1 },
+       { ahc_patch19_func, 623, 10, 3 },
+       { ahc_patch5_func, 625, 8, 1 },
+       { ahc_patch0_func, 633, 9, 2 },
+       { ahc_patch5_func, 634, 8, 1 },
+       { ahc_patch4_func, 644, 1, 2 },
+       { ahc_patch0_func, 645, 1, 1 },
+       { ahc_patch19_func, 646, 1, 2 },
+       { ahc_patch0_func, 647, 3, 2 },
+       { ahc_patch4_func, 649, 1, 1 },
+       { ahc_patch5_func, 650, 1, 1 },
+       { ahc_patch5_func, 653, 1, 1 },
+       { ahc_patch5_func, 655, 1, 1 },
+       { ahc_patch4_func, 657, 2, 2 },
+       { ahc_patch0_func, 659, 2, 1 },
+       { ahc_patch5_func, 661, 1, 1 },
+       { ahc_patch5_func, 664, 1, 1 },
+       { ahc_patch5_func, 667, 1, 1 },
+       { ahc_patch19_func, 671, 1, 1 },
+       { ahc_patch19_func, 674, 1, 1 },
+       { ahc_patch4_func, 680, 1, 1 },
+       { ahc_patch6_func, 683, 1, 2 },
+       { ahc_patch0_func, 684, 1, 1 },
+       { ahc_patch7_func, 696, 16, 1 },
+       { ahc_patch4_func, 712, 20, 1 },
+       { ahc_patch9_func, 733, 4, 2 },
+       { ahc_patch0_func, 737, 4, 1 },
+       { ahc_patch9_func, 741, 4, 2 },
+       { ahc_patch0_func, 745, 3, 1 },
+       { ahc_patch6_func, 751, 1, 1 },
+       { ahc_patch22_func, 753, 14, 1 },
+       { ahc_patch7_func, 767, 3, 1 },
+       { ahc_patch9_func, 779, 24, 8 },
+       { ahc_patch19_func, 783, 1, 2 },
+       { ahc_patch0_func, 784, 1, 1 },
+       { ahc_patch15_func, 789, 4, 2 },
+       { ahc_patch0_func, 793, 7, 3 },
+       { ahc_patch23_func, 793, 5, 2 },
+       { ahc_patch0_func, 798, 2, 1 },
+       { ahc_patch0_func, 803, 42, 3 },
+       { ahc_patch18_func, 815, 18, 2 },
+       { ahc_patch0_func, 833, 1, 1 },
+       { ahc_patch4_func, 857, 1, 1 },
+       { ahc_patch4_func, 858, 3, 2 },
+       { ahc_patch0_func, 861, 1, 1 },
+       { ahc_patch13_func, 862, 3, 1 },
+       { ahc_patch4_func, 865, 12, 1 }
 };
 
 static struct cs {
@@ -1296,11 +1297,11 @@ static struct cs {
 } critical_sections[] = {
        { 11, 18 },
        { 21, 30 },
-       { 711, 727 },
-       { 857, 860 },
-       { 864, 870 },
-       { 872, 874 },
-       { 874, 876 }
+       { 712, 728 },
+       { 858, 861 },
+       { 865, 871 },
+       { 873, 875 },
+       { 875, 877 }
 };
 
 static const int num_critical_sections = sizeof(critical_sections)