Turbo Assembler
Jump to navigation
Jump to search
Turbo Assembler is a fast and featurefull development environment for 68000 machine language. Contrary to other packes it has no support for macros or includes but it has good interfacing to its debugger, Bugaboo, and has a fast screen editor.
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 (natÂrlich) 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 (vernÂnftigen)
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 KurzeinfÂhrung 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 ProgrammabstÂrzen 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
mÂssen aber stets ALLE (!) Dateien mitkopiert werden.
- Wem den Assembler gef„llt, sollte uns fairerweise 50DM
Âberweisen. Das hat fÂr alle Parteien Vorteile:
FÂr uns:
- Wir arbeiten nicht ganz umsonst (im Turbo-Ass stecken 3
"Mannjahre" Arbeit)
FÂr 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 fÂr 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" fÂr das VorfÂhren 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 RÂckporto
beinhaltet. Post ohne RÂckporto wird nur in Ausnahmef„llen
beantwortet (Zur Registrierung ist KEIN RÂckporto 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 fÂr die Fehlerfreiheit geben, noch die Haftung fÂr
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
verspÂren, 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 AbstÂrze 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 gedrÂckt,
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 ÂberprÂft. 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
unterstÂtzt. 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 fÂr C-Compiler typische SprÂnge 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
zurÂck-"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 AbkÂrzung fÂr einen Befehl
CTRL-ESC Tastaturmakro beginnen. Dann zu belegende Taste
drÂcken. 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 ProgrammÂbergabe (KEIN
SPEICHERN)
STANDARD : Programm abspeichern (halt ganz normal...)
DATAS : Data-Zeilen erzeugen (fÂr OMIKRON.Basic)
ABSOLUT : Programm fÂr eine best. Adresse (z.B. EPROM)
erzeugen
BASIC : spezielles Format fÂr Basic, welches sich selbst
reloziert
OMINLINE : INLINE-Zeile fÂr 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[,FÂllwert] Tabelle definieren
DX 'String' Tabelleneintrag auf L„nge mit FÂllwert aufgefÂllt
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 fÂr 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 AbstÂrze. Bei Lade-Operationen
u.„. wird aber dann natÂrlich doch auf's GEMDOS
1.1 Turbo-Ass Kurzanleitung 8
zurÂckgegriffen.
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 zurÂckspringen. Dabei wird der aktuelle PC-Stand in
eine Zeilennummer UMGERECHNET. D.h. wenn ein Programm beim
Debuggen abgestÂrzt 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 - FÂhrt 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 ausgefÂhrt 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 - FÂhrt 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 abgekÂrzt werden. An ALLEN
Stellen sind als Parameter beliebige AusdrÂcke 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 "~" abkÂrzen.
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 erfÂllt
IF Term
Bedingung fÂr UNTRACE
OBSERVE Trapno,Funkno
Abbruch, wenn Trapno(Funktion) ausgefÂhrt wird. z.B. OBSERVE
14,8 => Abbruch bei XBIOS(8) = Floprd()
CLS
2.Bildschirmseite lâ€schen
MOUSEON / MOUSEOFF
VDI-Maus an/aus
|Befehl
Befehl ausfÂhren (zum Testen echt prima)
LEXECUTE "Filename"[,"Commandline"]
Programm ausfÂhrbar laden (=> Pexec()) Dann mit GO zu starten.
LOAD "Filename"[,Adresse]
File nicht ausfÂhrbar 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 fÂllen
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 fÂr den Fehler: DIR ergab bei
grâ€Å¾eren Partitions GrafikmÂll 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 natÂrlich ein Fehler. Dadurch konnten evtl.
sp„ter gestartete Programme abstÂrzen.
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 AustastlÂcke 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 verblÂffend...
Version 1.7.10:
Bugaboo:
- Bugfixes fÂr 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> ausgefÂhrt. 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 fÂr 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
drÂcken. 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
fÂr 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 eingefÂhrt. 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 StÂck
schneller. Bei Problemen (ich habe keinen TT, s.u.) evtl. die Bits
dafÂr lâ€schen. Wenn der Fehler dann nicht mehr auftritt => Fehler-
meldung an mich!
- XBRA-ID "TASS" fÂr 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" fÂr 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 stÂrzt 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 zurÂckgewandelt werden
-Absolut-Long kann immer noch NICHT automatisch nach Absolut-Short
optimiert werden
-Absolut-Short kann immer noch NICHT automatisch nach Absolut-Long
zurÂckgewandelt 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 unterstÂtzt 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 eingefÂhrt, also nicht
verwirren lassen: V1.7.0 steht fÂr 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 zurÂck 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 ausgefÂhrt. 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 '"SpeicherÂberlauf":-M ^A0#4:L PC#4'
Der Text 'SpeicherÂberlauf' 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 drÂcken.
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, dafÂr 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 ausgefÂhrt werden (siehe
MenÂeintrag "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 gedrÂckt 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 fÂr 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 ParameterÂbergabe.
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 drÂcken. Dann kann man die aktuelle Position im
Sourcecode sehen. Žndern kann man da natÂrlich 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 erfÂllt ist! Allerdings
nur am aktuellen PC.
ACHTUNG! NEUHEITEN IM DEBUGGER:
-S„mtliche Filenamen und Pfade (z.B. LOAD, DIR, etc.) MšSSEN jetzt in
AnfÂhrungszeichen (") 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
AnfÂhrungszeichen 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 mÂssen.
-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 (fÂr Unwissende, damit kommt man ein Verzeichnis zurÂck,
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 ÂberflÂssig machen.
-Neue Variablen im Debugger:
MIDI :<>0 => Scancodes Âber MIDI werden ignoriert, sonst werden
diese als Tastencodes interpretiert (fÂr PC-Tastaturen)
CACHE :Inhalt des CACR-Registers bei 68020 oder hâ€her
MEMCHECK:<>0 => Speichertest entf„llt. Ein Dump wÂrde 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 natÂrlich 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 gÂltige Adresse steht. Wenn dem so ist, springt der Bugaboo den
Vektor an. WofÂr 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 zurÂck), ohne daž beim
n„chsten Start das VDI abstÂrzt (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 berÂcksichtigt
(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. DafÂr 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
VerfÂgung gestellt. Dieses Programm ermâ€glicht es RSC-Dateien direkt
in den Assemblerquelltext einzubinden. N„heres im RSC2S-Ordner.
Markus Fritze