I made this a few months ago. Took about a week to make. If you don’t have basic understanding of logic gates then you won’t understand how it works.
Screenshot:
Select a gate by clicking on it. Hover over another gate and press 1 or 2 to connect the selected gate to input 1 or 2 of the gate you’re hovering at.
http://dl.dropbox.com/u/7999872/javaprogram/WASDGateSimulator.zip
I haven’t found any bugs in the save-feature yet but I suggest you don’t spend lots of time on some project in case the it bugs.
Sample save: http://dl.dropbox.com/u/7999872/javaprogram/GateSave.wsd