lawrancej / logisim Goto Github PK
View Code? Open in Web Editor NEWGit fork of Logisim code base
Home Page: http://www.cburch.com/logisim/
License: GNU General Public License v3.0
Git fork of Logisim code base
Home Page: http://www.cburch.com/logisim/
License: GNU General Public License v3.0
View the contents of primitives as subcircuits (e.g., look inside multiplexer to see logic schematic, look inside a gate to see its implementation as transistors, etc.)
because otherwise, the back row can't read it.
Logisim should use scalable vector graphics to draw shapes, rather than hardcode shapes in Java as is currently done through low-level graphics commands that are impossible to understand from reading the code.
Use Batik instead. Logisim ships with it's own half-hearted reader for SVG: com.cburch.draw.shapes.SvgReader, com.cburch.draw.shapes.SvgCreator. That should go away.
Any calls to draw gates should be revised to a preloaded SVG shape from memory (using flyweights, obviously).
With SVG support from Batik, we can get PDF generation for free, so logisim.gui.main.print shouldn’t be as necessary anymore.
It'd be nice to add labels by double clicking on it.
It'd be nice if we didn't have input/output as separate tabs. Instead, start with a table that looks like a spreadsheet. You'd be able to name the columns, and slide a vertical bar around so Logisim knows which columns are input, and which are output. You should also be able to drag columns around to reorder them.
If you have a gate selected and decide not to place it, right clicking should change your tool to the selection tool, especially if you have the "keep at component tool" option selected under layout.
Show a diff/merge view for working on circuits with multiple contributors. This would allow students to work together on a circuit in version control, if it's configured as a mergetool for logisim files.
Jan 13, 2014 3:24:26 PM java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
got this issue when I ran it, it ran but yeah......
com.cburch.logisim.gui.start.AboutCredits: why is this even a dedicated class? Just load an SVG or text file from resources and call it a day.
It'd be nice to have a venn diagram view in combinational analysis.
In case of purple VGA output.
It'd be nice to have a way use a variable name with multiple bits in it. (E.g., a3, a2, a1, a0 as the four bits of a). The view of a truth table could then switch between binary, octal or hex.
If you push enter, it should support multiple lines.
It'd be nice to have a web-frontend to logisim. I would imagine that using the Play Framework could help here.
It'd be nice if we can just click on a source and target port on components to connect wires between them. (Rather than having to draw).
Scala is a java compatible language, but with functional goodness.
It'd be nice if these did what we'd expect.
om.cburch.draw.canvas.Canvas and related classes deal with zoomable interfaces, which isn't something we should implement ourselves. Piccolo2D provides a nice framework for doing this for us instead.
It'd be sweet to have that. First step: research java multitouch apis/libraries.
Logisim ships with its website, and includes site generation scripts for it. I don't want to maintain site generation scripts. So, let's use Jekyll to be the web site generator instead; that way, we can copy the web site to the gh-pages branch and get web hosting for this project for free.
Reorganize packages (and classes) around the model, view, and controller design pattern. The code is too convoluted to work with (hence the need for characterization testing).
The model should stay the same, and should be able to be tested independently of view/controllers for other modalities (e.g., swing, command line, web, and android).
Let's add in redo support.
Logisim's file format (and code to handle it) sucks.
The format seems to represent the layout of toolbars on the screen in addition to the circuit. The toolbar layout does not belong in the file (although any libraries it references obviously should be part of the format).
The format as currently implemented exclusively focuses on the layout of components. As in, we can't know if two components are connected to each other without laying out every component and wire first. While layout is important, the logical connection among components is necessary to save in the file, because otherwise there's no way to merge changes among collaborators on a circuit. Each component deserves an identifier and every port on a component deserves an identifier, that way wires connecting components can be clearly identified semantically and then layout is a separate concern.
Using SVG as the layout format with a custom xml vocabulary for describing component connectivity would be ideal, as we could save the layout and only worry about changes to connectivity during merges. XStream would be a much better option. Ideally, the format could be merged with existing merge tools.
The gradle build script doesn't make a Mac OS X app. Carl Burch's ad hoc build script did. Port the build script to work with gradle.
Small with 2 inputs is a reasonable default.
Do we need MRJAdapter? Is it really necessary on the Mac anymore? Try it out. Test removal of MRJAdapter on Mac OS X. If it's not necessary, remove it from the lib folder and the build script.
Currently, Logisim sports a combinational analysis user interface. This should be incorporated directly in the editor for Logisim. Draw a schematic, and you should see its equivalent truth/function table, logic expression, state machine, venn diagram, 7400 breadboard layout, mux configuration, transistor layout, fpga layout, vhdl/verilog source, karnaugh map, etc. Each view should be editable and synchronize with the other views.
Click and drag gates as interaction style (in addition to existing style of select component and click). Be able to drag from the palette and release to desired spot in addition to current behavior.
It'd be nice to have a component that can output audio for the user to hear (a speaker as an output component).
Address the issues suggested here. And here
Show place values under bits/digits, and support octal, hex for input pins.
Logisim has no test suite. It needs a test suite to provide sufficient coverage to serve as a safety net for regressions. Let’s use Approval Tests to generate a characterization test for Logisim before we refactor.
move the zoom in and out buttons from the bottom left to the toolbar with the rest of the commonly used buttons.
The classes aren't commented!
I'd be nice to have a version that works on android devices.
Simple functionality that definitely should be included.
Use SVG to draw components to the screen, to support smooth resizes.
It'd be nice to have Visio-style ability to rotate components.
Pretty much to go with speaker as output device.
Logisim cannot handle multiple errors in a circuit well. It should show a list of errors akin to Eclipse’s error view, with diagnostics (e.g., input/output pin confused).
Logisim cannot play nicely with other formats for describing circuits. It should support exporting and importing Verilog or VHDL code, using comments to annotate placement of components.
There's already some code for exporting to Verilog. It'd be good to see if this still works, and if so, try it out with Icarus Verilog.
For VHDL, there's GHDL
com.cburch.draw.toolbar implements it's own toolkit. Let's just use Swing toolbars instead.
It'd be nice to generate the multiplexer from the combinational analysis module.
Dragging a box to the right would include only the objects/wires that are completely selected, and dragging a box to the left would include anything that is partially within the bounds of the box.
This may be a bit tricky, since the changes are to older versions, but try to merge in changes from the Georgia Tech Edition of Logisim
There's also Logisim-IITD, but I can't seem to find their source code. GPL violation?
Click on the box in the corner, click and drag to resize.
It doesn't seem to be doing anything.
Left by default!
Print output for circuit AND subcircuits into SVG or PDF or both.
Something kinda like GTKWave
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.