exec.pp 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586
  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) 1999-2000 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. UNIT EXEC;
  13. INTERFACE
  14. {$I exec.inc}
  15. PROCEDURE AbortIO(ioRequest : pIORequest);
  16. PROCEDURE AddDevice(device : pDevice);
  17. PROCEDURE AddHead(list : pList; node : pNode);
  18. PROCEDURE AddIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  19. PROCEDURE AddLibrary(lib : pLibrary);
  20. PROCEDURE AddMemHandler(memhand : pInterrupt);
  21. PROCEDURE AddMemList(size : ULONG; attributes : ULONG; pri : LONGINT; base : POINTER; name : pCHAR);
  22. PROCEDURE AddPort(port : pMsgPort);
  23. PROCEDURE AddResource(resource : POINTER);
  24. PROCEDURE AddSemaphore(sigSem : pSignalSemaphore);
  25. PROCEDURE AddTail(list : pList; node : pNode);
  26. FUNCTION AddTask(task : pTask; initPC : POINTER; finalPC : POINTER) : POINTER;
  27. PROCEDURE Alert(alertNum : ULONG);
  28. FUNCTION AllocAbs(byteSize : ULONG; location : POINTER) : POINTER;
  29. FUNCTION Allocate(freeList : pMemHeader; byteSize : ULONG) : POINTER;
  30. FUNCTION AllocEntry(entry : pMemList) : pMemList;
  31. FUNCTION AllocMem(byteSize : ULONG; requirements : ULONG) : POINTER;
  32. FUNCTION AllocPooled(poolHeader : POINTER; memSize : ULONG) : POINTER;
  33. FUNCTION AllocSignal(signalNum : LONGINT) : SHORTINT;
  34. FUNCTION AllocTrap(trapNum : LONGINT) : LONGINT;
  35. FUNCTION AllocVec(byteSize : ULONG; requirements : ULONG) : POINTER;
  36. FUNCTION AttemptSemaphore(sigSem : pSignalSemaphore) : BOOLEAN;
  37. FUNCTION AttemptSemaphoreShared(sigSem : pSignalSemaphore) : ULONG;
  38. FUNCTION AvailMem(requirements : ULONG) : ULONG;
  39. PROCEDURE CacheClearE(address : POINTER; length : ULONG; caches : ULONG);
  40. PROCEDURE CacheClearU;
  41. FUNCTION CacheControl(cacheBits : ULONG; cacheMask : ULONG) : ULONG;
  42. PROCEDURE CachePostDMA(address : POINTER; VAR length : ULONG; flags : ULONG);
  43. FUNCTION CachePreDMA(address : POINTER; VAR length : ULONG; flags : ULONG) : POINTER;
  44. PROCEDURE Cause(interrupt : pInterrupt);
  45. FUNCTION CheckIO(ioRequest : pIORequest) : pIORequest;
  46. PROCEDURE ChildFree(tid : POINTER);
  47. PROCEDURE ChildOrphan(tid : POINTER);
  48. PROCEDURE ChildStatus(tid : POINTER);
  49. PROCEDURE ChildWait(tid : POINTER);
  50. PROCEDURE CloseDevice(ioRequest : pIORequest);
  51. PROCEDURE CloseLibrary(lib : pLibrary);
  52. PROCEDURE ColdReboot;
  53. PROCEDURE CopyMem(source : POINTER; dest : POINTER; size : ULONG);
  54. PROCEDURE CopyMemQuick(source : POINTER; dest : POINTER; size : ULONG);
  55. FUNCTION CreateIORequest(port : pMsgPort; size : ULONG) : POINTER;
  56. FUNCTION CreateMsgPort : pMsgPort;
  57. FUNCTION CreatePool(requirements : ULONG; puddleSize : ULONG; threshSize : ULONG) : POINTER;
  58. PROCEDURE Deallocate(freeList : pMemHeader; memoryBlock : POINTER; byteSize : ULONG);
  59. PROCEDURE Debug(flags : ULONG);
  60. PROCEDURE DeleteIORequest(iorequest : POINTER);
  61. PROCEDURE DeleteMsgPort(port : pMsgPort);
  62. PROCEDURE DeletePool(poolHeader : POINTER);
  63. PROCEDURE Disable;
  64. FUNCTION DoIO(ioRequest : pIORequest) : SHORTINT;
  65. PROCEDURE Enable;
  66. PROCEDURE Enqueue(list : pList; node : pNode);
  67. PROCEDURE ExecFreeMem(memoryBlock : POINTER; byteSize : ULONG);
  68. PROCEDURE ExecInsert(list : pList; node : pNode; pred : pNode);
  69. FUNCTION FindName(list : pList; name : pCHAR) : pNode;
  70. FUNCTION FindPort(name : pCHAR) : pMsgPort;
  71. FUNCTION FindResident(name : pCHAR) : pResident;
  72. FUNCTION FindSemaphore(sigSem : pCHAR) : pSignalSemaphore;
  73. FUNCTION FindTask(name : pCHAR) : pTask;
  74. PROCEDURE Forbid;
  75. PROCEDURE FreeEntry(entry : pMemList);
  76. PROCEDURE FreePooled(poolHeader : POINTER; memory : POINTER; memSize : ULONG);
  77. PROCEDURE FreeSignal(signalNum : LONGINT);
  78. PROCEDURE FreeTrap(trapNum : LONGINT);
  79. PROCEDURE FreeVec(memoryBlock : POINTER);
  80. FUNCTION GetCC : ULONG;
  81. FUNCTION GetMsg(port : pMsgPort) : pMessage;
  82. PROCEDURE InitCode(startClass : ULONG; version : ULONG);
  83. FUNCTION InitResident(resident : pResident; segList : ULONG) : POINTER;
  84. PROCEDURE InitSemaphore(sigSem : pSignalSemaphore);
  85. PROCEDURE InitStruct(initTable : POINTER; memory : POINTER; size : ULONG);
  86. PROCEDURE MakeFunctions(target : POINTER; functionArray : POINTER; funcDispBase : ULONG);
  87. FUNCTION MakeLibrary(funcInit : POINTER; structInit : POINTER; libInit : tPROCEDURE; dataSize : ULONG; segList : ULONG) : pLibrary;
  88. FUNCTION ObtainQuickVector(interruptCode : POINTER) : ULONG;
  89. PROCEDURE ObtainSemaphore(sigSem : pSignalSemaphore);
  90. PROCEDURE ObtainSemaphoreList(sigSem : pList);
  91. PROCEDURE ObtainSemaphoreShared(sigSem : pSignalSemaphore);
  92. FUNCTION OldOpenLibrary(libName : pCHAR) : pLibrary;
  93. FUNCTION OpenDevice(devName : pCHAR; unite : ULONG; ioRequest : pIORequest; flags : ULONG) : SHORTINT;
  94. FUNCTION OpenLibrary(libName : pCHAR; version : ULONG) : pLibrary;
  95. FUNCTION OpenResource(resName : pCHAR) : POINTER;
  96. PROCEDURE Permit;
  97. FUNCTION Procure(sigSem : pSignalSemaphore; bidMsg : pSemaphoreMessage) : BOOLEAN;
  98. PROCEDURE PutMsg(port : pMsgPort; message : pMessage);
  99. PROCEDURE RawDoFmt(formatString : pCHAR; dataStream : POINTER; putChProc : tPROCEDURE; putChData : POINTER);
  100. PROCEDURE ReleaseSemaphore(sigSem : pSignalSemaphore);
  101. PROCEDURE ReleaseSemaphoreList(sigSem : pList);
  102. PROCEDURE RemDevice(device : pDevice);
  103. FUNCTION RemHead(list : pList) : pNode;
  104. PROCEDURE RemIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  105. PROCEDURE RemLibrary(lib : pLibrary);
  106. PROCEDURE RemMemHandler(memhand : pInterrupt);
  107. PROCEDURE Remove(node : pNode);
  108. PROCEDURE RemPort(port : pMsgPort);
  109. PROCEDURE RemResource(resource : POINTER);
  110. PROCEDURE RemSemaphore(sigSem : pSignalSemaphore);
  111. FUNCTION RemTail(list : pList) : pNode;
  112. PROCEDURE RemTask(task : pTask);
  113. PROCEDURE ReplyMsg(message : pMessage);
  114. PROCEDURE SendIO(ioRequest : pIORequest);
  115. FUNCTION SetExcept(newSignals : ULONG; signalSet : ULONG) : ULONG;
  116. FUNCTION SetFunction(lib : pLibrary; funcOffset : LONGINT; newFunction : tPROCEDURE) : POINTER;
  117. FUNCTION SetIntVector(intNumber : LONGINT; interrupt : pInterrupt) : pInterrupt;
  118. FUNCTION SetSignal(newSignals : ULONG; signalSet : ULONG) : ULONG;
  119. FUNCTION SetSR(newSR : ULONG; mask : ULONG) : ULONG;
  120. FUNCTION SetTaskPri(task : pTask; priority : LONGINT) : SHORTINT;
  121. PROCEDURE Signal(task : pTask; signalSet : ULONG);
  122. PROCEDURE StackSwap(newStack : pStackSwapStruct);
  123. PROCEDURE SumKickData;
  124. PROCEDURE SumLibrary(lib : pLibrary);
  125. FUNCTION SuperState : POINTER;
  126. FUNCTION Supervisor(userFunction : tPROCEDURE) : ULONG;
  127. FUNCTION TypeOfMem(address : POINTER) : ULONG;
  128. PROCEDURE UserState(sysStack : POINTER);
  129. PROCEDURE Vacate(sigSem : pSignalSemaphore; bidMsg : pSemaphoreMessage);
  130. FUNCTION Wait(signalSet : ULONG) : ULONG;
  131. FUNCTION WaitIO(ioRequest : pIORequest) : SHORTINT;
  132. FUNCTION WaitPort(port : pMsgPort) : pMessage;
  133. IMPLEMENTATION
  134. PROCEDURE AbortIO(ioRequest : pIORequest);
  135. BEGIN
  136. ASM
  137. MOVE.L A6,-(A7)
  138. MOVEA.L ioRequest,A1
  139. MOVEA.L _ExecBase,A6
  140. JSR -480(A6)
  141. MOVEA.L (A7)+,A6
  142. END;
  143. END;
  144. PROCEDURE AddDevice(device : pDevice);
  145. BEGIN
  146. ASM
  147. MOVE.L A6,-(A7)
  148. MOVEA.L device,A1
  149. MOVEA.L _ExecBase,A6
  150. JSR -432(A6)
  151. MOVEA.L (A7)+,A6
  152. END;
  153. END;
  154. PROCEDURE AddHead(list : pList; node : pNode);
  155. BEGIN
  156. ASM
  157. MOVE.L A6,-(A7)
  158. MOVEA.L list,A0
  159. MOVEA.L node,A1
  160. MOVEA.L _ExecBase,A6
  161. JSR -240(A6)
  162. MOVEA.L (A7)+,A6
  163. END;
  164. END;
  165. PROCEDURE AddIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  166. BEGIN
  167. ASM
  168. MOVE.L A6,-(A7)
  169. MOVE.L intNumber,D0
  170. MOVEA.L interrupt,A1
  171. MOVEA.L _ExecBase,A6
  172. JSR -168(A6)
  173. MOVEA.L (A7)+,A6
  174. END;
  175. END;
  176. PROCEDURE AddLibrary(lib : pLibrary);
  177. BEGIN
  178. ASM
  179. MOVE.L A6,-(A7)
  180. MOVEA.L lib,A1
  181. MOVEA.L _ExecBase,A6
  182. JSR -396(A6)
  183. MOVEA.L (A7)+,A6
  184. END;
  185. END;
  186. PROCEDURE AddMemHandler(memhand : pInterrupt);
  187. BEGIN
  188. ASM
  189. MOVE.L A6,-(A7)
  190. MOVEA.L memhand,A1
  191. MOVEA.L _ExecBase,A6
  192. JSR -774(A6)
  193. MOVEA.L (A7)+,A6
  194. END;
  195. END;
  196. PROCEDURE AddMemList(size : ULONG; attributes : ULONG; pri : LONGINT; base : POINTER; name : pCHAR);
  197. BEGIN
  198. ASM
  199. MOVE.L A6,-(A7)
  200. MOVE.L size,D0
  201. MOVE.L attributes,D1
  202. MOVE.L pri,D2
  203. MOVEA.L base,A0
  204. MOVEA.L name,A1
  205. MOVEA.L _ExecBase,A6
  206. JSR -618(A6)
  207. MOVEA.L (A7)+,A6
  208. END;
  209. END;
  210. PROCEDURE AddPort(port : pMsgPort);
  211. BEGIN
  212. ASM
  213. MOVE.L A6,-(A7)
  214. MOVEA.L port,A1
  215. MOVEA.L _ExecBase,A6
  216. JSR -354(A6)
  217. MOVEA.L (A7)+,A6
  218. END;
  219. END;
  220. PROCEDURE AddResource(resource : POINTER);
  221. BEGIN
  222. ASM
  223. MOVE.L A6,-(A7)
  224. MOVEA.L resource,A1
  225. MOVEA.L _ExecBase,A6
  226. JSR -486(A6)
  227. MOVEA.L (A7)+,A6
  228. END;
  229. END;
  230. PROCEDURE AddSemaphore(sigSem : pSignalSemaphore);
  231. BEGIN
  232. ASM
  233. MOVE.L A6,-(A7)
  234. MOVEA.L sigSem,A1
  235. MOVEA.L _ExecBase,A6
  236. JSR -600(A6)
  237. MOVEA.L (A7)+,A6
  238. END;
  239. END;
  240. PROCEDURE AddTail(list : pList; node : pNode);
  241. BEGIN
  242. ASM
  243. MOVE.L A6,-(A7)
  244. MOVEA.L list,A0
  245. MOVEA.L node,A1
  246. MOVEA.L _ExecBase,A6
  247. JSR -246(A6)
  248. MOVEA.L (A7)+,A6
  249. END;
  250. END;
  251. FUNCTION AddTask(task : pTask; initPC : POINTER; finalPC : POINTER) : POINTER;
  252. BEGIN
  253. ASM
  254. MOVE.L A6,-(A7)
  255. MOVEA.L task,A1
  256. MOVEA.L initPC,A2
  257. MOVEA.L finalPC,A3
  258. MOVEA.L _ExecBase,A6
  259. JSR -282(A6)
  260. MOVEA.L (A7)+,A6
  261. MOVE.L D0,@RESULT
  262. END;
  263. END;
  264. PROCEDURE Alert(alertNum : ULONG);
  265. BEGIN
  266. ASM
  267. MOVE.L A6,-(A7)
  268. MOVE.L alertNum,D7
  269. MOVEA.L _ExecBase,A6
  270. JSR -108(A6)
  271. MOVEA.L (A7)+,A6
  272. END;
  273. END;
  274. FUNCTION AllocAbs(byteSize : ULONG; location : POINTER) : POINTER;
  275. BEGIN
  276. ASM
  277. MOVE.L A6,-(A7)
  278. MOVE.L byteSize,D0
  279. MOVEA.L location,A1
  280. MOVEA.L _ExecBase,A6
  281. JSR -204(A6)
  282. MOVEA.L (A7)+,A6
  283. MOVE.L D0,@RESULT
  284. END;
  285. END;
  286. FUNCTION Allocate(freeList : pMemHeader; byteSize : ULONG) : POINTER;
  287. BEGIN
  288. ASM
  289. MOVE.L A6,-(A7)
  290. MOVEA.L freeList,A0
  291. MOVE.L byteSize,D0
  292. MOVEA.L _ExecBase,A6
  293. JSR -186(A6)
  294. MOVEA.L (A7)+,A6
  295. MOVE.L D0,@RESULT
  296. END;
  297. END;
  298. FUNCTION AllocEntry(entry : pMemList) : pMemList;
  299. BEGIN
  300. ASM
  301. MOVE.L A6,-(A7)
  302. MOVEA.L entry,A0
  303. MOVEA.L _ExecBase,A6
  304. JSR -222(A6)
  305. MOVEA.L (A7)+,A6
  306. MOVE.L D0,@RESULT
  307. END;
  308. END;
  309. FUNCTION AllocMem(byteSize : ULONG; requirements : ULONG) : POINTER;
  310. BEGIN
  311. ASM
  312. MOVE.L A6,-(A7)
  313. MOVE.L byteSize,D0
  314. MOVE.L requirements,D1
  315. MOVEA.L _ExecBase,A6
  316. JSR -198(A6)
  317. MOVEA.L (A7)+,A6
  318. MOVE.L D0,@RESULT
  319. END;
  320. END;
  321. FUNCTION AllocPooled(poolHeader : POINTER; memSize : ULONG) : POINTER;
  322. BEGIN
  323. ASM
  324. MOVE.L A6,-(A7)
  325. MOVEA.L poolHeader,A0
  326. MOVE.L memSize,D0
  327. MOVEA.L _ExecBase,A6
  328. JSR -708(A6)
  329. MOVEA.L (A7)+,A6
  330. MOVE.L D0,@RESULT
  331. END;
  332. END;
  333. FUNCTION AllocSignal(signalNum : LONGINT) : SHORTINT;
  334. BEGIN
  335. ASM
  336. MOVE.L A6,-(A7)
  337. MOVE.L signalNum,D0
  338. MOVEA.L _ExecBase,A6
  339. JSR -330(A6)
  340. MOVEA.L (A7)+,A6
  341. MOVE.L D0,@RESULT
  342. END;
  343. END;
  344. FUNCTION AllocTrap(trapNum : LONGINT) : LONGINT;
  345. BEGIN
  346. ASM
  347. MOVE.L A6,-(A7)
  348. MOVE.L trapNum,D0
  349. MOVEA.L _ExecBase,A6
  350. JSR -342(A6)
  351. MOVEA.L (A7)+,A6
  352. MOVE.L D0,@RESULT
  353. END;
  354. END;
  355. FUNCTION AllocVec(byteSize : ULONG; requirements : ULONG) : POINTER;
  356. BEGIN
  357. ASM
  358. MOVE.L A6,-(A7)
  359. MOVE.L byteSize,D0
  360. MOVE.L requirements,D1
  361. MOVEA.L _ExecBase,A6
  362. JSR -684(A6)
  363. MOVEA.L (A7)+,A6
  364. MOVE.L D0,@RESULT
  365. END;
  366. END;
  367. FUNCTION AttemptSemaphore(sigSem : pSignalSemaphore) : BOOLEAN;
  368. BEGIN
  369. ASM
  370. MOVE.L A6,-(A7)
  371. MOVEA.L sigSem,A0
  372. MOVEA.L _ExecBase,A6
  373. JSR -576(A6)
  374. MOVEA.L (A7)+,A6
  375. TST.L D0
  376. BEQ.B @end
  377. MOVEQ #1,D0
  378. @end: MOVE.B D0,@RESULT
  379. END;
  380. END;
  381. FUNCTION AttemptSemaphoreShared(sigSem : pSignalSemaphore) : ULONG;
  382. BEGIN
  383. ASM
  384. MOVE.L A6,-(A7)
  385. MOVEA.L sigSem,A0
  386. MOVEA.L _ExecBase,A6
  387. JSR -720(A6)
  388. MOVEA.L (A7)+,A6
  389. MOVE.L D0,@RESULT
  390. END;
  391. END;
  392. FUNCTION AvailMem(requirements : ULONG) : ULONG;
  393. BEGIN
  394. ASM
  395. MOVE.L A6,-(A7)
  396. MOVE.L requirements,D1
  397. MOVEA.L _ExecBase,A6
  398. JSR -216(A6)
  399. MOVEA.L (A7)+,A6
  400. MOVE.L D0,@RESULT
  401. END;
  402. END;
  403. PROCEDURE CacheClearE(address : POINTER; length : ULONG; caches : ULONG);
  404. BEGIN
  405. ASM
  406. MOVE.L A6,-(A7)
  407. MOVEA.L address,A0
  408. MOVE.L length,D0
  409. MOVE.L caches,D1
  410. MOVEA.L _ExecBase,A6
  411. JSR -642(A6)
  412. MOVEA.L (A7)+,A6
  413. END;
  414. END;
  415. PROCEDURE CacheClearU;
  416. BEGIN
  417. ASM
  418. MOVE.L A6,-(A7)
  419. MOVEA.L _ExecBase,A6
  420. JSR -636(A6)
  421. MOVEA.L (A7)+,A6
  422. END;
  423. END;
  424. FUNCTION CacheControl(cacheBits : ULONG; cacheMask : ULONG) : ULONG;
  425. BEGIN
  426. ASM
  427. MOVE.L A6,-(A7)
  428. MOVE.L cacheBits,D0
  429. MOVE.L cacheMask,D1
  430. MOVEA.L _ExecBase,A6
  431. JSR -648(A6)
  432. MOVEA.L (A7)+,A6
  433. MOVE.L D0,@RESULT
  434. END;
  435. END;
  436. PROCEDURE CachePostDMA(address : POINTER; VAR length : ULONG; flags : ULONG);
  437. BEGIN
  438. ASM
  439. MOVE.L A6,-(A7)
  440. MOVEA.L address,A0
  441. MOVEA.L length,A1
  442. MOVE.L flags,D0
  443. MOVEA.L _ExecBase,A6
  444. JSR -768(A6)
  445. MOVEA.L (A7)+,A6
  446. END;
  447. END;
  448. FUNCTION CachePreDMA(address : POINTER; VAR length : ULONG; flags : ULONG) : POINTER;
  449. BEGIN
  450. ASM
  451. MOVE.L A6,-(A7)
  452. MOVEA.L address,A0
  453. MOVEA.L length,A1
  454. MOVE.L flags,D0
  455. MOVEA.L _ExecBase,A6
  456. JSR -762(A6)
  457. MOVEA.L (A7)+,A6
  458. MOVE.L D0,@RESULT
  459. END;
  460. END;
  461. PROCEDURE Cause(interrupt : pInterrupt);
  462. BEGIN
  463. ASM
  464. MOVE.L A6,-(A7)
  465. MOVEA.L interrupt,A1
  466. MOVEA.L _ExecBase,A6
  467. JSR -180(A6)
  468. MOVEA.L (A7)+,A6
  469. END;
  470. END;
  471. FUNCTION CheckIO(ioRequest : pIORequest) : pIORequest;
  472. BEGIN
  473. ASM
  474. MOVE.L A6,-(A7)
  475. MOVEA.L ioRequest,A1
  476. MOVEA.L _ExecBase,A6
  477. JSR -468(A6)
  478. MOVEA.L (A7)+,A6
  479. MOVE.L D0,@RESULT
  480. END;
  481. END;
  482. PROCEDURE ChildFree(tid : POINTER);
  483. BEGIN
  484. ASM
  485. MOVE.L A6,-(A7)
  486. MOVE.L tid,D0
  487. MOVEA.L _ExecBase,A6
  488. JSR -738(A6)
  489. MOVEA.L (A7)+,A6
  490. END;
  491. END;
  492. PROCEDURE ChildOrphan(tid : POINTER);
  493. BEGIN
  494. ASM
  495. MOVE.L A6,-(A7)
  496. MOVE.L tid,D0
  497. MOVEA.L _ExecBase,A6
  498. JSR -744(A6)
  499. MOVEA.L (A7)+,A6
  500. END;
  501. END;
  502. PROCEDURE ChildStatus(tid : POINTER);
  503. BEGIN
  504. ASM
  505. MOVE.L A6,-(A7)
  506. MOVE.L tid,D0
  507. MOVEA.L _ExecBase,A6
  508. JSR -750(A6)
  509. MOVEA.L (A7)+,A6
  510. END;
  511. END;
  512. PROCEDURE ChildWait(tid : POINTER);
  513. BEGIN
  514. ASM
  515. MOVE.L A6,-(A7)
  516. MOVE.L tid,D0
  517. MOVEA.L _ExecBase,A6
  518. JSR -756(A6)
  519. MOVEA.L (A7)+,A6
  520. END;
  521. END;
  522. PROCEDURE CloseDevice(ioRequest : pIORequest);
  523. BEGIN
  524. ASM
  525. MOVE.L A6,-(A7)
  526. MOVEA.L ioRequest,A1
  527. MOVEA.L _ExecBase,A6
  528. JSR -450(A6)
  529. MOVEA.L (A7)+,A6
  530. END;
  531. END;
  532. PROCEDURE CloseLibrary(lib : pLibrary);
  533. BEGIN
  534. ASM
  535. MOVE.L A6,-(A7)
  536. MOVEA.L lib,A1
  537. MOVEA.L _ExecBase,A6
  538. JSR -414(A6)
  539. MOVEA.L (A7)+,A6
  540. END;
  541. END;
  542. PROCEDURE ColdReboot;
  543. BEGIN
  544. ASM
  545. MOVE.L A6,-(A7)
  546. MOVEA.L _ExecBase,A6
  547. JSR -726(A6)
  548. MOVEA.L (A7)+,A6
  549. END;
  550. END;
  551. PROCEDURE CopyMem(source : POINTER; dest : POINTER; size : ULONG);
  552. BEGIN
  553. ASM
  554. MOVE.L A6,-(A7)
  555. MOVEA.L source,A0
  556. MOVEA.L dest,A1
  557. MOVE.L size,D0
  558. MOVEA.L _ExecBase,A6
  559. JSR -624(A6)
  560. MOVEA.L (A7)+,A6
  561. END;
  562. END;
  563. PROCEDURE CopyMemQuick(source : POINTER; dest : POINTER; size : ULONG);
  564. BEGIN
  565. ASM
  566. MOVE.L A6,-(A7)
  567. MOVEA.L source,A0
  568. MOVEA.L dest,A1
  569. MOVE.L size,D0
  570. MOVEA.L _ExecBase,A6
  571. JSR -630(A6)
  572. MOVEA.L (A7)+,A6
  573. END;
  574. END;
  575. FUNCTION CreateIORequest(port : pMsgPort; size : ULONG) : POINTER;
  576. BEGIN
  577. ASM
  578. MOVE.L A6,-(A7)
  579. MOVEA.L port,A0
  580. MOVE.L size,D0
  581. MOVEA.L _ExecBase,A6
  582. JSR -654(A6)
  583. MOVEA.L (A7)+,A6
  584. MOVE.L D0,@RESULT
  585. END;
  586. END;
  587. FUNCTION CreateMsgPort : pMsgPort;
  588. BEGIN
  589. ASM
  590. MOVE.L A6,-(A7)
  591. MOVEA.L _ExecBase,A6
  592. JSR -666(A6)
  593. MOVEA.L (A7)+,A6
  594. MOVE.L D0,@RESULT
  595. END;
  596. END;
  597. FUNCTION CreatePool(requirements : ULONG; puddleSize : ULONG; threshSize : ULONG) : POINTER;
  598. BEGIN
  599. ASM
  600. MOVE.L A6,-(A7)
  601. MOVE.L requirements,D0
  602. MOVE.L puddleSize,D1
  603. MOVE.L threshSize,D2
  604. MOVEA.L _ExecBase,A6
  605. JSR -696(A6)
  606. MOVEA.L (A7)+,A6
  607. MOVE.L D0,@RESULT
  608. END;
  609. END;
  610. PROCEDURE Deallocate(freeList : pMemHeader; memoryBlock : POINTER; byteSize : ULONG);
  611. BEGIN
  612. ASM
  613. MOVE.L A6,-(A7)
  614. MOVEA.L freeList,A0
  615. MOVEA.L memoryBlock,A1
  616. MOVE.L byteSize,D0
  617. MOVEA.L _ExecBase,A6
  618. JSR -192(A6)
  619. MOVEA.L (A7)+,A6
  620. END;
  621. END;
  622. PROCEDURE Debug(flags : ULONG);
  623. BEGIN
  624. ASM
  625. MOVE.L A6,-(A7)
  626. MOVE.L flags,D0
  627. MOVEA.L _ExecBase,A6
  628. JSR -114(A6)
  629. MOVEA.L (A7)+,A6
  630. END;
  631. END;
  632. PROCEDURE DeleteIORequest(iorequest : POINTER);
  633. BEGIN
  634. ASM
  635. MOVE.L A6,-(A7)
  636. MOVEA.L iorequest,A0
  637. MOVEA.L _ExecBase,A6
  638. JSR -660(A6)
  639. MOVEA.L (A7)+,A6
  640. END;
  641. END;
  642. PROCEDURE DeleteMsgPort(port : pMsgPort);
  643. BEGIN
  644. ASM
  645. MOVE.L A6,-(A7)
  646. MOVEA.L port,A0
  647. MOVEA.L _ExecBase,A6
  648. JSR -672(A6)
  649. MOVEA.L (A7)+,A6
  650. END;
  651. END;
  652. PROCEDURE DeletePool(poolHeader : POINTER);
  653. BEGIN
  654. ASM
  655. MOVE.L A6,-(A7)
  656. MOVEA.L poolHeader,A0
  657. MOVEA.L _ExecBase,A6
  658. JSR -702(A6)
  659. MOVEA.L (A7)+,A6
  660. END;
  661. END;
  662. PROCEDURE Disable;
  663. BEGIN
  664. ASM
  665. MOVE.L A6,-(A7)
  666. MOVEA.L _ExecBase,A6
  667. JSR -120(A6)
  668. MOVEA.L (A7)+,A6
  669. END;
  670. END;
  671. FUNCTION DoIO(ioRequest : pIORequest) : SHORTINT;
  672. BEGIN
  673. ASM
  674. MOVE.L A6,-(A7)
  675. MOVEA.L ioRequest,A1
  676. MOVEA.L _ExecBase,A6
  677. JSR -456(A6)
  678. MOVEA.L (A7)+,A6
  679. MOVE.L D0,@RESULT
  680. END;
  681. END;
  682. PROCEDURE Enable;
  683. BEGIN
  684. ASM
  685. MOVE.L A6,-(A7)
  686. MOVEA.L _ExecBase,A6
  687. JSR -126(A6)
  688. MOVEA.L (A7)+,A6
  689. END;
  690. END;
  691. PROCEDURE Enqueue(list : pList; node : pNode);
  692. BEGIN
  693. ASM
  694. MOVE.L A6,-(A7)
  695. MOVEA.L list,A0
  696. MOVEA.L node,A1
  697. MOVEA.L _ExecBase,A6
  698. JSR -270(A6)
  699. MOVEA.L (A7)+,A6
  700. END;
  701. END;
  702. PROCEDURE ExecFreeMem(memoryBlock : POINTER; byteSize : ULONG);
  703. BEGIN
  704. ASM
  705. MOVE.L A6,-(A7)
  706. MOVEA.L memoryBlock,A1
  707. MOVE.L byteSize,D0
  708. MOVEA.L _ExecBase,A6
  709. JSR -210(A6)
  710. MOVEA.L (A7)+,A6
  711. END;
  712. END;
  713. PROCEDURE ExecInsert(list : pList; node : pNode; pred : pNode);
  714. BEGIN
  715. ASM
  716. MOVE.L A6,-(A7)
  717. MOVEA.L list,A0
  718. MOVEA.L node,A1
  719. MOVEA.L pred,A2
  720. MOVEA.L _ExecBase,A6
  721. JSR -234(A6)
  722. MOVEA.L (A7)+,A6
  723. END;
  724. END;
  725. FUNCTION FindName(list : pList; name : pCHAR) : pNode;
  726. BEGIN
  727. ASM
  728. MOVE.L A6,-(A7)
  729. MOVEA.L list,A0
  730. MOVEA.L name,A1
  731. MOVEA.L _ExecBase,A6
  732. JSR -276(A6)
  733. MOVEA.L (A7)+,A6
  734. MOVE.L D0,@RESULT
  735. END;
  736. END;
  737. FUNCTION FindPort(name : pCHAR) : pMsgPort;
  738. BEGIN
  739. ASM
  740. MOVE.L A6,-(A7)
  741. MOVEA.L name,A1
  742. MOVEA.L _ExecBase,A6
  743. JSR -390(A6)
  744. MOVEA.L (A7)+,A6
  745. MOVE.L D0,@RESULT
  746. END;
  747. END;
  748. FUNCTION FindResident(name : pCHAR) : pResident;
  749. BEGIN
  750. ASM
  751. MOVE.L A6,-(A7)
  752. MOVEA.L name,A1
  753. MOVEA.L _ExecBase,A6
  754. JSR -096(A6)
  755. MOVEA.L (A7)+,A6
  756. MOVE.L D0,@RESULT
  757. END;
  758. END;
  759. FUNCTION FindSemaphore(sigSem : pCHAR) : pSignalSemaphore;
  760. BEGIN
  761. ASM
  762. MOVE.L A6,-(A7)
  763. MOVEA.L sigSem,A1
  764. MOVEA.L _ExecBase,A6
  765. JSR -594(A6)
  766. MOVEA.L (A7)+,A6
  767. MOVE.L D0,@RESULT
  768. END;
  769. END;
  770. FUNCTION FindTask(name : pCHAR) : pTask;
  771. BEGIN
  772. ASM
  773. MOVE.L A6,-(A7)
  774. MOVEA.L name,A1
  775. MOVEA.L _ExecBase,A6
  776. JSR -294(A6)
  777. MOVEA.L (A7)+,A6
  778. MOVE.L D0,@RESULT
  779. END;
  780. END;
  781. PROCEDURE Forbid;
  782. BEGIN
  783. ASM
  784. MOVE.L A6,-(A7)
  785. MOVEA.L _ExecBase,A6
  786. JSR -132(A6)
  787. MOVEA.L (A7)+,A6
  788. END;
  789. END;
  790. PROCEDURE FreeEntry(entry : pMemList);
  791. BEGIN
  792. ASM
  793. MOVE.L A6,-(A7)
  794. MOVEA.L entry,A0
  795. MOVEA.L _ExecBase,A6
  796. JSR -228(A6)
  797. MOVEA.L (A7)+,A6
  798. END;
  799. END;
  800. PROCEDURE FreePooled(poolHeader : POINTER; memory : POINTER; memSize : ULONG);
  801. BEGIN
  802. ASM
  803. MOVE.L A6,-(A7)
  804. MOVEA.L poolHeader,A0
  805. MOVEA.L memory,A1
  806. MOVE.L memSize,D0
  807. MOVEA.L _ExecBase,A6
  808. JSR -714(A6)
  809. MOVEA.L (A7)+,A6
  810. END;
  811. END;
  812. PROCEDURE FreeSignal(signalNum : LONGINT);
  813. BEGIN
  814. ASM
  815. MOVE.L A6,-(A7)
  816. MOVE.L signalNum,D0
  817. MOVEA.L _ExecBase,A6
  818. JSR -336(A6)
  819. MOVEA.L (A7)+,A6
  820. END;
  821. END;
  822. PROCEDURE FreeTrap(trapNum : LONGINT);
  823. BEGIN
  824. ASM
  825. MOVE.L A6,-(A7)
  826. MOVE.L trapNum,D0
  827. MOVEA.L _ExecBase,A6
  828. JSR -348(A6)
  829. MOVEA.L (A7)+,A6
  830. END;
  831. END;
  832. PROCEDURE FreeVec(memoryBlock : POINTER);
  833. BEGIN
  834. ASM
  835. MOVE.L A6,-(A7)
  836. MOVEA.L memoryBlock,A1
  837. MOVEA.L _ExecBase,A6
  838. JSR -690(A6)
  839. MOVEA.L (A7)+,A6
  840. END;
  841. END;
  842. FUNCTION GetCC : ULONG;
  843. BEGIN
  844. ASM
  845. MOVE.L A6,-(A7)
  846. MOVEA.L _ExecBase,A6
  847. JSR -528(A6)
  848. MOVEA.L (A7)+,A6
  849. MOVE.L D0,@RESULT
  850. END;
  851. END;
  852. FUNCTION GetMsg(port : pMsgPort) : pMessage;
  853. BEGIN
  854. ASM
  855. MOVE.L A6,-(A7)
  856. MOVEA.L port,A0
  857. MOVEA.L _ExecBase,A6
  858. JSR -372(A6)
  859. MOVEA.L (A7)+,A6
  860. MOVE.L D0,@RESULT
  861. END;
  862. END;
  863. PROCEDURE InitCode(startClass : ULONG; version : ULONG);
  864. BEGIN
  865. ASM
  866. MOVE.L A6,-(A7)
  867. MOVE.L startClass,D0
  868. MOVE.L version,D1
  869. MOVEA.L _ExecBase,A6
  870. JSR -072(A6)
  871. MOVEA.L (A7)+,A6
  872. END;
  873. END;
  874. FUNCTION InitResident(resident : pResident; segList : ULONG) : POINTER;
  875. BEGIN
  876. ASM
  877. MOVE.L A6,-(A7)
  878. MOVEA.L resident,A1
  879. MOVE.L segList,D1
  880. MOVEA.L _ExecBase,A6
  881. JSR -102(A6)
  882. MOVEA.L (A7)+,A6
  883. MOVE.L D0,@RESULT
  884. END;
  885. END;
  886. PROCEDURE InitSemaphore(sigSem : pSignalSemaphore);
  887. BEGIN
  888. ASM
  889. MOVE.L A6,-(A7)
  890. MOVEA.L sigSem,A0
  891. MOVEA.L _ExecBase,A6
  892. JSR -558(A6)
  893. MOVEA.L (A7)+,A6
  894. END;
  895. END;
  896. PROCEDURE InitStruct(initTable : POINTER; memory : POINTER; size : ULONG);
  897. BEGIN
  898. ASM
  899. MOVE.L A6,-(A7)
  900. MOVEA.L initTable,A1
  901. MOVEA.L memory,A2
  902. MOVE.L size,D0
  903. MOVEA.L _ExecBase,A6
  904. JSR -078(A6)
  905. MOVEA.L (A7)+,A6
  906. END;
  907. END;
  908. PROCEDURE MakeFunctions(target : POINTER; functionArray : POINTER; funcDispBase : ULONG);
  909. BEGIN
  910. ASM
  911. MOVE.L A6,-(A7)
  912. MOVEA.L target,A0
  913. MOVEA.L functionArray,A1
  914. MOVEA.L funcDispBase,A2
  915. MOVEA.L _ExecBase,A6
  916. JSR -090(A6)
  917. MOVEA.L (A7)+,A6
  918. END;
  919. END;
  920. FUNCTION MakeLibrary(funcInit : POINTER; structInit : POINTER; libInit : tPROCEDURE; dataSize : ULONG; segList : ULONG) : pLibrary;
  921. BEGIN
  922. ASM
  923. MOVE.L A6,-(A7)
  924. MOVEA.L funcInit,A0
  925. MOVEA.L structInit,A1
  926. MOVEA.L libInit,A2
  927. MOVE.L dataSize,D0
  928. MOVE.L segList,D1
  929. MOVEA.L _ExecBase,A6
  930. JSR -084(A6)
  931. MOVEA.L (A7)+,A6
  932. MOVE.L D0,@RESULT
  933. END;
  934. END;
  935. FUNCTION ObtainQuickVector(interruptCode : POINTER) : ULONG;
  936. BEGIN
  937. ASM
  938. MOVE.L A6,-(A7)
  939. MOVEA.L interruptCode,A0
  940. MOVEA.L _ExecBase,A6
  941. JSR -786(A6)
  942. MOVEA.L (A7)+,A6
  943. MOVE.L D0,@RESULT
  944. END;
  945. END;
  946. PROCEDURE ObtainSemaphore(sigSem : pSignalSemaphore);
  947. BEGIN
  948. ASM
  949. MOVE.L A6,-(A7)
  950. MOVEA.L sigSem,A0
  951. MOVEA.L _ExecBase,A6
  952. JSR -564(A6)
  953. MOVEA.L (A7)+,A6
  954. END;
  955. END;
  956. PROCEDURE ObtainSemaphoreList(sigSem : pList);
  957. BEGIN
  958. ASM
  959. MOVE.L A6,-(A7)
  960. MOVEA.L sigSem,A0
  961. MOVEA.L _ExecBase,A6
  962. JSR -582(A6)
  963. MOVEA.L (A7)+,A6
  964. END;
  965. END;
  966. PROCEDURE ObtainSemaphoreShared(sigSem : pSignalSemaphore);
  967. BEGIN
  968. ASM
  969. MOVE.L A6,-(A7)
  970. MOVEA.L sigSem,A0
  971. MOVEA.L _ExecBase,A6
  972. JSR -678(A6)
  973. MOVEA.L (A7)+,A6
  974. END;
  975. END;
  976. FUNCTION OldOpenLibrary(libName : pCHAR) : pLibrary;
  977. BEGIN
  978. ASM
  979. MOVE.L A6,-(A7)
  980. MOVEA.L libName,A1
  981. MOVEA.L _ExecBase,A6
  982. JSR -408(A6)
  983. MOVEA.L (A7)+,A6
  984. MOVE.L D0,@RESULT
  985. END;
  986. END;
  987. FUNCTION OpenDevice(devName : pCHAR; unite : ULONG; ioRequest : pIORequest; flags : ULONG) : SHORTINT;
  988. BEGIN
  989. ASM
  990. MOVE.L A6,-(A7)
  991. MOVEA.L devName,A0
  992. MOVE.L unite,D0
  993. MOVEA.L ioRequest,A1
  994. MOVE.L flags,D1
  995. MOVEA.L _ExecBase,A6
  996. JSR -444(A6)
  997. MOVEA.L (A7)+,A6
  998. MOVE.L D0,@RESULT
  999. END;
  1000. END;
  1001. FUNCTION OpenLibrary(libName : pCHAR; version : ULONG) : pLibrary;
  1002. BEGIN
  1003. ASM
  1004. MOVE.L A6,-(A7)
  1005. MOVEA.L libName,A1
  1006. MOVE.L version,D0
  1007. MOVEA.L _ExecBase,A6
  1008. JSR -552(A6)
  1009. MOVEA.L (A7)+,A6
  1010. MOVE.L D0,@RESULT
  1011. END;
  1012. END;
  1013. FUNCTION OpenResource(resName : pCHAR) : POINTER;
  1014. BEGIN
  1015. ASM
  1016. MOVE.L A6,-(A7)
  1017. MOVEA.L resName,A1
  1018. MOVEA.L _ExecBase,A6
  1019. JSR -498(A6)
  1020. MOVEA.L (A7)+,A6
  1021. MOVE.L D0,@RESULT
  1022. END;
  1023. END;
  1024. PROCEDURE Permit;
  1025. BEGIN
  1026. ASM
  1027. MOVE.L A6,-(A7)
  1028. MOVEA.L _ExecBase,A6
  1029. JSR -138(A6)
  1030. MOVEA.L (A7)+,A6
  1031. END;
  1032. END;
  1033. FUNCTION Procure(sigSem : pSignalSemaphore; bidMsg : pSemaphoreMessage) : BOOLEAN;
  1034. BEGIN
  1035. ASM
  1036. MOVE.L A6,-(A7)
  1037. MOVEA.L sigSem,A0
  1038. MOVEA.L bidMsg,A1
  1039. MOVEA.L _ExecBase,A6
  1040. JSR -540(A6)
  1041. MOVEA.L (A7)+,A6
  1042. TST.L D0
  1043. BEQ.B @end
  1044. MOVEQ #1,D0
  1045. @end: MOVE.B D0,@RESULT
  1046. END;
  1047. END;
  1048. PROCEDURE PutMsg(port : pMsgPort; message : pMessage);
  1049. BEGIN
  1050. ASM
  1051. MOVE.L A6,-(A7)
  1052. MOVEA.L port,A0
  1053. MOVEA.L message,A1
  1054. MOVEA.L _ExecBase,A6
  1055. JSR -366(A6)
  1056. MOVEA.L (A7)+,A6
  1057. END;
  1058. END;
  1059. PROCEDURE RawDoFmt(formatString : pCHAR; dataStream : POINTER; putChProc : tPROCEDURE; putChData : POINTER);
  1060. BEGIN
  1061. ASM
  1062. MOVE.L A6,-(A7)
  1063. MOVEA.L formatString,A0
  1064. MOVEA.L dataStream,A1
  1065. MOVEA.L putChProc,A2
  1066. MOVEA.L putChData,A3
  1067. MOVEA.L _ExecBase,A6
  1068. JSR -522(A6)
  1069. MOVEA.L (A7)+,A6
  1070. END;
  1071. END;
  1072. PROCEDURE ReleaseSemaphore(sigSem : pSignalSemaphore);
  1073. BEGIN
  1074. ASM
  1075. MOVE.L A6,-(A7)
  1076. MOVEA.L sigSem,A0
  1077. MOVEA.L _ExecBase,A6
  1078. JSR -570(A6)
  1079. MOVEA.L (A7)+,A6
  1080. END;
  1081. END;
  1082. PROCEDURE ReleaseSemaphoreList(sigSem : pList);
  1083. BEGIN
  1084. ASM
  1085. MOVE.L A6,-(A7)
  1086. MOVEA.L sigSem,A0
  1087. MOVEA.L _ExecBase,A6
  1088. JSR -588(A6)
  1089. MOVEA.L (A7)+,A6
  1090. END;
  1091. END;
  1092. PROCEDURE RemDevice(device : pDevice);
  1093. BEGIN
  1094. ASM
  1095. MOVE.L A6,-(A7)
  1096. MOVEA.L device,A1
  1097. MOVEA.L _ExecBase,A6
  1098. JSR -438(A6)
  1099. MOVEA.L (A7)+,A6
  1100. END;
  1101. END;
  1102. FUNCTION RemHead(list : pList) : pNode;
  1103. BEGIN
  1104. ASM
  1105. MOVE.L A6,-(A7)
  1106. MOVEA.L list,A0
  1107. MOVEA.L _ExecBase,A6
  1108. JSR -258(A6)
  1109. MOVEA.L (A7)+,A6
  1110. MOVE.L D0,@RESULT
  1111. END;
  1112. END;
  1113. PROCEDURE RemIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  1114. BEGIN
  1115. ASM
  1116. MOVE.L A6,-(A7)
  1117. MOVE.L intNumber,D0
  1118. MOVEA.L interrupt,A1
  1119. MOVEA.L _ExecBase,A6
  1120. JSR -174(A6)
  1121. MOVEA.L (A7)+,A6
  1122. END;
  1123. END;
  1124. PROCEDURE RemLibrary(lib : pLibrary);
  1125. BEGIN
  1126. ASM
  1127. MOVE.L A6,-(A7)
  1128. MOVEA.L lib,A1
  1129. MOVEA.L _ExecBase,A6
  1130. JSR -402(A6)
  1131. MOVEA.L (A7)+,A6
  1132. END;
  1133. END;
  1134. PROCEDURE RemMemHandler(memhand : pInterrupt);
  1135. BEGIN
  1136. ASM
  1137. MOVE.L A6,-(A7)
  1138. MOVEA.L memhand,A1
  1139. MOVEA.L _ExecBase,A6
  1140. JSR -780(A6)
  1141. MOVEA.L (A7)+,A6
  1142. END;
  1143. END;
  1144. PROCEDURE Remove(node : pNode);
  1145. BEGIN
  1146. ASM
  1147. MOVE.L A6,-(A7)
  1148. MOVEA.L node,A1
  1149. MOVEA.L _ExecBase,A6
  1150. JSR -252(A6)
  1151. MOVEA.L (A7)+,A6
  1152. END;
  1153. END;
  1154. PROCEDURE RemPort(port : pMsgPort);
  1155. BEGIN
  1156. ASM
  1157. MOVE.L A6,-(A7)
  1158. MOVEA.L port,A1
  1159. MOVEA.L _ExecBase,A6
  1160. JSR -360(A6)
  1161. MOVEA.L (A7)+,A6
  1162. END;
  1163. END;
  1164. PROCEDURE RemResource(resource : POINTER);
  1165. BEGIN
  1166. ASM
  1167. MOVE.L A6,-(A7)
  1168. MOVEA.L resource,A1
  1169. MOVEA.L _ExecBase,A6
  1170. JSR -492(A6)
  1171. MOVEA.L (A7)+,A6
  1172. END;
  1173. END;
  1174. PROCEDURE RemSemaphore(sigSem : pSignalSemaphore);
  1175. BEGIN
  1176. ASM
  1177. MOVE.L A6,-(A7)
  1178. MOVEA.L sigSem,A1
  1179. MOVEA.L _ExecBase,A6
  1180. JSR -606(A6)
  1181. MOVEA.L (A7)+,A6
  1182. END;
  1183. END;
  1184. FUNCTION RemTail(list : pList) : pNode;
  1185. BEGIN
  1186. ASM
  1187. MOVE.L A6,-(A7)
  1188. MOVEA.L list,A0
  1189. MOVEA.L _ExecBase,A6
  1190. JSR -264(A6)
  1191. MOVEA.L (A7)+,A6
  1192. MOVE.L D0,@RESULT
  1193. END;
  1194. END;
  1195. PROCEDURE RemTask(task : pTask);
  1196. BEGIN
  1197. ASM
  1198. MOVE.L A6,-(A7)
  1199. MOVEA.L task,A1
  1200. MOVEA.L _ExecBase,A6
  1201. JSR -288(A6)
  1202. MOVEA.L (A7)+,A6
  1203. END;
  1204. END;
  1205. PROCEDURE ReplyMsg(message : pMessage);
  1206. BEGIN
  1207. ASM
  1208. MOVE.L A6,-(A7)
  1209. MOVEA.L message,A1
  1210. MOVEA.L _ExecBase,A6
  1211. JSR -378(A6)
  1212. MOVEA.L (A7)+,A6
  1213. END;
  1214. END;
  1215. PROCEDURE SendIO(ioRequest : pIORequest);
  1216. BEGIN
  1217. ASM
  1218. MOVE.L A6,-(A7)
  1219. MOVEA.L ioRequest,A1
  1220. MOVEA.L _ExecBase,A6
  1221. JSR -462(A6)
  1222. MOVEA.L (A7)+,A6
  1223. END;
  1224. END;
  1225. FUNCTION SetExcept(newSignals : ULONG; signalSet : ULONG) : ULONG;
  1226. BEGIN
  1227. ASM
  1228. MOVE.L A6,-(A7)
  1229. MOVE.L newSignals,D0
  1230. MOVE.L signalSet,D1
  1231. MOVEA.L _ExecBase,A6
  1232. JSR -312(A6)
  1233. MOVEA.L (A7)+,A6
  1234. MOVE.L D0,@RESULT
  1235. END;
  1236. END;
  1237. FUNCTION SetFunction(lib : pLibrary; funcOffset : LONGINT; newFunction : tPROCEDURE) : POINTER;
  1238. BEGIN
  1239. ASM
  1240. MOVE.L A6,-(A7)
  1241. MOVEA.L lib,A1
  1242. MOVEA.L funcOffset,A0
  1243. MOVE.L newFunction,D0
  1244. MOVEA.L _ExecBase,A6
  1245. JSR -420(A6)
  1246. MOVEA.L (A7)+,A6
  1247. MOVE.L D0,@RESULT
  1248. END;
  1249. END;
  1250. FUNCTION SetIntVector(intNumber : LONGINT; interrupt : pInterrupt) : pInterrupt;
  1251. BEGIN
  1252. ASM
  1253. MOVE.L A6,-(A7)
  1254. MOVE.L intNumber,D0
  1255. MOVEA.L interrupt,A1
  1256. MOVEA.L _ExecBase,A6
  1257. JSR -162(A6)
  1258. MOVEA.L (A7)+,A6
  1259. MOVE.L D0,@RESULT
  1260. END;
  1261. END;
  1262. FUNCTION SetSignal(newSignals : ULONG; signalSet : ULONG) : ULONG;
  1263. BEGIN
  1264. ASM
  1265. MOVE.L A6,-(A7)
  1266. MOVE.L newSignals,D0
  1267. MOVE.L signalSet,D1
  1268. MOVEA.L _ExecBase,A6
  1269. JSR -306(A6)
  1270. MOVEA.L (A7)+,A6
  1271. MOVE.L D0,@RESULT
  1272. END;
  1273. END;
  1274. FUNCTION SetSR(newSR : ULONG; mask : ULONG) : ULONG;
  1275. BEGIN
  1276. ASM
  1277. MOVE.L A6,-(A7)
  1278. MOVE.L newSR,D0
  1279. MOVE.L mask,D1
  1280. MOVEA.L _ExecBase,A6
  1281. JSR -144(A6)
  1282. MOVEA.L (A7)+,A6
  1283. MOVE.L D0,@RESULT
  1284. END;
  1285. END;
  1286. FUNCTION SetTaskPri(task : pTask; priority : LONGINT) : SHORTINT;
  1287. BEGIN
  1288. ASM
  1289. MOVE.L A6,-(A7)
  1290. MOVEA.L task,A1
  1291. MOVE.L priority,D0
  1292. MOVEA.L _ExecBase,A6
  1293. JSR -300(A6)
  1294. MOVEA.L (A7)+,A6
  1295. MOVE.L D0,@RESULT
  1296. END;
  1297. END;
  1298. PROCEDURE Signal(task : pTask; signalSet : ULONG);
  1299. BEGIN
  1300. ASM
  1301. MOVE.L A6,-(A7)
  1302. MOVEA.L task,A1
  1303. MOVE.L signalSet,D0
  1304. MOVEA.L _ExecBase,A6
  1305. JSR -324(A6)
  1306. MOVEA.L (A7)+,A6
  1307. END;
  1308. END;
  1309. PROCEDURE StackSwap(newStack : pStackSwapStruct);
  1310. BEGIN
  1311. ASM
  1312. MOVE.L A6,-(A7)
  1313. MOVEA.L newStack,A0
  1314. MOVEA.L _ExecBase,A6
  1315. JSR -732(A6)
  1316. MOVEA.L (A7)+,A6
  1317. END;
  1318. END;
  1319. PROCEDURE SumKickData;
  1320. BEGIN
  1321. ASM
  1322. MOVE.L A6,-(A7)
  1323. MOVEA.L _ExecBase,A6
  1324. JSR -612(A6)
  1325. MOVEA.L (A7)+,A6
  1326. END;
  1327. END;
  1328. PROCEDURE SumLibrary(lib : pLibrary);
  1329. BEGIN
  1330. ASM
  1331. MOVE.L A6,-(A7)
  1332. MOVEA.L lib,A1
  1333. MOVEA.L _ExecBase,A6
  1334. JSR -426(A6)
  1335. MOVEA.L (A7)+,A6
  1336. END;
  1337. END;
  1338. FUNCTION SuperState : POINTER;
  1339. BEGIN
  1340. ASM
  1341. MOVE.L A6,-(A7)
  1342. MOVEA.L _ExecBase,A6
  1343. JSR -150(A6)
  1344. MOVEA.L (A7)+,A6
  1345. MOVE.L D0,@RESULT
  1346. END;
  1347. END;
  1348. FUNCTION Supervisor(userFunction : tPROCEDURE) : ULONG;
  1349. BEGIN
  1350. ASM
  1351. MOVE.L A6,-(A7)
  1352. MOVEA.L userFunction,A5
  1353. MOVEA.L _ExecBase,A6
  1354. JSR -030(A6)
  1355. MOVEA.L (A7)+,A6
  1356. MOVE.L D0,@RESULT
  1357. END;
  1358. END;
  1359. FUNCTION TypeOfMem(address : POINTER) : ULONG;
  1360. BEGIN
  1361. ASM
  1362. MOVE.L A6,-(A7)
  1363. MOVEA.L address,A1
  1364. MOVEA.L _ExecBase,A6
  1365. JSR -534(A6)
  1366. MOVEA.L (A7)+,A6
  1367. MOVE.L D0,@RESULT
  1368. END;
  1369. END;
  1370. PROCEDURE UserState(sysStack : POINTER);
  1371. BEGIN
  1372. ASM
  1373. MOVE.L A6,-(A7)
  1374. MOVE.L sysStack,D0
  1375. MOVEA.L _ExecBase,A6
  1376. JSR -156(A6)
  1377. MOVEA.L (A7)+,A6
  1378. END;
  1379. END;
  1380. PROCEDURE Vacate(sigSem : pSignalSemaphore; bidMsg : pSemaphoreMessage);
  1381. BEGIN
  1382. ASM
  1383. MOVE.L A6,-(A7)
  1384. MOVEA.L sigSem,A0
  1385. MOVEA.L bidMsg,A1
  1386. MOVEA.L _ExecBase,A6
  1387. JSR -546(A6)
  1388. MOVEA.L (A7)+,A6
  1389. END;
  1390. END;
  1391. FUNCTION Wait(signalSet : ULONG) : ULONG;
  1392. BEGIN
  1393. ASM
  1394. MOVE.L A6,-(A7)
  1395. MOVE.L signalSet,D0
  1396. MOVEA.L _ExecBase,A6
  1397. JSR -318(A6)
  1398. MOVEA.L (A7)+,A6
  1399. MOVE.L D0,@RESULT
  1400. END;
  1401. END;
  1402. FUNCTION WaitIO(ioRequest : pIORequest) : SHORTINT;
  1403. BEGIN
  1404. ASM
  1405. MOVE.L A6,-(A7)
  1406. MOVEA.L ioRequest,A1
  1407. MOVEA.L _ExecBase,A6
  1408. JSR -474(A6)
  1409. MOVEA.L (A7)+,A6
  1410. MOVE.L D0,@RESULT
  1411. END;
  1412. END;
  1413. FUNCTION WaitPort(port : pMsgPort) : pMessage;
  1414. BEGIN
  1415. ASM
  1416. MOVE.L A6,-(A7)
  1417. MOVEA.L port,A0
  1418. MOVEA.L _ExecBase,A6
  1419. JSR -384(A6)
  1420. MOVEA.L (A7)+,A6
  1421. MOVE.L D0,@RESULT
  1422. END;
  1423. END;
  1424. END. (* UNIT EXEC *)
  1425. {
  1426. $Log$
  1427. Revision 1.4 2000-01-07 16:41:28 daniel
  1428. * copyright 2000
  1429. Revision 1.3 1998/09/14 20:22:32 carl
  1430. * Several bugfixes by Nils Sjoholm
  1431. Revision 1.1.1.1 1998/03/25 11:18:47 root
  1432. * Restored version
  1433. Revision 1.3 1998/01/26 12:02:42 michael
  1434. + Added log at the end
  1435. Working file: rtl/amiga/exec.pp
  1436. description:
  1437. ----------------------------
  1438. revision 1.2
  1439. date: 1997/12/14 19:02:47; author: carl; state: Exp; lines: +11 -10
  1440. * small bugfixes
  1441. ----------------------------
  1442. revision 1.1
  1443. date: 1997/12/10 13:48:45; author: carl; state: Exp;
  1444. + exec dynamic library definitions and calls.
  1445. =============================================================================
  1446. }