fpc/rtl/morphos/doslibd.inc
Michael VAN CANNEYT 23411b36e0 * Char -> AnsiChar
2023-07-14 17:26:09 +02:00

1381 lines
31 KiB
PHP

{
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;