{ 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. <www.genesi.lu> 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 (V50) ********************************************************************* * } const DOSNAME = 'dos.library'; const DOSTRUE = -1; DOSFALSE = 0; const MODE_OLDFILE = 1005; MODE_NEWFILE = 1006; MODE_READWRITE = 1004; const OFFSET_BEGINNING = -1; OFFSET_CURRENT = 0; OFFSET_END = 1; OFFSET_BEGINING = OFFSET_BEGINNING; { * Typo fix * } const BITSPERBYTE = 8; BYTESPERLONG = 4; BITSPERLONG = 32; _MAXINT = $7FFFFFFF; _MININT = $80000000; const SHARED_LOCK = -2; ACCESS_READ = -2; EXCLUSIVE_LOCK = -1; ACCESS_WRITE = -1; type PDateStamp = ^TDateStamp; TDateStamp = packed record ds_Days : LongInt; ds_Minute: LongInt; ds_Tick : LongInt; end; const TICKS_PER_SECOND = 50; type PFileInfoBlock = ^TFileInfoBlock; TFileInfoBlock = packed record fib_DiskKey : LongInt; fib_DirEntryType: LongInt; fib_FileName : Array[0..107] Of AnsiChar; fib_Protection : LongInt; fib_EntryType : LongInt; fib_Size : LongInt; fib_NumBlocks : LongInt; fib_Date : TDateStamp; fib_Comment : Array[0..79] Of AnsiChar; fib_OwnerUID : Word; fib_OwnerGID : Word; fib_Reserved : Array[0..31] Of AnsiChar; end; const 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; FIBB_PURE = 5; FIBB_ARCHIVE = 4; FIBB_READ = 3; FIBB_WRITE = 2; FIBB_EXECUTE = 1; FIBB_DELETE = 0; const 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 FAULT_MAX = 82; type BPTR = LongInt; BSTR = LongInt; type PInfoData = ^TInfoData; TInfoData = packed record id_NumSoftErrors: LongInt; id_UnitNumber : LongInt; id_DiskState : LongInt; id_NumBlocks : LongInt; id_NumBlocksUsed: LongInt; id_BytesPerBlock: LongInt; id_DiskType : LongInt; id_VolumeNode : LongInt; {BPTR} id_InUse : LongInt; end; const 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; const 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 RETURN_OK = 0; RETURN_WARN = 5; RETURN_ERROR = 10; RETURN_FAIL = 20; const 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 LOCK_DIFFERENT = -1; LOCK_SAME = 0; LOCK_SAME_VOLUME = 1; LOCK_SAME_HANDLER = LOCK_SAME_VOLUME; const CHANGE_LOCK = 0; CHANGE_FH = 1; const LINK_HARD = 0; LINK_SOFT = 1; const ITEM_EQUAL = -2; ITEM_ERROR = -1; ITEM_NOTHING = 0; ITEM_UNQUOTED = 1; ITEM_QUOTED = 2; const DOS_FILEHANDLE = 0; DOS_EXALLCONTROL = 1; DOS_FIB = 2; DOS_STDPKT = 3; DOS_CLI = 4; DOS_RDARGS = 5; { * dos date/time definitions ********************************************************************* * } type { * Required to avoid conflict with default types * } _PDateTime = ^_TDateTime; _TDateTime = packed record dat_Stamp : TDateStamp; dat_Format : Byte; dat_Flags : Byte; dat_StrDay : Pointer; dat_StrDate: Pointer; dat_StrTime: Pointer; end; const LEN_DATSTRING = 16; const DTB_SUBST = 0; DTF_SUBST = (1 Shl DTB_SUBST); DTB_FUTURE = 1; DTF_FUTURE = (1 Shl DTB_FUTURE); const FORMAT_DOS = 0; FORMAT_INT = 1; FORMAT_USA = 2; FORMAT_CDN = 3; FORMAT_MAX = FORMAT_CDN; FORMAT_DEF = 4; { * dos extended structures definitions ********************************************************************* * } type PProcess = ^TProcess; TProcess = packed record pr_Task : TTask; pr_MsgPort : TMsgPort; pr_Pad : Word; pr_SegList : DWord; { BPTR } pr_StackSize : LongInt; { 68k stacksize! } pr_GlobVec : Pointer; pr_TaskNum : LongInt; pr_StackBase : DWord; { BPTR } pr_Result2 : LongInt; pr_CurrentDir : DWord; { BPTR } pr_CIS : DWord; { BPTR } pr_COS : DWord; { BPTR } pr_ConsoleTask : Pointer; pr_FileSystemTask: Pointer; pr_CLI : DWord; { BPTR } pr_ReturnAddr : Pointer; pr_PktWait : Pointer; pr_WindowPtr : Pointer; pr_HomeDir : DWord; { BPTR } pr_Flags : LongInt; pr_ExitCode : Pointer; { Procedure } pr_ExitData : LongInt; pr_Arguments : PAnsiChar; pr_LocalVars : TMinList; pr_ShellPrivate : DWord; pr_CES : DWord; { BPTR } end; const 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); type PFileHandle = ^TFileHandle; TFileHandle = packed record fh_Flags : DWord; fh_Interactive: LongInt; fh_Type : PMsgPort; fh_Buf : LongInt; fh_Pos : LongInt; fh_End : LongInt; fh_Func1 : LongInt; fh_Func2 : LongInt; fh_Func3 : LongInt; fh_Arg1 : LongInt; fh_Arg2 : LongInt; { *** V50 MorphOS *** } fh_BufSize : LongInt; fh_OrigBuf : LongInt; end; type PDOSPacket = ^TDOSPacket; TDOSPacket = packed 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 = packed 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 PErrorString = ^TErrorString; TErrorString = packed record estr_Nums: Pointer; { ^LongInt } estr_Byte: Pointer; { ^Byte } end; type PRootNode = ^TRootNode; TRootNode = packed record rn_TaskArray : DWord; { BPTR } rn_ConsoleSegment : DWord; { BPTR } rn_Time : TDateStamp; rn_RestartSeg : LongInt; rn_Info : DWord; { BPTR } rn_FileHandlerSegment: DWord; { BPTR } rn_CliList : TMinList; rn_BootProc : PMsgPort; rn_ShellSegment : DWord; { BPTR } rn_Flags : LongInt; end; type PDOSLibrary = ^TDOSLibrary; TDOSLibrary = packed record dl_Lib : TLibrary; dl_Root : PRootNode; dl_GU : Pointer; dl_A2 : LongInt; dl_A5 : LongInt; dl_A6 : LongInt; dl_Errors : PErrorString; dl_TimeReq : PTimeRequest; dl_UtilityBase : PLibrary; dl_IntuitionBase: PLibrary; end; const RNB_WILDSTAR = 24; RNF_WILDSTAR = (1 Shl RNB_WILDSTAR); RNB_PRIVATE1 = 1; RNF_PRIVATE1 = (1 Shl RNB_PRIVATE1); type PCliProcList = ^TCliProcList; TCliProcList = packed record cpl_Node : TMinNode; cpl_First: LongInt; cpl_Array: Array[0..0] Of PMsgPort; end; type PDOSInfo = ^TDOSInfo; TDOSInfo = packed record case Byte of 0 : ( di_ResList: DWord; { BPTR } ); 1 : ( di_McName : DWord; { BPTR } di_DevInfo : DWord; { BPTR } di_Devices : DWord; { BPTR } di_Handlers : DWord; { BPTR } di_NetHand : Pointer; di_DevLock : TSignalSemaphore; di_EntryLock : TSignalSemaphore; di_DeleteLock: TSignalSemaphore; ); end; type PSegment = ^TSegment; TSegment = packed record seg_Next : DWord; { BPTR } seg_UC : LongInt; seg_Seg : DWord; { BPTR } seg_Name : Array[0..3] Of Byte; { * seg_Name continues * } end; const CMD_SYSTEM = -1; CMD_INTERNAL = -2; CMD_NOTLOADED = -998; CMD_DISABLED = -999; type PCommandLineInterface = ^TCommandLineInterface; TCommandLineInterface = packed record cli_Result2 : LongInt; cli_SetName : DWord; { BSTR } cli_CommandDir : DWord; { BPTR } cli_ReturnCode : LongInt; cli_CommandName : DWord; { BSTR } cli_FailLevel : LongInt; cli_Prompt : DWord; { BSTR } cli_StandardInput : DWord; { BPTR } cli_CurrentInput : DWord; { BPTR } cli_CommandFile : DWord; { BSTR } cli_Interactive : LongInt; cli_Background : LongInt; cli_CurrentOutput : DWord; { BPTR } cli_DefaultStack : LongInt; cli_StandardOutput: DWord; { BPTR } cli_Module : DWord; { BPTR } end; type PDeviceList = ^TDeviceList; TDeviceList = packed record dl_Next : DWord; { BPTR } dl_Type : LongInt; dl_Task : PMsgPort; dl_Lock : DWord; { BPTR } dl_VolumeDate: TDateStamp; dl_LockList : DWord; { BPTR } dl_DiskType : LongInt; dl_unused : LongInt; dl_Name : DWord; { BSTR } end; type PDevInfo = ^TDevInfo; TDevInfo = packed record dvi_Next : DWord; { BPTR } dvi_Type : LongInt; dvi_Task : Pointer; dvi_Lock : DWord; { BPTR } dvi_Handler : DWord; { BSTR } dvi_StackSize: LongInt; dvi_Priority : LongInt; dvi_Startup : LongInt; dvi_SegList : DWord; { BPTR } dvi_GlobVec : DWord; { BPTR } dvi_Name : DWord; { BSTR } end; type PAssignList = ^TAssignList; TAssignList = packed record al_Next: PAssignList; al_Lock: DWord; { BPTR } end; type PDOSList = ^TDOSList; TDOSList = packed record dol_Next: DWord; { BPTR } dol_Type: LongInt; dol_Task: PMsgPort; dol_Lock: DWord; { BPTR } case Byte of 0: ( dol_handler : record dol_Handler : DWord; { BSTR } dol_StackSize: LongInt; dol_Priority : LongInt; dol_Startup : DWord; dol_SegList : DWord; { BPTR } dol_GlobVec : DWord; { BPTR } end; ); 1: ( dol_volume : record dol_VolumeDate: TDateStamp; dol_LockList : DWord; { BPTR } dol_DiskType : LongInt; end; ); 2: ( dol_assign : record dol_AssignName: PAnsiChar; dol_List : PAssignList; end; ); 3: ( dol_Misc: array[0..23] of Byte; dol_Name: DWord; { BPTR } ); end; const DLT_DEVICE = 0; DLT_DIRECTORY = 1; DLT_VOLUME = 2; DLT_LATE = 3; DLT_NONBINDING = 4; DLT_PRIVATE = -1; type PDevProc = ^TDevProc; TDevProc = packed record dvp_Port : PMsgPort; dvp_Lock : DWord; { BPTR } dvp_Flags : DWord; dvp_DevNode: PDOSList; end; const DVPB_UNLOCK = 0; DVPF_UNLOCK = (1 Shl DVPB_UNLOCK); DVPB_ASSIGN = 1; DVPF_ASSIGN = (1 Shl DVPB_ASSIGN); const 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); type PFileLock = ^TFileLock; TFileLock = packed record fl_Link : DWord; { BPTR } fl_Key : LongInt; fl_Access: LongInt; fl_Task : PMsgPort; fl_Volume: DWord; { BPTR } end; const REPORT_STREAM = 0; REPORT_TASK = 1; REPORT_LOCK = 2; REPORT_VOLUME = 3; REPORT_INSERT = 4; const ABORT_DISK_ERROR = 296; ABORT_BUSY = 288; const RUN_EXECUTE = -1; RUN_SYSTEM = -2; RUN_SYSTEM_ASYNCH = -3; const 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 PAChain = ^TAChain; TAChain = packed record an_Child : PAChain; an_Parent: PAChain; an_Lock : DWord; { BPTR } an_Info : TFileInfoBlock; an_Flags : ShortInt; an_String: Array[0..0] Of AnsiChar; { * an_String continues * } end; type PAnchorPath = ^TAnchorPath; TAnchorPath = packed record case Byte of 0 : ( ap_First: PAChain; ap_Last : PAChain; ); 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..0] of AnsiChar; { * an_Buf continues * } ); end; const APB_DOWILD = 0; APF_DOWILD = (1 Shl APB_DOWILD); APB_ITSWILD = 1; APF_ITSWILD = (1 Shl APB_ITSWILD); APB_DODIR = 2; APF_DODIR = (1 Shl APB_DODIR); APB_DIDDIR = 3; APF_DIDDIR = (1 Shl APB_DIDDIR); APB_NOMEMERR = 4; APF_NOMEMERR = (1 Shl APB_NOMEMERR); APB_DODOT = 5; APF_DODOT = (1 Shl APB_DODOT); APB_DirChanged = 6; APF_DirChanged = (1 Shl APB_DirChanged); APB_FollowHLinks = 7; APF_FollowHLinks = (1 Shl APB_FollowHLinks); const APSB_EXTENDED = 15; APSF_EXTENDED = (1 Shl APSB_EXTENDED); APEB_DoMultiAssigns = 0; APEF_DoMultiAssigns = (1 Shl APEB_DoMultiAssigns); APEB_FutureExtension = 7; APEF_FutureExtension = (1 Shl APEB_FutureExtension); const 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 P_ANY = $80; P_SINGLE = $81; P_ORSTART = $82; P_ORNEXT = $83; P_OREND = $84; P_NOT = $85; P_NOTEND = $86; P_NOTCLASS = $87; P_CLASS = $88; P_REPBEG = $89; P_REPEND = $8A; P_STOP = $8B; const COMPLEX_BIT = 1; EXAMINE_BIT = 2; const ERROR_BUFFER_OVERFLOW = 303; ERROR_BREAK = 304; ERROR_NOT_EXECUTABLE = 305; { * dos hunk definitions ********************************************************************* * } const 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 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 EXT_SYMB = 0; EXT_DEF = 1; EXT_ABS = 2; EXT_RES = 3; 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 ED_NAME = 1; ED_TYPE = 2; ED_SIZE = 3; ED_PROTECTION = 4; ED_DATE = 5; ED_COMMENT = 6; ED_OWNER = 7; type PExAllData = ^TExAllData; TExAllData = packed 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 PExAllControl = ^TExAllControl; TexAllControl = packed record eac_Entries : Cardinal; eac_LastKey : Cardinal; eac_MatchString: PAnsiChar; eac_MatchFunc : PHook; end; { * dos record definitions ********************************************************************* * } const REC_EXCLUSIVE = 0; REC_EXCLUSIVE_IMMED = 1; REC_SHARED = 2; REC_SHARED_IMMED = 3; type PRecordLock = ^TRecordLock; TRecordLock = packed record rec_FH : LongInt; rec_Offset: Cardinal; rec_Length: Cardinal; rec_Mode : Cardinal; end; { * dos tag definitions (V50) ********************************************************************* * } const 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); { *** V50 *** } SYS_FilterTags = (SYS_Dummy + 6); { * filters the tags passed down to CreateNewProc(), default: TRUE * } const 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); { *** V50 *** } NP_SeglistArray = (NP_Dummy + 26); NP_UserData = (NP_Dummy + 27); NP_StartupMsg = (NP_Dummy + 28); { * PMessage, ReplyMsg'd at exit * } NP_TaskMsgPort = (NP_Dummy + 29); { * ^PMsgPort, create MsgPort, automagic delete * } NP_CodeType = (NP_Dummy + 100); NP_PPC_Arg1 = (NP_Dummy + 101); NP_PPC_Arg2 = (NP_Dummy + 102); NP_PPC_Arg3 = (NP_Dummy + 103); NP_PPC_Arg4 = (NP_Dummy + 104); NP_PPC_Arg5 = (NP_Dummy + 105); NP_PPC_Arg6 = (NP_Dummy + 106); NP_PPC_Arg7 = (NP_Dummy + 107); NP_PPC_Arg8 = (NP_Dummy + 108); NP_PPCStackSize = (NP_Dummy + 109); const 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); { *** V50 *** } ADDS_Dummy = (TAG_USER + 3000); ADDS_Name = (ADDS_Dummy + 1); { * Segment name * } ADDS_Seglist = (ADDS_Dummy + 2); { * Seglist for this segment * } ADDS_Filename = (ADDS_Dummy + 3); { * Name of the file to load when needed. Ignored if Seglist is given. * } ADDS_Type = (ADDS_Dummy + 4); { * Segment type * } const FNDS_Dummy = (TAG_USER + 3100); FNDS_Name = (FNDS_Dummy + 1); { * Segment name * } FNDS_From = (FNDS_Dummy + 2); { * Segment to start from * } FNDS_System = (FNDS_Dummy + 3); { * Look for a system segment ? * } FNDS_Load = (FNDS_Dummy + 4); { * Load the seglist if needed ? (Default: TRUE) * } { * dos stdio definitions ********************************************************************* * } const BUF_LINE = 0; BUF_FULL = 1; BUF_NONE = 2; const ENDSTREAMCH = -1; { * dos env-var definitions ********************************************************************* * } type PLocalVar = ^TLocalVar; TLocalVar = packed record lv_Node : TNode; lv_Flags: Word; lv_Value: PAnsiChar; lv_Len : Cardinal; end; const LV_VAR = 0; LV_ALIAS = 1; const 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 PCSource = ^TCSource; TCSource = packed record CS_Buffer: PAnsiChar; CS_Length: LongInt; CS_CurChr: LongInt; end; type PRDArgs = ^TRDArgs; TRDArgs = packed record RDA_Source : TCSource; RDA_DAList : LongInt; RDA_Buffer : PAnsiChar; RDA_BufSiz : LongInt; RDA_ExtHelp: PAnsiChar; RDA_Flags : LongInt; end; const 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 MAX_TEMPLATE_ITEMS = 100; MAX_MULTIARGS = 128; { * dos filehandler definitions ********************************************************************* * } type PDosEnvec = ^TDosEnvec; TDosEnvec = packed record de_TableSize : Cardinal; de_SizeBlock : Cardinal; de_SecOrg : Cardinal; de_Surfaces : Cardinal; de_SectorPerBlock: Cardinal; de_BlocksPerTrack: Cardinal; de_Reserved : Cardinal; de_PreAlloc : Cardinal; de_Interleave : Cardinal; de_LowCyl : Cardinal; de_HighCyl : Cardinal; de_NumBuffers : Cardinal; de_BufMemType : Cardinal; de_MaxTransfer : Cardinal; de_Mask : Cardinal; de_BootPri : LongInt; de_DosType : Cardinal; de_Baud : Cardinal; de_Control : Cardinal; de_BootBlocks : Cardinal; end; const DE_TABLESIZE = 0; DE_SIZEBLOCK = 1; DE_SECORG = 2; DE_NUMHEADS = 3; DE_SECSPERBLK = 4; DE_BLKSPERTRACK = 5; DE_RESERVEDBLKS = 6; DE_PREFAC = 7; DE_INTERLEAVE = 8; DE_LOWCYL = 9; DE_UPPERCYL = 10; DE_NUMBUFFERS = 11; DE_MEMBUFTYPE = 12; DE_BUFMEMTYPE = 12; DE_MAXTRANSFER = 13; DE_MASK = 14; DE_BOOTPRI = 15; DE_DOSTYPE = 16; DE_BAUD = 17; DE_CONTROL = 18; DE_BOOTBLOCKS = 19; type PFileSysStartupMsg = ^TFileSysStartupMsg; TFileSysStartupMsg = packed record fssm_Unit : Cardinal; fssm_Device : LongInt; fssm_Environ: LongInt; fssm_Flags : Cardinal; end; type PDeviceNode = ^TDeviceNode; TDeviceNode = packed record dn_Next : LongInt; dn_Type : Cardinal; dn_Task : PMsgPort; dn_Lock : LongInt; dn_Handler : LongInt; dn_StackSize: Cardinal; dn_Priority : LongInt; dn_Startup : LongInt; dn_SegList : LongInt; dn_GlobalVec: LongInt; dn_Name : LongInt; end; { * dos notification definitions ********************************************************************* * } const NOTIFY_CLASS = $40000000; NOTIFY_CODE = $1234; type PNotifyRequest = ^TNotifyRequest; TNotifyRequest = packed record nr_Name : PAnsiChar; nr_FullName: PAnsiChar; nr_UserData: Cardinal; 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 Cardinal; nr_MsgCount: Cardinal; nr_Handler : PMsgPort; end; type PNotifyMessage = ^TNotifyMessage; TNotifyMessage = packed record nm_ExecMessage: TMessage; nm_Class : Cardinal; nm_Code : Word; nm_NReq : PNotifyRequest; nm_DoNotTouch : Cardinal; nm_DoNotTouch2: Cardinal; end; const NRB_SEND_MESSAGE = 0; NRB_SEND_SIGNAL = 1; NRB_WAIT_REPLY = 3; NRB_NOTIFY_INITIAL = 4; NRB_MAGIC = 31; const 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); const NR_HANDLER_FLAGS = $ffff0000; { * dos.library segtracker include ********************************************************************* * } const SEG_SEM = 'SegTracker'; type PSegSem = ^TSegSem; TSegSem = packed record seg_Semaphore: TSignalSemaphore; seg_Find : Procedure; { Name = seg_Find(REG(a0, ULONG Address), REG(a1, ULONG *SegNum), REG(a2, ULONG *Offset)) } seg_List : TMinList; end; type PSegArray = ^TSegArray; TSegArray = packed record seg_Address: Cardinal; seg_Size : Cardinal; end; type PSegNode = ^TSegNode; TSegNode = packed record seg_Node : TMinNode; seg_Name : PAnsiChar; seg_Array: Array[0..0] Of TSegArray; end;