]> git.sur5r.net Git - cc65/commitdiff
Use the condes feature
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 22 Nov 2000 22:19:09 +0000 (22:19 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 22 Nov 2000 22:19:09 +0000 (22:19 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@470 b7a2c559-68d2-44c3-8de9-860c34a00d81

32 files changed:
libsrc/apple2/Makefile
libsrc/apple2/crt0.s
libsrc/atari/Makefile
libsrc/atari/crt0.s
libsrc/c128/Makefile
libsrc/c128/crt0.s
libsrc/c64/Makefile
libsrc/c64/crt0.s
libsrc/cbm/Makefile
libsrc/cbm610/Makefile
libsrc/cbm610/crt0.s
libsrc/common/Makefile
libsrc/common/_heap.s
libsrc/conio/Makefile
libsrc/dbg/Makefile
libsrc/geos/devel/Makefile
libsrc/geos/devel/crt0.s
libsrc/geos/disk/Makefile
libsrc/geos/dlgbox/Makefile
libsrc/geos/file/Makefile
libsrc/geos/graph/Makefile
libsrc/geos/memory/Makefile
libsrc/geos/menuicon/Makefile
libsrc/geos/mousesprite/Makefile
libsrc/geos/process/Makefile
libsrc/geos/system/Makefile
libsrc/pet/Makefile
libsrc/pet/crt0.s
libsrc/plus4/Makefile
libsrc/plus4/crt0.s
libsrc/runtime/Makefile
libsrc/runtime/condes.s

index cad5da42f92c2e687b8538fc204c53a04d72cd14..17813f44d592a29a2bc6bd07347aa7bb83561cae 100644 (file)
@@ -5,12 +5,10 @@
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 C_OBJS =
index 7cc6cd72fb8ed02f65cfca16739fd1a28ccf3a1c..f7ef6f39eed5836c3f22486d734473cf8eacb6e7 100644 (file)
@@ -5,8 +5,8 @@
 ;
 
        .export         _exit
-       .import         __hinit
-       .import         zerobss, push0, doatexit
+       .import         initlib, donelib
+       .import         zerobss, push0
        .import         _main
 
        .include         "apple2.inc"
@@ -66,9 +66,9 @@ L1:   lda     sp,x
        lda     #>TOPMEM
                sta     sp+1            ; Set argument stack ptr
 
-; Initialize the heap
+; Call module constructors
 
-       jsr     __hinit
+       jsr     initlib
 
 ; Initialize conio stuff
 
@@ -77,22 +77,24 @@ L1: lda     sp,x
 
 ; Set up to use Apple ROM $C000-$CFFF
 
-       ;;      sta     USEROM
+       ;;      sta     USEROM
 
 ; Pass an empty command line
 
-       jsr     push0           ; argc
-       jsr     push0           ; argv
+       jsr     push0           ; argc
+       jsr     push0           ; argv
 
-       ldy     #4              ; Argument size
-               jsr     _main           ; call the users code
+       ldy     #4              ; Argument size
+               jsr     _main           ; call the users code
 
-; fall thru to exit...
+; Call module destructors. This is also the _exit entry.
 
-_exit: lda     #$ff
-       sta     TEXTTYP
+_exit: jsr     donelib
+                      
+; Restore system stuff
 
-       jsr     doatexit        ; call exit functions
+       lda     #$ff            ; Reset text mode
+       sta     TEXTTYP
 
        ldx     spsave
        txs                     ; Restore stack pointer
index 4833aee05abcd133f68c4eef923981c2be635eb9..bc8dfd80ee1540c118ece2df7d03aa69d5962325 100644 (file)
@@ -8,12 +8,10 @@ ATARIDEFS = -DNUMDRVS=4
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $(ATARIDEFS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $(ATARIDEFS) $<
 
 C_OBJS =
index 7cb180c931ebf26da2748a00f56ab1fbca37af6f..3937f0fb077c0f79083fbefc759bb939b370d04b 100644 (file)
@@ -15,8 +15,9 @@ RESERVE_MOUSE_MEMORY  = 1     ; for P/M
        .export         mouse_pm0
 .endif
        .export         _exit
-       .import         getargs, argc, argv
-       .import         __hinit, initconio, zerobss, pushax, doatexit
+       .import         getargs, argc, argv       
+       .import         initlib, donelib
+               .import         initconio, zerobss, pushax
        .import         _main,__filetab,getfd
        .import         __CODE_LOAD__, __BSS_LOAD__
        .import         __graphmode_used
@@ -117,9 +118,9 @@ L1: lda     sp,x
        stx     old_shflok
        sta     SHFLOK
 
-; Initialize the heap
+; Call module constructors
 
-       jsr     __hinit
+       jsr     initlib
 
 ; Initialize conio stuff
 
@@ -146,20 +147,22 @@ L1:       lda     sp,x
 
        lda     argc
        ldx     argc+1
-       jsr     pushax          ; argc
+       jsr     pushax          ; argc
        lda     #<argv
        ldx     #>argv
-       jsr     pushax          ; argv
+       jsr     pushax          ; argv
 
-       ldy     #4              ; Argument size
-       jsr     _main           ; call the users code
+       ldy     #4              ; Argument size
+       jsr     _main           ; call the users code
 
-; fall thru to exit...
+; Call module destructors. This is also the _exit entry.
 
-_exit: jsr     doatexit        ; call exit functions
+_exit: jsr     donelib         ; Run module destructors
+
+; Restore system stuff
 
        ldx     spsave
-       txs                     ; Restore stack pointer
+       txs                     ; Restore stack pointer
 
 ; restore left margin
 
index a75150b1f1f2dbdd203264025a30278ddd458fcd..2ae36d8818c6f5d33441ac659eea263ca578aaed 100644 (file)
@@ -5,12 +5,10 @@
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 C_OBJS =
index 404bb8427c7f4210c711051b5590da964c799398..cabef41da6b1ff5666f8c08eefd52a3920ac4e53 100644 (file)
@@ -5,8 +5,9 @@
 ;
 
        .export         _exit
-       .import         __hinit, initconio, doneconio, zerobss
-       .import         push0, doatexit, _main
+       .import         initlib, donelib
+       .import         initconio, doneconio, zerobss
+       .import         push0, _main
 
        .include        "c128.inc"
        .include        "../cbm/cbm.inc"
@@ -93,9 +94,9 @@ L1:   lda     sp,x
        lda     #>$C000
        sta     sp+1
 
-; Initialize the heap
+; Call module constructors
 
-       jsr     __hinit
+       jsr     initlib
 
 ; Initialize conio stuff
 
@@ -109,9 +110,9 @@ L1: lda     sp,x
        ldy     #4              ; Argument size
                jsr     _main           ; call the users code
 
-; fall thru to exit...
+; Call module destructors. This is also the _exit entry.
 
-_exit: jsr     doatexit        ; call exit functions
+_exit: jsr     donelib         ; Run module destructors
 
 ; Reset the conio stuff
 
index 15806f5bc04aba89e61b063a99b25511ac88aaee..5a69bdfed26db0c93eefe2f7d23ca0bdea0846df 100644 (file)
@@ -5,12 +5,10 @@
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 C_OBJS =
index 5730fd758edb12c5ab300bbc6341ae97eab6a95a..3f57be7ae804d7da077259b79b47d7f98d2baad6 100644 (file)
@@ -5,12 +5,10 @@
 ;
 
        .export         _exit
-               .import         __hinit, initconio, zerobss, push0, condes
+       .import         initlib, donelib
+               .import         initconio, zerobss, push0
        .import         _main
 
-               .import         __CONSTRUCTOR_TABLE__, __CONSTRUCTOR_COUNT__
-       .import         __DESTRUCTOR_TABLE__, __DESTRUCTOR_COUNT__
-
        .include        "c64.inc"
        .include        "../cbm/cbm.inc"
 
@@ -92,9 +90,9 @@ L1:   lda     sp,x
        lda     #>$D000
                sta     sp+1            ; Set argument stack ptr
 
-; Initialize the heap
+; Call module constructors
 
-       jsr     __hinit
+       jsr     initlib
 
 ; Initialize conio stuff
 
@@ -108,12 +106,9 @@ L1:        lda     sp,x
        ldy     #4              ; Argument size
                jsr     _main           ; call the users code
 
-; Call module destructors
+; Call module destructors. This is also the _exit entry.
 
-_exit: lda     #<__DESTRUCTOR_TABLE__
-       ldx     #>__DESTRUCTOR_TABLE__
-       ldy     #<(__DESTRUCTOR_COUNT__*2)
-       jsr     condes
+_exit: jsr     donelib         ; Run module destructors
 
 ; Restore system stuff
 
index 552a8af882487b484e03bb35dc9ef684924f3a37..5a3e258c5495e642393d83051d90eb874f38c8c4 100644 (file)
@@ -5,12 +5,10 @@
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 C_OBJS =
index 433e5555d1910e5109fefde07c2d6b0187fafbe6..1077641ebc7f0bb8339ef7bfb17752ae6895af6e 100644 (file)
@@ -5,12 +5,10 @@
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 C_OBJS =
index 5a9a9011b66c70b05a78863b533c50df339ec6c2..3c18b6bf4bbc18c47518e8a80e1641c3a35da5a6 100644 (file)
@@ -5,7 +5,8 @@
 ;
 
        .export         _exit
-       .import         __hinit, push0, doatexit, _main
+       .import         initlib, donelib
+       .import         push0, _main
        .import         initconio
        .import         __BSS_RUN__, __BSS_SIZE__
        .import         irq, nmi
@@ -235,9 +236,13 @@ Z4:
 
 ; This code is in page 2, so we may now start calling subroutines safely,
 ; since the code we execute is no longer in the stack page.
+; Call module constructors
 
-       jsr     __hinit                 ; Initialize the heap
-       jsr     initconio               ; Initialize conio stuff
+       jsr     initlib
+
+; Initialize conio stuff
+
+       jsr     initconio
 
 ; Create the (empty) command line for the program
 
@@ -323,9 +328,9 @@ Start:
                ldy     #4              ; Argument size
                jsr     _main           ; call the users code
 
-; Fall thru to exit.
+; Call module destructors. This is also the _exit entry.
 
-_exit:         jsr     doatexit        ; call exit functions
+_exit: jsr     donelib         ; Run module destructors
 
 ; Clear the start of the zero page, since it will be interpreted as a
 ; (garbage) BASIC program otherwise. This is also the default entry for
index 1e64b0b8a3169622fb4a51c92215aa884f9d1e7d..48db0cdbfc8d0d06172b08683f7e28d05568f688 100644 (file)
@@ -5,12 +5,10 @@
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $<
        @$(AS) -g -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 C_OBJS = fclose.o fgets.o fprintf.o calloc.o _fopen.o\
index 427ecaea1e78c58ca21ba9ba5e5f102f3726c794..f3a5ade483215bd798cc7d265b1cb6769650f0ed 100644 (file)
@@ -5,7 +5,7 @@
 ;
 
        .export         __horg, __hptr, __hend, __hfirst, __hlast
-       .export         __hinit
+               .constructor    initheap, 24
                .import         __BSS_RUN__, __BSS_SIZE__, __stksize
        .importzp       sp
 
@@ -17,19 +17,17 @@ __hptr:
        .word   __BSS_RUN__+__BSS_SIZE__        ; Dito
 __hend:
                .word   __BSS_RUN__+__BSS_SIZE__
-__hfirst:               
+__hfirst:
        .word   0
 __hlast:
        .word   0
 
 
-;
-; Initialization. Must be called from startup!
-;
+; Initialization. Will be called from startup!
 
 .code
 
-__hinit:
+initheap:
        sec
        lda     sp
        sbc     __stksize
@@ -39,7 +37,3 @@ __hinit:
        sta     __hend+1
        rts
 
-
-
-
-
index ee9d691f08f1bfb9857e0db697ba5fe5f5077bdf..77152a86fa90d4da587c514df1177ff38c9b4a23 100644 (file)
@@ -5,12 +5,10 @@
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 C_OBJS =
index 1dcf8b116d48ea60046e4185cd8371b5afbf415b..326d3dfab78316802ff867a9891d5b4ea4a92a0e 100644 (file)
@@ -5,12 +5,10 @@
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $<
        @$(AS) -g -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 C_OBJS = dbg.o
index e7c140ad54c8deb57bf1ad59ce1606299d7cd938..ef41ffbcbe419654b83359c734942375b5e0b03d 100644 (file)
@@ -5,7 +5,6 @@
 #
 
 %.o:   %.s
-       @echo $<
        @$(AS) -o $@ $(AFLAGS) $<
 
 
@@ -14,4 +13,4 @@ S_OBJS        = crt0.o
 all: $(S_OBJS)
 
 clean:
-       @rm -f *.~ $(S_OBJS) core
\ No newline at end of file
+       @rm -f *.~ $(S_OBJS) core
index 00cac2d4c88ac37a2354dd20cff97a27c501cd78..788a0aeb8e08f3fdccec235776a30df5b84bfd45 100644 (file)
@@ -7,10 +7,11 @@
 
 ; no __hinit
 
-       .export         _exit
+       .export         _exit  
+       .import         initlib, donelib
                .import         pushax
        .import         _main
-       .import         zerobss, doatexit
+       .import         zerobss
 
 ; ------------------------------------------------------------------------
 ; Define and export the ZP variables for the C64 runtime
@@ -54,9 +55,9 @@ regbank =     $a3             ; 6 bytes hopefully not used by Kernal
        lda     #>$7900
                sta     sp+1            ; Set argument stack ptr
 
-; Initialize the heap
+; Call module constructors
 
-;;!    jsr     __hinit
+       jsr     initlib
 
 ; Pass an empty command line
 
@@ -69,9 +70,10 @@ regbank =    $a3             ; 6 bytes hopefully not used by Kernal
                jsr     _main           ; call the users code
        jmp     $c1c3           ; jump to GEOS MainLoop
 
-; exit must be called from the code!
+; Call module destructors. This is also the _exit entry which must be called
+; explicitly by the code.
 
-_exit: 
-       jsr     doatexit        ; call exit functions
+_exit: jsr     donelib         ; Run module destructors
 
-       jmp     $c22c           ; EnterDeskTop
+       jmp     $c22c           ; EnterDeskTop
+                        
index 9020128e11763a0543110284ddd56a556769c1be..0ec9ac8ea190983bcd16a343e691859ef26d154d 100644 (file)
@@ -1,10 +1,9 @@
 #
 # Makefile for GEOS lib
 # for cc65
-# 
+#
 
 %.o:   %.s
-       @echo $<
        @$(AS) -o $@ $(AFLAGS) $<
 
 
@@ -17,4 +16,4 @@ S_OBJS        = blkalloc.o calcblksfree.o changediskdevice.o chkdkgeos.o enterturbo.o e
 all: $(S_OBJS)
 
 clean:
-       @rm -f *.~ $(S_OBJS) core
\ No newline at end of file
+       @rm -f *.~ $(S_OBJS) core
index 3f8cb8e0f264007f5f469a7ac03f590338d32b5a..29a83c33e84d94d87e201d4325b15a4d61e2cdc6 100644 (file)
@@ -5,7 +5,6 @@
 #
 
 %.o:   %.s
-       @echo $<
        @$(AS) -o $@ $(AFLAGS) $<
 
 
@@ -16,4 +15,4 @@ S_OBJS        = dodlgbox.o rstrfrmdialogue.o\
 all: $(S_OBJS)
 
 clean:
-       @rm -f *.~ $(S_OBJS) core
\ No newline at end of file
+       @rm -f *.~ $(S_OBJS) core
index 01299b30bf1d7aad37515d1ff2992df5cae48af3..5b8638feeaa239037758cf88667243bb5f82ab7a 100644 (file)
@@ -1,10 +1,9 @@
 #
 # Makefile for GEOS lib
 # for cc65
-# 
+#
 
 %.o:   %.s
-       @echo $<
        @$(AS) -o $@ $(AFLAGS) $<
 
 
@@ -18,4 +17,4 @@ S_OBJS        = get1stdirentry.o getnxtdirentry.o\
 all: $(S_OBJS)
 
 clean:
-       @rm -f *.~ $(S_OBJS) core
\ No newline at end of file
+       @rm -f *.~ $(S_OBJS) core
index 1abf1a912c2807a1c841d23fe2ea8413e30e7c6f..9ea62b99431552576f5f5213f7a5950c54cf2d78 100644 (file)
@@ -5,7 +5,6 @@
 #
 
 %.o:   %.s
-       @echo $<
        @$(AS) -o $@ $(AFLAGS) $<
 
 
@@ -19,4 +18,4 @@ S_OBJS        = drawline.o drawpoint.o framerectangle.o hlineregs.o horizontalline.o\
 all: $(S_OBJS)
 
 clean:
-       @rm -f *.~ $(S_OBJS) core
\ No newline at end of file
+       @rm -f *.~ $(S_OBJS) core
index ae00d7167310e42231960ccce71278c9a6c2c6dd..f9727fde5dd83a9367bb6cf900ccbe83610d0284 100644 (file)
@@ -5,7 +5,6 @@
 #
 
 %.o:   %.s
-       @echo $<
        @$(AS) -o $@ $(AFLAGS) $<
 
 
@@ -16,4 +15,4 @@ S_OBJS        = crc.o doublepop.o reuregs.o clearram.o fillram.o initram.o movedata.o\
 all: $(S_OBJS)
 
 clean:
-       @rm -f *.~ $(S_OBJS) core
\ No newline at end of file
+       @rm -f *.~ $(S_OBJS) core
index bf3a9bd2f2f71abb9c44b2011a5dc67c9e41b13d..2a58d78532f49cd925760ae7e093c1e6666beba0 100644 (file)
@@ -5,7 +5,6 @@
 #
 
 %.o:   %.s
-       @echo $<
        @$(AS) -o $@ $(AFLAGS) $<
 
 
@@ -15,4 +14,4 @@ S_OBJS        = domenu.o dopreviousmenu.o redomenu.o recovermenu.o recoverallmenus.o\
 all: $(S_OBJS)
 
 clean:
-       @rm -f *.~ $(S_OBJS) core
\ No newline at end of file
+       @rm -f *.~ $(S_OBJS) core
index 30c48c7305143524bf3d51da86c64e50f56871e3..0fb3cad23892f27ccc6e8234b320957305adc9d8 100644 (file)
@@ -5,7 +5,6 @@
 #
 
 %.o:   %.s
-       @echo $<
        @$(AS) -o $@ $(AFLAGS) $<
 
 
@@ -17,4 +16,4 @@ S_OBJS        = startmousemode.o clearmousemode.o mouseup.o mouseoff.o\
 all: $(S_OBJS)
 
 clean:
-       @rm -f *.~ $(S_OBJS) core
\ No newline at end of file
+       @rm -f *.~ $(S_OBJS) core
index 91ad9d2de01ad047c2e1bdf1ce7e6d8f6dcd3453..47c195a652a8c180b5a91805c625aaaa5714cc04 100644 (file)
@@ -5,7 +5,6 @@
 #
 
 %.o:   %.s
-       @echo $<
        @$(AS) -o $@ $(AFLAGS) $<
 
 
@@ -14,4 +13,4 @@ S_OBJS        = processinitrestartenable.o processblock.o processfreeze.o sleep.o
 all: $(S_OBJS)
 
 clean:
-       @rm -f *.~ $(S_OBJS) core
\ No newline at end of file
+       @rm -f *.~ $(S_OBJS) core
index 8d0b8106d198535f358e2787010f8bbdc45a5414..e761f581fdbff761ee35614911d3161ca6047743 100644 (file)
@@ -5,7 +5,6 @@
 #
 
 %.o:   %.s
-       @echo $<
        @$(AS) -o $@ $(AFLAGS) $<
 
 
@@ -15,4 +14,4 @@ S_OBJS        = callroutine.o enterdesktop.o firstinit.o getrandom.o getserialnumber.o\
 all: $(S_OBJS)
 
 clean:
-       @rm -f *.~ $(S_OBJS) core
\ No newline at end of file
+       @rm -f *.~ $(S_OBJS) core
index 6e5131db84ceeed557cdc49c36ec903c1ac047f6..2f3d280ffb1c2bc714d3739e8e0639061c9e380c 100644 (file)
@@ -5,12 +5,10 @@
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 C_OBJS =
index 21bdf0107034f900d15cd2e07896e9081372afe8..24ed2691de064af78acf7b9f050edbe36b71131b 100644 (file)
@@ -4,8 +4,9 @@
 ; This must be the *first* file on the linker command line
 ;
 
-       .export         _exit
-               .import         __hinit, initconio, zerobss, push0, doatexit
+       .export         _exit                    
+       .import         initlib, donelib
+               .import         initconio, zerobss, push0
        .import         _main
 
        .include        "pet.inc"
@@ -84,9 +85,9 @@ L1:   lda     sp,x
        lda     MEMSIZE+1
                sta     sp+1            ; Set argument stack ptr
 
-; Initialize the heap
+; Call module constructors
 
-       jsr     __hinit
+       jsr     initlib
 
 ; Initialize conio stuff
 
@@ -100,9 +101,11 @@ L1:        lda     sp,x
        ldy     #4              ; Argument size
                jsr     _main           ; call the users code
 
-; fall thru to exit...
+; Call module destructors. This is also the _exit entry.
 
-_exit: jsr     doatexit        ; call exit functions
+_exit: jsr     donelib         ; Run module destructors
+
+; Restore system stuff
 
        ldx     spsave
        txs                     ; Restore stack pointer
index ad77f5c673e72a4d2b8217d364a097eac2e09c66..46bc1dd0aab07c7dbdc2a4da6cca0f553bec970a 100644 (file)
@@ -5,12 +5,10 @@
 .SUFFIXES: .o .s .c
 
 %.o:           %.c
-       @echo $<
        @$(CC) $(CFLAGS) $<
        @$(AS) -o $@ $(AFLAGS) $(*).s
 
 %.o:   %.s
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 C_OBJS =
index b33ff667a285bcb33d1288b8a5e58ac41ecb7f1c..3f25e772a10cc6a0729b2974567ae9b4a22bae7c 100644 (file)
@@ -4,8 +4,9 @@
 ; This must be the *first* file on the linker command line
 ;
 
-       .export         _exit
-       .import         __hinit, push0, doatexit, _main
+       .export         _exit  
+       .import         initlib, donelib
+       .import         push0, _main
        .import         initconio, doneconio, zerobss
 
        .include        "plus4.inc"
@@ -87,9 +88,9 @@ L1:   lda     sp,x
 MemOk: stx     sp
        sty     sp+1            ; set argument stack ptr
 
-; Initialize the heap
+; Call module constructors
 
-       jsr     __hinit
+       jsr     initlib
 
 ; Initialize conio stuff
 
@@ -103,9 +104,12 @@ MemOk:     stx     sp
        ldy     #4              ; Argument size
                jsr     _main           ; call the users code
 
-; fall thru to exit...
+; Call module destructors. This is also the _exit entry.
+
+_exit: jsr     donelib         ; Run module destructors
+
+; Restore system stuff
 
-_exit: jsr     doatexit        ; call exit functions
        ldx     spsave
        txs
 
index 3fb6dfca7938ea31fa6b80b7835472b3b110a4a0..febeb68f4e7c38d601cc3a63bdde1acd6421cf87 100644 (file)
@@ -5,11 +5,9 @@
 .SUFFIXES: .o .s .c
 
 .c.s:
-       @echo $<
        @$(CC) $(CFLAGS) $<
 
 .s.o:
-       @echo $<
        @$(AS) -g -o $@ $(AFLAGS) $<
 
 OBJS =         add.o           \
index e9409753500e8c46d809e598c73a8689cfebbe75..51130f4041e7b0df65df66566ef656b94f2b1167 100644 (file)
@@ -16,7 +16,7 @@
 ; lies in the data segment so it's address may be patched at runtime.
 ;
 
-               .export libinit, libdone, condes
+               .export initlib, donelib, condes
                .export jmpvec
 
                .import __CONSTRUCTOR_TABLE__, __CONSTRUCTOR_COUNT__
@@ -29,7 +29,7 @@
 ; --------------------------------------------------------------------------
 ; Initialize library modules
 
-.proc  libinit
+.proc  initlib
 
        lda     #<__CONSTRUCTOR_TABLE__
        ldx     #>__CONSTRUCTOR_TABLE__
 ; --------------------------------------------------------------------------
 ; Cleanup library modules
 
-.proc  libdone
+.proc  donelib
 
-       lda     #<__DESTRUCTOR_TABLE__
-       ldx     #>__DESTRUCTOR_TABLE__
-       ldy     #<(__DESTRUCTOR_COUNT__*2)
-       bne     condes
+       lda     #<__DESTRUCTOR_TABLE__
+       ldx     #>__DESTRUCTOR_TABLE__
+       ldy     #<(__DESTRUCTOR_COUNT__*2)
+       bne     condes
        rts
 
 .endproc