also use output path when launching emulator, fixes #61

This commit is contained in:
Irmen de Jong 2021-10-11 00:18:18 +02:00
parent 5db0408b9f
commit 7a33eb163b
4 changed files with 14 additions and 9 deletions

View File

@ -127,10 +127,12 @@ private fun compileMain(args: Array<String>): 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)
}
}

View File

@ -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<String>
fun launchEmulator(selectedEmulator: Int, programName: String)
fun launchEmulator(selectedEmulator: Int, programNameWithPath: Path)
fun isRegularRAMaddress(address: Int): Boolean
}

View File

@ -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 {

View File

@ -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<String>
@ -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 {