From: Oliver Schmidt 
Date: Sun, 26 Jan 2014 17:10:01 +0000 (+0100)
Subject: Avoid indirect jmp with unknown vector address.
X-Git-Tag: V2.15~191
X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=4452156d1af88fab1bce2ac4a2cbea8800baccd6;p=cc65
Avoid indirect jmp with unknown vector address.
---
diff --git a/libsrc/apple2/crt0.s b/libsrc/apple2/crt0.s
index 27c44f016..a140a7249 100644
--- a/libsrc/apple2/crt0.s
+++ b/libsrc/apple2/crt0.s
@@ -107,7 +107,7 @@ exit:   ldx     #$02
         txs                     ; Re-init stack pointer
 
         ; We're done
-        jmp     (done)
+        jmp     done
 
         .segment        "INIT"
 
@@ -148,8 +148,8 @@ init:   ldx     #zpspace-1
         ; No BASIC.SYSTEM so quit to ProDOS dispatcher instead
         lda     #quit
-        sta     done
-        stx     done+1
+        sta     done+1
+        stx     done+2
         
         ; No BASIC.SYSTEM so use addr of ProDOS system global page
         lda     #<$BF00
@@ -202,8 +202,8 @@ q_param:.byte   $04             ; param_count
 
         .data
 
-        ; Location to jump to when we're done
-done:   .addr   DOSWARM
+        ; Final jump when we're done
+done:   jmp     DOSWARM         ; Potentially patched at runtime
 
         .segment        "ZPSAVE"
 
diff --git a/libsrc/apple2/exec.s b/libsrc/apple2/exec.s
index 914e10c50..c486306bb 100644
--- a/libsrc/apple2/exec.s
+++ b/libsrc/apple2/exec.s
@@ -161,8 +161,8 @@ setbuf: lda     #$00            ; Low byte
         ; Call loader stub after C libary shutdown
         lda     #target
-        sta     done
-        stx     done+1
+        sta     done+1
+        stx     done+2
 
         ; Initiate C libary shutdown
         jmp     _exit
diff --git a/libsrc/apple2/reboot.s b/libsrc/apple2/reboot.s
index 89c34bdf0..8ee1ba067 100644
--- a/libsrc/apple2/reboot.s
+++ b/libsrc/apple2/reboot.s
@@ -16,6 +16,6 @@ initreboot:
         ; Quit to PWRUP
         lda     #<$FAA6
         ldx     #>$FAA6
-        sta     done
-        stx     done+1
+        sta     done+1
+        stx     done+2
         rts