home *** CD-ROM | disk | FTP | other *** search
- c dos.fh
- c
- c Defines the data structures used for passing register contents
- c back and forth to the DOS interface routines by a Fortran program.
- c
- c Copyright (C) MicroWay, Inc., 1988, 1989, 1990
-
- integer*4 intno
-
- c Interrupt number: 33 for int 21h, etc.
-
- integer*4 inregs(7),outregs(7)
- integer*2 winregs(14),woutregs(14)
- integer*1 binregs(28),boutregs(28)
-
- c inregs(1) = eax
- c inregs(2) = ebx
- c inregs(3) = ecx
- c inregs(4) = edx
- c inregs(5) = esi
- c inregs(6) = edi
- c inregs(7) = eflags
- c
- c And similarly for outregs.
-
- c winregs(1) = ax
- c winregs(3) = bx
- c winregs(5) = cx
- c winregs(7) = dx
- c winregs(9) = si
- c winregs(11) = di
- c winregs(13) = flags
- c
- c winregs(2) = winregs(4) = winregs(6) = winregs(8) = winregs(10) =
- c winregs(12) = winregs(14) = unused
- c
- c And similarly for woutregs.
-
- c binregs(1) = al
- c binregs(2) = ah
- c binregs(5) = bl
- c binregs(6) = bh
- c binregs(9) = cl
- c binregs(10) = ch
- c binregs(13) = dl
- c binregs(14) = dh
- c binregs(25) = lo_flags
- c binregs(26) = hi_flags
- c
- c All other elements of binregs are unused.
- c
- c And similarly for boutregs.
-
- c Overlay byte, word and doubleword register data structures.
-
- equivalence (inregs(1), winregs(1), binregs(1))
- equivalence (outregs(1), woutregs(1), boutregs(1))
-
- c-------------------------------------------------------------------------
- c
- c LIBC contains a number of DOS-specific routines that are compatible
- c with Microsoft C v5.1. This library was formerly called LIBMS.LIB.
- c Note that Microsoft-compatible graphics routines are included in GREX
- c (LIBG3).
- c
- c For full documentation, see the Microsoft C 5.1 function guide or
- c similar reference. NDP-Fortran users have access to all routines
- c except spawnl- functions, but string arguments must be explicitly
- c null-terminated by the Fortran user. An example of such code is given
- c below. The subroutine null_terminate can be called to append a
- c terminating null character (char(0)) to any string; if the string is
- c full of non-blank characters, the last character is truncated.
- c
- c subroutine null_terminate (s)
- c character*(*) s
- c n = actual_length (s)
- c if (n.lt.len(s)) n = n+1
- c s(n:n) = char(0)
- c return
- c end
- c integer function actual_length (s)
- c character*(*) s
- c j = 1 + len(s)
- c 1 j = j-1
- c if (j.le.0) go to 2
- c if (s(j:j).eq.' '.or.s(j:j).eq.char(0)) go to 1
- c 2 actual_length = j
- c return
- c end
- c
- c Fortran users must be aware that some return values cannot be treated
- c in Fortran the same way that a C program would. Pointers to strings,
- c for example, must be passed by value using %VAL() to other Fortran
- c functions if the string data is to be accessed using Fortran code.
- c
- c Similarly, the Fortran user should remember that strings returned by
- c C functions will be null-terminated and not filled out with blanks.
- c
- c Short function descriptions
- c-------------------------------------------------------------------------
- c
- c _bios_disk INT 13h services
- c _bios_equiplist INT 11h services
- c _bios_keybrd INT 16h services
- c _bios_memsize INT 12h services
- c _bios_printer INT 17h services
- c _bios_serialcom INT 14h services
- c _bios_timeofday INT 1Ah services
- c cgets get string from console
- c chdir change directory
- c chmod change file access mode at DOS level
- c chsize change file size
- c _clear87 clear 80x87 exception
- c _control87 get/set 80x87 control word
- c cputs put string to console
- c _dos_allocmem allocate conventional memory
- c _dos_close close file handle
- c _dos_creat create file handle
- c _dos_creatnew create a new file
- c _dos_findfirst find first matching file
- c _dos_findnext find next matching file
- c _dos_freemem free conventional memory
- c _dos_getdate get DOS date
- c _dos_getdiskfree get disk free space
- c _dos_getdrive current drive
- c _dos_getfileattr file attributes
- c _dos_getftime file time stamp
- c _dos_gettime get DOS time
- c _dos_keep TSR
- c _dos_open open file handle
- c _dos_read read from file handle
- c _dos_setblock memory allocation strategy
- c _dos_setdate set DOS date
- c _dos_setdrive set current drive
- c _dos_setfileattr set file attributes
- c _dos_setftime set file time stamp
- c _dos_settime set DOS time
- c _dos_write write to file handle
- c dosexterr get extended error information
- c dup duplicate a file handle
- c dup2 force two handles to refer to one file
- c eof determine if file is at eof
- c fcloseall close all files except stdin, stdout, stderr
- c filelength determine file size
- c flushall flush all files except stdin, stdout, stderr
- c _freect see how many objects will fit in free memory
- c ftime store current time in struct timeb
- c get_DOS_dta disk transfer address
- c getch character from console
- c getche character from console without echo
- c getcwd get current directory
- c _heapchk check heap for consistency
- c heaprun describe heap entries, free entries
- c _heapset fill free areas with a pattern
- c _heapwalk step through heap entries
- c int86 execute interrupt
- c int86x execute interrupt, DS and ES specified
- c intdos execute INT 21h
- c intdosx execute INT 21h, DS and ES specified
- c itoa string representation of an integer
- c kbhit has a key been hit?
- c lfind linear search for an element
- c locking set file access permissions
- c lrotl long rotate left
- c lrotr long rotate right
- c lsearch linear search for an element
- c ltoa string representation of a long
- c _makepath combine path elements to form filespec
- c memavl determine available heap space
- c memmax determine largest available free chunk
- c mkdir make directory
- c _msize determine size of an allocated block
- c putch put character to console
- c putenv place string in local environment
- c rmdir remove directory
- c rotl short rotate left
- c rotr short rotate right
- c _searchenv search for file through environment variable
- c segread get segment register values
- c sopen _dos_open with file sharing
- c spawnl spawn variant (not available from Fortran)
- c spawnle spawn variant (not available from Fortran)
- c spawnlp spawn variant (not available from Fortran)
- c spawnlpe spawn variant (not available from Fortran)
- c spawnv spawn variant
- c spawnve spawn variant
- c spawnvp spawn variant
- c spawnvpe spawn variant
- c _splitpath parse filespec into component parts
- c strcmpi compare strings not case sensitive
- c _strdate put date in string form
- c strdup duplicate a string
- c _strerror make an error message
- c stricmp compare strings not case sensitive
- c strlwr convert string to lower case
- c strnicmp compare strings not case sensitive to a certain length
- c strnset set string to value up to a certain length or end
- c strrev reverse a string
- c strset set string to value
- c _strtime put time in string form
- c strupr convert string to upper case
- c tell get file pointer
- c tempnam peculiar temporary file name
- c tzset gets TZ environment variable into global data
- c ultoa string representation of an unsigned long
- c ungetch reverse effect of getch or getche
- c utime change time stamp of file
- c
- c-------------------------------------------------------------------------
- c
- c Function type declaration list
- c
- c Note that a function reference is indicated by an argument list in
- c parentheses even if no arguments are to be passed, but a CALL
- c statement is unambiguous and therefore does not need empty parentheses
- c if no arguments are passed. Recall that ANY function can be CALLed
- c rather than invoked in an expression; the return value is just
- c discarded.
- c
-
- integer _bios_disk
- integer _bios_equiplist
- integer _bios_keybrd
- integer _bios_memsize
- integer _bios_printer
- integer _bios_serialcom
- integer _bios_timeofday
- integer cgets
- integer chdir
- integer chmod
- integer chsize
- integer _clear87
- integer _control87
- integer cputs
- integer _dos_allocmem
- integer _dos_close
- integer _dos_creat
- integer _dos_creatnew
- integer _dos_findfirst
- integer _dos_findnext
- integer _dos_freemem
- integer _dos_getdate
- integer _dos_getdiskfree
- integer _dos_getdrive
- integer _dos_getfileattr
- integer _dos_getftime
- integer _dos_gettime
- integer _dos_keep
- integer _dos_open
- integer _dos_read
- integer _dos_setblock
- integer _dos_setdate
- integer _dos_setdrive
- integer _dos_setfileattr
- integer _dos_setftime
- integer _dos_settime
- integer _dos_write
- integer dosexterr
- integer dup
- integer dup2
- integer eof
- integer fcloseall
- integer filelength
- integer flushall
- integer _freect
- integer ftime
- integer get_DOS_dta
- integer getch
- integer getche
- integer getcwd
- integer _heapchk
- integer heaprun
- integer _heapset
- integer _heapwalk
- integer int386
- integer int86
- integer int86x
- integer intdos
- integer intdosx
- integer itoa
- integer kbhit
- integer lfind
- integer locking
- integer lrotl
- integer lrotr
- integer lsearch
- integer ltoa
- integer _makepath
- integer memavl
- integer memmax
- integer mkdir
- integer _msize
- integer putch
- integer putenv
- integer rm_int386
- integer rmdir
- integer rotl
- integer rotr
- integer _searchenv
- integer segread
- integer sopen
- integer spawnl
- integer spawnle
- integer spawnlp
- integer spawnlpe
- integer spawnv
- integer spawnve
- integer spawnvp
- integer spawnvpe
- integer _splitpath
- integer strcmpi
- integer _strdate
- integer strdup
- integer _strerror
- integer stricmp
- integer strlwr
- integer strnicmp
- integer strnset
- integer strrev
- integer strset
- integer _strtime
- integer strupr
- integer tell
- integer tempnam
- integer tzset
- integer ultoa
- integer ungetch
- integer utime
-
- c-------------------------------------------------------------------------
-
-