mirror of
https://github.com/irmen/prog8.git
synced 2025-04-15 08:39:19 +00:00
output_type is now part of custom target config and atari again defaults to .xex
This commit is contained in:
parent
37b3868ca3
commit
0ee42b9aa0
@ -28,6 +28,7 @@ interface ICompilationTarget: IStringEncoding, IMemSizer {
|
||||
val libraryPath: Path?
|
||||
val customLauncher: List<String>
|
||||
val additionalAssemblerOptions: String?
|
||||
val defaultOutputType: OutputType
|
||||
|
||||
fun initializeMemoryAreas(compilerOptions: CompilationOptions)
|
||||
fun getFloatAsmBytes(num: Number): String
|
||||
|
@ -12,6 +12,7 @@ class C128Target: ICompilationTarget, IStringEncoding by Encoder, IMemSizer by N
|
||||
override val libraryPath = null
|
||||
override val customLauncher: List<String> = emptyList()
|
||||
override val additionalAssemblerOptions = null
|
||||
override val defaultOutputType = OutputType.PRG
|
||||
|
||||
companion object {
|
||||
const val NAME = "c128"
|
||||
|
@ -13,6 +13,7 @@ class C64Target: ICompilationTarget, IStringEncoding by Encoder, IMemSizer by No
|
||||
override val libraryPath = null
|
||||
override val customLauncher: List<String> = emptyList()
|
||||
override val additionalAssemblerOptions = null
|
||||
override val defaultOutputType = OutputType.PRG
|
||||
|
||||
companion object {
|
||||
const val NAME = "c64"
|
||||
|
@ -24,6 +24,7 @@ class ConfigFileTarget(
|
||||
override val BSSHIGHRAM_END: UInt,
|
||||
override val BSSGOLDENRAM_START: UInt,
|
||||
override val BSSGOLDENRAM_END: UInt,
|
||||
override val defaultOutputType: OutputType,
|
||||
override val libraryPath: Path,
|
||||
override val customLauncher: List<String>,
|
||||
override val additionalAssemblerOptions: String?,
|
||||
@ -110,6 +111,9 @@ class ConfigFileTarget(
|
||||
val assemblerOptionsStr = props.getProperty("assembler_options", "").trim()
|
||||
val assemblerOptions = if(assemblerOptionsStr.isBlank()) null else assemblerOptionsStr
|
||||
|
||||
val outputTypeString = props.getProperty("output_type", "PRG")
|
||||
val defaultOutputType = OutputType.valueOf(outputTypeString.uppercase())
|
||||
|
||||
return ConfigFileTarget(
|
||||
configfile.nameWithoutExtension,
|
||||
Encoding.entries.first { it.prefix==props.getString("encoding") },
|
||||
@ -121,6 +125,7 @@ class ConfigFileTarget(
|
||||
props.getInteger("bss_highram_end"),
|
||||
props.getInteger("bss_goldenram_start"),
|
||||
props.getInteger("bss_goldenram_end"),
|
||||
defaultOutputType,
|
||||
libraryPath,
|
||||
customLauncher,
|
||||
assemblerOptions,
|
||||
|
@ -12,6 +12,7 @@ class Cx16Target: ICompilationTarget, IStringEncoding by Encoder, IMemSizer by N
|
||||
override val libraryPath = null
|
||||
override val customLauncher: List<String> = emptyList()
|
||||
override val additionalAssemblerOptions = null
|
||||
override val defaultOutputType = OutputType.PRG
|
||||
|
||||
companion object {
|
||||
const val NAME = "cx16"
|
||||
|
@ -12,6 +12,7 @@ class PETTarget: ICompilationTarget, IStringEncoding by Encoder, IMemSizer by No
|
||||
override val libraryPath = null
|
||||
override val customLauncher: List<String> = emptyList()
|
||||
override val additionalAssemblerOptions = null
|
||||
override val defaultOutputType = OutputType.PRG
|
||||
|
||||
companion object {
|
||||
const val NAME = "pet32"
|
||||
|
@ -13,6 +13,7 @@ class VMTarget: ICompilationTarget, IStringEncoding by Encoder, IMemSizer by Nor
|
||||
override val libraryPath = null
|
||||
override val customLauncher: List<String> = emptyList()
|
||||
override val additionalAssemblerOptions = null
|
||||
override val defaultOutputType = OutputType.PRG
|
||||
|
||||
companion object {
|
||||
const val NAME = "virtual"
|
||||
|
@ -384,13 +384,13 @@ internal fun determineCompilationOptions(program: Program, compTarget: ICompilat
|
||||
.toList()
|
||||
|
||||
val outputType = if (outputTypeStr == null) {
|
||||
OutputType.PRG
|
||||
compTarget.defaultOutputType
|
||||
} else {
|
||||
try {
|
||||
OutputType.valueOf(outputTypeStr)
|
||||
} catch (_: IllegalArgumentException) {
|
||||
// set default value; actual check and error handling of invalid option is handled in the AstChecker later
|
||||
OutputType.PRG
|
||||
compTarget.defaultOutputType
|
||||
}
|
||||
}
|
||||
var launcherType = if (launcherTypeStr == null)
|
||||
|
@ -1,8 +1,6 @@
|
||||
TODO
|
||||
====
|
||||
|
||||
atari customtarget: default output should be .xex not .prg (10.5 still did it correctly)
|
||||
|
||||
test irqs on various targets: set_irq, set_rasterirq
|
||||
|
||||
can memset/memsetw be written without the need of a temp register variable?
|
||||
|
@ -1,7 +1,6 @@
|
||||
%import textio
|
||||
%zeropage basicsafe
|
||||
%launcher none
|
||||
%output xex
|
||||
|
||||
; This example computes the first 20 values of the Fibonacci sequence.
|
||||
; Note: this program is compatible with atari.
|
||||
|
@ -1,7 +1,6 @@
|
||||
%import textio
|
||||
%zeropage basicsafe
|
||||
%launcher none
|
||||
%output xex
|
||||
|
||||
; hello world test for Atari 8-bit
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
cpu = 6502
|
||||
encoding = atascii
|
||||
output_type = XEX
|
||||
load_address = $2000
|
||||
memtop = $ffff
|
||||
bss_highram_start = 0
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
cpu = 65C02
|
||||
encoding = iso
|
||||
# output_type = PRG
|
||||
load_address = $0800
|
||||
memtop = $fc00
|
||||
bss_highram_start = 0
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
cpu = 6502
|
||||
encoding = petscii
|
||||
# output_type = PRG
|
||||
load_address = $0801
|
||||
memtop = $cfe0
|
||||
bss_highram_start = $c000
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
cpu = 65C02
|
||||
encoding = petscii
|
||||
# output_type = PRG
|
||||
load_address = $0801
|
||||
memtop = $9f00
|
||||
bss_highram_start = $a000
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
cpu = 6502
|
||||
encoding = petscii
|
||||
# output_type = PRG
|
||||
load_address = $0401
|
||||
memtop = $8000
|
||||
bss_highram_start = 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user