Blob Blame History Raw
From f067c4530fb385137a7458011b082690ac1c705e Mon Sep 17 00:00:00 2001
From: Greg King <gregdk@users.sf.net>
Date: Wed, 25 Dec 2019 14:53:32 -0500
Subject: [PATCH 131/170] 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 90af4e40..17a547e6 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 {
-- 
2.26.0