2 ; Runtime code for cc65.
6 .import ldai, ldaxi, pushax
7 .importzp sp, tmp1, tmp2, tmp3, ptr1, ptr4
14 lda (sp),y ; Read byte
21 ; pop a from stack and load x with zero
27 lda (sp),y ; load low byte
32 ; pop a/x from stack. This function will run directly into incsp2
35 .export popax ; pop stack into AX
38 lda (sp),y ; get hi byte
41 lda (sp),y ; get lo byte
44 ; routines for inc/dec'ing sp
47 .export addysp, addysp1
48 .export incsp1, incsp2, incsp3, incsp4
49 .export incsp5, incsp6, incsp7, incsp8
51 ; do this by hand, cause it gets used a lot
66 ; Hand optimize this one also...
98 bcc addysp_1 ; if no carry, we're done
99 inc sp+1 ; inc hi byte
107 .export subysp ; sub Y from SP
108 .export decsp1, decsp2, decsp3, decsp4
109 .export decsp5, decsp6, decsp7, decsp8
111 ; Do this one by hand, cause it gets used a lot
127 ; Decrement by 1 also done as fast as possible
154 sty tmp1 ; save the value
165 ; Various kinds of store operators
167 ; store AX at SP@@(Y)
169 .export staxspidx, staspidx, staspic
171 jsr staspic ; use common part
180 jsr staspic ; use common part
188 jsr popax ; get the pointer
199 .export staxspp ; store AX thru (sp), and pop
213 jmp incsp2 ; Drop address
216 .export staspp ; store A thru (sp), and pop
227 jmp incsp2 ; Drop address
231 ; Boolean function return entries.
234 .export return0, return1
253 pushwaxi: ; push word at (ax)
259 .export pushbaxi ; push byte at (ax)