[ back to toc ]

limits of DOS file access with fopen()

Date: 2002/01/13 10:03

Q:
Dear Mr. Verhas,

I have a GUI for my own personal use, which I programmed using Turbo C
2.01. It provides a reliable clock legible from a distance, and displays
the day, date, and calendar for the current month, but also launches DOS
programs and displays library files, all with graphics like what you see
on the LCARS computers on Star Trek. It has its own font drivers,
bitmapped and scalable, and plays MP3 files, etc. I would like to offer it
as freeware on the Internet, but I have one little problem. Its various
programs hand off to one another, and each time this happens the called
program has to load 3 or 4 files. This all works smoothly 3 or 4 times
before *NAME-DELETED* Gates steps in and refuses me any further file access. One
test version displays the name of the file and path MS-DOS refuses to open
after my program has called the C function system("DIR filename") so I can
see that DOS is looking right at the file it claims it can't access, then
returns to the main program, which goes to a graphics "INTRUDER ALERT"
screen (because it in turn is unable to load its one bitmapped font files
[but still has its own embedded scalable font]), at which point my program
will shut down when I press ESC. DOS won't honor any system() call (which
is equivalent to typing in a command at the prompt) after the error is
generated. Once I restart my GUI everything is fine until Mr. Gates shows
up again, which means Windows has told DOS to straighten up and fly right.
This must be a stack overflow, but adding STACKS=18,256 to the CONFIG.SYS
doesn't make any difference. DOS always refuses access at the same point
in a particular test, regardless of the STACKS specification
I'm using a 5-year-old IBM-compatible Japanese-version Toshiba DynaBook,
because the newer computers won't even display Borland's IDE on the screen
without a special setup in CONFIG.SYS. I usually launch my system from an
icon under Windows 95, but the problem persists even with Windows shut
down and my GUI running under DOS. It also persists on other computers.
I've tried it under Windows 98, 2000, and ME. It's the same story. I can
launch my graphical browser or some other software 4 times in a row
without incident, but that's the limit.
For my own use, it's no problem. I have a nice clock in every room, on old
laptops that would otherwise be thrown away. But there are a lot of LCARS
buffs who would like to have this, and I don't want to release it until I
can solve this problem.
My file routines are the same as all the ones you see in books, etc. They
just accept refusal to access and give up. A retry routine doesn't help
either.
I use very small handoff program so that there is only one graphics
program running at a time. I've tried issuing a fastopen command to DOS
from C. It doesn't help.
I have programmed in assembler, but not for Intel chips, so I'm a bit of a
lost sheep in that area, although understanding someone's code is not so
hard.
Sorry about the length. If you want to see the program package and source
code, I'd be happy to send them to you. I plan to offer the source code to
the public, anyway. It should be rewritten in 32-bit C/C++, anyway. But
that will come later, maybe. But the problem there is sheer size.

Thanks in advance,

*NAME-DELETED* *NAME-DELETED*

A:
I have not programed dos for ages. As far as I can remember there is a
FILES directive in the file config.sys that may increase the file handles
that DOS can handle.

However I am sure that only a small number of people uses DOS todaay, you
rather have to rewrite your program for 23 bit.

Regards,
Peter

[ back to toc ]