From ae4f9336b37d0474bb6168713bb99ca387d7b59e Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Sun, 19 Apr 2015 21:59:05 +0200
Subject: [PATCH] Behave more like BASIC.SYSTEM and allow for argv[0].
---
libsrc/apple2/exec.s | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/libsrc/apple2/exec.s b/libsrc/apple2/exec.s
index c486306bb..2f6d29802 100644
--- a/libsrc/apple2/exec.s
+++ b/libsrc/apple2/exec.s
@@ -28,6 +28,20 @@ _exec:
jsr pushname
bne oserr
+ ; ProDOS TechRefMan, chapter 5.1.5.1:
+ ; "The complete or partial pathname of the system program
+ ; is stored at $280, starting with a length byte."
+ ; In fact BASIC.SYSTEM does the same for BLOAD and BRUN of
+ ; binary programs so we should do the same too in any case
+ ; especially as _we_ rely on it in mainargs.s for argv[0].
+ ldy #$00
+ lda (sp),y
+ tay
+: lda (sp),y
+ sta $0280,y
+ dey
+ bpl :-
+
; Set pushed name
lda sp
ldx sp+1
@@ -53,17 +67,6 @@ _exec:
cmp #$FF ; SYS file?
bne binary ; No, check for BIN file
- ; ProDOS TechRefMan, chapter 5.1.5.1:
- ; "The complete or partial pathname of the system program
- ; is stored at $280, starting with a length byte."
- ldy #$00
- lda (sp),y
- tay
-: lda (sp),y
- sta $0280,y
- dey
- bpl :-
-
; SYS programs replace BASIC.SYSTEM so set in the ProDOS system bit map
; protection for pages $80 - $BF just in case BASIC.SYSTEM is there now
ldx #$0F ; Start with protection for pages $B8 - $BF
--
2.39.5