NOTE TO ADOPTERS: if you wish to be kept updated on new versions of the SRCTools, or to report bugs, send mail to csdabugs@colorado.edu. CHANGES in version 3.1.0: by Mike Wilson, V. P. Heuring (January 15, 2006) Added the TimeModel timing simulator. ******************************* CHANGES in version 3.0.7: by Shane Neuville, V. P. Heuring (December 8, 2003) Created a release version ******************************* CHANGES in version 3.0.6: by Shane Neuville, V. P. Heuring (November 8, 2003) Recompiled project under Java SDK 1.4.2_02-b03 Made it so bounds checks of .dch, .dc, .dw were unsigned opposed to signed ******************************* CHANGES in version 3.0.4: by Shane Neuville, V. P. Heuring (August 20, 2003) Recompiled under javacc 3.2 and Java SDK 1.4.1. Added an indicator in the assembly window of the cursors current line position. Removed the keyshort cuts for cut, copy, and paste because they were causing multiple pastes to occur. Fixed misc bugs. ******************************* CHANGES in version 3.0.3: by Ross Zwisler, V. P. Heuring (June 8, 2003) Cleaned up build system and added 'build' directory. The makefile in the 'build' directory will create a zip file with the .jar file, all the .txt files (READMEs and Changelog), and all the examples. Added cut, copy and paste functionality to the main simulator window. Fixed the printing mechanism. Added assemble time arithmetic to the assembler. ******************************* CHANGES in version 3.0.2: by Ross Zwisler, V. P. Heuring (January 26, 2003) Removed code that made the cursor a hand when it was over the buttons in the editor. Fixed a bug that prevented the updating of the text fields when the simulator was in decimal mode and the user hit return. Improved the printing system by shifting the image to the middle of the page before printing. Fixed bug that prevented the LC from being incremented correctly when dealing with text constants. Simplified the makefile. Fixed bug concerning output given when the user assembles from the command line. The code for this version can be checked out of CVS by using the SRCTOOLS_3_0_2 tag. ******************************* CHANGES in version 3.0.0: by Ross Zwisler, V. P. Heuring (October 17, 2002) The parser was completely rewritten using the visitor design pattern, and integrated into the existing simulator. The simulator files have been seperated into two different packages: GUI and Simulator. The files in the GUI package are responsible for handling the graphical representation of the simulator, while the files in the Simluator package are responsible for actually simulating the machine (PC, memory, instruction interpretation, etc). Additional javadoc comments were added in various places, and unused code was removed. The directory structure of the source files was altered to conform to Java requirements. (directory structure must mirror package structure) Makefiles were added in order to facilitate compilation on a Unix system. ******************************* CHANGES in version 2.1.0: by Ross Zwisler, V. P. Heuring (Apr. 12, 2002) Bug fixes: 1. Keyboard status port (CICTL) and keyboard data port (CIN) now update when user makes a keystroke (Message area must be in focus). 2. Contents of keyboard status port no longer clear when they are displayed in the memory window. ******************************* CHANGES in version 2.1.0: by Bob Kanick, V. P. Heuring (Jan. 12, 2001) Version 2.1.0 incorporates Console Input via the Keyboard and output via the Text Message Area at the bottom of the simulator. (NOTE that the user must click in the Message Area to give it focus before keystrokes will be recognized.) One new feature, the implementation of exceptions, has not been at all well-tested. If it is at all buggy I will provide a release that disables the feature, though the Console I/O will still be available by the usual polling method. Bug Fixes: 1. Hexadecimal values of the form "0xXXXX" are now interpreted appropriately in all contexts. 2. Corrected several bugs associated with the disassembly of binary instructions that caused extraneous or erroneous register values to be displayed for the "br" and "brl" instructions. 3. Corrected a bug that prevented signed integers being used with the "lar", "str", and "ldr" instructions. New Features: 1. Programmed I/O is now possible by reading and updating the keyboard and "printer" status or I/O registers per the CSD&A text (see section 8.2.2 and the example program "typewriter.asm"). The keyboard is recognized only when attempting to type in the text area at the bottom of the GUI. If the appropriate code is given, the characters will be "printed" to the text area. 2. Interrupt-driven I/O is also now possible per the CSD&A text (see section 8.3 and example program "typewriter_by_exception.asm"). Users must check the "Allow Exceptions" checkbox to enable this feature. Checking the checkbox will add a new 1-bit text field entitled IE, the Interrupt Enable flag. It will also add two gray boxes at the top left of the simulator window entitled "ireq" and "iack" that monitor the state of the ireq and iack signal lines. These boxes momentarily change color to red and blue respectively to indicate that the signal is active. NOTE: THIS FEATURE HAS NOT BEEN WELL TESTED. Please report bugs! An option now appears on the GUI that puts the GUI in the "SRC with exceptions" mode. When selected, a panel appears below the PC with the various I/O related memory locations and indicators. When properly enabled, a key pressed in the text area of the GUI will cause an interrupt. Execution will then be transferred to the specified interrupt service routine. Note that this simulation is time-consuming and keys cannot be pressed in rapid succession without a loss of some keystrokes. 3. Hexadecimal values of the form "xxxxH" or "xxxxh" are now recognized. 4. Semantic error messages are now output to the .lst file immediately after the line where the error occurred. Therefore, although assembly may have failed, a .lst file will be created showing all semantic errors. Parse errors are still identified one at a time. 5. String literals between double quotes may now be entered using the .dc, .dcb, and .dch pseudo-ops. An instruction of the form: .dc "this is a string" will initialize a word of memory for each character between the first and last double quote found. Using the .dcb or .dch pseudo-ops will initialize bytes and words with each character respectively. 6. Added an option to the SRC GUI to select whether or not the simulator registers and instructions are updated during execution. This only has an effect in RUN mode. 7. Label constants can now be used everywhere where logically expected. 8. Restored the functionality from earlier versions that allows assembling or disassembling SRC instructions from the command line (outside the GUI). For example, for assembly type: java -classpath SRCTools.jar SRCToolsSRCAsm filename.asm and for disassembly type: java -classpath SRCTools.jar SRCToolsSRCDisAsm filename.bin Known problems: 1. The "iack" and "ireq" text used in the interrupt indicator lights will not update correctly on Sun workstations running Java Virtual Machines (JVMs) earlier than version 1.1.7. Consequently the fields may go blank during interrupt processing. 2. When using I/O, the user must type SLOWLY or the processor cannot keep up. 3. User programs can change the device ready flags. This should not be possible. ******************************* CHANGES in version 1.3: by Bob Kanick (May 10, 2000) Bug Fixes: 1. The .dcb and .dch pseudo-ops now correctly initialize memory and correctly write to the binary file. 2. The assembler now catches invalid operands to the .dc pseudo. 3. Corrected numerous bugs related to the accepting and outputting of negative numbers. Negative numbers can now be used in all commands (e.g., addi, la, andi, ori, etc.). Negative numbers can also be input directly into the simulator. New Features: 1. Added the "brnv" opcode. 2. The .lst file is now fully formatted to ease readability. 3. The loader no longer writes a termination string "f8000000" at the end of loaded memory. 4. Widened the register and memory fields in the simulator. Known problems: 1. Labels cannot be used with the pseudo-ops. 2. Error reporting is poor (often only line number is identified). ******************************* CHANGES in version 1.21: (Feb. 14, 2000) New Features: 1. adds the .dc opcode. 2. the program will start at the label "main:" in a way similar to C. Known problems: 1. The assembler does not catch invalid operands to the .dc pseudo. 2. brnv is not recognized as a valid opcode. 3. la and lar do not accept negative operands such as "-1". Workaround: use .equ: Minus1: .equ - 1 la r0, Minus1 ******************************* Changes in version 1.08: This version adds an integrated editor and several new command buttons. There is a change in the command line invocation of V1.08. java -classpath DirPathTo/SRCTools.jar SRCTools.SRCSim (PC and Unix) ^^^^^^^^^^^^^^^ (Changed)