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:
parent
839c52204f
commit
606011ea38
@ -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
22
include/c64_scpu16.ini
Normal 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
|
||||
|
||||
|
21
include/loader_0801_16bit.mfk
Normal file
21
include/loader_0801_16bit.mfk
Normal 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
|
||||
}
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user