[-] Remove delayed splash, copyright printing

This commit is contained in:
Hykilpikonna
2022-11-10 14:01:00 -05:00
parent 58cc81c6fd
commit 9f09137b3e
+26 -68
View File
@@ -82,10 +82,10 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
class MarsLaunch(args: Array<String>) class MarsLaunch(args: Array<String>)
{ {
private var simulate = true private var simulate = true
private var displayFormat = 0 private var displayFormat = HEXADECIMAL
// display register name or address along with contents // display register name or address along with contents
private var verbose = false private var verbose = true
// assemble only the given file or all files in its directory // assemble only the given file or all files in its directory
private var assembleProject = false private var assembleProject = false
@@ -107,13 +107,21 @@ class MarsLaunch(args: Array<String>)
// Whether to allow self-modifying code (e.g. write to text segment) // Whether to allow self-modifying code (e.g. write to text segment)
private var selfModifyingCode = false private var selfModifyingCode = false
private var instructionCount = 0
// MARS command exit code to return if assemble error occurs
private var assembleErrorExitCode = 0
// MARS command exit code to return if simulation error occurs
private var simulateErrorExitCode = 0
private var registerDisplayList: ArrayList<String>? = null private var registerDisplayList: ArrayList<String> = ArrayList()
private var memoryDisplayList: ArrayList<String>? = null private var memoryDisplayList: ArrayList<String> = ArrayList()
private var filenameList: ArrayList<String>? = null private var filenameList: ArrayList<String> = ArrayList()
private var code: MIPSprogram? = null private var code: MIPSprogram? = null
private var maxSteps = 0 private var maxSteps = 0
private var instructionCount = 0
// stream for display of command line output // stream for display of command line output
private var out: PrintStream = System.out private var out: PrintStream = System.out
@@ -123,12 +131,6 @@ class MarsLaunch(args: Array<String>)
// optional program args for MIPS program (becomes argc, argv) // optional program args for MIPS program (becomes argc, argv)
private var programArgumentList: ArrayList<String>? = null private var programArgumentList: ArrayList<String>? = null
// MARS command exit code to return if assemble error occurs
private var assembleErrorExitCode = 0
// MARS command exit code to return if simulation error occurs
private var simulateErrorExitCode = 0
init init
{ {
@@ -143,22 +145,6 @@ class MarsLaunch(args: Array<String>)
// running from command line. // running from command line.
// assure command mode works in headless environment (generates exception if not) // assure command mode works in headless environment (generates exception if not)
System.setProperty("java.awt.headless", "true") System.setProperty("java.awt.headless", "true")
simulate = true
displayFormat = HEXADECIMAL
verbose = true
assembleProject = false
pseudo = true
delayedBranching = false
warningsAreErrors = false
startAtMain = false
countInstructions = false
selfModifyingCode = false
instructionCount = 0
assembleErrorExitCode = 0
simulateErrorExitCode = 0
registerDisplayList = ArrayList()
memoryDisplayList = ArrayList()
filenameList = ArrayList()
MemoryConfigurations.setCurrentConfiguration(MemoryConfigurations.getDefaultConfiguration()) MemoryConfigurations.setCurrentConfiguration(MemoryConfigurations.getDefaultConfiguration())
// do NOT use Globals.program for command line MARS -- it triggers 'backstep' log. // do NOT use Globals.program for command line MARS -- it triggers 'backstep' log.
code = MIPSprogram() code = MIPSprogram()
@@ -267,12 +253,11 @@ class MarsLaunch(args: Array<String>)
// Returns true if command args parse OK, false otherwise. // Returns true if command args parse OK, false otherwise.
private fun parseCommandArgs(args: Array<String>): Boolean private fun parseCommandArgs(args: Array<String>): Boolean
{ {
val noCopyrightSwitch = "nc"
val displayMessagesToErrSwitch = "me" val displayMessagesToErrSwitch = "me"
var argsOK = true var argsOK = true
var inProgramArgumentList = false var inProgramArgumentList = false
programArgumentList = null programArgumentList = null
if (args.size == 0) if (args.isEmpty())
{ {
return true // should not get here... return true // should not get here...
} }
@@ -280,7 +265,6 @@ class MarsLaunch(args: Array<String>)
// it must be processed before any others (since messages may be // it must be processed before any others (since messages may be
// generated during option parsing). // generated during option parsing).
processDisplayMessagesToErrSwitch(args, displayMessagesToErrSwitch) processDisplayMessagesToErrSwitch(args, displayMessagesToErrSwitch)
displayCopyright(args, noCopyrightSwitch) // ..or not..
if (args.size == 1 && args[0] == "h") if (args.size == 1 && args[0] == "h")
{ {
displayHelp() displayHelp()
@@ -316,12 +300,6 @@ class MarsLaunch(args: Array<String>)
i++ i++
continue continue
} }
// no-copyright switch already processed, so ignore.
if (args[i].lowercase(Locale.getDefault()) == noCopyrightSwitch)
{
i++
continue
}
if (args[i].equals("dump", ignoreCase = true)) if (args[i].equals("dump", ignoreCase = true))
{ {
if (args.size <= i + 3) if (args.size <= i + 3)
@@ -479,7 +457,7 @@ class MarsLaunch(args: Array<String>)
out.println("Invalid Register Name: " + args[i]) out.println("Invalid Register Name: " + args[i])
} else } else
{ {
registerDisplayList!!.add(args[i]) registerDisplayList.add(args[i])
} }
i++ i++
continue continue
@@ -489,7 +467,7 @@ class MarsLaunch(args: Array<String>)
Coprocessor1.getRegister("$" + args[i]) != null Coprocessor1.getRegister("$" + args[i]) != null
) )
{ {
registerDisplayList!!.add("$" + args[i]) registerDisplayList.add("$" + args[i])
i++ i++
continue continue
} }
@@ -513,8 +491,8 @@ class MarsLaunch(args: Array<String>)
try try
{ {
val memoryRange = checkMemoryAddressRange(args[i]) val memoryRange = checkMemoryAddressRange(args[i])
memoryDisplayList!!.add(memoryRange!![0]) // low end of range memoryDisplayList.add(memoryRange!![0]) // low end of range
memoryDisplayList!!.add(memoryRange[1]) // high end of range memoryDisplayList.add(memoryRange[1]) // high end of range
i++ i++
continue continue
} catch (nfe: NumberFormatException) } catch (nfe: NumberFormatException)
@@ -540,7 +518,7 @@ class MarsLaunch(args: Array<String>)
private fun runCommand(): Boolean private fun runCommand(): Boolean
{ {
var programRan = false var programRan = false
if (filenameList!!.size == 0) if (filenameList.size == 0)
{ {
return programRan return programRan
} }
@@ -549,16 +527,16 @@ class MarsLaunch(args: Array<String>)
Globals.getSettings().setBooleanSettingNonPersistent(Settings.DELAYED_BRANCHING_ENABLED, delayedBranching) Globals.getSettings().setBooleanSettingNonPersistent(Settings.DELAYED_BRANCHING_ENABLED, delayedBranching)
Globals.getSettings() Globals.getSettings()
.setBooleanSettingNonPersistent(Settings.SELF_MODIFYING_CODE_ENABLED, selfModifyingCode) .setBooleanSettingNonPersistent(Settings.SELF_MODIFYING_CODE_ENABLED, selfModifyingCode)
val mainFile = File(filenameList!![0]).absoluteFile // First file is "main" file val mainFile = File(filenameList[0]).absoluteFile // First file is "main" file
val filesToAssemble: ArrayList<*> val filesToAssemble: ArrayList<*>
if (assembleProject) if (assembleProject)
{ {
filesToAssemble = FilenameFinder.getFilenameList(mainFile.parent, Globals.fileExtensions) filesToAssemble = FilenameFinder.getFilenameList(mainFile.parent, Globals.fileExtensions)
if (filenameList!!.size > 1) if (filenameList.size > 1)
{ {
// Using "p" project option PLUS listing more than one filename on command line. // Using "p" project option PLUS listing more than one filename on command line.
// Add the additional files, avoiding duplicates. // Add the additional files, avoiding duplicates.
filenameList!!.removeAt(0) // first one has already been processed filenameList.removeAt(0) // first one has already been processed
val moreFilesToAssemble = val moreFilesToAssemble =
FilenameFinder.getFilenameList(filenameList, FilenameFinder.MATCH_ALL_EXTENSIONS) FilenameFinder.getFilenameList(filenameList, FilenameFinder.MATCH_ALL_EXTENSIONS)
// Remove any duplicates then merge the two lists. // Remove any duplicates then merge the two lists.
@@ -726,7 +704,7 @@ class MarsLaunch(args: Array<String>)
var strValue: String var strValue: String
// Display requested register contents // Display requested register contents
out.println() out.println()
val regIter: Iterator<String> = registerDisplayList!!.iterator() val regIter: Iterator<String> = registerDisplayList.iterator()
while (regIter.hasNext()) while (regIter.hasNext())
{ {
val reg = regIter.next() val reg = regIter.next()
@@ -752,7 +730,7 @@ class MarsLaunch(args: Array<String>)
dvalue = Coprocessor1.getDoubleFromRegisterPair(reg) dvalue = Coprocessor1.getDoubleFromRegisterPair(reg)
lvalue = Coprocessor1.getLongFromRegisterPair(reg) lvalue = Coprocessor1.getLongFromRegisterPair(reg)
hasDouble = true hasDouble = true
} catch (irae: InvalidRegisterAccessException) } catch (_: InvalidRegisterAccessException)
{ {
} }
if (verbose) if (verbose)
@@ -839,7 +817,7 @@ class MarsLaunch(args: Array<String>)
{ // This will succeed; error would have been caught during command arg parse { // This will succeed; error would have been caught during command arg parse
addressStart = Binary.stringToInt(memIter.next().toString()) addressStart = Binary.stringToInt(memIter.next().toString())
addressEnd = Binary.stringToInt(memIter.next().toString()) addressEnd = Binary.stringToInt(memIter.next().toString())
} catch (nfe: NumberFormatException) } catch (_: NumberFormatException)
{ {
} }
var valuesDisplayed = 0 var valuesDisplayed = 0
@@ -897,25 +875,6 @@ class MarsLaunch(args: Array<String>)
} }
} }
///////////////////////////////////////////////////////////////////////
// Decide whether copyright should be displayed, and display
// if so.
private fun displayCopyright(args: Array<String>, noCopyrightSwitch: String)
{
val print = true
for (i in args.indices)
{
if (args[i].lowercase(Locale.getDefault()) == noCopyrightSwitch)
{
return
}
}
out.println(
"""MARS ${Globals.version} Copyright ${Globals.copyrightYears} ${Globals.copyrightHolders}
"""
)
}
/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
// Display command line help text // Display command line help text
private fun displayHelp() private fun displayHelp()
@@ -965,7 +924,6 @@ class MarsLaunch(args: Array<String>)
out.println(" memory with text segment at address 0.") out.println(" memory with text segment at address 0.")
out.println(" me -- display MARS messages to standard err instead of standard out. ") out.println(" me -- display MARS messages to standard err instead of standard out. ")
out.println(" Can separate messages from program output using redirection") out.println(" Can separate messages from program output using redirection")
out.println(" nc -- do not display copyright notice (for cleaner redirected/piped output).")
out.println(" np -- use of pseudo instructions and formats not permitted") out.println(" np -- use of pseudo instructions and formats not permitted")
out.println(" p -- Project mode - assemble all files in the same directory as given file.") out.println(" p -- Project mode - assemble all files in the same directory as given file.")
out.println(" se<n> -- terminate MARS with integer exit code <n> if a simulation (run) error occurs.") out.println(" se<n> -- terminate MARS with integer exit code <n> if a simulation (run) error occurs.")