home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l321 / 5.ddi / NDP.001 / DOS.FH next >
Encoding:
Text File  |  1991-05-15  |  11.0 KB  |  332 lines

  1. c dos.fh
  2. c
  3. c Defines the data structures used for passing register contents
  4. c back and forth to the DOS interface routines by a Fortran program.
  5. c
  6. c Copyright (C) MicroWay, Inc., 1988, 1989, 1990
  7.  
  8.       integer*4 intno
  9.  
  10. c Interrupt number: 33 for int 21h, etc.
  11.  
  12.       integer*4 inregs(7),outregs(7)
  13.       integer*2 winregs(14),woutregs(14)
  14.       integer*1 binregs(28),boutregs(28)
  15.  
  16. c    inregs(1) = eax
  17. c    inregs(2) = ebx
  18. c    inregs(3) = ecx
  19. c    inregs(4) = edx
  20. c    inregs(5) = esi
  21. c    inregs(6) = edi
  22. c    inregs(7) = eflags
  23. c
  24. c And similarly for outregs.
  25.  
  26. c    winregs(1) = ax
  27. c    winregs(3) = bx
  28. c    winregs(5) = cx
  29. c    winregs(7) = dx
  30. c    winregs(9) = si
  31. c    winregs(11) = di
  32. c    winregs(13) = flags
  33. c
  34. c    winregs(2) = winregs(4) = winregs(6) = winregs(8) = winregs(10) =
  35. c    winregs(12) = winregs(14) = unused
  36. c
  37. c And similarly for woutregs.
  38.  
  39. c    binregs(1) = al
  40. c    binregs(2) = ah
  41. c    binregs(5) = bl
  42. c    binregs(6) = bh
  43. c    binregs(9) = cl
  44. c    binregs(10) = ch
  45. c    binregs(13) = dl
  46. c    binregs(14) = dh
  47. c    binregs(25) = lo_flags
  48. c    binregs(26) = hi_flags
  49. c
  50. c All other elements of binregs are unused.
  51. c
  52. c And similarly for boutregs.
  53.  
  54. c Overlay byte, word and doubleword register data structures.
  55.  
  56.       equivalence (inregs(1), winregs(1), binregs(1))
  57.       equivalence (outregs(1), woutregs(1), boutregs(1))
  58.  
  59. c-------------------------------------------------------------------------
  60. c
  61. c LIBC contains a number of DOS-specific routines that are compatible
  62. c with Microsoft C v5.1.  This library was formerly called LIBMS.LIB.
  63. c Note that Microsoft-compatible graphics routines are included in GREX
  64. c (LIBG3).
  65. c
  66. c For full documentation, see the Microsoft C 5.1 function guide or
  67. c similar reference.  NDP-Fortran users have access to all routines
  68. c except spawnl- functions, but string arguments must be explicitly
  69. c null-terminated by the Fortran user.  An example of such code is given
  70. c below.  The subroutine null_terminate can be called to append a
  71. c terminating null character (char(0)) to any string; if the string is
  72. c full of non-blank characters, the last character is truncated.
  73. c
  74. c      subroutine null_terminate (s)
  75. c      character*(*) s
  76. c      n = actual_length (s)
  77. c      if (n.lt.len(s)) n = n+1
  78. c      s(n:n) = char(0)
  79. c      return
  80. c      end
  81. c      integer function actual_length (s)
  82. c      character*(*) s
  83. c      j = 1 + len(s)
  84. c    1 j = j-1
  85. c      if (j.le.0) go to 2
  86. c      if (s(j:j).eq.' '.or.s(j:j).eq.char(0)) go to 1
  87. c    2 actual_length = j
  88. c      return
  89. c      end
  90. c
  91. c Fortran users must be aware that some return values cannot be treated
  92. c in Fortran the same way that a C program would.  Pointers to strings,
  93. c for example, must be passed by value using %VAL() to other Fortran
  94. c functions if the string data is to be accessed using Fortran code.
  95. c
  96. c Similarly, the Fortran user should remember that strings returned by
  97. c C functions will be null-terminated and not filled out with blanks.
  98. c
  99. c Short function descriptions
  100. c-------------------------------------------------------------------------
  101. c
  102. c _bios_disk       INT 13h services
  103. c _bios_equiplist  INT 11h services
  104. c _bios_keybrd     INT 16h services
  105. c _bios_memsize    INT 12h services
  106. c _bios_printer    INT 17h services
  107. c _bios_serialcom  INT 14h services
  108. c _bios_timeofday  INT 1Ah services
  109. c cgets            get string from console
  110. c chdir            change directory
  111. c chmod            change file access mode at DOS level
  112. c chsize           change file size
  113. c _clear87         clear 80x87 exception
  114. c _control87       get/set 80x87 control word
  115. c cputs            put string to console
  116. c _dos_allocmem    allocate conventional memory
  117. c _dos_close       close file handle
  118. c _dos_creat       create file handle
  119. c _dos_creatnew    create a new file
  120. c _dos_findfirst   find first matching file
  121. c _dos_findnext    find next matching file
  122. c _dos_freemem     free conventional memory
  123. c _dos_getdate     get DOS date
  124. c _dos_getdiskfree get disk free space
  125. c _dos_getdrive    current drive
  126. c _dos_getfileattr file attributes
  127. c _dos_getftime    file time stamp
  128. c _dos_gettime     get DOS time
  129. c _dos_keep        TSR
  130. c _dos_open        open file handle
  131. c _dos_read        read from file handle
  132. c _dos_setblock    memory allocation strategy
  133. c _dos_setdate     set DOS date
  134. c _dos_setdrive    set current drive
  135. c _dos_setfileattr set file attributes
  136. c _dos_setftime    set file time stamp
  137. c _dos_settime     set DOS time
  138. c _dos_write       write to file handle
  139. c dosexterr        get extended error information
  140. c dup              duplicate a file handle
  141. c dup2             force two handles to refer to one file
  142. c eof              determine if file is at eof
  143. c fcloseall        close all files except stdin, stdout, stderr
  144. c filelength       determine file size
  145. c flushall         flush all files except stdin, stdout, stderr
  146. c _freect          see how many objects will fit in free memory
  147. c ftime            store current time in struct timeb
  148. c get_DOS_dta      disk transfer address
  149. c getch            character from console
  150. c getche           character from console without echo
  151. c getcwd           get current directory
  152. c _heapchk         check heap for consistency
  153. c heaprun          describe heap entries, free entries
  154. c _heapset         fill free areas with a pattern
  155. c _heapwalk        step through heap entries
  156. c int86            execute interrupt
  157. c int86x           execute interrupt, DS and ES specified
  158. c intdos           execute INT 21h
  159. c intdosx          execute INT 21h, DS and ES specified
  160. c itoa             string representation of an integer
  161. c kbhit            has a key been hit?
  162. c lfind            linear search for an element
  163. c locking          set file access permissions
  164. c lrotl            long rotate left
  165. c lrotr            long rotate right
  166. c lsearch          linear search for an element
  167. c ltoa             string representation of a long
  168. c _makepath        combine path elements to form filespec
  169. c memavl           determine available heap space
  170. c memmax           determine largest available free chunk
  171. c mkdir            make directory
  172. c _msize           determine size of an allocated block
  173. c putch            put character to console
  174. c putenv           place string in local environment
  175. c rmdir            remove directory
  176. c rotl             short rotate left
  177. c rotr             short rotate right
  178. c _searchenv       search for file through environment variable
  179. c segread          get segment register values
  180. c sopen            _dos_open with file sharing
  181. c spawnl           spawn variant (not available from Fortran)
  182. c spawnle          spawn variant (not available from Fortran)
  183. c spawnlp          spawn variant (not available from Fortran)
  184. c spawnlpe         spawn variant (not available from Fortran)
  185. c spawnv           spawn variant
  186. c spawnve          spawn variant
  187. c spawnvp          spawn variant
  188. c spawnvpe         spawn variant
  189. c _splitpath       parse filespec into component parts
  190. c strcmpi          compare strings not case sensitive
  191. c _strdate         put date in string form
  192. c strdup           duplicate a string
  193. c _strerror        make an error message
  194. c stricmp          compare strings not case sensitive
  195. c strlwr           convert string to lower case
  196. c strnicmp         compare strings not case sensitive to a certain length
  197. c strnset          set string to value up to a certain length or end
  198. c strrev           reverse a string
  199. c strset           set string to value
  200. c _strtime         put time in string form
  201. c strupr           convert string to upper case
  202. c tell             get file pointer
  203. c tempnam          peculiar temporary file name
  204. c tzset            gets TZ environment variable into global data
  205. c ultoa            string representation of an unsigned long
  206. c ungetch          reverse effect of getch or getche
  207. c utime            change time stamp of file
  208. c
  209. c-------------------------------------------------------------------------
  210. c
  211. c Function type declaration list
  212. c
  213. c Note that a function reference is indicated by an argument list in
  214. c parentheses even if no arguments are to be passed, but a CALL
  215. c statement is unambiguous and therefore does not need empty parentheses
  216. c if no arguments are passed.  Recall that ANY function can be CALLed
  217. c rather than invoked in an expression; the return value is just
  218. c discarded.
  219. c
  220.  
  221.       integer _bios_disk
  222.       integer _bios_equiplist
  223.       integer _bios_keybrd
  224.       integer _bios_memsize
  225.       integer _bios_printer
  226.       integer _bios_serialcom
  227.       integer _bios_timeofday
  228.       integer  cgets
  229.       integer  chdir
  230.       integer  chmod
  231.       integer  chsize
  232.       integer _clear87
  233.       integer _control87
  234.       integer  cputs
  235.       integer _dos_allocmem
  236.       integer _dos_close
  237.       integer _dos_creat
  238.       integer _dos_creatnew
  239.       integer _dos_findfirst
  240.       integer _dos_findnext
  241.       integer _dos_freemem
  242.       integer _dos_getdate
  243.       integer _dos_getdiskfree
  244.       integer _dos_getdrive
  245.       integer _dos_getfileattr
  246.       integer _dos_getftime
  247.       integer _dos_gettime
  248.       integer _dos_keep
  249.       integer _dos_open
  250.       integer _dos_read
  251.       integer _dos_setblock
  252.       integer _dos_setdate
  253.       integer _dos_setdrive
  254.       integer _dos_setfileattr
  255.       integer _dos_setftime
  256.       integer _dos_settime
  257.       integer _dos_write
  258.       integer  dosexterr
  259.       integer  dup
  260.       integer  dup2
  261.       integer  eof
  262.       integer  fcloseall
  263.       integer  filelength
  264.       integer  flushall
  265.       integer _freect
  266.       integer  ftime
  267.       integer  get_DOS_dta
  268.       integer  getch
  269.       integer  getche
  270.       integer  getcwd
  271.       integer _heapchk
  272.       integer  heaprun
  273.       integer _heapset
  274.       integer _heapwalk
  275.       integer  int386
  276.       integer  int86
  277.       integer  int86x
  278.       integer  intdos
  279.       integer  intdosx
  280.       integer  itoa
  281.       integer  kbhit
  282.       integer  lfind
  283.       integer  locking
  284.       integer  lrotl
  285.       integer  lrotr
  286.       integer  lsearch
  287.       integer  ltoa
  288.       integer _makepath
  289.       integer  memavl
  290.       integer  memmax
  291.       integer  mkdir
  292.       integer _msize
  293.       integer  putch
  294.       integer  putenv
  295.       integer  rm_int386
  296.       integer  rmdir
  297.       integer  rotl
  298.       integer  rotr
  299.       integer _searchenv
  300.       integer  segread
  301.       integer  sopen
  302.       integer  spawnl
  303.       integer  spawnle
  304.       integer  spawnlp
  305.       integer  spawnlpe
  306.       integer  spawnv
  307.       integer  spawnve
  308.       integer  spawnvp
  309.       integer  spawnvpe
  310.       integer _splitpath
  311.       integer  strcmpi
  312.       integer _strdate
  313.       integer  strdup
  314.       integer _strerror
  315.       integer  stricmp
  316.       integer  strlwr
  317.       integer  strnicmp
  318.       integer  strnset
  319.       integer  strrev
  320.       integer  strset
  321.       integer _strtime
  322.       integer  strupr
  323.       integer  tell
  324.       integer  tempnam
  325.       integer  tzset
  326.       integer  ultoa
  327.       integer  ungetch
  328.       integer  utime
  329.  
  330. c-------------------------------------------------------------------------
  331.  
  332.