From f067c4530fb385137a7458011b082690ac1c705e Mon Sep 17 00:00:00 2001 From: Greg King Date: Wed, 25 Dec 2019 14:53:32 -0500 Subject: [PATCH] Made the program-chaining exec() handle the X16 emulator's file-system. --- libsrc/cx16/exec.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libsrc/cx16/exec.c b/libsrc/cx16/exec.c index 90af4e406..17a547e68 100644 --- a/libsrc/cx16/exec.c +++ b/libsrc/cx16/exec.c @@ -1,7 +1,7 @@ /* ** Program-chaining function for Commodore platforms. ** -** 2019-11-08, Greg King +** 2019-12-25, Greg King ** ** This function exploits the program-chaining feature in Commander X16 BASIC's ROM. ** @@ -82,12 +82,15 @@ int __fastcall__ exec (const char* progname, const char* cmdline) } utoa (dv, basic.unit, 10); - /* Don't try to run a program that doesn't exist. */ - fd = open (progname, O_RDONLY); - if (fd < 0) { - return _mappederrno (4); /* file not found */ + /* The emulator supports only loading and saving on its file-system. */ + if (dv != 1) { + /* Don't try to run a program that doesn't exist. */ + fd = open (progname, O_RDONLY); + if (fd < 0) { + return _mappederrno (4); /* file not found */ + } + close (fd); } - close (fd); n = 0; do {