]> git.sur5r.net Git - cc65/commitdiff
Fixed issues with the last change: The return code must be pulled from stack
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 8 Mar 2004 20:38:58 +0000 (20:38 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 8 Mar 2004 20:38:58 +0000 (20:38 +0000)
before the stack pointer is reset.

git-svn-id: svn://svn.cc65.org/cc65/trunk@2906 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/c128/crt0.s
libsrc/c16/crt0.s
libsrc/c64/crt0.s
libsrc/pet/crt0.s
libsrc/plus4/crt0.s
libsrc/vic20/crt0.s

index bd9ca2dc7f1a1de75abbb463affe15160bbc47b9..dc31bae64d6c1ca2b608953fef148b5bfa62280a 100644 (file)
@@ -112,7 +112,7 @@ L1: lda     sp,x
 
 NoIRQ1:        jsr     callmain
 
-; Back from main (this is also the _exit entry). Reset the IRQ vector if we 
+; Back from main (this is also the _exit entry). Reset the IRQ vector if we
 ; chained it.
 
 _exit: pha                             ; Save the return code on stack
@@ -129,11 +129,6 @@ _exit:     pha                             ; Save the return code on stack
 
 NoIRQ2: jsr            donelib
 
-; Reset the stack
-
-       ldx     spsave
-       txs
-
 ; Copy back the zero page stuff
 
        ldx     #zpspace-1
@@ -142,16 +137,18 @@ L2:       lda     zpsave,x
        dex
        bpl     L2
 
-; Reset the memory configuration
-
-               lda     mmusave
-       sta     MMU_CR
-
 ; Place the program return code into ST
 
        pla
        sta     ST
 
+; Reset the stack and the memory configuration
+
+       ldx     spsave
+       txs
+               ldx     mmusave
+       stx     MMU_CR
+
 ; Done, restore kernal vectors in an attempt to cleanup
 
        jmp     RESTOR
index 172a9aa2efdb518f7be0b38092deed1c8014d616..7f38719f08dc3f66a0c7f8f3fcb53e96dd29921b 100644 (file)
@@ -79,11 +79,6 @@ MemOk:       stx     sp
 _exit:         pha                     ; Save the return code on stack
        jsr     donelib         ; Run module destructors
 
-; Restore system stuff
-
-       ldx     spsave
-       txs
-
 ; Copy back the zero page stuff
 
        ldx     #zpspace-1
@@ -97,6 +92,11 @@ L2:  lda     zpsave,x
        pla
        sta     ST
 
+; Restore the stack pointer
+
+       ldx     spsave
+       txs
+
 ; Reset changed vectors
 
        jmp     RESTOR
index 98f391c28ea8388dd68a2927769bdb6680bd1b42..f75a5c46b1e11bb8337b9d6b01ae964c762a0f95 100644 (file)
@@ -85,13 +85,6 @@ L1:  lda     sp,x
 _exit:         pha                     ; Save the return code
        jsr     donelib         ; Run module destructors
 
-; Restore system stuff
-
-       ldx     spsave
-       txs                     ; Restore stack pointer
-               lda     mmusave
-       sta     $01             ; Restore memory configuration
-
 ; Copy back the zero page stuff
 
                ldx     #zpspace-1
@@ -105,6 +98,13 @@ L2: lda     zpsave,x
        pla
        sta     ST
 
+; Restore system stuff
+
+       ldx     spsave
+       txs                     ; Restore stack pointer
+               ldx     mmusave
+       stx     $01             ; Restore memory configuration
+
 ; Reset changed vectors, back to basic
 
        jmp     RESTOR
index a30231268a766ad7c7eab4876d21e2a7c5d2c1bc..fb0377677548915ac83359d2838b4f30e70e9d0e 100644 (file)
@@ -74,11 +74,6 @@ L1:  lda     sp,x
 _exit:         pha                     ; Save the return code on stack
        jsr     donelib         ; Run module destructors
 
-; Restore system stuff
-
-       ldx     spsave
-       txs                     ; Restore stack pointer
-
 ; Copy back the zero page stuff
 
        ldx     #zpspace-1
@@ -92,6 +87,11 @@ L2:  lda     zpsave,x
        pla
        sta     ST
 
+; Restore the stack pointer
+
+       ldx     spsave
+       txs                     ; Restore stack pointer
+
 ; Back to basic
 
                rts
index 07b3631c0ab44b5f4b490c1842c1423b582f4329..b962abd967cc70a66a1e6e09b604982444bd303e 100644 (file)
@@ -101,11 +101,6 @@ _exit:     pha                     ; Save the return code
         sta     irqcount        ; Disable custom IRQ handlers
         jsr    donelib         ; Run module destructors
 
-; Restore system stuff
-
-               ldx     spsave
-               txs
-
 ; Copy back the zero page stuff
 
        ldx     #zpspace-1
@@ -119,6 +114,11 @@ L2:        lda     zpsave,x
        pla
        sta     ST
 
+; Restore the stack pointer
+
+               ldx     spsave
+               txs
+
 ; Enable the ROM, reset changed vectors and return to BASIC
 
         sta     ENABLE_ROM
index ab3d11cff975c8ea4df5ec8547b4ea1b6d96689e..a0425cee7c11e614ce3830196a1270c883f28e57 100644 (file)
@@ -79,11 +79,6 @@ L1:  lda     sp,x
 _exit:         pha                     ; Save the return code on stack
        jsr     donelib         ; Run module destructors
 
-; Restore system stuff
-
-       ldx     spsave
-       txs                     ; Restore stack pointer
-
 ; Copy back the zero page stuff
 
                ldx     #zpspace-1
@@ -97,6 +92,11 @@ L2:  lda     zpsave,x
        pla
        sta     ST
 
+; Restore the stack pointer
+
+       ldx     spsave
+       txs
+
 ; Reset changed vectors, back to basic
 
        jmp     RESTOR