Category : C++ Source Code
Archive   : VCCRT2.ZIP
Filename : FILE.ASM

 
Output of file : FILE.ASM contained in archive : VCCRT2.ZIP
page ,132
title file - stream i/o tables
;***
;file.asm - stream i/o tables
;
; Copyright (c) 1990-1992, Microsoft Corporation. All rights reserved.
;
;Purpose:
; Stream I/O data tables.
;
; The _iob[] and _iob2[] tables are each in their own segments
; so that additions can appended on easily and predictably (e.g.,
; windows). Also, note that _lastiob is also defined in its own
; segment so it always points to the last _iob[] entry regardless
; of what is added to the table.
;
;*******************************************************************************

?DF = 1 ; define segments

include version.inc
.xlist
include cmacros.inc
include defsegs.inc
include stdio.inc
.list

;
; Segment declarations

CrtDefSegs
CrtDefSegs

dataOFFSET equ offset DGROUP:

;
; Number of files
;

_NFILE_ equ 20


ifdef _QWIN
;
; Pull in the windows iob/iob2 entries
; (may be overridden by noqwin.obj).
;
extrn __wiobused:word

endif

;
; _iob[] table
;

sBegin iobseg

labelNP

; ptr, cnt, base, flag, file

ifdef _WINDOWS

ifdef _QWIN
ifndef _BAT16
_iobuf <0, 0, 0, _IOREAD, _NFILE_> ; stdin
_iobuf <0, 0, 0, _IOWRT, _NFILE_> ; stdout
_iobuf <0, 0, 0, _IOWRT, _NFILE_> ; stderr

_iobuf (_NFILE_-4) dup ()

else ;_BAT16
_iobuf <0, 0, 0, _IOREAD, 0> ; stdin
_iobuf <0, 0, 0, _IOWRT, 1> ; stdout
_iobuf <0, 0, 0, _IOWRT, 2> ; stderr

_iobuf (_NFILE_-4) dup ()
endif ;!_BAT16
else

_iobuf (_NFILE_-1) dup () ; No stdin/out/err

endif ;_QWIN

else ;!_WINDOWS

_iobuf <0, 0, 0, _IOREAD, 0> ; stdin
_iobuf <0, 0, 0, _IOWRT, 1> ; stdout
_iobuf <0, 0, 0, _IOWRT, 2> ; stderr


_iobuf <_aux._charbuf, 0, _aux._charbuf, _IORW OR _IONBF, 3> ; stdaux
_iobuf <0, 0, 0, _IOWRT, 4> ; stdprn

_iobuf (_NFILE_-6) dup ()


endif ;_WINDOWS

sEnd


;
; Last entry in _iob[] table
;

sBegin iobeseg

__last _iobuf

sEnd

;
; _iob2[] table
;

sBegin iob2seg

labelNP

; flag2, charbuf, bufsiz, tmpnum, padding

ifdef _WINDOWS

ifdef _QWIN

_iobuf2 <0, 0, 0, 0> ; stdin
_iobuf2 <0, 0, 0, 0> ; stdout
_iobuf2 <0, 0, 0, 0> ; stderr

_iobuf2 (_NFILE_-4) dup ()

else

_iobuf2 (_NFILE_-1) dup () ; No stdin/out/err

endif ;_QWIN

else ;!_WINDOWS

_iobuf2 <0, 0, 0, 0> ; stdin
_iobuf2 <0, 0, 0, 0> ; stdout
_iobuf2 <0, 0, 0, 0> ; stderr


_aux _iobuf2 <0, 0, 1, 0> ; stdaux
_iobuf2 <0, 0, 0, 0> ; stdprn

_iobuf2 (_NFILE_-6) dup ()


endif ;_WINDOWS

sEnd

;
; Last entry in _iob2[] table
;

sBegin iob2eseg

_iobuf2

sEnd

;
; Make _lastiob entry available
;

sBegin data
assumes ds,data

labelNP
dw dataOFFSET __last

sEnd

end


  3 Responses to “Category : C++ Source Code
Archive   : VCCRT2.ZIP
Filename : FILE.ASM

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/