Skip to content

Commit 2cc744f

Browse files
committed
Use parent environment on EXEC when not given.
1 parent d981dfe commit 2cc744f

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/dos.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1762,18 +1762,21 @@ void int21()
17621762
char *cmdline = getstr(cmd_addr + 1, clen);
17631763
debug(debug_dos, "\texec command line: '%s %.*s'\n", prgname, clen, cmdline);
17641764
char *env = "\0\0";
1765-
if(get16(pb) != 0)
1765+
uint16_t env_seg = get16(pb);
1766+
if(!env_seg)
1767+
env_seg = get16(cpuGetAddress(get_current_PSP(), 0x2C));
1768+
if(env_seg != 0)
17661769
{
17671770
// Sanitize env
1768-
int eaddr = cpuGetAddress(get16(pb), 0);
1771+
int eaddr = cpuGetAddress(env_seg, 0);
17691772
while(memory[eaddr] != 0 && eaddr < 0xFFFFF)
17701773
{
17711774
while(memory[eaddr] != 0 && eaddr < 0xFFFFF)
17721775
eaddr++;
17731776
eaddr++;
17741777
}
17751778
if(eaddr < 0xFFFFF)
1776-
env = (char *)(memory + cpuGetAddress(get16(pb), 0));
1779+
env = (char *)(memory + cpuGetAddress(env_seg, 0));
17771780
}
17781781
if(run_emulator(fname, prgname, cmdline, env))
17791782
{

0 commit comments

Comments
 (0)