#ifndef DOS_DOSEXTENS_H
#define DOS_DOSEXTENS_H

/*******************************************************************
 pOS / Amiga adapt
*******************************************************************/

#ifndef EXEC_TASKS_H
#include <exec/tasks.h>
#endif

#ifndef __INC_POS_PDOS_DOSBASE_H
#include <pDos/DosBase.h>
#endif
#ifndef __INC_POS_PDOS_DOSDEV_H
#include <pDos/DosDev.h>
#endif
#ifndef __INC_POS_PDOS_FILES_H
#include <pDos/Files.h>
#endif
#ifndef __INC_POS_PDOS_LOCK_H
#include <pDos/Lock.h>
#endif
#ifndef __INC_POS_PDOS_PROCESS_H
#include <pDos/Process.h>
#endif
#ifndef __INC_POS_PDOS_SEGMENT_H
#include <pDos/Segment.h>
#endif
#ifndef __INC_POS_PDOS_FIB_H
#include <pDos/FIB.h>
#endif

#ifndef EXEC_PORTS_H
#include <exec/ports.h>
#endif
#ifndef EXEC_LIBRARIES_H
#include <exec/libraries.h>
#endif
#ifndef EXEC_SEMAPHORES_H
#include <exec/semaphores.h>
#endif
#ifndef DEVICES_TIMER_H
#include <devices/timer.h>
#endif
#ifndef DOS_DOS_H
#include <dos/dos.h>
#endif


#ifndef __BCPL__
#define __BCPL__
 typedef long  BPTR;
 typedef long  BSTR;
#endif


struct Process
{
  struct Task         pr_Task;
  struct MsgPort      pr_MsgPort;

#ifdef pOS_AMIGAEXEC
  UBYTE pr_Pad[80];
#endif

  ULONG       pr_SegList;
  UWORD       pr_TaskNum;
  SWORD       pr_Error2;
  APTR        pr_CurrentDir;
  APTR        pr_CIS;
  APTR        pr_COS;
  APTR        pr_CES;
  APTR        pr_HomeShell;
  APTR        pr_WindowPtr;
  ULONG       pr_Flags;
  VOID      (*pr_Exit_func)(_R_LB struct pOS_DosBase*,_R_A0 struct pOS_Process*);
  ULONG       pr_ExitData;
};





#define PRF_FREESEGLIST PROCFLG_FreeSegList
#define PRF_FREECURRDIR PROCFLG_FreeCurrDir
#define PRF_CLOSEINPUT  PROCFLG_FreeCIS
#define PRF_CLOSEOUTPUT PROCFLG_FreeCOS


#define FileHandle pOS_FileHandle

#define ACTION_NIL              DOSCMD_INVALID
#define ACTION_STARTUP          _Px2_IGNORE
#define ACTION_SET_MAP          _Px2_IGNORE
#define ACTION_DIE              _Px2_IGNORE
#define ACTION_EVENT            _Px2_IGNORE
#define ACTION_CURRENT_VOLUME   _Px2_IGNORE
#define ACTION_LOCATE_OBJECT    DOSCMD_LockObject
#define ACTION_RENAME_DISK      DOSCMD_Relabel
#define ACTION_WRITE            DOSCMD_WriteFH
#define ACTION_READ             DOSCMD_ReadFH
#define ACTION_FREE_LOCK        DOSCMD_UnlockObject
#define ACTION_DELETE_OBJECT    DOSCMD_DeleteObject
#define ACTION_RENAME_OBJECT    DOSCMD_RenameObject
#define ACTION_MORE_CACHE       _Px2_IGNORE
#define ACTION_COPY_DIR         DOSCMD_DupObjectLock
#define ACTION_WAIT_CHAR        DOSCMD_WaitForChar
#define ACTION_SET_PROTECT      DOSCMD_SetProtection
#define ACTION_CREATE_DIR       DOSCMD_CreateDir
#define ACTION_EXAMINE_OBJECT   DOSCMD_ExamineObject
#define ACTION_EXAMINE_NEXT     DOSCMD_ExNextObject
#define ACTION_DISK_INFO        _Px2_IGNORE
#define ACTION_INFO             DOSCMD_InfoData
#define ACTION_FLUSH            _Px2_IGNORE
#define ACTION_SET_COMMENT      DOSCMD_SetComment
#define ACTION_PARENT           DOSCMD_ParentObject
#define ACTION_TIMER            _Px2_IGNORE
#define ACTION_INHIBIT          DOSCMD_Inhibit
#define ACTION_DISK_TYPE        _Px2_IGNORE
#define ACTION_DISK_CHANGE      _Px2_IGNORE
#define ACTION_SET_DATE         DOSCMD_SetDate
#define ACTION_SCREEN_MODE      DOSCMD_SetScreenMode
#define ACTION_READ_RETURN      _Px2_IGNORE
#define ACTION_WRITE_RETURN     _Px2_IGNORE
#define ACTION_SEEK             DOSCMD_SeekFH
#define ACTION_FINDUPDATE       DOSCMD_OpenFH
#define ACTION_FINDINPUT        DOSCMD_OpenFH
#define ACTION_FINDOUTPUT       DOSCMD_OpenFH
#define ACTION_END              DOSCMD_CloseFH
#define ACTION_SET_FILE_SIZE    DOSCMD_SetSize
#define ACTION_WRITE_PROTECT    _Px2_IGNORE
#define ACTION_SAME_LOCK        DOSCMD_SameObject
#define ACTION_CHANGE_SIGNAL    _Px2_IGNORE
#define ACTION_FORMAT           _Px2_IGNORE
#define ACTION_MAKE_LINK        _Px2_IGNORE
#define ACTION_READ_LINK        _Px2_IGNORE
#define ACTION_FH_FROM_LOCK     DOSCMD_OpenFromLock
#define ACTION_IS_FILESYSTEM    DOSCMD_IsFileSystem
#define ACTION_CHANGE_MODE      DOSCMD_ChangeAccess
#define ACTION_COPY_DIR_FH      _Px2_IGNORE
#define ACTION_PARENT_FH        _Px2_IGNORE
#define ACTION_EXAMINE_ALL      _Px2_IGNORE
#define ACTION_EXAMINE_FH       DOSCMD_ExamineObject
#define ACTION_LOCK_RECORD      _Px2_IGNORE
#define ACTION_FREE_RECORD      _Px2_IGNORE
#define ACTION_ADD_NOTIFY       DOSCMD_AddNotify
#define ACTION_REMOVE_NOTIFY    DOSCMD_RemNotify
#define ACTION_EXAMINE_ALL_END  _Px2_IGNORE
#define ACTION_SET_OWNER        _Px2_IGNORE
#define ACTION_SERIALIZE_DISK   _Px2_IGNORE

#define DosLibrary pOS_DosBase
#define Segment pOS_Segment
#define DosList pOS_DosDevice

#define DLT_DEVICE      DDTYP_Handler
#define DLT_DIRECTORY   DDTYP_Assign
#define DLT_VOLUME      DDTYP_Volume
#define DLT_LATE        DDTYP_LateAssign
#define DLT_NONBINDING  DDTYP_NonBindingAssign

#define FileLock pOS_FileLock

#define ST_USERDIR      FINFENTYP_Dir
#define ST_FILE         FINFENTYP_File

#endif  /* DOS_DOSEXTENS_H */
