From 5b1b4ea00dd0af34b333d4692018d3765cff57df Mon Sep 17 00:00:00 2001 From: cuz Date: Mon, 20 Nov 2000 22:17:14 +0000 Subject: [PATCH] New condes module git-svn-id: svn://svn.cc65.org/cc65/trunk@458 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/runtime/Makefile | 1 + libsrc/runtime/condes.s | 46 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 libsrc/runtime/condes.s diff --git a/libsrc/runtime/Makefile b/libsrc/runtime/Makefile index 533f60a2a..f800c1d0b 100644 --- a/libsrc/runtime/Makefile +++ b/libsrc/runtime/Makefile @@ -33,6 +33,7 @@ OBJS = add.o \ bpushbsp.o \ call.o \ compl.o \ + condes.o \ decax1.o \ decax2.o \ decaxy.o \ diff --git a/libsrc/runtime/condes.s b/libsrc/runtime/condes.s new file mode 100644 index 000000000..f0a1fabb7 --- /dev/null +++ b/libsrc/runtime/condes.s @@ -0,0 +1,46 @@ +; +; Ullrich von Bassewitz, 20.11.2000 +; +; CC65 runtime: Support for calling module constructors/destructors +; +; The condes routine must be called with the table address in a/x and the +; number of vectors in the table in y. The current implementation limits +; the table size to 128 bytes (64 vectors) but this shouldn't be problem +; for now and may be changed later. +; + + .export condes + .import jmpvec + +.code + +condes: sta getbyt+1 + stx getbyt+2 + sty index + +loop: ldy index + beq done + dey + jsr getbyt + sta jmpvec+2 + dey + jsr getbyt + sta jmpvec+1 + jsr jmpvec + jmp loop + +done: rts + +; -------------------------------------------------------------------------- +; Data. The getbyte routine is placed in the data segment cause it's patched +; at runtime. + +.bss + +index: .byte 0 + +.data + +getbyt: lda $FFFF,y + rts + -- 2.39.5