home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / CLISP / CLISPSRC.TAR / clisp-1995-01-01 / src / amiga2.d < prev    next >
Encoding:
Text File  |  1993-03-27  |  5.7 KB  |  167 lines

  1. # Include-File: Amiga-Spezifisches, das nur von wenigen Modulen ben÷tigt wird
  2. # J÷rg H÷hle 27.3.1993
  3.  
  4.  
  5. # Verhindert Multitasking kurzzeitig.
  6. # Forbid(); ... Permit();
  7. # Aufrufe k÷nnen geschachtelt werden.
  8.   extern void Forbid (void); # siehe exec.library/Forbid
  9.   extern void Permit (void); # siehe exec.library/Permit
  10. # wird verwendet von REXX
  11.  
  12.  
  13. # ╓ffnet eine 'shared library'.
  14. # OpenLibrary(name,version)
  15. # > name: Name als ASCIZ-String, mit .library am Schlu▀
  16. # > version: kleinste erwⁿnschte Versionsnummer, 0 bedeutet "egal"
  17. # < struct Library * ergebnis: Library base Zeiger oder NULL
  18.   extern struct Library * OpenLibrary (CONST UBYTE* name, unsigned long version); # siehe exec.library/OpenLibrary
  19. # wird verwendet von REXX
  20.  
  21. # Schlie▀t eine ge÷ffnete 'shared library'.
  22. # CloseLibrary(library)
  23. # > library: 'library base' Zeiger
  24.   extern void CloseLibrary (struct Library * library);
  25. # wird verwendet von REXX
  26.  
  27.  
  28. # "Port"s sind Einheiten zum Austausch von Nachrichten ("Messages").
  29. # (Wir haben's hier nur mit den sogenannten "÷ffentlichen Ports".)
  30. # Sie tragen einen Namen.
  31.  
  32. # Sucht einen Port gegebenen Namens.
  33. # FindPort(name)
  34. # > name: Name des Ports
  35. # < ergebnis: Port-Pointer oder NULL falls es keinen gibt
  36. # Mu▀ von Forbid()/Permit() umrahmt sein.
  37.   extern struct MsgPort * FindPort (CONST UBYTE* name); # siehe exec.library/FindPort
  38. # wird verwendet von REXX
  39.  
  40. # Alloziert einen neuen Port.
  41. # CreatePort(name,priority)
  42. # > name: Name des Ports
  43. # > priority: PrioritΣt
  44. # < ergebnis: Port-Pointer
  45.   extern struct MsgPort * CreatePort (UBYTE* name, LONG priority); # siehe amiga.lib/CreatePort
  46. # wird verwendet von REXX
  47.  
  48. # Meldet einen Port ab (vor dem Freigeben n÷tig).
  49. # RemPort(port)
  50. # > port: Port-Pointer
  51.   extern void RemPort (struct MsgPort * port); # siehe exec.library/RemPort
  52. # wird verwendet von REXX
  53.  
  54. # Gibt einen Port wieder frei.
  55. # DeletePort(port)
  56. # > port: Port-Pointer
  57.   extern void DeletePort (struct MsgPort * port); # siehe amiga.lib/DeletePort
  58. # wird verwendet von REXX
  59.  
  60. # Holt eine Message an einem Port ab.
  61. # GetMsg(port)
  62. # > port: Port-Pointer
  63. # < ergebnis: Message-Pointer oder NULL falls gerade keine Message anliegt.
  64. # Die abgeholte Message wird aus der Warteschlange von Messages entfernt.
  65.   extern struct Message * GetMsg (struct MsgPort * port); # siehe exec.library/GetMsg
  66. # wird verwendet von REXX
  67.  
  68. # Beendet die Bearbeitung einer abgeholten Message.
  69. # ReplyMsg(message);
  70. # > message: Message-Pointer
  71.   extern void ReplyMsg (struct Message * message); # siehe exec.library/ReplyMsg
  72. # wird verwendet von REXX
  73.  
  74. # Schickt eine Message an einen Port.
  75. # PutMsg(port,message);
  76. # > port: Port-Pointer
  77. # > message: Message-Pointer
  78. # Der von der Message beanspruchte Speicher bleibt bis zu ihrer Beantwortung
  79. # reserviert!
  80.   extern void PutMsg (struct MsgPort * port, struct Message * message); # siehe exec.library/PutMsg
  81. # wird verwendet von REXX
  82.  
  83. #if 0 # Von der CLISP-Library intern benutzte Funktionen
  84. # extern struct List * NewList (struct List * list);
  85. # extern long AllocSignal (long);
  86. # extern void FreeSignal (long);
  87. #endif
  88.  
  89.  
  90. #ifdef REXX
  91.  
  92. # ARexx (= Amiga-Rexx) ist ein auf obigen Ports aufbauendes Kommunikations-
  93. # system zwischen Applikationen.
  94.  
  95. #include <rexx/rxslib.h>
  96. #if defined(GNU_INLINES)
  97.   #include <inline/rexxsyslib.h>
  98. #else
  99.   #ifdef ANSI
  100.     #include <clib/rexxsyslib_protos.h>
  101.   #endif
  102. #endif
  103.  
  104. # Arexx-Messages haben ein spezielles Aussehen:
  105.  
  106. # Erzeugt eine Message-Hⁿlle fⁿr ARexx.
  107. # CreateRexxMsg(msgport,ext,host)
  108. # > msgport: Adresse des ARexx message Ports, der die EmpfangsbestΣtigung bekommt
  109. # > ext: (ASCIZ) Extension fⁿr aufzurufende Dateien, NULL bedeutet "REXX"
  110. # > host: Name des ARexx message Ports, der externe Kommandos abarbeitet
  111. # < ergebnis: ARexx Message oder NULL bei Fehler
  112.   extern struct RexxMsg * CreateRexxMsg (struct MsgPort* msgport, UBYTE* extension, UBYTE* hostname); # siehe rexxsyslib/CreateRexxMsg
  113. # wird verwendet von REXX
  114.  
  115. # Eine Message-Hⁿlle hat Platz fⁿr 1 bis MAXRMARG Argument-Strings.
  116.  
  117. # Gibt die Argument-Strings in einer Message-Hⁿlle wieder frei.
  118. # ClearRexxMsg(msg,argcount);
  119. # > msg: ARexx Message
  120. # > argcount: Anzahl Argumente
  121.   extern void ClearRexxMsg (struct RexxMsg * msg, ULONG argcount); # siehe rexxsyslib/ClearRexxMsg
  122. # wird verwendet von REXX
  123.  
  124. # Gibt eine Message-Hⁿlle wieder frei.
  125. # DeleteRexxMsg(msg);
  126. # > msg: ARexx Message
  127.   extern void DeleteRexxMsg (struct RexxMsg * message); # siehe rexxsyslib/DeleteRexxMsg
  128. # wird verwendet von REXX
  129.  
  130. # Au▀erdem mⁿssen auch Argument-Strings speziell verpackt werden:
  131.  
  132. # Erzeugt Argument-String Struktur fⁿr ARexx.
  133. # CreateArgstring(string,length)
  134. # > [string..string+length-1]: angesprochener Speicherbereich
  135. # > length: LΣnge, <2^16
  136. # < ergebnis: verpackter, kopierter Argument-String
  137.   extern UBYTE* CreateArgstring (UBYTE* string, ULONG length); # siehe rexxsyslib/CreateArgstring
  138. # wird verwendet von REXX
  139.  
  140. # Gibt Argument-String Struktur wieder frei.
  141. # DeleteArgstring(argstring);
  142. # > argstring: verpackter Argument-String
  143.   extern void DeleteArgstring (UBYTE* argstring); # siehe rexxsyslib/DeleteArgstring
  144. # wird verwendet von REXX
  145.  
  146. # Liefert die LΣnge eines verpackten Argument-Strings.
  147. # LengthArgstring(argstring)
  148. # > argstring: verpackter Argument-String
  149. # < ergebnis: LΣnge
  150.   extern ULONG LengthArgstring (UBYTE* argstring); # siehe rexxsyslib/LengthArgstring
  151. # wird verwendet von REXX
  152.  
  153. # Verpackt eine ganze Argumentliste.
  154. # FillRexxMsg(msg,argcount,mask)
  155. # > msg: Message-Hⁿlle
  156. # > argcount: Anzahl Argumente (>=1, <=16)
  157. # > mask: Bitmaske fⁿr Argumenttyp in der Hⁿlle (jeweils 0 = ASCIZ, 1 = LONG)
  158. # < ergebnis: /=0 falls OK
  159.   extern BOOL FillRexxMsg (struct RexxMsg * msg, ULONG argcount, ULONG mask); # siehe rexxsyslib.library/FillRexxMsg
  160. # wird verwendet von
  161.  
  162. #define RXERRORIMGONE 100L
  163. #define RXADIR "AREXX"  # MsgPort fⁿr Asynchrone Bearbeitung
  164.  
  165. #endif # REXX
  166.  
  167.