Add C support for Atari 2600 (VCS)
This commit is contained in:
49
libsrc/atari2600/crt0.s
Normal file
49
libsrc/atari2600/crt0.s
Normal 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
|
||||
Reference in New Issue
Block a user