Skip to content

Commit

Permalink
Initial Commit
Browse files Browse the repository at this point in the history
  • Loading branch information
dadler64 committed Nov 9, 2019
0 parents commit 74fad50
Show file tree
Hide file tree
Showing 870 changed files with 95,530 additions and 0 deletions.
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Folders
/out
/.idea
/target
/src/test

# Build Files
dependency-reduced-pom.xml

# Project Files
*.iml
*.circ
674 changes: 674 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

75 changes: 75 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<!-- HEADER -->
<h1 align="center">
<br>
<a href=""><img src="src/main/resources/logisim/img/logisim-icon-128.png" alt="Logisim Icon"></a>
<br>
Logisim
<br>
</h1>

<h4 align="center">A backup of the original Logisim circuit simulator.</h4>


<!-- SHIELDS -->
<p align="center">
<!-- Issues -->
<a href="https://img.shields.io/github/issues/dadler64/Logisim">
<img src="https://img.shields.io/github/issues/dadler64/Logisim.svg"
alt="Logisim Issues">
</a>
<!-- License -->
<a href="https://img.shields.io/github/license/dadler64/Logisim">
<img src="https://img.shields.io/github/license/dadler64/Logisim.svg"
alt="Logisim License">
</a>
<!-- Codacy Grade -->

</p>

<!-- LINKS -->
<p align="center">
<a href="#about">About</a> •
<a href="#features">Features</a> •
<a href="#how-to-use">How To Use</a> •
<a href="#contributing">Contributing</a>
</p>

<!-- SCREENSHOT -->
<!-- <h4 align="center">
<br>
<a href=""><img src="src/main/resources/github/screenshot_v273.png" alt="Logisim Screenshot"></a>
<br>
Screenshot of Logisim v2.7.3 running on Windows
<br>
</h4> -->

## About

This is a backup of the original Logisim source code which can be found on the original [Logisim website](http://www.cburch.com/logisim/).

Logisim is an educational tool for designing and simulating digital logic circuits. With its simple toolbar interface and simulation of circuits as you build them, it is simple enough to facilitate learning the most basic concepts related to logic circuits. With the capacity to build larger circuits from smaller subcircuits, and to draw bundles of wires with a single mouse drag, Logisim can be used (and is used) to design and simulate entire CPUs for educational purposes.

Logisim is used by students at colleges and universities around the world in many types of classes, ranging from a brief unit on logic in general-education computer science surveys, to computer organization courses, to full-semester courses on computer architecture.

This is a continuation of the original project since original development was ceased in October of 2014.

## Features

* It runs on any machine supporting Java 8 or later; special versions are to be released later for MacOS X, Linux, and Windows. The cross-platform nature is important for students who have a variety of home/dorm computer systems.
* The drawing interface is based on an intuitive toolbar. Color-coded wires aid in simulating and debugging a circuit.
* The wiring tool draws horizontal and vertical wires, automatically connecting to components and to other wires. It's very easy to draw circuits!
* Completed circuits can be saved into a file, exported to a GIF file, or printed on a printer.
* Circuit layouts can be used as "subcircuits" of other circuits, allowing for hierarchical circuit design.
* Included circuit components include inputs and outputs, gates, multiplexers, arithmetic circuits, flip-flops, and RAM memory.
* The included "combinational analysis" module allows for conversion between circuits, truth tables, and Boolean expressions.

See the [Features Status page]() on the project Wiki for information about the status of the above features as well as any additional plans for features

## How To Use
This project is a WIP and is not currently building correctly (see the [issues](https://github.com/dadler64/Logisim/issues)) so I recommend going to the original [Logisim website](http://www.cburch.com/logisim/) and downloading it from there until the bulds here are up and running.

If you want to try your hand at running or building what is here, import the project into an IDE such as IntelliJ IDEA and build it in there using the build system provided.

## Contributing

For now if you would like to contribute check out any open [issues](https://github.com/dadler64/Logisim/issues) which could be resolved.
Binary file added libs/MRJAdapter.jar
Binary file not shown.
Binary file added libs/colorpicker.jar
Binary file not shown.
Binary file added libs/fontchooser.jar
Binary file not shown.
Binary file added libs/jh.jar
Binary file not shown.
143 changes: 143 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<artifactId>Logisim</artifactId>

<build>
<plugins>

<!-- Maven Compiler Plugin -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
<executions>
<!-- Replacing default-compile as it is treated specially by maven -->
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<execution>
<goals>
<goal>compile</goal>
</goals>
<id>compile</id>
<phase>compile</phase>
</execution>
<execution>
<goals>
<goal>testCompile</goal>
</goals>
<id>testCompile</id>
<phase>test-compile</phase>
</execution>
</executions>
<groupId>org.apache.maven.plugins</groupId>
<version>3.8.1</version>
</plugin>

<plugin>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>${main.class}</Main-Class>
<!-- <Build-Number>000</Build-Number>-->
</manifestEntries>
</transformer>
</transformers>
</configuration>
<goals>
<goal>shade</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<groupId>org.apache.maven.plugins</groupId>
<version>3.2.1</version>
</plugin>

<plugin>
<artifactId>launch4j-maven-plugin</artifactId>
<executions>
<execution>
<configuration>
<classPath>
<mainClass>${main.class}</mainClass>
<preCp>anything</preCp>
</classPath>
<downloadUrl>http://java.com/download</downloadUrl>
<headerType>gui</headerType>
<icon>${icon.windows}</icon>
<jar>
${project.build.directory}/${project.artifactId}-${project.version}.jar
</jar>
<jre>
<jdkPreference>preferJre</jdkPreference>
<minVersion>1.8.0</minVersion>
</jre>
<outfile>${project.build.directory}/${project.artifactId}-${project.version}.exe
</outfile>
<versionInfo>
<companyName>${project.artifactId}</companyName>
<copyright>2019 Dan Adler</copyright>
<fileDescription>${project.name}</fileDescription>
<fileVersion>${project.version}.0</fileVersion>
<internalName>${project.artifactId}</internalName>
<originalFilename>${project.artifactId}.exe</originalFilename>
<productName>${project.name}</productName>
<productVersion>${project.version}.0</productVersion>
<txtFileVersion>${project.version}.0</txtFileVersion>
<txtProductVersion>${project.version}.0</txtProductVersion>
</versionInfo>
</configuration>
<goals>
<goal>launch4j</goal>
</goals>
<id>l4j-clui</id>
<phase>package</phase>
</execution>
</executions>
<groupId>com.akathist.maven.plugins.launch4j</groupId>
<version>1.7.25</version>
</plugin>
</plugins>
<sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>

<testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>

</build>
<description>Continuation on the Logisim circuit simulator.</description>
<groupId>com.cburch.logisim</groupId>

<licenses>
<license>
<name>GNU General Public License, Version 3.0</name>
<url>https://www.gnu.org/licenses/gpl-3.0.html</url>
</license>
</licenses>
<modelVersion>4.0.0</modelVersion>
<name>Logisim</name>

<properties>
<icon.windows>src/main/resources/logisim/img/logisim-icon.ico</icon.windows>
<main.class>com.cburch.logisim.Main</main.class>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<url>https://github.com/dadler64/Logisim</url>

<version>2.7.3</version>

</project>
53 changes: 53 additions & 0 deletions src/main/java/com/cburch/draw/actions/ModelAction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/* Copyright (c) 2010, Carl Burch. License information is located in the
* com.cburch.logisim.Main source code and at www.cburch.com/logisim/. */

package com.cburch.draw.actions;

import com.cburch.draw.model.CanvasModel;
import com.cburch.draw.model.CanvasObject;
import com.cburch.draw.undo.Action;
import java.util.Collection;
import java.util.Collections;

public abstract class ModelAction extends Action {

private CanvasModel model;

public ModelAction(CanvasModel model) {
this.model = model;
}

static String getShapesName(Collection<CanvasObject> coll) {
if (coll.size() != 1) {
return Strings.get("shapeMultiple");
} else {
CanvasObject shape = coll.iterator().next();
return shape.getDisplayName();
}
}

public Collection<CanvasObject> getObjects() {
return Collections.emptySet();
}

@Override
public abstract String getName();

abstract void doSub(CanvasModel model);

abstract void undoSub(CanvasModel model);

@Override
public final void doIt() {
doSub(model);
}

@Override
public final void undo() {
undoSub(model);
}

public CanvasModel getModel() {
return model;
}
}
57 changes: 57 additions & 0 deletions src/main/java/com/cburch/draw/actions/ModelAddAction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/* Copyright (c) 2010, Carl Burch. License information is located in the
* com.cburch.logisim.Main source code and at www.cburch.com/logisim/. */

package com.cburch.draw.actions;

import com.cburch.draw.model.CanvasModel;
import com.cburch.draw.model.CanvasObject;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;

public class ModelAddAction extends ModelAction {

private ArrayList<CanvasObject> added;
private int addIndex;

public ModelAddAction(CanvasModel model, CanvasObject added) {
this(model, Collections.singleton(added));
}

public ModelAddAction(CanvasModel model, Collection<CanvasObject> added) {
super(model);
this.added = new ArrayList<CanvasObject>(added);
this.addIndex = model.getObjectsFromBottom().size();
}

public ModelAddAction(CanvasModel model, Collection<CanvasObject> added,
int index) {
super(model);
this.added = new ArrayList<CanvasObject>(added);
this.addIndex = index;
}

public int getDestinationIndex() {
return addIndex;
}

@Override
public Collection<CanvasObject> getObjects() {
return Collections.unmodifiableList(added);
}

@Override
public String getName() {
return Strings.get("actionAdd", getShapesName(added));
}

@Override
void doSub(CanvasModel model) {
model.addObjects(addIndex, added);
}

@Override
void undoSub(CanvasModel model) {
model.removeObjects(added);
}
}
Loading

0 comments on commit 74fad50

Please sign in to comment.