diff --git a/boards/spartan3e_starterkit/webpack_ise/Apple-One.gise b/boards/spartan3e_starterkit/webpack_ise/Apple-One.gise
index 19662ab..ee21b02 100644
--- a/boards/spartan3e_starterkit/webpack_ise/Apple-One.gise
+++ b/boards/spartan3e_starterkit/webpack_ise/Apple-One.gise
@@ -103,7 +103,7 @@
-
+
@@ -125,7 +125,7 @@
-
+
@@ -134,11 +134,9 @@
-
+
-
-
@@ -149,7 +147,7 @@
-
+
@@ -163,7 +161,7 @@
-
+
@@ -178,8 +176,10 @@
+
+
-
+
diff --git a/roms/wozmon.hex b/roms/wozmon.hex
index f3bd6d1..70a749c 100644
--- a/roms/wozmon.hex
+++ b/roms/wozmon.hex
@@ -1,32 +1,256 @@
-D8 58 A0 7F 8C 12 D0 A9
-A7 8D 11 D0 8D 13 D0 C9
-DF F0 13 C9 9B F0 03 C8
-10 0F A9 DC 20 EF FF A9
-8D 20 EF FF A0 01 88 30
-F6 AD 11 D0 10 FB AD 10
-D0 99 00 02 20 EF FF C9
-8D D0 D4 A0 FF A9 00 AA
-0A 85 2B C8 B9 00 02 C9
-8D F0 D4 C9 AE 90 F4 F0
-F0 C9 BA F0 EB C9 D2 F0
-3B 86 28 86 29 84 2A B9
-00 02 49 B0 C9 0A 90 06
-69 88 C9 FA 90 11 0A 0A
-0A 0A A2 04 0A 26 28 26
-29 CA D0 F8 C8 D0 E0 C4
-2A F0 97 24 2B 50 10 A5
-28 81 26 E6 26 D0 B5 E6
-27 4C 44 FF 6C 24 00 30
-2B A2 02 B5 27 95 25 95
-23 CA D0 F7 D0 14 A9 8D
-20 EF FF A5 25 20 DC FF
-A5 24 20 DC FF A9 BA 20
-EF FF A9 A0 20 EF FF A1
-24 20 DC FF 86 2B A5 24
-C5 28 A5 25 E5 29 B0 C1
-E6 24 D0 02 E6 25 A5 24
-29 07 10 C8 48 4A 4A 4A
-4A 20 E5 FF 68 29 0F 09
-B0 C9 BA 90 02 69 06 2C
-12 D0 30 FB 8D 12 D0 60
-00 00 00 0F 00 FF 00 00
+D8
+58
+A0
+7F
+8C
+12
+D0
+A9
+A7
+8D
+11
+D0
+8D
+13
+D0
+C9
+DF
+F0
+13
+C9
+9B
+F0
+03
+C8
+10
+0F
+A9
+DC
+20
+EF
+FF
+A9
+8D
+20
+EF
+FF
+A0
+01
+88
+30
+F6
+AD
+11
+D0
+10
+FB
+AD
+10
+D0
+99
+00
+02
+20
+EF
+FF
+C9
+8D
+D0
+D4
+A0
+FF
+A9
+00
+AA
+0A
+85
+2B
+C8
+B9
+00
+02
+C9
+8D
+F0
+D4
+C9
+AE
+90
+F4
+F0
+F0
+C9
+BA
+F0
+EB
+C9
+D2
+F0
+3B
+86
+28
+86
+29
+84
+2A
+B9
+00
+02
+49
+B0
+C9
+0A
+90
+06
+69
+88
+C9
+FA
+90
+11
+0A
+0A
+0A
+0A
+A2
+04
+0A
+26
+28
+26
+29
+CA
+D0
+F8
+C8
+D0
+E0
+C4
+2A
+F0
+97
+24
+2B
+50
+10
+A5
+28
+81
+26
+E6
+26
+D0
+B5
+E6
+27
+4C
+44
+FF
+6C
+24
+00
+30
+2B
+A2
+02
+B5
+27
+95
+25
+95
+23
+CA
+D0
+F7
+D0
+14
+A9
+8D
+20
+EF
+FF
+A5
+25
+20
+DC
+FF
+A5
+24
+20
+DC
+FF
+A9
+BA
+20
+EF
+FF
+A9
+A0
+20
+EF
+FF
+A1
+24
+20
+DC
+FF
+86
+2B
+A5
+24
+C5
+28
+A5
+25
+E5
+29
+B0
+C1
+E6
+24
+D0
+02
+E6
+25
+A5
+24
+29
+07
+10
+C8
+48
+4A
+4A
+4A
+4A
+20
+E5
+FF
+68
+29
+0F
+09
+B0
+C9
+BA
+90
+02
+69
+06
+2C
+12
+D0
+30
+FB
+8D
+12
+D0
+60
+00
+00
+00
+0F
+00
+FF
+00
+00
\ No newline at end of file
diff --git a/rtl/boards/spartan3e_starterkit/apple1_s3e_starterkit_top.v b/rtl/boards/spartan3e_starterkit/apple1_s3e_starterkit_top.v
new file mode 100644
index 0000000..7b34def
--- /dev/null
+++ b/rtl/boards/spartan3e_starterkit/apple1_s3e_starterkit_top.v
@@ -0,0 +1,90 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+// Description: Top level Apple 1 module for Digilent Spartan 3E
+// starter kit board
+//
+// Author.....: Niels A. Moseley
+// Date.......: 11-2-2018
+//
+
+
+module apple1_s3e_starterkit_top #(
+ parameter BASIC_FILENAME = "../../../roms/basic_ise.hex",
+ parameter FONT_ROM_FILENAME = "../../../roms/vga_font_bitreversed.hex",
+ parameter RAM_FILENAME = "../../../roms/ram_ise.hex",
+ parameter VRAM_FILENAME = "../../../roms/vga_vram.bin",
+ parameter WOZMON_ROM_FILENAME = "../../../roms/wozmon_ise.hex"
+) (
+ input CLK_50MHZ, // the 50 MHz master clock
+
+ // UART I/O signals
+ output UART_TXD, // UART transmit pin on board
+ input UART_RXD, // UART receive pin on board
+
+ input PS2_KBCLK,
+ input PS2_KBDAT,
+
+ input BUTTON,
+
+ output VGA_R,
+ output VGA_G,
+ output VGA_B,
+ output VGA_HS,
+ output VGA_VS
+);
+
+ //////////////////////////////////////////////////////////////////////////
+ // Registers and Wires
+ reg clk25;
+ wire [15:0] pc_monitor;
+
+ wire rst_n;
+ assign rst_n = ~BUTTON;
+
+ // generate 25MHz clock from 50MHz master clock
+ always @(posedge CLK_50MHZ)
+ begin
+ clk25 <= ~clk25;
+ end
+
+ //////////////////////////////////////////////////////////////////////////
+ // Core of system
+ apple1 #(
+ .BASIC_FILENAME (BASIC_FILENAME),
+ .FONT_ROM_FILENAME (FONT_ROM_FILENAME),
+ .RAM_FILENAME (RAM_FILENAME),
+ .VRAM_FILENAME (VRAM_FILENAME),
+ .WOZMON_ROM_FILENAME (WOZMON_ROM_FILENAME)
+ ) apple1_top(
+ .clk25(clk25),
+ .rst_n(rst_n), // we don't have any reset pulse..
+ .uart_rx(UART_RXD),
+ .uart_tx(UART_TXD),
+ //.uart_cts(UART_CTS), // there is no CTS on the board :(
+ .ps2_clk(PS2_KBCLK),
+ .ps2_din(PS2_KBDAT),
+ .ps2_select(1'b1),
+ .vga_h_sync(VGA_HS),
+ .vga_v_sync(VGA_VS),
+ .vga_red(VGA_R),
+ .vga_grn(VGA_G),
+ .vga_blu(VGA_B),
+ .pc_monitor(pc_monitor)
+ );
+
+endmodule