Add C support for Atari 2600 (VCS)

This commit is contained in:
Florent Flament
2017-01-08 19:12:55 +01:00
parent 1fc2dfb64f
commit c1aac0de0e
13 changed files with 456 additions and 0 deletions

49
libsrc/atari2600/crt0.s Normal file
View File

@@ -0,0 +1,49 @@
; Atari VCS 2600 startup code for cc65
;
; Florent Flament (contact@florentflament.com), 2017
.export _exit
.export __STARTUP__ : absolute = 1
.import __RAM_START__, __RAM_SIZE__
.import copydata
.import _main
.include "zeropage.inc"
.segment "STARTUP"
start:
; Clear decimal mode
cld
; Initialization Loop:
; * Clears Atari 2600 whole memory (128 bytes) including BSS segment
; * Clears TIA registers
; * Sets system stack pointer to $ff (i.e top of zero-page)
ldx #0
txa
clearLoop:
dex
txs
pha
bne clearLoop
; Initialize data
jsr copydata
; Initialize C stack pointer
lda #<(__RAM_START__ + __RAM_SIZE__)
ldx #>(__RAM_START__ + __RAM_SIZE__)
sta sp
stx sp+1
; Call main
jsr _main
_exit: jmp _exit
.segment "VECTORS"
.word start ; NMI
.word start ; Reset
.word start ; IRQ