1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-12-29 02:31:45 +00:00

New target: C64 with SuperCPU in native mode

This commit is contained in:
Karol Stasiak 2018-03-03 21:41:49 +01:00
parent 839c52204f
commit 606011ea38
4 changed files with 47 additions and 2 deletions

View File

@ -9,7 +9,9 @@ The following platforms are currently supported:
* `c64` Commodore 64
* `c64_scpu` Commodore 64 with SuperCPU (very buggy)
* `c64_scpu` Commodore 64 with SuperCPU in emulation mode
* `c64_scpu16` Commodore 64 with SuperCPU in native, 16-bit mode (very buggy)
* `c16` Commodore 16

22
include/c64_scpu16.ini Normal file
View File

@ -0,0 +1,22 @@
; Commodore 64 with a SuperCPU, running in native mode
; assuming a program loaded from disk or tape
; This has lower compatibility with inline assembly, but it's clearly faster.
[compilation]
arch=65816
modules=c64_hardware,loader_0801_16bit,c64_kernal,c64_panic,stdlib
emit_65816=native
[allocation]
main_org=$811
zp_pointers=$C1,$C3,$FB,$FD,$39,$3B,$3D,$43,$45,$47,$4B
himem_style=per_bank
himem_start=after_code
himem_end=$9FFF
[output]
style=per_bank
format=startaddr,allocated
extension=prg

View File

@ -0,0 +1,21 @@
array _basic_loader @$801 = [
$0b,
$08,
10,
0,
$9e,
$32,
$30,
$36,
$31,
0,
0,
0
]
asm void __init_16bit() @$80D {
clc
xce
sep #$30
}

View File

@ -486,7 +486,7 @@ case class MfParser(filename: String, input: String, currentDirectory: String, o
case _ => false
}) ErrorReporting.warn("Assembly non-interrupt function `$name` contains RTI, did you mean RTS?", options, Some(p))
}
if (!flags("macro")) {
if (!name.startsWith("__") && !flags("macro")) {
xs.last match {
case AssemblyStatement(Opcode.RTS, _, _, _) => () // OK
case AssemblyStatement(Opcode.RTI, _, _, _) => () // OK