From 85897ef8cd443f6484bb0aa705134ec8cec98ae8 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Tue, 6 Jul 2021 22:27:47 +0200 Subject: [PATCH] launch box16 emulator with the vice monlist file that contains symbols+breakpoints --- .../target/c64/C64MachineDefinition.kt | 3 ++- .../compiler/target/cbm/AssemblyProgram.kt | 5 ++++- .../target/cx16/CX16MachineDefinition.kt | 18 ++++++++++++++---- docs/source/todo.rst | 1 - 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/compiler/src/prog8/compiler/target/c64/C64MachineDefinition.kt b/compiler/src/prog8/compiler/target/c64/C64MachineDefinition.kt index 509826464..638d29532 100644 --- a/compiler/src/prog8/compiler/target/c64/C64MachineDefinition.kt +++ b/compiler/src/prog8/compiler/target/c64/C64MachineDefinition.kt @@ -4,6 +4,7 @@ import prog8.compiler.* import prog8.compiler.target.CpuType import prog8.compiler.target.IMachineDefinition import prog8.compiler.target.IMachineFloat +import prog8.compiler.target.cbm.viceMonListPostfix import java.io.IOException import kotlin.math.absoluteValue import kotlin.math.pow @@ -43,7 +44,7 @@ internal object C64MachineDefinition: IMachineDefinition { for(emulator in listOf("x64sc", "x64")) { println("\nStarting C-64 emulator $emulator...") - val cmdline = listOf(emulator, "-silent", "-moncommands", "$programName.vice-mon-list", + val cmdline = listOf(emulator, "-silent", "-moncommands", "$programName.$viceMonListPostfix", "-autostartprgmode", "1", "-autostart-warp", "-autostart", "$programName.prg") val processb = ProcessBuilder(cmdline).inheritIO() val process: Process diff --git a/compiler/src/prog8/compiler/target/cbm/AssemblyProgram.kt b/compiler/src/prog8/compiler/target/cbm/AssemblyProgram.kt index 024bd565c..db79dcbf0 100644 --- a/compiler/src/prog8/compiler/target/cbm/AssemblyProgram.kt +++ b/compiler/src/prog8/compiler/target/cbm/AssemblyProgram.kt @@ -6,11 +6,14 @@ import prog8.compiler.target.IAssemblyProgram import prog8.compiler.target.generatedLabelPrefix import java.nio.file.Path + +internal const val viceMonListPostfix = "vice-mon-list" + class AssemblyProgram(override val name: String, outputDir: Path, private val compTarget: String) : IAssemblyProgram { private val assemblyFile = outputDir.resolve("$name.asm") private val prgFile = outputDir.resolve("$name.prg") private val binFile = outputDir.resolve("$name.bin") - private val viceMonListFile = outputDir.resolve("$name.vice-mon-list") + private val viceMonListFile = outputDir.resolve("$name.$viceMonListPostfix") override fun assemble(options: CompilationOptions): Int { // add "-Wlong-branch" to see warnings about conversion of branch instructions to jumps (default = do this silently) diff --git a/compiler/src/prog8/compiler/target/cx16/CX16MachineDefinition.kt b/compiler/src/prog8/compiler/target/cx16/CX16MachineDefinition.kt index 85e1d0d59..0be7ec371 100644 --- a/compiler/src/prog8/compiler/target/cx16/CX16MachineDefinition.kt +++ b/compiler/src/prog8/compiler/target/cx16/CX16MachineDefinition.kt @@ -4,6 +4,7 @@ import prog8.compiler.* import prog8.compiler.target.CpuType import prog8.compiler.target.IMachineDefinition import prog8.compiler.target.c64.C64MachineDefinition +import prog8.compiler.target.cbm.viceMonListPostfix import java.io.IOException internal object CX16MachineDefinition: IMachineDefinition { @@ -33,9 +34,18 @@ internal object CX16MachineDefinition: IMachineDefinition { } override fun launchEmulator(selectedEmulator: Int, programName: String) { - val emulatorName: String = when(selectedEmulator) { - 1 -> "x16emu" - 2 -> "box16" + val emulatorName: String + val extraArgs: List + + when(selectedEmulator) { + 1 -> { + emulatorName = "x16emu" + extraArgs = emptyList() + } + 2 -> { + emulatorName = "box16" + extraArgs = listOf("-sym", "$programName.$viceMonListPostfix") + } else -> { System.err.println("Cx16 target only supports x16emu and box16 emulators.") return @@ -44,7 +54,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") + val cmdline = listOf(emulator, "-scale", "2", "-run", "-prg", "$programName.prg") + extraArgs val processb = ProcessBuilder(cmdline).inheritIO() val process: Process try { diff --git a/docs/source/todo.rst b/docs/source/todo.rst index 2d3107aa5..53215de3e 100644 --- a/docs/source/todo.rst +++ b/docs/source/todo.rst @@ -3,7 +3,6 @@ TODO For next release ^^^^^^^^^^^^^^^^ -- add -sym vicemonlist support when launching box16 emulator (requires box16 bugfix to not freeze) - rename libdirs option to srcdirs? - can we derive module.name from module.source (taking just the filename base)? - can Position.file be a Path- making the source variable for nodes unnecessary?