Turbo Assembler
TurboAss ½1989 ä-soft von Markus Fritze & S”ren Hellwig Version 1.7 Markus Fritze, S”ren Hellwig M„rz 1990 1.1 Turbo-Ass Kurzanleitung 1 1 Allgemeines 1.1 Einleitung Nach langem hin und her haben wir uns entschlossen unser Assembler-Paket als Shareware auf den Markt zu werfen. Der Assembler wurde vormals durch OMIKRON.Software unter dem Namen OMIKRON.Assembler verkauft. Die Shareware-Version ist jedoch eine erweiterte Version des OMIKRON.Assemblers. Sie enth„lt weniger Fehler, weitere Features und ist noch ein wenig schneller. Zum Paket geh”rt (natrlich) auch ein Debugger, der Bugaboo (vormals OMIKRON.Debugger). Somit kann nun jeder User in den Genuž eines schnellen und leistungsf„higen Assemblers und Debuggers kommen; zumal es zwar viele Programmiersprachen als Shareware bzw. PD gibt, aber noch keinen (vernnftigen) Assembler. DIE FIRMA OMIKRON.SOFTWARE HAT NICHTS MIT DIESEM ASSEMBLER-PAKET ZU TUN. ä-SOFT IST ALLEINIGER INHABER ALLER RECHTE AM ASSEMBLER UND DEBUGGER! Dieser Text ist nicht als eine Anleitung gedacht, sondern nur als Kurzeinfhrung in den Assembler. Die vollst„ndig Anleitung auf ca. 240 Seiten gibt es bei den Autoren. Zur Not kann auch das ST-Magazin 11/89 und 12/89 herangezogen werden. Dort hat die Referenzkarte den Assembler und Debugger zum Thema. Nachtrag: Es fehlen ziemlich viele Features in diesem README, im Vergleich zur Anleitung, es wird mir einfach zu viel... (Markus) 1.2 Features des Turbo-Ass - Einfache und durchdachte (!) Bedienung. - Der Assembler bersetzt durchschnittlich 1 300 000 Zeilen pro Minute. - Syntax-Check bereits bei der Eingabe. Teilweise sogar Semantik-Check! Es werden sowohl Tippfehler, wie auch doppelt vergebene Symbolnamen bereits bei der Eingabe gemeldet. - Viele besonders leistungsf„hige Funktionen des Editors, z.B. Suche von Symbolen, Ersetzen von Symbolen, Einklappen von Programmteilen (wie in GFA-Basic 3.0), u.v.a.m. - Fantastische Kombination von Debugger und Assembler. Bei einem Absturz eines Programms im Debugger kann der Assembler automatisch die Absturzadresse in eine 1.1 Turbo-Ass Kurzanleitung 2 Zeilennummer umrechnen!!! - Eigene Tastatur- und Bildschirmtreiber => selbst bei h„rtesten Programmabstrzen funktionieren Assembler und Debugger noch. - KEINE Makros!!! - u.v.a.m. 1.3 Was ist Shareware? - Jeder kann/darf/muž/soll den Turbo-Ass kopieren! Dabei mssen aber stets ALLE (!) Dateien mitkopiert werden. - Wem den Assembler gef„llt, sollte uns fairerweise 50DM berweisen. Das hat fr alle Parteien Vorteile: Fr uns: - Wir arbeiten nicht ganz umsonst (im Turbo-Ass stecken 3 "Mannjahre" Arbeit) Fr den User: - Er bekommt eine 240 Seiten starke Anleitung - Er bekommt die neuste Version mit pers”nlicher Seriennummer - Er bekommt das erste Update kostenlos - Er erh„lt bei gefundenen Fehlern eine fehlerfreie Version - Er kann sich bei Problemen an uns wenden - Er bekommt fr jeden User, der bei Registierung seine Seriennummer angibt, 10DM (allerdings maximal 10 mal, wir wollen keine PD-Vertriebe finanzieren). Das Geld ist also eine "Entsch„digung" fr das Vorfhren des Assemblers und das Kopieren. - Nochmal: L„žt sich jemand registrieren, so gibt er die Seriennummer des vorher benutzen Assemblers an. Der User, dem diese Seriennummer geh”rt, bekommt vom uns 10DM. Alles klar? Wer diese Angebot annehmen will, wende sich bitte an: Markus Fritze Birkhahnkamp 38 2000 Norderstedt 1 Tel: 040/5223955 (ab 18Uhr, auch am Wochenende (NIE VOR 12UHR!!!)) 1.1 Turbo-Ass Kurzanleitung 3 BLZ: 20069111, Norderstedter Bank Kontonummer: 407860 Ich bitte allerdings teilweise um etwas Geduld; ich hoffe die meiste Post am selben Tag zu erledigen, wenn aber keine Anleitungen mehr da sind oder wenn wir gerade einige Neuerungen implementieren, kann es schon mal etwas dauern (Wenn nach 2-3 Wochen allerdings nix passiert kann eine Anfrage kl„ren, ob die Post auch angekommen ist). 1.4 Hardwarevorraussetzungen Atari ST mit 512k, wobei allerdings erst ab 1Mb Assembler und Debugger gemeinsam im RAM gehalten werden k”nnen, was seinerseits wieder ein sehr wirksames Debugging erst erm”glicht. Die hohe Aufl”sung bietet sich wohl eher an, als die mittlere Aufl”sung (Ist einfach augenfreundlicher); aber der Turbo-Ass l„uft sowohl in Farbe, wie auch in S/W. 1.5 Installation TURBOASS.PRG, TURBOASS.CFG, TURBOASS.DAT, BUGABOO.PRG und CALL.PRG auf eine Disk, bzw. in einen Ordner kopieren. Das war's. 1.6 Zu den Autoren S”ren Hellwig und ich (Markus Fritze) sind zur Zeit 21 bzw. 22 Jahre alt und studieren technische Informatik an der FH-Wedel bei Hamburg. Deswegen bitte wir auch teilweise um etwas Geduld, wenn Anfragen nach Updates, etc. kommen; das Studium geht leider vor. Zudem beantworte ich jeden Brief, der Rckporto beinhaltet. Post ohne Rckporto wird nur in Ausnahmef„llen beantwortet (Zur Registrierung ist KEIN Rckporto n”tig!) 1.7 Haftung/Rechte Alle Rechte am Turbo-Ass liegen bei ä-soft. Wobei jeder seinen Assembler beliebig kopieren darf. Auch das Upload in Mailboxen ist erlaubt. Der Turbo-Ass und das Handbuch wurden mit gr”žter Sorgfalt erstellt. Leider sind Fehler nie auzuschliežen, deswegen m”chten wir sie darauf hinweisen, daž wir weder eine Garantie fr die Fehlerfreiheit geben, noch die Haftung fr irgendwelche Folgen, gleich ob durch Fehler im Handbuch, in der Software oder in der Hardware verursacht, bernehmen k”nnen. Es wird wohl jeder verstehen, daž wir keine besondere Begeisterung verspren, wenn jemand behauptet, der Assembler habe im seine 1.1 Turbo-Ass Kurzanleitung 4 Platte mit Sourcetexten im Werte von mehreren Millionen Mark zerst”rt, uns auf Schadenersatz verklagen will. Also: Benutzung auf eigene Gefahr! (Dieser Abschnitt gilt wohl bei allen Softwarefirmen. 2 Der Assembler 2.1 Benutzeroberfl„che Die Benutzeroberfl„che ist nicht von GEM o.„. abh„ngig, d.h. neu programmiert, das hat den Vorteil, daž der Assembler sicherer gegen Abstrze und auch schneller ist. Zudem konnten einige nette Features implementiert werden. Trotzdem sollte die Umstellung von GEM wohl nicht ins Gewicht fallen. Die kleinen Buchstaben in den Buttons bewirken mit ALT zusammen gedrckt, das Anklicken des Buttons wie mit der Maus. 2.2 Die Maus im Assembler Man kann mit der Maus eine ganze Menge Dinge machen, hier sei jedoch nur die Benutzung im Assembler erkl„rt: Im Sourcetext: Linke Maustaste: Einfachklick: Cursor setzen langer Klick: Block markieren (mit Scrollen) Doppelklick : Sprung zur Definition des angeklickten Symbols Rechte Maustaste: Einfachklick: Sourcetext scrollen (nur am Rand klicken!) Doppelklick : Formel in den Rechner bernehmen In der Statuszeile: einfach alles mal mit links bzw. rechts anklicken... 2.3 Der Editor Jede eingegebene Zeile wird automatisch auf ihren Syntax und teilweise auch auf die Semantik berprft. Wenn die Zeile fehlerfrei ist, wird sie sofort formatiert ausgegeben. Bei einem Eingabefehler wird in der Statuszeile die Fehlermeldung angezeigt. 2.4 Besonderheiten Als Adressierungsart wird auch "absolut short" direkt untersttzt. Dazu ist hinter der Adresse ".w" anzugeben. 1.1 Turbo-Ass Kurzanleitung 5 Line-A-Routinen k”nnen mit "LINEA #Nummer" eingegeben werden. Der Assembler wandelt nicht-Motorola Eingaben wenn m”glich automatisch in das Motorola-Format um. 2.5 Optimierungen Der Assembler kann einige Optimierungen selbstst„ndig finden. Dazu geh”ren: Absolut lang -> relativ relativ -> relativ short Absolut lang -> PC-relativ MOVE.L #xx,A0 -> LEA xx,A0 (wenn dannach PC-relativ was bringt) MOVE.L #xx,-(SP)-> PEA xx,A0 (wenn dannach PC-relativ was bringt) Ferner werden einige fr C-Compiler typische Sprnge gefunden (z.B. 2 aufeinanderfolgende BRA, wobei das 2.BRA nie angesprungen werden kann) Wenn der Assembler optimieren kann, erscheint nach dem Assemblieren ein Button "ANPASSEN", welcher die Optimierungen im Sourcetext vornimmt. Dabei kann auch zurck-"optimiert" werden, wenn dies n”tig sein sollte. 2.6 Formeln Alles was so Standard ist: + - * / ! (log.NOT) ~ (NOT bzw. EOR) << (SHL) >> (SHR) | (OR) & (AND) sowie Vergleiche Als Zahlenbasis sind m”glich: Dezimal : . oder nix Hexadezimal : $ Bin„r : % ASCII : " oder ' Als interne Variablen sind ^^DATE (GEMDOS-Datum), ^^TIME (GEMDOS-Zeit) * (akt.PC), ^^RSCOUNT (akt.Wert des RS-Z„hlers) und ^^SYMTAB (<>0, wenn Symboltabelle erzeugt wird) Symbole sind max.23 Zeichen lang. Alle Zeichen sind signifikant. Erlaubt sind auch Umlaute und alle anderen Zeichen > 126. 2.7 Tastaturkommandos Cursortasten, Backspace, etc. wie gewohnt CTRL-Y, CTRL-B, etc. wie in TEMPUS CTRL-D verdoppelt die Cursorzeile. CTRL-M/ALT-M erm”glicht das Verschieben der Zeile. CTRL-W „ndert die Zahlenbasis der Zahl unter dem Cursor CTRL-U markiert alle Zeichen mit Warnungen, in welchen ein 1.1 Turbo-Ass Kurzanleitung 6 Symbol definiert ist, welches nirgends benutzt wird. Damit kann man prima unbenutzt Unterprogramme finden! ALT-Zehnerblock wie bei MS-DOS ESC+Buchstabe Abkrzung fr einen Befehl CTRL-ESC Tastaturmakro beginnen. Dann zu belegende Taste drcken. Alle folgenden Tasten (nicht die Maus!) werden aufgezeichnet. Mit ALT-ESC wird die Definition abgeschlossen. Die belegte Taste kann mit CTRL-ESC, Taste, ALT-ESC wieder freigegeben werden. 2.8 Ein paar Worte zu den Mit "Laden..." kann auch ein ASCII-Text eingeladen werden. Er wird dabei automatisch ins interne Format gewandelt. "Symbol suchen..." und "Symbol ersetzen..." erm”glichen das schnelle Finden bzw. schnelle Ersetzen von Symbolen. Dabei k”nnen z.B. alle Symbole gefunden werden, die mit "M" anfangen (Maske:"M*"), ohne daž jeder MOVE-Befehl gefunden wird (wie bei ASCII-Editoren blich). "Sprung zu Zeile.." erm”glich auch das Springen zu Symboldefinitionen (Eingabe:z.B."M*"). Die Dialogboxen im "Einstellungen" Men sind zum Teil selbsterkl„rend, der Rest ist entweder unwichtig oder zu kompliziert, als daž er hier erkl„rt werden k”nnte. 2.9 Der Assembler Wird mit F1 aufgerufen. Treten bei der Assemblierung Fehler auf, werden alle fehlerhaften Zeilen markiert. Nach der Assemblierung kann man dann mit CTRL-J bzw. Shift-CTRL-J von Fehler zu Fehler springen. Der Assembler speichert die Fehler, die Cursorposition, die Marker etc. brigens mit dem Sourcetext ab! In der Dialogbox nach (!) der Assemblierung, k”nnen noch einige Extras eingestellt werden: - Soll eine Symboltabelle an das Programm geh„ngt werden (bzw. an den Debugger bergeben werden)? - Ferner kann das erzeugte Programm in verschiedenen Formaten abgespeichern. M”glich sind: DEBUGGER : Sprung in den Debugger mit Programmbergabe (KEIN SPEICHERN) STANDARD : Programm abspeichern (halt ganz normal...) DATAS : Data-Zeilen erzeugen (fr OMIKRON.Basic) ABSOLUT : Programm fr eine best. Adresse (z.B. EPROM) erzeugen BASIC : spezielles Format fr Basic, welches sich selbst reloziert OMINLINE : INLINE-Zeile fr OMIKRON-Basic erzeugen 1.1 Turbo-Ass Kurzanleitung 7 PARALLEL : spez.šbertragungsformat zum Amiga SMALLDRI : DRI-Format erzeugen (allerdings OHNE Importe) GFAINLINE : GFA-Inline-Format erzeugen. FSTANDARD : Fast-Load-Bit im Header setzen (ST-Magazin 11/89), sonst wie STANDARD 2.10 Pseudo-Opcodes des Assemblers DC, DS, BLK, DCB, EVEN, ALIGN, TEXT, DATA, BSS, END, =, EQU, GLOBAL, CNOP, ORG, ILLEGAL und REG wie blich. DXSET L„nge[,Fllwert] Tabelle definieren DX 'String' Tabelleneintrag auf L„nge mit Fllwert aufgefllt RS, RSRESET, RSSET, RSEVEN, RSBSS Relatives Segment OPT D+ normale Symboltabelle an OPT X+ erweiterte Symboltabelle an OPT W+ Warnungen an OPT P+ PC-relatives Programm muž erzeugt werden OPT O+ Optimierungen an Mit '-' kann etwas ausgeschaltet werden OUTPUT 'Filename' Default-Filename PATH 'Pfad' Pfad fr IBYTES setzen IBYTES 'DEGAS.PI3',32000,34 L„dt ein Daten-File der L„nge 32000 ab Byte 34 der Datei ein (Hier: ein Degas-Bild) BASE is' viel zu kompliziert... REPT Anzahl, ENDR wiederholt Anzahl mal den Sourcetextteil zwischen REPT und ENDR IF, ELSE, ENDC bedingte Assemblierung FAIL Assemblierung abbrechen 3 Der Debugger 3.1 Vorwort Es ist eigentlich unm”glich den Debugger KURZ zu beschreiben, deswegen hier nur die wichtigsten Befehle (mit HELP kann man alle mal sehen bzw. in der Anleitung) 3.2 Allgemeines Der Debugger benutzt selber keine I/O-Routinen des TOS, d.h. er ist ziemlich unanf„llig gegen Abstrze. Bei Lade-Operationen u.„. wird aber dann natrlich doch auf's GEMDOS 1.1 Turbo-Ass Kurzanleitung 8 zurckgegriffen. Er verwaltet eine eigene Bildschirmseite, sodaž Programm und Debugger sich nicht auf einer gemeinsamen Seite tummeln. Das Debugging kann sowohl mit Tastatur und Maus erfolgen. Der Debugger kann resident im RAM gehalten werden, indem er in den AUTO-Ordner kopiert wird oder mit dem Befehl RESIDENT gehalten wird. Der Debugger kann dann mit CALL.PRG aufgerufen werden. Auch der Assembler kann auf den Debugger zugreifen (Er kann ihn aber auch nachladen). 3.3 Die Bedienung Die 2 oberen Zeilen entsprechen den Funktionstasten (mit und ohne Shift). Die 3 Folgezeilen stellen die Registerinhalte und Flags dar. Alle Teilen in diesen 5 Zeilen k”nnen mit der Maus ausgel”st werden. Die restlichen (max.20 Zeilen) sind frei ver„nderbar. Hier erfolgen die Eingaben, die Ausgaben. Hier tobt das Leben... Die Tastaturbelegung (Cursortasten, CTRL-M, CTRL-1, etc.) ist „hnlich der des Assemblers. Eingaben erfolgen stets ab Zeilenanfang bzw. hinter der Hexzahl. Leerzeichen werden ignoriert bzw. dienen als Trenner. Wenn der Assembler den Debugger aufgerufen hat, kann man CTRL-HELP zurckspringen. Dabei wird der aktuelle PC-Stand in eine Zeilennummer UMGERECHNET. D.h. wenn ein Programm beim Debuggen abgestrzt ist und der PC im Programm steht, kann man CTRL-HELP zur entsprechenden Stelle im Sourcetext springen. Mit SHIFT-SHIFT kann ein laufendes Programm angehalten werden. Der Ring-Indikator funktioniert allerdings auch. Der Debugger ist zudem RESETFEST. Als Notbremse ab und zu sinnvoll. F1 - Fhrt den n„chsten Befehl aus SF1 - Bricht beim n„chsten Sprungbefehl ab. Simuliert den Tracemode des 68020 Prozessors. F2 - Setzt hinter den n„chsten Befehl einen Breakpoint und startet das Programm. Damit kann z.B. schnell ein Unterprogramm ausgefhrt werden oder ein DBRA beendet werden. SF2 - nicht weiter wichtig 1.1 Turbo-Ass Kurzanleitung 9 F3 - Startet das Programm und bricht beim n„chsten RTS ab. ACHTUNG! Wenn mit MOVEM Werte auf dem Stack gerettet werden => Bomb! SF3 - wie F3 nur bis zum n„chsten RTE F4 - Fhrt den n„chsten TRAP NICHT aus, sondern springt in ihn hinein. SF4 - Programm ohne Endebedingung starten F5 - n„chsten Befehl ignorieren, d.h. berspringen SF5 - Insert/Overwrite toggeln F6 - Sourcecode anzeigen (nur wenn vom Assembler bergeben) SF6 - die umgerechneten Marker des Assemblers anzeigen. F7 - Memorydump ab dem PC SF7 - Breakpoints anzeigen F8 - Disassemble mit Dump ab PC SF8 - Info ber die Speicherbelegung F9 - List ab PC (mit Symbolen, wenn vorhanden) SF9 - Screen l”schen, Warmstart F10 - Umschalten der Bildschirmseite (Toggeln) SF10- Quit mit Sicherheitsabfrage 3.4 Die Befehle Alle Befehle k”nnen auf ein Minimum abgekrzt werden. An ALLEN Stellen sind als Parameter beliebige Ausdrcke erlaubt (d.h. Formeln etc.) ?Term Rechnet den Term aus Term darf (bis auf Vergleiche) alle Operationen des Assemblers enthalten. Zudem ist mit {400}.l eine indirekte Adressierung m”glich. ".l" gibt dabei die Zugriffsbreite an. Alle Zahlen werden als HEXZAHLEN angesehen. Dezimalzahlen sind mit "." einzuleiten. Bei einer Symboltabelle kann man mit ".Symbolname" auf dieses zugreifen. Definierte Variablen (ein Teil davon) ^D0-^D7 Die Register D0-D7 1.1 Turbo-Ass Kurzanleitung 10 ^A0-^A7 Die Register A0-A7 PC, USP, SSP, SR, CCR, SP Die gleichnamigen Register ^M0-^M9 Die umgerechneten Marker des Assemblers Alle obigen Variablen sind mit LET Variable=Term „nderbar. LET l„žt sich mit "~" abkrzen. Noch ein paar Read-Only-Variablen: TEXT, DATA, BSS, START, END, BASEPAGE, BP, ACTPD, MEMBASE, SAVEAREA Es gibt noch etwa 20-30 weitere nicht so wichtige Variablen. BREAKPOINT [Nummer=Adresse[,[*|=Wert|Anzahl|?Bedingung]|K]] Breakpoints anzeigen, l”schen, „ndern, setzen B5=PC+.100 Breakpoint 5 (0-15 ist mgl) auf Adresse PC+100 setzen B K Alle Breakpoints l”schen B Alle Breakpoints anzeigen BK3 Breakpoint 3 l”schen B0=Adr,Anzahl : Breakpoint bricht beim Anzahl. Erreichen ab. B0=Adr,* : Breakpoint bleibt auch nach dem Erreichen erhalten. Normale Breakpoints werden automatisch gel”scht. B0=Adr,=Wert : Z„hler auf die Adresse Adr setzen. In ^BC0 wird hochgez„hlt wie oft die Adresse erreicht wurde. B0=Adr,?Term : Bedingter BKPT, Abbruch, wenn Term<>0 z.B. B0=Adr,?^D0=4711 => Abbrucht, wenn PC=Adr UND D0= GO [Adr] Programm an Adresse Adr, bzw. PC starten TRACE Wie F1 SHOWMEMORY Term 16 Bytes ab Term stets anzeigen UNTRACE [Adr] 1.1 Turbo-Ass Kurzanleitung 11 solange Tracen, bis Bedingung erfllt IF Term Bedingung fr UNTRACE OBSERVE Trapno,Funkno Abbruch, wenn Trapno(Funktion) ausgefhrt wird. z.B. OBSERVE 14,8 => Abbruch bei XBIOS(8) = Floprd() CLS 2.Bildschirmseite l”schen MOUSEON / MOUSEOFF VDI-Maus an/aus |Befehl Befehl ausfhren (zum Testen echt prima) LEXECUTE "Filename"[,"Commandline"] Programm ausfhrbar laden (=> Pexec()) Dann mit GO zu starten. LOAD "Filename"[,Adresse] File nicht ausfhrbar laden SAVE ["Filename"[,Adresse[,Endadresse]]] File abspeichern DIR Pfadmaske Directory anzeigen Pbefehl P vor einem Befehl leitet diesen zum Drucker um FOPEN Filename, Fbefehl, FCLOSE Ausgabe eines Befehls in eine Datei ERASE, KILL Filename Datei l”schen (mit Jokern!) FREE Freier Hauptspeicher FREE Drive Freier Platz auf einem Laufwerk MKDIRECTORY Name Ordner erstellen RMDIRECTORY Name Ordner l”schen (wenn leer) NAME oldname,newname 1.1 Turbo-Ass Kurzanleitung 12 File umnennen FATTRIBUT Filename,attribut File-Attribut „ndern/setzen FORMAT DS/SS,Laufwerk Disk formatieren TYPE Filename ASCII-Datei anzeigen (SPACE h„lt Ausgabe an) READSEKTOR Track,Sektor,Seite,Adresse,Laufwerk (0 oder 1) Sektor mit XBIOS(8) einlesen WRITESEKTOR s.o. Sektor mit XBIOS(9) schreiben Alle in diesem Abschnitt angegebenden Befehle erlauben den gleichen Syntaxbei den Parametern, der deswegen an dieser Stelle erkl„rt wird, und im folgenden nur noch mit [Parameter] bezeichnet wird. Es gilt also: [Parameter] = [Von][[,]#[Zeilen]|,Bis|[,][Bytes[]]] Es sind also alle Parameter wahlfrei, d.h. man braucht keine Parameterangeben. Der Debugger nimmt dann vorgegebene interne Werte. Wenn der Ausdruck "Von" fehlt, wird ab der aktuellen Adresse z.B. disassembliert. Die aktuelle Adresse ist die Zahl am Zeilenanfang, bzw. wenn diese fehlt, die zuletzt benutzte Adresse. Als Endadresse gilt der Ausdruck "Bis", der jedoch nicht angegeben werden muž. Wird statt "Bis" ein "#" angegeben wird genau eine Zeile ausgegeben. Ein dem "#" folgender Term, gilt als Zeilenanzahl. Es k”nnen somit z.B. genau 8 Zeilen ausgegeben werden. Es werden jedoch maximal 99 Zeilen ausgegeben. Fehlt die Endangabe g„nzlich, werden (normalerweise) 16 Zeilen ausgegeben. Die Anzahl l„žt sich jedoch einstellen, indem man die Variable "Lines" entsprechend „ndert. Die letzte M”glichkeit ist die Angabe der Byteanzahl in eckigen Klammern. Sie kann genauso, wie die Zeilenanzahl angegeben werden. Die "]" ist optional, d.h. man kann sie auch weglassen. Beispiel: "d text #5" Disassembliert 5 Zeilen ab Anfang des geladenen Programms. Beispiel: "m data[30]" Ein Memorydump des DATA-Segments (48 Bytes lang). 1.1 Turbo-Ass Kurzanleitung 13 DISASSEMBLE [Parameter] Disassemble mit Dump, der Dump kann ge„ndert werden! LIST [Paramter] Disassemble ohne Dump mit Symbolen, Opcodes k”nnen ge„ndert werden (RETURN nicht vergessen) SYMBOLTABLE [Parameter] evtl. vorhandene Symboltabelle anzeigen MEMORY[.B|.W|.L][Parameter] Memorydump mit Ausgabebreite (Žnderbar) ASCII [Parameter] ASCII-Dump (Žnderbar) FIND [Von,Bis],Terme{,Term} geladenes Programm oder Speicherbereich nach den Termen durchsuchen HUNT s.o. wie Find, jedoch nur auf geraden Adressen ASCFIND [Von,Bis],String ASCII-Suche im Disassemblerlisting (mit Jokern). Langsam, aber ab und zu praktisch CONTINUE Hunt, Find oder ASCFIND fortsetzen, wenn mit ESC abgebrochen INFO mal ausprobieren SYSINFO auch mal ausprobieren MOVE, COPY Von,Bis,Nach Speicherblock kopieren FILL Von,Bis,Term{,Term} Speicherblock fllen CLR [Von,Bis] Speicherblock l”schen (oder alles) COMPARE Von,Bis,Adr Bereich Von,Bis mit Bereich ab Adr vergleichen EXIT, QUIT, SYSTEM Debugger verlassen 1.1 Turbo-Ass Kurzanleitung 14 RESIDENT Debugger resident halten SET, LET, ~ siehe oben RESET ALL Debugger-Kaltstart HELP Gibt alle Befehle unsortiert aus (wie man sieht, ein paar mehr als hier beschrieben) Inhaltsverzeichnis Turbo-Ass V1.1 1 Allgemeines .......................................... 1 1.1 Einleitung ...................................... 1 1.2 Features des Turbo-Ass ............................ 1 1.3 Was ist Shareware? ................................ 2 1.4 Hardwarevorraussetzungen ........................ 3 1.5 Installation .................................... 3 1.6 Zu den Autoren .................................... 3 1.7 Haftung/Rechte .................................. 3 2 Der Assembler ......................................... 4 2.1 Benutzeroberfl„che .............................. 4 2.2 Die Maus im Assembler .............................. 4 2.3 Der Editor ....................................... 4 2.4 Besonderheiten .................................. 4 2.5 Optimierungen ................................... 5 2.6 Formeln ......................................... 5 2.7 Tastaturkommandos ............................... 5 2.8 Ein paar Worte zu den............................... 6 2.9 Der Assembler .................................... 6 2.10 Pseudo-Opcodes des Assemblers .................... 7 3 Der Debugger .......................................... 7 3.1 Vorwort ......................................... 7 3.2 Allgemeines ..................................... 7 3.3 Die Bedienung .................................... 8 3.4 Die Befehle ...................................... 9 - I - ä-Soft's TurboAss V1.7.14 13.02.93 Version 1.7.14: Bugaboo: - Media-Change im Debugger funktioniert nun auch mit Platten, deren Sektorgr”že >512 Bytes ist. Beispiel fr den Fehler: DIR ergab bei gr”žeren Partitions Grafikmll auf dem Bildschirm. - Der Bugaboo K™NNTE evtl. mit KAOS funktionieren. Der Alert beim Start entf„llt somit. Ich habe jedoch KEIN KAOS! - Probleme bei der Bildschirmumschaltung bei einigen Shiftern hoffentlich behoben. Version 1.7.13: Bugaboo: - Der Bugaboo setzte die Adresse $484 (Tastaturklick, Bell, etc.) stets auf $FF. Dies war natrlich ein Fehler. Dadurch konnten evtl. sp„ter gestartete Programme abstrzen. Version 1.7.12: Bugaboo: - Da es beim Umschalten der Bildschirmseiten beim STE offensichtlich Probleme gab, habe ich noch was daran getan. Wenn SWITCH = 1 ist, wird nicht nur in der Austastlcke umgeschaltet, es wird auch vor dem Auslesen der Register des Shifters auf einen VBL gewartet, damit die Register alle die geschriebenen Werte enthalten. Version 1.7.11: Bugaboo: - Der Prozessor wird wieder richtig erkannt (hoffentlich :-). Vormals wurde im TT ein 68020 vermutet. Nich tragisch, aber verblffend... Version 1.7.10: Bugaboo: - Bugfixes fr den 68030: UNTRACE sollte nun besser funktionieren (vorher: Format Error), Privileg Verletzung wird anders abgefangen, falls die Privileg Verletzung von einem MOVE SR,<ea> hervorgerufen wurde, so wird nun ein MOVE CCR,<ea> ausgefhrt. Normalerweise wird dies durch das TOS vom TT schon so gemacht, da aber der Bugaboo alle Exceptions abf„ngt, mužte diese Anpassung mit in den Bugaboo ber- nommen werden. Version 1.7.9: Bugaboo: - Neue Variable: SWITCH. šblicherweise ist diese Variable = 0. Dann „ndert sich nichts. Wenn man sie auf 1 setzt (die Variable ist in den Einstellungen speicherbar), dann wird die Bildschirmseitenum- schaltung im VBL vorgenommen. Nachteil: es flackert beim Tracen. Vorteil: es sollte bei einigen STEs nicht mehr zu einem Bildversatz kommen. Also: diese Variable nur auf 1 setzen, wenn der Bildschirm springt! Version 1.7.8: Bugaboo: - Funktioniert nun auch wieder aus dem AUTO-Ordner heraus. Sonstige Programme: - Neuste Version vom LHarc V1.1321, sowie dem PFXPAK, u.s.w Version 1.7.7: Bugaboo: - SysInfo erkennt den Mega STE. TurboAss - Sourcen k”nnen nun auch von BGM-Partitionen geladen werden, ohne daž der Font zerst”rt wird. Version 1.7.6: TurboAss: - Es wird eine Meldung ausgegeben, wenn KAOS installiert ist, da es Probleme geben kann. - .DCB, .DCB.B, .DCB.W und .DCB.L werden vom Assembler nun erkannt und in DCB, etc. konvertiert. Bugaboo: - Es wird eine Meldung ausgegeben, wenn KAOS installiert ist, da es Probleme gibt! - SYSINFO wurde erweitert. Es wird nun die SFP004 (68881 fr 68000er), sowie ein 68881/2 erkannt. Spectre-GCR-Erkennung an den TT angepažt. - Der 68040 wird erkannt. - Da die Variablen REZ und COLORS entfallen sind, gibt es endlich eine Art Ersatz: Die Variable USERSCR zeigt auf die Struktur des aktu- ellen Bildschirms, INITSCR zeigt auf die Stuktur des Bildschirms beim Aufruf des Debuggers. Ich glaube, daž man nun wieder genug Unsinn mit den Bildschirmseiten treiben kann... Hier nun noch die Struktur: RSRESET scr_colors: RS.W 16 ;die 16 Farben scr_adr: RS.L 1 ;die Videoadresse scr_offset: RS.B 1 ;Offset to next line (STE) scr_hscroll: RS.B 1 ;Horizontal Bit-wise Scroll (STE) scr_rez: RS.B 1 ;die Video-Aufl”sung scr_sync: RS.B 1 ;das Sync-Bit des Shifters scr_moni: RS.B 1 ;der Monitor ($00:s/w $40:Farbe) scr_overscan: RS.B 1 ;OverScan ($00:Ja $FF:Nein) Version 1.7.5: TurboAss: - Nach dem Speichern wird wieder die Cursorposition vor dem Speichern angesprungen. - Um PARTs einzuklappen kann man nun auch auf den ENDPART Help drcken. Auch kann ein PART eingeklappt werden, der in der ersten Sourcetextzeile anf„ngt. - Der TurboAss hat nach Shift-F6 gefragt: "Sourcetext l”schen?". Dabei hat er allerdings "JA" und "NEIN" vertauscht! Sagte man NEIN, so wurde der Source gel”scht. Ein sehr peinlicher Fehler. Wann der in den Code hineingekommen ist, ist mir ein R„tsel... - Die Macintosh-Trap Macros sind erstmal wieder gestrichen. Wer sie will, kann sie erhalten. Aber sie haben 11KB Speicher gekostet und fr die allermeisten User nix gebracht. - a EQU 8:lsl.l #a,D1 => Es wurde falscher (zuf„lliger) Code erzeugt. Sollte jetzt richtigen Code erzeugen. ADDQ, SUBQ, sowie alle Verschiebebefehle (ASL,LSL,ROL,ROXL, etc.) waren davon betroffen. Bugaboo: - Die Variable TRACE wurde wieder eingefhrt. N„heres siehe Anleitung. Die Variable ist irgendwann einmal "verloren" gegangen. - SYSINFO erkennt nun auch, wenn eine IMP-MMU im Rechner vorhanden ist. SYSINFO teilweise korrigiert (Taktanzeige, TT-Info, etc). - Der Bugaboo l„uft noch NICHT auf dem Grožbildschirm vom TT! Sonstige Programme: - Zus„tzlich zu MODULE.SRC gibt es nun auch RBMODULE.SRC von Ralf Biedermann. Man kann damit neben SMALLDRI (siehe Anleitung) auch SMALLGST erzeugen, um z.B. Assembler-Module in Fortan eionzubinden. - TURBOASS.DAT bzw. MODULE.SRC: Bei Modula-Modulen werden nicht mehr doppelt soviele Words erzeugt, wie das Programm lang ist. Wer kein TDI-Modula hat ( CODE( Hexcodes ) ), der sollte MODULE.SRC neu assemblieren, wobei vorher das Flag TDI_MODULA = 0 zu setzen ist. Dann wird INLINE( Hexcodes ) erzeugt. Version 1.7.4: TurboAss: - Angepažt an den Bugaboo V1.7.4. Um den Debugger nachladen zu k”nnen, muž man unter "Informationen" und "Reorganisieren" nun mindestens 250000 Bytes eintragen. Davon bleiben dann (wie gehabt) 40000 Bytes brig. Diese Vergr”žerung war n”tig, weil das Nachladen von BUGABOO.SYM einen Absturz bei zu wenig Speicher bewirken konnte. - Funktioniert nun auch im TT-FastRam. Malloc() darf sich auch Bl”cke aus dem FastRam holen. Der Assembler wird somit nochmal ein Stck schneller. Bei Problemen (ich habe keinen TT, s.u.) evtl. die Bits dafr l”schen. Wenn der Fehler dann nicht mehr auftritt => Fehler- meldung an mich! - XBRA-ID "TASS" fr alle benutzten Vektoren. Bugaboo: - Angepažt an den TT. Da ich selbst keinen TT habe, kann ich Fehler bzgl. des TT auch nicht ohne weiteres erkennen bzw. nachvollziehen. Falls es Probleme gibt, bitte ich um eine genaue Fehlerbeschreibung (m”glichst mit Beispiel). - Neues Exception-Handling. . Exception-Texte nun englisch . Anpassung an den TT . Es werden nun alle unbenutzten Vektoren von 2 bis 63 abgefangen. . kleinere Unsch”nheiten korrigiert - SYSINFO an den TT angepažt - Symbole werden in der Symboltabelle nun auf 32 Bit verglichen und nicht mehr mit nur 24 Bit. Ausnahme: Das HiWord (Bits 16-31) wird wenn es gleich $FF ist, auf $FFFF erweitert. Dies ist bei Short- Adrežierung auf den I/O-Bereich sinnvoll. - XBRA-ID "BUG1" fr alle benutzten Vektoren. Sonstige Programme: - CALL.PRG, CALL.SRC : Anpassung an den Bugaboo V1.7.4 Der Bugaboo V1.7.4 wird durch das alte CALL.PRG nicht mehr erkannt! - umsortiert und neu geordnet. Dies war n”tig, da das TOOL-Archiv so grož war, daž es entpackt nichtmal mehr auf eine Diskette pažte. Im TOOLS-Archiv sind nun nur noch 3 Ordner: PACKER, TOSPATCH und neu dazugekommen ist: MIDIMAZE.2 Version 1.7.3: TurboAss: - Symbolsuche im Block strzt nicht mehr ab, wenn das Symbol aužerhalb des Blockes definiert ist, aber im Block nicht vorkommt. Version 1.7.2: TurboAss: - assembliert nun auch auf dem TT - funktioniert auch in der Bildschirmaufl”sung TT-mittel - kann Symboltabelle wieder an den Debugger bergeben (Fehler war seit Version 1.7.1 drin) - Wenn man ein SRC-File durch Doppelklick auf dem Desktop in den TurboAss geladen hat, wurde der Filename stets auch an den Bugaboo weitergereicht, wenn dieser z.B. nach der Assemblierung aufgerufen wurde. Dies ist nun behoben! (Fehler war seit ARGV-Commandline-Aus- wertung durch den TurboAss drin) Einige Žnderungen vom TurboAss V1.26 zur Version V1.7.1: ACHTUNG!!! Wichtige Žnderungen im Debugger (siehe unten) !!! Noch ein paar in der Version V1.70 nicht vorhandene, aber in der Anleitung aber schon beschriebene, Features: -lokale Symbole sind immer noch NICHT implementiert -PC-relative Optimierungen ber Segmentgrenzen k”nnen immer noch NICHT wieder in absolute Adressierungen zurckgewandelt werden -Absolut-Long kann immer noch NICHT automatisch nach Absolut-Short optimiert werden -Absolut-Short kann immer noch NICHT automatisch nach Absolut-Long zurckgewandelt werden Allgemeines: -Der TurboAss und Bugaboo sollten auf ALLEN ST bzw. STE funktionieren. Lediglich eine Anpassung an den TT l„žt noch auf sich warten, da ich noch keinen TT habe. Der Bugaboo in der Version V1.26 funktioniert nicht auf Rechnern mit IMP-MMU. Der Fehler ist ebenfalls raus. -Der Debugger untersttzt jetzt OverScan, d.h. er arbeitet zwar immer noch auf dem kleinen Bildschirm, kann aber auf den OverScan-Modus um- schalten. Der TurboAss nutzt nun auch eine erh”hte Aufl”sung, z.B. von OverScan, Maxon-MGE (s/w-Modus), Atari-Grožbildschirm. -Ich habe eine neue Versionsnummern-Z„hlung eingefhrt, also nicht verwirren lassen: V1.7.0 steht fr Version 1, 7.Erweitung im Funk- tionsumfang und 0.Bugfix der 7.Erweiterung. Wen diese Versionsnummer- ierung an Apple erinnert, der hat recht (aber nicht weitersagen...). Ich kann nun die Versionen etwas genauer auseinander halten. Erweiterungen des Assemblers: -ASCII-Laden ist nun etwa 1.5 bis 4 (!) mal schneller. -Bei ADDQ bzw. SUBQ ist kein # mehr n”tig. Der Assembler erg„nzt es nun automatisch (wie bei MOVEQ und TRAP auch). -Wenn man mit SHIFT-F2 die Accessory-Leiste aufgerufen hat, kommt man mit UNDO oder ESC wieder zurck zum Assembler. -Mit dem Pseudo-Opcode BREAKPT 'String' kann man einen speziellen Breakpoint bereits im Assembler einsetzen. Der Unterschied zur ILLEGAL-Directive ist der anzugebende String. Dieser String wird beim Erreichen des Breakpoints vom Debugger n„mlich als Befehlszeile angesehen, d.h. der String wird vom Debugger sofort ausgefhrt. Somit kann man sich beim Erreichen der Directive z.B. automatisch einen Speicherdump o.„. ausgeben lassen. Der String darf sogar mehrere Befehle enthalten, welche mit ':' zu trennen sind (':' entspricht somit RETURN, wenn man selbst tippt). Folgt dem ':' noch ein '-', so wird der Befehl nicht ausgegeben. Ein abschliežendes ':' ist jedoch nicht n”tig. Beispiel: BREAKPT '"Speicherberlauf":-M ^A0#4:L PC#4' Der Text 'Speicherberlauf' wird bei Erreichen des Breakpoints ausgegeben. Dann werden 4 Zeilen ab A0 als Memorydump ausgegeben. Ab Abschluž werden noch 4 Zeilen ab PC (der automatisch hinter die Directive gesetzt wird) gelistet. -Beim Laden von ASCII-Sourcetexten (mit F8) bzw. beim Zuladen wird nun die L„nge der Datei in kb, sowie die schon gelesenen kb ausgegeben. Dies erm”glicht endlich ein Absch„tzen der Ladezeit bei grožen Dateien. -Symbol ersetzen (Ctrl-E) hat nun eine weiter SEHR (!!!) praktische M”glichkeit ganze Symbolgruppen umzubenennen. Jeder, der schon einmal ein reassembliertes Programm dokumentiert hat, kennt das Problem: Man hat ein Unterprogramm (nennen wir es "draw_shape") mit etwa 30 Labeln. šblich ist wohl die Bezeichnung der Label mit "draw_shape1", "draw_shape2", etc. statt der vorgegebenen Bezeichnung "Lxxxx" o.„. Ab sofort ist dies kein Problem mehr: Das Unterprogramm als Block markieren, als zu suchendendes Symbol "~" eingeben und als zu ersetzendes Symbol (in unserem Beispiel) "draw_shape". Nun OK drcken. Das erste Symbol im Block heižt nun "draw_shape"; die Folgesymbole sind aufsteigend numeriert. Diese Funktion nennt sich "Umbennen von Symbolen", d.h. wenn ein Symbol zweimal existiert (doppelte Deklaration), wird es, obwohl es sich nicht mehr im Block befindet, an beiden Stellen umbenannt (denn intern es es ja dasselbe Symbol). Wer dies Vermeiden will, kann nur zu "Symbol ersetzen" bergehen und dort im Block ersetzen. -Wieder habe ich mich dazu herabgelassen einige weitere Optimierungen zu implementieren. Diesmal bringen die Optimierungen zwar keinen Speicherplatz, dafr werden pro Opcode 4 Takte eingespart. Es werden Folgende Befehle optimiert: CLR.L Dx in MOVEQ #0,Dx LSL.x #1,Dx in ADD.x Dx,Dx (ACHTUNG: V-FLAG WIRD VERŽNDERT!) ASL.x #1,Dx in ADD.x Dx,Dx ROXL.x #1,Dx in ADDX.x Dx,Dx ADDA.W #xx,Ay in LEA xx(Ay),Ay Die Optimierungen k”nnen mit CTRL-O ausgefhrt werden (siehe Meneintrag "Assembler" und dort unter "Optimierungen"). -Der Assembler kennt nun s„mtliche Toolbox und OS-Traps des Mac. Inklusive der evtl. Parameter. Da wohl die wenigsten einen Apple Macintosh haben, profitieren wohl lediglich S”ren und ich davon... -Die HELP-Taste zum Einklappen von PARTS funktioniert nun anders. Man erinnert sich: PART in eine Zeile, ENDPART irgendwo dahinter. Wenn man nun auf dem PART stand und HELP gedrckt hat, dann wurde der Textblock eingeklappt, bzw. mit CTRL-HELP auch alle folgenden Bl”cke. Nun wird HELP folgendermažen behandelt: HELP sucht nun ab der Cursorzeile einen PART (aufw„rts!), wird ein PART gefunden, so wird der Block einge- klappt. Man erspart sich also das Suchen von der PART-Directive. Beim Ausklappen von einem PART wird die Zeile mit dem Part nun auch auto- matisch auf dem Screen (vertikal :-) zentriert. -Mit CTRL-SHIFT-U werden unbenutzte Symbole entfernt. Dies ist fr die Leute praktisch, welche die List-Ausgabe in eine Datei umlenken, mit einem Texteditor nachbearbeiten und nun in den Assembler laden. CTRL-U markiert weiterhin alle unbenutzen Symbole als Warnungen, welche man ja mit ALT-W an/ausschalten kann. -Der TurboAss kennt jetzt auch die ARGV Parameterbergabe. Erweiterungen des Debuggers: -Einige neue Tastenkombinationen („hnlich dem MonST2): CTRL-Y : F1 - aktuellen Befehl tracen CTRL-S : F5 - aktuellen Befehl berspringen CTRL-A : F2 - Breakpoint hinter den aktuellen Befehl + GO (!) -Wenn der Debugger die Datei "BUGABOO.SYM" findet (dort wo auch "BUGABOO.INF" gesucht wird), wird diese Datei geladen (ach nee) und der Disassembler wird alle absolut short bzw. long Adressierungen ber diese Tabelle laufen lassen. Soll heižen, wenn in der Tabelle z.B. _sysbase = $4f2 steht, wird der Disassembler bei allen Befehlen, welche auf diese Adresse mit obigen Adressierungsarten zugreifen, die Adresse durch den Symbolnamen "_sysbase" ersetzen. Eine "BUGABOO.SYM" Datei befindet sich (mit Sourcetext) bereits im LIBRARY-Ordner. Die SYM-Dateien lassen sich mit F1 erzeugen (siehe Anleitung). -Ich habe vergessen zu erw„hnen, daž man ohne den Debugger zu verlassen nun einen Blick in den Sourcecode werfen kann, wenn man vom Assembler aus in den Debugger gesprungen ist. Also: wenn man irgend- wann w„hrend des Debuggens nicht mehr weiž wo man sich im Source be- findet; einfach F6 drcken. Dann kann man die aktuelle Position im Sourcecode sehen. Žndern kann man da natrlich nix. Noch was: Der Blick in den Sourcecode kostet KEINEN (!) Speicherplatz, nicht einmal die Symboltabelle ist n”tig, da der Assembler die Adressen umrechnen kann. Die Adressen am linken Rand sind brigens alle gleich, dies liegt daran, daž S”ren und ich noch keine Muže gefunden haben den Sourcecode-Teil auch nur irgendwie zu optimieren (Wenn der Source l„nger als 10000 Zeilen ist, wird's ziemlich langsam). Aber besser langsam und unflexibel, als gar nix. (P.S. Welcher Assembler-Debugger hat schon einen solchen Debugger?) -Bei Bedingungen der Befehle: Scc, Bcc und DBcc „ndert sich der "¯" am Zeilenanfang in ein "?", wenn die Bedingung erfllt ist! Allerdings nur am aktuellen PC. ACHTUNG! NEUHEITEN IM DEBUGGER: -S„mtliche Filenamen und Pfade (z.B. LOAD, DIR, etc.) MšSSEN jetzt in Anfhrungszeichen (") eigeschlossen werden. Dies ist zwar l„stig, ist aber durch eine Umstellung der internen Strukturen n”tig geworden. -Bisher konnte man ja dem Debugger in der Commandline einen Filenamen oder einen Befehl bergeben (mit "@" davor). Dies kann man nun auch, wenn man mit dem CALL.PRG den residenten Debugger aufruft. -Man kann nun soviele Befehle pro Zeile angeben, wie n”tig. Dazu sind die Befehle durch einen ":" zu trennen (deswegen muž man die Pfade in Anfhrungszeichen angeben). -Auch in der oben erw„hnten Commandline kann man nun mehrere Befehle angeben. Zu beachten ist auch, daž bei der BREAKPT-Directive des Assemblers nun auch Doppelpunkte, anstellen von "|" zur Trennung der Befehle verwandt werden mssen. -Das Scrolling im Debugger verh„lt sich etwas anders als vorher. Das "ruhige" Scrolling ohne Flackern der untersten Zeile mužte dran glauben (an was, kommt sp„ter). -Auf allgemeinen Wunsch hin, funktioniert: DIR ".." auch ohne "\" am Ende wieder (fr Unwissende, damit kommt man ein Verzeichnis zurck, d.h. eine Ordnerebene nach oben). -Wenn bis hierher irgendwelche Probleme, Ungereimtheiten, etc. auftreten, bitte sofort bei mir melden! -Man kann nun mit "#load "Filename.Bug" " eine ASCII-Datei einlesen. Was das soll? Nun, die Datei kann beliebig Befehle enthalten. Zeilen, welche mit einem "%" anfangen werden ignoriert. Mal sehen, was sich in Zukunft bei den Batch-Dateien ergibt (ich bitte um Vorschl„ge!). Achtung: Die Befehle DIR, FOPEN, FCLOSE und FORMAT sind in einer Batch-Datei nicht m”glich. -Der KEY-Befehl wurde ersatzlos gestrichen. Da die Tastaturmakros im Debugger diesen berflssig machen. -Neue Variablen im Debugger: MIDI :<>0 => Scancodes ber MIDI werden ignoriert, sonst werden diese als Tastencodes interpretiert (fr PC-Tastaturen) CACHE :Inhalt des CACR-Registers bei 68020 oder h”her MEMCHECK:<>0 => Speichertest entf„llt. Ein Dump wrde dann statt "--"-Zeichen einfachen einen Busfehler ergeben. ALL :Setzt alle Register (D0-A6) auf den gleichen Wert. Praktisch zum L”schen o.„. (die Variable kann man natrlich nur setzen) SYMFLAG :<>0 => interne Symboltabelle (BUGABOO.SYM) nicht benutzen SYMTAB :Zeiger auf die interne Symboltabelle (0=keine vorhanden) -Vor dem Verlassen des Debuggers, wird getestet, ob an Adresse $40C eine gltige Adresse steht. Wenn dem so ist, springt der Bugaboo den Vektor an. Wofr das gut ist? Nun, so kann man noch auf die Schnelle seine Workstation schliežen o.„. Man braucht nur ein Unterprogramm einklinken, daž all solche Dinge tut. Damit kann man dann ein Programm beliebig abbrechen (und wieder in den Assembler zurck), ohne daž beim n„chsten Start das VDI abstrzt (weil eine Workstation nicht geschlossen wurde). -Mit dem neuen Befehl COOKIE kann man sich das aktuelle CookieJar ansehen (wenn vorhanden). Damit folge auch ich der Modeerscheinung stets jeden Kleinkram in den Debugger einzubauen (zumal man sich das CookieJar mit "m.l {5a0}.l" ausgeben lassen konnte). -Ich habe noch einige Vorschl„ge von Thomas Waldmann bercksichtigt (auch wenn in Deinem Brief das Gegenteil steht, Thomas): .Wenn man die (neue) Variable RING auf 1 setzt, wird der Ring-Indikator-IRQ nicht mehr angeschaltet. Das werden Modem-User wohl zu sch„tzen wissen. Default: RING=0 .Die Variable SAVEAREA ist jetzt auch unter dem Namen S zu erreichen. Der lange Name hat mich auch schon immer gest”rt. .Beim DIR-Befehl wird jetzt vor Programmen mit der Extension PRG, TOS, TTP, APP, ACC, PRX und ACX automatisch LE als Default vorgegeben. Auch dies sollte wohl sinnvoll sein, da man Programme zum Debuggen sowieso mit LE laden muž. .Hat eine GEMDOS-, (X)BIOS-Funktion einen šbergabeparameter, welcher ein Langwort ist, wird das Langwort (wenn >0) als Zeiger aufgefažt und der String auf den er zeigt ausgegeben (maximal jedoch 32 Zeichen). Damit kann man sofort sehen, welche Datei z.B. bei Fsfirst gesucht wird. Leider kann man auch sehen, welchen Speicherblock (bzw. welchen Inhalt) man freigibt. L„žt sich leider nicht einfach „ndern. -Und wieder einige Vorschl„ge von Thomas Waldmann: .Die nachgeladene Symboltabelle "BUGABOO.SYM" kann man nun auch selbst nutzen. Man kann z.B. ?{.phystop}.l eintippen, um phystop auszulesen. Der Debugger nutzt jedoch weiterhin zuerst die Symbole der Tabelle des nachgeladenen Programms. Wenn dort das Symbol nicht gefunden wurde, wird in "BUGABOO.SYM" gesucht. -Wenn man OverScan im Debugger nutzen will, muž man zuerst die neue Variable OVERSCAN auf 1 setzen und die Einstellungen sichern. Ab dann erkennt der Debugger OverScan beim Umschalten. Diese Erkennung hat aber einen Nachteil: Der Bildschirm flackert beim Tracen ("wie Sau"). Dies liegt daran, daž zur Erkennung vom aktivierten OverScan min. 2 VBLs gebraucht werden und somit die Umschaltung der Bildschirmseiten auff„llt. Wenn man als OverScan-User die Variable auf 0 setzt, kann man den Debugger nur in normalen Modus benutzen. Mit dem neuen Befehl OVERSCAN kann man den User-Screen zwischen normaler Aufl”sung und OverScan Aufl”sung umschalten. Dies wird mit dem entsprechenden XBIOS- Befehl aus dem OverScan Treiber getan. Somit wird also auch das GEM umgeschaltet. Halt, halt, halt: Das mit dem Flackern gibt's nicht mehr! Es ist doch zu l„stig. Dafr merkt der Debugger allerdings das Umschalten von den Aufl”sungen nicht mehr. Da sowas aber nur selten getraced werden muž, kann man (so glaube ich (und auch Karsten Isakovic)) darauf verzichten -Die Variable REZ (und andere, die mit dem Bildschirm zu tun haben) sind erstmal ersatzlos entfallen. Sonstiges: -Andreas Alich hat uns freundlicherweise ein Programm names RSC2S zur Verfgung gestellt. Dieses Programm erm”glicht es RSC-Dateien direkt in den Assemblerquelltext einzubinden. N„heres im RSC2S-Ordner. Markus Fritze