;*****************************************************************************
;*
;*                            Open Watcom Project
;*
;*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
;*
;*  ========================================================================
;*
;*    This file contains Original Code and/or Modifications of Original
;*    Code as defined in and that are subject to the Sybase Open Watcom
;*    Public License version 1.0 (the 'License'). You may not use this file
;*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
;*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
;*    provided with the Original Code and Modifications, and is also
;*    available at www.sybase.com/developer/opensource.
;*
;*    The Original Code and all software distributed under the License are
;*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
;*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
;*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
;*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
;*    NON-INFRINGEMENT. Please see the License for the specific language
;*    governing rights and limitations under the License.
;*
;*  ========================================================================
;*
;* Description:  C runtime read/write data (386 version).
;*
;*****************************************************************************


        name    crwdata

.387
.386p

        assume  nothing

DGROUP group _DATA

_TEXT segment byte public 'CODE'
        assume cs:_TEXT
__null_FPE_rtn proc near
        ret
__null_FPE_rtn endp
_TEXT ends

_DATA   segment dword public 'DATA'

        assume  DS:DGROUP
        
        extrn ___cmdline : near
        extrn ___pgmname : near

_LpCmdLine   dd offset ___cmdline    ; pointer to raw command line
_LpPgmName   dd offset ___pgmname    ; pointer to program name (for argv[0])


ifndef __NETWARE__
_dynend      dd 0               ; top of dynamic data area
_curbrk      dd 0               ; top of usable memory
endif

_STACKLOW    dd 0               ; lowest address in stack
_STACKTOP    dd 0               ; highest address in stack
__EFG_printf dd 0
__EFG_scanf  dd 0
__ASTACKSIZ  dd 0               ; alternate stack size
__ASTACKPTR  dd 0               ; alternate stack pointer

ifndef __NETWARE__
_cbyte     dd 0                 ; used by getch, getche
_cbyte2    dd 0                 ; used by getch, getche
_child     dd 0                 ; non-zero => a spawned process is running
endif

__no87     dw 0                 ; non-zero => "NO87" environment var present
ifndef __NETWARE__
ifdef __DOS__
_Extender         db 0          ; see clib\h\extender.inc for values
_ExtenderSubtype  db 0          ; non-zero -> variant of extender
__X32VM    db 0                 ; non-zero => X-32VM DOS Extender
endif
_Envptr    dd 0                 ; offset part of environment pointer
_Envseg    dw 0                 ; segment containing environment strings
ifndef __QNX__
ifndef __LINUX__
_osmajor   db 0                 ; major DOS version number
_osminor   db 0                 ; minor DOS version number
ifdef __NT__
_osbuild   dw 0                 ; operating system build number
_osver     dd 0                 ; operating system build number
_winmajor  dd 0                 ; operating system major version number
_winminor  dd 0                 ; operating system minor version number
_winver    dd 0                 ; operating system version number
endif
endif
endif
endif
__FPE_handler dd __null_FPE_rtn ; FPE handler


ifndef __QNX__
ifndef __LINUX__
ifndef __NETWARE__
        public  "C",_osmajor
        public  "C",_osminor
ifdef __NT__
        public  "C",_osbuild
        public  "C",_osver
        public  "C",_winmajor
        public  "C",_winminor
        public  "C",_winver
        public  "C",__EFG_printf
        public  "C",__EFG_scanf
endif
endif
ifdef __DOS__
        public  "C",_psp
        public  "C",_Extender
        public  "C",_ExtenderSubtype
        public  __X32VM
        public  __x386_stacklow
endif
ifndef _NETWARE_LIBC
        public  "C",_LpCmdLine
        public  "C",_LpPgmName
endif
ifdef __NT__
        public  "C",_LpCmdLine
        public  "C",_LpPgmName
endif
ifdef __OS2__
        public  "C",_LpDllName
        public  "C",_LpwCmdLine
        public  "C",_LpwPgmName
        public  "C",_LpwDllName
endif
endif
endif
ifndef __NETWARE__
        public  "C",_dynend
        public  "C",_curbrk
endif
        public  "C",_STACKLOW
        public  "C",_STACKTOP
        public  __ASTACKSIZ
        public  __ASTACKPTR
ifndef __NETWARE__
        public  "C",_cbyte
        public  "C",_cbyte2
        public  "C",_child
        public  "C",_Envptr
        public  "C",_Envseg
endif
        public  __no87
        public  "C",__FPE_handler

_DATA   ends

        end