diff --git a/httpd/page_impl.c b/httpd/page_impl.c
new file mode 100644
index 0000000..67ce46b
--- /dev/null
+++ b/httpd/page_impl.c
@@ -0,0 +1,84 @@
+#include "../rtl837x_common.h"
+#include "uip.h"
+#include "../html_data.h"
+
+#pragma codeseg BANK1
+
+extern __xdata uint8_t outbuf[2048];
+extern __xdata uint16_t slen;
+extern __code uint8_t * __code hex;
+extern __xdata uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask;
+extern __code uint8_t ownMAC[];
+
+inline void byte_to_html(uint8_t a)
+{
+ outbuf[slen++] = hex[(a >> 4) & 0xf];
+ outbuf[slen++] = hex[a & 0xf];
+}
+
+
+inline void char_to_html(char c)
+{
+ outbuf[slen++] = c;
+}
+
+
+inline void itoa_html(uint8_t v)
+{
+ uint8_t t = (v / 100) % 10;
+ if (t)
+ char_to_html('0' + t);
+ t = (v / 10) % 10;
+ if (t)
+ char_to_html('0' + t);
+ char_to_html('0' + (v % 10));
+}
+
+
+uint16_t stat_content(void)
+{
+ print_string("stat_content called\n");
+ return 0;
+}
+
+
+uint16_t port_status(void)
+{
+ print_string("port_status called\n");
+ return 0;
+}
+
+
+uint16_t html_index(void)
+{
+ print_string("html_index called\n");
+ slen += strtox(outbuf + slen, "
| IP Address | ");
+ print_string("\nIP:");
+ print_byte(uip_hostaddr[0]); write_char('.');
+ print_byte(uip_hostaddr[0] >> 8); write_char('.');
+ print_byte(uip_hostaddr[1]); write_char('.');
+ print_byte(uip_hostaddr[1] >> 8); write_char('\n');
+ itoa_html(uip_hostaddr[0]); char_to_html('.');
+ itoa_html(uip_hostaddr[0] >> 8); char_to_html('.');
+ itoa_html(uip_hostaddr[1]); char_to_html('.');
+ itoa_html(uip_hostaddr[1]);
+ slen += strtox(outbuf + slen, " |
| Gateway | ");
+ itoa_html(uip_draddr[0]); char_to_html('.');
+ itoa_html(uip_draddr[0] >> 8); char_to_html('.');
+ itoa_html(uip_draddr[1]); char_to_html('.');
+ itoa_html(uip_draddr[1] >> 8);
+ slen += strtox(outbuf + slen, " |
| Netmask | ");
+ itoa_html(uip_netmask[0]); char_to_html('.');
+ itoa_html(uip_netmask[0] >> 8); char_to_html('.');
+ itoa_html(uip_netmask[1]); char_to_html('.');
+ itoa_html(uip_netmask[1] >> 8);
+ slen += strtox(outbuf + slen, " |
| MAC Address | ");
+ byte_to_html(ownMAC[0]); char_to_html(':');
+ byte_to_html(ownMAC[1]); char_to_html(':');
+ byte_to_html(ownMAC[2]); char_to_html(':');
+ byte_to_html(ownMAC[3]); char_to_html(':');
+ byte_to_html(ownMAC[4]); char_to_html(':');
+ byte_to_html(ownMAC[5]);
+ slen += strtox(outbuf + slen, " |
");
+ return 0;
+}