doslibd.inc 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380
  1. {
  2. This file is part of the Free Pascal run time library.
  3. dos definitions (V50) for MorphOS/PowerPC
  4. Copyright (c) 2002 The MorphOS Development Team, All Rights Reserved.
  5. Free Pascal conversion
  6. Copyright (c) 2004 Karoly Balogh for Genesi S.a.r.l. <www.genesi.lu>
  7. See the file COPYING.FPC, included in this distribution,
  8. for details about the copyright.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  12. **********************************************************************}
  13. { * dos global definitions (V50)
  14. *********************************************************************
  15. * }
  16. const
  17. DOSNAME = 'dos.library';
  18. const
  19. DOSTRUE = -1;
  20. DOSFALSE = 0;
  21. const
  22. MODE_OLDFILE = 1005;
  23. MODE_NEWFILE = 1006;
  24. MODE_READWRITE = 1004;
  25. const
  26. OFFSET_BEGINNING = -1;
  27. OFFSET_CURRENT = 0;
  28. OFFSET_END = 1;
  29. OFFSET_BEGINING = OFFSET_BEGINNING; { * Typo fix * }
  30. const
  31. BITSPERBYTE = 8;
  32. BYTESPERLONG = 4;
  33. BITSPERLONG = 32;
  34. _MAXINT = $7FFFFFFF;
  35. _MININT = $80000000;
  36. const
  37. SHARED_LOCK = -2;
  38. ACCESS_READ = -2;
  39. EXCLUSIVE_LOCK = -1;
  40. ACCESS_WRITE = -1;
  41. type
  42. PDateStamp = ^TDateStamp;
  43. TDateStamp = packed record
  44. ds_Days : LongInt;
  45. ds_Minute: LongInt;
  46. ds_Tick : LongInt;
  47. end;
  48. const
  49. TICKS_PER_SECOND = 50;
  50. type
  51. PFileInfoBlock = ^TFileInfoBlock;
  52. TFileInfoBlock = packed record
  53. fib_DiskKey : LongInt;
  54. fib_DirEntryType: LongInt;
  55. fib_FileName : Array[0..107] Of Char;
  56. fib_Protection : LongInt;
  57. fib_EntryType : LongInt;
  58. fib_Size : LongInt;
  59. fib_NumBlocks : LongInt;
  60. fib_Date : TDateStamp;
  61. fib_Comment : Array[0..79] Of Char;
  62. fib_OwnerUID : Word;
  63. fib_OwnerGID : Word;
  64. fib_Reserved : Array[0..31] Of Char;
  65. end;
  66. const
  67. FIBB_OTR_READ = 15;
  68. FIBB_OTR_WRITE = 14;
  69. FIBB_OTR_EXECUTE = 13;
  70. FIBB_OTR_DELETE = 12;
  71. FIBB_GRP_READ = 11;
  72. FIBB_GRP_WRITE = 10;
  73. FIBB_GRP_EXECUTE = 9;
  74. FIBB_GRP_DELETE = 8;
  75. FIBB_SCRIPT = 6;
  76. FIBB_PURE = 5;
  77. FIBB_ARCHIVE = 4;
  78. FIBB_READ = 3;
  79. FIBB_WRITE = 2;
  80. FIBB_EXECUTE = 1;
  81. FIBB_DELETE = 0;
  82. const
  83. FIBF_OTR_READ = (1 Shl FIBB_OTR_READ);
  84. FIBF_OTR_WRITE = (1 Shl FIBB_OTR_WRITE);
  85. FIBF_OTR_EXECUTE = (1 Shl FIBB_OTR_EXECUTE);
  86. FIBF_OTR_DELETE = (1 Shl FIBB_OTR_DELETE);
  87. FIBF_GRP_READ = (1 Shl FIBB_GRP_READ);
  88. FIBF_GRP_WRITE = (1 Shl FIBB_GRP_WRITE);
  89. FIBF_GRP_EXECUTE = (1 Shl FIBB_GRP_EXECUTE);
  90. FIBF_GRP_DELETE = (1 Shl FIBB_GRP_DELETE);
  91. FIBF_SCRIPT = (1 Shl FIBB_SCRIPT);
  92. FIBF_PURE = (1 Shl FIBB_PURE);
  93. FIBF_ARCHIVE = (1 Shl FIBB_ARCHIVE);
  94. FIBF_READ = (1 Shl FIBB_READ);
  95. FIBF_WRITE = (1 Shl FIBB_WRITE);
  96. FIBF_EXECUTE = (1 Shl FIBB_EXECUTE);
  97. FIBF_DELETE = (1 Shl FIBB_DELETE);
  98. const
  99. FAULT_MAX = 82;
  100. type
  101. BPTR = LongInt;
  102. BSTR = LongInt;
  103. type
  104. PInfoData = ^TInfoData;
  105. TInfoData = packed record
  106. id_NumSoftErrors: LongInt;
  107. id_UnitNumber : LongInt;
  108. id_DiskState : LongInt;
  109. id_NumBlocks : LongInt;
  110. id_NumBlocksUsed: LongInt;
  111. id_BytesPerBlock: LongInt;
  112. id_DiskType : LongInt;
  113. id_VolumeNode : LongInt; {BPTR}
  114. id_InUse : LongInt;
  115. end;
  116. const
  117. ID_WRITE_PROTECTED = 80;
  118. ID_VALIDATING = 81;
  119. ID_VALIDATED = 82;
  120. ID_NO_DISK_PRESENT = -1;
  121. ID_UNREADABLE_DISK = $42414400;
  122. ID_DOS_DISK = $444F5300;
  123. ID_FFS_DISK = $444F5301;
  124. ID_INTER_DOS_DISK = $444F5302;
  125. ID_INTER_FFS_DISK = $444F5303;
  126. ID_FASTDIR_DOS_DISK = $444F5304;
  127. ID_FASTDIR_FFS_DISK = $444F5305;
  128. ID_LNFS_DOS_DISK = $444F5306;
  129. ID_LNFS_FFS_DISK = $444F5307;
  130. ID_NOT_REALLY_DOS = $4E444F53;
  131. ID_KICKSTART_DISK = $4B49434B;
  132. ID_MSDOS_DISK = $4d534400;
  133. const
  134. ERROR_NO_FREE_STORE = 103;
  135. ERROR_TASK_TABLE_FULL = 105;
  136. ERROR_BAD_TEMPLATE = 114;
  137. ERROR_BAD_NUMBER = 115;
  138. ERROR_REQUIRED_ARG_MISSING = 116;
  139. ERROR_KEY_NEEDS_ARG = 117;
  140. ERROR_TOO_MANY_ARGS = 118;
  141. ERROR_UNMATCHED_QUOTES = 119;
  142. ERROR_LINE_TOO_LONG = 120;
  143. ERROR_FILE_NOT_OBJECT = 121;
  144. ERROR_INVALID_RESIDENT_LIBRARY = 122;
  145. ERROR_NO_DEFAULT_DIR = 201;
  146. ERROR_OBJECT_IN_USE = 202;
  147. ERROR_OBJECT_EXISTS = 203;
  148. ERROR_DIR_NOT_FOUND = 204;
  149. ERROR_OBJECT_NOT_FOUND = 205;
  150. ERROR_BAD_STREAM_NAME = 206;
  151. ERROR_OBJECT_TOO_LARGE = 207;
  152. ERROR_ACTION_NOT_KNOWN = 209;
  153. ERROR_INVALID_COMPONENT_NAME = 210;
  154. ERROR_INVALID_LOCK = 211;
  155. ERROR_OBJECT_WRONG_TYPE = 212;
  156. ERROR_DISK_NOT_VALIDATED = 213;
  157. ERROR_DISK_WRITE_PROTECTED = 214;
  158. ERROR_RENAME_ACROSS_DEVICES = 215;
  159. ERROR_DIRECTORY_NOT_EMPTY = 216;
  160. ERROR_TOO_MANY_LEVELS = 217;
  161. ERROR_DEVICE_NOT_MOUNTED = 218;
  162. ERROR_SEEK_ERROR = 219;
  163. ERROR_COMMENT_TOO_BIG = 220;
  164. ERROR_DISK_FULL = 221;
  165. ERROR_DELETE_PROTECTED = 222;
  166. ERROR_WRITE_PROTECTED = 223;
  167. ERROR_READ_PROTECTED = 224;
  168. ERROR_NOT_A_DOS_DISK = 225;
  169. ERROR_NO_DISK = 226;
  170. ERROR_NO_MORE_ENTRIES = 232;
  171. ERROR_IS_SOFT_LINK = 233;
  172. ERROR_OBJECT_LINKED = 234;
  173. ERROR_BAD_HUNK = 235;
  174. ERROR_NOT_IMPLEMENTED = 236;
  175. ERROR_RECORD_NOT_LOCKED = 240;
  176. ERROR_LOCK_COLLISION = 241;
  177. ERROR_LOCK_TIMEOUT = 242;
  178. ERROR_UNLOCK_ERROR = 243;
  179. const
  180. RETURN_OK = 0;
  181. RETURN_WARN = 5;
  182. RETURN_ERROR = 10;
  183. RETURN_FAIL = 20;
  184. const
  185. SIGBREAKB_CTRL_C = 12;
  186. SIGBREAKB_CTRL_D = 13;
  187. SIGBREAKB_CTRL_E = 14;
  188. SIGBREAKB_CTRL_F = 15;
  189. SIGBREAKF_CTRL_C = (1 Shl SIGBREAKB_CTRL_C);
  190. SIGBREAKF_CTRL_D = (1 Shl SIGBREAKB_CTRL_D);
  191. SIGBREAKF_CTRL_E = (1 Shl SIGBREAKB_CTRL_E);
  192. SIGBREAKF_CTRL_F = (1 Shl SIGBREAKB_CTRL_F);
  193. const
  194. LOCK_DIFFERENT = -1;
  195. LOCK_SAME = 0;
  196. LOCK_SAME_VOLUME = 1;
  197. LOCK_SAME_HANDLER = LOCK_SAME_VOLUME;
  198. const
  199. CHANGE_LOCK = 0;
  200. CHANGE_FH = 1;
  201. const
  202. LINK_HARD = 0;
  203. LINK_SOFT = 1;
  204. const
  205. ITEM_EQUAL = -2;
  206. ITEM_ERROR = -1;
  207. ITEM_NOTHING = 0;
  208. ITEM_UNQUOTED = 1;
  209. ITEM_QUOTED = 2;
  210. const
  211. DOS_FILEHANDLE = 0;
  212. DOS_EXALLCONTROL = 1;
  213. DOS_FIB = 2;
  214. DOS_STDPKT = 3;
  215. DOS_CLI = 4;
  216. DOS_RDARGS = 5;
  217. { * dos date/time definitions
  218. *********************************************************************
  219. * }
  220. type
  221. { * Required to avoid conflict with default types * }
  222. _PDateTime = ^_TDateTime;
  223. _TDateTime = packed record
  224. dat_Stamp : TDateStamp;
  225. dat_Format : Byte;
  226. dat_Flags : Byte;
  227. dat_StrDay : Pointer;
  228. dat_StrDate: Pointer;
  229. dat_StrTime: Pointer;
  230. end;
  231. const
  232. LEN_DATSTRING = 16;
  233. const
  234. DTB_SUBST = 0;
  235. DTF_SUBST = (1 Shl DTB_SUBST);
  236. DTB_FUTURE = 1;
  237. DTF_FUTURE = (1 Shl DTB_FUTURE);
  238. const
  239. FORMAT_DOS = 0;
  240. FORMAT_INT = 1;
  241. FORMAT_USA = 2;
  242. FORMAT_CDN = 3;
  243. FORMAT_MAX = FORMAT_CDN;
  244. FORMAT_DEF = 4;
  245. { * dos extended structures definitions
  246. *********************************************************************
  247. * }
  248. type
  249. PProcess = ^TProcess;
  250. TProcess = packed record
  251. pr_Task : TTask;
  252. pr_MsgPort : TMsgPort;
  253. pr_Pad : Word;
  254. pr_SegList : DWord; { BPTR }
  255. pr_StackSize : LongInt; { 68k stacksize! }
  256. pr_GlobVec : Pointer;
  257. pr_TaskNum : LongInt;
  258. pr_StackBase : DWord; { BPTR }
  259. pr_Result2 : LongInt;
  260. pr_CurrentDir : DWord; { BPTR }
  261. pr_CIS : DWord; { BPTR }
  262. pr_COS : DWord; { BPTR }
  263. pr_ConsoleTask : Pointer;
  264. pr_FileSystemTask: Pointer;
  265. pr_CLI : DWord; { BPTR }
  266. pr_ReturnAddr : Pointer;
  267. pr_PktWait : Pointer;
  268. pr_WindowPtr : Pointer;
  269. pr_HomeDir : DWord; { BPTR }
  270. pr_Flags : LongInt;
  271. pr_ExitCode : Pointer; { Procedure }
  272. pr_ExitData : LongInt;
  273. pr_Arguments : PChar;
  274. pr_LocalVars : TMinList;
  275. pr_ShellPrivate : DWord;
  276. pr_CES : DWord; { BPTR }
  277. end;
  278. const
  279. PRB_FREESEGLIST = 0;
  280. PRF_FREESEGLIST = (1 Shl PRB_FREESEGLIST);
  281. PRB_FREECURRDIR = 1;
  282. PRF_FREECURRDIR = (1 Shl PRB_FREECURRDIR);
  283. PRB_FREECLI = 2;
  284. PRF_FREECLI = (1 Shl PRB_FREECLI);
  285. PRB_CLOSEINPUT = 3;
  286. PRF_CLOSEINPUT = (1 Shl PRB_CLOSEINPUT);
  287. PRB_CLOSEOUTPUT = 4;
  288. PRF_CLOSEOUTPUT = (1 Shl PRB_CLOSEOUTPUT);
  289. PRB_FREEARGS = 5;
  290. PRF_FREEARGS = (1 Shl PRB_FREEARGS);
  291. type
  292. PFileHandle = ^TFileHandle;
  293. TFileHandle = packed record
  294. fh_Flags : DWord;
  295. fh_Interactive: LongInt;
  296. fh_Type : PMsgPort;
  297. fh_Buf : LongInt;
  298. fh_Pos : LongInt;
  299. fh_End : LongInt;
  300. fh_Func1 : LongInt;
  301. fh_Func2 : LongInt;
  302. fh_Func3 : LongInt;
  303. fh_Arg1 : LongInt;
  304. fh_Arg2 : LongInt;
  305. { *** V50 MorphOS *** }
  306. fh_BufSize : LongInt;
  307. fh_OrigBuf : LongInt;
  308. end;
  309. type
  310. PDOSPacket = ^TDOSPacket;
  311. TDOSPacket = packed record
  312. dp_Link: PMessage;
  313. dp_Port: PMsgPort;
  314. case Byte of
  315. 0 : ( dp_Action : Longint;
  316. dp_Status : Longint;
  317. dp_Status2: Longint;
  318. dp_BufAddr: Longint;
  319. );
  320. 1 : ( dp_Type: Longint;
  321. dp_Res1: Longint;
  322. dp_Res2: Longint;
  323. dp_Arg1: Longint;
  324. dp_Arg2: Longint;
  325. dp_Arg3: Longint;
  326. dp_Arg4: Longint;
  327. dp_Arg5: Longint;
  328. dp_Arg6: Longint;
  329. dp_Arg7: Longint;
  330. );
  331. end;
  332. type
  333. PStandardPacket = ^TStandardPacket;
  334. TStandardPacket = packed record
  335. sp_Msg: TMessage;
  336. sp_Pkt: TDOSPacket;
  337. end;
  338. const
  339. ACTION_NIL = 0;
  340. ACTION_STARTUP = 0;
  341. ACTION_GET_BLOCK = 2; { *** OBSOLETE *** }
  342. ACTION_SET_MAP = 4;
  343. ACTION_DIE = 5;
  344. ACTION_EVENT = 6;
  345. ACTION_CURRENT_VOLUME = 7;
  346. ACTION_LOCATE_OBJECT = 8;
  347. ACTION_RENAME_DISK = 9;
  348. ACTION_WRITE = 'W';
  349. ACTION_READ = 'R';
  350. ACTION_FREE_LOCK = 15;
  351. ACTION_DELETE_OBJECT = 16;
  352. ACTION_RENAME_OBJECT = 17;
  353. ACTION_MORE_CACHE = 18;
  354. ACTION_COPY_DIR = 19;
  355. ACTION_WAIT_CHAR = 20;
  356. ACTION_SET_PROTECT = 21;
  357. ACTION_CREATE_DIR = 22;
  358. ACTION_EXAMINE_OBJECT = 23;
  359. ACTION_EXAMINE_NEXT = 24;
  360. ACTION_DISK_INFO = 25;
  361. ACTION_INFO = 26;
  362. ACTION_FLUSH = 27;
  363. ACTION_SET_COMMENT = 28;
  364. ACTION_PARENT = 29;
  365. ACTION_TIMER = 30;
  366. ACTION_INHIBIT = 31;
  367. ACTION_DISK_TYPE = 32;
  368. ACTION_DISK_CHANGE = 33;
  369. ACTION_SET_DATE = 34;
  370. ACTION_SAME_LOCK = 40;
  371. ACTION_SCREEN_MODE = 994;
  372. ACTION_CHANGE_SIGNAL = 995;
  373. ACTION_READ_RETURN = 1001;
  374. ACTION_WRITE_RETURN = 1002;
  375. ACTION_SEEK = 1008;
  376. ACTION_FINDUPDATE = 1004;
  377. ACTION_FINDINPUT = 1005;
  378. ACTION_FINDOUTPUT = 1006;
  379. ACTION_END = 1007;
  380. ACTION_FORMAT = 1020;
  381. ACTION_MAKE_LINK = 1021;
  382. ACTION_SET_FILE_SIZE = 1022;
  383. ACTION_WRITE_PROTECT = 1023;
  384. ACTION_READ_LINK = 1024;
  385. ACTION_FH_FROM_LOCK = 1026;
  386. ACTION_IS_FILESYSTEM = 1027;
  387. ACTION_CHANGE_MODE = 1028;
  388. ACTION_COPY_DIR_FH = 1030;
  389. ACTION_PARENT_FH = 1031;
  390. ACTION_EXAMINE_ALL = 1033;
  391. ACTION_EXAMINE_FH = 1034;
  392. ACTION_EXAMINE_ALL_END = 1035;
  393. ACTION_SET_OWNER = 1036;
  394. ACTION_LOCK_RECORD = 2008;
  395. ACTION_FREE_RECORD = 2009;
  396. ACTION_ADD_NOTIFY = 4097;
  397. ACTION_REMOVE_NOTIFY = 4098;
  398. ACTION_SERIALIZE_DISK = 4200;
  399. ACTION_GET_DISK_FSSM = 4201;
  400. ACTION_FREE_DISK_FSSM = 4202;
  401. type
  402. PErrorString = ^TErrorString;
  403. TErrorString = packed record
  404. estr_Nums: Pointer; { ^LongInt }
  405. estr_Byte: Pointer; { ^Byte }
  406. end;
  407. type
  408. PRootNode = ^TRootNode;
  409. TRootNode = packed record
  410. rn_TaskArray : DWord; { BPTR }
  411. rn_ConsoleSegment : DWord; { BPTR }
  412. rn_Time : TDateStamp;
  413. rn_RestartSeg : LongInt;
  414. rn_Info : DWord; { BPTR }
  415. rn_FileHandlerSegment: DWord; { BPTR }
  416. rn_CliList : TMinList;
  417. rn_BootProc : PMsgPort;
  418. rn_ShellSegment : DWord; { BPTR }
  419. rn_Flags : LongInt;
  420. end;
  421. type
  422. PDOSLibrary = ^TDOSLibrary;
  423. TDOSLibrary = packed record
  424. dl_Lib : TLibrary;
  425. dl_Root : PRootNode;
  426. dl_GU : Pointer;
  427. dl_A2 : LongInt;
  428. dl_A5 : LongInt;
  429. dl_A6 : LongInt;
  430. dl_Errors : PErrorString;
  431. dl_TimeReq : PTimeRequest;
  432. dl_UtilityBase : PLibrary;
  433. dl_IntuitionBase: PLibrary;
  434. end;
  435. const
  436. RNB_WILDSTAR = 24;
  437. RNF_WILDSTAR = (1 Shl RNB_WILDSTAR);
  438. RNB_PRIVATE1 = 1;
  439. RNF_PRIVATE1 = (1 Shl RNB_PRIVATE1);
  440. type
  441. PCliProcList = ^TCliProcList;
  442. TCliProcList = packed record
  443. cpl_Node : TMinNode;
  444. cpl_First: LongInt;
  445. cpl_Array: Array[0..0] Of PMsgPort;
  446. end;
  447. type
  448. PDOSInfo = ^TDOSInfo;
  449. TDOSInfo = packed record
  450. case Byte of
  451. 0 : ( di_ResList: DWord; { BPTR }
  452. );
  453. 1 : ( di_McName : DWord; { BPTR }
  454. di_DevInfo : DWord; { BPTR }
  455. di_Devices : DWord; { BPTR }
  456. di_Handlers : DWord; { BPTR }
  457. di_NetHand : Pointer;
  458. di_DevLock : TSignalSemaphore;
  459. di_EntryLock : TSignalSemaphore;
  460. di_DeleteLock: TSignalSemaphore;
  461. );
  462. end;
  463. type
  464. PSegment = ^TSegment;
  465. TSegment = packed record
  466. seg_Next : DWord; { BPTR }
  467. seg_UC : LongInt;
  468. seg_Seg : DWord; { BPTR }
  469. seg_Name : Array[0..3] Of Byte;
  470. { * seg_Name continues * }
  471. end;
  472. const
  473. CMD_SYSTEM = -1;
  474. CMD_INTERNAL = -2;
  475. CMD_NOTLOADED = -998;
  476. CMD_DISABLED = -999;
  477. type
  478. PCommandLineInterface = ^TCommandLineInterface;
  479. TCommandLineInterface = packed record
  480. cli_Result2 : LongInt;
  481. cli_SetName : DWord; { BSTR }
  482. cli_CommandDir : DWord; { BPTR }
  483. cli_ReturnCode : LongInt;
  484. cli_CommandName : DWord; { BSTR }
  485. cli_FailLevel : LongInt;
  486. cli_Prompt : DWord; { BSTR }
  487. cli_StandardInput : DWord; { BPTR }
  488. cli_CurrentInput : DWord; { BPTR }
  489. cli_CommandFile : DWord; { BSTR }
  490. cli_Interactive : LongInt;
  491. cli_Background : LongInt;
  492. cli_CurrentOutput : DWord; { BPTR }
  493. cli_DefaultStack : LongInt;
  494. cli_StandardOutput: DWord; { BPTR }
  495. cli_Module : DWord; { BPTR }
  496. end;
  497. type
  498. PDeviceList = ^TDeviceList;
  499. TDeviceList = packed record
  500. dl_Next : DWord; { BPTR }
  501. dl_Type : LongInt;
  502. dl_Task : PMsgPort;
  503. dl_Lock : DWord; { BPTR }
  504. dl_VolumeDate: TDateStamp;
  505. dl_LockList : DWord; { BPTR }
  506. dl_DiskType : LongInt;
  507. dl_unused : LongInt;
  508. dl_Name : DWord; { BSTR }
  509. end;
  510. type
  511. PDevInfo = ^TDevInfo;
  512. TDevInfo = packed record
  513. dvi_Next : DWord; { BPTR }
  514. dvi_Type : LongInt;
  515. dvi_Task : Pointer;
  516. dvi_Lock : DWord; { BPTR }
  517. dvi_Handler : DWord; { BSTR }
  518. dvi_StackSize: LongInt;
  519. dvi_Priority : LongInt;
  520. dvi_Startup : LongInt;
  521. dvi_SegList : DWord; { BPTR }
  522. dvi_GlobVec : DWord; { BPTR }
  523. dvi_Name : DWord; { BSTR }
  524. end;
  525. type
  526. PAssignList = ^TAssignList;
  527. TAssignList = packed record
  528. al_Next: PAssignList;
  529. al_Lock: DWord; { BPTR }
  530. end;
  531. type
  532. PDOSList = ^TDOSList;
  533. TDOSList = packed record
  534. dol_Next: DWord; { BPTR }
  535. dol_Type: LongInt;
  536. dol_Task: PMsgPort;
  537. dol_Lock: DWord; { BPTR }
  538. case Byte of
  539. 0: ( dol_handler : record
  540. dol_Handler : DWord; { BSTR }
  541. dol_StackSize: LongInt;
  542. dol_Priority : LongInt;
  543. dol_Startup : DWord;
  544. dol_SegList : DWord; { BPTR }
  545. dol_GlobVec : DWord; { BPTR }
  546. end;
  547. );
  548. 1: ( dol_volume : record
  549. dol_VolumeDate: TDateStamp;
  550. dol_LockList : DWord; { BPTR }
  551. dol_DiskType : LongInt;
  552. end;
  553. );
  554. 2: ( dol_assign : record
  555. dol_AssignName: PChar;
  556. dol_List : PAssignList;
  557. end;
  558. );
  559. 3: ( dol_Misc: array[0..23] of Byte;
  560. dol_Name: DWord; { BPTR }
  561. );
  562. end;
  563. const
  564. DLT_DEVICE = 0;
  565. DLT_DIRECTORY = 1;
  566. DLT_VOLUME = 2;
  567. DLT_LATE = 3;
  568. DLT_NONBINDING = 4;
  569. DLT_PRIVATE = -1;
  570. type
  571. PDevProc = ^TDevProc;
  572. TDevProc = packed record
  573. dvp_Port : PMsgPort;
  574. dvp_Lock : DWord; { BPTR }
  575. dvp_Flags : DWord;
  576. dvp_DevNode: PDOSList;
  577. end;
  578. const
  579. DVPB_UNLOCK = 0;
  580. DVPF_UNLOCK = (1 Shl DVPB_UNLOCK);
  581. DVPB_ASSIGN = 1;
  582. DVPF_ASSIGN = (1 Shl DVPB_ASSIGN);
  583. const
  584. LDB_READ = 0;
  585. LDF_READ = (1 Shl LDB_READ);
  586. LDB_WRITE = 1;
  587. LDF_WRITE = (1 Shl LDB_WRITE);
  588. LDB_DEVICES = 2;
  589. LDF_DEVICES = (1 Shl LDB_DEVICES);
  590. LDB_VOLUMES = 3;
  591. LDF_VOLUMES = (1 Shl LDB_VOLUMES);
  592. LDB_ASSIGNS = 4;
  593. LDF_ASSIGNS = (1 Shl LDB_ASSIGNS);
  594. LDB_ENTRY = 5;
  595. LDF_ENTRY = (1 Shl LDB_ENTRY);
  596. LDB_DELETE = 6;
  597. LDF_DELETE = (1 Shl LDB_DELETE);
  598. LDF_ALL = (LDF_DEVICES Or LDF_VOLUMES Or LDF_ASSIGNS);
  599. type
  600. PFileLock = ^TFileLock;
  601. TFileLock = packed record
  602. fl_Link : DWord; { BPTR }
  603. fl_Key : LongInt;
  604. fl_Access: LongInt;
  605. fl_Task : PMsgPort;
  606. fl_Volume: DWord; { BPTR }
  607. end;
  608. const
  609. REPORT_STREAM = 0;
  610. REPORT_TASK = 1;
  611. REPORT_LOCK = 2;
  612. REPORT_VOLUME = 3;
  613. REPORT_INSERT = 4;
  614. const
  615. ABORT_DISK_ERROR = 296;
  616. ABORT_BUSY = 288;
  617. const
  618. RUN_EXECUTE = -1;
  619. RUN_SYSTEM = -2;
  620. RUN_SYSTEM_ASYNCH = -3;
  621. const
  622. ST_ROOT = 1;
  623. ST_USERDIR = 2;
  624. ST_SOFTLINK = 3;
  625. ST_LINKDIR = 4;
  626. ST_FILE = -3;
  627. ST_LINKFILE = -4;
  628. ST_PIPEFILE = -5;
  629. { * dos asl definitions
  630. *********************************************************************
  631. * }
  632. type
  633. PAChain = ^TAChain;
  634. TAChain = packed record
  635. an_Child : PAChain;
  636. an_Parent: PAChain;
  637. an_Lock : DWord; { BPTR }
  638. an_Info : TFileInfoBlock;
  639. an_Flags : ShortInt;
  640. an_String: Array[0..0] Of Char;
  641. { * an_String continues * }
  642. end;
  643. type
  644. PAnchorPath = ^TAnchorPath;
  645. TAnchorPath = packed record
  646. case Byte of
  647. 0 : ( ap_First: PAChain;
  648. ap_Last : PAChain;
  649. );
  650. 1 : ( ap_Base : PAChain;
  651. ap_Current : PAChain;
  652. ap_BreakBits : LongInt;
  653. ap_FoundBreak: LongInt;
  654. ap_Flags : ShortInt;
  655. ap_Reserved : ShortInt;
  656. ap_Strlen : SmallInt;
  657. ap_Info : TFileInfoBlock;
  658. ap_Buf : Array[0..0] of Char;
  659. { * an_Buf continues * }
  660. );
  661. end;
  662. const
  663. APB_DOWILD = 0;
  664. APF_DOWILD = (1 Shl APB_DOWILD);
  665. APB_ITSWILD = 1;
  666. APF_ITSWILD = (1 Shl APB_ITSWILD);
  667. APB_DODIR = 2;
  668. APF_DODIR = (1 Shl APB_DODIR);
  669. APB_DIDDIR = 3;
  670. APF_DIDDIR = (1 Shl APB_DIDDIR);
  671. APB_NOMEMERR = 4;
  672. APF_NOMEMERR = (1 Shl APB_NOMEMERR);
  673. APB_DODOT = 5;
  674. APF_DODOT = (1 Shl APB_DODOT);
  675. APB_DirChanged = 6;
  676. APF_DirChanged = (1 Shl APB_DirChanged);
  677. APB_FollowHLinks = 7;
  678. APF_FollowHLinks = (1 Shl APB_FollowHLinks);
  679. const
  680. APSB_EXTENDED = 15;
  681. APSF_EXTENDED = (1 Shl APSB_EXTENDED);
  682. APEB_DoMultiAssigns = 0;
  683. APEF_DoMultiAssigns = (1 Shl APEB_DoMultiAssigns);
  684. APEB_FutureExtension = 7;
  685. APEF_FutureExtension = (1 Shl APEB_FutureExtension);
  686. const
  687. DDB_PatternBit = 0;
  688. DDF_PatternBit = (1 Shl DDB_PatternBit);
  689. DDB_ExaminedBit = 1;
  690. DDF_ExaminedBit = (1 Shl DDB_ExaminedBit);
  691. DDB_Completed = 2;
  692. DDF_Completed = (1 Shl DDB_Completed);
  693. DDB_AllBit = 3;
  694. DDF_AllBit = (1 Shl DDB_AllBit);
  695. DDB_Single = 4;
  696. DDF_Single = (1 Shl DDB_Single);
  697. const
  698. P_ANY = $80;
  699. P_SINGLE = $81;
  700. P_ORSTART = $82;
  701. P_ORNEXT = $83;
  702. P_OREND = $84;
  703. P_NOT = $85;
  704. P_NOTEND = $86;
  705. P_NOTCLASS = $87;
  706. P_CLASS = $88;
  707. P_REPBEG = $89;
  708. P_REPEND = $8A;
  709. P_STOP = $8B;
  710. const
  711. COMPLEX_BIT = 1;
  712. EXAMINE_BIT = 2;
  713. const
  714. ERROR_BUFFER_OVERFLOW = 303;
  715. ERROR_BREAK = 304;
  716. ERROR_NOT_EXECUTABLE = 305;
  717. { * dos hunk definitions
  718. *********************************************************************
  719. * }
  720. const
  721. HUNK_UNIT = 999;
  722. HUNK_NAME = 1000;
  723. HUNK_CODE = 1001;
  724. HUNK_DATA = 1002;
  725. HUNK_BSS = 1003;
  726. HUNK_RELOC32 = 1004;
  727. HUNK_ABSRELOC32 = HUNK_RELOC32;
  728. HUNK_RELOC16 = 1005;
  729. HUNK_RELRELOC16 = HUNK_RELOC16;
  730. HUNK_RELOC8 = 1006;
  731. HUNK_RELRELOC8 = HUNK_RELOC8;
  732. HUNK_EXT = 1007;
  733. HUNK_SYMBOL = 1008;
  734. HUNK_DEBUG = 1009;
  735. HUNK_END = 1010;
  736. HUNK_HEADER = 1011;
  737. HUNK_OVERLAY = 1013;
  738. HUNK_BREAK = 1014;
  739. HUNK_DREL32 = 1015;
  740. HUNK_DREL16 = 1016;
  741. HUNK_DREL8 = 1017;
  742. HUNK_LIB = 1018;
  743. HUNK_INDEX = 1019;
  744. HUNK_RELOC32SHORT = 1020;
  745. HUNK_RELRELOC32 = 1021;
  746. HUNK_ABSRELOC16 = 1022;
  747. const
  748. HUNKB_ADVISORY = 29;
  749. HUNKB_CHIP = 30;
  750. HUNKB_FAST = 31;
  751. HUNKF_ADVISORY = (1 Shl HUNKB_ADVISORY);
  752. HUNKF_CHIP = (1 Shl HUNKB_CHIP);
  753. HUNKF_FAST = (1 Shl HUNKB_FAST);
  754. const
  755. EXT_SYMB = 0;
  756. EXT_DEF = 1;
  757. EXT_ABS = 2;
  758. EXT_RES = 3;
  759. EXT_REF32 = 129;
  760. EXT_ABSREF32 = EXT_REF32;
  761. EXT_COMMON = 130;
  762. EXT_ABSCOMMON = EXT_COMMON;
  763. EXT_REF16 = 131;
  764. EXT_RELREF16 = EXT_REF16;
  765. EXT_REF8 = 132;
  766. EXT_RELREF8 = EXT_REF8;
  767. EXT_DEXT32 = 133;
  768. EXT_DEXT16 = 134;
  769. EXT_DEXT8 = 135;
  770. EXT_RELREF32 = 136;
  771. EXT_RELCOMMON = 137;
  772. EXT_ABSREF16 = 138;
  773. EXT_ABSREF8 = 139;
  774. { * dos ExAll definitions
  775. *********************************************************************
  776. * }
  777. const
  778. ED_NAME = 1;
  779. ED_TYPE = 2;
  780. ED_SIZE = 3;
  781. ED_PROTECTION = 4;
  782. ED_DATE = 5;
  783. ED_COMMENT = 6;
  784. ED_OWNER = 7;
  785. type
  786. PExAllData = ^TExAllData;
  787. TExAllData = packed record
  788. ed_Next : PExAllData;
  789. ed_Name : PChar;
  790. ed_Type : LongInt;
  791. ed_Size : Cardinal;
  792. ed_Prot : Cardinal;
  793. ed_Days : Cardinal;
  794. ed_Mins : Cardinal;
  795. ed_Ticks : Cardinal;
  796. ed_Comment : PChar;
  797. ed_OwnerUID: Word;
  798. ed_OwnerGID: Word;
  799. end;
  800. type
  801. PExAllControl = ^TExAllControl;
  802. TexAllControl = packed record
  803. eac_Entries : Cardinal;
  804. eac_LastKey : Cardinal;
  805. eac_MatchString: PChar;
  806. eac_MatchFunc : PHook;
  807. end;
  808. { * dos record definitions
  809. *********************************************************************
  810. * }
  811. const
  812. REC_EXCLUSIVE = 0;
  813. REC_EXCLUSIVE_IMMED = 1;
  814. REC_SHARED = 2;
  815. REC_SHARED_IMMED = 3;
  816. type
  817. PRecordLock = ^TRecordLock;
  818. TRecordLock = packed record
  819. rec_FH : LongInt;
  820. rec_Offset: Cardinal;
  821. rec_Length: Cardinal;
  822. rec_Mode : Cardinal;
  823. end;
  824. { * dos tag definitions (V50)
  825. *********************************************************************
  826. * }
  827. const
  828. SYS_Dummy = (TAG_USER + 32);
  829. SYS_Input = (SYS_Dummy + 1);
  830. SYS_Output = (SYS_Dummy + 2);
  831. SYS_Asynch = (SYS_Dummy + 3);
  832. SYS_UserShell = (SYS_Dummy + 4);
  833. SYS_CustomShell = (SYS_Dummy + 5);
  834. { *** V50 *** }
  835. SYS_FilterTags = (SYS_Dummy + 6); { * filters the tags passed down to CreateNewProc(), default: TRUE * }
  836. const
  837. NP_Dummy = (TAG_USER + 1000);
  838. NP_Seglist = (NP_Dummy + 1);
  839. NP_FreeSeglist = (NP_Dummy + 2);
  840. NP_Entry = (NP_Dummy + 3);
  841. NP_Input = (NP_Dummy + 4);
  842. NP_Output = (NP_Dummy + 5);
  843. NP_CloseInput = (NP_Dummy + 6);
  844. NP_CloseOutput = (NP_Dummy + 7);
  845. NP_Error = (NP_Dummy + 8);
  846. NP_CloseError = (NP_Dummy + 9);
  847. NP_CurrentDir = (NP_Dummy + 10);
  848. NP_StackSize = (NP_Dummy + 11);
  849. NP_Name = (NP_Dummy + 12);
  850. NP_Priority = (NP_Dummy + 13);
  851. NP_ConsoleTask = (NP_Dummy + 14);
  852. NP_WindowPtr = (NP_Dummy + 15);
  853. NP_HomeDir = (NP_Dummy + 16);
  854. NP_CopyVars = (NP_Dummy + 17);
  855. NP_Cli = (NP_Dummy + 18);
  856. NP_Path = (NP_Dummy + 19);
  857. NP_CommandName = (NP_Dummy + 20);
  858. NP_Arguments = (NP_Dummy + 21);
  859. NP_NotifyOnDeath = (NP_Dummy + 22);
  860. NP_Synchronous = (NP_Dummy + 23);
  861. NP_ExitCode = (NP_Dummy + 24);
  862. NP_ExitData = (NP_Dummy + 25);
  863. { *** V50 *** }
  864. NP_SeglistArray = (NP_Dummy + 26);
  865. NP_UserData = (NP_Dummy + 27);
  866. NP_StartupMsg = (NP_Dummy + 28); { * PMessage, ReplyMsg'd at exit * }
  867. NP_TaskMsgPort = (NP_Dummy + 29); { * ^PMsgPort, create MsgPort, automagic delete * }
  868. NP_CodeType = (NP_Dummy + 100);
  869. NP_PPC_Arg1 = (NP_Dummy + 101);
  870. NP_PPC_Arg2 = (NP_Dummy + 102);
  871. NP_PPC_Arg3 = (NP_Dummy + 103);
  872. NP_PPC_Arg4 = (NP_Dummy + 104);
  873. NP_PPC_Arg5 = (NP_Dummy + 105);
  874. NP_PPC_Arg6 = (NP_Dummy + 106);
  875. NP_PPC_Arg7 = (NP_Dummy + 107);
  876. NP_PPC_Arg8 = (NP_Dummy + 108);
  877. NP_PPCStackSize = (NP_Dummy + 109);
  878. const
  879. ADO_Dummy = (TAG_USER + 2000);
  880. ADO_FH_Mode = (ADO_Dummy + 1);
  881. ADO_DirLen = (ADO_Dummy + 2);
  882. ADO_CommNameLen = (ADO_Dummy + 3);
  883. ADO_CommFileLen = (ADO_Dummy + 4);
  884. ADO_PromptLen = (ADO_Dummy + 5);
  885. { *** V50 *** }
  886. ADDS_Dummy = (TAG_USER + 3000);
  887. ADDS_Name = (ADDS_Dummy + 1); { * Segment name * }
  888. ADDS_Seglist = (ADDS_Dummy + 2); { * Seglist for this segment * }
  889. ADDS_Filename = (ADDS_Dummy + 3); { * Name of the file to load when needed. Ignored if Seglist is given. * }
  890. ADDS_Type = (ADDS_Dummy + 4); { * Segment type * }
  891. const
  892. FNDS_Dummy = (TAG_USER + 3100);
  893. FNDS_Name = (FNDS_Dummy + 1); { * Segment name * }
  894. FNDS_From = (FNDS_Dummy + 2); { * Segment to start from * }
  895. FNDS_System = (FNDS_Dummy + 3); { * Look for a system segment ? * }
  896. FNDS_Load = (FNDS_Dummy + 4); { * Load the seglist if needed ? (Default: TRUE) * }
  897. { * dos stdio definitions
  898. *********************************************************************
  899. * }
  900. const
  901. BUF_LINE = 0;
  902. BUF_FULL = 1;
  903. BUF_NONE = 2;
  904. const
  905. ENDSTREAMCH = -1;
  906. { * dos env-var definitions
  907. *********************************************************************
  908. * }
  909. type
  910. PLocalVar = ^TLocalVar;
  911. TLocalVar = packed record
  912. lv_Node : TNode;
  913. lv_Flags: Word;
  914. lv_Value: PChar;
  915. lv_Len : Cardinal;
  916. end;
  917. const
  918. LV_VAR = 0;
  919. LV_ALIAS = 1;
  920. const
  921. LVB_IGNORE = 7;
  922. LVF_IGNORE = (1 Shl LVB_IGNORE);
  923. GVB_GLOBAL_ONLY = 8;
  924. GVF_GLOBAL_ONLY = (1 Shl GVB_GLOBAL_ONLY);
  925. GVB_LOCAL_ONLY = 9;
  926. GVF_LOCAL_ONLY = (1 Shl GVB_LOCAL_ONLY);
  927. GVB_BINARY_VAR = 10;
  928. GVF_BINARY_VAR = (1 Shl GVB_BINARY_VAR);
  929. GVB_DONT_NULL_TERM = 11;
  930. GVF_DONT_NULL_TERM = (1 Shl GVB_DONT_NULL_TERM);
  931. GVB_SAVE_VAR = 12;
  932. GVF_SAVE_VAR = (1 Shl GVB_SAVE_VAR);
  933. { * dos ReadArgs definitions
  934. *********************************************************************
  935. * }
  936. type
  937. PCSource = ^TCSource;
  938. TCSource = packed record
  939. CS_Buffer: PChar;
  940. CS_Length: LongInt;
  941. CS_CurChr: LongInt;
  942. end;
  943. type
  944. PRDArgs = ^TRDArgs;
  945. TRDArgs = packed record
  946. RDA_Source : TCSource;
  947. RDA_DAList : LongInt;
  948. RDA_Buffer : PChar;
  949. RDA_BufSiz : LongInt;
  950. RDA_ExtHelp: PChar;
  951. RDA_Flags : LongInt;
  952. end;
  953. const
  954. RDAB_STDIN = 0;
  955. RDAF_STDIN = (1 Shl RDAB_STDIN);
  956. RDAB_NOALLOC = 1;
  957. RDAF_NOALLOC = (1 Shl RDAB_NOALLOC);
  958. RDAB_NOPROMPT = 2;
  959. RDAF_NOPROMPT = (1 Shl RDAB_NOPROMPT);
  960. const
  961. MAX_TEMPLATE_ITEMS = 100;
  962. MAX_MULTIARGS = 128;
  963. { * dos filehandler definitions
  964. *********************************************************************
  965. * }
  966. type
  967. PDosEnvec = ^TDosEnvec;
  968. TDosEnvec = packed record
  969. de_TableSize : Cardinal;
  970. de_SizeBlock : Cardinal;
  971. de_SecOrg : Cardinal;
  972. de_Surfaces : Cardinal;
  973. de_SectorPerBlock: Cardinal;
  974. de_BlocksPerTrack: Cardinal;
  975. de_Reserved : Cardinal;
  976. de_PreAlloc : Cardinal;
  977. de_Interleave : Cardinal;
  978. de_LowCyl : Cardinal;
  979. de_HighCyl : Cardinal;
  980. de_NumBuffers : Cardinal;
  981. de_BufMemType : Cardinal;
  982. de_MaxTransfer : Cardinal;
  983. de_Mask : Cardinal;
  984. de_BootPri : LongInt;
  985. de_DosType : Cardinal;
  986. de_Baud : Cardinal;
  987. de_Control : Cardinal;
  988. de_BootBlocks : Cardinal;
  989. end;
  990. const
  991. DE_TABLESIZE = 0;
  992. DE_SIZEBLOCK = 1;
  993. DE_SECORG = 2;
  994. DE_NUMHEADS = 3;
  995. DE_SECSPERBLK = 4;
  996. DE_BLKSPERTRACK = 5;
  997. DE_RESERVEDBLKS = 6;
  998. DE_PREFAC = 7;
  999. DE_INTERLEAVE = 8;
  1000. DE_LOWCYL = 9;
  1001. DE_UPPERCYL = 10;
  1002. DE_NUMBUFFERS = 11;
  1003. DE_MEMBUFTYPE = 12;
  1004. DE_BUFMEMTYPE = 12;
  1005. DE_MAXTRANSFER = 13;
  1006. DE_MASK = 14;
  1007. DE_BOOTPRI = 15;
  1008. DE_DOSTYPE = 16;
  1009. DE_BAUD = 17;
  1010. DE_CONTROL = 18;
  1011. DE_BOOTBLOCKS = 19;
  1012. type
  1013. PFileSysStartupMsg = ^TFileSysStartupMsg;
  1014. TFileSysStartupMsg = packed record
  1015. fssm_Unit : Cardinal;
  1016. fssm_Device : LongInt;
  1017. fssm_Environ: LongInt;
  1018. fssm_Flags : Cardinal;
  1019. end;
  1020. type
  1021. PDeviceNode = ^TDeviceNode;
  1022. TDeviceNode = packed record
  1023. dn_Next : LongInt;
  1024. dn_Type : Cardinal;
  1025. dn_Task : PMsgPort;
  1026. dn_Lock : LongInt;
  1027. dn_Handler : LongInt;
  1028. dn_StackSize: Cardinal;
  1029. dn_Priority : LongInt;
  1030. dn_Startup : LongInt;
  1031. dn_SegList : LongInt;
  1032. dn_GlobalVec: LongInt;
  1033. dn_Name : LongInt;
  1034. end;
  1035. { * dos notification definitions
  1036. *********************************************************************
  1037. * }
  1038. const
  1039. NOTIFY_CLASS = $40000000;
  1040. NOTIFY_CODE = $1234;
  1041. type
  1042. PNotifyRequest = ^TNotifyRequest;
  1043. TNotifyRequest = packed record
  1044. nr_Name : PChar;
  1045. nr_FullName: PChar;
  1046. nr_UserData: Cardinal;
  1047. nr_Flags : Cardinal;
  1048. nr_stuff : record
  1049. case Byte of
  1050. 0 : ( nr_Msg : record
  1051. nr_Port: PMsgPort;
  1052. end );
  1053. 1 : ( nr_Signal : record
  1054. nr_Task : PTask;
  1055. nr_SignalNum: Byte;
  1056. nr_pad : Array[0..2] Of Byte;
  1057. end );
  1058. end;
  1059. nr_Reserved: Array[0..3] Of Cardinal;
  1060. nr_MsgCount: Cardinal;
  1061. nr_Handler : PMsgPort;
  1062. end;
  1063. type
  1064. PNotifyMessage = ^TNotifyMessage;
  1065. TNotifyMessage = packed record
  1066. nm_ExecMessage: TMessage;
  1067. nm_Class : Cardinal;
  1068. nm_Code : Word;
  1069. nm_NReq : PNotifyRequest;
  1070. nm_DoNotTouch : Cardinal;
  1071. nm_DoNotTouch2: Cardinal;
  1072. end;
  1073. const
  1074. NRB_SEND_MESSAGE = 0;
  1075. NRB_SEND_SIGNAL = 1;
  1076. NRB_WAIT_REPLY = 3;
  1077. NRB_NOTIFY_INITIAL = 4;
  1078. NRB_MAGIC = 31;
  1079. const
  1080. NRF_SEND_MESSAGE = (1 Shl NRB_SEND_MESSAGE);
  1081. NRF_SEND_SIGNAL = (1 Shl NRB_SEND_SIGNAL);
  1082. NRF_WAIT_REPLY = (1 Shl NRB_WAIT_REPLY);
  1083. NRF_NOTIFY_INITIAL = (1 Shl NRB_NOTIFY_INITIAL);
  1084. NRF_MAGIC = (1 Shl NRB_MAGIC);
  1085. const
  1086. NR_HANDLER_FLAGS = $ffff0000;
  1087. { * dos.library segtracker include
  1088. *********************************************************************
  1089. * }
  1090. const
  1091. SEG_SEM = 'SegTracker';
  1092. type
  1093. PSegSem = ^TSegSem;
  1094. TSegSem = packed record
  1095. seg_Semaphore: TSignalSemaphore;
  1096. seg_Find : Procedure; { Name = seg_Find(REG(a0, ULONG Address), REG(a1, ULONG *SegNum), REG(a2, ULONG *Offset)) }
  1097. seg_List : TMinList;
  1098. end;
  1099. type
  1100. PSegArray = ^TSegArray;
  1101. TSegArray = packed record
  1102. seg_Address: Cardinal;
  1103. seg_Size : Cardinal;
  1104. end;
  1105. type
  1106. PSegNode = ^TSegNode;
  1107. TSegNode = packed record
  1108. seg_Node : TMinNode;
  1109. seg_Name : PChar;
  1110. seg_Array: Array[0..0] Of TSegArray;
  1111. end;