Turbo Assembler

From Atari Wiki
Revision as of 11:35, 13 October 2011 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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