From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,INVALID_DATE autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,18385551e0d37b37 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 1994-10-31 12:25:43 PST Path: bga.com!news.sprintlink.net!howland.reston.ans.net!news.moneng.mei.com!hookup!yeshua.marcam.com!news.mathworks.com!news2.near.net!news.delphi.com!usenet From: tmoran@bix.com Newsgroups: comp.lang.ada Subject: Re: Ada replacements for DOS I/O Date: 31 Oct 1994 19:31:51 GMT Organization: Delphi Internet Services Corporation Message-ID: <393gn7$kmf@news.delphi.com> NNTP-Posting-Host: bix.com Date: 1994-10-31T19:31:51+00:00 List-Id: >The most logical step is of course to write the IO functions we need There are two problems: traditional hard disk IO in DOS is done via CPU instructions, not DMA, so it's not convenient to interrupt in the middle - and you couldn't get much IO/CPU overlap anyway. The more general problem is that MSDOS is not re-entrant. So the effect is as if there is a single (DOS) task that does any and all DOS activity. Any task wanting a DOS action must wait for rendezvous with that single DOS task. The first problem is lessened under DOS by doing disk IO with large block sizes, full track reading, disk caching, etc. For the second problem, you'll have to write your own multi-tasking DOS. A non-trivial undertaking. (OTOH, IBM and Microsoft have already done that and sell the results as OS/2 and Windows NT. ;) Is your problem that you would like useful CPU cycles overlapped with disk IO, or that (presumably due to interrupts) high priority tasks can suddenly become unblocked while a low priority task is running inside non-preemptible DOS?