From 0df99f3d4d2196fd167584b649d0e91cc43937b3 Mon Sep 17 00:00:00 2001 From: cuz Date: Thu, 26 Oct 2000 06:35:45 +0000 Subject: [PATCH] Rewrite of spaspidx and staxspidx. More module splits. git-svn-id: svn://svn.cc65.org/cc65/trunk@394 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/runtime/Makefile | 3 ++- libsrc/runtime/runtime.s | 41 -------------------------------------- libsrc/runtime/staspidx.s | 28 ++++++++++++++++++++++++++ libsrc/runtime/staxspidx.s | 32 +++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 42 deletions(-) delete mode 100644 libsrc/runtime/runtime.s create mode 100644 libsrc/runtime/staspidx.s create mode 100644 libsrc/runtime/staxspidx.s diff --git a/libsrc/runtime/Makefile b/libsrc/runtime/Makefile index ebf386ba7..c96d55c7b 100644 --- a/libsrc/runtime/Makefile +++ b/libsrc/runtime/Makefile @@ -126,7 +126,6 @@ OBJS = add.o \ return0.o \ return1.o \ rsub.o \ - runtime.o \ shelp.o \ shl.o \ shr.o \ @@ -136,8 +135,10 @@ OBJS = add.o \ shreax1.o \ shreax2.o \ shreax3.o \ + staspidx.o \ staspp.o \ staxsp.o \ + staxspidx.o \ staxspp.o \ steaxsp.o \ sub.o \ diff --git a/libsrc/runtime/runtime.s b/libsrc/runtime/runtime.s deleted file mode 100644 index db7137345..000000000 --- a/libsrc/runtime/runtime.s +++ /dev/null @@ -1,41 +0,0 @@ -; -; Runtime code for cc65. -; - - - .import popax - .importzp tmp1, tmp2, tmp3, ptr4 - - -; -; Various kinds of store operators -; -; store AX at SP@@(Y) - - .export staxspidx, staspidx, staspic -staxspidx: - jsr staspic ; use common part - pha - iny - lda tmp2 - sta (ptr4),y - tax - pla - rts -staspidx: - jsr staspic ; use common part - ldx tmp2 - rts - -staspic: - sta tmp1 - stx tmp2 - sty tmp3 - jsr popax ; get the pointer - sta ptr4 - stx ptr4+1 - ldy tmp3 - lda tmp1 - sta (ptr4),y - rts - diff --git a/libsrc/runtime/staspidx.s b/libsrc/runtime/staspidx.s new file mode 100644 index 000000000..c5e1440b8 --- /dev/null +++ b/libsrc/runtime/staspidx.s @@ -0,0 +1,28 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Store a indirect into address at top of stack with index +; + + .export staspidx + .import incsp2 + .importzp sp, tmp1, ptr1 + +.proc staspidx + + pha + sty tmp1 ; Save Index + ldy #1 + lda (sp),y + sta ptr1+1 + dey + lda (sp),y + sta ptr1 ; Pointer now in ptr1 + ldy tmp1 ; Restore offset + pla ; Restore value + sta (ptr1),y ; Store + jmp incsp2 ; Drop address + +.endproc + + diff --git a/libsrc/runtime/staxspidx.s b/libsrc/runtime/staxspidx.s new file mode 100644 index 000000000..1c4c011b4 --- /dev/null +++ b/libsrc/runtime/staxspidx.s @@ -0,0 +1,32 @@ +; +; Ullrich von Bassewitz, 26.10.2000 +; +; CC65 runtime: Store a/x indirect into address at top of stack with index +; + + .export staxspidx + .import incsp2 + .importzp sp, tmp1, ptr1 + +.proc staxspidx + + sty tmp1 ; Save Y + pha ; Save A + ldy #1 + lda (sp),y + sta ptr1+1 + dey + lda (sp),y + sta ptr1 ; Address now in ptr1 + ldy tmp1 ; Restore Y + iny ; Address high byte + txa ; Get high byte + sta (ptr1),y ; Store high byte + dey ; Address low byte + pla ; Restore low byte into A + sta (ptr1),y ; Store low byte + jmp incsp2 ; Drop address + +.endproc + + -- 2.39.5