amigaguide.pas 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
  1. {
  2. This file is part of the Free Pascal run time library.
  3. A file in Amiga system run time library.
  4. Copyright (c) 1998-2003 by Nils Sjoholm
  5. member of the Amiga RTL development team.
  6. See the file COPYING.FPC, included in this distribution,
  7. for details about the copyright.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. **********************************************************************}
  12. {
  13. History:
  14. Added functions and procedures with array of const.
  15. For use with fpc 1.0.7. They are in systemvartags.
  16. 10 Nov 2002.
  17. Added the defines use_amiga_smartlink and
  18. use_auto_openlib. Implemented opening of
  19. the library.
  20. 13 Jan 2003.
  21. Update for AmigaOs 3.9.
  22. Added a const and a member to record tXRef;
  23. Changed startupcode for library.
  24. 26 Jan 2003.
  25. Changed cardinal to longword.
  26. 09 Feb 2003.
  27. [email protected]
  28. }
  29. {$I useamigasmartlink.inc}
  30. {$ifdef use_amiga_smartlink}
  31. {$smartlink on}
  32. {$endif use_amiga_smartlink}
  33. unit amigaguide;
  34. INTERFACE
  35. uses exec,amigados, intuition, utility;
  36. const
  37. APSH_TOOL_ID = 11000;
  38. StartupMsgID = (APSH_TOOL_ID+1) ; { Startup message }
  39. LoginToolID = (APSH_TOOL_ID+2) ; { Login a tool SIPC port }
  40. LogoutToolID = (APSH_TOOL_ID+3) ; { Logout a tool SIPC port }
  41. ShutdownMsgID = (APSH_TOOL_ID+4) ; { Shutdown message }
  42. ActivateToolID = (APSH_TOOL_ID+5) ; { Activate tool }
  43. DeactivateToolID = (APSH_TOOL_ID+6) ; { Deactivate tool }
  44. ActiveToolID = (APSH_TOOL_ID+7) ; { Tool Active }
  45. InactiveToolID = (APSH_TOOL_ID+8) ; { Tool Inactive }
  46. ToolStatusID = (APSH_TOOL_ID+9) ; { Status message }
  47. ToolCmdID = (APSH_TOOL_ID+10); { Tool command message }
  48. ToolCmdReplyID = (APSH_TOOL_ID+11); { Reply to tool command }
  49. ShutdownToolID = (APSH_TOOL_ID+12); { Shutdown tool }
  50. { Attributes accepted by GetAmigaGuideAttr() }
  51. AGA_Dummy = (TAG_USER) ;
  52. AGA_Path = (AGA_Dummy+1);
  53. AGA_XRefList = (AGA_Dummy+2);
  54. AGA_Activate = (AGA_Dummy+3);
  55. AGA_Context = (AGA_Dummy+4);
  56. AGA_HelpGroup = (AGA_Dummy+5);
  57. { (ULONG) Unique identifier }
  58. AGA_Reserved1 = (AGA_Dummy+6);
  59. AGA_Reserved2 = (AGA_Dummy+7);
  60. AGA_Reserved3 = (AGA_Dummy+8);
  61. AGA_ARexxPort = (AGA_Dummy+9);
  62. { (struct MsgPort *) Pointer to the ARexx message port (V40) }
  63. AGA_ARexxPortName = (AGA_Dummy+10);
  64. { (STRPTR) Used to specify the ARexx port name (V40) (not copied) }
  65. AGA_Secure = (AGA_Dummy+11);
  66. { (BOOL) Disable "ONOPEN", "ONCLOSE" and "LINK RX", "LINK RXS", "LINK SYSTEM" commands (V41) }
  67. Type
  68. AMIGAGUIDECONTEXT = Pointer;
  69. pAmigaGuideMsg = ^tAmigaGuideMsg;
  70. tAmigaGuideMsg = record
  71. agm_Msg : tMessage; { Embedded Exec message structure }
  72. agm_Type : ULONG; { Type of message }
  73. agm_Data : Pointer; { Pointer to message data }
  74. agm_DSize, { Size of message data }
  75. agm_DType, { Type of message data }
  76. agm_Pri_Ret, { Primary return value }
  77. agm_Sec_Ret : ULONG; { Secondary return value }
  78. agm_System1,
  79. agm_System2 : Pointer;
  80. end;
  81. { Allocation description structure }
  82. pNewAmigaGuide = ^tNewAmigaGuide;
  83. tNewAmigaGuide = record
  84. nag_Lock : BPTR; { Lock on the document directory }
  85. nag_Name : STRPTR; { Name of document file }
  86. nag_Screen : pScreen; { Screen to place windows within }
  87. nag_PubScreen, { Public screen name to open on }
  88. nag_HostPort, { Application's ARexx port name }
  89. nag_ClientPort, { Name to assign to the clients ARexx port }
  90. nag_BaseName : STRPTR; { Base name of the application }
  91. nag_Flags : ULONG; { Flags }
  92. nag_Context: Pointer; { NULL terminated context table }
  93. nag_Node : STRPTR; { Node to align on first (defaults to Main) }
  94. nag_Line : Longint; { Line to align on }
  95. nag_Extens : pTagItem; { Tag array extension }
  96. nag_Client : Pointer; { Private! MUST be NULL }
  97. END;
  98. CONST
  99. { public Client flags }
  100. HTF_LOAD_INDEX = 0; { Force load the index at init time }
  101. HTF_LOAD_ALL = 2; { Force load the entire database at init }
  102. HTF_CACHE_NODE = 3; { Cache each node as visited }
  103. HTF_CACHE_DB = 8; { Keep the buffers around UNTIL expunge }
  104. HTF_UNIQUE = 32768; { Unique ARexx port name }
  105. HTF_NOACTIVATE = 65536; { Don't activate window }
  106. HTFC_SYSGADS = $80000000;
  107. { Callback function ID's }
  108. HTH_OPEN = 0;
  109. HTH_CLOSE = 1;
  110. HTERR_NOT_ENOUGH_MEMORY = 100;
  111. HTERR_CANT_OPEN_DATABASE = 101;
  112. HTERR_CANT_FIND_NODE = 102;
  113. HTERR_CANT_OPEN_NODE = 103;
  114. HTERR_CANT_OPEN_WINDOW = 104;
  115. HTERR_INVALID_COMMAND = 105;
  116. HTERR_CANT_COMPLETE = 106;
  117. HTERR_PORT_CLOSED = 107;
  118. HTERR_CANT_CREATE_PORT = 108;
  119. HTERR_KEYWORD_NOT_FOUND = 113;
  120. Type
  121. { Cross reference node }
  122. pXRef = ^tXRef;
  123. tXRef = record
  124. xr_Node : tNode; { Embedded node }
  125. xr_Pad : WORD; { Padding }
  126. xr_DF : Pointer; { Document defined in }
  127. xr_File, { Name of document file }
  128. xr_Name : STRPTR; { Name of item }
  129. xr_Line : Longint; { Line defined at }
  130. xr_Reserved : array [0..1] of Ulong;
  131. END;
  132. CONST
  133. { Types of cross reference nodes }
  134. XR_GENERIC = 0;
  135. XR_FUNCTION = 1;
  136. XR_COMMAND = 2;
  137. XR_INCLUDE = 3;
  138. XR_MACRO = 4;
  139. XR_STRUCT = 5;
  140. XR_FIELD = 6;
  141. XR_TYPEDEF = 7;
  142. XR_DEFINE = 8;
  143. Type
  144. { Callback handle }
  145. pAmigaGuideHost = ^tAmigaGuideHost;
  146. tAmigaGuideHost = record
  147. agh_Dispatcher : tHook; { Dispatcher }
  148. agh_Reserved, { Must be 0 }
  149. agh_Flags,
  150. agh_UseCnt : ULONG; { Number of open nodes }
  151. agh_SystemData, { Reserved for system use }
  152. agh_UserData : Pointer; { Anything you want... }
  153. END;
  154. CONST
  155. { Methods }
  156. HM_FindNode = 1 ;
  157. HM_OpenNode = 2 ;
  158. HM_CloseNode = 3 ;
  159. HM_Expunge = 10; { Expunge DataBase }
  160. Type
  161. { HM_FindNode }
  162. popFindHost = ^topFindHost;
  163. topFindHost = record
  164. MethodID : ULONG;
  165. ofh_Attrs : pTagItem; { R: Additional attributes }
  166. ofh_Node, { R: Name of node }
  167. ofh_TOC, { W: Table of Contents }
  168. ofh_Title, { W: Title to give to the node }
  169. ofh_Next, { W: Next node to browse to }
  170. ofh_Prev : STRPTR; { W: Previous node to browse to }
  171. END;
  172. { HM_OpenNode, HM_CloseNode }
  173. popNodeIO = ^topNodeIO;
  174. topNodeIO = record
  175. MethodID : ULONG;
  176. onm_Attrs : pTagItem; { R: Additional attributes }
  177. onm_Node, { R: Node name AND arguments }
  178. onm_FileName, { W: File name buffer }
  179. onm_DocBuffer : STRPTR; { W: Node buffer }
  180. onm_BuffLen : ULONG; { W: Size of buffer }
  181. onm_Flags : ULONG; { RW: Control flags }
  182. END;
  183. CONST
  184. { onm_Flags }
  185. HTNF_KEEP = 0; { Don't flush this node UNTIL database is
  186. * closed. }
  187. HTNF_Reserved1 = 2 ; { Reserved for system use }
  188. HTNF_Reserved2 = 4 ; { Reserved for system use }
  189. HTNF_ASCII = 8 ; { Node is straight ASCII }
  190. HTNF_Reserved3 = 16; { Reserved for system use }
  191. HTNF_CLEAN = 32; { Remove the node from the database }
  192. HTNF_DONE = 64; { Done with node }
  193. { onm_Attrs }
  194. HTNA_Dummy = TAG_USER;
  195. HTNA_Screen = (TAG_USER + 1); { Screen that window resides in }
  196. HTNA_Pens = (TAG_USER + 2); { Pen array (from DrawInfo) }
  197. HTNA_Rectangle = (TAG_USER + 3); { Window box }
  198. HTNA_HelpGroup = (HTNA_Dummy+5); { (ULONG) unique identifier }
  199. Type
  200. { HM_Expunge }
  201. popExpungeNode = ^topExpungeNode;
  202. topExpungeNode = record
  203. MethodID : ULONG;
  204. oen_Attrs : pTagItem; { R: Additional attributes }
  205. END;
  206. VAR AmigaGuideBase : pLibrary;
  207. const
  208. AMIGAGUIDENAME : Pchar = 'amigaguide.library';
  209. FUNCTION AddAmigaGuideHostA(h : pHook; name : pCHAR; attrs : pTagItem) : POINTER;
  210. FUNCTION AmigaGuideSignal(cl : POINTER) : ULONG;
  211. PROCEDURE CloseAmigaGuide(cl : POINTER);
  212. PROCEDURE ExpungeXRef;
  213. FUNCTION GetAmigaGuideAttr(tag : ULONG; cl : POINTER; storage : POINTER) : LONGINT;
  214. FUNCTION GetAmigaGuideMsg(cl : POINTER) : pAmigaGuideMsg;
  215. FUNCTION GetAmigaGuideString(id : LONGINT) : pCHAR;
  216. FUNCTION LoadXRef(lock : LONGINT; name : pCHAR) : LONGINT;
  217. FUNCTION LockAmigaGuideBase(handle : POINTER) : LONGINT;
  218. FUNCTION OpenAmigaGuideA(nag : pNewAmigaGuide; taglist : pTagItem) : POINTER;
  219. FUNCTION OpenAmigaGuideAsyncA(nag : pNewAmigaGuide; attrs : pTagItem) : POINTER;
  220. FUNCTION RemoveAmigaGuideHostA(hh : POINTER; attrs : pTagItem) : LONGINT;
  221. PROCEDURE ReplyAmigaGuideMsg(amsg : pAmigaGuideMsg);
  222. FUNCTION SendAmigaGuideCmdA(cl : POINTER; cmd : pCHAR; attrs : pTagItem) : LONGINT;
  223. FUNCTION SendAmigaGuideContextA(cl : POINTER; attrs : pTagItem) : LONGINT;
  224. FUNCTION SetAmigaGuideAttrsA(cl : POINTER; attrs : pTagItem) : LONGINT;
  225. FUNCTION SetAmigaGuideContextA(cl : POINTER; id : ULONG; attrs : pTagItem) : LONGINT;
  226. PROCEDURE UnlockAmigaGuideBase(key : LONGINT);
  227. {Here we read how to compile this unit}
  228. {You can remove this include and use a define instead}
  229. {$I useautoopenlib.inc}
  230. {$ifdef use_init_openlib}
  231. procedure InitAMIGAGUIDELibrary;
  232. {$endif use_init_openlib}
  233. {This is a variable that knows how the unit is compiled}
  234. var
  235. AMIGAGUIDEIsCompiledHow : longint;
  236. IMPLEMENTATION
  237. {$ifndef dont_use_openlib}
  238. uses msgbox;
  239. {$endif dont_use_openlib}
  240. FUNCTION AddAmigaGuideHostA(h : pHook; name : pCHAR; attrs : pTagItem) : POINTER;
  241. BEGIN
  242. ASM
  243. MOVE.L A6,-(A7)
  244. MOVEA.L h,A0
  245. MOVE.L name,D0
  246. MOVEA.L attrs,A1
  247. MOVEA.L AmigaGuideBase,A6
  248. JSR -138(A6)
  249. MOVEA.L (A7)+,A6
  250. MOVE.L D0,@RESULT
  251. END;
  252. END;
  253. FUNCTION AmigaGuideSignal(cl : POINTER) : ULONG;
  254. BEGIN
  255. ASM
  256. MOVE.L A6,-(A7)
  257. MOVEA.L cl,A0
  258. MOVEA.L AmigaGuideBase,A6
  259. JSR -072(A6)
  260. MOVEA.L (A7)+,A6
  261. MOVE.L D0,@RESULT
  262. END;
  263. END;
  264. PROCEDURE CloseAmigaGuide(cl : POINTER);
  265. BEGIN
  266. ASM
  267. MOVE.L A6,-(A7)
  268. MOVEA.L cl,A0
  269. MOVEA.L AmigaGuideBase,A6
  270. JSR -066(A6)
  271. MOVEA.L (A7)+,A6
  272. END;
  273. END;
  274. PROCEDURE ExpungeXRef;
  275. BEGIN
  276. ASM
  277. MOVE.L A6,-(A7)
  278. MOVEA.L AmigaGuideBase,A6
  279. JSR -132(A6)
  280. MOVEA.L (A7)+,A6
  281. END;
  282. END;
  283. FUNCTION GetAmigaGuideAttr(tag : ULONG; cl : POINTER; storage : POINTER) : LONGINT;
  284. BEGIN
  285. ASM
  286. MOVE.L A6,-(A7)
  287. MOVE.L tag,D0
  288. MOVEA.L cl,A0
  289. MOVEA.L storage,A1
  290. MOVEA.L AmigaGuideBase,A6
  291. JSR -114(A6)
  292. MOVEA.L (A7)+,A6
  293. MOVE.L D0,@RESULT
  294. END;
  295. END;
  296. FUNCTION GetAmigaGuideMsg(cl : POINTER) : pAmigaGuideMsg;
  297. BEGIN
  298. ASM
  299. MOVE.L A6,-(A7)
  300. MOVEA.L cl,A0
  301. MOVEA.L AmigaGuideBase,A6
  302. JSR -078(A6)
  303. MOVEA.L (A7)+,A6
  304. MOVE.L D0,@RESULT
  305. END;
  306. END;
  307. FUNCTION GetAmigaGuideString(id : LONGINT) : pCHAR;
  308. BEGIN
  309. ASM
  310. MOVE.L A6,-(A7)
  311. MOVE.L id,D0
  312. MOVEA.L AmigaGuideBase,A6
  313. JSR -210(A6)
  314. MOVEA.L (A7)+,A6
  315. MOVE.L D0,@RESULT
  316. END;
  317. END;
  318. FUNCTION LoadXRef(lock : LONGINT; name : pCHAR) : LONGINT;
  319. BEGIN
  320. ASM
  321. MOVE.L A6,-(A7)
  322. MOVEA.L lock,A0
  323. MOVEA.L name,A1
  324. MOVEA.L AmigaGuideBase,A6
  325. JSR -126(A6)
  326. MOVEA.L (A7)+,A6
  327. MOVE.L D0,@RESULT
  328. END;
  329. END;
  330. FUNCTION LockAmigaGuideBase(handle : POINTER) : LONGINT;
  331. BEGIN
  332. ASM
  333. MOVE.L A6,-(A7)
  334. MOVEA.L handle,A0
  335. MOVEA.L AmigaGuideBase,A6
  336. JSR -036(A6)
  337. MOVEA.L (A7)+,A6
  338. MOVE.L D0,@RESULT
  339. END;
  340. END;
  341. FUNCTION OpenAmigaGuideA(nag : pNewAmigaGuide; taglist : pTagItem) : POINTER;
  342. BEGIN
  343. ASM
  344. MOVE.L A6,-(A7)
  345. MOVEA.L nag,A0
  346. MOVEA.L taglist,A1
  347. MOVEA.L AmigaGuideBase,A6
  348. JSR -054(A6)
  349. MOVEA.L (A7)+,A6
  350. MOVE.L D0,@RESULT
  351. END;
  352. END;
  353. FUNCTION OpenAmigaGuideAsyncA(nag : pNewAmigaGuide; attrs : pTagItem) : POINTER;
  354. BEGIN
  355. ASM
  356. MOVE.L A6,-(A7)
  357. MOVEA.L nag,A0
  358. MOVE.L attrs,D0
  359. MOVEA.L AmigaGuideBase,A6
  360. JSR -060(A6)
  361. MOVEA.L (A7)+,A6
  362. MOVE.L D0,@RESULT
  363. END;
  364. END;
  365. FUNCTION RemoveAmigaGuideHostA(hh : POINTER; attrs : pTagItem) : LONGINT;
  366. BEGIN
  367. ASM
  368. MOVE.L A6,-(A7)
  369. MOVEA.L hh,A0
  370. MOVEA.L attrs,A1
  371. MOVEA.L AmigaGuideBase,A6
  372. JSR -144(A6)
  373. MOVEA.L (A7)+,A6
  374. MOVE.L D0,@RESULT
  375. END;
  376. END;
  377. PROCEDURE ReplyAmigaGuideMsg(amsg : pAmigaGuideMsg);
  378. BEGIN
  379. ASM
  380. MOVE.L A6,-(A7)
  381. MOVEA.L amsg,A0
  382. MOVEA.L AmigaGuideBase,A6
  383. JSR -084(A6)
  384. MOVEA.L (A7)+,A6
  385. END;
  386. END;
  387. FUNCTION SendAmigaGuideCmdA(cl : POINTER; cmd : pCHAR; attrs : pTagItem) : LONGINT;
  388. BEGIN
  389. ASM
  390. MOVE.L A6,-(A7)
  391. MOVEA.L cl,A0
  392. MOVE.L cmd,D0
  393. MOVE.L attrs,D1
  394. MOVEA.L AmigaGuideBase,A6
  395. JSR -102(A6)
  396. MOVEA.L (A7)+,A6
  397. MOVE.L D0,@RESULT
  398. END;
  399. END;
  400. FUNCTION SendAmigaGuideContextA(cl : POINTER; attrs : pTagItem) : LONGINT;
  401. BEGIN
  402. ASM
  403. MOVE.L A6,-(A7)
  404. MOVEA.L cl,A0
  405. MOVE.L attrs,D0
  406. MOVEA.L AmigaGuideBase,A6
  407. JSR -096(A6)
  408. MOVEA.L (A7)+,A6
  409. MOVE.L D0,@RESULT
  410. END;
  411. END;
  412. FUNCTION SetAmigaGuideAttrsA(cl : POINTER; attrs : pTagItem) : LONGINT;
  413. BEGIN
  414. ASM
  415. MOVE.L A6,-(A7)
  416. MOVEA.L cl,A0
  417. MOVEA.L attrs,A1
  418. MOVEA.L AmigaGuideBase,A6
  419. JSR -108(A6)
  420. MOVEA.L (A7)+,A6
  421. MOVE.L D0,@RESULT
  422. END;
  423. END;
  424. FUNCTION SetAmigaGuideContextA(cl : POINTER; id : ULONG; attrs : pTagItem) : LONGINT;
  425. BEGIN
  426. ASM
  427. MOVE.L A6,-(A7)
  428. MOVEA.L cl,A0
  429. MOVE.L id,D0
  430. MOVE.L attrs,D1
  431. MOVEA.L AmigaGuideBase,A6
  432. JSR -090(A6)
  433. MOVEA.L (A7)+,A6
  434. MOVE.L D0,@RESULT
  435. END;
  436. END;
  437. PROCEDURE UnlockAmigaGuideBase(key : LONGINT);
  438. BEGIN
  439. ASM
  440. MOVE.L A6,-(A7)
  441. MOVE.L key,D0
  442. MOVEA.L AmigaGuideBase,A6
  443. JSR -042(A6)
  444. MOVEA.L (A7)+,A6
  445. END;
  446. END;
  447. const
  448. { Change VERSION and LIBVERSION to proper values }
  449. VERSION : string[2] = '0';
  450. LIBVERSION : longword = 0;
  451. {$ifdef use_init_openlib}
  452. {$Info Compiling initopening of amigaguide.library}
  453. {$Info don't forget to use InitAMIGAGUIDELibrary in the beginning of your program}
  454. var
  455. amigaguide_exit : Pointer;
  456. procedure CloseamigaguideLibrary;
  457. begin
  458. ExitProc := amigaguide_exit;
  459. if AmigaGuideBase <> nil then begin
  460. CloseLibrary(AmigaGuideBase);
  461. AmigaGuideBase := nil;
  462. end;
  463. end;
  464. procedure InitAMIGAGUIDELibrary;
  465. begin
  466. AmigaGuideBase := nil;
  467. AmigaGuideBase := OpenLibrary(AMIGAGUIDENAME,LIBVERSION);
  468. if AmigaGuideBase <> nil then begin
  469. amigaguide_exit := ExitProc;
  470. ExitProc := @CloseamigaguideLibrary;
  471. end else begin
  472. MessageBox('FPC Pascal Error',
  473. 'Can''t open amigaguide.library version ' + VERSION + #10 +
  474. 'Deallocating resources and closing down',
  475. 'Oops');
  476. halt(20);
  477. end;
  478. end;
  479. begin
  480. AMIGAGUIDEIsCompiledHow := 2;
  481. {$endif use_init_openlib}
  482. {$ifdef use_auto_openlib}
  483. {$Info Compiling autoopening of amigaguide.library}
  484. var
  485. amigaguide_exit : Pointer;
  486. procedure CloseamigaguideLibrary;
  487. begin
  488. ExitProc := amigaguide_exit;
  489. if AmigaGuideBase <> nil then begin
  490. CloseLibrary(AmigaGuideBase);
  491. AmigaGuideBase := nil;
  492. end;
  493. end;
  494. begin
  495. AmigaGuideBase := nil;
  496. AmigaGuideBase := OpenLibrary(AMIGAGUIDENAME,LIBVERSION);
  497. if AmigaGuideBase <> nil then begin
  498. amigaguide_exit := ExitProc;
  499. ExitProc := @CloseamigaguideLibrary;
  500. AMIGAGUIDEIsCompiledHow := 1;
  501. end else begin
  502. MessageBox('FPC Pascal Error',
  503. 'Can''t open amigaguide.library version ' + VERSION + #10 +
  504. 'Deallocating resources and closing down',
  505. 'Oops');
  506. halt(20);
  507. end;
  508. {$endif use_auto_openlib}
  509. {$ifdef dont_use_openlib}
  510. begin
  511. AMIGAGUIDEIsCompiledHow := 3;
  512. {$Warning No autoopening of amigaguide.library compiled}
  513. {$Warning Make sure you open amigaguide.library yourself}
  514. {$endif dont_use_openlib}
  515. END. (* UNIT AMIGAGUIDE *)