ldaxsp.o \
ldeax.o \
ldeaxi.o \
+ ldeaxysp.o \
ldec.o \
ldiv.o \
le.o \
lpop.o \
lpush.o \
lrsub.o \
- lruntime.o \
lsave.o \
lshelp.o \
lshl.o \
pushc0.o \
pushc1.o \
pushc2.o \
+ pushlysp.o \
pushw.o \
pushwsp.o \
return0.o \
staxspidx.o \
staxspp.o \
steaxsp.o \
+ steaxspp.o \
sub.o \
subeqsp.o \
subysp.o \
--- /dev/null
+;
+; Ullrich von Bassewitz, 22.06.1998
+;
+; CC65 runtime: Load a long from somewhere in the stack
+;
+; Beware: The optimizer knows about the register contents after calling
+; this function!
+;
+
+
+ .export ldeax0sp, ldeaxysp
+ .importzp sreg, sp
+
+ldeax0sp:
+ ldy #3
+ldeaxysp:
+ lda (sp),y
+ sta sreg+1
+ dey
+ lda (sp),y
+ sta sreg
+ dey
+ lda (sp),y
+ tax
+ dey
+ lda (sp),y
+ rts
+
+++ /dev/null
-;
-; lruntime.s
-;
-; Ullrich von Bassewitz, 22.06.1998
-;
-
-; Runtime support for longs.
-
- .import popax, pusheax
- .importzp sp, sreg, tmp1, tmp2, tmp3, ptr1
-
-;
-; leax (sp),y
-;
- .export ldeax0sp, ldeaxysp
-
-ldeax0sp:
- ldy #3
-ldeaxysp:
- lda (sp),y
- sta sreg+1
- dey
- lda (sp),y
- sta sreg
- dey
- lda (sp),y
- tax
- dey
- lda (sp),y
- rts
-
-;
-; push a long from (sp),y
-;
- .export pushlysp
-
-pushlysp:
- iny
- iny
- lda (sp),y
- iny
- sta sreg
- lda (sp),y
- sta sreg+1
- dey
- dey
- lda (sp),y
- dey
- tax
- lda (sp),y
- jmp pusheax
-
-;
-; eax --> ((sp)); pop
-;
- .export steaxspp
-
-steaxspp:
- pha
- txa
- pha
- jsr popax ; get address
- sta ptr1
- stx ptr1+1
- ldy #3
- lda sreg+1
- sta (ptr1),y
- dey
- lda sreg
- sta (ptr1),y
- dey
- pla
- tax
- sta (ptr1),y
- dey
- pla
- sta (ptr1),y
- rts
-
-;
-; eax --> ((sp)),y
-;
- .export steaxspidx
-
-steaxspidx:
- sta tmp1
- stx tmp2
- sty tmp3
- jsr popax ; get the pointer
- sta ptr1
- stx ptr1+1
- ldy tmp3
- lda tmp1
- sta (ptr1),y
- iny
- lda tmp2
- sta (ptr1),y
- iny
- tax
- lda sreg
- sta (ptr1),y
- iny
- lda sreg+1
- sta (ptr1),y
- lda tmp1
- rts
-
--- /dev/null
+;
+; Ullrich von Bassewitz, 22.06.1998
+;
+; CC65 runtime: Push a long from somewhere in the stack
+;
+
+
+ .export pushlysp
+ .import pusheax
+ .importzp sreg, sp
+
+.proc pushlysp
+
+ iny
+ iny
+ lda (sp),y
+ iny
+ sta sreg
+ lda (sp),y
+ sta sreg+1
+ dey
+ dey
+ lda (sp),y
+ dey
+ tax
+ lda (sp),y
+ jmp pusheax
+
+.endproc
+
+
--- /dev/null
+;
+; Ullrich von Bassewitz, 22.06.1998
+;
+; CC65 runtime: Store eax at the address on top of stack with index
+;
+
+
+ .export steaxspidx
+ .import popax
+ .importzp sreg, ptr1, tmp1, tmp2, tmp3
+
+
+.proc steaxspidx
+
+ sta tmp1
+ stx tmp2
+ sty tmp3
+ jsr popax ; get the pointer
+ sta ptr1
+ stx ptr1+1
+ ldy tmp3
+ lda tmp1
+ sta (ptr1),y
+ iny
+ lda tmp2
+ sta (ptr1),y
+ iny
+ tax
+ lda sreg
+ sta (ptr1),y
+ iny
+ lda sreg+1
+ sta (ptr1),y
+ lda tmp1
+ rts
+
+.endproc
+
+
--- /dev/null
+;
+; Ullrich von Bassewitz, 22.06.1998
+;
+; CC65 runtime: Store eax at the address on top of stack.
+;
+
+
+ .export steaxspp
+ .import popax
+ .importzp sreg, ptr1
+
+.proc steaxspp
+
+ pha
+ txa
+ pha
+ jsr popax ; get address
+ sta ptr1
+ stx ptr1+1
+ ldy #3
+ lda sreg+1
+ sta (ptr1),y
+ dey
+ lda sreg
+ sta (ptr1),y
+ dey
+ pla
+ tax
+ sta (ptr1),y
+ dey
+ pla
+ sta (ptr1),y
+ rts
+
+.endproc
+
+