Misc updates.

Try to fix up make dependency tracking by including a "null.c" file.
Initialize hard disk tables during post.
Move RTC handlers from system.c to clock.c
Use a macro to init stacks in romlayout.S
Add C-Code stats to buildrom step.
diff --git a/src/system.c b/src/system.c
index f54f930..ca8ff88 100644
--- a/src/system.c
+++ b/src/system.c
@@ -10,9 +10,6 @@
 #include "ioport.h" // inb
 #include "cmos.h" // inb_cmos
 
-#define RET_EUNSUPPORTED 0x86
-
-
 // Use PS2 System Control port A to set A20 enable
 static inline u8
 set_a20(u8 cond)
@@ -28,13 +25,6 @@
     return (newval & 0x02) != 0;
 }
 
-static inline void
-handle_ret(struct bregs *regs, u8 code)
-{
-    regs->ah = code;
-    set_cf(regs, code);
-}
-
 static void
 handle_152400(struct bregs *regs)
 {
@@ -76,47 +66,10 @@
     handle_ret(regs, 0);
 }
 
-// Set Interval requested.
 static void
-handle_158300(struct bregs *regs)
+handle_1553(struct bregs *regs)
 {
-    if (GET_BDA(rtc_wait_flag) & RWS_WAIT_PENDING) {
-        // Interval already set.
-        DEBUGF("int15: Func 83h, failed, already waiting.\n" );
-        handle_ret(regs, RET_EUNSUPPORTED);
-    }
-    // Interval not already set.
-    SET_BDA(rtc_wait_flag, RWS_WAIT_PENDING);  // Set status byte.
-    u32 v = (regs->es << 16) | regs->bx;
-    SET_BDA(ptr_user_wait_complete_flag, v);
-    v = (regs->dx << 16) | regs->cx;
-    SET_BDA(user_wait_timeout, v);
-
-    // Unmask IRQ8 so INT70 will get through.
-    u8 irqDisable = inb(PORT_PIC2_DATA);
-    outb(irqDisable & ~PIC2_IRQ8, PORT_PIC2_DATA);
-    // Turn on the Periodic Interrupt timer
-    u8 bRegister = inb_cmos(CMOS_STATUS_B);
-    outb_cmos(CMOS_STATUS_B, bRegister | CSB_EN_ALARM_IRQ);
-
-    set_cf(regs, 0); // XXX - no set ah?
-}
-
-// Clear interval requested
-static void
-handle_158301(struct bregs *regs)
-{
-    SET_BDA(rtc_wait_flag, 0); // Clear status byte
-    // Turn off the Periodic Interrupt timer
-    u8 bRegister = inb_cmos(CMOS_STATUS_B);
-    outb_cmos(CMOS_STATUS_B, bRegister & ~CSB_EN_ALARM_IRQ);
-    set_cf(regs, 0); // XXX - no set ah?
-}
-
-static void
-handle_1583XX(struct bregs *regs)
-{
-    regs->al--;
+    // XXX - APM call
     handle_ret(regs, RET_EUNSUPPORTED);
 }
 
@@ -434,14 +387,12 @@
 static void
 handle_15e8XX(struct bregs *regs)
 {
-    regs->al--;
     handle_ret(regs, RET_EUNSUPPORTED);
 }
 
 static void
 handle_15XX(struct bregs *regs)
 {
-    regs->al--;
     handle_ret(regs, RET_EUNSUPPORTED);
 }
 
@@ -462,13 +413,8 @@
         break;
     case 0x4f: handle_154f(regs); break;
     case 0x52: handle_1552(regs); break;
-    case 0x83:
-        switch (regs->al) {
-        case 0x00: handle_158300(regs); break;
-        case 0x01: handle_158301(regs); break;
-        default:   handle_1583XX(regs); break;
-        }
-        break;
+    case 0x53: handle_1553(regs); break;
+    case 0x83: handle_1583(regs); break;
     case 0x86: handle_1586(regs); break;
     case 0x87: handle_1587(regs); break;
     case 0x88: handle_1588(regs); break;