System Vektor Anzeiger ====================== (c) 1989 by Stephan Gerle Das Programm VECSHOW dient dazu, sich alle (so weit bekannt) Systemvektoren anzeigen zu lassen. V2.1: VecShow l„uft jetzt auch auf dem TT. Dazu wird w„hrend VecShow l„uft ein Bus und Adresserror- handler installiert, der den XBRA-Id VECS hat. Dieser Handler wird automatisch wieder deinstalliert, nachdem VecShow fertig ist. Ebenso wird ein Handler fr etv_term installiert, der bei unbeabsichtigtem Abbruch die Vektoren wieder zurckbiegt. Cookie Routinen wurden komplett berarbeitet. V1.8: Es werden die im System installierten Cookies angezeigt. Z.B. Gemini und Maccel2 installieren je einen Cookie. Es werden nur noch die relevanten Ausgaben nach stdout geschrieben. Der Kopf und „hnliches geht nach stderr. Neue Option -c: Es werden nur die Cookies angezeigt. V1.71:Jetzt mžte der Fehler mit dem Stack aber endgltig behoben sein. V1.7: Dummerweise war der Stack in V1.6 etwas zu klein. Durch einen Fehler im Linker von TC 2.0 ist das nicht aufgefallen. V1.6: Vektoren aus LineA-Variablen sind implementiert. Dazu geh”ren auch die Mausvektoren der VDI-Workstation Bildschirm Neuer Switch: -x es werden *nur* die XBRA-kompatible verbogenen Vektoren angezeigt. V1.5: Die Sprungliste fr BIOS-Ein/Ausgabefunktionen wird mit bercksichtigt. V1.4: Adressen, die ins ROM zeigen, werden nur noch angezeigt, wenn der Switch -v bei Programmstart mit angegeben wird. V1.3: Die TOS Versionsnummer und das Entstehungsdatum des TOS wird angezeigt. Zu der Adresse des Vektors erh„lt man den dazugeh”rigen Namen, eine symbolische 4 Stellige Kennzeichnung sowie die Sprungadresse (also den Inhalt der Speicherstelle des Vektors). Als symbolische Kennzeichnung gibt es '????', 'ROM ' , 'PORT' sowie eine beliebige 4 stellige Buchstabenfolge, die aus XBRA-Informationen gewonnen wird. 'ROM ' erscheint dann, wenn der Vektor in den Bereich von $FC0000 bis $FF0000 zeigt. 'PORT' erscheint bei den Adressen von $FA0000 bis $FC0000. '????' erscheint immer dann, wenn 'ROM ' und 'PORT' nicht zutrifft, und das Programm den Vektor nicht XBRA-kompatibel verbogen hat. Wenn ein Vektor XBRA-kompatibel verbogen wurde, so wird die Kennung des Programms ausgegeben und die Vektorliste weiter abgegangen. So klinkt sich z.B. HaBoo in hdv_rw ein. Als Ausgabe erscheint dann z.B.: $000476 hdv_rw HABO $014710 ???? $00ca7e AHDI ist nicht XBRA-kompatibel --^ VecShow kennt 3 Schalter, womit die Anzahl der Anzeigen ausgew„hlt werden kann: -v: S„mtliche Vektoren werden angezeigt. Also erscheinen die Kennungen ROM, ????, PORT und die XBRA-Id's. -x: Es werden nur die XBRA-Id's angezeigt. -c: Es werden nur die Cookies angezeigt. Kein Switch: Es werden nur Vektoren, die nicht ins ROM zeigen, und die Cookies angezeigt. Damit ein Vektor von Vecshow als XBRA-kompatibel erkannt werden kann, muž die sogenannte XBRA-Struktur vor der Stelle stehn, auf die der Vektor zeigt. In Assembler kann man das z.B. so machen. LINEA equ 28 init: move.l LINEA,d0 move.l d0,xb_ov move.l #newadr,LINEA ... .dc.l 'XBRA' ; in Grožbuchstaben (wichtig) .dc.l 'TEST' ; ID des Programms xb_ov: .dc.l 0 newadr: ... In C hat die Struktur folgendes Aussehen: typedef struct /* XBRA-Struktur */ { long xb_id; /* Sollte 'XBRA' enthalten. Sonst kein XBRA */ long xb_pid; /* ID des Programms */ long xb_ov; /* Alter Wert des Vektors */ } XBRA; Vorteile von XBRA sind: 1. Fr den Benutzer ist (mittels Vecshow) ersichtlich, welches Programm sich in welche Vektoren reinh„ngt. 2. Ein Programm kann leicht erkennen, ob es schon installiert ist. Dies ist sogar dann noch m”glich, wenn ein anderes Programm den selben Vektor (XBRA-kompatibel) verbiegt, denn dann brauch das Programm sich nur durch die Liste der installierten Programme (mittels xb_ov) durchhangeln, bis es auf einen nicht XBRA-kompatiblen Vektor (meist das ROM) oder auf seinen eigenen ID st”žt. 3. Ein Programm kann sich wieder deinstallieren, ohne andere Programme zu beeinflussen. Falls sich nach Programm A also Programm B in den Vektor Z ein- geklinkt hat, so brauch Programm A zum Deinstallieren nur seinen xb_ov in xb_ov der XBRA-Struktur von Programm B reinschreiben. Wrde Programm A einfach nur den alten Wert des Vektor's Z wiederherstellen, so w„re Programm B auch aus dem Vektor Z ausgeh„ngt. Zeigt ein Vektor auf Adresse 0, so wird zu diesem Vektor nichts(!) ausgegeben. Angezeigt werden alle dokumentierten Systemvektoren im Bereich von $0 bis $512 basierend auf dem Profibuch 1. Auflage. Weiterhin werden die Vektoren, die man mit Kbdvbase() erh„lt, aus- gewertet. Es werden soviele VBL-Vektoren ausgewertet, wie in _nvbls angegeben sind. Sollte der Line-A-Vektor nicht ins Rom zeigen, so werden zus„tzlich noch die Startadressen der Line-A-Routinen angezeigt. Diese Vektoren sollten normalerweise nicht erscheinen, da der LineA-Traphandler bei ROM-TOS immer im ROM liegt. Bei RAM-TOS werden diese Vektoren allerdings angezeigt, da sie ja auch ziemlich leicht zu ver„ndern sind. Geschrieben wurde Vecshow in Turbo C 2.0. Adresse: -------- Stephan Gerle Ruthstr. 8 4600 Dortmund/Oespel Tel.: 0231/652535 Online: Maus Net: Maus DO: Stephan Gerle @ DO PS.: Das Programm VecShow darf von jedem zusammen mit diesem Text kopiert werden. Ein kommerzieller Vertrieb - dazu z„hlen auch PD-Vers„nde, die mehr als den Diskettenpreis verlangen - ist hiermit ausdrcklich untersagt. Fr Anregungen und Bugreports bin ich immer zu haben.