home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / C++-7 / DISK7 / SOURCE / STARTUP / FILE.AS$ / FILE
Encoding:
Text File  |  1991-11-06  |  2.6 KB  |  172 lines

  1.     page    ,132
  2.     title     file - stream i/o tables
  3. ;***
  4. ;file.asm - stream i/o tables
  5. ;
  6. ;    Copyright (c) 1990-1992, Microsoft Corporation.  All rights reserved.
  7. ;
  8. ;Purpose:
  9. ;    Stream I/O data tables.
  10. ;
  11. ;    The _iob[] and _iob2[] tables are each in their own segments
  12. ;    so that additions can appended on easily and predictably (e.g.,
  13. ;    windows).  Also, note that _lastiob is also defined in its own
  14. ;    segment so it always points to the last _iob[] entry regardless
  15. ;    of what is added to the table.
  16. ;
  17. ;*******************************************************************************
  18.  
  19. ?DF    =    1        ; define segments
  20.  
  21. include version.inc
  22. .xlist
  23. include cmacros.inc
  24. include defsegs.inc
  25. include stdio.inc
  26. .list
  27.  
  28. ;
  29. ; Segment declarations
  30.  
  31. CrtDefSegs  <code,data>
  32. CrtDefSegs  <iobsegs>
  33.  
  34. dataOFFSET equ    offset DGROUP:
  35.  
  36. ;
  37. ; Number of files
  38. ;
  39.  
  40.     _NFILE_ equ 20
  41.  
  42.  
  43. ifdef _QWIN
  44. ;
  45. ; Pull in the windows iob/iob2 entries
  46. ; (may be overridden by noqwin.obj).
  47. ;
  48.     extrn __wiobused:word
  49.  
  50. endif
  51.  
  52. ;
  53. ; _iob[] table
  54. ;
  55.  
  56. sBegin    iobseg
  57.  
  58. labelNP <PUBLIC,_iob>
  59.  
  60.     ;    ptr,    cnt,    base,    flag,    file
  61.  
  62. ifdef    _WINDOWS
  63.  
  64. ifdef    _QWIN
  65.  
  66.     _iobuf    <0, 0, 0, _IOREAD, _NFILE_>    ; stdin
  67.     _iobuf    <0, 0, 0, _IOWRT,  _NFILE_>    ; stdout
  68.     _iobuf    <0, 0, 0, _IOWRT,  _NFILE_>    ; stderr
  69.  
  70.     _iobuf    (_NFILE_-4) dup (<?>)
  71.  
  72. else
  73.  
  74.     _iobuf    (_NFILE_-1) dup (<?>)        ; No stdin/out/err
  75.  
  76. endif    ;_QWIN
  77.  
  78. else    ;!_WINDOWS
  79.  
  80.     _iobuf    <0, 0, 0, _IOREAD, 0>        ; stdin
  81.     _iobuf    <0, 0, 0, _IOWRT,  1>        ; stdout
  82.     _iobuf    <0, 0, 0, _IOWRT,  2>        ; stderr
  83.  
  84.  
  85.     _iobuf <_aux._charbuf, 0, _aux._charbuf, _IORW OR _IONBF, 3>  ; stdaux
  86.     _iobuf <0, 0, 0, _IOWRT, 4>              ; stdprn
  87.  
  88.     _iobuf    (_NFILE_-6) dup (<?>)
  89.  
  90.  
  91. endif    ;_WINDOWS
  92.  
  93. sEnd
  94.  
  95.  
  96. ;
  97. ; Last entry in _iob[] table
  98. ;
  99.  
  100. sBegin    iobeseg
  101.  
  102. __last    _iobuf    <?>
  103.  
  104. sEnd
  105.  
  106. ;
  107. ; _iob2[] table
  108. ;
  109.  
  110. sBegin    iob2seg
  111.  
  112. labelNP <PUBLIC,_iob2>
  113.  
  114.     ;    flag2, charbuf, bufsiz, tmpnum, padding
  115.  
  116. ifdef    _WINDOWS
  117.  
  118. ifdef    _QWIN
  119.  
  120.     _iobuf2 <0, 0, 0, 0>            ; stdin
  121.     _iobuf2 <0, 0, 0, 0>            ; stdout
  122.     _iobuf2 <0, 0, 0, 0>            ; stderr
  123.  
  124.     _iobuf2 (_NFILE_-4) dup (<?>)
  125.  
  126. else
  127.  
  128.     _iobuf2 (_NFILE_-1) dup (<?>)        ; No stdin/out/err
  129.  
  130. endif    ;_QWIN
  131.  
  132. else    ;!_WINDOWS
  133.  
  134.     _iobuf2 <0, 0, 0, 0>            ; stdin
  135.     _iobuf2 <0, 0, 0, 0>            ; stdout
  136.     _iobuf2 <0, 0, 0, 0>            ; stderr
  137.  
  138.  
  139. _aux    _iobuf2 <0, 0, 1, 0>            ; stdaux
  140.     _iobuf2 <0, 0, 0, 0>            ; stdprn
  141.  
  142.     _iobuf2 (_NFILE_-6) dup (<?>)
  143.  
  144.  
  145. endif    ;_WINDOWS
  146.  
  147. sEnd
  148.  
  149. ;
  150. ; Last entry in _iob2[] table
  151. ;
  152.  
  153. sBegin    iob2eseg
  154.  
  155.     _iobuf2  <?>
  156.  
  157. sEnd
  158.  
  159. ;
  160. ; Make _lastiob entry available
  161. ;
  162.  
  163. sBegin data
  164. assumes ds,data
  165.  
  166. labelNP <PUBLIC,_lastiob>
  167.     dw    dataOFFSET __last
  168.  
  169. sEnd
  170.  
  171.     end
  172.