-target option is now required; c64 no longer the default

This commit is contained in:
Irmen de Jong 2023-06-03 19:14:45 +02:00
parent bfaad1388c
commit 9314c346da
39 changed files with 42 additions and 36 deletions

View File

@ -48,7 +48,7 @@ private fun compileMain(args: Array<String>): Boolean {
val quietAssembler by cli.option(ArgType.Boolean, fullName = "quietasm", description = "don't print assembler output results")
val slowCodegenWarnings by cli.option(ArgType.Boolean, fullName = "slowwarn", description="show debug warnings about slow/problematic assembly code generation")
val sourceDirs by cli.option(ArgType.String, fullName="srcdirs", description = "list of extra paths, separated with ${File.pathSeparator}, to search in for imported modules").multiple().delimiter(File.pathSeparator)
val compilationTarget by cli.option(ArgType.String, fullName = "target", description = "target output of the compiler (one of '${C64Target.NAME}', '${C128Target.NAME}', '${Cx16Target.NAME}', '${AtariTarget.NAME}', '${VMTarget.NAME}')").default(C64Target.NAME)
val compilationTarget by cli.option(ArgType.String, fullName = "target", description = "target output of the compiler (one of '${C64Target.NAME}', '${C128Target.NAME}', '${Cx16Target.NAME}', '${AtariTarget.NAME}', '${VMTarget.NAME}')").required()
val startVm by cli.option(ArgType.Boolean, fullName = "vm", description = "load and run a .p8ir IR source file in the VM")
val watchMode by cli.option(ArgType.Boolean, fullName = "watch", description = "continuous compilation mode (watch for file changes)")
val varsHigh by cli.option(ArgType.Boolean, fullName = "varshigh", description = "put uninitialized variables in high memory area instead of at the end of the program")

View File

@ -32,6 +32,7 @@ class ModuleImporter(private val program: Program,
val programPath = path.resolve(normalizedFilePath)
if(programPath.exists()) {
println("Compiling program ${Path("").absolute().relativize(programPath)}")
println("Compiler target: $compilationTargetName")
val source = SourceCode.File(programPath)
return Ok(importModule(source))
}

View File

@ -109,10 +109,9 @@ One or more .p8 module files
Prints short command line usage information.
``-target <compilation target>``
Sets the target output of the compiler.
Sets the target output of the compiler. This option is required.
``c64`` = Commodore 64, ``c128`` = Commodore 128, ``cx16`` = Commander X16, ``atari`` = Atari 800 XL,
``virtual`` = builtin virtual machine.
Default = ``c64``.
``-srcdirs <pathlist>``
Specify a list of extra paths (separated with ':'), to search in for imported modules.
@ -292,11 +291,11 @@ Examples
A couple of example programs can be found in the 'examples' directory of the source tree.
Make sure you have installed the :ref:`requirements`. Then, for instance,
to compile and run the rasterbars example program, use this command::
to compile and run the Commodore 64 rasterbars example program, use this command::
$ java -jar prog8compiler.jar -emu examples/rasterbars.p8
$ java -jar prog8compiler.jar -target c64 -emu examples/rasterbars.p8
or::
$ ./p8compile.sh -emu examples/rasterbars.p8
$ ./p8compile.sh -target c64 -emu examples/rasterbars.p8

View File

@ -47,8 +47,12 @@ sys (part of syslib)
system when the program is running.
The following return values are currently defined:
- 16 = compiled for Commander X16 with 65C02 CPU
- 64 = compiled for Commodore 64 with 6502/6510 CPU
- 8 = Atari 8 bits
- 16 = Commander X16
- 64 = Commodore 64
- 128 = Commodore 128
- 255 = Virtual machine
``exit (returncode)``
Immediately stops the program and exits it, with the returncode in the A register.

View File

@ -23,6 +23,7 @@ Details of several important ones and how to convert version 8 code can be found
- added gfx2.fill() flood fill routine
- added @split storage class for (u)word arrays to store them as split lsb/msb arrays which is more efficient (but doesn't yet support all array operations)
- added -splitarrays command line option and '%option splitarrays' to treat all word arrays as tagged with @split
- the -target option is now required, c64 is no longer a default.
``cx16diskio`` is now just ``diskio``

View File

@ -2,7 +2,7 @@
%import string
; Animal guessing game where the computer gets smarter every time.
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {
const ubyte database_size = 100

View File

@ -2,7 +2,7 @@
%import math
%zeropage basicsafe
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {

View File

@ -4,7 +4,7 @@
%option no_sysinit
; The "Byte Sieve" test. https://en.wikipedia.org/wiki/Byte_Sieve
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {
sub start() {

View File

@ -3,7 +3,7 @@
%import test_stack
%zeropage basicsafe
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {

View File

@ -2,7 +2,7 @@
%import graphics
%import math
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {

View File

@ -2,7 +2,7 @@
%import math
%import cx16logo
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {
sub start() {
@ -10,7 +10,7 @@ main {
ubyte col = math.rnd() % (txt.DEFAULT_WIDTH-13) + 3
ubyte row = math.rnd() % (txt.DEFAULT_HEIGHT-7)
cx16logo.logo_at(col, row)
txt.plot(col-3, row+7 )
txt.plot(col-3, row+7)
txt.print("commander x16")
}
}

View File

@ -4,6 +4,8 @@
%import test_stack
%option no_sysinit
; Note: this program can be compiled for multiple target systems.
main {
sub start() {
diskio.set_drive(8)

View File

@ -2,7 +2,7 @@
%zeropage basicsafe
; This example computes the first 20 values of the Fibonacci sequence.
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {
sub start() {

View File

@ -2,7 +2,7 @@
%import test_stack
%import math
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {

View File

@ -2,7 +2,7 @@
%import syslib
%zeropage basicsafe
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {

View File

@ -7,7 +7,7 @@
; NOTE: this will take an eternity to draw on a real c64. A CommanderX16 is a bit faster.
; even in Vice in warp mode (700% speed on my machine) it's slow, but you can see progress
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {
const uword width = 320

View File

@ -3,7 +3,7 @@
%import test_stack
%zeropage basicsafe
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {
const uword width = 30

View File

@ -6,7 +6,7 @@
; This program shows a depth-first maze generation algorithm (1 possible path from start to finish),
; and a depth-first maze solver algorithm, both using a stack to store the path taken.
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {
sub start() {

View File

@ -4,7 +4,7 @@
%zeropage basicsafe
; The classic number guessing game.
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {

View File

@ -1,8 +1,7 @@
%import textio
; %import test_stack
%zeropage basicsafe
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {

View File

@ -1,7 +1,7 @@
%import textio
%zeropage basicsafe
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {

View File

@ -1,7 +1,7 @@
%import textio
%zeropage basicsafe
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {

View File

@ -2,7 +2,7 @@
%import floats
%zeropage floatsafe
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {

View File

@ -2,7 +2,7 @@
%import textio
%zeropage basicsafe
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {
const uword screenwidth = txt.DEFAULT_WIDTH

View File

@ -6,7 +6,7 @@ main {
str name1 = "name1"
str name2 = "name2"
uword[] names = [name1, name2, "name3"]
uword[] @split names = [name1, name2, "name3"]
uword ww
; for ww in names {
@ -22,12 +22,12 @@ main {
names[idx]--
txt.print_uw(names[1])
; names = [1111,2222,3333]
; for ww in names {
; txt.print_uw(ww)
; txt.spc()
; }
; txt.nl()
names = [1111,2222,3333]
for ww in names {
txt.print_uw(ww)
txt.spc()
}
txt.nl()
txt.print("end.")
}
}

View File

@ -9,7 +9,7 @@
; Prog8 adaptation of the Text-Elite galaxy system trading simulation engine.
; Original C-version obtained from: http://www.elitehomepage.org/text/index.htm
; Note: this program is compatible with C64 and CX16.
; Note: this program can be compiled for multiple target systems.
main {