Compile fixes for gcc 4.3.

Clean up some warnings.
Make sure floppy_dbt structure is aliagned to 1 byte boundary.
diff --git a/src/ata.c b/src/ata.c
index 9280f46..ecda021 100644
--- a/src/ata.c
+++ b/src/ata.c
@@ -39,7 +39,7 @@
     for (;;) {
         u8 status = inb(base+ATA_CB_STAT);
         time++;
-        u8 result;
+        u8 result = 0;
         if (when_done == BSY)
             result = status & ATA_CB_STAT_BSY;
         else if (when_done == NOT_BSY)
@@ -50,8 +50,6 @@
             result = !(status & ATA_CB_STAT_BSY) && !(status & ATA_CB_STAT_DRQ);
         else if (when_done == NOT_BSY_RDY)
             result = !(status & ATA_CB_STAT_BSY) && (status & ATA_CB_STAT_RDY);
-        else if (when_done == TIMEOUT)
-            result = 0;
 
         if (result)
             return status;
diff --git a/src/cdrom.c b/src/cdrom.c
index 24a9f1f..2921b44 100644
--- a/src/cdrom.c
+++ b/src/cdrom.c
@@ -209,7 +209,7 @@
         regs->bl = media * 2;
 
     regs->es = SEG_BIOS;
-    regs->di = (u16)&diskette_param_table2;
+    regs->di = (u32)&diskette_param_table2;
 
     disk_ret(regs, DISK_RET_SUCCESS);
 }
diff --git a/src/floppy.c b/src/floppy.c
index fc5e43f..bb8cd27 100644
--- a/src/floppy.c
+++ b/src/floppy.c
@@ -669,7 +669,7 @@
 
     /* set es & di to point to 11 byte diskette param table in ROM */
     regs->es = SEG_BIOS;
-    regs->di = (u16)&diskette_param_table2;
+    regs->di = (u32)&diskette_param_table2;
     /* disk status not changed upon success */
 }
 
diff --git a/src/floppy_dbt.c b/src/floppy_dbt.c
index 4c83f69..987568b 100644
--- a/src/floppy_dbt.c
+++ b/src/floppy_dbt.c
@@ -9,7 +9,7 @@
 // Since no provisions are made for multiple drive types, most
 // values in this table are ignored.  I set parameters for 1.44M
 // floppy here
-struct floppy_dbt_s diskette_param_table VISIBLE16 = {
+struct floppy_dbt_s diskette_param_table __attribute__((aligned (1))) VISIBLE16 = {
     .specify1       = 0xAF,
     .specify2       = 0x02, // head load time 0000001, DMA used
     .shutoff_ticks  = 0x25,
diff --git a/src/system.c b/src/system.c
index c01813d..1db679b 100644
--- a/src/system.c
+++ b/src/system.c
@@ -238,7 +238,7 @@
 handle_15c0(struct bregs *regs)
 {
     regs->es = SEG_BIOS;
-    regs->bx = (u16)&BIOS_CONFIG_TABLE;
+    regs->bx = (u32)&BIOS_CONFIG_TABLE;
     set_code_success(regs);
 }
 
diff --git a/src/util.h b/src/util.h
index e304a0b..10d1835 100644
--- a/src/util.h
+++ b/src/util.h
@@ -90,7 +90,7 @@
 #ifdef MODE16
 #define call16_int(nr, callregs) do {                           \
         extern void irq_trampoline_ ##nr ();                    \
-        __call16_int((callregs), (u16)&irq_trampoline_ ##nr );  \
+        __call16_int((callregs), (u32)&irq_trampoline_ ##nr );  \
     } while (0)
 #else
 #include "../out/rom16.offset.auto.h"