2 ; Startup code for cc65 (CreatiVision version)
6 .export __STARTUP__ : absolute = 1 ; Mark as startup
8 .import zerobss, copydata
9 .import initlib, donelib, callmain
10 .import __VECTORS_LOAD__, __VECTORS_RUN__, __VECTORS_SIZE__
11 .import __ZP_LAST__, __STACKSIZE__, __RAM_START__
13 .include "creativision.inc"
14 .include "zeropage.inc"
16 ; ------------------------------------------------------------------------
23 ; Copy the IRQ vectors
24 ldx #<__VECTORS_SIZE__ - 1
25 : lda __VECTORS_LOAD__,x
30 ; Setup the CPU stack ptr
31 ldx #<__RAM_START__ - 1
40 ; Copy data from ROM to RAM
43 ; Setup the argument stack ptr
44 lda #<(__ZP_LAST__ + __STACKSIZE__)
45 ldx #>(__ZP_LAST__ + __STACKSIZE__)
49 ; Call module constructors
55 ; Call module destructors. This is also the _exit entry.
58 ; TODO: Replace with some sort of reset
61 ; ------------------------------------------------------------------------
62 ; Define the IRQ vectors.
66 irq1: jmp BIOS_IRQ1_ADDR
67 irq2: jmp BIOS_IRQ2_ADDR
69 ; ------------------------------------------------------------------------
70 ; Define CART setup values for BIOS.
75 ; This is where the entry point of the program needs to be
82 ; This sets to Graphics Mode 1
83 .byte $00 ; Register 0
84 .byte $C0 ; Register 1 16K RAM, Active Display, Mode 1
85 .byte $04 ; Register 2 Name Table at $1000 - $12FF
86 .byte $60 ; Register 3 Colour Table at $1800 - $181F
87 .byte $00 ; Register 4 Pattern Table at $0000 - $07FF
88 .byte $10 ; Register 5 Sprite Attribute at $0800 - $087F
89 .byte $01 ; Register 6 Sprite Pattern
90 .byte $F1 ; Register 7 Text colour Foreground / background
94 ; BIOS Vector after NMI or RESET
95 ; Keeping with retail cartridges, we jump back to BIOS ROM and have it
96 ; setup zeropage etc, and show the Creativision logo and copyright.
97 .addr BIOS_NMI_RESET_ADDR
99 ; BIOS Short Interrupt Handler
100 ; Vectored from BIOS ROM:FE2C. This should contain a pointer to the user's
101 ; BIOS interrupt handler.
104 ; ------------------------------------------------------------------------