jacobpalm/costa

Crash when moving icons

Closed this issue · 6 comments

After the Move option for a desktop icon is selected, it just freezes. When running DESKTOP.EXE directly (as opposed to using COSTA.BAT), it spits this out:

Illegal function call in line 0 of module DESKTOP   at address 2FE4: 2E76

Press any key to return to system

Running on FreeDos kernel version 1.1.35w.

Thanks for letting me know. I've just tried out Costa 1.7.4 on FreeDOS and have so far not been able to reproduce the issue.

Some follow-up questions:

    • Are you using Costa 1.7.4 or another version?
    • Did the issue occur right away - or only after you added/modified some icons on the desktop?
    • Does the issue occur on multiple desktops, or just one specifically?
    • How much conventional memory does the "mem" command list as available before starting Costa?

Questions 2 and 3 are to determine if maybe one of the data files has become corrupt. If possible, you are welcome to provide me the DESKLNKx.DAT files from the DATA\CONFIG directory - so I can examine if something has gone wrong in one of them.

Question 4 is based on the fact that the icon move function creates some memory buffers for storing the icon and the backdrop, and I'm wondering if maybe memory is an error - though unlikely.

Also, I've attached here a pre-release version of DESKTOP.EXE from version 1.7.5 for you to try out, if you'd like.
This version introduces the feature of moving icons between desktops, which means that some of the icon move code has been reworked. It just may be that the issue has been resolved by this.

DESK175.zip

If you do try it out, please let me know the result.

Thanks for the reply, I’m running Costa 1.7.4. The VM has ~16MB of RAM, which is probably more than enough.

I did some more digging around and the crash only happens when DOSIDLE is running, which I’m pretty sure is the issue.

Which version of DOSIDLE? I've tried running Costa 1.7.4 on FreeDOS with DOSIDLE versions 1.32, 2.10 and 2.51 today, and have so far not been able to reproduce a crash. I've also tried running with and without FDAPM, and with FDAPM combined with DOSIDLE.

It would really help to know more about your system - perhaps a copy of FDAUTO.BAT and FDCONFIG.SYS from the root of your C: drive.

Did you try the new version of the desktop I linked to above?

One thing I found in the DOSIDLE documentation was this - it might be of relevance, if you're loading DOSIDLE before a mouse driver. If no mouse driver is loaded, Costa loads one automatically when you start it - so that could possibly be an issue.

NOTE: If you have a mouse, place the above line AFTER the mouse
driver. Otherwise, DOSIDLE won't be able to detect your mouse driver
and hook to its API, which will cause problems with the programs that
use the mouse.

I have not been able to reproduce the issue, but I have reworked the part of the code that could be related to the crash. In the icon move code, Costa called the mouse driver to limit mouse cursor movement - to prevent icons being placed outside of the screen border. Now, I have removed this limit and instead make sure the icon is never drawn outside of boundaries by checking and correcting location before drawing. Thus, no mouse driver calls are made in the icon move code that aren't also used everywhere else, which should eliminate the source of the error.