Re: [hatari-devel] An issue with a demo "We Were @" by Oxygene

[ Thread Index | Date Index | More Archives ]


On 10.2.2021 15.41, Cyprian Konador wrote:
Grzybson from forum has faced an issue with We Were @ by
Oxygene under Hatari.

Download link found there:

I've checked under Hatari 2.3.1 with a clean setup plus: "System" changed
to "STE", "Memory" to 2 or 4MB, "Hard disks" only GEMDOS drive.

2MB RAM stuck at:

4MB RAM stuck at:

Both 2 & 4MB work fine with latest Hatari Git
version, when using floppy version of the demo,
regardless of whether I used original TOS or
EmuTOS (v1.0).

I.e. I can't reproduce your issue with floppy
version. HD version seem broken though, but it
seems more like issue in demo itself.

When I tried real HD image with HD driver v9.04
and TOS v1.62, demo claimed at startup:
ERROR: WeWere HDD loader not enough low
       RAM. Try to remove any ram disk
       or ACCs

Increasing memory from 4MB to 14MB didn't help,
demo still thought that there's too little RAM.

When I tried the demo HD version with Hatari
GEMDOS HD emu instead of real HD image, it got
stuck after a while.  This happened in same place
regardless of TOS version.

Before this, Hatari complained:
GEMDOS 0x42 Fseek(295550, 64, 0) at PC 0x10063A
WARN : PREVENTED: program 0x0 accessing program 0x12476 file handle 0.

Above is GEMDOS process basepage check, which is
required for handling Fforced() file handles
correctly between parent and child processes.

File handle needs to be for process that opened
the file, or something that had been Fforced().
I've no idea what process the demo uses that
has NULL basepage.

If I remove that check from GEMDOS HD, demo
completes (see attached patch).

Because demo didn't work on real HD image with
real HD driver, I don't know whether it would
actually work on real HW.

	- Eero
diff --git a/src/gemdos.c b/src/gemdos.c
index c5b85985..a7f1bacf 100644
--- a/src/gemdos.c
+++ b/src/gemdos.c
@@ -1054,8 +1054,9 @@ static int GemDOS_GetValidFileHandle(int Handle)
 		if (FileHandles[Handle].Basepage == current || Forced >= 0)
 			return Handle;
 		/* bug in Atari program or in Hatari GEMDOS emu */
-		Log_Printf(LOG_WARN, "PREVENTED: program 0x%x accessing program 0x%x file handle %d.",
+		Log_Printf(LOG_WARN, "program (basebase 0x%x) accessing another program (basepage 0x%x) file handle %d.",
 			     current, FileHandles[Handle].Basepage, Handle);
+		return Handle;
 	/* invalid handle */
 	return -1;

Mail converted by MHonArc 2.6.19+