summaryrefslogtreecommitdiff
path: root/v4.0/src/CMD/FDISK/DOSCALL.H
diff options
context:
space:
mode:
Diffstat (limited to 'v4.0/src/CMD/FDISK/DOSCALL.H')
-rw-r--r--v4.0/src/CMD/FDISK/DOSCALL.H2811
1 files changed, 2811 insertions, 0 deletions
diff --git a/v4.0/src/CMD/FDISK/DOSCALL.H b/v4.0/src/CMD/FDISK/DOSCALL.H
new file mode 100644
index 0000000..295cec6
--- /dev/null
+++ b/v4.0/src/CMD/FDISK/DOSCALL.H
@@ -0,0 +1,2811 @@
1/*static char *SCCSID = "@(#)doscall.h 6.25 86/06/03";*/
2/*** doscall.h
3 *
4 * Shirleyd
5 * (C) Copyright 1988 Microsoft Corporation
6 * 12/13/85
7 *
8 * Description:
9 *
10 * Function declarations to provide strong type checking
11 * on arguments to DOS 4.0 function calls
12 *
13 * Major Modifications 04/28/86 by S. S.
14 * Major Modifications 04/30/86 by K. D.
15 * Minor Modifications 04/30/86 by S. S. (DosTimerAsync/Start)
16 * Major Modifications 05/01/86 by S. S. (fix Sems,add Queues)
17 * Minor Modifications 05/14/86 by K. D. (DosFileLocks)
18 * Minor Modifications 05/16/86 by S. S. (NLS routines)
19 * Minor Modifications 05/20/86 by S. S. (Get/SetPrty,CreateThread)
20 * Minor Modifications 05/20/86 by S. S. (add DosSetVector)
21 * Minor Modifications 06/02/86 by S. S. (GetHugeShift, MuxSemWait)
22 * Major Modifications 06/03/86 by S. S. (Mouse calls)
23 */
24
25
26
27/*** CursorData - structure that contains the characteristics
28 * of the cursor
29 */
30
31struct CursorData {
32 unsigned cur_start; /* Cursor start line */
33 unsigned cur_end; /* Cursor end line */
34 unsigned cur_width; /* Cursor width */
35 unsigned cur_attribute; /* Cursor attribute */
36 };
37
38
39
40/*** DateTime - structure for date and time */
41
42struct DateTime {
43 unsigned char hour; /* current hour */
44 unsigned char minutes; /* current minute */
45 unsigned char seconds; /* current second */
46 unsigned char hundredths; /* current hundredths of a second */
47 unsigned char day; /* current day */
48 unsigned char month; /* current month */
49 unsigned year; /* current year */
50 unsigned timezone; /* minutes of time west of GMT */
51 unsigned char day_of_week; /* current day of week */
52 };
53
54
55
56/*** FileFindBuf - structure of area where the filesystem driver
57 * returns the results of the search
58 */
59
60struct FileFindBuf {
61 unsigned create_date; /* date of file creation */
62 unsigned create_time; /* time of file creation */
63 unsigned access_date; /* date of last access */
64 unsigned access_time; /* time of last access */
65 unsigned write_date; /* date of last write */
66 unsigned write_time; /* time of last write */
67 unsigned long file_size; /* file size (end of data) */
68 unsigned long falloc_size; /* file allocated size */
69 unsigned attributes; /* attributes of the file */
70 char string_len; /* returned length of ascii name str. */
71 /* length does not include null byte */
72 char file_name[12]; /* name string */
73 };
74
75
76/*** FileStatus - structure of information list used by DosQFileInfo */
77
78struct FileStatus {
79 unsigned create_date; /* date of file creation */
80 unsigned create_time; /* time of file creation */
81 unsigned access_date; /* date of last access */
82 unsigned access_time; /* time of last access */
83 unsigned write_date; /* date of last write */
84 unsigned write_time; /* time of last write */
85 unsigned long file_size; /* file size (end of data) */
86 unsigned long falloc_size; /* file allocated size */
87 unsigned block_size; /* blocking factor */
88 unsigned attributes; /* attributes of the file */
89 };
90
91
92/*** FSAllocate - structure of file system allocation */
93
94struct FSAllocate {
95 unsigned long filsys_id; /* file system ID */
96 unsigned long sec_per_unit; /* number sectors per allocation unit */
97 unsigned long num_units; /* number of allocation units */
98 unsigned long avail_units; /* avaliable allocation units */
99 unsigned bytes_sec; /* bytes per sector */
100 };
101
102
103
104/*** KbdStatus - structure in which the keyboard support will information */
105
106struct KbdStatus {
107 unsigned length; /* length in words of data structure */
108 unsigned bit_mask; /* bit mask */
109 unsigned turn_around_char; /* turnaround character */
110 unsigned interim_char_flags; /* interim character flags */
111 unsigned shift_state; /* shift state */
112 };
113
114
115
116/*** KeyData - structure that contains character data */
117
118struct KeyData {
119 char char_code; /* ASCII character code */
120 char scan_code; /* scan code */
121 char status; /* indicates state of the character */
122 unsigned shift_state; /* state of the shift keys */
123 unsigned long time; /* time stamp of the keystroke */
124 };
125
126
127
128/*** ModeData - structure that contains characteristics of the mode */
129
130struct ModeData {
131 unsigned length; /* Length of structure */
132 char type; /* Text or graphics */
133 char color; /* Color or monochrome */
134 unsigned col; /* Column resolution */
135 unsigned row; /* Row resolution */
136 unsigned hres; /* horizontal resolution */
137 unsigned vres; /* vertical resolution */
138 };
139
140
141
142
143/*** ProcIDsArea - structure of the address of the area where the
144 * ID's will be placed
145 */
146
147struct ProcIDsArea {
148 unsigned procid_cpid; /* current process' process ID */
149 unsigned procid_ctid; /* current process' thread ID */
150 unsigned procid_ppid; /* process ID of the parent */
151 };
152
153
154
155/*** PVBData - structure that contains information about the
156 * physical video buffer
157 */
158
159struct PVBData {
160 unsigned pvb_size; /* size of the structure */
161 unsigned long pvb_ptr; /* returns pointer to the pvb buffer */
162 unsigned pvb_length; /* length of PVB */
163 unsigned pvb_rows; /* buffer dimension (rows) */
164 unsigned pvb_cols; /* buffer dimension (cols) */
165 char pvb_type; /* color or mono */
166 };
167
168
169
170/*** SchedParmsArea - structure of address in which the scheduler
171 * parms will be placed
172 */
173
174struct SchedParmsArea {
175 char dynvar_flag; /* dynamic variation flag, 1=enabled */
176 char maxwait; /* maxwait (sec) */
177 unsigned mintime; /* minimum timeslice (ms) */
178 unsigned maxtime; /* maximum timeslice (ms) */
179 };
180
181
182
183/*** Tasking Processes:
184 *
185 * DosCreateThread
186 * DosCwait
187 * DosEnterCritSec
188 * DosExecPgm
189 * DosExit
190 * DosExitCritSec
191 * DosExitList
192 * DosGetPID
193 * DosGetPrty
194 * DosGetSchedParms
195 * DosSetFgnd
196 * DosSetPrty
197 * DosKillProcess
198 */
199
200
201
202/*** DosCreateThread - Create another thread of execution
203 *
204 * Creates an asynchronous thread of execution under the
205 * current process
206 */
207
208extern unsigned far pascal DOSCREATETHREAD (
209 void (far *)(void), /* Starting Address for new thread */
210 unsigned far *, /* Address to put new thread ID */
211 unsigned char far * ); /* Address of stack for new thread */
212
213
214
215/*** DosCwait - Wait for child termination
216 *
217 * Places the current thread in a wait state until a child process
218 * has terminated, then returns the ending process' process ID and
219 * termination code.
220 */
221
222extern unsigned far pascal DOSCWAIT (
223 unsigned, /* Action (execution) codes */
224 unsigned, /* Wait options */
225 unsigned far *, /* Address to put result code */
226 unsigned far *, /* Address to put process ID */
227 unsigned ); /* ProcessID of process to wait for */
228
229
230
231/*** DosEnterCritSec - Enter critical section of execution
232 *
233 * Disables thread switching for the current process
234 */
235
236extern void far pascal DOSENTERCRITSEC (void);
237
238
239
240/*** DosExecPgm - Execute a program
241 *
242 * Allows a program to request another program be executed as a
243 * child process. The requestor's process may optionally continue
244 * to execute asynchronous to the new program
245 */
246
247extern unsigned far pascal DOSEXECPGM (
248 unsigned, /* 0=synchronous, 1=asynchronous with */
249 /* return code discarded, 2=async */
250 /* with return code saved */
251 unsigned, /* Trace process */
252 char far *, /* Address of argument string */
253 char far *, /* Address of environment string */
254 unsigned far *, /* Address to put Process ID */
255 char far * ); /* Address of program filename */
256
257
258
259/*** DosExit - Exit a program
260 *
261 * This call is issued when a thread completes its execution.
262 * The current thread is ended.
263 */
264
265extern void far pascal DOSEXIT (
266 unsigned, /* 0=end current thread, 1=end all */
267 unsigned ); /* Result Code to save for DosCwait */
268
269
270
271/*** DosExitCritSec - Exit critical section of execution
272 *
273 * Re-enables thread switching for the current process
274 */
275
276extern void far pascal DOSEXITCRITSEC (void);
277
278
279
280/*** DosExitList - Routine list for process termination
281 *
282 * Maintains a list of routines which are to be executed when the
283 * current process ends, normally or otherwise
284 */
285
286extern unsigned far pascal DOSEXITLIST (
287 unsigned, /* Function request code */
288 void (far *)(void) ); /* Address of routine to be executed */
289
290
291
292/*** DosGetPID - Return process ID
293 *
294 * Returns the current process's process ID (PID), thread ID,
295 * and the PID of the process that spawned it
296 */
297
298extern void far pascal DOSGETPID (
299 struct ProcIDsArea far *); /* ProcID structure */
300
301
302
303/*** DosGetPrty - Get Process's Priority
304 *
305 * Allows the caller to learn the priority of a process or thread
306 */
307
308extern unsigned far pascal DOSGETPRTY (
309 unsigned, /* Indicate thread or process ID */
310 unsigned far *, /* Address to put priority */
311 unsigned ); /* PID of process/thread of interest */
312
313
314
315/*** DosGetSchedParms - Get scheduler's parameters
316 *
317 * Gets the scheduler's current configuration parameters
318 */
319
320extern void far pascal DOSGETSCHEDPARMS (
321 struct SchedParmsArea far * ); /* Address to put parameters */
322
323
324
325/*** DosSetFgnd - Set Foreground Process
326 *
327 * Allows the session manager to designate which process
328 * is to receive favored dispatching
329 */
330
331extern unsigned far pascal DOSSETFGND (
332 unsigned ); /* Process ID of target process */
333
334
335
336/*** DosSetPrty - Set Process Priority
337 *
338 * Allows the caller to change the base priority or priority
339 * class of a child process or a thread in the current process
340 */
341
342extern unsigned far pascal DOSSETPRTY (
343 unsigned, /* Indicate scope of change */
344 unsigned, /* Priority class to set */
345 unsigned, /* Priority delta to apply */
346 unsigned ); /* Process or Thread ID of target */
347
348
349
350/*** DosKillProcess - Terminate a Process
351 *
352 * Terminates a child process and returns its termination code
353 * to its parent (if any)
354 */
355
356extern unsigned far pascal DOSKILLPROCESS (
357 unsigned, /* 0=kill child processes also, */
358 /* 1=kill only indicated process */
359 unsigned ); /* Process ID of process to end */
360
361
362
363
364/*** Asynchronous Notification (Signals):
365 *
366 * DosHoldSignal
367 * DosSendSignal
368 * DosSetSigHandler
369 */
370
371
372
373/*** DosHoldSignal - Disable / Enable signals
374 *
375 * Used to termporarily disable or enable signal processing
376 * for the current process.
377 */
378
379extern void far pascal DOSHOLDSIGNAL (
380 unsigned ); /* 0=enable signal, 1=disable signal */
381
382
383
384/*** DosSendSignal - Issue signal
385 *
386 * Used to send a signal event to an arbitrary process or
387 * command subtree.
388 */
389
390extern unsigned far pascal DOSSENDSIGNAL (
391 unsigned, /* Process ID to signal */
392 unsigned, /* 0=notify entire subtree, 1=notify */
393 /* only the indicated process */
394 unsigned, /* Signal argument */
395 unsigned ); /* Signal number */
396
397
398
399/*** DosSetSigHandler - Handle Signal
400 *
401 * Notifies CP/DOS of a handler for a signal. It may also be used
402 * to ignore a signal or install a default action for a signal.
403 */
404
405extern unsigned far pascal DOSSETSIGHANDLER (
406 void (far *)(), /* Signal handler address */
407 unsigned long far *, /* Address of previous handler */
408 unsigned far *, /* Address of previous action */
409 unsigned, /* Indicate request type */
410 unsigned ); /* Signal number */
411
412
413
414
415/*** Pipes:
416 *
417 * DosMakePipe
418 */
419
420
421
422/*** DosMakePipe - Create a Pipe */
423
424extern unsigned far pascal DOSMAKEPIPE (
425 unsigned far *, /* Addr to place the read handle */
426 unsigned far *, /* Addr to place the write handle */
427 unsigned ); /* Size to reserve for the pipe */
428
429
430
431
432/*** Queues:
433 *
434 * DosCloseQueue
435 * DosCreateQueue
436 * DosOpenQueue
437 * DosPeekQueue
438 * DosPurgeQueue
439 * DosQueryQueue
440 * DosReadQueue
441 * DosWriteQueue
442 */
443
444/*** DosCloseQueue - Close a Queue
445 *
446 * close a queue which is in use by the requesting process
447 *
448 */
449
450extern unsigned far pascal DOSCLOSEQUEUE (
451 unsigned ) ; /* queue handle */
452
453
454/*** DosCreateQueue - Create a Queue
455 *
456 * creates a queue to be owned by the requesting process
457 *
458 */
459
460extern unsigned far pascal DOSCREATEQUEUE (
461 unsigned far *, /* queue handle */
462 unsigned, /* queue priority */
463 char far * ) ; /* queue name */
464
465
466/*** DosOpenQueue - Open a Queue
467 *
468 * opens a queue for the current process
469 *
470 */
471
472extern unsigned far pascal DOSOPENQUEUE (
473 unsigned far *, /* PID of queue owner */
474 unsigned far *, /* queue handle */
475 char far * ) ; /* queue name */
476
477
478
479/*** DosPeekQueue - Peek at a Queue
480 *
481 * retrieves an element from a queue without removing it from the queue
482 *
483 */
484
485extern unsigned far pascal DOSPEEKQUEUE (
486 unsigned, /* queue handle */
487 unsigned long far *, /* pointer to request */
488 unsigned far *, /* length of datum returned */
489 unsigned long far *, /* pointer to address of datum */
490 unsigned far *, /* indicator of datum returned */
491 unsigned char, /* wait indicator for empty queue */
492 unsigned char far *, /* priority of element */
493 unsigned long ) ; /* semaphore handle */
494
495
496
497/*** DosPurgeQueue - Purge a Queue
498 *
499 * purges all elements from a queue
500 *
501 */
502
503extern unsigned far pascal DOSPURGEQUEUE (
504 unsigned ) ; /* queue handle */
505
506
507
508/*** DosQueryQueue - Query size of a Queue
509 *
510 * returns the number of elements in a queue
511 *
512 */
513
514extern unsigned far pascal DOSQUERYQUEUE (
515 unsigned, /* queue handle */
516 unsigned far * ); /* pointer for number of elements */
517
518
519
520/*** DosReadQueue - Read from a Queue
521 *
522 * retrieves an element from a queue
523 *
524 */
525
526extern unsigned far pascal DOSREADQUEUE (
527 unsigned, /* queue handle */
528 unsigned long far *, /* pointer to request */
529 unsigned far *, /* length of datum returned */
530 unsigned long far *, /* pointer to address of datum */
531 unsigned, /* indicator of datum returned */
532 unsigned char, /* wait indicator for empty queue */
533 unsigned char far *, /* priority of element */
534 unsigned long ) ; /* semaphore handle */
535
536
537
538/*** DosWriteQueue - Write to a Queue
539 *
540 * adds an element to a queue
541 *
542 */
543
544extern unsigned far pascal DOSWRITEQUEUE (
545 unsigned, /* queue handle */
546 unsigned, /* request */
547 unsigned, /* length of datum */
548 unsigned char far *, /* address of datum */
549 unsigned char ); /* priority of element */
550
551
552
553
554
555/*** Semaphores:
556 *
557 * DosSemClear
558 * DosSemRequest
559 * DosSemSet
560 * DosSemWait
561 * DosSemSetWait
562 * DosMuxSemWait
563 * DosCloseSem
564 * DosCreatSem
565 * DosOpenSem
566 */
567
568
569
570/*** DosSemClear - Unconditionally clears a semaphore
571 *
572 * Unconditionally clears a semaphore; i.e., sets the
573 * state of the specified semaphore to unowned.
574 */
575
576extern unsigned far pascal DOSSEMCLEAR (
577 unsigned long ); /* semaphore handle */
578
579
580
581/*** DosSemRequest - Wait until next DosSemClear
582 *
583 * Blocks the current thread until the next DosSemClear is
584 * issued to the indicated semaphore
585 */
586
587extern unsigned far pascal DOSSEMREQUEST (
588 unsigned long, /* semaphore handle */
589 unsigned long ); /* Timeout, -1=no timeout, */
590 /* 0=immediate timeout, >1=number ms */
591
592
593/*** DosSemSet - Unconditionally take a semaphore
594 *
595 * Unconditionally takes a semaphore; i.e., sets the status
596 * of the specified semaphore to owned.
597 */
598
599extern unsigned far pascal DOSSEMSET (
600 unsigned long ); /* semaphore handle */
601
602
603
604/*** DosSemSetWait - Wait for a semaphore to be cleared and set it
605 *
606 * Blocks the current thread until the indicated semaphore is
607 * cleared and then establishes ownership of the semaphore
608 */
609
610extern unsigned far pascal DOSSEMSETWAIT (
611 unsigned long, /* semaphore handle */
612 unsigned long ); /* Timeout, -1=no timeout, */
613 /* 0=immediate timeout, >1=number ms */
614
615
616/*** DosSemWait - Wait for a semaphore to be cleared
617 *
618 * Blocks the current thread until the indicated semaphore is
619 * cleared but does not establish ownership of the semaphore
620 */
621
622extern unsigned far pascal DOSSEMWAIT (
623 unsigned long, /* semaphore handle */
624 unsigned long ); /* Timeout, -1=no timeout, */
625 /* 0=immediate timeout, >1=number ms */
626
627
628/*** DosMuxSemWait - Wait for 1 of N semaphores to be cleared
629 *
630 * Blocks the current thread until the indicated semaphore is
631 * cleared but does not establish ownership of the semaphore
632 */
633
634extern unsigned far pascal DOSMUXSEMWAIT (
635 unsigned far *, /* address for event index number */
636 unsigned far *, /* list of semaphores */
637 unsigned long ); /* Timeout, -1=no timeout, */
638 /* 0=immediate timeout, >1=number ms */
639
640
641
642/*** DosCloseSem - Close a system semaphore
643 *
644 * closed the specified system semaphore
645 */
646
647extern unsigned far pascal DOSCLOSESEM (
648 unsigned long ); /* semaphore handle */
649
650
651
652/*** DosCreateSem - Create a system semaphore
653 *
654 * create a system semaphore
655 */
656
657extern unsigned far pascal DOSCREATESEM (
658 unsigned, /* =0 indicates exclusive ownership */
659 unsigned long far *, /* address for semaphore handle */
660 char far * ); /* name of semaphore */
661
662
663/*** DosOpenSem - Open a system semaphore
664 *
665 * open a system semaphore
666 */
667
668extern unsigned far pascal DOSOPENSEM (
669 unsigned long far *, /* address for semaphore handle */
670 char far * ); /* name of semaphore */
671
672
673
674
675/*** Timer Services:
676 *
677 * DosGetDateTime
678 * DosSetDateTime
679 * DosSleep
680 * DosGetTimerInt
681 * DosTimerAsync
682 * DosTimerStart
683 * DosTimerStop
684 */
685
686
687
688/*** DosGetDateTime - Get the current date and time
689 *
690 * Used to get the current date and time that are maintained by
691 * the operating system
692 */
693
694extern unsigned far pascal DOSGETDATETIME (
695 struct DateTime far * );
696
697
698
699/*** DosSetDateTime - Set the current date and time
700 *
701 * Used to set the date and time that are maintained by the
702 * operating system
703 */
704
705extern unsigned far pascal DOSSETDATETIME (
706 struct DateTime far * );
707
708
709
710/*** DosSleep - Delay Process Execution
711 *
712 * Suspends the current thread for a specified interval of time,
713 * or if the requested interval is '0', simply gives up the
714 * remainder of the current time slice.
715 */
716
717extern unsigned far pascal DOSSLEEP (
718 unsigned long ); /* TimeInterval - interval size */
719
720
721
722/*** DosGetTimerInt - Get the timer tick interval in 1/10000 sec.
723 *
724 * Gets a word that contains the timer tick interval in ten
725 * thousandths of a second. This is the amount of time that
726 * elapses with every timer tick
727 */
728
729extern unsigned far pascal DOSGETTIMERINT (
730 unsigned far * ); /* interval size */
731
732
733
734/*** DosTimerAsync - Start an asynchronous time delay
735 *
736 * Starts a timer that runs asynchronously to the thread issuing
737 * the request. It sets a RAM semaphore which can be used by the
738 * wait facility
739 */
740
741extern unsigned far pascal DOSTIMERASYNC (
742 unsigned long, /* Interval size */
743 unsigned long, /* handle of semaphore */
744 unsigned far * ); /* handle of timer */
745
746
747
748/*** DosTimerStart - Start a Periodic Interval Timer
749 *
750 * Starts a periodic interval timer that runs asynchronously to
751 * the thread issuing the request. It sets a RAM semaphore which
752 * can be used by the wait facility. The semaphore is continually
753 * signalled at the specified time interval until the timer is
754 * turned off by DosTimerStop
755 */
756
757extern unsigned far pascal DOSTIMERSTART (
758 unsigned long, /* Interval size */
759 unsigned long, /* handle of semaphore */
760 unsigned far * ); /* handle of timer */
761
762
763
764/*** DosTimerStop - Stop an interval timer
765 *
766 * Stops an interval timer that was started by DosTimerStart
767 */
768
769extern unsigned far pascal DOSTIMERSTOP (
770 unsigned ); /* Handle of the timer */
771
772
773
774
775/*** Memory Management:
776 *
777 * DosAllocSeg
778 * DosAllocShrSeg
779 * DosGetShrSeg
780 * DosReallocSeg
781 * DosFreeSeg
782 * DosAllocHuge
783 * DosGetHugeShift
784 * DosReallocHuge
785 * DosCreateCSAlias
786 */
787
788
789
790/*** DosAllocSeg - Allocate Segment
791 *
792 * Allocates a segment of memory to the requesting process.
793 */
794
795extern unsigned far pascal DOSALLOCSEG (
796 unsigned, /* Number of bytes requested */
797 unsigned far *, /* Selector allocated (returned) */
798 unsigned ); /* Indicator for sharing */
799
800
801
802/*** DosAllocShrSeg - Allocate Shared Segment
803 *
804 * Allocates a shared memory segment to a process.
805 */
806
807extern unsigned far pascal DOSALLOCSHRSEG (
808 unsigned, /* Number of bytes requested */
809 char far *, /* Name string */
810 unsigned far * ); /* Selector allocated (returned) */
811
812
813
814/*** DosGetShrSeg - Access Shared Segment
815 *
816 * Allows a process to access a shared memory segment previously
817 * allocated by another process. The reference count for the
818 * shared segment is incremented.
819 */
820
821extern unsigned far pascal DOSGETSHRSEG (
822 char far *, /* Name string */
823 unsigned far * ); /* Selector (returned) */
824
825
826
827/*** DosGiveSeg - Give access to Segment
828 *
829 * Gives another process access to a shares memory segment
830 */
831
832extern unsigned far pascal DOSGIVESEG (
833 unsigned, /* Caller's segment handle */
834 unsigned, /* Process ID of recipient */
835 unsigned far * ); /* Recipient's segment handle */
836
837
838
839/*** DosReallocSeg - Change Segment Size
840 *
841 * Changes the size of a segment already allocated.
842 */
843
844extern unsigned far pascal DOSREALLOCSEG (
845 unsigned, /* New size requested in bytes */
846 unsigned ); /* Selector */
847
848
849
850/*** DosFreeSeg - Free a Segment
851 *
852 * Deallocates a segment
853 */
854
855extern unsigned far pascal DOSFREESEG (
856 unsigned ); /* Selector */
857
858
859
860/*** DosAllocHuge - Allocate Huge Memory
861 *
862 * Allocates memory greater than the maximum segment size
863 */
864
865extern unsigned far pascal DOSALLOCHUGE (
866 unsigned, /* Number of 65536 byte segments */
867 unsigned, /* Number of bytes in last segment */
868 unsigned far *, /* Selector allocated (returned) */
869 unsigned ); /* Max number of 65536-byte segments */
870
871
872
873/*** DosGetHugeShift - Get shift count used with Huge Segments
874 *
875 * Returns the shift count used in deriving selectors
876 * to address memory allocated by DosAllocHuge.
877 */
878
879extern unsigned far pascal DOSGETHUGESHIFT (
880 unsigned far *); /* Shift Count (returned) */
881
882
883
884/*** DosReallocHuge - Change Huge Memory Size
885 *
886 * Changes the size of memory originally allocated by DosAllocHuge
887 */
888
889extern unsigned far pascal DOSREALLOCHUGE (
890 unsigned, /* Number of 65536 byte segments */
891 unsigned, /* Number of bytes in last segment */
892 unsigned ); /* Selector */
893
894
895
896/*** DosCreateCSAlias - Create CS Alias
897 *
898 * Creates an alias descriptor for a data type descriptor passed
899 * as input. The type of the new descriptor is executable.
900 */
901
902extern unsigned far pascal DOSCREATECSALIAS (
903 unsigned, /* Data segment selector */
904 unsigned far * ); /* Code segment selector (returned) */
905
906
907
908
909/*** Memory Sub-Allocation Package (MSP)
910 *
911 * DosSubAlloc
912 * DosSubFree
913 * DosSubSet
914 */
915
916
917
918/*** DosSubAlloc - Allocate Memory
919 *
920 * Allocates memory from a segment previously allocated by
921 * DosAllocSeg or DosAllocShrSeg and initialized by DosSubSet
922 */
923
924extern unsigned far pascal DOSSUBALLOC (
925 unsigned, /* Segment selector */
926 unsigned far *, /* Address of block offset */
927 unsigned ); /* Size of requested block */
928
929
930
931/*** DosSubFree - Free Memory
932 *
933 * Frees memory previously allocated by DosSubAlloc
934 */
935
936extern unsigned far pascal DOSSUBFREE (
937 unsigned, /* Segment selector */
938 unsigned, /* Offset of memory block to free */
939 unsigned ); /* Size of block in bytes */
940
941
942
943/*** DosSubSet - Initialize or Set Allocated Memory
944 *
945 * Can be used either to initialize a segment for sub-allocation
946 * of to notify MSP of a change in the size of a segment already
947 * initialized.
948 */
949
950extern unsigned far pascal DOSSUBSET (
951 unsigned, /* Segment selector */
952 unsigned, /* Parameter flags */
953 unsigned ); /* New size of the block */
954
955
956
957
958/*** Program Execution Control:
959 *
960 * DosLoadModule
961 * DosFreeModule
962 * DosGetProcAddr
963 * DosGetModHandle
964 * DosGetModName
965 */
966
967
968
969/*** DosLoadModule - Load Dynamic Link Routines
970 *
971 * Loads a dynamic link module and returns a handle for the module
972 */
973
974extern unsigned far pascal DOSLOADMODULE (
975 char far *, /* Module name string */
976 unsigned far * ); /* Module handle (returned) */
977
978
979
980/*** DosFreeModule - Free Dynamic Link Routines
981 *
982 * Frees the reference to the dynamic link module for this process.
983 * If the dynamic link module is no longer used by any process, the
984 * module will be freed from system memory.
985 */
986
987extern unsigned far pascal DOSFREEMODULE (
988 unsigned ); /* Module handle */
989
990
991
992/*** DosGetProcAddr - Get Dynamic Link Procedure Address
993 *
994 * Retruns a far address to the desired procedure within a dynamic
995 * link module.
996 */
997
998extern unsigned far pascal DOSGETPROCADDR (
999 unsigned, /* Module handle */
1000 char far *, /* Module name string */
1001 unsigned long far * ); /* Procedure address (returned) */
1002
1003
1004
1005/*** DosGetModHandle - Get Dynamic Link Module Handle
1006 *
1007 * Returns the handle to a dynamic link module that was previously
1008 * loaded. The interface provides a mechanism for testing whether
1009 * a dynamic link module is already loaded.
1010 */
1011
1012extern unsigned far pascal DOSGETMODHANDLE (
1013 char far *, /* Module name string */
1014 unsigned far *); /* Module handle (returned) */
1015
1016
1017
1018/*** DosGetModName - Get Dynamic Link Module Name
1019 *
1020 * returns the fully qualified drive, path, filename, and
1021 * extension associated with the referenced modul handle
1022 */
1023
1024extern unsigned far pascal DOSGETMODNAME (
1025 unsigned, /* Module handle */
1026 unsigned, /* Maximum buffer length */
1027 unsigned far * ); /* Buffer (returned) */
1028
1029
1030
1031
1032/*** Device I/O Services:
1033 *
1034 * DosBeep
1035 * DosDevConfig
1036 * DosDevIOCtl
1037 * DosScrDirectIO
1038 * DosScrRedrawWait
1039 * DosScrLock
1040 * DosScrUnLock
1041 * DosSGInit
1042 * DosSGNum
1043 * DosSGRestore
1044 * DosSGSave
1045 * DosSGSwitch
1046 * DosSGSwitchMe
1047 * DosVioAttach
1048 * DosVioRegister
1049 * KbdCharIn
1050 * KbdFlushBuffer
1051 * KbdGetStatus
1052 * KbdPeek
1053 * KbdSetStatus
1054 * KbdStringIn
1055 * VioRegister
1056 * VioFreePhysBuf
1057 * VioGetBuf
1058 * VioGetCurPos
1059 * VioGetCurType
1060 * VioGetMode
1061 * VioGetPhysBuf
1062 * VioReadCellStr
1063 * VioReadCharStr
1064 * VioScrollDn
1065 * VioScrollUp
1066 * VioScrollLf
1067 * VioScrollRt
1068 * VioSetCurPos
1069 * VioSetCurType
1070 * VioSetMode
1071 * VioShowBuf
1072 * VioWrtCellStr
1073 * VioWrtCharStr
1074 * VioWrtCharStrAtt
1075 * VioWrtNAttr
1076 * VioWrtNCell
1077 * VioWrtNChar
1078 * VioWrtTTY
1079 * VioSetANSI
1080 * VioGetANSI
1081 * VioPrtScreen
1082 * VioSaveRedrawWait
1083 * VioSaveRedrawWaitUndo
1084 * VioScrLock
1085 * VioScrUnlock
1086 * VioSetMnLockTime
1087 * VioSetMXSaveTime
1088 * VioGetTimes
1089 * VioPopUp
1090 * VioEndPopUp
1091 */
1092
1093
1094
1095/*** DosBeep - Generate Sound From Speaker */
1096
1097extern unsigned far pascal DOSBEEP (
1098 unsigned, /* Hertz (25H-7FFFH) */
1099 unsigned ); /* Length of sound in ms */
1100
1101
1102
1103/*** DosDevConfig - Get Device Configurations
1104 *
1105 * Get information about attached devices
1106 */
1107
1108extern unsigned far pascal DOSDEVCONFIG (
1109 unsigned char far *, /* Returned information */
1110 unsigned, /* Item number */
1111 unsigned ); /* Reserved */
1112
1113
1114
1115/*** DosDevIOCtl - Preform Control Functions Directly On Device
1116 *
1117 * Control functions on the device specified by the opened
1118 * handle
1119 */
1120
1121extern unsigned far pascal DOSDEVIOCTL (
1122 char far *, /* Data area */
1123 char far *, /* Command-specific argument list */
1124 unsigned, /* Device-specific function code */
1125 unsigned, /* Device category */
1126 unsigned ); /* Device handle returned by Open */
1127
1128
1129
1130/*** DosScrDirectIO - Direct Screen I/O
1131 *
1132 * Indicate direct screen I/O
1133 */
1134
1135extern unsigned far pascal DOSSCRDIRECTIO (
1136 unsigned ); /* Indicates state of direct I/O */
1137 /* 0=on, 1=off */
1138
1139
1140
1141/*** DosScrRedrawWait - Screen Refresh
1142 *
1143 * Wait for notification to refresh or redraw screen
1144 */
1145
1146extern unsigned far pascal DOSSCRREDRAWWAIT (void);
1147
1148
1149
1150/*** DosScrLock - Lock Screen
1151 *
1152 * Lock the screen for I/O
1153 */
1154
1155extern unsigned far pascal DOSSCRLOCK (
1156 unsigned, /* Block or not - 0=return if */
1157 /* screen unavailable, 1=wait */
1158 unsigned far *); /* Return status of lock - */
1159 /* 0=sucessful, 1=unsuccessful */
1160
1161
1162
1163/*** DosScrUnLock - Unlock Screen
1164 *
1165 * Unlock the screen for I/O
1166 */
1167
1168extern unsigned far pascal DOSSCRUNLOCK (void) ;
1169
1170
1171
1172/*** DosSGInit - Initialize Screen Group
1173 *
1174 * Initialize the specified screen group
1175 */
1176
1177extern unsigned far pascal DOSSGINIT (
1178 unsigned ); /* Number of screen group */
1179
1180
1181
1182/*** DosSGNum - Get Number of Screen Groups
1183 *
1184 * Get the number of screen groups
1185 */
1186
1187extern unsigned far pascal DOSSGNUM (
1188 unsigned far *); /* Total number of screen groups */
1189
1190
1191
1192/*** DosSGRestore - Restore Screen Group
1193 *
1194 * Restore the current screen group
1195 */
1196
1197extern unsigned far pascal DOSSGRESTORE (void);
1198
1199
1200
1201/*** DosSGSave - Save Screen Group
1202 *
1203 * Save the current screen group
1204 */
1205
1206extern unsigned far pascal DOSSGSAVE (void);
1207
1208
1209
1210/*** DosSGSwitch - Switch Screen Groups
1211 *
1212 * Switch the specified screen group to the active screen group
1213 */
1214
1215extern unsigned far pascal DOSSGSWITCH (
1216 unsigned ); /* Number of screen group */
1217
1218
1219
1220/*** DosSGSwitchMe - Put Process in Screen Group
1221 *
1222 * Switch the caller into the specified screen group
1223 */
1224
1225extern unsigned far pascal DOSSGSWITCHME (
1226 unsigned ); /* Number of screen groups */
1227
1228
1229
1230/*** DosVioAttach - Attach to Video Subsystem
1231 *
1232 * Attach to the current video subsystem for the current screen
1233 * group. This must be done prior to using any VIO functions.
1234 */
1235
1236extern unsigned far pascal DOSVIOATTACH (void);
1237
1238
1239
1240/*** DosVioRegister - Register Video Subsystem
1241 *
1242 * Register a video subsystem for a screen group
1243 */
1244
1245extern unsigned far pascal DOSVIOREGISTER (
1246 char far *, /* Module name */
1247 char far * ); /* Table of entries supported by */
1248 /* the VIO dynamic link module */
1249
1250
1251
1252/*** KbdCharIn - Read Character, Scan Code
1253 *
1254 * Return a character and scan code from the standard input device
1255 */
1256
1257extern unsigned far pascal KBDCHARIN (
1258 struct KeyData far *, /* Buffer for character code */
1259 unsigned, /* I/O wait - 0=wait for a */
1260 /* character, 1=no wait */
1261 unsigned ); /* keyboard handle */
1262
1263
1264
1265/*** KbdFlushBuffer - Flush Keystroke Buffer
1266 *
1267 * Clear the keystroke buffer
1268 */
1269
1270extern unsigned far pascal KBDFLUSHBUFFER (
1271 unsigned ); /* keyboard handle */
1272
1273
1274
1275/*** KbdGetStatus - Get Keyboard Status
1276 *
1277 * Gets the current state of the keyboard.
1278 */
1279
1280extern unsigned far pascal KBDGETSTATUS (
1281 struct KbdStatus far *, /* data structure */
1282 unsigned ); /* Keyboard device handle */
1283
1284
1285
1286/*** KbdPeek - Peek at Character, Scan Code
1287 *
1288 * Return the character/scan code, if available, from the
1289 * standard input device without removing it from the buffer.
1290 */
1291
1292extern unsigned far pascal KBDPEEK (
1293 struct KeyData far *, /* buffer for data */
1294 unsigned ); /* keyboard handle */
1295
1296
1297
1298/*** KbdSetStatus - Set Keyboard Status
1299 *
1300 * Sets the characteristics of the keyboard.
1301 */
1302
1303extern unsigned far pascal KBDSETSTATUS (
1304 struct KbdStatus far *, /* data structure */
1305 unsigned ); /* device handle */
1306
1307
1308
1309/*** KbdStringIn - Read Character String
1310 *
1311 * Read a character string (character codes only) from the
1312 * standard input device. The character string may optionally
1313 * be echoed at the standard output device if the echo mode
1314 * is set (KbdSetEchoMode)
1315 */
1316
1317extern unsigned far pascal KBDSTRINGIN (
1318 char far *, /* Char string buffer */
1319 unsigned far *, /* Length of buffer */
1320 unsigned, /* I/O wait- 0=wait for a */
1321 /* character, 1=no wait */
1322 unsigned ); /* keyboard handle */
1323
1324
1325
1326/*** VioRegister - Register Video Subsystem
1327 *
1328 * Register a video subsystem within a screen group
1329 *
1330 */
1331
1332extern unsigned far pascal VIOREGISTER (
1333 char far *, /* Module name */
1334 char far *, /* Entry Point name */
1335 unsigned long, /* Function mask 1 */
1336 unsigned long ); /* Function mask 2 */
1337
1338
1339
1340/*** VioFreePhysBuf - Free Physical Video Buffer
1341 *
1342 * Release the physical video buffer
1343 */
1344
1345extern unsigned far pascal VIOFREEPHYSBUF (
1346 char far * ); /* Physical video buffer */
1347
1348
1349
1350/*** VioGetBuf - Get Logical Video Buffer
1351 *
1352 * Return the address of the logical video buffer
1353 */
1354
1355extern unsigned far pascal VIOGETBUF (
1356 unsigned long far *, /* Will point to logical video buffer */
1357 unsigned far *, /* Length of Buffer */
1358 unsigned ); /* Vio Handle */
1359
1360
1361
1362/*** VioGetCurPos - Get Cursor Position
1363 *
1364 * Return the cursor position
1365 */
1366
1367extern unsigned far pascal VIOGETCURPOS (
1368 unsigned far *, /* Current row position */
1369 unsigned far *, /* Current column position */
1370 unsigned ); /* Vio Handle */
1371
1372
1373
1374/*** VioGetCurType - Get Cursor Type
1375 *
1376 * Return the cursor type
1377 */
1378
1379extern unsigned far pascal VIOGETCURTYPE (
1380 struct CursorData far *, /* Cursor characteristics */
1381 unsigned ); /* Vio Handle */
1382
1383
1384
1385/*** VioGetMode - Get Display Mode
1386 *
1387 * Return the mode of the display
1388 */
1389
1390extern unsigned far pascal VIOGETMODE (
1391 struct ModeData far *, /* Length of Buffer */
1392 unsigned ); /* Vio Handle */
1393
1394
1395
1396/*** VioGetPhysBuf - Get Physical Video Buffer
1397 *
1398 * Return the address of the physical video buffer
1399 */
1400
1401extern unsigned far pascal VIOGETPHYSBUF (
1402 char far *, /* Buffer start address */
1403 char far *, /* Buffer end address */
1404 unsigned far *, /* Address of selector list */
1405 unsigned ); /* Length of selector list */
1406
1407
1408
1409/*** VioReadCellStr - Read Character/Attributes String
1410 *
1411 * Read a string of character/attributes (or cells) from the
1412 * screen starting at the specified location.
1413 */
1414
1415extern unsigned far pascal VIOREADCELLSTR (
1416 char far *, /* Character Buffer */
1417 unsigned far *, /* Length of cell string buffer */
1418 unsigned, /* Starting location (row) */
1419 unsigned, /* Starting location (col) */
1420 unsigned ); /* Vio Handle */
1421
1422
1423
1424/*** VioReadCharStr - Read Character String
1425 *
1426 * Read a character string from the display starting at the
1427 * current cursor position
1428 */
1429
1430extern unsigned far pascal VIOREADCHARSTR (
1431 char far *, /* Character Buffer */
1432 unsigned far *, /* Length of cell string buffer */
1433 unsigned, /* Starting location (row) */
1434 unsigned, /* Starting location (col) */
1435 unsigned ); /* Vio Handle */
1436
1437
1438
1439/*** VioScrollDn - Scroll Screen Down
1440 *
1441 * Scroll the current screen down
1442 */
1443
1444extern unsigned far pascal VIOSCROLLDN (
1445 unsigned, /* Top row of section to scroll */
1446 unsigned, /* Left column of section to scroll */
1447 unsigned, /* Bottom row of section to scroll */
1448 unsigned, /* Right column of section to scroll */
1449 unsigned, /* Number of blank lines at bottom */
1450 char far *, /* pointer to blank Char,Attr */
1451 unsigned ); /* Vio Handle */
1452
1453
1454
1455/*** VioScrollUp - Scroll Screen Up
1456 *
1457 * Scroll the active page (or display) up
1458 */
1459
1460extern unsigned far pascal VIOSCROLLUP (
1461 unsigned, /* Top row of section to scroll */
1462 unsigned, /* Left column of section to scroll */
1463 unsigned, /* Bottom row of section to scroll */
1464 unsigned, /* Right column of section to scroll */
1465 unsigned, /* Number of blank lines at bottom */
1466 char far *, /* pointer to blank Char,Attr */
1467 unsigned ); /* Vio Handle */
1468
1469
1470
1471/*** VioScrollLf - Scroll Screen Left
1472 *
1473 * Scroll the current screen left
1474 */
1475
1476extern unsigned far pascal VIOSCROLLLF (
1477 unsigned, /* Top row of section to scroll */
1478 unsigned, /* Left column of section to scroll */
1479 unsigned, /* Bottom row of section to scroll */
1480 unsigned, /* Right column of section to scroll */
1481 unsigned, /* Number of blank columsn at right */
1482 char far *, /* pointer to blank Char,Attr */
1483 unsigned ); /* Vio Handle */
1484
1485
1486
1487/*** VioScrollLf - Scroll Screen Right
1488 *
1489 * Scroll the current screen right
1490 */
1491
1492extern unsigned far pascal VIOSCROLLRT (
1493 unsigned, /* Top row of section to scroll */
1494 unsigned, /* Left column of section to scroll */
1495 unsigned, /* Bottom row of section to scroll */
1496 unsigned, /* Right column of section to scroll */
1497 unsigned, /* Number of blank columsn at left */
1498 char far *, /* pointer to blank Char,Attr */
1499 unsigned ); /* Vio Handle */
1500
1501
1502
1503/*** VioSetCurPos - Set Cursor Position
1504 *
1505 * Set the cursor position
1506 */
1507
1508extern unsigned far pascal VIOSETCURPOS (
1509 unsigned, /* Row return data */
1510 unsigned, /* Column return data */
1511 unsigned ); /* Vio Handle */
1512
1513
1514
1515/*** VioSetCurType - Set Cursor Type
1516 *
1517 * Set the cursor type
1518 */
1519
1520extern unsigned far pascal VIOSETCURTYPE (
1521 struct CursorData far *, /* Cursor characteristics */
1522 unsigned ); /* Vio Handle */
1523
1524
1525
1526/*** VioSetMode - Set Display Mode
1527 *
1528 * Set the mode of the display
1529 */
1530
1531extern unsigned far pascal VIOSETMODE (
1532 struct ModeData far *, /* Mode characteristics */
1533 unsigned ); /* Vio Handle */
1534
1535
1536
1537/*** VioShowBuf - Display Logical Buffer
1538 *
1539 * Update the display with the logical video buffer
1540 */
1541
1542extern unsigned far pascal VIOSHOWBUF (
1543 unsigned, /* Offset into buffer */
1544 unsigned, /* Length of area to be updated */
1545 unsigned ); /* Vio Handle */
1546
1547
1548
1549/*** VioWrtCellStr - Write Character/Attribute String
1550 *
1551 * Write a character,attribute string to the display
1552 */
1553
1554extern unsigned far pascal VIOWRTCELLSTR (
1555 char far *, /* String to be written */
1556 unsigned, /* Length of string */
1557 unsigned, /* Starting position for output (row) */
1558 unsigned, /* Starting position for output (col) */
1559 unsigned ); /* Vio Handle */
1560
1561
1562
1563/*** VioWrtCharStr - Write Character String
1564 *
1565 * Write a character string to the display
1566 */
1567
1568extern unsigned far pascal VIOWRTCHARSTR (
1569 char far *, /* String to be written */
1570 unsigned, /* Length of string */
1571 unsigned, /* Starting position for output (row) */
1572 unsigned, /* Starting position for output (col) */
1573 unsigned ); /* Vio Handle */
1574
1575
1576
1577/*** VioWrtCharStrAtt - Write Character String With Attribute
1578 *
1579 * Write a character string with repeated attribute to the display
1580 */
1581
1582extern unsigned far pascal VIOWRTCHARSTRATT (
1583 char far *, /* String to be written */
1584 unsigned, /* Length of string */
1585 unsigned, /* Starting position for output (row) */
1586 unsigned, /* Starting position for output (col) */
1587 char far *, /* Attribute to be replicated */
1588 unsigned ); /* Vio Handle */
1589
1590
1591
1592/*** VioWrtNAttr - Write N Attributes
1593 *
1594 * Write an attribute to the display a specified number of times
1595 */
1596
1597extern unsigned far pascal VIOWRTNATTR (
1598 char far *, /* Attribute to be written */
1599 unsigned, /* Length of write */
1600 unsigned, /* Starting position for output (row) */
1601 unsigned, /* Starting position for output (col) */
1602 unsigned ); /* Vio Handle */
1603
1604
1605
1606/*** VioWrtNCell - Write N Character/Attributes
1607 *
1608 * Write a cell (or character/attribute) to the display a
1609 * specified number of times
1610 */
1611
1612extern unsigned far pascal VIOWRTNCELL (
1613 char far *, /* Cell to be written */
1614 unsigned, /* Length of write */
1615 unsigned, /* Starting position for output (row) */
1616 unsigned, /* Starting position for output (col) */
1617 unsigned ); /* Vio Handle */
1618
1619
1620
1621/*** VioWrtNChar - Write N Characters
1622 *
1623 * Write a character to the display a specified number of times
1624 */
1625
1626extern unsigned far pascal VIOWRTNCHAR (
1627 unsigned, /* Character to be written */
1628 unsigned, /* Length of write */
1629 unsigned, /* Starting position for output (row) */
1630 unsigned, /* Starting position for output (col) */
1631 unsigned ); /* Vio Handle */
1632
1633
1634
1635/*** VioWrtTTY - Write TTY String
1636 *
1637 * Write a character string from the current cursor position in
1638 * TTY mode to the display. The cursor will be positioned at the
1639 * end of the string+1 at the end of the write.
1640 */
1641
1642extern unsigned far pascal VIOWRTTTY (
1643 char far *, /* String to be written */
1644 unsigned, /* Length of string */
1645 unsigned ); /* Vio Handle */
1646
1647
1648
1649/*** VioSetAnsi - Set ANSI On or Off
1650 *
1651 * Activates or deactivates ANSI support
1652 *
1653 */
1654
1655extern unsigned far pascal VIOSETANSI (
1656 unsigned, /* ON (=1) or OFF (=0) indicator */
1657 unsigned ); /* Vio Handle */
1658
1659
1660
1661/*** VioGetAnsi - Get ANSI State
1662 *
1663 * Returns the current ANSI state (0=inactive, 1=active)
1664 *
1665 */
1666
1667extern unsigned far pascal VIOGETANSI (
1668 unsigned far *, /* ANSI state (returned) */
1669 unsigned ); /* Vio Handle */
1670
1671
1672
1673/*** VioPrtScreen - Print Screen
1674 *
1675 * Copies the screen to the printer
1676 *
1677 */
1678
1679extern unsigned far pascal VIOPRTSCREEN (
1680 unsigned ); /* Vio Handle */
1681
1682
1683
1684/*** VioSaveRedrWait - Screen Save Redraw Wait
1685 *
1686 * Allows a process to be notified when it must
1687 * save or redraw its screen
1688 *
1689 */
1690
1691extern unsigned far pascal VIOSAVEREDRAWWAIT (
1692 unsigned, /* Save/Redraw Indicator */
1693 unsigned far *, /* Notify type (returned) */
1694 unsigned ); /* Vio Handle */
1695
1696
1697
1698/*** VioSaveRedrWaitUndo - Undo Screen Save Redraw Wait
1699 *
1700 * Allows a one thread within a process to cancel a
1701 * VIOSAVREDRAWWAIT issued by another thread within
1702 * that same process. Ownership of the VIOSAVREDRAWWAIT
1703 * can either be reserved or given up.
1704 *
1705 */
1706
1707extern unsigned far pascal VIOSAVEREDRAWWAITUNDO (
1708 unsigned, /* Ownership Indicator */
1709 unsigned, /* Terminate Indicator */
1710 unsigned ); /* Vio Handle */
1711
1712
1713
1714/*** VioScrLock - Lock Screen
1715 *
1716 * Tells a process if I/O to the physical screen buffer can occur.
1717 *
1718 */
1719
1720extern unsigned far pascal VIOSCRLOCK (
1721 unsigned, /* Wait Flag */
1722 unsigned char far *, /* Status of lock (returned) */
1723 unsigned ); /* Vio Handle */
1724
1725
1726
1727/*** VioScrUnlock - Unlock Screen
1728 *
1729 * Unlocks the physical screen buffer for I/O.
1730 *
1731 */
1732
1733extern unsigned far pascal VIOSCRUNLOCK (
1734 unsigned ); /* Vio Handle */
1735
1736
1737
1738/*** VioSetMnLockTime - Set Minimum Screen Lock Time
1739 *
1740 * Sets the minimum amount of time that the system will allow a
1741 * process to have exclusive use of the screen via VIOSCRLOCK.
1742 *
1743 */
1744
1745extern unsigned far pascal VIOSETMNLOCKTIME (
1746 unsigned, /* Number of seconds */
1747 unsigned ); /* Vio Handle */
1748
1749
1750
1751/*** VioSetMxSaveTime - Set Maximum Screen Save/Restore Time
1752 *
1753 * Sets the maximum amount of time (in msec) that the system will
1754 * allow a process to take before issuing a VIOSAVREDRWAIT call
1755 * after being notified by the Session Mgr that one is needed.
1756 *
1757 */
1758
1759extern unsigned far pascal VIOSETMXSAVETIME (
1760 unsigned, /* Number of milliseconds */
1761 unsigned ); /* Vio Handle */
1762
1763
1764
1765/*** VioGetTimes - Return VIO Lock and Save/Redraw Times
1766 *
1767 * Returns the 2 word values set by the calls
1768 * VIOSETMNLOCKTIME and VIOSETMXSAVETIME.
1769 *
1770 */
1771
1772extern unsigned far pascal VIOGETTIMES (
1773 unsigned far *, /* Min. Lock time (in seconds) */
1774 unsigned far *, /* Max. Save time (in msec) */
1775 unsigned ); /* Vio Handle */
1776
1777
1778
1779/*** VioPopUp - Allocate a PopUp Display Screen
1780 *
1781 * Creates a temporary window to display a momentary message
1782 *
1783 */
1784
1785extern unsigned far pascal VIOPOPUP (
1786 unsigned far *, /* Wait/Nowait Bit flags */
1787 unsigned ); /* Vio Handle */
1788
1789
1790
1791/*** VioEndPopUp - Deallocate a PopUp Display Screen
1792 *
1793 * Closes a PopUp window
1794 *
1795 */
1796
1797extern unsigned far pascal VIOENDPOPUP (
1798 unsigned ); /* Vio Handle */
1799
1800
1801
1802
1803/*** Mouse Services
1804 *
1805 * MouRegister
1806 * MouGetNumButtons
1807 * MouGetNumMickeys
1808 * MouGetDevStatus
1809 * MouReadEventQueue
1810 * MouGetNumQueEl
1811 * MouGetEventMask
1812 * MouGetScaleFact
1813 * MouSetScaleFact
1814 * MouSetEventMask
1815 * MouOpen
1816 * MouClose
1817 * MouSetPtrShape
1818 * MouRemovePtr
1819 * MouDrawPtr
1820 * MouSetHotKey
1821 */
1822
1823
1824/*** MouRegister - Register a Mouse Subsystem or Environment Manager
1825 *
1826 */
1827
1828extern unsigned far pascal MOUREGISTER (
1829 char far *, /* Module name */
1830 char far *, /* Entry Point name */
1831 unsigned long, /* Function mask */
1832 unsigned ); /* Mouse Device Handle */
1833
1834
1835
1836/*** MouGetNumButtons - returns the number of mouse buttons supported
1837 *
1838 */
1839
1840extern unsigned far pascal MOUGETNUMBUTTONS (
1841 unsigned far *, /* Number of mouse buttons (returned) */
1842 unsigned ); /* Mouse Device Handle */
1843
1844
1845
1846/*** MouGetNumMickeys - returns the number of mickeys per centimeter
1847 *
1848 */
1849
1850extern unsigned far pascal MOUGETNUMMICKEYS (
1851 unsigned far *, /* Number of Mickeys/cm (returned) */
1852 unsigned ); /* Mouse Device Handle */
1853
1854
1855
1856/*** MouGetDevStatus - returns the mouse driver status flags
1857 *
1858 */
1859
1860extern unsigned far pascal MOUGETDEVSTATUS (
1861 unsigned far *, /* Device Status (returned) */
1862 unsigned ); /* Mouse Device Handle */
1863
1864
1865
1866/*** MouReadEventQueue - reads an event from the mouse event queue
1867 *
1868 */
1869
1870extern unsigned far pascal MOUREADEVENTQUEUE (
1871 unsigned, /* Type of read operation */
1872 unsigned char far *, /* Event Queue Entry (returned) */
1873 unsigned ); /* Mouse Device Handle */
1874
1875
1876
1877/*** MouGetNumQueEl - returns the status of the Mouse Event Queue
1878 *
1879 */
1880
1881extern unsigned far pascal MOUGETNUMQUEEL (
1882 unsigned far *, /* Maximum # of Elements in Queue */
1883 unsigned far *, /* Current # of Elements in Queue */
1884 unsigned ); /* Mouse Device Handle */
1885
1886
1887
1888/*** MouGetEventMask - Returns the current mouse 1-word event mask
1889 *
1890 */
1891
1892extern unsigned far pascal MOUGETEVENTMASK (
1893 unsigned far *, /* Event Mask (returned) */
1894 unsigned ); /* Mouse Device Handle */
1895
1896
1897
1898/*** MouGetScaleFact - Returns the current mouse scaling factors
1899 *
1900 */
1901
1902extern unsigned far pascal MOUGETSCALEFACT (
1903 unsigned far *, /* Y Coordinate Scaling Factor */
1904 unsigned far *, /* X Coordinate Scaling Factor */
1905 unsigned ); /* Mouse Device Handle */
1906
1907
1908
1909/*** MouSetScaleFact - Sets the current mouse scaling factors
1910 *
1911 */
1912
1913extern unsigned far pascal MOUSETSCALEFACT (
1914 unsigned, /* Y Coordinate Scaling Factor */
1915 unsigned, /* X Coordinate Scaling Factor */
1916 unsigned ); /* Mouse Device Handle */
1917
1918
1919
1920/*** MouSetEventMask - Set the current mouse 1-word event mask
1921 *
1922 */
1923
1924extern unsigned far pascal MOUSETEVENTMASK (
1925 unsigned, /* Event Mask */
1926 unsigned ); /* Mouse Device Handle */
1927
1928
1929
1930/*** MouOpen - Open the mouse device
1931 *
1932 */
1933
1934extern unsigned far pascal MOUOPEN (
1935 unsigned far * ); /* Mouse Device Handle (returned) */
1936
1937
1938
1939/*** MouClose - Close the mouse device
1940 *
1941 */
1942
1943extern unsigned far pascal MOUCLOSE (
1944 unsigned ); /* Mouse Device Handle */
1945
1946
1947
1948/*** MouSetPtrShape - Set the shape and size of the mouse pointer image
1949 *
1950 */
1951
1952extern unsigned far pascal MOUSETPTRSHAPE (
1953 unsigned char far *, /* Pointer Shape (returned) */
1954 unsigned long, /* Size of data passed */
1955 unsigned, /* Height of Ptr Shape */
1956 unsigned, /* Width of Ptr Shape */
1957 unsigned, /* Offset to Ptr Column Center */
1958 unsigned, /* Offset to Ptr Row Center */
1959 unsigned ); /* Mouse Device Handle */
1960
1961
1962
1963/*** MouRemovePtr - Restricts the Mouse Ptr from occurring in a region
1964 *
1965 */
1966
1967extern unsigned far pascal MOUREMOVEPTR (
1968 unsigned far *, /* Pointer Area */
1969 unsigned ); /* Mouse Device Handle */
1970
1971
1972
1973/*** MouDrawPtr - Unrestricts the Mouse Ptr
1974 *
1975 */
1976
1977extern unsigned far pascal MOUDRAWPTR (
1978 unsigned ); /* Mouse Device Handle */
1979
1980
1981/*** MouSetHotKey - Determines which Mouse Key is the system hot key
1982 *
1983 */
1984
1985extern unsigned far pascal MOUSETHOTKEY (
1986 unsigned, /* Mouse Button Mask */
1987 unsigned ); /* Mouse Device Handle */
1988
1989
1990
1991
1992/*** Device Monitor Services
1993 *
1994 * DosMonOpen
1995 * DosMonClose
1996 * DosMonReg
1997 * DosMonRead
1998 * DosMonWrite
1999 */
2000
2001
2002
2003/*** DosMonOpen - Open a Connection to a CP/DOS Device Monitor
2004 *
2005 * This call is issued once by a process which wishes to use
2006 * device monitors
2007 */
2008
2009extern unsigned far pascal DOSMONOPEN (
2010 char far *, /* Ascii string of device name */
2011 unsigned far * ); /* Address for handle return value */
2012
2013
2014
2015/*** DosMonClose - Close a Connection to a CP/DOS Device Monitor
2016 *
2017 * This call is issued once by a process which wishes to terminate
2018 * monitoring. This call causes all monitor buffers associated to
2019 * be flushed and closed.
2020 */
2021
2022extern unsigned far pascal DOSMONCLOSE (
2023 unsigned ); /* Handle from DosMonOpen */
2024
2025
2026
2027/*** DosMonReg - Register a Set of Buffers as a Monitor
2028 *
2029 * This call is issued to establish a pair of buffer structures -
2030 * one input and one output - to monitor an I/O stream
2031 */
2032
2033extern unsigned far pascal DOSMONREG (
2034 unsigned, /* Handle from DosMonOpen */
2035 unsigned char far *, /* Address of monitor input buffer */
2036 unsigned char far *, /* Address of monitor output buffer */
2037 unsigned, /* Position flag - 0=no positional */
2038 /* preference, 1=front of list, */
2039 /* 2=back of the list */
2040 unsigned ); /* Index */
2041
2042
2043
2044/*** DosMonRead - Read Input From Monitor Structure
2045 *
2046 * This call is issued to wait for and read input records from
2047 * the monitor buffer structure
2048 */
2049
2050extern unsigned far pascal DOSMONREAD (
2051 unsigned char far *, /* Address of monitor input buffer */
2052 unsigned char, /* Block/Run indicator - 0=block */
2053 /* input ready, 1=return */
2054 unsigned char far *, /* Address of data buffer */
2055 unsigned far * ); /* Number of bytes in the data record */
2056
2057
2058
2059/*** DosMonWrite - Write Output to Monitor Structure
2060 *
2061 * Writes data to the monitor output buffer structure
2062 */
2063
2064extern unsigned far pascal DOSMONWRITE (
2065 unsigned char far *, /* Address of monitor output buffer */
2066 unsigned char far *, /* Address of data buffer */
2067 unsigned ); /* Number of bytes in data record */
2068
2069
2070
2071
2072/*** File I/O Services:
2073 *
2074 * DosBufReset
2075 * DosChdir
2076 * DosChgFilePtr
2077 * DosClose
2078 * DosCreateUn
2079 * DosDelete
2080 * DosDupHandle
2081 * DosFindClose
2082 * DosFindFirst
2083 * DosFindNext
2084 * DosFileLocks
2085 * DosGetInfoSeg
2086 * DosMkdir
2087 * DosMove
2088 * DosNewSize
2089 * DosOpen
2090 * DosQCurDir
2091 * DosQCurDisk
2092 * DosQFHandState
2093 * DosQFileInfo
2094 * DosQFileMode
2095 * DosQFSInfo
2096 * DosQHandType
2097 * DosQSwitChar
2098 * DosQVerify
2099 * DosRead
2100 * DosReadAsync
2101 * DosRmdir
2102 * DosSelectDisk
2103 * DosSetFileInfo
2104 * DosSetFileMode
2105 * DosSetFHandState
2106 * DosSetFSInfo
2107 * DosSetMaxFH
2108 * DosSetVerify
2109 * DosWrite
2110 * DosWriteAsync
2111 */
2112
2113
2114
2115/*** DosBufReset - Commit File's Cache Buffers
2116 *
2117 * Flushes requesting process's cache buffers for the specified
2118 * format
2119 */
2120
2121extern unsigned far pascal DOSBUFRESET (
2122 unsigned ); /* File handle */
2123
2124
2125
2126/*** DosChdir - Change The Current Directory
2127 *
2128 * Define the current directory for the requesting process
2129 */
2130
2131extern unsigned far pascal DOSCHDIR (
2132 char far *, /* Directory path name */
2133 unsigned long ); /* Reserved (must be 0) */
2134
2135
2136
2137/*** DosChgFilePtr - Change (Move) File Read Write Pointer
2138 *
2139 * Move the read/write pointer according to the method specified
2140 */
2141
2142extern unsigned far pascal DOSCHGFILEPTR (
2143 unsigned, /* File handle */
2144 long, /* Distance to move in bytes */
2145 unsigned, /* Method of moving (0,1,2) */
2146 unsigned long far * ); /* New pointer location */
2147
2148
2149
2150/*** DosClose - Close a File Handle
2151 *
2152 * Closes the specified file handle
2153 */
2154
2155extern unsigned far pascal DOSCLOSE (
2156 unsigned ); /* File handle */
2157
2158
2159
2160/*** DosCreateUn - Create a Unique File Path Name
2161 *
2162 * Generates a unique file path name
2163 */
2164
2165extern unsigned far pascal DOSCREATEUN (
2166 char far * ); /* File path name area */
2167
2168
2169
2170/*** DosDelete - Delete a File
2171 *
2172 * Removes a directory entry associated with a filename
2173 */
2174
2175extern unsigned far pascal DOSDELETE (
2176 char far *, /* Filename path */
2177 unsigned long ); /* Reserved (must be 0) */
2178
2179
2180
2181/*** DosDupHandle - Duplicate a File Handle
2182 *
2183 * Returns a new file handle for an open file that refers to the
2184 * same file at the same position
2185 */
2186
2187extern unsigned far pascal DOSDUPHANDLE (
2188 unsigned, /* Existing file handle */
2189 unsigned far * ); /* New file handle */
2190
2191
2192
2193/*** DosFindClose - Close Find Handle
2194 *
2195 * Closes the association between a directory handle and a
2196 * DosFindFirst or DosFindNext directory search function
2197 */
2198
2199extern unsigned far pascal DOSFINDCLOSE (
2200 unsigned ); /* Directory search handle */
2201
2202
2203
2204/*** DosFindFirst - Find First Matching File
2205 *
2206 * Finds the first filename that matches the specified file
2207 * specification
2208 */
2209
2210extern unsigned far pascal DOSFINDFIRST (
2211 char far *, /* File path name */
2212 unsigned far *, /* Directory search handle */
2213 unsigned, /* Search attribute */
2214 struct FileFindBuf far *, /* Result buffer */
2215 unsigned, /* Result buffer length */
2216 unsigned far *, /* Number of entries to find */
2217 unsigned long ); /* Reserved (must be 0) */
2218
2219
2220
2221/*** DosFindNext - Find Next Matching File
2222 *
2223 * Finds the next directory entry matching the name that was
2224 * specified on the previous DosFindFirst or DosFindNext function
2225 * call
2226 */
2227
2228extern unsigned far pascal DOSFINDNEXT (
2229 unsigned, /* Directory handle */
2230 struct FileFindBuf far *, /* Result buffer */
2231 unsigned, /* Result buffer length */
2232 unsigned far * ); /* Number of entries to find */
2233
2234
2235
2236/*** DosFileLocks - File Lock Manager
2237 *
2238 * Unlock and/or lock multiple ranges in an opened file
2239 */
2240
2241extern unsigned far pascal DOSFILELOCKS (
2242 unsigned, /* File handle */
2243 long far *, /* Unlock Range */
2244 long far * ); /* Lock Range */
2245
2246
2247
2248/*** DosGetInfoSeg - Get addresses of system variable segments
2249 *
2250 * Returns 2 selectors: one for the global information segment,
2251 * the other for a process information segment
2252 */
2253
2254extern unsigned far pascal DOSGETINFOSEG (
2255 unsigned far *, /* Selector for Global Info Seg */
2256 unsigned far * ); /* Selector for Process Info Seg */
2257
2258
2259
2260/*** DosMkdir - Make Subdirectory
2261 *
2262 * Creates the specified directory
2263 */
2264
2265extern unsigned far pascal DOSMKDIR (
2266 char far *, /* New directory name */
2267 unsigned long ); /* Reserved (must be 0) */
2268
2269
2270
2271/*** DosMove - Move a file or SubDirectory
2272 *
2273 * Moves the specified file or directory
2274 */
2275
2276extern unsigned far pascal DOSMOVE (
2277 char far *, /* Old path name */
2278 char far *, /* New path name */
2279 unsigned long ); /* Reserved (must be 0) */
2280
2281
2282
2283/*** DosNewSize - Change File's Size
2284 *
2285 * Changes a file's size
2286 */
2287
2288extern unsigned far pascal DOSNEWSIZE (
2289 unsigned, /* File handle */
2290 unsigned long ); /* File's new size */
2291
2292
2293
2294/*** DosOpen - Open a File
2295 *
2296 * Creates the specified file (if necessary) and opens it
2297 */
2298
2299extern unsigned far pascal DOSOPEN (
2300 char far *, /* File path name */
2301 unsigned far *, /* New file's handle */
2302 unsigned far *, /* Action taken - 1=file existed, */
2303 /* 2=file was created */
2304 unsigned long, /* File primary allocation */
2305 unsigned, /* File attributes */
2306 unsigned, /* Open function type */
2307 unsigned, /* Open mode of the file */
2308 unsigned long ); /* Reserved (must be zero) */
2309
2310
2311
2312/*** DosQCurDir - Query Current Directory
2313 *
2314 * Get the full path name of the current directory for the
2315 * requesting process for the specified drive
2316 */
2317
2318extern unsigned far pascal DOSQCURDIR (
2319 unsigned, /* Drive number - 1=A, etc */
2320 char far *, /* Directory path buffer */
2321 unsigned far * ); /* Directory path buffer length */
2322
2323
2324
2325/*** DosQCurDisk - Query Current Disk
2326 *
2327 * Determine the current default drive for the requesting process
2328 */
2329
2330extern unsigned far pascal DOSQCURDISK (
2331 unsigned far *, /* Default drive number */
2332 unsigned long far * ); /* Drive-map area */
2333
2334
2335
2336
2337/*** DosQFHandState - Query file handle state
2338 *
2339 * Query the state of the specified handle
2340 */
2341
2342extern unsigned far pascal DOSQFHANDSTATE (
2343 unsigned, /* File Handle */
2344 unsigned far * ); /* File handle state */
2345
2346
2347
2348/*** DosQFileInfo - Query a File's Information
2349 *
2350 * Returns information for a specific file
2351 */
2352
2353extern unsigned far pascal DOSQFILEINFO (
2354 unsigned, /* File handle */
2355 unsigned, /* File data required */
2356 char far *, /* File data buffer */
2357 unsigned ); /* File data buffer size */
2358
2359
2360/*** DosQFileMode - Query File Mode
2361 *
2362 * Get the mode (attribute) of the specified file
2363 */
2364
2365extern unsigned far pascal DOSQFILEMODE (
2366 char far *, /* File path name */
2367 unsigned far *, /* Data area */
2368 unsigned long ); /* Reserved (must be zero) */
2369
2370
2371
2372/*** DosQFSInfo - Query File System Information
2373 *
2374 * Gets information from a file system device
2375 */
2376
2377extern unsigned far pascal DOSQFSINFO (
2378 unsigned, /* Drive number - 0=default, 1=A, etc */
2379 unsigned, /* File system info required */
2380 char far *, /* File system info buffer */
2381 unsigned ); /* File system info buffer size */
2382
2383
2384
2385/*** DosQHandType - Query Handle type
2386 *
2387 * Returns a flag as to whether a handle references a device or
2388 * a file, and if a device, returns device driver attribute word
2389 */
2390
2391extern unsigned far pascal DOSQHANDTYPE (
2392 unsigned, /* File Handle */
2393 unsigned far *, /* Handle Type (0=file, 1=device) */
2394 unsigned far * ); /* Device Driver Attribute Word */
2395
2396
2397
2398/*** DosQSwitChar - Query Switch Character
2399 *
2400 * Returns the system switch character
2401 */
2402
2403extern unsigned far pascal DOSQSWITCHAR (
2404 unsigned char far * ); /* Switch Character (returned) */
2405
2406
2407
2408/*** DosQVerify - Query Verify Setting
2409 *
2410 * Returns the value of the Verify flag
2411 */
2412
2413extern unsigned far pascal DOSQVERIFY (
2414 unsigned far * ); /* Verify setting - 0=verify mode */
2415 /* not active, 1=verify mode active */
2416
2417
2418
2419/*** DosRead - Read from a File
2420 *
2421 * Reads the specified number of bytes from a file to a
2422 * buffer location
2423 */
2424
2425extern unsigned far pascal DOSREAD (
2426 unsigned, /* File handle */
2427 char far *, /* Address of user buffer */
2428 unsigned, /* Buffer length */
2429 unsigned far * ); /* Bytes read */
2430
2431
2432
2433/*** DosReadAsync - Async Read from a File
2434 *
2435 * Reads the specified number of bytes from a file to a buffer
2436 * location asynchronously with respect to the requesting process's
2437 * execution
2438 */
2439
2440extern unsigned far pascal DOSREADASYNC (
2441 unsigned, /* File handle */
2442 unsigned long far *, /* Address of Ram semaphore */
2443 unsigned far *, /* Address of I/O error return code */
2444 char far *, /* Address of user buffer */
2445 unsigned, /* Buffer length */
2446 unsigned far * ); /* Number of bytes actually read */
2447
2448
2449
2450/*** DosRmDir - Remove Subdirectory
2451 *
2452 * Removes a subdirectory from the specified disk
2453 */
2454
2455extern unsigned far pascal DOSRMDIR (
2456 char far *, /* Directory name */
2457 unsigned long ); /* Reserved (must be zero) */
2458
2459
2460
2461/*** DosSelectDisk - Select Default Drive
2462 *
2463 * Select the drive specified as the default drive for the
2464 * calling process
2465 */
2466
2467extern unsigned far pascal DOSSELECTDISK (
2468 unsigned ); /* Default drive number */
2469
2470
2471
2472/*** DosSetFHandState - Set File Handle State
2473 *
2474 * Get the state of the specified file
2475 */
2476
2477extern unsigned far pascal DOSSETFHANDSTATE (
2478 unsigned, /* File handle */
2479 unsigned); /* File handle state */
2480
2481
2482/*** DosSetFSInfo - Set File System Information
2483 *
2484 * Set information for a file system device
2485 */
2486
2487extern unsigned far pascal DOSSETFSINFO (
2488 unsigned, /* Drive number - 0=default, 1=A, etc */
2489 unsigned, /* File system info required */
2490 char far *, /* File system info buffer */
2491 unsigned ); /* File system info buffer size */
2492
2493
2494
2495/*** DosSetFileInfo - Set a File's Information
2496 *
2497 * Specifies information for a file
2498 */
2499
2500extern unsigned far pascal DOSSETFILEINFO (
2501 unsigned, /* File handle */
2502 unsigned, /* File info data required */
2503 char far *, /* File info buffer */
2504 unsigned ); /* File info buffer size */
2505
2506
2507
2508/*** DosSetFileMode - Set File Mode
2509 *
2510 * Change the mode (attribute) of the specified file
2511 */
2512
2513extern unsigned far pascal DOSSETFILEMODE (
2514 char far *, /* File path name */
2515 unsigned, /* New attribute of file */
2516 unsigned long ); /* Reserved (must be zero) */
2517
2518
2519
2520/*** DosSetMaxFH - Set Maximum File Handles
2521 *
2522 * Defines the maximum number of file handles for the
2523 * current process
2524 */
2525
2526extern unsigned far pascal DOSSETMAXFH (
2527 unsigned ); /* Number of file handles */
2528
2529
2530
2531/*** DosSetVerify - Set/Reset Verify Switch
2532 *
2533 * Sets the verify switch
2534 */
2535
2536extern unsigned far pascal DOSSETVERIFY (
2537 unsigned ); /* New value of verify switch */
2538
2539
2540
2541/*** DosWrite - Synchronous Write to a File
2542 *
2543 * Transfers the specified number of bytes from a buffer to
2544 * the specified file, synchronously with respect to the
2545 * requesting process's execution
2546 */
2547
2548extern unsigned far pascal DOSWRITE (
2549 unsigned, /* File handle */
2550 char far *, /* Address of user buffer */
2551 unsigned, /* Buffer length */
2552 unsigned far * ); /* Bytes written */
2553
2554
2555
2556/*** DosWriteAsync - Asynchronous Write to a File
2557 *
2558 * Transfers the specified number of bytes from a buffer to
2559 * the specified file, asynchronously with respect to the
2560 * requesting process's execution
2561 */
2562
2563extern unsigned far pascal DOSWRITEASYNC (
2564 unsigned, /* File handle */
2565 unsigned long far *, /* Address of RAM semaphore */
2566 unsigned far *, /* Address of I/O error return code */
2567 char far *, /* Address of user buffer */
2568 unsigned, /* Buffer length */
2569 unsigned far * ); /* Bytes written */
2570
2571
2572
2573
2574/*** Hard Error Handling
2575 *
2576 * DosError
2577 */
2578
2579
2580
2581/*** DosError - Enable Hard Error Processing
2582 *
2583 * Allows a CP/DOS process to receive hard error notification
2584 * without generating a hard error signal. Hard errors generated
2585 * under a process which has issued a DosError call are FAILed and
2586 * the appropriate error code is returned.
2587 */
2588
2589extern unsigned far pascal DOSERROR (
2590 unsigned ); /* Action flag */
2591
2592
2593
2594/*** Machine Exception Handling
2595 *
2596 * DosSetVector
2597 */
2598
2599
2600
2601/*** DosSetVec - Establish a handler for an Exception
2602 *
2603 * Allows a process to register an address to be
2604 * called when a 286 processor exception occurs.
2605 */
2606
2607extern unsigned far pascal DOSSETVEC (
2608 unsigned, /* Exception Vector */
2609 void (far *)(void), /* Address of exception handler */
2610 void (far * far *)(void) ); /* Address to store previous handler */
2611
2612
2613
2614/*** Message Functions
2615 *
2616 * DosGetMessage
2617 * DosInsMessage
2618 * DosPutMessage
2619 */
2620
2621
2622
2623/*** DosGetMessage - Return System Message With Variable Text
2624 *
2625 * Retrieves a message from the specified system message file
2626 * and inserts variable information into the body of the message
2627 */
2628
2629extern unsigned far pascal DOSGETMESSAGE (
2630 char far * far *, /* Table of variables to insert */
2631 unsigned, /* Number of variables */
2632 char far *, /* Address of message buffer */
2633 unsigned, /* Length of buffer */
2634 unsigned, /* Number of the message */
2635 char far *, /* Message file name */
2636 unsigned far * ); /* Length of returned message */
2637
2638
2639
2640/*** DosInsMessage - Insert Variable Text into Message
2641 *
2642 * Inserts variable text string information into the body ofa message.
2643 */
2644
2645extern unsigned far pascal DOSINSMESSAGE (
2646 char far * far *, /* Table of variables to insert */
2647 unsigned, /* Number of variables */
2648 char far *, /* Address of output buffer */
2649 unsigned, /* Length of output buffer */
2650 unsigned, /* Length of message */
2651 char far *, /* Address of input string */
2652 unsigned far * ); /* Length of returned message */
2653
2654
2655
2656/*** DosPutMessage - Output Message Text to Indicated Handle
2657 *
2658 * Outputs a message in a buffer passed by a caller to the
2659 * specified handle. The function formats the buffer to
2660 * prevent words from wrapping if displayed to a screen.
2661 */
2662
2663extern unsigned far pascal DOSPUTMESSAGE (
2664 unsigned, /* Handle of output file/device */
2665 unsigned, /* Length of message buffer */
2666 char far * ); /* Message buffer */
2667
2668
2669
2670/*** RAS Services
2671 *
2672 * DosSysTrace
2673 */
2674
2675
2676
2677/*** DosSysTrace - Add a Trace record to the System Trace Buffer
2678 *
2679 * Allows a subsystem or system extension to add information to the
2680 * System trace buffer. This call can only be made from protected
2681 * mode.
2682 */
2683
2684extern unsigned far pascal DOSSYSTRACE (
2685 unsigned, /* Major trace event code (0-255) */
2686 unsigned, /* Length of area to be recorded */
2687 unsigned, /* Minor trace event code (0-FFFFH) */
2688 char far * ); /* Pointer to area to be traced */
2689
2690
2691
2692/*** Program Startup Conventions
2693 *
2694 * DosGetEnv
2695 * DosGetVersion
2696 */
2697
2698
2699
2700/*** DosGetEnv - Get the Address of Process' Environment String
2701 *
2702 * Return the address of the current process' environment string
2703 */
2704
2705extern unsigned far pascal DOSGETENV (
2706 unsigned far *, /* Address to place segment handle */
2707 unsigned far * ); /* Address for command line start */
2708
2709
2710
2711/*** DosGetVersion - Get DOS Version
2712 *
2713 * Returns the DOS version number
2714 */
2715
2716extern unsigned far pascal DOSGETVERSION (
2717 unsigned far * ); /* Address to put version number */
2718
2719
2720
2721/*** World Trade Support
2722 *
2723 * All of these functions declarations have the string NLS in a comment.
2724 * This is required in the generation of the Imports Library DOSCALLS.LIB
2725 *
2726 * DosGetCtryInfo
2727 * DosSetCtryCode
2728 * DosGetDBCSEv
2729 * DosCaseMap
2730 * DosGetSpecChar
2731 * DosCollate
2732 */
2733
2734
2735
2736/*** DosGetCtryInfo
2737 *
2738 * Returns the country dependant formatting information that
2739 * resides in the NLSCDIT.SYS World Trade Support file
2740 */
2741
2742extern unsigned far pascal DOSGETCTRYINFO ( /*<NLS>*/
2743 unsigned, /* Length of data area provided */
2744 unsigned long far *, /* Country code */
2745 char far *, /* Memory buffer */
2746 unsigned far * ); /* Length of returned data */
2747
2748
2749
2750/*** DosSetCrtyCode
2751 *
2752 * Sets the current country code for the system
2753 */
2754
2755extern unsigned far pascal DOSSETCTRYCODE ( /*<NLS>*/
2756 unsigned long far * ); /* Country code */
2757
2758
2759
2760/*** DosGetDBCSEv - Get the DBCS Environment Vector
2761 *
2762 * Used to obtain the DBCS environmental vector that resides in
2763 * the NLSDBCS.SYS World Trade Support file.
2764 */
2765
2766extern unsigned far pascal DOSGETDBCSEV ( /*<NLS>*/
2767 unsigned, /* Length of data area provided */
2768 unsigned long far *, /* Country code */
2769 char far * ); /* Pointer to data area */
2770
2771
2772
2773/*** DosCaseMap
2774 *
2775 * Used to perform case mapping on a string of binary values which
2776 * represent ASCII characters.
2777 */
2778
2779extern unsigned far pascal DOSCASEMAP ( /*<NLS>*/
2780 unsigned, /* Length of string to case map */
2781 unsigned long far *, /* Country code */
2782 char far * ); /* Address of string of binary values */
2783
2784
2785
2786/*** DosGetSpecChar
2787 *
2788 * Gets a list of special characters that are valid in file names, etc.
2789 * The list corresponds to the byte values 128-255.
2790 */
2791
2792extern unsigned far pascal DOSGETSPECCHAR ( /*<NLS>*/
2793 unsigned, /* Length of data area provided */
2794 unsigned long far *, /* Country Code */
2795 unsigned char far * ); /* Data area */
2796
2797
2798
2799/*** DosCollate
2800 *
2801 * Undocumented NLS feature
2802 */
2803
2804extern unsigned far pascal DOSCOLLATE ( /*<NLS>*/
2805 unsigned, /* Buffer Length */
2806 unsigned long far *, /* Country Code */
2807 char far * ); /* Buffer Address */
2808
2809
2810
2811/* End of File */