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) if (startEmulator1==true)
compilationResult.compTarget.machine.launchEmulator(1, compilationResult.programName) compilationResult.compTarget.machine.launchEmulator(1, programNameInPath)
else if (startEmulator2==true) 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.CompilationOptions
import prog8.compiler.Zeropage import prog8.compiler.Zeropage
import java.nio.file.Path
interface IMachineFloat { interface IMachineFloat {
@ -32,6 +33,6 @@ interface IMachineDefinition {
fun getFloat(num: Number): IMachineFloat fun getFloat(num: Number): IMachineFloat
fun importLibs(compilerOptions: CompilationOptions, compilationTargetName: String): List<String> 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 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.IMachineFloat
import prog8.compiler.target.cbm.viceMonListPostfix import prog8.compiler.target.cbm.viceMonListPostfix
import java.io.IOException import java.io.IOException
import java.nio.file.Path
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
import kotlin.math.pow import kotlin.math.pow
@ -36,7 +37,7 @@ internal object C64MachineDefinition: IMachineDefinition {
emptyList() emptyList()
} }
override fun launchEmulator(selectedEmulator: Int, programName: String) { override fun launchEmulator(selectedEmulator: Int, programNameWithPath: Path) {
if(selectedEmulator!=1) { if(selectedEmulator!=1) {
System.err.println("The c64 target only supports the main emulator (Vice).") System.err.println("The c64 target only supports the main emulator (Vice).")
return return
@ -44,8 +45,8 @@ internal object C64MachineDefinition: IMachineDefinition {
for(emulator in listOf("x64sc", "x64")) { for(emulator in listOf("x64sc", "x64")) {
println("\nStarting C-64 emulator $emulator...") println("\nStarting C-64 emulator $emulator...")
val cmdline = listOf(emulator, "-silent", "-moncommands", "$programName.$viceMonListPostfix", val cmdline = listOf(emulator, "-silent", "-moncommands", "${programNameWithPath}.$viceMonListPostfix",
"-autostartprgmode", "1", "-autostart-warp", "-autostart", "$programName.prg") "-autostartprgmode", "1", "-autostart-warp", "-autostart", "${programNameWithPath}.prg")
val processb = ProcessBuilder(cmdline).inheritIO() val processb = ProcessBuilder(cmdline).inheritIO()
val process: Process val process: Process
try { try {

View File

@ -6,6 +6,7 @@ import prog8.compiler.target.IMachineDefinition
import prog8.compiler.target.c64.C64MachineDefinition import prog8.compiler.target.c64.C64MachineDefinition
import prog8.compiler.target.cbm.viceMonListPostfix import prog8.compiler.target.cbm.viceMonListPostfix
import java.io.IOException import java.io.IOException
import java.nio.file.Path
internal object CX16MachineDefinition: IMachineDefinition { internal object CX16MachineDefinition: IMachineDefinition {
@ -33,7 +34,7 @@ internal object CX16MachineDefinition: IMachineDefinition {
emptyList() emptyList()
} }
override fun launchEmulator(selectedEmulator: Int, programName: String) { override fun launchEmulator(selectedEmulator: Int, programNameWithPath: Path) {
val emulatorName: String val emulatorName: String
val extraArgs: List<String> val extraArgs: List<String>
@ -44,7 +45,7 @@ internal object CX16MachineDefinition: IMachineDefinition {
} }
2 -> { 2 -> {
emulatorName = "box16" emulatorName = "box16"
extraArgs = listOf("-sym", "$programName.$viceMonListPostfix") extraArgs = listOf("-sym", "${programNameWithPath}.$viceMonListPostfix")
} }
else -> { else -> {
System.err.println("Cx16 target only supports x16emu and box16 emulators.") System.err.println("Cx16 target only supports x16emu and box16 emulators.")
@ -54,7 +55,7 @@ internal object CX16MachineDefinition: IMachineDefinition {
for(emulator in listOf(emulatorName)) { for(emulator in listOf(emulatorName)) {
println("\nStarting Commander X16 emulator $emulator...") 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 processb = ProcessBuilder(cmdline).inheritIO()
val process: Process val process: Process
try { try {