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