Please make sure you have the latest version of the JDK installed. You can use
java -version on the command line to see. Make sure it’s at LEAST 1.9 or 10.0. (Yeah. They changed their version numbering at some point.)
You can install the JRE from this link. Pick the Java SE JDK 11 or 13. Do not get the Java 8 JRE.
I have made changes to both programs to improve usability and fix bugs. Please download and use my versions instead of the ones listed on their respective websites.
This is the MIPS simulator we’ll be using for the first half of the course.
Here’s a newer version that should hopefully fix two bugs: the really delayed MIDI notes, and being unable to stop the program if the sleep syscall (32) is given a large duration.
First, try double-clicking the JAR file. This works for a lot of people.
If it doesn’t, go into your terminal/command line, and do the following:
cdto the directory where you have the JAR file.
- run this:
java -jar Mars_2201_1025.jar
- try typing
java -jar Marsand then hit the Tab key. It will complete the filename for you.
- try typing
If you get an error saying this:
java.lang.UnsupportedClassVersionError: Mars has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 53.0
Then you need to both install the newest JRE and uninstall the old version of Java.
If you get some other error, please let me know and show me the exact error you get.
Changes to MARS
- Adds the “Keypad and LED Display Simulator” tool which you will be using for your project (and some of the labs)
- Allows you to write registers without the dollar signs
- Looks much more reasonable
- Fixes display order of ASCII strings in memory view
- Added “Clear Run IO on Assemble” setting
- Other tiny UI improvements
- Removes several la pseudo-ops which confused everyone
- Added push/pop pseudo-ops so macros are no longer needed
- Makes it possible to write destination on the left in stores
- Assembler gives an error if it finds instructions in the data segment - no more forgetting .text
- Added binary number literals, like 0b100101
- Sets the default settings to something more reasonable
- If you have “Initialize PC to global main” enabled, but don’t have a global main, it will now give an error
- Fixed bug where single-stepping would cause execution to really slow down
- Changed some syscalls (time, random, some input ones) so that they return their results in
a0for some bizarre reason
This is the new version with the bugs fixed! See the green things in the changes below for what’s new.
Changes to Logisim
- Backwards-compatible changes:
- Tunnels will appear “ghosted” if they have no partners (unconnected to anything).
- Tunnels can be color-coded.
- Plexers default to NOT having an enable input.
- Multi-bit wires with unknown values now display blue, instead of black.
- Duplicate/paste put the copied components at the mouse cursor, where they can be placed wherever the user wants.
- Displays Logisim icon in taskbar on modern OSes.
- Now clearer when you are viewing an embedded subcircuit’s state vs. the subcircuit’s prototype.
- Added an icon in the toolbar that shows whether simulation is enabled (green triangle) or not (red square).
- Non-backwards-compatible changes:
- Gates default to narrow with 2 inputs. (Sometimes this breaks old circuits)
- No more asynchronous 0 clear on registers.
- When duplicated, tunnels no longer stack up on themselves (they are offset like everything else).
- When editing labels with the text tool, arrow/home/end keys no longer scroll the canvas.
- Mac-specific bugfixes:
- Exits when closing last window.
- Confirms save on exit, as Logisim was using an old method of detecting that which breaks on newer versions of macOS/Java.
- Fixed Cmd+K/Cmd+E shortcuts (they were being run twice due to a bug in Swing).
- Title now displays as “Logisim” instead of “Main”.