mirror of
https://github.com/KarolS/millfork.git
synced 2024-09-11 02:55:10 +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` – 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
|
* `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
|
case _ => false
|
||||||
}) ErrorReporting.warn("Assembly non-interrupt function `$name` contains RTI, did you mean RTS?", options, Some(p))
|
}) 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 {
|
xs.last match {
|
||||||
case AssemblyStatement(Opcode.RTS, _, _, _) => () // OK
|
case AssemblyStatement(Opcode.RTS, _, _, _) => () // OK
|
||||||
case AssemblyStatement(Opcode.RTI, _, _, _) => () // OK
|
case AssemblyStatement(Opcode.RTI, _, _, _) => () // OK
|
||||||
|
Loading…
Reference in New Issue
Block a user