diff --git a/compiler/src/prog8/CompilerMain.kt b/compiler/src/prog8/CompilerMain.kt index a9027a4b0..0eb770d7d 100644 --- a/compiler/src/prog8/CompilerMain.kt +++ b/compiler/src/prog8/CompilerMain.kt @@ -127,10 +127,12 @@ private fun compileMain(args: Array): Boolean { } } + val programNameInPath = outputPath.resolve(compilationResult.programName) + if (startEmulator1==true) - compilationResult.compTarget.machine.launchEmulator(1, compilationResult.programName) + compilationResult.compTarget.machine.launchEmulator(1, programNameInPath) else if (startEmulator2==true) - compilationResult.compTarget.machine.launchEmulator(2, compilationResult.programName) + compilationResult.compTarget.machine.launchEmulator(2, programNameInPath) } } diff --git a/compiler/src/prog8/compiler/target/IMachineDefinition.kt b/compiler/src/prog8/compiler/target/IMachineDefinition.kt index ed7903238..b80555b78 100644 --- a/compiler/src/prog8/compiler/target/IMachineDefinition.kt +++ b/compiler/src/prog8/compiler/target/IMachineDefinition.kt @@ -2,6 +2,7 @@ package prog8.compiler.target import prog8.compiler.CompilationOptions import prog8.compiler.Zeropage +import java.nio.file.Path interface IMachineFloat { @@ -32,6 +33,6 @@ interface IMachineDefinition { fun getFloat(num: Number): IMachineFloat fun importLibs(compilerOptions: CompilationOptions, compilationTargetName: String): List - fun launchEmulator(selectedEmulator: Int, programName: String) + fun launchEmulator(selectedEmulator: Int, programNameWithPath: Path) fun isRegularRAMaddress(address: Int): Boolean } diff --git a/compiler/src/prog8/compiler/target/c64/C64MachineDefinition.kt b/compiler/src/prog8/compiler/target/c64/C64MachineDefinition.kt index 5f340f9b3..c2126bfb4 100644 --- a/compiler/src/prog8/compiler/target/c64/C64MachineDefinition.kt +++ b/compiler/src/prog8/compiler/target/c64/C64MachineDefinition.kt @@ -6,6 +6,7 @@ import prog8.compiler.target.IMachineDefinition import prog8.compiler.target.IMachineFloat import prog8.compiler.target.cbm.viceMonListPostfix import java.io.IOException +import java.nio.file.Path import kotlin.math.absoluteValue import kotlin.math.pow @@ -36,7 +37,7 @@ internal object C64MachineDefinition: IMachineDefinition { emptyList() } - override fun launchEmulator(selectedEmulator: Int, programName: String) { + override fun launchEmulator(selectedEmulator: Int, programNameWithPath: Path) { if(selectedEmulator!=1) { System.err.println("The c64 target only supports the main emulator (Vice).") return @@ -44,8 +45,8 @@ internal object C64MachineDefinition: IMachineDefinition { for(emulator in listOf("x64sc", "x64")) { println("\nStarting C-64 emulator $emulator...") - val cmdline = listOf(emulator, "-silent", "-moncommands", "$programName.$viceMonListPostfix", - "-autostartprgmode", "1", "-autostart-warp", "-autostart", "$programName.prg") + val cmdline = listOf(emulator, "-silent", "-moncommands", "${programNameWithPath}.$viceMonListPostfix", + "-autostartprgmode", "1", "-autostart-warp", "-autostart", "${programNameWithPath}.prg") val processb = ProcessBuilder(cmdline).inheritIO() val process: Process try { diff --git a/compiler/src/prog8/compiler/target/cx16/CX16MachineDefinition.kt b/compiler/src/prog8/compiler/target/cx16/CX16MachineDefinition.kt index 0be7ec371..eac34edaf 100644 --- a/compiler/src/prog8/compiler/target/cx16/CX16MachineDefinition.kt +++ b/compiler/src/prog8/compiler/target/cx16/CX16MachineDefinition.kt @@ -6,6 +6,7 @@ import prog8.compiler.target.IMachineDefinition import prog8.compiler.target.c64.C64MachineDefinition import prog8.compiler.target.cbm.viceMonListPostfix import java.io.IOException +import java.nio.file.Path internal object CX16MachineDefinition: IMachineDefinition { @@ -33,7 +34,7 @@ internal object CX16MachineDefinition: IMachineDefinition { emptyList() } - override fun launchEmulator(selectedEmulator: Int, programName: String) { + override fun launchEmulator(selectedEmulator: Int, programNameWithPath: Path) { val emulatorName: String val extraArgs: List @@ -44,7 +45,7 @@ internal object CX16MachineDefinition: IMachineDefinition { } 2 -> { emulatorName = "box16" - extraArgs = listOf("-sym", "$programName.$viceMonListPostfix") + extraArgs = listOf("-sym", "${programNameWithPath}.$viceMonListPostfix") } else -> { System.err.println("Cx16 target only supports x16emu and box16 emulators.") @@ -54,7 +55,7 @@ internal object CX16MachineDefinition: IMachineDefinition { for(emulator in listOf(emulatorName)) { println("\nStarting Commander X16 emulator $emulator...") - val cmdline = listOf(emulator, "-scale", "2", "-run", "-prg", "$programName.prg") + extraArgs + val cmdline = listOf(emulator, "-scale", "2", "-run", "-prg", "${programNameWithPath}.prg") + extraArgs val processb = ProcessBuilder(cmdline).inheritIO() val process: Process try {