{ This file is part of the Free Pascal run time library. dos definitions (V50) for MorphOS/PowerPC Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved. Free Pascal conversion Copyright (c) 2004 Karoly Balogh for Genesi S.a.r.l. AROS conversion Copyright (c) 2011 Marcus Sackrow See the file COPYING.FPC, included in this distribution, for details about the copyright. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} { * dos global definitions ********************************************************************* * } const // Checked OK 04.08.2011 ALB DOSNAME = 'dos.library'; const // Checked OK 04.08.2011 ALB DOSTRUE = -1; DOSFALSE = 0; const // Checked OK 04.08.2011 ALB MODE_OLDFILE = 1005; MODE_NEWFILE = 1006; MODE_READWRITE = 1004; const // Checked OK 04.08.2011 ALB OFFSET_BEGINNING = -1; OFFSET_CURRENT = 0; OFFSET_END = 1; const // Checked OK 04.08.2011 ALB BITSPERBYTE = 8; BYTESPERLONG = 4; BITSPERLONG = 32; _MAXINT = $7FFFFFFF; _MININT = $80000000; const // Checked OK 04.08.2011 ALB SHARED_LOCK = -2; ACCESS_READ = SHARED_LOCK; EXCLUSIVE_LOCK = -1; ACCESS_WRITE = EXCLUSIVE_LOCK; type // Checked OK 04.08.2011 ALB PDateStamp = ^TDateStamp; TDateStamp = record ds_Days : LongInt; ds_Minute: LongInt; ds_Tick : LongInt; end; const // Checked OK 04.08.2011 ALB TICKS_PER_SECOND = 50; const // Checked OK 04.08.2011 ALB MAXFILENAMELENGTH = 108; MAXCOMMENTLENGTH = 80; type // Checked OK 04.08.2011 ALB PFileInfoBlock = ^TFileInfoBlock; TFileInfoBlock = record fib_DiskKey : PtrUInt; fib_DirEntryType: LongInt; fib_FileName : array[0..MAXFILENAMELENGTH - 1] of AnsiChar; fib_Protection : LongInt; fib_EntryType : LongInt; fib_Size : LongInt; fib_NumBlocks : LongInt; fib_Date : TDateStamp; fib_Comment : Array[0..MAXCOMMENTLENGTH - 1] Of AnsiChar; fib_OwnerUID : Word; fib_OwnerGID : Word; fib_Reserved : array[0..31] of AnsiChar; end; const // Checked OK 04.08.2011 ALB FIBB_OTR_READ = 15; FIBB_OTR_WRITE = 14; FIBB_OTR_EXECUTE = 13; FIBB_OTR_DELETE = 12; FIBB_GRP_READ = 11; FIBB_GRP_WRITE = 10; FIBB_GRP_EXECUTE = 9; FIBB_GRP_DELETE = 8; FIBB_SCRIPT = 6; // File is a script (DOS or ARexx). FIBB_PURE = 5; // Make program resident on execution. FIBB_ARCHIVE = 4; // File was archived (not used by OS). FIBB_READ = 3; // File is readable. FIBB_WRITE = 2; // File is writable. FIBB_EXECUTE = 1; // File is executable (no scripts!). FIBB_DELETE = 0; // File is deleteable. const // Checked OK 04.08.2011 ALB FIBF_OTR_READ = (1 shl FIBB_OTR_READ); FIBF_OTR_WRITE = (1 shl FIBB_OTR_WRITE); FIBF_OTR_EXECUTE = (1 shl FIBB_OTR_EXECUTE); FIBF_OTR_DELETE = (1 shl FIBB_OTR_DELETE); FIBF_GRP_READ = (1 shl FIBB_GRP_READ); FIBF_GRP_WRITE = (1 shl FIBB_GRP_WRITE); FIBF_GRP_EXECUTE = (1 shl FIBB_GRP_EXECUTE); FIBF_GRP_DELETE = (1 shl FIBB_GRP_DELETE); FIBF_SCRIPT = (1 shl FIBB_SCRIPT); FIBF_PURE = (1 shl FIBB_PURE); FIBF_ARCHIVE = (1 shl FIBB_ARCHIVE); FIBF_READ = (1 shl FIBB_READ); FIBF_WRITE = (1 shl FIBB_WRITE); FIBF_EXECUTE = (1 shl FIBB_EXECUTE); FIBF_DELETE = (1 shl FIBB_DELETE); const // Checked OK 04.08.2011 ALB FAULT_MAX = 82; type // Checked OK 04.08.2011 ALB BPTR = PtrInt; BSTR = Pointer; type // Checked OK 04.08.2011 ALB PInfoData = ^TInfoData; TInfoData = record id_NumSoftErrors: LongInt; // Number of soft errors on device. id_UnitNumber : LongInt; // Unit number of device. id_DiskState : LongInt; // State the current volume is in (see below). id_NumBlocks : LongInt; // Number of blocks on device. id_NumBlocksUsed: LongInt; // Number of blocks in use. id_BytesPerBlock: LongInt; // Bytes per block. id_DiskType : LongInt; // Type of disk (see below). id_VolumeNode : BPTR; id_InUse : PtrUInt; // Set, if device is in use. end; const // Checked OK 04.08.2011 ALB ID_WRITE_PROTECTED = 80; ID_VALIDATING = 81; ID_VALIDATED = 82; ID_NO_DISK_PRESENT = -1; ID_UNREADABLE_DISK = $42414400; ID_DOS_DISK = $444F5300; ID_FFS_DISK = $444F5301; ID_INTER_DOS_DISK = $444F5302; ID_INTER_FFS_DISK = $444F5303; ID_FASTDIR_DOS_DISK = $444F5304; ID_FASTDIR_FFS_DISK = $444F5305; ID_LNFS_DOS_DISK = $444F5306; ID_LNFS_FFS_DISK = $444F5307; ID_NOT_REALLY_DOS = $4E444F53; ID_KICKSTART_DISK = $4B49434B; ID_MSDOS_DISK = $4d534400; ID_SFS_BE_DISK = $53465330; ID_SFS_LE_DISK = $73667330; const // Checked OK 04.08.2011 ALB ERROR_UNKNOWN = 100; ERROR_NO_FREE_STORE = 103; ERROR_TASK_TABLE_FULL = 105; ERROR_BAD_TEMPLATE = 114; ERROR_BAD_NUMBER = 115; ERROR_REQUIRED_ARG_MISSING = 116; ERROR_KEY_NEEDS_ARG = 117; ERROR_TOO_MANY_ARGS = 118; ERROR_UNMATCHED_QUOTES = 119; ERROR_LINE_TOO_LONG = 120; ERROR_FILE_NOT_OBJECT = 121; ERROR_INVALID_RESIDENT_LIBRARY = 122; ERROR_NO_DEFAULT_DIR = 201; ERROR_OBJECT_IN_USE = 202; ERROR_OBJECT_EXISTS = 203; ERROR_DIR_NOT_FOUND = 204; ERROR_OBJECT_NOT_FOUND = 205; ERROR_BAD_STREAM_NAME = 206; ERROR_OBJECT_TOO_LARGE = 207; ERROR_ACTION_NOT_KNOWN = 209; ERROR_INVALID_COMPONENT_NAME = 210; ERROR_INVALID_LOCK = 211; ERROR_OBJECT_WRONG_TYPE = 212; ERROR_DISK_NOT_VALIDATED = 213; ERROR_DISK_WRITE_PROTECTED = 214; ERROR_RENAME_ACROSS_DEVICES = 215; ERROR_DIRECTORY_NOT_EMPTY = 216; ERROR_TOO_MANY_LEVELS = 217; ERROR_DEVICE_NOT_MOUNTED = 218; ERROR_SEEK_ERROR = 219; ERROR_COMMENT_TOO_BIG = 220; ERROR_DISK_FULL = 221; ERROR_DELETE_PROTECTED = 222; ERROR_WRITE_PROTECTED = 223; ERROR_READ_PROTECTED = 224; ERROR_NOT_A_DOS_DISK = 225; ERROR_NO_DISK = 226; ERROR_NO_MORE_ENTRIES = 232; ERROR_IS_SOFT_LINK = 233; ERROR_OBJECT_LINKED = 234; ERROR_BAD_HUNK = 235; ERROR_NOT_IMPLEMENTED = 236; ERROR_RECORD_NOT_LOCKED = 240; ERROR_LOCK_COLLISION = 241; ERROR_LOCK_TIMEOUT = 242; ERROR_UNLOCK_ERROR = 243; const // Checked OK 04.08.2011 ALB RETURN_OK = 0; RETURN_WARN = 5; RETURN_ERROR = 10; RETURN_FAIL = 20; const // Checked OK 04.08.2011 ALB SIGBREAKB_CTRL_C = 12; SIGBREAKB_CTRL_D = 13; SIGBREAKB_CTRL_E = 14; SIGBREAKB_CTRL_F = 15; SIGBREAKF_CTRL_C = (1 shl SIGBREAKB_CTRL_C); SIGBREAKF_CTRL_D = (1 shl SIGBREAKB_CTRL_D); SIGBREAKF_CTRL_E = (1 shl SIGBREAKB_CTRL_E); SIGBREAKF_CTRL_F = (1 shl SIGBREAKB_CTRL_F); const // Checked OK 04.08.2011 ALB LOCK_DIFFERENT = -1; LOCK_SAME = 0; LOCK_SAME_VOLUME = 1; const // Checked OK 04.08.2011 ALB CHANGE_LOCK = 0; CHANGE_FH = 1; const // Checked OK 04.08.2011 ALB LINK_HARD = 0; LINK_SOFT = 1; const // Checked OK 04.08.2011 ALB ITEM_EQUAL = -2; ITEM_ERROR = -1; ITEM_NOTHING = 0; ITEM_UNQUOTED = 1; ITEM_QUOTED = 2; const // Checked OK 04.08.2011 ALB DOS_FILEHANDLE = 0; DOS_EXALLCONTROL = 1; DOS_FIB = 2; DOS_STDPKT = 3; DOS_CLI = 4; DOS_RDARGS = 5; { * dos date/time definitions ********************************************************************* * } type // Checked OK 04.08.2011 ALB { * Required to avoid conflict with default types * } _PDateTime = ^_TDateTime; _TDateTime = record dat_Stamp : TDateStamp; dat_Format : Byte; dat_Flags : Byte; dat_StrDay : PByte; dat_StrDate: PByte; dat_StrTime: PByte; end; const // Checked OK 04.08.2011 ALB LEN_DATSTRING = 16; const // Checked OK 04.08.2011 ALB DTB_SUBST = 0; DTF_SUBST = (1 Shl DTB_SUBST); DTB_FUTURE = 1; DTF_FUTURE = (1 Shl DTB_FUTURE); const // Checked OK 04.08.2011 ALB FORMAT_DOS = 0; FORMAT_INT = 1; FORMAT_USA = 2; FORMAT_CDN = 3; FORMAT_MAX = FORMAT_CDN; FORMAT_DEF = 4; { * dos extended structures definitions ********************************************************************* * } type // Checked OK 04.08.2011 ALB PProcess = ^TProcess; TProcess = record pr_Task : TTask; // Embedded task structure pr_MsgPort : TMsgPort; // Processes standard message-port. Used for various puposes. pr_Pad : Word; // Private pr_SegList : BPTR; // SegList array, used by this process. pr_StackSize : LongInt; // StackSize of the current process. pr_GlobVec : Pointer; pr_TaskNum : LongInt; // CLI process number. This may be 0, in which case the process is not connected to a CLI. pr_StackBase : BPTR; // Pointer to upper end of stack. pr_Result2 : PtrInt; // Secondary return-value pr_CurrentDir : BPTR; // Lock of the current directory pr_CIS : BPTR; { BPTR } pr_COS : BPTR; { BPTR } pr_ConsoleTask : Pointer; pr_FileSystemTask: Pointer; pr_CLI : BPTR; { BPTR } pr_ReturnAddr : Pointer; pr_PktWait : Pointer; pr_WindowPtr : Pointer; pr_HomeDir : BPTR; { BPTR } pr_Flags : LongInt; pr_ExitCode : Pointer; { Procedure } pr_ExitData : PtrUInt; pr_Arguments : PAnsiChar; pr_LocalVars : TMinList; pr_ShellPrivate : DWord; pr_CES : BPTR; { BPTR } end; const // Checked OK 04.08.2011 ALB PRB_FREESEGLIST = 0; PRF_FREESEGLIST = (1 shl PRB_FREESEGLIST); PRB_FREECURRDIR = 1; PRF_FREECURRDIR = (1 shl PRB_FREECURRDIR); PRB_FREECLI = 2; PRF_FREECLI = (1 shl PRB_FREECLI); PRB_CLOSEINPUT = 3; PRF_CLOSEINPUT = (1 shl PRB_CLOSEINPUT); PRB_CLOSEOUTPUT = 4; PRF_CLOSEOUTPUT = (1 shl PRB_CLOSEOUTPUT); PRB_FREEARGS = 5; PRF_FREEARGS = (1 shl PRB_FREEARGS); PRB_CLOSEERROR = 6; PRF_CLOSEERROR = (1 shl PRB_CLOSEERROR); PRB_SYNCHRONOUS = 7; PRF_SYNCHRONOUS = (1 shl PRB_SYNCHRONOUS); PRB_WAITINGFORCHILD = 8; // This one is subject to change! PRF_WAITINGFORCHILD = (1 shl PRB_WAITINGFORCHILD); PRB_NOTIFYONDEATH = 9; PRF_NOTIFYONDEATH = (1 shl PRB_NOTIFYONDEATH); type // Checked OK 04.08.2011 ALB PFileHandle = ^TFileHandle; TFileHandle = record // The next three are used with packet-based filesystems fh_Flags : DWord; fh_Interactive: LongInt; // packet reply port // alias -> fh_Port fh_Type : PMsgPort; // port to send packets to fh_Buf : BPTR; fh_Pos : LongInt; fh_End : LongInt; fh_Func1 : PtrInt; // SIPTR fh_Func2 : PtrInt; // SIPTR fh_Func3 : PtrInt; // SIPTR fh_Arg1 : PtrInt; // SIPTR fh_Arg2 : PtrInt; // SIPTR { *** V39+ *** } fh_BufSize : DWord; fh_OrigBuf : BPTR; end; (* OBSOLETE ************************* type PDOSPacket = ^TDOSPacket; TDOSPacket = record dp_Link: PMessage; dp_Port: PMsgPort; case Byte of 0 : ( dp_Action : Longint; dp_Status : Longint; dp_Status2: Longint; dp_BufAddr: Longint; ); 1 : ( dp_Type: Longint; dp_Res1: Longint; dp_Res2: Longint; dp_Arg1: Longint; dp_Arg2: Longint; dp_Arg3: Longint; dp_Arg4: Longint; dp_Arg5: Longint; dp_Arg6: Longint; dp_Arg7: Longint; ); end; type PStandardPacket = ^TStandardPacket; TStandardPacket = record sp_Msg: TMessage; sp_Pkt: TDOSPacket; end; const ACTION_NIL = 0; ACTION_STARTUP = 0; ACTION_GET_BLOCK = 2; { *** OBSOLETE *** } ACTION_SET_MAP = 4; ACTION_DIE = 5; ACTION_EVENT = 6; ACTION_CURRENT_VOLUME = 7; ACTION_LOCATE_OBJECT = 8; ACTION_RENAME_DISK = 9; ACTION_WRITE = 'W'; ACTION_READ = 'R'; ACTION_FREE_LOCK = 15; ACTION_DELETE_OBJECT = 16; ACTION_RENAME_OBJECT = 17; ACTION_MORE_CACHE = 18; ACTION_COPY_DIR = 19; ACTION_WAIT_CHAR = 20; ACTION_SET_PROTECT = 21; ACTION_CREATE_DIR = 22; ACTION_EXAMINE_OBJECT = 23; ACTION_EXAMINE_NEXT = 24; ACTION_DISK_INFO = 25; ACTION_INFO = 26; ACTION_FLUSH = 27; ACTION_SET_COMMENT = 28; ACTION_PARENT = 29; ACTION_TIMER = 30; ACTION_INHIBIT = 31; ACTION_DISK_TYPE = 32; ACTION_DISK_CHANGE = 33; ACTION_SET_DATE = 34; ACTION_SAME_LOCK = 40; ACTION_SCREEN_MODE = 994; ACTION_CHANGE_SIGNAL = 995; ACTION_READ_RETURN = 1001; ACTION_WRITE_RETURN = 1002; ACTION_SEEK = 1008; ACTION_FINDUPDATE = 1004; ACTION_FINDINPUT = 1005; ACTION_FINDOUTPUT = 1006; ACTION_END = 1007; ACTION_FORMAT = 1020; ACTION_MAKE_LINK = 1021; ACTION_SET_FILE_SIZE = 1022; ACTION_WRITE_PROTECT = 1023; ACTION_READ_LINK = 1024; ACTION_FH_FROM_LOCK = 1026; ACTION_IS_FILESYSTEM = 1027; ACTION_CHANGE_MODE = 1028; ACTION_COPY_DIR_FH = 1030; ACTION_PARENT_FH = 1031; ACTION_EXAMINE_ALL = 1033; ACTION_EXAMINE_FH = 1034; ACTION_EXAMINE_ALL_END = 1035; ACTION_SET_OWNER = 1036; ACTION_LOCK_RECORD = 2008; ACTION_FREE_RECORD = 2009; ACTION_ADD_NOTIFY = 4097; ACTION_REMOVE_NOTIFY = 4098; ACTION_SERIALIZE_DISK = 4200; ACTION_GET_DISK_FSSM = 4201; ACTION_FREE_DISK_FSSM = 4202; *) type // Checked OK 04.08.2011 ALB PErrorString = ^TErrorString; TErrorString = record estr_Nums: PLongInt; estr_Strings: PAnsiChar; end; type // Checked OK 04.08.2011 ALB PRootNode = ^TRootNode; TRootNode = record rn_TaskArray : BPTR; { BPTR } rn_ConsoleSegment : BPTR; { BPTR } rn_Time : TDateStamp; rn_RestartSeg : Pointer; rn_Info : BPTR; { BPTR } rn_FileHandlerSegment: BPTR; { BPTR } rn_CliList : TMinList; rn_BootProc : PMsgPort; rn_ShellSegment : BPTR; { BPTR } rn_Flags : LongInt; // Aros Special rn_RootLock : TSignalSemaphore; end; type // Checked OK 04.08.2011 ALB // AROS Specific PCLIInfo = ^TCLIInfo; TCLIInfo = record ci_Node: TNode; ci_Process: PProcess; end; type // Checked OK 05.08.2011 ALB PDOSLibrary = ^TDOSLibrary; TDOSLibrary = record dl_Lib : TLibrary; dl_Root : PRootNode; {$ifdef AROS_BINCOMPAT} dl_GV : Pointer; dl_A2 : LongInt; dl_A5 : LongInt; dl_A6 : LongInt; {$endif} dl_Errors : PErrorString; dl_TimeReq : PTimeRequest; dl_UtilityBase : PLibrary; dl_IntuitionBase: PLibrary; // AROS Specific private Fields dl_TimerBase : PDevice; dl_TimerIO : TTimeRequest; dl_DevInfo : BPTR; //PDosList; dl_SysBase : PExecBase; dl_SegList : BPTR; dl_NulHandler : PDevice; dl_NulLock : PUnit; // LDDemon private Data dl_LDObjectsListSigSem : TSignalSemaphore; dl_LDObjectsList : TEList; dl_LDHandler : TInterrupt; dl_LDDemonPort : PMsgPort; dl_LDDemonTask : PProcess; dl_LDReturn : Cardinal; // AROS-specific and private. Can go away in future dl_SYSLock: BPTR; // The flags are ORed with RootNode->rn_Flags. See below for definitions. dl_Flags: Cardinal; end; const // Checked OK 04.08.2011 ALB RNB_WILDSTAR = 24; RNF_WILDSTAR = (1 Shl RNB_WILDSTAR); type // Checked OK 04.08.2011 ALB PDOSInfo = ^TDOSInfo; TDOSInfo = record di_McName : BPTR; { BPTR } di_DevInfo : BPTR; { BPTR } di_Devices : BPTR; { BPTR } di_Handlers : BPTR; { BPTR } di_NetHand : BPTR; // Alias di_ResList di_DevLock : TSignalSemaphore; di_EntryLock : TSignalSemaphore; di_DeleteLock: TSignalSemaphore; end; type // Checked OK 04.08.2011 ALB PSegment = ^TSegment; TSegment = record seg_Next : PSegment; // Pointer to next segment. seg_UC : LongInt; seg_Seg : BPTR; { BPTR } seg_Name : Array[0..3] of AnsiChar; { * seg_Name continues * } end; const // Checked OK 04.08.2011 ALB CMD_SYSTEM = -1; CMD_INTERNAL = -2; CMD_DISABLED = -999; type // Checked TODO 04.08.2011 ALB PDeviceList = ^TDeviceList; TDeviceList = record dl_Next : PDeviceList; { BPTR } dl_Type : LongInt; dl_Task : PMsgPort; dl_Lock : BPTR; { BPTR } dl_VolumeDate: TDateStamp; dl_LockList : BPTR; { BPTR } dl_DiskType : LongInt; dl_unused : BPTR; // Padding Bytes? dl_Name : BSTR; { BSTR } // Missing DosListAROSExt end; type // Checked OK 04.08.2011 ALB PFileLock = ^TFileLock; TFileLock = record fl_Link : PFileLock; // (PFileLock) Pointer to next lock. fl_Key : PtrUInt; fl_Access: LongInt; fl_Task : PMsgPort; fl_Volume: PDeviceList; // (BPTR) end; type // Checked OK 04.08.2011 ALB PCommandLineInterface = ^TCommandLineInterface; TCommandLineInterface = record cli_Result2 : LongInt; // Secondary error code, set by last command. cli_SetName : BSTR; // Name of the current directory. cli_CommandDir : PFileLock; // Lock of the first directory in path. cli_ReturnCode : LongInt; // Error code, the last command returned. cli_CommandName : BSTR; // Name of the command that is currently executed. cli_FailLevel : LongInt; // Fail-Level as set by the command "FailAt". cli_Prompt : BSTR; // Current prompt in the CLI window. cli_StandardInput : PFileLock; // Standard/Default input file. cli_CurrentInput : PFileLock; // Current input file. cli_CommandFile : BSTR; // Name of the file that is currently executed. cli_Interactive : LongInt; // TRUE if the currently CLI is connected to a controlling terminal, otherwise FALSE. cli_Background : LongInt; // FALSE if there is no controlling terminal, otherwise TRUE. cli_CurrentOutput : PFileLock; // Current output file. } cli_DefaultStack : LongInt; // Default stack size as set by the command "Stack" cli_StandardOutput: PFileLock; // Standard/Default output file. cli_Module : BPTR; // SegList of currently loaded command. // Aros Specific Part cli_Standard_Error: PFileLock; // Standard/Default Error file. end; const // Checked OK 04.08.2011 ALB CLI_DEFAULTSTACK_UNIT = SizeOf(PtrUInt); type // Checked TODO 04.08.2011 ALB PDevInfo = ^TDevInfo; TDevInfo = record dvi_Next : PDevInfo; { BPTR } dvi_Type : LongInt; dvi_Task : PMsgPort; dvi_Lock : BPTR; { BPTR } dvi_Handler : BSTR; { BSTR } dvi_StackSize: LongInt; dvi_Priority : LongInt; dvi_Startup : BPTR; dvi_SegList : BPTR; { BPTR } dvi_GlobalVec: BPTR; { BPTR } // aka dvi_GlobVec dvi_Name : BSTR; { BSTR } // missing Aros Extension... DosListAROSExt; end; type // Checked TODO 04.08.2011 ALB PAssignList = ^TAssignList; TAssignList = record al_Next: PAssignList; // Pointer to next assign node. al_Lock: PFileLock; // Lock of on of the directories. end; type // Checked TODO 04.08.2011 ALB PDOSList = ^TDOSList; TDOSList = record dol_Next: BPTR; // PDOSList dol_Type: LongInt; dol_Task: PMsgPort; dol_Lock: PFileLock; { BPTR } case Byte of 0: ( dol_handler : record dol_Handler : BSTR; { BSTR } dol_StackSize: LongInt; dol_Priority : LongInt; dol_Startup : BPTR; dol_NoAROS1 : BPTR; { BPTR } dol_NoAROS2 : BPTR; { BPTR } dol_NoAROS3 : BPTR; { BPTR } end; ); 1: ( dol_volume : record dol_VolumeDate: TDateStamp; dol_LockList : BPTR; { BPTR } dol_DiskType : LongInt; dol_unused : BPTR; end; ); 2: ( dol_assign : record dol_AssignName: PAnsiChar; dol_List : PAssignList; end; ); 3: ( dol_Misc: array[0..23] of Byte; dol_Name: BSTR; ); // missing Aros Extension... DosListAROSExt; end; const // Checked OK 04.08.2011 ALB DLT_DEVICE = 0; DLT_DIRECTORY = 1; DLT_VOLUME = 2; DLT_LATE = 3; DLT_NONBINDING = 4; DLT_PRIVATE = -1; type // Checked OK 04.08.2011 ALB PDevProc = ^TDevProc; TDevProc = record dvp_Port : PMsgPort; dvp_Lock : PFileLock; { BPTR } dvp_Flags : DWord; // see below dvp_DevNode: PDOSList; // Private end; const // Checked OK 04.08.2011 ALB DVPB_UNLOCK = 0; DVPF_UNLOCK = (1 shl DVPB_UNLOCK); DVPB_ASSIGN = 1; DVPF_ASSIGN = (1 shl DVPB_ASSIGN); const // Checked OK 04.08.2011 ALB LDB_READ = 0; LDF_READ = (1 shl LDB_READ); LDB_WRITE = 1; LDF_WRITE = (1 shl LDB_WRITE); LDB_DEVICES = 2; LDF_DEVICES = (1 shl LDB_DEVICES); LDB_VOLUMES = 3; LDF_VOLUMES = (1 shl LDB_VOLUMES); LDB_ASSIGNS = 4; LDF_ASSIGNS = (1 shl LDB_ASSIGNS); LDB_ENTRY = 5; LDF_ENTRY = (1 shl LDB_ENTRY); LDB_DELETE = 6; LDF_DELETE = (1 shl LDB_DELETE); LDF_ALL = (LDF_DEVICES or LDF_VOLUMES or LDF_ASSIGNS); const // Checked OK 04.08.2011 ALB REPORT_STREAM = 0; REPORT_TASK = 1; REPORT_LOCK = 2; REPORT_VOLUME = 3; REPORT_INSERT = 4; const // Checked OK 04.08.2011 ALB ABORT_DISK_ERROR = 296; ABORT_BUSY = 288; const // Checked OK 04.08.2011 ALB RUN_EXECUTE = -1; RUN_SYSTEM = -2; RUN_SYSTEM_ASYNCH = -3; const // Checked OK 04.08.2011 ALB ST_ROOT = 1; ST_USERDIR = 2; ST_SOFTLINK = 3; ST_LINKDIR = 4; ST_FILE = -3; ST_LINKFILE = -4; ST_PIPEFILE = -5; { * dos asl definitions ********************************************************************* * } type // Checked OK 04.08.2011 ALB PAChain = ^TAChain; TAChain = record an_Child : PAChain; an_Parent: PAChain; an_Lock : BPTR; an_Info : TFileInfoBlock; an_Flags : ShortInt; an_String: array[0..0] of AnsiChar; { * an_String continues * } end; type // Checked OK 04.08.2011 ALB PAnchorPath = ^TAnchorPath; TAnchorPath = record case Byte of // its not defined in AROS struct just by defines... 0 : ( ap_First: PAChain; ap_Last: PAChain; ap_L1: LongInt; ap_L2: LongInt; ap_Length: ShortInt; ); 1 : ( ap_Base: PAChain; ap_Current: PAChain; ap_BreakBits: LongInt; ap_FoundBreak: LongInt; ap_Flags: ShortInt; ap_Reserved: ShortInt; ap_Strlen: SmallInt; ap_Info: TFileInfoBlock; ap_Buf: array[0..255] of AnsiChar; { * an_Buf continues * } ); end; const // Checked OK 04.08.2011 ALB // Please check for wildcards in supplied string. APB_DOWILD = 0; APF_DOWILD = (1 Shl APB_DOWILD); // There is actually a wildcard in the supplied string. READ-ONLY APB_ITSWILD = 1; APF_ITSWILD = (1 Shl APB_ITSWILD); // Set, if a directory is to be entered. Applications may clear this bit to prohibit the // matching-functions from entering a directory. APB_DODIR = 2; APF_DODIR = (1 Shl APB_DODIR); // Set, if directory was already searched. READ-ONLY APB_DIDDIR = 3; APF_DIDDIR = (1 Shl APB_DIDDIR); // Set, if function was out of memory. READ-ONLY APB_NOMEMERR = 4; APF_NOMEMERR = (1 Shl APB_NOMEMERR); // '.' may refer to the current directory (unix-style). APB_DODOT = 5; APF_DODOT = (1 Shl APB_DODOT); // Directory changed since last call. APB_DirChanged = 6; APF_DirChanged = (1 Shl APB_DirChanged); // Follow hardlinks, too. APB_FollowHLinks = 7; APF_FollowHLinks = (1 Shl APB_FollowHLinks); const // Checked OK 04.08.2011 ALB DDB_PatternBit = 0; DDF_PatternBit = (1 Shl DDB_PatternBit); DDB_ExaminedBit = 1; DDF_ExaminedBit = (1 Shl DDB_ExaminedBit); DDB_Completed = 2; DDF_Completed = (1 Shl DDB_Completed); DDB_AllBit = 3; DDF_AllBit = (1 Shl DDB_AllBit); DDB_Single = 4; DDF_Single = (1 Shl DDB_Single); const // Checked OK 04.08.2011 ALB P_ANY = $80; // Matches everything ('#?' and '*') P_SINGLE = $81; // Any character ('?') P_ORSTART = $82; // Opening parenthesis for OR'ing ('(') P_ORNEXT = $83; // Field delimiter for OR'ing ('|') P_OREND = $84; // Closing parenthesis for OR'ing (')') P_NOT = $85; // Inversion ('~') P_NOTEND = $86; // Inversion end P_NOTCLASS = $87; // Inversion class ('^') P_CLASS = $88; // Class ('[' and ']') P_REPBEG = $89; // Beginning of repetition ('[') P_REPEND = $8A; // End of repetition (']') P_STOP = $8B; const // Checked OK 04.08.2011 ALB COMPLEX_BIT = 1; EXAMINE_BIT = 2; const // Checked OK 04.08.2011 ALB ERROR_BUFFER_OVERFLOW = 303; ERROR_BREAK = 304; ERROR_NOT_EXECUTABLE = 305; { * dos hunk definitions ********************************************************************* * } const // Checked OK 04.08.2011 ALB HUNK_UNIT = 999; HUNK_NAME = 1000; HUNK_CODE = 1001; HUNK_DATA = 1002; HUNK_BSS = 1003; HUNK_RELOC32 = 1004; HUNK_ABSRELOC32 = HUNK_RELOC32; HUNK_RELOC16 = 1005; HUNK_RELRELOC16 = HUNK_RELOC16; HUNK_RELOC8 = 1006; HUNK_RELRELOC8 = HUNK_RELOC8; HUNK_EXT = 1007; HUNK_SYMBOL = 1008; HUNK_DEBUG = 1009; HUNK_END = 1010; HUNK_HEADER = 1011; HUNK_OVERLAY = 1013; HUNK_BREAK = 1014; HUNK_DREL32 = 1015; HUNK_DREL16 = 1016; HUNK_DREL8 = 1017; HUNK_LIB = 1018; HUNK_INDEX = 1019; HUNK_RELOC32SHORT = 1020; HUNK_RELRELOC32 = 1021; HUNK_ABSRELOC16 = 1022; const // Checked OK 04.08.2011 ALB HUNKB_ADVISORY = 29; HUNKB_CHIP = 30; HUNKB_FAST = 31; HUNKF_ADVISORY = (1 shl HUNKB_ADVISORY); HUNKF_CHIP = (1 shl HUNKB_CHIP); HUNKF_FAST = (1 shl HUNKB_FAST); const // Checked OK 04.08.2011 ALB EXT_SYMB = 0; EXT_DEF = 1; EXT_ABS = 2; EXT_REF32 = 129; EXT_ABSREF32 = EXT_REF32; EXT_COMMON = 130; EXT_ABSCOMMON = EXT_COMMON; EXT_REF16 = 131; EXT_RELREF16 = EXT_REF16; EXT_REF8 = 132; EXT_RELREF8 = EXT_REF8; EXT_DEXT32 = 133; EXT_DEXT16 = 134; EXT_DEXT8 = 135; EXT_RELREF32 = 136; EXT_RELCOMMON = 137; EXT_ABSREF16 = 138; EXT_ABSREF8 = 139; { * dos ExAll definitions ********************************************************************* * } const // Checked OK 04.08.2011 ALB ED_NAME = 1; ED_TYPE = 2; ED_SIZE = 3; ED_PROTECTION = 4; ED_DATE = 5; ED_COMMENT = 6; ED_OWNER = 7; type // Checked OK 04.08.2011 ALB PExAllData = ^TExAllData; TExAllData = record ed_Next : PExAllData; ed_Name : PAnsiChar; ed_Type : LongInt; ed_Size : Cardinal; ed_Prot : Cardinal; ed_Days : Cardinal; ed_Mins : Cardinal; ed_Ticks : Cardinal; ed_Comment : PAnsiChar; ed_OwnerUID: Word; ed_OwnerGID: Word; end; type // Checked OK 04.08.2011 ALB PExAllControl = ^TExAllControl; TexAllControl = record eac_Entries : Cardinal; eac_LastKey : PtrUInt; // private eac_MatchString: PAnsiChar; eac_MatchFunc : PHook; end; { * dos record definitions ********************************************************************* * } const // Checked OK 04.08.2011 ALB REC_EXCLUSIVE = 0; REC_EXCLUSIVE_IMMED = 1; REC_SHARED = 2; REC_SHARED_IMMED = 3; type // Checked OK 04.08.2011 ALB PRecordLock = ^TRecordLock; TRecordLock = record rec_FH : PFileHandle; rec_Offset: Cardinal; rec_Length: Cardinal; rec_Mode : Cardinal; end; { * dos tag definitions ********************************************************************* * } const // Checked OK 04.08.2011 ALB SYS_Dummy = (TAG_USER + 32); SYS_Input = (SYS_Dummy + 1); SYS_Output = (SYS_Dummy + 2); SYS_Asynch = (SYS_Dummy + 3); SYS_UserShell = (SYS_Dummy + 4); SYS_CustomShell = (SYS_Dummy + 5); { *** Aros Specific *** } SYS_Error = (SYS_Dummy + 10); SYS_ScriptInput = (SYS_Dummy + 11); SYS_Background = (SYS_Dummy + 12); SYS_CliNumPtr = (SYS_Dummy + 13); SYS_DupStream = 1; const // Checked OK 04.08.2011 ALB NP_Dummy = (TAG_USER + 1000); NP_Seglist = (NP_Dummy + 1); NP_FreeSeglist = (NP_Dummy + 2); NP_Entry = (NP_Dummy + 3); NP_Input = (NP_Dummy + 4); NP_Output = (NP_Dummy + 5); NP_CloseInput = (NP_Dummy + 6); NP_CloseOutput = (NP_Dummy + 7); NP_Error = (NP_Dummy + 8); NP_CloseError = (NP_Dummy + 9); NP_CurrentDir = (NP_Dummy + 10); NP_StackSize = (NP_Dummy + 11); NP_Name = (NP_Dummy + 12); NP_Priority = (NP_Dummy + 13); NP_ConsoleTask = (NP_Dummy + 14); NP_WindowPtr = (NP_Dummy + 15); NP_HomeDir = (NP_Dummy + 16); NP_CopyVars = (NP_Dummy + 17); NP_Cli = (NP_Dummy + 18); NP_Path = (NP_Dummy + 19); NP_CommandName = (NP_Dummy + 20); NP_Arguments = (NP_Dummy + 21); NP_NotifyOnDeath = (NP_Dummy + 22); NP_Synchronous = (NP_Dummy + 23); NP_ExitCode = (NP_Dummy + 24); NP_ExitData = (NP_Dummy + 25); { *** AROS Specific *** } NP_UserData = (NP_Dummy + 26); const // Checked OK 04.08.2011 ALB ADO_Dummy = (TAG_USER + 2000); ADO_FH_Mode = (ADO_Dummy + 1); ADO_DirLen = (ADO_Dummy + 2); ADO_CommNameLen = (ADO_Dummy + 3); ADO_CommFileLen = (ADO_Dummy + 4); ADO_PromptLen = (ADO_Dummy + 5); { * dos stdio definitions ********************************************************************* * } const // Checked OK 04.08.2011 ALB BUF_LINE = 0; BUF_FULL = 1; BUF_NONE = 2; const // Checked OK 04.08.2011 ALB ENDSTREAMCH = -1; { * dos env-var definitions ********************************************************************* * } type // Checked OK 04.08.2011 ALB PLocalVar = ^TLocalVar; TLocalVar = record lv_Node : TNode; lv_Flags: Word; lv_Value: PAnsiChar; lv_Len : Cardinal; end; type // Checked OK 04.08.2011 ALB PScanVarsMsg = ^TScanVarsMsg; TScanVarsMsg = record sv_SVMSize: Cardinal; // Size of ScanVarsMsg structure sv_Flags: Cardinal; // The flags parameter given to ScanVars() sv_GDir: PAnsiChar; // Directory patch for global variables or empty string "\0" for local variables sv_Name: PAnsiChar; // Name of the variable sv_Var: PAnsiChar; // Pointer to the contents of the variable sv_VarLen: Cardinal; // Size of the variable end; const // Checked OK 04.08.2011 ALB LV_VAR = 0; LV_ALIAS = 1; const // Checked OK 04.08.2011 ALB LVB_IGNORE = 7; LVF_IGNORE = (1 Shl LVB_IGNORE); GVB_GLOBAL_ONLY = 8; GVF_GLOBAL_ONLY = (1 Shl GVB_GLOBAL_ONLY); GVB_LOCAL_ONLY = 9; GVF_LOCAL_ONLY = (1 Shl GVB_LOCAL_ONLY); GVB_BINARY_VAR = 10; GVF_BINARY_VAR = (1 Shl GVB_BINARY_VAR); GVB_DONT_NULL_TERM = 11; GVF_DONT_NULL_TERM = (1 Shl GVB_DONT_NULL_TERM); GVB_SAVE_VAR = 12; GVF_SAVE_VAR = (1 Shl GVB_SAVE_VAR); { * dos ReadArgs definitions ********************************************************************* * } type // Checked OK 04.08.2011 ALB PCSource = ^TCSource; TCSource = record CS_Buffer: PAnsiChar; CS_Length: LongInt; CS_CurChr: LongInt; end; type // Checked OK 04.08.2011 ALB PRDArgs = ^TRDArgs; TRDArgs = record RDA_Source : TCSource; RDA_DAList : PtrUInt; RDA_Buffer : PAnsiChar; RDA_BufSiz : LongInt; RDA_ExtHelp: PAnsiChar; RDA_Flags : LongInt; end; const // Checked OK 04.08.2011 ALB RDAB_STDIN = 0; RDAF_STDIN = (1 Shl RDAB_STDIN); RDAB_NOALLOC = 1; RDAF_NOALLOC = (1 Shl RDAB_NOALLOC); RDAB_NOPROMPT = 2; RDAF_NOPROMPT = (1 Shl RDAB_NOPROMPT); const // Checked OK 04.08.2011 ALB MAX_TEMPLATE_ITEMS = 100; MAX_MULTIARGS = 128; { * dos filehandler definitions ********************************************************************* * } type // Checked OK 04.08.2011 ALB PDosEnvec = ^TDosEnvec; TDosEnvec = record de_TableSize : PtrUInt; de_SizeBlock : PtrUInt; de_SecOrg : PtrUInt; de_Surfaces : PtrUInt; de_SectorPerBlock: PtrUInt; de_BlocksPerTrack: PtrUInt; de_Reserved : PtrUInt; de_PreAlloc : PtrUInt; de_Interleave : PtrUInt; de_LowCyl : PtrUInt; de_HighCyl : PtrUInt; de_NumBuffers : PtrUInt; de_BufMemType : PtrUInt; de_MaxTransfer : PtrUInt; de_Mask : PtrUInt; de_BootPri : PtrInt; de_DosType : PtrUInt; de_Baud : PtrUInt; de_Control : PtrUInt; de_BootBlocks : PtrUInt; end; const // Checked OK 04.08.2011 ALB DE_TABLESIZE = 0; DE_SIZEBLOCK = 1; DE_BLOCKSIZE = 2; DE_NUMHEADS = 3; DE_SECSPERBLOCK = 4; DE_BLKSPERTRACK = 5; DE_RESERVEDBLKS = 6; DE_PREFAC = 7; DE_INTERLEAVE = 8; DE_LOWCYL = 9; DE_HIGHCYL = 10; DE_UPPERCYL = DE_HIGHCYL; DE_NUMBUFFERS = 11; DE_BUFMEMTYPE = 12; DE_MEMBUFTYPE = DE_BUFMEMTYPE; DE_MAXTRANSFER = 13; DE_MASK = 14; DE_BOOTPRI = 15; DE_DOSTYPE = 16; DE_BAUD = 17; DE_CONTROL = 18; DE_BOOTBLOCKS = 19; type // Checked OK 04.08.2011 ALB PFileSysStartupMsg = ^TFileSysStartupMsg; TFileSysStartupMsg = record fssm_Unit : PtrUInt; fssm_Device : BSTR; fssm_Environ: BPTR; fssm_Flags : Cardinal; end; type // Checked TODO 04.08.2011 ALB PDeviceNode = ^TDeviceNode; TDeviceNode = record dn_Next : PDeviceNode; dn_Type : Cardinal; dn_Task : PMsgPort; dn_Lock : BPTR; dn_Handler : BSTR; dn_StackSize: Cardinal; dn_Priority : LongInt; dn_Startup : BPTR; dn_SegList : BPTR; dn_GlobalVec: BPTR; dn_Name : BSTR; // Missing Extension DosListAROSExt end; { * dos notification definitions ********************************************************************* * } const // Checked OK 04.08.2011 ALB NOTIFY_CLASS = $40000000; NOTIFY_CODE = $1234; type // Checked OK 04.08.2011 ALB PNotifyRequest = ^TNotifyRequest; TNotifyRequest = record nr_Name : PAnsiChar; nr_FullName: PAnsiChar; nr_UserData: PtrUInt; nr_Flags : Cardinal; nr_stuff : record case Byte of 0 : ( nr_Msg : record nr_Port: PMsgPort; end ); 1 : ( nr_Signal : record nr_Task : PTask; nr_SignalNum: Byte; nr_pad : array[0..2] of Byte; end ); end; nr_Reserved: array[0..3] of PtrUInt; nr_MsgCount: Cardinal; nr_Handler : PMsgPort; end; type // Checked OK 04.08.2011 ALB PNotifyMessage = ^TNotifyMessage; TNotifyMessage = record nm_ExecMessage: TMessage; nm_Class : Cardinal; nm_Code : Word; nm_NReq : PNotifyRequest; nm_DoNotTouch : PtrUInt; nm_DoNotTouch2: PtrUInt; end; const // Checked OK 04.08.2011 ALB NRB_SEND_MESSAGE = 0; NRB_SEND_SIGNAL = 1; NRB_WAIT_REPLY = 3; NRB_NOTIFY_INITIAL = 4; NRB_MAGIC = 31; NRF_SEND_MESSAGE = (1 shl NRB_SEND_MESSAGE); NRF_SEND_SIGNAL = (1 shl NRB_SEND_SIGNAL); NRF_WAIT_REPLY = (1 shl NRB_WAIT_REPLY); NRF_NOTIFY_INITIAL = (1 shl NRB_NOTIFY_INITIAL); NRF_MAGIC = (1 shl NRB_MAGIC); NR_HANDLER_FLAGS = $ffff0000;