]> git.sur5r.net Git - cc65/commitdiff
Place the return code into ST
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 2 Mar 2004 17:08:07 +0000 (17:08 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 2 Mar 2004 17:08:07 +0000 (17:08 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2884 b7a2c559-68d2-44c3-8de9-860c34a00d81

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

index 46cfd93d2ea5ddee8fd6e90984a03f58acb0dace..bd9ca2dc7f1a1de75abbb463affe15160bbc47b9 100644 (file)
@@ -112,11 +112,10 @@ L1:       lda     sp,x
 
 NoIRQ1:        jsr     callmain
 
-; Back from main (this is also the _exit entry). Store the return code into
-; ST, where it is accessible from BASIC. Reset the IRQ vector if we chained 
-; it.
+; Back from main (this is also the _exit entry). Reset the IRQ vector if we 
+; chained it.
 
-_exit:  sta    ST
+_exit: pha                             ; Save the return code on stack
        lda     #<__IRQFUNC_COUNT__
        beq     NoIRQ2
        lda     IRQInd+1
@@ -148,6 +147,11 @@ L2:        lda     zpsave,x
                lda     mmusave
        sta     MMU_CR
 
+; Place the program return code into ST
+
+       pla
+       sta     ST
+
 ; Done, restore kernal vectors in an attempt to cleanup
 
        jmp     RESTOR
index 7065be9693f739947acc531591e1e27a685f81ae..172a9aa2efdb518f7be0b38092deed1c8014d616 100644 (file)
@@ -76,7 +76,8 @@ MemOk:        stx     sp
 
 ; Call module destructors. This is also the _exit entry.
 
-_exit: jsr     donelib         ; Run module destructors
+_exit:         pha                     ; Save the return code on stack
+       jsr     donelib         ; Run module destructors
 
 ; Restore system stuff
 
@@ -91,6 +92,11 @@ L2:  lda     zpsave,x
        dex
                bpl     L2
 
+; Store the return code into ST
+
+       pla
+       sta     ST
+
 ; Reset changed vectors
 
        jmp     RESTOR
index 7144d61aecd56d985fadab5f73a65a7b4d49149d..98f391c28ea8388dd68a2927769bdb6680bd1b42 100644 (file)
@@ -82,7 +82,7 @@ L1:   lda     sp,x
 
 ; Call module destructors. This is also the _exit entry.
 
-_exit:         sta     ST              ; Place return code into ST
+_exit:         pha                     ; Save the return code
        jsr     donelib         ; Run module destructors
 
 ; Restore system stuff
@@ -100,6 +100,11 @@ L2:        lda     zpsave,x
        dex
                bpl     L2
 
+; Place the program return code into ST
+
+       pla
+       sta     ST
+
 ; Reset changed vectors, back to basic
 
        jmp     RESTOR
index da0ef0ab2191db3d7bbc8438dc7a339689f76ad7..936d67c614f5076c8b0e5a5c6511f5f4ae9a6996 100644 (file)
@@ -442,7 +442,8 @@ ccopy2:     lda     __VIDRAM_START__,y
 ; Call module destructors. This is also the _exit entry and the default entry
 ; point for the break vector.
 
-_exit:  lda     #$00
+_exit:  pha                    ; Save the return code on stack
+       lda     #$00
         sta     irqcount        ; Disable custom irq handlers
         jsr    donelib         ; Run module destructors
 
@@ -481,6 +482,12 @@ _exit:  lda     #$00
         bne     @L0
 .endif
 
+; Place the program return code into ST
+
+       pla
+       ldy     #ST
+       sta     (sysp0),y
+
 ; Setup the welcome code at the stack bottom in the system bank.
 
         ldy     #$FF
index e6bdcb3d50c99f83bb09eb138c680c9862825a4a..12e083d872f02ba3f19b861f11447f64a2f8588f 100644 (file)
@@ -363,7 +363,8 @@ Init:       jsr     initlib
 ; Call module destructors. This is also the _exit entry and the default entry
 ; point for the break vector.
 
-_exit:  lda     #$00
+_exit:  pha                    ; Save the return code
+       lda     #$00
         sta     irqcount        ; Disable custom irq handlers
         jsr    donelib         ; Run module destructors
 
@@ -388,6 +389,12 @@ _exit:  lda     #$00
         bne     @L0
 .endif
 
+; Place the program return code into ST
+
+       pla
+       ldy     #ST
+       sta     (sysp0),y
+
 ; Setup the welcome code at the stack bottom in the system bank.
 
         ldy     #$FF
index 69ff92eb7ae827df3061be646b53722cc13bec65..a30231268a766ad7c7eab4876d21e2a7c5d2c1bc 100644 (file)
@@ -71,7 +71,8 @@ L1:   lda     sp,x
 
 ; Call module destructors. This is also the _exit entry.
 
-_exit: jsr     donelib         ; Run module destructors
+_exit:         pha                     ; Save the return code on stack
+       jsr     donelib         ; Run module destructors
 
 ; Restore system stuff
 
@@ -86,6 +87,11 @@ L2:  lda     zpsave,x
        dex
                bpl     L2
 
+; Store the program return code into ST
+
+       pla
+       sta     ST
+
 ; Back to basic
 
                rts
index ea515fe64f30b38fb6aa61777b0fb55486fcd661..07b3631c0ab44b5f4b490c1842c1423b582f4329 100644 (file)
@@ -96,7 +96,8 @@ L1:   lda     sp,x
 
 ; Back from main (this is also the _exit entry). Run module destructors.
 
-_exit:         lda     #0
+_exit:         pha                     ; Save the return code
+       lda     #0
         sta     irqcount        ; Disable custom IRQ handlers
         jsr    donelib         ; Run module destructors
 
@@ -113,6 +114,11 @@ L2:        lda     zpsave,x
        dex
                bpl     L2
 
+; Place the program return code into ST
+
+       pla
+       sta     ST
+
 ; Enable the ROM, reset changed vectors and return to BASIC
 
         sta     ENABLE_ROM
index 72d5799af9478e43aa7a2e5ae4110e98dc42771f..ab3d11cff975c8ea4df5ec8547b4ea1b6d96689e 100644 (file)
@@ -76,7 +76,8 @@ L1:   lda     sp,x
 
 ; Call module destructors. This is also the _exit entry.
 
-_exit: jsr     donelib         ; Run module destructors
+_exit:         pha                     ; Save the return code on stack
+       jsr     donelib         ; Run module destructors
 
 ; Restore system stuff
 
@@ -91,6 +92,11 @@ L2:  lda     zpsave,x
        dex
                bpl     L2
 
+; Place the program return code into ST
+
+       pla
+       sta     ST
+
 ; Reset changed vectors, back to basic
 
        jmp     RESTOR