doslibd.inc 31 KB

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