This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/dm/include/STDIO.ASM

369 lines
6 KiB
NASM

;_ stdio.asm
; Copyright (C) 1985-1990 by Walter Bright */
; All rights reserved. */
; $Revision: 1.1.1.1 $
; Standard I/O header file */
EOF equ -1
ifdef _WIN32
ifndef __NT__
__NT__ equ 1
endif
endif
ifdef __NT__
_NFILE equ 60
else
ifdef M_UNIX
_NFILE equ 60
else
ifdef M_XENIX
_NFILE equ 60
else
_NFILE equ 40
endif
endif
endif
ifdef M_I386
BUFSIZ equ 4096
ifdef DOS386
_ptr equ 0
_cnt equ _ptr + SIZEPTR
_base equ _cnt + 4
_flag equ _base + SIZEPTR
_file equ _flag + 4
_bufsiz equ _file + 4
else
ifdef __OS2__
_ptr equ 0
_cnt equ 4
_base equ 8
_flag equ 12
_file equ 16
_charbuf equ 20
_bufsiz equ 24
__tmpnum equ 28
else
ifdef __NT__
_ptr equ 0
_cnt equ 4
_base equ 8
_flag equ 12
_file equ 16
_bufsiz equ 20
__tmpnum equ 24
else ; M_UNIX and M_XENIX
_cnt equ 0
_ptr equ _cnt + 4
_base equ _ptr + SIZEPTR
_flag equ _base + SIZEPTR
_file equ _flag + 1
endif
endif
endif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Thread data structure (one is allocated per thread)
;Must match __thread1 in cinit.asm and struct THREAD in mt.h
ifdef __NT__
thread_t struc
t_stackoff dd 0
; t_stackseg dw 0
t_parameter dd 0
t_func dd 0
t_stacktop dd 0
t_errno dd 0
; if SPTR
t_strtok dd 0
; else
; t_strtok df 0
; endif
; ifdef __NT__
t_id dd 0 ;thread id
t_hndl dd 0 ;thread handle
t_envptr dd 0 ;pointer to malloced memory for getenv return
; endif
t_tm dd 9 dup (0) ;struct tm
;Actually t_fenv
t_fe_status dw 0
t_fe_control dw 0
t_fe_round dw 0
t_fe_res1 dw 0
t_fe_res2 dw 0
t_asctime db 26 dup (0)
t_digstr db 32 dup (0) ;DBL_DIG*2+2
t_doserrno dd 0
; see to MT.H, STDIO.ASM(This file), CINIT.ASM.
t_wcstok dd 0 ;wcstok()
t_wenvptr dd 0 ;wgetenv()
t_wasctime dw 26 dup (0) ;wasctime()
t_cppeh_sv dd 114 dup (0) ;global statics for cplusplus exceptions..
thread_t ends
else
thread_t struc
t_stackoff dd 0
; t_stackseg dw 0
t_parameter dd 0
t_func dd 0
t_stacktop dd 0
t_errno dd 0
; if SPTR
t_strtok dd 0
; else
; t_strtok df 0
; endif
; ifdef __NT__
; t_id dd 0 ;thread id
; t_hndl dd 0 ;thread handle
; t_envptr dd 0 ;pointer to malloced memory for getenv return
; endif
t_tm dd 9 dup (0) ;struct tm
;Actually t_fenv
t_fe_status dw 0
t_fe_control dw 0
t_fe_round dw 0
t_fe_res1 dw 0
t_fe_res2 dw 0
t_asctime db 26 dup (0)
t_digstr db 32 dup (0) ;DBL_DIG*2+2
t_doserrno dd 0
ifdef DOS386
t_cppeh_sv dd 110 dup (0)
else
if LCODE
;; Large or Medium
if LPTR
t_cppeh_sv db 350 dup (0) ; globals for CPP exception handling.
else
t_cppeh_sv db 268 dup (0)
endif
else
;; Compact or Small
if LPTR
t_cppeh_sv db 330 dup (0)
else
t_cppeh_sv db 248 dup (0)
endif
endif ;; LCODE
endif ;; DOS386
thread_t ends
endif
THDSIZE equ (size thread_t)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ifdef _MT
ifndef noerrno
if LCODE
extrn __errno_set:far
else
extrn __errno_set:near
endif
endif
errno_set macro value
ifnb <value>
mov EAX,value
endif
call __errno_set
endm
else
ifndef noerrno
begdata
extrn _errno:dword
enddata
endif
errno_set macro value
ifnb <value>
mov _errno,value
else
mov _errno,EAX
endif
endm
endif
else ;M_I386
BUFSIZ equ 1024
IF SPTR
BIGBUF equ 20 * 1024
ENDIF
_ptr equ 0
_cnt equ _ptr + SIZEPTR
_base equ _cnt + 2
_flag equ _base + SIZEPTR
_file equ _flag + 2
_bufsiz equ _file + 2
IFDEF BIGBUF
_seg equ _bufsiz + 2
ENDIF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Thread data structure (one is allocated per thread)
;Must match __thread1 in cinit.asm and struct THREAD in mt.h
thread_t struc
t_stackoff dw 0
t_stackseg dw 0
t_stacktop dw 0
t_errno dw 0
t_strtok dd 0
t_tm dw 9 dup (0) ;struct tm
;Actually fenv_t
t_fe_status dw 0
t_fe_control dw 0
t_fe_round dw 0
t_fe_res1 dw 0
t_fe_res2 dw 0
t_asctime db 26 dup (0)
t_digstr db 32 dup (0) ;DBL_DIG*2+2
t_doserrno dw 0
thread_t ends
THDSIZE equ (size thread_t)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ifdef _MT
ifndef noerrno
if LCODE
extrn __errno_set:far
else
extrn __errno_set:near
endif
endif
errno_set macro value
ifnb <value>
mov AX,value
endif
call __errno_set
endm
else
ifndef noerrno
begdata
extrn _errno:word
enddata
endif
errno_set macro value
ifnb <value>
mov _errno,value
else
mov _errno,AX
endif
endm
endif
endif
_IOREAD equ 1
_IOWRT equ 2
_IONBF equ 4
_IOMYBUF equ 8
_IOEOF equ 10h
_IOERR equ 20h
_IOLBF equ 40h
_IORW equ 80h
_IOTRAN equ 100h
_IOAPP equ 200h
ifdef BIGBUF
_IOBIGBUF equ 400h
endif
;Values for errno
ifdef M_UNIX
ENOENT equ 2
EACCES equ 13
EINVAL equ 22
ENOMEM equ 12
EDEADLOCK equ 56
EEXIST equ 17
ERANGE equ 34
else
ifdef M_XENIX
ENOENT equ 2
EACCES equ 13
EINVAL equ 22
ENOMEM equ 12
EDEADLOCK equ 56
EEXIST equ 17
ERANGE equ 34
else
EZERO equ 0
EPERM equ 1
ENOENT equ 2
ESRCH equ 3
EINTR equ 4
EIO equ 5
ENXIO equ 6
E2BIG equ 7
ENOEXEC equ 8
EBADF equ 9
ECHILD equ 10
EAGAIN equ 11
ENOMEM equ 12
EACCES equ 13
EFAULT equ 14
ENOTBLK equ 15
EBUSY equ 16
EEXIST equ 17
EXDEV equ 18
ENODEV equ 19
ENOTDIR equ 20
EISDIR equ 21
EINVAL equ 22
ENFILE equ 23
EMFILE equ 24
ENOTTY equ 25
ETXTBSY equ 26
EFBIG equ 27
ENOSPC equ 28
ESPIPE equ 29
EROFS equ 30
EMLINK equ 31
EPIPE equ 32
EDOM equ 33
ERANGE equ 34
EUCLEAN equ 25
EDEADLOCK equ 36
EDEADLK equ 36
ENAMETOOLONG equ 38
ENOLCK equ 39
ENOSYS equ 40
ENOTEMPTY equ 41
EILSEQ equ 42
endif
endif