1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-06-09 16:29:34 +00:00

C64: ROM cartridge support

This commit is contained in:
Karol Stasiak 2018-12-17 11:13:01 +01:00
parent 235700c44c
commit 007b1dc839
6 changed files with 102 additions and 0 deletions

1
.gitignore vendored
View File

@ -19,6 +19,7 @@ examples/lunix/
# compiled Millfork files
*.prg
*.crt
*.seq
*.asm
*.lbl

View File

@ -70,6 +70,8 @@ The following features are defined based on the chosen CPU and compilation optio
* `CBM_64` 1 if the target is an 8-bit Commodore computer compatible with Commodore 64, 0 otherwise
* `CBM_64_CRT` 1 if the target is a cartridge for Commodore 64, 0 otherwise
* `CBM_264` 1 if the target is an 8-bit Commodore computer from the 264 line, 0 otherwise
* `KEYBOARD` 1 if the target has a keyboard, 0 otherwise

View File

@ -5,6 +5,13 @@ const byte row = 15
byte letter_index
void main () {
#if CBM_64_CRT
vic_bg_color0 = blue
vic_border = light_blue
vic_cr1 = $9b
vic_mem = $15
vic_cr2 = $c8
#endif
letter_index = 0
disable_irq()
init_screen()

41
include/c64_crt16k.ini Normal file
View File

@ -0,0 +1,41 @@
; Commodore 64
; 16K ROM cartridge
[compilation]
arch=nmos
encoding=petscii
screen_encoding=petscr
modules=c64_hardware,loader_c64crt,c64_kernal,c64_panic,stdlib
ro_arrays=true
[allocation]
zp_pointers=2-$ff
segments=default,prgrom
default_code_segment=prgrom
segment_default_start=$800
segment_default_end=$7fff
segment_prgrom_start=$8000
segment_prgrom_end=$bfff
[define]
CBM=1
CBM_64=1
MOS_6510=1
WIDESCREEN=1
KEYBOARD=1
JOYSTICKS=2
HAS_BITMAP_MODE=1
CBM_64_CRT=1
[output]
style=single
format =$43,$36,$34,$20,$43,$41,$52,$54,$52,$49,$44,$47,$45,$20,$20,$20, \
0,0,0,$40, 1,0, 0,0, 0, 0, 0,0,0,0,0,0, \
$4d,$49,$4c,$4c, $46,$4f,$52,$4b, $20,$31,$36,$4b, $20,$50,$52,$4f, \
$47,$52,$41,$4d, 0,0,0,0, 0,0,0,0, 0,0,0,0, \
$43,$48,$49,$50, 0,0,$40,$10, 0,0, 0,0, $80,$00, $40,$00, \
prgrom:$8000:$bfff
extension=crt

41
include/c64_crt8k.ini Normal file
View File

@ -0,0 +1,41 @@
; Commodore 64
; 8K ROM cartridge
[compilation]
arch=nmos
encoding=petscii
screen_encoding=petscr
modules=c64_hardware,loader_c64crt,c64_kernal,c64_panic,stdlib
ro_arrays=true
[allocation]
zp_pointers=2-$ff
segments=default,prgrom
default_code_segment=prgrom
segment_default_start=$800
segment_default_end=$7fff
segment_prgrom_start=$8000
segment_prgrom_end=$9fff
[define]
CBM=1
CBM_64=1
MOS_6510=1
WIDESCREEN=1
KEYBOARD=1
JOYSTICKS=2
HAS_BITMAP_MODE=1
CBM_64_CRT=1
[output]
style=single
format =$43,$36,$34,$20,$43,$41,$52,$54,$52,$49,$44,$47,$45,$20,$20,$20, \
0,0,0,$40, 1,0, 0,0, 0, 1, 0,0,0,0,0,0, \
$4d,$49,$4c,$4c, $46,$4f,$52,$4b, $20,$38,$4b,$20, $50,$52,$4f,$47, \
$52,$41,$4d,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, \
$43,$48,$49,$50, 0,0,$20,$10, 0,0, 0,0, $80,$00, $20,$00, \
prgrom:$8000:$9fff
extension=crt

10
include/loader_c64crt.mfk Normal file
View File

@ -0,0 +1,10 @@
segment(prgrom)
array __vectors @$8000 = [
main.addr.lo,
main.addr.hi,
main.addr.lo,
main.addr.hi
]
segment(prgrom)
array __boot_signature @$8004 = [$C3, $C2, $CD, $38, $30]