home *** CD-ROM | disk | FTP | other *** search
- Dieses Patchprogramm dient dazu, den Pure Debugger an moderne Zeiten anzupassen.
- Das Problem ist, da₧ (AFAIK) ASH aus lizensrechtlichen Gründen nicht in der Lage
- ist ein Update zu erstellen. Somit war Eigeninitiative gefragt, da mir PD
- ansonsten gefällt.
-
- Mir bekannte Probleme, Voraussetzung für ihr Auftreten und ihr augenblicklicher
- Status (G=gelöst, U= Ungelöst,V=Ursache verstanden aber keine befriedigende
- Lösung gefunden):
-
- Nr. GUV auftreten bei Beschreibung
- 1 V Multitasking Beim Verlassen von PD ist manchmal die Maus im 'linke
- Maustaste gedrückt' Status
-
- 2 G MagiC PD kann von PC nicht im Singeltask gestartet werden
-
- 3 G MagiC... PD schlie₧t bei 'Program reset' noch offene Dateien nicht
- -> bei einem Neustart führt Fopen zu einem Fehler
-
- 4 G immer PD benutzt zum Verbiegen nicht den XBRA Standard
-
- 5 G immer PD verbiegt Vektoren, prüft aber nicht, ob das Programm, das
- über sie springt auch das eigene ist -> z.B. wird ein
- parallel zu PD laufendes Programm beendet (Pterm), so geht
- PD davon aus, da₧ dies das zu debuggende Programm war.
-
- 6 V Grafikkarte Bildschirmumschalten per Setscreen funktioniert nicht
-
- 7 G immer Beim ersten RUN gibt PD ein ESC H aus, ist z.B. ein Console
- Fenster (Gemini,...) offen, so springt der Cursor dort nach
- oben links
-
- 8 G Multitasking Teilweise ist der falsche Menütitel sichtbar
-
- 9 U MiNT hier soll (ich habe keins installiert) PD gar nicht laufen.
-
-
- 10 G 2 Monitore keine Fehlerbehebung sondern eine Erweiterung: wenn 2 Monitore
- angeschlossen sind, können sie jetzt benutzt werden
-
- 11 G ? Manchmal soll der Mauszeiger verschwinden.
-
- Allgemeines
- ***********
-
- Um neue Routinen einzubinden müssen natürlich einige Adressen im original PD bekannt sein.
- Diese adressen stehen in der Datei PD_ADDR.H. Bisher gibt es diese nur für die mir
- vorliegende Version 1.1 vom 22.1.93. Für alle anderen Versionen mu₧ das Programm GET_ADDR.PRG
- benutzt werden, dieses versucht die Adressen zu ermitteln. Dabei gibt es mehrere Fehlerquellen:
- - Die gesuchten Routinen haben sich geändert -> Adresse wird nicht oder falsch ermittelt
- - Irgendwo anders hat sich etwas geändert, so da₧ die gesuchte Routine scheinbar 2mal
- gefunden wird.
- Im Falle, da₧ sie keinmal oder mehrmals gefunden wird, wird eine Fehlermeldung ausgegeben. Da nicht
- für jeden Patch alle Adressen benötigt werden, kann man trotzdem versuchen dn Patch auszuführen.
- Der Patch wird abgebrochen wenn eine nötige Adresse fehlt.
-
- Wie funktioniert's
- ******************
-
- a) im Ordner PD_ADDR ist ein *.h File zu der vorhandenen PD Version.
- Derzeit ist dort nur V22_1_93.h für die Version 1.1 vom 22.1.93
- das File ins Hauptverzeichnis kopieren, als pd_addr.h. Falls
- es das vom 22.1.93 weiter mit d) sonst mit c)
- b) Das Programm GET_ADDR laufen lassen.
- c) PATCH neu compilieren/linken ( PATCH.PRJ verwenden)
- d) PATCH.PRG ausführen
- e) Falls die neuen PD aus PC aufgerufen werden sollen noch PD.PRG
- aus diesem Ordner in das PC Verzeichnis kopieren, vorher das
- Original PD ggf. umbenennen.
- f) Testen
-
-
- Die einzelnen Probleme und ihre Behebung
- ****************************************
- 1) linke Maustaste gedrückt
- ---------------------------
-
- Da Menüs, Fenster u.ä. nicht über AES verwaltet werden, sondern per VDI auf direkt auf
- den Monitor gezeichnet werden, sind sie sozusagen für Mausklicks durchsichtig, nur weil
- PD im Supervisor läuft kommt es nicht dauernd zu Problemen, aber eben am Programmende.
- Ich habe versucht mit wind_update(BEG_MOUSCTRL) das Problem zu lösen, hatte dabei aber
- die seltsamsten Effekte.
-
- 2) Starten im Singeltaskmodus (MagiC)
- -----------------------------
-
- Um PD auch aus PC heraus im Singletaskmodus starten zu können habe ich einen Starter
- geschrieben (START_PD), der per AV-Message der Shell mitteilt, da₧ sie PD starten soll.
- Wird das AV-Protokoll von der Shell unterstützt, sollte sie nachsehen, ob das Programm
- als Singletask angemeldet ist, und ggf. so starten. Getestet habe ich es mit Ease 5.01
- unter Magic 5.04. Hier klappt es, bis auf eine Kleinigkeit. Beim Starten als Singeltask
- werden keine Parameter übergeben. Dies teile ich ASH mit und hoffe, das es bald behoben ist.
-
- 3) Offene Dateien
- -----------------
-
- Falls beim Programmende bzw Abbruchs(des zu debuggenden Programms) noch Dateien offen sind
- und das Programm neu gestartet wird, so kann es z.B. unter MagiC zu problemen kommen, da
- man eine offene Datei neu öffnen will. Als Lösung werden die Befehle Fcreate, Fopen und Fdelete
- protokuliert, und bei Program Reset die noch offenen geschlossen. Dabei werden nur Handles zwischen
- 6 und 63 berücksichtigt. Falls dies nicht reicht mu₧ in PDX p_flags entsprechend vergrö₧ert werden,
- und alle Routinen die es benutzen angepa₧t werden. Im schlimmsten Fall tritt aber der gleiche Fehler
- wie beim Original PD auf.
-
- 4) XBRA
- -------
-
- Bei allen Vektoren die per Setexc verbogen werden, habe ich eine XBRA Struktur eingefügt.
- Die Kennung ist 'PDeb' (mu₧ ich noch offiziell anmelden). Die XBRA
- Implementation ist noch nicht komplett, deinstalliert wird noch wie
- vorher. Bevor ich da etwas änder sind die folgenden Fragen zu beantworten:
-
- a) Wenn das zu debuggende Programm selber Vektoren verbiegt, wann
- sollen diese restauriert werden, bei jedem Program Reset, auf
- Wunsch, oder erst beim Beenden des PD
- b) dürfen andere Programme die parallel laufen Vektoren verbiegen während
- PD aktiv ist, und damit evtl. einiges durcheinander bringen?
-
- Derzeit empfehle ich kein anderes Vektorverbiegendes Programm parallel
- laufen zu lassen, zumindest nicht wenn ein Absturz ungelegen käme.
- Kein Problem machen solche Programme, wenn sie vor oder nach PD Vektoren
- verbiegen, aber eben nicht während der Laufzeit von PD.
-
- 5) Aufrufer Testen
- ------------------
-
- PD überprüft nicht welches Programm über verbogene Vektoren springt. Im Singeltask ist
- dies OK, sonst nicht. Der 'schönste' Fehler tritt auf, wenn man parallel ein anderes
- Programm beendet: PD gibt die Meldung aus. Programm beendet ist ist nicht mehr im
- RUN-Modus. Das zu debuggende Programm läuft aber weiter, selbst dann noch, wenn
- PD beendet wird. Was das für Folgen das hat (wem gehört der Speicher...) wei₧ ich nicht
- ich habe immer vorsichtshalber Reset gedrückt. Jetzt merkt sich PD am Anfang die Adresse
- seiner Basepage, und bei jedem Sprung über eine der mit XBRA verbogenen Vektoren (s. 4) )
- wird geprüft, ob es PD war oder nicht. Falls nicht wird über den Originalvektor gesprungen.
- Der steht ja im XBRA. Dieser Patch ist wie gesagt mit 4) verknüpft, au₧erdem ist er für
- 3) nötig, da sonst dort auch Fopen... von anderen Programmen protokuliert würden.
-
- 6) Setscreen
- ************
-
- PD reserviert ST-RAM für den 2. und ggf. 3. Bildschirmspeicher. Dann versucht PD ob Setscreen
- funktioniert. Dies würde bei der NOVA-Grafikkarte funktionieren, wenn die Adresse im NOVA-RAM
- liegen würde. Allerdings haben meine Versuche fehlgeschlagen. Das Problem scheint darin zu liegen,
- das Mxalloc (ein eigenes) negative Adressen zurück geben mu₧ (NOVA-RAM beginnt bei 0xFEC00000)
- Sies werde ich aber noch weiterverfolgen.
- Als Übergangslösung wird zumindest bei erkannter Grafikkarte kein ST-RAM sondern TT-RAM verwendet.
- Wer eine andere Grafikkarte hat mu₧ noch eine Erkennung in v_opn_init1 einfügen, dort steht derzeit:
- if (get_cookie('IMNE',(long *)&icb))
- X_pd.p_bs_m=3;
-
- Falls also der IMNE Cookie vorhanden ist, wird Mxalloc mit Modus 3 verwendet, sonst 0. Hier
- kann also entweder ins if noch ein '||....' eingefügt werden, oder wenn sicher ist, da₧
- immer mit der Grafikkarte gestartet wird kann auch das if ganz rausgeschmissen werden.
- Dieser Patch ist nur bei der 1-Monitorlösung drin.
-
-
- 7) ESC H
- --------
-
- Beim ersten RUN gibt PD ein ESC H aus, ist z.B. ein Console Fenster (Gemini,...) offen, so
- springt dort der Cursor dort nach oben links. Ob dies sinnvoll ist oder nicht soll jeder
- selber entscheiden, ich habe die 3 Möglichkeiten eingebaut:
- a) nie ESC H ausgeben
- b) nur beim ersten RUN (wie im original PD)
- c) bei jedem RUN
-
- 8) Menütitel
- ------------
-
- Bei Multitaskingsystemen ist teilweise ein falscher Menütitel zu sehen, dies ist zwar nur
- unschön, da die richtigen Menüs aufklappen, aber trotzdem nicht OK. Ich habe es nicht mehr
- geschafft, alle Fälle zu finden, in denen es auftritt (hängt auch vom eingestellten SWAP-Modus ab).
- Es wird jetzt die Menüzeile noch einmal kurz nach Programmstart (1. Aufruf von vq_mouse) ausgegeben.
- Au₧erdem kann man jederzeit eine Neuzeichnen veranlassen, indem man in die Menüzeile (Y<18)
- klickt. Am besten natürlich in den rechten Teil, wo kein Menü runterklappt.
- Auch dies ist nur für die 1-Monitorversion.
-
- 9) MINT
- --------
-
- kann ich nichts zu sagen. Ein ausführlicher Bericht an mich, incl. einer Angabe was ich installieren
- mu₧, damit die Probleme auftreten, könnte evtl. helfen, aber erst nach dem 10.5.97
-
- 10) Zwei Monitore
- -----------------
-
- Der eigentliche Beginn diese Patches. Es ist mit dieser Version möglich 2 Monitore anzusprechen,
- ähnlich wie das Programm SYSMON (sehr zu empfehlen). AES-Ausgaben umlenken ist sehr schwierig,
- vor allem auf eine andere Auflösung. Dies ist aber gar nicht nötig, da PD ausschlie₧lich über VDI
- ausgibt. Es ist also 'nur' nötig OFF-Screen Bitmaps zu öffnen, und PD deren handle zu geben, statt
- den per v_opnvwk erhaltenen. Au₧erdem mu₧ das Zeichnen des Mauscursors selber übernommen werden,
- Aber das läuft alles.
- Voraussetzungen:
- - VDI, da₧ OFF-Screen Bitmaps unterstützt, entweder per v_opnvwk2 (NOVA-VDI u.a.?) oder per
- v_opnbm (NVDI, NOVA u.a. wenn EdDI-Cookie mit Version >=1.1 gesetzt ist.)
- - ATARI-kompatibler Monitor und 2. über Grafikkarte (ob es auf MAC oder PC funktioniert ?)
-
- Probleme könten auftreten wenn andere Programme auch den 2. Bildschirm benutzen, mit SYSMON
- funktioniert es allerdings problemlos zusammen. Sonst ist mir kein Programm bekannt, das den
- 2. Monitor benutzt.
-
- 11) Mauszeiger verschwindet.
- ----------------------------
-
- Da ich diesen Fehler noch nicht selber beobachtet habe, oder mich zumindest nicht daran erinnere,
- was wohl hauptsächlich daran liegt, da₧ ich PD fast ausschlie₧lich im Zweimonitorbetrieb verwende,
- habe ich nur eine symptomatische Lösung eingebaut. Verschwindet der Mauszeiger, so drückt man die
- rechte Maustaste und er sollte wieder da sein. Dies ist bisher von mir ungetestet, sollte aber
- funktionieren. Falls jemand es schafft einen reproduzierbaren Zustand zu schaffen, in dem dieser
- Fehler auftritt sehe ich mir das gerne nochmal an um ggf. eine vernünftigere Lösung anzubieten.
-
- 12) weitere Änderungen
- ----------------------
-
- wie schon in 9) erwähnt werde ich weiteren Problemen die mir mitgeteilt werden nachgehen.
- Der Patch liegt bewust im Source vor, so das jeder selber Erweiterungen machen kann, dies
- ist z.B. sonnvoll, wenn ich nicht erreichbar bin, oder wenn es um Probleme geht, die bei mir
- nicht nachvollziehbar sind. Über jede Änderung/Erweiterung möchte ich aber unterrichtet werden,
- ich werde sie dann allgemein zugänglich machen. Hierzu zählt auch vor allem, wenn Einsprung-
- adressen ermittelt werden, die GET_ADDR nicht gefunden hat. Falls dies in der Zeit zwischen
- dem 6.1. und 15.4.98 passiert bitte ich diese Adressen in ATARI.Programmieren (Mausgruppe)
- und falls möglich in der PureC Gruppe der ASH-Box bekannt zu geben.
-
-
- Fairware
- --------
-
- Dieses Programm ist Fairware, es darf frei weitergegeben werden. Gegen freiwillige Spenden habe ich
- natürlich nichts.
-
- Danksagung
- ----------
-
- Bernhard Held hat mir mit einer sehr ausführlichen Fehlerbeschreibung
- ermöglicht noch in den letzten Stunden vor meiner Reise eine neue Version
- herauszugeben.
-
- !!!!!!!!!!!!!
- ! Achtung !
- !!!!!!!!!!!!!
-
- Auf keinen Fall darf PD selbst oder eine hiermit gepatchte Version von PD weitergegeben werden,
- ohne die Ausdrückliche Genehmigung von ASH. Der vorliegende Quellcode darf ausschlie₧lich zum
- patchen von offiziell erworbenen Versionen des PureDebuggers eingesetzt werden. Dies gilt
- vorallem, da einige der Assemblerroutinen (xbra_exc und xbra_Gd_trm) Abwandlungen der Original-
- routinen aus PD sind. Diese sind entsprechend gekenzeichnet.
-
- Autor
- -----
-
- Dimitri Junker
- E-Mail: Maus: Dimitri Junker @ AC3
- Internet: Dimitri_Junker@AC3.maus.de
- oder für lange Mails(>16k): Junker@popmail.oche.de
-
-
-