bsedos.fi

来自「开放源码的编译器open watcom 1.6.0版的源代码」· FI 代码 · 共 1,691 行 · 第 1/4 页

FI
1,691
字号
c$noreference

c$ifdef INCL_DOS
c$define INCL_DOSPROCESS
c$define INCL_DOSFILEMGR
c$define INCL_DOSMEMMGR
c$define INCL_DOSSEMAPHORES
c$define INCL_DOSDATETIME
c$define INCL_DOSMODULEMGR
c$define INCL_DOSRESOURCES
c$define INCL_DOSNLS
c$define INCL_DOSEXCEPTIONS
c$define INCL_DOSMISC
c$define INCL_DOSMONITORS
c$define INCL_DOSQUEUES
c$define INCL_DOSSESMGR
c$define INCL_DOSDEVICES
c$define INCL_DOSNMPIPES
c$define INCL_DOSPROFILE
c$define INCL_DOSMVDM
c$endif

c$ifdef INCL_ERRORS
c$define INCL_DOSERRORS
c$endif

c$ifdef INCL_DOSPROCESS

        external DosBeep
        integer*4 DosBeep

        external DosExit

        integer  EXIT_THREAD
        parameter (EXIT_THREAD = 0)
        integer  EXIT_PROCESS
        parameter (EXIT_PROCESS = 1)

c$include bsetib.fi

        external DosCreateThread
        integer*4 DosCreateThread

        external DosResumeThread
        integer*4 DosResumeThread

        external DosSuspendThread
        integer*4 DosSuspendThread

        external DosGetInfoBlocks
        integer*4 DosGetInfoBlocks

        external DosKillThread
        integer*4 DosKillThread

        integer  DCWA_PROCESS
        parameter (DCWA_PROCESS = 0)
        integer  DCWA_PROCESSTREE
        parameter (DCWA_PROCESSTREE = 1)

        integer  DCWW_WAIT
        parameter (DCWW_WAIT = 0)
        integer  DCWW_NOWAIT
        parameter (DCWW_NOWAIT = 1)

        structure /RESULTCODES/
            integer*4 codeTerminate
            integer*4 codeResult
        end structure

        external DosWaitChild
        integer*4 DosWaitChild

        external DosWaitThread
        integer*4 DosWaitThread

        external DosSleep
        integer*4 DosSleep

        external DosDebug
        integer*4 DosDebug

        integer  TC_EXIT
        parameter (TC_EXIT = 0)
        integer  TC_HARDERROR
        parameter (TC_HARDERROR = 1)
        integer  TC_TRAP
        parameter (TC_TRAP = 2)
        integer  TC_KILLPROCESS
        parameter (TC_KILLPROCESS = 3)
        integer  TC_EXCEPTION
        parameter (TC_EXCEPTION = 4)

        external DosEnterCritSec
        integer*4 DosEnterCritSec

        external DosExitCritSec
        integer*4 DosExitCritSec

        external DosExitList
        integer*4 DosExitList

        integer  EXLST_ADD
        parameter (EXLST_ADD = 1)
        integer  EXLST_REMOVE
        parameter (EXLST_REMOVE = 2)
        integer  EXLST_EXIT
        parameter (EXLST_EXIT = 3)

        external DosExecPgm
        integer*4 DosExecPgm

        integer  EXEC_SYNC
        parameter (EXEC_SYNC = 0)
        integer  EXEC_ASYNC
        parameter (EXEC_ASYNC = 1)
        integer  EXEC_ASYNCRESULT
        parameter (EXEC_ASYNCRESULT = 2)
        integer  EXEC_TRACE
        parameter (EXEC_TRACE = 3)
        integer  EXEC_BACKGROUND
        parameter (EXEC_BACKGROUND = 4)
        integer  EXEC_LOAD
        parameter (EXEC_LOAD = 5)
        integer  EXEC_ASYNCRESULTDB
        parameter (EXEC_ASYNCRESULTDB = 6)

        external DosSetPriority
        integer*4 DosSetPriority

        integer  PRTYS_PROCESS
        parameter (PRTYS_PROCESS = 0)
        integer  PRTYS_PROCESSTREE
        parameter (PRTYS_PROCESSTREE = 1)
        integer  PRTYS_THREAD
        parameter (PRTYS_THREAD = 2)

        integer  PRTYC_NOCHANGE
        parameter (PRTYC_NOCHANGE = 0)
        integer  PRTYC_IDLETIME
        parameter (PRTYC_IDLETIME = 1)
        integer  PRTYC_REGULAR
        parameter (PRTYC_REGULAR = 2)
        integer  PRTYC_TIMECRITICAL
        parameter (PRTYC_TIMECRITICAL = 3)
        integer  PRTYC_FOREGROUNDSERVER
        parameter (PRTYC_FOREGROUNDSERVER = 4)

        integer  PRTYD_MINIMUM
        parameter (PRTYD_MINIMUM = -31)
        integer  PRTYD_MAXIMUM
        parameter (PRTYD_MAXIMUM = 31)

        external DosKillProcess
        integer*4 DosKillProcess

        integer  DKP_PROCESSTREE
        parameter (DKP_PROCESSTREE = 0)
        integer  DKP_PROCESS
        parameter (DKP_PROCESS = 1)

c$endif

        integer  CCHMAXPATH
        parameter (CCHMAXPATH = 260)

        integer  CCHMAXPATHCOMP
        parameter (CCHMAXPATHCOMP = 256)

c$ifdef INCL_DOSFILEMGR

        integer  FILE_BEGIN
        parameter (FILE_BEGIN = '00000000'x)
        integer  FILE_CURRENT
        parameter (FILE_CURRENT = '00000001'x)
        integer  FILE_END
        parameter (FILE_END = '00000002'x)

        integer  HDIR_SYSTEM
        parameter (HDIR_SYSTEM = 1)
        integer  HDIR_CREATE
        parameter (HDIR_CREATE = -1)

        integer  DCPY_EXISTING
        parameter (DCPY_EXISTING = '00000001'x)
        integer  DCPY_APPEND
        parameter (DCPY_APPEND = '00000002'x)
        integer  DCPY_FAILEAS
        parameter (DCPY_FAILEAS = '00000004'x)

        integer  FILE_NORMAL
        parameter (FILE_NORMAL = '00000000'x)
        integer  FILE_READONLY
        parameter (FILE_READONLY = '00000001'x)
        integer  FILE_HIDDEN
        parameter (FILE_HIDDEN = '00000002'x)
        integer  FILE_SYSTEM
        parameter (FILE_SYSTEM = '00000004'x)
        integer  FILE_DIRECTORY
        parameter (FILE_DIRECTORY = '00000010'x)
        integer  FILE_ARCHIVED
        parameter (FILE_ARCHIVED = '00000020'x)

        integer  FILE_IGNORE
        parameter (FILE_IGNORE = '00010000'x)

        integer MUST_HAVE_READONLY
        parameter (MUST_HAVE_READONLY =
     +             (FILE_READONLY * 2**8) .or. FILE_READONLY)
        integer MUST_HAVE_HIDDEN
        parameter (MUST_HAVE_HIDDEN =
     +             (FILE_HIDDEN * 2**8) .or. FILE_HIDDEN)
        integer MUST_HAVE_SYSTEM
        parameter (MUST_HAVE_SYSTEM =
     +             (FILE_SYSTEM * 2**8) .or. FILE_SYSTEM)
        integer MUST_HAVE_DIRECTORY
        parameter (MUST_HAVE_DIRECTORY =
     +             (FILE_DIRECTORY * 2**8) .or. FILE_DIRECTORY)
        integer MUST_HAVE_ARCHIVED
        parameter (MUST_HAVE_ARCHIVED =
     +             (FILE_ARCHIVED * 2**8) .or. FILE_ARCHIVED)

        integer  FILE_EXISTED
        parameter (FILE_EXISTED = '00000001'x)
        integer  FILE_CREATED
        parameter (FILE_CREATED = '00000002'x)
        integer  FILE_TRUNCATED
        parameter (FILE_TRUNCATED = '00000003'x)

        integer  FILE_OPEN
        parameter (FILE_OPEN = '00000001'x)
        integer  FILE_TRUNCATE
        parameter (FILE_TRUNCATE = '00000002'x)
        integer  FILE_CREATE
        parameter (FILE_CREATE = '00000010'x)

        integer  OPEN_ACTION_FAIL_IF_EXISTS
        parameter (OPEN_ACTION_FAIL_IF_EXISTS = '00000000'x)
        integer  OPEN_ACTION_OPEN_IF_EXISTS
        parameter (OPEN_ACTION_OPEN_IF_EXISTS = '00000001'x)
        integer  OPEN_ACTION_REPLACE_IF_EXISTS
        parameter (OPEN_ACTION_REPLACE_IF_EXISTS = '00000002'x)

        integer  OPEN_ACTION_FAIL_IF_NEW
        parameter (OPEN_ACTION_FAIL_IF_NEW = '00000000'x)
        integer  OPEN_ACTION_CREATE_IF_NEW
        parameter (OPEN_ACTION_CREATE_IF_NEW = '00000010'x)

        integer  OPEN_ACCESS_READONLY
        parameter (OPEN_ACCESS_READONLY = '00000000'x)
        integer  OPEN_ACCESS_WRITEONLY
        parameter (OPEN_ACCESS_WRITEONLY = '00000001'x)
        integer  OPEN_ACCESS_READWRITE
        parameter (OPEN_ACCESS_READWRITE = '00000002'x)
        integer  OPEN_SHARE_DENYREADWRITE
        parameter (OPEN_SHARE_DENYREADWRITE = '00000010'x)
        integer  OPEN_SHARE_DENYWRITE
        parameter (OPEN_SHARE_DENYWRITE = '00000020'x)
        integer  OPEN_SHARE_DENYREAD
        parameter (OPEN_SHARE_DENYREAD = '00000030'x)
        integer  OPEN_SHARE_DENYNONE
        parameter (OPEN_SHARE_DENYNONE = '00000040'x)
        integer  OPEN_FLAGS_NOINHERIT
        parameter (OPEN_FLAGS_NOINHERIT = '00000080'x)
        integer  OPEN_FLAGS_NO_LOCALITY
        parameter (OPEN_FLAGS_NO_LOCALITY = '00000000'x)
        integer  OPEN_FLAGS_SEQUENTIAL
        parameter (OPEN_FLAGS_SEQUENTIAL = '00000100'x)
        integer  OPEN_FLAGS_RANDOM
        parameter (OPEN_FLAGS_RANDOM = '00000200'x)
        integer  OPEN_FLAGS_RANDOMSEQUENTIAL
        parameter (OPEN_FLAGS_RANDOMSEQUENTIAL = '00000300'x)
        integer  OPEN_FLAGS_NO_CACHE
        parameter (OPEN_FLAGS_NO_CACHE = '00001000'x)
        integer  OPEN_FLAGS_FAIL_ON_ERROR
        parameter (OPEN_FLAGS_FAIL_ON_ERROR = '00002000'x)
        integer  OPEN_FLAGS_WRITE_THROUGH
        parameter (OPEN_FLAGS_WRITE_THROUGH = '00004000'x)
        integer  OPEN_FLAGS_DASD
        parameter (OPEN_FLAGS_DASD = '00008000'x)
        integer  OPEN_FLAGS_NONSPOOLED
        parameter (OPEN_FLAGS_NONSPOOLED = '00040000'x)

        integer  SEARCH_PATH
        parameter (SEARCH_PATH = '00000000'x)
        integer  SEARCH_CUR_DIRECTORY
        parameter (SEARCH_CUR_DIRECTORY = '00000001'x)
        integer  SEARCH_ENVIRONMENT
        parameter (SEARCH_ENVIRONMENT = '00000002'x)
        integer  SEARCH_IGNORENETERRS
        parameter (SEARCH_IGNORENETERRS = '00000004'x)

        integer  FIL_STANDARD
        parameter (FIL_STANDARD = 1)
        integer  FIL_QUERYEASIZE
        parameter (FIL_QUERYEASIZE = 2)
        integer  FIL_QUERYEASFROMLIST
        parameter (FIL_QUERYEASFROMLIST = 3)

        integer FIL_QUERYFULLNAME
        parameter (FIL_QUERYFULLNAME = 5)

        integer  FS_ATTACH
        parameter (FS_ATTACH = 0)
        integer  FS_DETACH
        parameter (FS_DETACH = 1)
        integer  FS_SPOOLATTACH
        parameter (FS_SPOOLATTACH = 2)
        integer  FS_SPOOLDETACH
        parameter (FS_SPOOLDETACH = 3)

        integer  FSCTL_HANDLE
        parameter (FSCTL_HANDLE = 1)
        integer  FSCTL_PATHNAME
        parameter (FSCTL_PATHNAME = 2)
        integer  FSCTL_FSDNAME
        parameter (FSCTL_FSDNAME = 3)

        integer  FSCTL_ERROR_INFO
        parameter (FSCTL_ERROR_INFO = 1)
        integer  FSCTL_MAX_EASIZE
        parameter (FSCTL_MAX_EASIZE = 2)

        structure /EASIZEBUF/
            integer*2 cbMaxEASize
            integer*4 cbMaxEAListSize
        end structure

        integer  FSAIL_QUERYNAME
        parameter (FSAIL_QUERYNAME = 1)
        integer  FSAIL_DEVNUMBER
        parameter (FSAIL_DEVNUMBER = 2)
        integer  FSAIL_DRVNUMBER
        parameter (FSAIL_DRVNUMBER = 3)

        integer  FSAT_CHARDEV
        parameter (FSAT_CHARDEV = 1)
        integer  FSAT_PSEUDODEV
        parameter (FSAT_PSEUDODEV = 2)
        integer  FSAT_LOCALDRV
        parameter (FSAT_LOCALDRV = 3)
        integer  FSAT_REMOTEDRV
        parameter (FSAT_REMOTEDRV = 4)

        structure /FSQBUFFER/
            integer*2 iType
            integer*2 cbName
            integer*1 szName(1)
            integer*2 cbFSDName
            integer*1 szFSDName(1)
            integer*2 cbFSAData
            integer*1 rgFSAData(1)
        end structure

        structure /FSQBUFFER2/
            integer*2 iType
            integer*2 cbName
            integer*2 cbFSDName
            integer*2 cbFSAData
            integer*1 szName(1)
            integer*1 szFSDName(1)
            integer*1 rgFSAData(1)
        end structure

        structure /SPOOLATTACH/
            integer*2 hNmPipe
            integer*4 ulKey
        end structure

        integer  FSIL_ALLOC
        parameter (FSIL_ALLOC = 1)
        integer  FSIL_VOLSER
        parameter (FSIL_VOLSER = 2)

        integer  FHT_DISKFILE
        parameter (FHT_DISKFILE = '00000000'x)
        integer  FHT_CHRDEV
        parameter (FHT_CHRDEV = '00000001'x)
        integer  FHT_PIPE
        parameter (FHT_PIPE = '00000002'x)

        integer  FHB_DSKREMOTE
        parameter (FHB_DSKREMOTE = '00008000'x)
        integer  FHB_CHRDEVREMOTE
        parameter (FHB_CHRDEVREMOTE = '00008000'x)
        integer  FHB_PIPEREMOTE
        parameter (FHB_PIPEREMOTE = '00008000'x)

! To get the seconds:   2 * IAND( ftime, '001f'x )
! To get the minutes:   ISHFT( IAND( ftime, '07e0'x ), -5 )
! To get the hours:     ISHFT( IAND( ftime, 'f800'x ), -11 )

        structure /FTIME/
            integer*2 ftime
        end structure

! To get the day:       IAND( fdate, '001f'x )
! To get the month:     ISHFT( IAND( ftime, '01e0'x ), -5 )
! To get the year:      ISHFT( IAND( ftime, 'fe00'x ), -9 )

        structure /FDATE/
            integer*2 fdate
        end structure

        structure /VOLUMELABEL/
            integer*1 cch
            integer*1 szVolLabel(12)
        end structure

        structure /FSINFO/
            record /FDATE/ fdateCreation
            record /FTIME/ ftimeCreation
            record /VOLUMELABEL/ vol
        end structure

        integer  HANDTYPE_FILE
        parameter (HANDTYPE_FILE = '00000000'x)
        integer  HANDTYPE_DEVICE
        parameter (HANDTYPE_DEVICE = '00000001'x)
        integer  HANDTYPE_PIPE
        parameter (HANDTYPE_PIPE = '00000002'x)
        integer  HANDTYPE_NETWORK
        parameter (HANDTYPE_NETWORK = '00008000'x)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?