2 ; Startup code for cc65 (ATARI version)
4 ; Contributing authors:
9 ; This must be the *first* file on the linker command line
13 .constructor initsp,26
15 .import getargs, argc, argv
16 .import initlib, donelib
17 .import zerobss, pushax
18 .import _main,__filetab,getfd
19 .import __CODE_LOAD__, __BSS_LOAD__
22 .include "../common/_file.inc"
24 ; ------------------------------------------------------------------------
25 ; Define and export the ZP variables for the runtime
27 .exportzp sp, sreg, regsave
28 .exportzp ptr1, ptr2, ptr3, ptr4
29 .exportzp tmp1, tmp2, tmp3, tmp4
30 .exportzp fntemp, regbank, zpspace
36 sp: .res 2 ; Stack pointer
37 sreg: .res 2 ; Secondary register/high 16 bit for longs
38 regsave: .res 2 ; slot to save/restore (E)AX into
47 fntemp: .res 2 ; Pointer to file name
48 regbank: .res 6 ; 6 byte register bank
50 zpspace = * - zpstart ; Zero page space allocated
54 ; ------------------------------------------------------------------------
60 .word __BSS_LOAD__ - 1
64 ; ------------------------------------------------------------------------
67 rts ; fix for SpartaDOS / OS/A+
68 ; they first call the entry point from AUTOSTRT and
69 ; then the load addess (this rts here).
70 ; We point AUTOSTRT directly after the rts.
74 ; Save the zero page locations we need
94 sta appmsav ; remember old APPMHI value
99 sta APPMHI ; initialize our APPMHI value
103 ; Call module constructors
107 ; set left margin to 0
114 ; set keyb to upper/lowercase mode
120 ; Initialize conio stuff
125 ; set stdio stream handles
129 sta __filetab + (0 * _FILE_size) ; setup stdin
132 sta __filetab + (1 * _FILE_size) ; setup stdout
135 sta __filetab + (2 * _FILE_size) ; setup stderr
137 ; Pass command line if present
148 ldy #4 ; Argument size
149 jsr _main ; call the users code
151 ; Call module destructors. This is also the _exit entry.
153 _exit: jsr donelib ; Run module destructors
155 ; Restore system stuff
158 txs ; Restore stack pointer
160 ; restore left margin
177 ; Copy back the zero page stuff
189 ; *** end of main startup code
214 .word __CODE_LOAD__ + 1