mirror of
https://github.com/cc65/cc65.git
synced 2025-04-06 20:37:16 +00:00
Split of the lruntime module
git-svn-id: svn://svn.cc65.org/cc65/trunk@427 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
8f83a48602
commit
7bb82698d1
@ -81,6 +81,7 @@ OBJS = add.o \
|
||||
ldaxsp.o \
|
||||
ldeax.o \
|
||||
ldeaxi.o \
|
||||
ldeaxysp.o \
|
||||
ldec.o \
|
||||
ldiv.o \
|
||||
le.o \
|
||||
@ -100,7 +101,6 @@ OBJS = add.o \
|
||||
lpop.o \
|
||||
lpush.o \
|
||||
lrsub.o \
|
||||
lruntime.o \
|
||||
lsave.o \
|
||||
lshelp.o \
|
||||
lshl.o \
|
||||
@ -143,6 +143,7 @@ OBJS = add.o \
|
||||
pushc0.o \
|
||||
pushc1.o \
|
||||
pushc2.o \
|
||||
pushlysp.o \
|
||||
pushw.o \
|
||||
pushwsp.o \
|
||||
return0.o \
|
||||
@ -163,6 +164,7 @@ OBJS = add.o \
|
||||
staxspidx.o \
|
||||
staxspp.o \
|
||||
steaxsp.o \
|
||||
steaxspp.o \
|
||||
sub.o \
|
||||
subeqsp.o \
|
||||
subysp.o \
|
||||
|
28
libsrc/runtime/ldeaxysp.s
Normal file
28
libsrc/runtime/ldeaxysp.s
Normal file
@ -0,0 +1,28 @@
|
||||
;
|
||||
; 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
|
||||
|
@ -1,107 +0,0 @@
|
||||
;
|
||||
; 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
|
||||
|
31
libsrc/runtime/pushlysp.s
Normal file
31
libsrc/runtime/pushlysp.s
Normal file
@ -0,0 +1,31 @@
|
||||
;
|
||||
; 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
|
||||
|
||||
|
39
libsrc/runtime/steaxspi.s
Normal file
39
libsrc/runtime/steaxspi.s
Normal file
@ -0,0 +1,39 @@
|
||||
;
|
||||
; 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
|
||||
|
||||
|
37
libsrc/runtime/steaxspp.s
Normal file
37
libsrc/runtime/steaxspp.s
Normal file
@ -0,0 +1,37 @@
|
||||
;
|
||||
; 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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user