home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 1998 October / STC_CD_10_1998.iso / BASE / PD_PATCH / LIES_MIC.H < prev    next >
Encoding:
Text File  |  1998-09-26  |  12.2 KB  |  256 lines

  1. Dieses Patchprogramm dient dazu, den Pure Debugger an moderne Zeiten anzupassen.
  2. Das Problem ist, da₧ (AFAIK) ASH aus lizensrechtlichen Gründen nicht in der Lage
  3. ist ein Update zu erstellen. Somit war Eigeninitiative gefragt, da mir PD
  4. ansonsten gefällt.
  5.  
  6. Mir bekannte Probleme, Voraussetzung für ihr Auftreten und ihr augenblicklicher
  7. Status (G=gelöst, U= Ungelöst,V=Ursache verstanden aber keine befriedigende
  8.  Lösung gefunden):
  9.  
  10. Nr.    GUV    auftreten bei    Beschreibung
  11. 1    V    Multitasking    Beim Verlassen von PD ist manchmal die Maus im 'linke 
  12.                         Maustaste gedrückt' Status
  13.  
  14. 2    G    MagiC            PD kann von PC nicht im Singeltask gestartet werden
  15.  
  16. 3    G    MagiC...        PD schlie₧t bei 'Program reset' noch offene Dateien nicht
  17.                         -> bei einem Neustart führt Fopen zu einem Fehler
  18.  
  19. 4    G    immer            PD benutzt zum Verbiegen nicht den XBRA Standard
  20.  
  21. 5    G    immer            PD verbiegt Vektoren, prüft aber nicht, ob das Programm, das
  22.                         über sie springt auch das eigene ist -> z.B. wird ein 
  23.                         parallel zu PD laufendes Programm beendet (Pterm), so geht 
  24.                         PD davon aus, da₧ dies das zu debuggende Programm war.
  25.                     
  26. 6    V    Grafikkarte        Bildschirmumschalten per Setscreen funktioniert nicht
  27.  
  28. 7    G    immer            Beim ersten RUN gibt PD ein ESC H aus, ist z.B. ein Console
  29.                         Fenster (Gemini,...) offen, so springt der Cursor dort nach
  30.                         oben links
  31.  
  32. 8    G    Multitasking    Teilweise ist der falsche Menütitel sichtbar
  33.  
  34. 9    U    MiNT            hier soll (ich habe keins installiert) PD gar nicht laufen.
  35.  
  36.  
  37. 10    G    2 Monitore        keine Fehlerbehebung sondern eine Erweiterung: wenn 2 Monitore
  38.                         angeschlossen sind, können sie jetzt benutzt werden
  39.  
  40. 11    G    ?                Manchmal soll der Mauszeiger verschwinden.
  41.  
  42. Allgemeines
  43. ***********
  44.  
  45. Um neue Routinen einzubinden müssen natürlich einige Adressen im original PD bekannt sein.
  46. Diese adressen stehen in der Datei PD_ADDR.H. Bisher gibt es diese nur für die mir
  47. vorliegende Version 1.1 vom 22.1.93. Für alle anderen Versionen mu₧ das Programm GET_ADDR.PRG
  48. benutzt werden, dieses versucht die Adressen zu ermitteln. Dabei gibt es mehrere Fehlerquellen:
  49. - Die gesuchten Routinen haben sich geändert -> Adresse wird nicht oder falsch ermittelt
  50. - Irgendwo anders hat sich etwas geändert, so da₧ die gesuchte Routine scheinbar 2mal
  51.     gefunden wird.
  52. Im Falle, da₧ sie keinmal oder mehrmals gefunden wird, wird eine Fehlermeldung ausgegeben. Da nicht
  53. für jeden Patch alle Adressen benötigt werden, kann man trotzdem versuchen dn Patch auszuführen.
  54. Der Patch wird abgebrochen wenn eine nötige Adresse fehlt.
  55.  
  56. Wie funktioniert's
  57. ******************
  58.  
  59. a) im Ordner PD_ADDR ist ein *.h File zu der vorhandenen PD Version. 
  60.     Derzeit ist dort nur V22_1_93.h für die Version 1.1 vom 22.1.93
  61.     das File ins Hauptverzeichnis kopieren, als pd_addr.h. Falls
  62.     es das vom 22.1.93 weiter mit d) sonst mit c)
  63. b) Das Programm GET_ADDR laufen lassen.
  64. c) PATCH neu compilieren/linken ( PATCH.PRJ verwenden)
  65. d) PATCH.PRG ausführen
  66. e) Falls die neuen PD aus PC aufgerufen werden sollen noch PD.PRG
  67.     aus diesem Ordner in das PC Verzeichnis kopieren, vorher das
  68.     Original PD ggf. umbenennen.
  69. f) Testen
  70.  
  71.  
  72. Die einzelnen Probleme und ihre Behebung
  73. ****************************************
  74. 1) linke Maustaste gedrückt
  75. ---------------------------
  76.  
  77. Da Menüs, Fenster u.ä. nicht über AES verwaltet werden, sondern per VDI auf direkt auf
  78. den Monitor gezeichnet werden, sind sie sozusagen für Mausklicks durchsichtig, nur weil
  79. PD im Supervisor läuft kommt es nicht dauernd zu Problemen, aber eben am Programmende.
  80. Ich habe versucht mit wind_update(BEG_MOUSCTRL) das Problem zu lösen, hatte dabei aber
  81. die seltsamsten Effekte.
  82.  
  83. 2) Starten im Singeltaskmodus (MagiC)
  84. -----------------------------
  85.  
  86. Um PD auch aus PC heraus im Singletaskmodus starten zu können habe ich einen Starter
  87. geschrieben (START_PD), der per AV-Message der Shell mitteilt, da₧ sie PD starten soll.
  88. Wird das AV-Protokoll von der Shell unterstützt, sollte sie nachsehen, ob das Programm
  89. als Singletask angemeldet ist, und ggf. so starten. Getestet habe ich es mit Ease 5.01
  90. unter Magic 5.04. Hier klappt es, bis auf eine Kleinigkeit. Beim Starten als Singeltask
  91. werden keine Parameter übergeben. Dies teile ich ASH mit und hoffe, das es bald behoben ist.
  92.  
  93. 3) Offene Dateien
  94. -----------------
  95.  
  96. Falls beim Programmende bzw Abbruchs(des zu debuggenden Programms) noch Dateien offen sind
  97. und das Programm neu gestartet wird, so kann es z.B. unter MagiC zu problemen kommen, da
  98. man eine offene Datei neu öffnen will. Als Lösung werden die Befehle Fcreate, Fopen und Fdelete
  99. protokuliert, und bei Program Reset die noch offenen geschlossen. Dabei werden nur Handles zwischen
  100. 6 und 63 berücksichtigt. Falls dies nicht reicht mu₧ in PDX p_flags entsprechend vergrö₧ert werden,
  101. und alle Routinen die es benutzen angepa₧t werden. Im schlimmsten Fall tritt aber der gleiche Fehler
  102. wie beim Original PD auf.
  103.  
  104. 4) XBRA
  105. -------
  106.  
  107. Bei allen Vektoren die per Setexc verbogen werden, habe ich eine XBRA Struktur eingefügt.
  108. Die Kennung ist 'PDeb' (mu₧ ich noch offiziell anmelden). Die XBRA
  109. Implementation ist noch nicht komplett, deinstalliert wird noch wie
  110. vorher. Bevor ich da etwas änder sind die folgenden Fragen zu beantworten:
  111.  
  112. a) Wenn das zu debuggende Programm selber Vektoren verbiegt, wann
  113.     sollen diese restauriert werden, bei jedem Program Reset, auf
  114.     Wunsch, oder erst beim Beenden des PD
  115. b) dürfen andere Programme die parallel laufen Vektoren verbiegen während
  116.     PD aktiv ist, und damit evtl. einiges durcheinander bringen?
  117.     
  118. Derzeit empfehle ich kein anderes Vektorverbiegendes Programm parallel
  119. laufen zu lassen, zumindest nicht wenn ein Absturz ungelegen käme.
  120. Kein Problem machen solche Programme, wenn sie vor oder nach PD Vektoren
  121. verbiegen, aber eben nicht während der Laufzeit von PD.
  122.  
  123. 5) Aufrufer Testen
  124. ------------------
  125.  
  126. PD überprüft nicht welches Programm über verbogene Vektoren springt. Im Singeltask ist
  127. dies OK, sonst nicht. Der 'schönste' Fehler tritt auf, wenn man parallel ein anderes 
  128. Programm beendet: PD gibt die Meldung aus. Programm beendet ist ist nicht mehr im
  129. RUN-Modus. Das zu debuggende Programm läuft aber weiter, selbst dann noch, wenn 
  130. PD beendet wird. Was das für Folgen das hat (wem gehört der Speicher...) wei₧ ich nicht
  131. ich habe immer vorsichtshalber Reset gedrückt. Jetzt merkt sich PD am Anfang die Adresse
  132. seiner Basepage, und bei jedem Sprung über eine der mit XBRA verbogenen Vektoren (s. 4) )
  133. wird geprüft, ob es PD war oder nicht. Falls nicht wird über den Originalvektor gesprungen.
  134. Der steht ja im XBRA. Dieser Patch ist wie gesagt mit 4) verknüpft, au₧erdem ist er für
  135. 3) nötig, da sonst dort auch Fopen... von anderen Programmen protokuliert würden.
  136.  
  137. 6) Setscreen
  138. ************
  139.  
  140. PD reserviert ST-RAM für den 2. und ggf. 3. Bildschirmspeicher. Dann versucht PD ob Setscreen
  141. funktioniert. Dies würde bei der NOVA-Grafikkarte funktionieren, wenn die Adresse im NOVA-RAM
  142. liegen würde. Allerdings haben meine Versuche fehlgeschlagen. Das Problem scheint darin zu liegen,
  143. das Mxalloc (ein eigenes) negative Adressen zurück geben mu₧ (NOVA-RAM beginnt bei 0xFEC00000)
  144. Sies werde ich aber noch weiterverfolgen.
  145. Als Übergangslösung wird zumindest bei erkannter Grafikkarte kein ST-RAM sondern TT-RAM verwendet.
  146. Wer eine andere Grafikkarte hat mu₧ noch eine Erkennung in v_opn_init1 einfügen, dort steht derzeit:
  147.     if (get_cookie('IMNE',(long *)&icb))
  148.         X_pd.p_bs_m=3;
  149.  
  150. Falls also der IMNE Cookie vorhanden ist, wird Mxalloc mit Modus 3 verwendet, sonst 0. Hier
  151. kann also entweder ins if noch ein '||....' eingefügt werden, oder wenn sicher ist, da₧
  152. immer mit der Grafikkarte gestartet wird kann auch das if ganz rausgeschmissen werden.
  153. Dieser Patch ist nur bei der 1-Monitorlösung drin.
  154.  
  155.  
  156. 7) ESC H
  157. --------
  158.  
  159. Beim ersten RUN gibt PD ein ESC H aus, ist z.B. ein Console    Fenster (Gemini,...) offen, so
  160. springt dort der Cursor dort nach oben links. Ob dies sinnvoll ist oder nicht soll jeder
  161. selber entscheiden, ich habe die 3 Möglichkeiten eingebaut:
  162. a) nie ESC H ausgeben
  163. b) nur beim ersten RUN (wie im original PD)
  164. c) bei jedem RUN
  165.  
  166. 8) Menütitel
  167. ------------
  168.  
  169. Bei Multitaskingsystemen ist teilweise ein falscher Menütitel zu sehen, dies ist zwar nur
  170. unschön, da die richtigen Menüs aufklappen, aber trotzdem nicht OK. Ich habe es nicht mehr
  171. geschafft, alle Fälle zu finden, in denen es auftritt (hängt auch vom eingestellten SWAP-Modus ab).
  172. Es wird jetzt die Menüzeile noch einmal kurz nach Programmstart (1. Aufruf von vq_mouse) ausgegeben.
  173. Au₧erdem kann man jederzeit eine Neuzeichnen veranlassen, indem man in die Menüzeile (Y<18) 
  174. klickt. Am besten natürlich in den rechten Teil, wo kein Menü runterklappt.
  175. Auch dies ist nur für die 1-Monitorversion.
  176.  
  177. 9)    MINT
  178. --------
  179.  
  180. kann ich nichts zu sagen. Ein ausführlicher Bericht an mich, incl. einer Angabe was ich installieren
  181. mu₧, damit die Probleme auftreten, könnte evtl. helfen, aber erst nach dem 10.5.97
  182.  
  183. 10) Zwei Monitore
  184. -----------------
  185.  
  186. Der eigentliche Beginn diese Patches. Es ist mit dieser Version möglich 2 Monitore anzusprechen,
  187. ähnlich wie das Programm SYSMON (sehr zu empfehlen). AES-Ausgaben umlenken ist sehr schwierig,
  188. vor allem auf eine andere Auflösung. Dies ist aber gar nicht nötig, da PD ausschlie₧lich über VDI
  189. ausgibt. Es ist also 'nur' nötig OFF-Screen Bitmaps zu öffnen, und PD deren handle zu geben, statt
  190. den per v_opnvwk erhaltenen. Au₧erdem mu₧ das Zeichnen des Mauscursors selber übernommen werden,
  191. Aber das läuft alles.
  192. Voraussetzungen:
  193. - VDI, da₧    OFF-Screen Bitmaps unterstützt, entweder per v_opnvwk2 (NOVA-VDI u.a.?) oder per
  194.     v_opnbm (NVDI, NOVA u.a. wenn EdDI-Cookie mit Version >=1.1 gesetzt ist.)
  195. - ATARI-kompatibler Monitor und 2. über Grafikkarte (ob es auf MAC oder PC funktioniert ?)
  196.  
  197. Probleme könten auftreten wenn andere Programme auch den 2. Bildschirm benutzen, mit SYSMON
  198. funktioniert es allerdings problemlos zusammen. Sonst ist mir kein Programm bekannt, das den
  199. 2. Monitor benutzt.
  200.  
  201. 11)    Mauszeiger verschwindet.
  202. ----------------------------
  203.  
  204. Da ich diesen Fehler noch nicht selber beobachtet habe, oder mich zumindest nicht daran erinnere,
  205. was wohl hauptsächlich daran liegt, da₧ ich PD fast ausschlie₧lich im Zweimonitorbetrieb verwende,
  206. habe ich nur eine symptomatische Lösung eingebaut. Verschwindet der Mauszeiger, so drückt man die
  207. rechte Maustaste und er sollte wieder da sein. Dies ist bisher von mir ungetestet, sollte aber
  208. funktionieren. Falls jemand es schafft einen reproduzierbaren Zustand zu schaffen, in dem dieser
  209. Fehler auftritt sehe ich mir das gerne nochmal an um ggf. eine vernünftigere Lösung anzubieten.
  210.  
  211. 12) weitere Änderungen
  212. ----------------------
  213.  
  214. wie schon in 9) erwähnt werde ich weiteren Problemen die mir mitgeteilt werden nachgehen.
  215. Der Patch liegt bewust im Source vor, so das jeder selber Erweiterungen machen kann, dies
  216. ist z.B. sonnvoll, wenn ich nicht erreichbar bin, oder wenn es um Probleme geht, die bei mir
  217. nicht nachvollziehbar sind. Über jede Änderung/Erweiterung möchte ich aber unterrichtet werden,
  218. ich werde sie dann allgemein zugänglich machen. Hierzu zählt auch vor allem, wenn Einsprung-
  219. adressen ermittelt werden, die GET_ADDR nicht gefunden hat. Falls dies in der Zeit zwischen
  220. dem 6.1. und 15.4.98 passiert bitte ich diese Adressen in ATARI.Programmieren (Mausgruppe) 
  221. und falls möglich in der PureC Gruppe der ASH-Box bekannt zu geben.
  222.  
  223.  
  224. Fairware
  225. --------
  226.  
  227. Dieses Programm ist Fairware, es darf frei weitergegeben werden. Gegen freiwillige Spenden habe ich
  228. natürlich nichts. 
  229.  
  230. Danksagung
  231. ----------
  232.  
  233. Bernhard Held hat mir mit einer sehr ausführlichen Fehlerbeschreibung
  234. ermöglicht noch in den letzten Stunden vor meiner Reise eine neue Version
  235. herauszugeben.
  236.  
  237. !!!!!!!!!!!!!
  238. ! Achtung    !
  239. !!!!!!!!!!!!!
  240.  
  241. Auf keinen Fall darf PD selbst oder eine hiermit gepatchte Version von PD weitergegeben werden,
  242. ohne die Ausdrückliche Genehmigung von ASH. Der vorliegende Quellcode darf ausschlie₧lich zum
  243. patchen von offiziell erworbenen Versionen des PureDebuggers eingesetzt werden. Dies gilt
  244. vorallem, da einige der Assemblerroutinen (xbra_exc und xbra_Gd_trm) Abwandlungen der Original-
  245. routinen aus PD sind. Diese sind entsprechend gekenzeichnet.
  246.  
  247. Autor
  248. -----
  249.  
  250. Dimitri Junker
  251. E-Mail: Maus:                 Dimitri Junker @ AC3
  252.         Internet:            Dimitri_Junker@AC3.maus.de
  253. oder für lange Mails(>16k):    Junker@popmail.oche.de        
  254.  
  255.  
  256.