home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / DACAPO.LZH / DACAPO / 1B_PIPE / 1B_PIPE.TXT < prev   
Text File  |  1994-01-16  |  7KB  |  152 lines

  1. Messagepipeline Da Capo <-> CyPress
  2. ===================================
  3.  
  4. Hier ist ein kleiner Überblick über die von CyPress und Da Capo verwendete 
  5. 1st-Base-kompatible Messagepipeline. Näheres kann man auch dem 
  6. Beispielprogramm 1B_PIPE.C entnehmen, welches als Programm oder Accessory 
  7. läuft.
  8.  
  9. Die Adressverwaltung mu₧ 4 verschiedene Messagetypen erkennen und verarbeiten 
  10. können. Es mu₧ in jedem Fall eine Antwort abgeschickt werden.
  11.  
  12.  
  13. 1. Allgemeiner Init $1A00 (Abfrage der Programmversion)
  14.    ----------------------------------------------------
  15.  
  16.     +--------------------------+--------------------------------+
  17.     | Input                    | Output                         |
  18.     +--------------------------+--------------------------------+
  19.     | Message_buf [0] = $1A00  | Message_buf [0]   = n.a.       |
  20.     | Message_buf [1] = ACC-ID | Message_buf [1]   = PRG-ID     |
  21.     | Message_buf [2] = PRG-ID | Message_buf [3]   = instcode   |
  22.     |                          | Message_buf [4/5] = versionptr |
  23.     +--------------------------+--------------------------------+
  24.  
  25. ACC-ID:     Die ID von Da Capo.
  26. PRG-ID:     Die ID von CyPress. (An das die Antwort geschickt werden mu₧)
  27. instcode:   >= Null bedeutet Da Capo fehlerfrei initialisiert.
  28.             <  Null können diverse Fehlermeldungen sein.
  29. versionptr: Pointer auf die Programmversion.
  30. n.a.:       nicht ausgewertet.
  31.  
  32. WICHTIG:  Über den Version ptr wird nachgeprüft, welches Programm (bis jetzt 1ST-
  33. ADDRESS und 1ST-BASE) installiert wurde. Vor dem Pointer, der ja nur 
  34. auf eine Versionsnummer zeigt, steht der Name des Programmes. Bei 1ST-BASE 
  35. sieht das folgenderweise aus: "1ST-BASE  V1.00-D" (Zeiger zeigt auf das 
  36. 'V').
  37.  
  38. Anmerkung: Gegenwärtig mu₧ der Eintrag "1ST-BASE  V1.00-D" sein, da das 
  39. Accessory sonst von CyPress nicht als 1st-Base kompatible Adressverwaltung 
  40. erkannt wird.
  41.  
  42.  
  43. 2. Abfrage wichtiger Systemadressen $1B00
  44.    ---------------------------------------
  45.  
  46.     +-------------------------------+-----------------------------+
  47.     | Input                         | Output                      |
  48.     +-------------------------------+-----------------------------+
  49.     | Message_buf [0] = $1B00       | Message_buf [0]   = n.a.    |
  50.     | Message_buf [1] = ACC-ID      | Message_buf [1]   = PRG-ID  |
  51.     | Message_buf [2] = PRG-ID      | Message_buf [2]   = ACC-ID  |
  52.     | Message_buf [3] = file-Nummer | Message_buf [3]   = errcode |
  53.     |                               | Message_buf [4/5] = infoptr |
  54.     +-------------------------------+-----------------------------+
  55.  
  56. ACC-ID:   Die ID von Da Capo.
  57. PRG-ID:   Die ID von CyPress. (An das die Antwort geschickt werden mu₧)
  58. file-Nr:  Nummer der Tabelle, Klemmbrett = 0, Erste Datei = 1, usw.
  59. errcode:  -1 = Tabelle existiert nicht.
  60.            0 = OK, Tabelle nicht selektiert.
  61.            1 = OK, Tabelle selektiert.
  62. infoptr   Pointer auf 2 Langworte:
  63.           msk-len   Anzahl der Symbole
  64.           msk-addr  Pointer auf die Symboltabelle (Feldbezeichner) z.B. 
  65.           "Name","Vorname",...
  66. n.a.      nicht ausgewertet.
  67.  
  68. Anmerkung: Die Symboltabelle hat einen speziellen Aufbau: 1 Längenbyte 
  69. (entspricht der Länge des folgenden Eintrages ohne NULL-Byte, also strlen), 
  70. das Symbol selbst und als Abschlu₧ ein (überflüssiges) NULL-Byte, also z.B. 
  71. '5','F','i','r','m','a','\0'... Da Capo unterstützt nur eine Tabelle, d.h. 
  72. die Symbole in CyPress lauten "1:Firma", "1:Nachname" usw.
  73.  
  74.  
  75. 3. ersten Datensatz holen $1B09 (search first)
  76.    -------------------------------------------
  77.  
  78.     +-------------------------------+-----------------------------+
  79.     | Input                         | Output                      |
  80.     +-------------------------------+-----------------------------+
  81.     | Message_buf [0] = $1B09       | Message_buf [0]   = n.a.    |
  82.     | Message_buf [1] = ACC-ID      | Message_buf [1]   = PRG-ID  |
  83.     | Message_buf [2] = PRG-ID      | Message_buf [2]   = ACC-ID  |
  84.     | Message_buf [3] = file-Nummer | Message_buf [3]   = retcode |
  85.     | Message_buf [4] = sel-type    | Message_buf [4/5] = recptr  |
  86.     | Message_buf [5] = delm1/subst |                             |
  87.     | Message_buf [6] = delm2/subst |                             |
  88.     +-------------------------------+-----------------------------+
  89.  
  90. ACC-ID:   Die ID von Da Capo.
  91. PRG-ID:   Die ID von CyPress. (An das die Antwort geschickt werden mu₧)
  92. file-Nr:  Nummer der Tabelle, Klemmbrett = 0, Erste Datei = 1, usw.
  93. sel-type  0 = aktuelle Liste, nur angewählte Datensätze
  94.           1 = aktuelle Liste, nur nicht angewählte Datensätze
  95.           2 = alle Datensätze in aktueller Liste
  96.           3 = Gesamtliste
  97. delm1     (high-byte) normale Feldtrennung.
  98. (subst1)  (low-byte) Ersatzzeichen, falls innerhalb von Feldern vorhanden.
  99. delm2     (high-byte) Mehrfachfeldtrennung.
  100. (subst2)  (low-byte) Ersatzzeichen, falls innerhalb von Feldern vorhanden.
  101. retcode:  -1 = kein Datensatz gefunden.
  102.           Sonst Anzahl der Datenfelder.
  103. recptr    Pointer auf Datensatz (0 - terminiert)
  104. n.a.      nicht ausgewertet.
  105.  
  106. delm1 ist ',' und subst1 ist ';' delm2 und subst2 werden nicht verwendet
  107.  
  108.  
  109. 4. nächsten Datensatz holen $1B0A (search next)
  110.    --------------------------------------------
  111.  
  112.     +-------------------------------+-----------------------------+
  113.     | Input                         |                             |
  114.     +-------------------------------+-----------------------------+
  115.     | Message_buf [0] = $1B0A       | Message_buf [0]   = n.a.    |
  116.     | Message_buf [1] = ACC-ID      | Message_buf [1]   = PRG-ID  |
  117.     | Message_buf [2] = PRG-ID      | Message_buf [2]   = ACC-ID  |
  118.     | Message_buf [3] = file-Nummer | Message_buf [3]   = retcode |
  119.     | Message_buf [4] = sel-type    | Message_buf [4/5] = recptr  |
  120.     | Message_buf [5] = delm1/subst |                             |
  121.     | Message_buf [6] = delm2/subst |                             |
  122.     +-------------------------------+-----------------------------+
  123.  
  124. ACC-ID:   Die ID von Da Capo.
  125. PRG-ID:   Die ID von CyPress. (An das die Antwort geschickt werden mu₧)
  126. file-Nr:  Nummer der Tabelle. Klemmbrett = 0, Erste Datei = 1, usw.
  127. sel-type  0 = aktuelle Liste, nur angewählte Datensätze
  128.           1 = aktuelle Liste, nur nicht angewählte Datensätze
  129.           2 = alle Datensätze in aktueller Liste
  130.           3 = Gesamtliste
  131. delm1     (high-byte) normale Feldtrennung.
  132.           (low-byte) Ersatzzeichen, falls innerhalb von Feldern vorhanden.
  133. delm2     (high-byte) Mehrfachfeldtrennung.
  134.           (low-byte) Ersatzzeichen, falls innerhalb von Feldern vorhanden.
  135. retcode:  -1 = kein Datensatz gefunden.
  136.           Sonst Anzahl der Datenfelder.
  137. recptr    Pointer auf Datensatz (0 - terminiert)
  138. n.a.      nicht ausgewertet.
  139.  
  140. WICHTIG:  Die Befehle Search_first und Search_next müssen für jede Datei 
  141. getrennt bearbeitet werden, da CyPress durchaus folgendes machen könnte:
  142.           - Search first auf alle Dateien 1,2,3,...
  143.           - Search next auf 1
  144.           - Search next auf 1
  145.           - Search next auf 3
  146.           - Search next auf 1
  147.           - Search next auf 1
  148.           - Search next auf 3
  149.           - usw.
  150.  
  151. ╜1992/93, Sascha Lüdemann und Francisco Mendez
  152.