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