home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / win3 / patches / symantec / rtlinc.exe / STDIO.ASM < prev    next >
Assembly Source File  |  1993-04-28  |  4KB  |  264 lines

  1. ;_ stdio.asm   Modified by Joe Huffman October 21, 1990
  2. ; Copyright (C) 1985-1990 by Walter Bright    */
  3. ; All rights reserved.                */
  4.  
  5. ; Standard I/O header file    */
  6.  
  7. EOF    equ    -1
  8.  
  9. ifdef    M_I386
  10.  
  11. BUFSIZ        equ    4096
  12.  
  13. ifdef DOS386
  14. _ptr    equ    0
  15. _cnt    equ    _ptr + SIZEPTR
  16. _base    equ    _cnt + 4
  17. _flag    equ    _base + SIZEPTR
  18. _file    equ    _flag + 4
  19. _bufsiz equ    _file + 4
  20. else
  21. ifdef __OS2__
  22. _ptr        equ    0
  23. _cnt        equ    4
  24. _base        equ    8
  25. _flag        equ    12
  26. _file        equ    16
  27. _charbuf    equ    20
  28. _bufsiz        equ    24
  29. __tmpnum    equ    28
  30. else
  31. ifdef __NT__
  32. _ptr        equ    0
  33. _cnt        equ    4
  34. _base        equ    8
  35. _flag        equ    12
  36. _file        equ    16
  37. _bufsiz        equ    20
  38. __tmpnum    equ    24
  39. else    ; M_UNIX and M_XENIX
  40. _cnt    equ    0
  41. _ptr    equ    _cnt + 4
  42. _base    equ    _ptr + SIZEPTR
  43. _flag    equ    _base + SIZEPTR
  44. _file    equ    _flag + 1
  45. endif
  46. endif
  47. endif
  48.  
  49. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  50. ;Thread data structure (one is allocated per thread)
  51. ;Must match __thread1 in cinit.asm and struct THREAD in mt.h
  52.  
  53.     ifdef __NT__
  54. thread_t struc
  55.     t_stackoff    dd    0
  56. ;    t_stackseg    dw    0
  57.     t_parameter    dd    0
  58.     t_func        dd    0
  59.     t_stacktop    dd    0
  60.     t_errno        dd    0
  61. ;   if SPTR
  62.     t_strtok    dd    0
  63. ;   else
  64. ;    t_strtok    df    0
  65. ;   endif
  66. ;   ifdef __NT__
  67.     t_id        dd    0    ;thread id
  68.     t_hndl        dd    0    ;thread handle
  69.     t_envptr    dd    0    ;pointer to malloced memory for getenv return
  70. ;   endif
  71.     t_tm        dd    9 dup (0)    ;struct tm
  72.  
  73.     ;Actually t_fenv
  74.     t_fe_status    dw    0
  75.     t_fe_control    dw    0
  76.     t_fe_round    dw    0
  77.     t_fe_res1    dw    0
  78.     t_fe_res2    dw    0
  79.  
  80.     t_asctime    db    26 dup (0)
  81.     t_digstr    db    32 dup (0)    ;DBL_DIG*2+2
  82. thread_t ends
  83.     else
  84. thread_t struc
  85.     t_stackoff    dd    0
  86. ;    t_stackseg    dw    0
  87.     t_parameter    dd    0
  88.     t_func        dd    0
  89.     t_stacktop    dd    0
  90.     t_errno        dd    0
  91. ;   if SPTR
  92.     t_strtok    dd    0
  93. ;   else
  94. ;    t_strtok    df    0
  95. ;   endif
  96. ;   ifdef __NT__
  97. ;    t_id        dd    0    ;thread id
  98. ;    t_hndl        dd    0    ;thread handle
  99. ;    t_envptr    dd    0    ;pointer to malloced memory for getenv return
  100. ;   endif
  101.     t_tm        dd    9 dup (0)    ;struct tm
  102.  
  103.     ;Actually t_fenv
  104.     t_fe_status    dw    0
  105.     t_fe_control    dw    0
  106.     t_fe_round    dw    0
  107.     t_fe_res1    dw    0
  108.     t_fe_res2    dw    0
  109.  
  110.     t_asctime    db    26 dup (0)
  111.     t_digstr    db    32 dup (0)    ;DBL_DIG*2+2
  112. thread_t ends
  113.     endif
  114.  
  115. THDSIZE    equ    (size thread_t)
  116.  
  117. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  118.  
  119. ifdef _MT
  120.  
  121.   ifndef noerrno
  122.     if LCODE
  123.     extrn    __errno_set:far
  124.     else
  125.     extrn    __errno_set:near
  126.     endif
  127.   endif
  128.  
  129. errno_set macro    value
  130.     ifnb <value>
  131.     mov    EAX,value
  132.     endif
  133.     call    __errno_set
  134.     endm
  135.  
  136. else
  137.  
  138.  ifndef noerrno
  139.     begdata
  140.     extrn    _errno:dword
  141.     enddata
  142.  endif
  143.  
  144. errno_set macro    value
  145.     ifnb <value>
  146.     mov    _errno,value
  147.     else
  148.     mov    _errno,EAX
  149.     endif
  150.     endm
  151.  
  152. endif
  153.  
  154. else    ;M_I386
  155.  
  156. BUFSIZ        equ    1024
  157.     IF SPTR
  158. BIGBUF        equ    20 * 1024
  159.     ENDIF
  160.  
  161. _ptr    equ    0
  162. _cnt    equ    _ptr + SIZEPTR
  163. _base    equ    _cnt + 2
  164. _flag    equ    _base + SIZEPTR
  165. _file    equ    _flag + 2
  166. _bufsiz equ    _file + 2
  167.     IFDEF    BIGBUF
  168. _seg    equ    _bufsiz + 2
  169.     ENDIF
  170.  
  171. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  172. ;Thread data structure (one is allocated per thread)
  173. ;Must match __thread1 in cinit.asm and struct THREAD in mt.h
  174.  
  175. thread_t struc
  176.     t_stackoff    dw    0
  177.     t_stackseg    dw    0
  178.     t_stacktop    dw    0
  179.     t_errno        dw    0
  180.     if SPTR
  181.     t_strtok    dw    0
  182.     else
  183.     t_strtok    dd    0
  184.     endif
  185.     t_tm        dw    9 dup (0)    ;struct tm
  186.  
  187.     ;Actually fenv_t
  188.     t_fe_status    dw    0
  189.     t_fe_control    dw    0
  190.     t_fe_round    dw    0
  191.     t_fe_res1    dw    0
  192.     t_fe_res2    dw    0
  193.  
  194.     t_asctime    db    26 dup (0)
  195.     t_digstr    db    32 dup (0)    ;DBL_DIG*2+2
  196. thread_t ends
  197.  
  198. THDSIZE    equ    (size thread_t)
  199.  
  200. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  201.  
  202. ifdef _MT
  203.  
  204.   ifndef noerrno
  205.     if LCODE
  206.     extrn    __errno_set:far
  207.     else
  208.     extrn    __errno_set:near
  209.     endif
  210.   endif
  211.  
  212. errno_set macro    value
  213.     ifnb <value>
  214.     mov    AX,value
  215.     endif
  216.     call    __errno_set
  217.     endm
  218.  
  219. else
  220.  
  221.  ifndef noerrno
  222.     begdata
  223.     extrn    _errno:word
  224.     enddata
  225.  endif
  226.  
  227. errno_set macro    value
  228.     ifnb <value>
  229.     mov    _errno,value
  230.     else
  231.     mov    _errno,AX
  232.     endif
  233.     endm
  234.  
  235. endif
  236.  
  237. endif
  238.  
  239. _IOREAD        equ    1
  240. _IOWRT        equ    2
  241. _IONBF        equ    4
  242. _IOMYBUF    equ    8
  243. _IOEOF        equ    10h
  244. _IOERR        equ    20h
  245. _IOLBF        equ    40h
  246. _IORW        equ    80h
  247. _IOTRAN        equ    100h
  248. _IOAPP        equ    200h
  249.     ifdef    BIGBUF
  250. _IOBIGBUF    equ    400h
  251.     endif
  252.  
  253.  
  254. ;Values for errno
  255. ENOENT        equ    2
  256. EACCES        equ    13
  257. ENOMEM        equ    8
  258. EINVAL        equ    22
  259. EDEADLOCK    equ    36
  260. EEXIST        equ    80
  261. ERANGE        equ    1003
  262.  
  263.  
  264.