                p -soft's TurboAss V1.61 q                  28.08.90

ACHTUNG!!! Wichtige nderungen im Debugger (siehe unten) !!!

Noch  ein  paar  in  der  Version  V1.60  nicht vorhandene, aber in der
Anleitung aber schon beschriebene, Features:

-lokale Symbole sind immer noch NICHT implementiert
-PC-relative  Optimierungen ber Segmentgrenzen knnen 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:
-Da  ich  nun ebenfalls Besitzer eines STE bin, konnte ich den Debugger
 endlich so an den STE anpassen, da er auch luft, d.h. man kommt auch
 wieder zurck in den Assembler...
-Auf   ein  neues:  Wieder  ein  kompletter  neuer  Tastaturtreiber  im
 Assembler.  Ich  hoffe,  da der "automatische Autorepeat" nun ENDLICH
 raus ist. Es sollte nur noch direkt beim Start des Assembler zu diesem
 Problem kommen knnen. Wir werden sehen...
-Der  Fehler,  warum  der Debugger auf einigen Rechnern NICHT lief, ist
 raus!  Es  lag  nicht  (wie  vielfach  vermutet)  am TOS (der Debugger
 benutzt  das  sowieso  nicht),  sondern es lag an einer Serie der GLUE
 (!!!),  die  wir  (s.o.)  nicht  in  unseren Rechner haben. Diese GLUE
 produziert  an  anderen  Stellen  einen  Busfehler,  wie die wohl i.A.
 bliche GLUE. Seitdem ich die STE-Anpassung implementiert habe, gab es
 also Probleme...
-Der  Debugger funktioniert, soweit ich es auf der CeBit testen konnte,
 auch  auf  dem TT030/02. Der Assembler nur zum Teil (die Assemblierung
 geht nicht, aber was ist das schon...)
-Der  Debugger  untersttzt jetzt OverScan, d.h. er arbeitet zwar immer
 noch  auf dem kleinen Bildschirm, kann aber auf den OverScan-Modus um-
 schalten.  Den  Assembler sollte man jedoch weiterhin in die Ausnahme-
 liste von OverScan eintragen.

Erweiterungen des Assemblers:
-ASCII-Laden ist nun etwa 1.5 bis 4 (!) mal schneller.
-Bei ADDQ bzw. SUBQ ist kein # mehr ntig. Der Assembler ergnzt 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  nmlich  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 abschlieendes ':' ist jedoch
 nicht ntig.

 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  Lnge  der  Datei in kb, sowie die schon gelesenen kb ausgegeben.
 Dies  ermglicht  endlich  ein  Abschtzen  der  Ladezeit  bei  groen
 Dateien.
-Symbol  ersetzen  (Ctrl-E)  hat  nun eine weiter SEHR (!!!) praktische
 Mglichkeit  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 heit 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 VERNDERT!)
  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   knnen   mit  CTRL-O  ausgefhrt  werden  (siehe
 Meneintrag "Assembler" und dort unter "Optimierungen").
-Der Assembler kennt nun smtliche Toolbox und OS-Traps des Mac. Inklusive
 der  evtl.  Parameter. Da wohl die wenigsten einen Apple Macintosh haben,
 profitieren wohl lediglich Sren und ich davon...


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 heien, 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 erwhnen, 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
 whrend  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 ntig, da der Assembler die Adressen umrechnen
 kann.  Die  Adressen  am  linken  Rand sind brigens alle gleich, dies
 liegt  daran,  da  Sren  und  ich noch keine Mue gefunden haben den
 Sourcecode-Teil  auch  nur  irgendwie  zu  optimieren (Wenn der Source
 lnger  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:
-Smtliche  Filenamen  und Pfade (z.B. LOAD, DIR, etc.) MSSEN jetzt in
 Anfhrungszeichen  (") eigeschlossen werden. Dies ist zwar lstig, ist
 aber durch eine Umstellung der internen Strukturen ntig 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 ntig. Dazu sind
 die  Befehle durch einen ":" zu trennen (deswegen mu man die Pfade in
 Anfhrungszeichen angeben).
-Auch  in  der  oben erwhnten 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 verhlt sich etwas anders als vorher. Das
 "ruhige"  Scrolling  ohne  Flackern  der  untersten  Zeile  mute dran
 glauben (an was, kommt spter).
-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 Vorschlge!).
-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 hher
 MEMCHECK:<>0  =>  Speichertest  entfllt.  Ein  Dump  wrde dann statt
          "--"-Zeichen einfachen einen Busfehler ergeben.
 ALL     :Setzt  alle Register (D0-A6) auf den gleichen Wert. Praktisch
          zum Lschen 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  schlieen  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
 nchsten   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  Vorschlge 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 schtzen wissen. Default: RING=0
 .Die  Variable SAVEAREA ist jetzt auch unter dem Namen S zu erreichen.
  Der lange Name hat mich auch schon immer gestrt.
 .Beim  DIR-Befehl wird jetzt vor Programmen mit der Extension PRG, TOS
  und  TTP automatisch LE als Default vorgegeben. Auch dies sollte wohl
  sinnvoller  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 aufgefat
  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. Lt sich leider nicht einfach ndern.
  Bei  der  Gelegenheit  habe  ich  das  Ausgabeformat  gendert, statt
  "W:Zahl"  heit  es  jetzt  "Zahl.W", dies lt an die Extensions der
  Opcodes denken, was ja auch sinnvoller ist.
-Und wieder einige Vorschlge von Thomas Waldmann:
 .Wenn  die Variable .memcheck auf 1 gesetzt ist, wird beim SAVE-Befehl
  keine  Bereichsabfrage  mehr  durchgefhrt. Allerdings kann bei einer
  fehlerhaften Eingabe das GEMDOS abstrzen.
 .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
 auffllt.  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 Auflsung und
 OverScan Auflsung umschalten. Dies wird mit dem entsprechenden XBIOS-
 Befehl  aus  dem  OverScan Treiber getan. Somit wird also auch das GEM
 umgeschaltet.

Sonstiges:
-Das  SHIP.ACC  untersttzt in der neuen Version das XACC-Protokoll der
 Stufe  0 fr Accessorys (Fragen zu diesem Protokoll an: Konrad Hinsen,
 Gelderner Strae 22b, D-5170 Jlich; Bitnet: HAC041@DJUKFA11; Mailbox:
 Maus Aachen (0241/154949)).
-Andreas  Alich  hat uns freundlicherweise ein Programm names RSC2S zur
 Verfgung  gestellt.  Dieses Programm ermglicht es RSC-Dateien direkt
 in den Assemblerquelltext einzubinden. Nheres im RSC2S-Ordner.
-Die  AES/VDI-Library wurde neu geschrieben. Nun werden die bisher ver-
 nachlssigten VDI-Aufrufe endlich auch wie AES-Aufrufe untersttzt.


        Markus Fritze

