| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380 | {    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 Char;    fib_Protection  : LongInt;    fib_EntryType   : LongInt;    fib_Size        : LongInt;    fib_NumBlocks   : LongInt;    fib_Date        : TDateStamp;    fib_Comment     : Array[0..79] Of Char;    fib_OwnerUID    : Word;    fib_OwnerGID    : Word;    fib_Reserved    : Array[0..31] Of Char;  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     : PChar;    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: PChar;           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 Char;    { * 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 Char;          { * 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    : PChar;    ed_Type    : LongInt;    ed_Size    : Cardinal;    ed_Prot    : Cardinal;    ed_Days    : Cardinal;    ed_Mins    : Cardinal;    ed_Ticks   : Cardinal;    ed_Comment : PChar;    ed_OwnerUID: Word;    ed_OwnerGID: Word;  end;type  PExAllControl = ^TExAllControl;  TexAllControl = packed record    eac_Entries    : Cardinal;    eac_LastKey    : Cardinal;    eac_MatchString: PChar;    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: PChar;    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: PChar;    CS_Length: LongInt;    CS_CurChr: LongInt;  end;type  PRDArgs = ^TRDArgs;  TRDArgs = packed record    RDA_Source : TCSource;    RDA_DAList : LongInt;    RDA_Buffer : PChar;    RDA_BufSiz : LongInt;    RDA_ExtHelp: PChar;    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    : PChar;    nr_FullName: PChar;    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 : PChar;    seg_Array: Array[0..0] Of TSegArray;  end;
 |