Category : C++ Source Code
Archive   : VCCRT2.ZIP
Filename : FILE.ASM
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
Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!
This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.
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/