Magic Disk 64

home to index to html: MD9111-UTILITIES-ELITE_MON.html
               ELITE-MON                
               ---------                
Dieser    Maschinensprachemonitor  über-
bietet mit  seinen  70  Befehlen  einige
der   bereits   etablierten    Monitore.
Er setzt  sich  aus  zwei  großen  Teil-
bereichen   zusammen:   Der   Maschinen-
sprache- und der Diskettenmonitor!      
A) ALLGEMEINES                          
Werden die folgenden Befehle "geshiftet"
eingegeben,  so  erfolgt   die   Ausgabe
sowohl auf dem Bildschirm als  auch  auf
einem angeschlossenen Drucker:          
d, m, ea, eb, ec, ed, es, eu, tw, hr,   
ha, hh, hi, ht, und hz.                 
Bei Kommandos mit zwei  Buchstaben, darf
allerdings  nur  der  erste  "geshiftet"
werden. Beispiele:                      
    Ea cd00 d000                        
    Tw e716                             
B) DIE FUNKTIONEN:                      
Alle Adressen, die  bei  der  Befehlsbe-
schreibung in  Klammern  stehen,  können
auch weggelassen werden.                
Wenn bei einem  Ausgabebefehl  die  End-
adresse nicht angegeben  wird,  so  wird
$ffff   vorausgesetzt.   Werden    keine
Adressen angegeben,  so  entspricht  die
Anfangsadresse dem Inhalt der  Speicher-
zellen  $fb  und  $fc.  Die   Endadresse
ist in einem solchen Fall  immer  $ffff.
Drückt man während der Ausführung  eines
Ausgabekommandos "Run/Stop", so befindet
man sich wieder im Eingabemodus.        
Mit Space wird jeweils die nächste Zeile
angezeigt.  CTRL  verlangsamt  und  eine
beliebige andere Taste  unterbricht  die
Ausgabe solange, bis wieder  eine  Taste
gedrückt wird.                          
Datassettenbesitzer können  die  Geräte-
nummer mit "i" auf 01 stellen und  diese
Version speichern. Dies  gilt  auch  bei
"p" und "+".                            
Die Funktionsweise des Diskmonitors:    
Alle  Sektoren  werden  durch  Job-Codes
gelesen,  geschrieben  und   verglichen.
Jede  Diskoperation  initialisiert   das
Laufwerk. Nach  den  Operationen  werden
die  Rückmeldungen  der  Job-Codes  aus-
gegeben. Ist ein Sektor  eingelesen,  so
steht er ab  $0300  (erster  Puffer)  im
Floppy-RAM  (noch  nicht  im  Rechner!).
Der Diskmonitor überprüft nicht, ob  ein
Sektor zulässig ist.                    
Die Bedeutungen der Rückmeldungen:      
    01 - kein Fehler (ok).              
    02 - 20er Read Error                
    03 - 21er Read Error                
    04 - 22er Read Error                
    05 - 23er Read Error                
    07 - Verify Error                   
    08 - Write Protect on               
    09 - 27er Read Error                
    0a - 28, Write Error                
    0b - Disk ID Mismatch               
    0f - Drive not ready                
    10 - 24, Read Error                 
Dezimale Adressangaben bei den  Ausgabe-
befehlen (m, d, e...):                  
Bei  den  verschiedenen  Ausgabebefehlen
und bei "g" kann die erste Adresse  auch
dezimal angegeben werden. Als Endadresse
wird dann $ffff angenommen.             
Das Kennzeichen für eine Dezimalzahl ist
'#'.  Dieses  Zeichen  muß   vor   jeder
Dezimalzahl stehen. Beispiele:          
           m  #49152                    
           ea #2304                     
           es #828                      
           g  #64738                    
Der  Monitor   gibt   ein   Fragezeichen
aus, falls eine falsche Eingabe  gemacht
wurde,  oder  ein  Fehler  anderer   Art
auftritt.  Die  Befehle   müssen   nicht
unbedingt in der ersten Bildschirmspalte
stehen.                                 
C) BEFEHLSBESCHREIBUNG                  
a aaaa (ASSEMBLE)                       
Nach der Eingabe befindet  man  sich  im
Assemble-Modus. Jetzt lassen  sich  alle
Assembler-Befehle benutzen.             
Einzelne Bytes (z.B. illegale  OP-Codes)
können mit vorangehendem Punkt  eingege-
ben werden. Beispiel: 0900 .0c          
Auch die Verwendung von einfachen Labels
(Markierungen) ist möglich.             
Syntax: mHexzahl von 00 bis 20.         
Beispiel: bcc m01                       
          .                             
          .                             
          m01 ldy#ff                    
Diese  Markierungen   können   bei   den
Branch-Befehlen und  bei  JMP  verwendet
werden.  Durch  Betätigung  der   RETURN
Taste ist der  Cursor  am  Zeilenanfang.
Jetzt kann die Adresse,  bei  der  fort-
gefahren  werden   soll,   überschrieben
werden.  Die  Eingabe  des  "$"-Zeichens
zur Markierung einer Hexzahl  ist  nicht
erforderlich.                           
Bei  den  Immediate-Befehlen   gibt   es
folgende  Möglichkeiten   zur   Eingabe:
    lda #($)41    - Hexzahl             
    lda "a        - ASCII Code          
    lda %.*.....* - Binärzahl           
Der Assemble-Modus  kann  mit  "x"  ver-
lassen  werden.  Dann  wird   der   pro-
grammierte  Teil  disassembliert  ausge-
geben.                                  
b aaaa eeee (BASIC-DATA)                
Wandelt  den  Speicherblock  $aaaa   bis
$eeee in  Datazeilen  um.  Dabei  werden
möglichst viele Datas in eine Zeile  ge-
schrieben.                              
Nach  der  Durchführung   befindet   man
sich  im  Basic-Editor.  Die  Umwandlung
läßt sich  durch  längeres  Drücken  der
CTRL Taste abbrechen.                   
c aaaa bbbb cccc dddd eeee (CONVERT)    
Verschiebt das Programm  zwischen  $aaaa
und  $bbbb  nach  $cccc  und  paßt   die
absoluten und relativen Sprünge zwischen
$dddd und $eeee an.                     
Alle Sprungziele werden also voll  auto-
matisch verändert.                      
Würde   sich   beim   Verschieben    ein
relativer  Sprung  ergeben,  der   nicht
möglich ist, so wird die Adresse  dieses
Befehls angezeigt.  Falls  man  versucht
hat, einen Teil des ROMs  zu  verlagern,
so wird ein Fragezeichen ausgegeben.    
d (aaaa) (eeee) (DISASSEMBLE)           
Disassembliert den  angegebenen  Bereich
mit Ausgabe der Hex-Werte.              
Wenn ein  illegaler  OP-Code  auftaucht,
wird  zusätzlich   das   ASCII   Zeichen
ausgegeben. Nach  einem  RTS,  JMP,  RTI
und  BRK  wird  zur  besseren  Übersicht
eine    Leerzeile     eingefügt.     Die
Assemblerbefehle  können   überschrieben
werden. Dabei verschwindet das Komma  am
Anfang der Zeile (zur Kontrolle).       
ea (aaaa) (eeee) (EDIT ASCII CODES)     
Gibt jeweils 32 ASCII-Zeichen pro  Zeile
aus,  die  im  Gegensatz  zu  "m"  über-
schrieben werden können. Mit diesem  Be-
fehl können  Texte  leichter  eingegeben
werden.  Bei  unerwünschten  Codes   ...
(Siehe "m"!)                            
eb (aaaa) (eeee) (EDIT BILDSCHIRMCODES) 
Es werden 32 Bildschirm-Codes  je  Zeile
angezeigt. Diese können im Gegensatz  zu
"eu" überschrieben werden.              
Gibt man  einen  Edit-Befehl  mit  einem
unzulässigen zweiten Buchstaben ein,  so
wird dieser als "b" interpretiert.      
ec (aaaa) (eeee)  EDIT CHARACTERS:      
Gibt jeweils eine  Binärzahl  pro  Zeile
aus. Dadurch können Zeichensätze  sicht-
bar  gemacht   und   verändert   werden.
Für ein  gesetztes  Bit  wird  ein  "*",
für ungesetztes ein Punkt ausgegeben.   
ed (aaaa) (eeee) (EDIT DECIMAL)         
Zeigt den angegebenen Bereich  mit  acht
Dezimalzahlen je Zeile an.              
Diese Zahlen können  auch  überschrieben
werden.  Dabei  dürfen  die  Werte  aber
niemals größer als  255  sein!  Bei  der
Eingabe  endet  eine  Zahl  beim  ersten
nichtnumerischen Zeichen.               
es (aaaa) (eeee) (EDIT SPRITE)          
Zeigt drei  Binärzahlen  pro  Zeile  an.
Damit werden Sprites sichtbar und können
verändert werden. Der Monitor wird  also
zu einem einfachen Spriteeditor!        
eu (aaaa) (eeee) (EDIT ÜBERSICHTLICH)   
Bei "eu" werden 40 Bildschirm-Codes  pro
Zeile angezeigt. Man kann aber  nur  bei
"eb" überschreiben.                     
Mit diesem  Befehl  werden  ganze  Bild-
schirme unverzerrt wiedergegben.        
f hh aaaa eeee (FILL)                   
Füllt den Speicherbereich von $aaaa  bis
$eeee mit der Hexzahl hh.               
g (aaaa) (GO)                           
Startet  ein  Maschinenprogramm  ab  der
Adresse $aaaa.  Dabei  werden  alle  Re-
gisterinhalte   übergeben.   Fehlt   die
Adresse, so startet der Befehl  "g"  bei
der Adresse, die im Programmzähler  (PC)
steht.  Befindet  sich   am   Ende   des
Programms ein BRK, so  meldet  sich  der
Monitor   mit    der    Registeranzeige.
Mit RTS gelangt man wieder in den Basic-
Editor. Die Adresse  kann  auch  dezimal
angegeben werden.                       
ha aaaa eeee xxxx (HUNT ABSOLUT)        
Sucht von $aaaa bis $eeee nach absoluten
Befehlen (jsr, jmp, lda...),  die  $xxxx
im Operanden haben. Ein Joker (="?") ist
bei allen  h-Befehlen  voll  einsetzbar.
Die    gefundenen     Befehle     werden
disassembliert ausgegeben. Beispiele:   
      ha c000 d000 e716                 
      ha c000 d000 d???                 
Die  Ausgabe  auf  dem  Bildschirm  kann
mit irgendeiner Taste angehalten werden.
Mit RUN/STOP gelangt man wieder  in  die
Eingabeschleife.  Dies  gilt  bei  allen
HUNT-Befehlen.                          
hh aaaa eeee 11 22 33 44 55 (HUNT-HEX)  
Gibt alle Adressen aus,  bei  denen  die
Hexzahlenfolge  im  angegebenen  Bereich
vorliegt.  Es  darf  nach   maximal   16
Hexwerten gesucht werden. Beispiel:     
     hh c900 cde3 ea ?? ea              
hi aaaa eeee xx (HUNT IMMEDIATE)        
Sucht  alle   Immediate-Befehle   (z.B.:
lda  #00),  im  Bereich  von  $aaaa  bis
$eeee,  die  "xx"  im  Operanden  haben.
hr aaaa eeee xxxx (HUNT RELATIV)        
Spürt alle relativen Sprünge, die  $xxxx
anspringen im angegebenen  Bereich  auf.
Der Monitor achtet dabei  nicht  darauf,
ob ein Sprung möglich ist.              
Das hat den Vorteil,  daß  die  Adressen
nicht  genau  angeben   werden   müssen.
ht aaaa eeee (HUNT TEXTE)               
Zeigt alle Tabellen und Texte (was nicht
als  Assemblerbefehl  erkannt  wird)  im
Bereich   von   $aaaa   bis   $eeee   in
disassemblierter Form an.               
hz aaaa eeee xx (HUNT ZEROPAGE)         
Spürt  alle  Zeropage-Adressierungen  im
Bereich von $aaaa  bis  $eeee  auf,  die
"xx" im Operanden haben.                
i xx (I/O-GERÄT)                        
stellt Gerätenummer des  Speichermediums
ein.                                    
o (OLD)                                 
Holt    den    letzten     Ausgabebefehl
(d, m, ea, es ...) zurück und zeigt  ihn
an. Dies ist  sehr  nützlich,  wenn  man
sich z.B. eine Routine noch  einmal  an-
ansehen möchte, aber nicht mehr weiß, wo
sie beginnt. Der Befehlstring wird dabei
ab $0217 gespeichert.                   
k Überschrift (KOPF)                    
Gibt  alles   was   hinter   "k"   steht
(einschließlich    Leerschritte)     als
Überschrift (Kopf) auf den  Drucker  aus
(maximal 40 Zeichen).                   
l "filename" (aaaa) (LOAD)              
Lädt ein  File  vom  vorher  definierten
Datenträger   an   die   Adresse   $aaa.
Fehlt die Adresse, so  wird  ",x,1"  ge-
laden.                                  
Dabei  werden  keine  Basic-Zeiger  ver-
ändert.                                 
Tritt irgendein Fehler  auf,  dann  gibt
der Monitor ein Fragezeichen  aus.  Dies
gilt auch bei "v".                      
m (aaaa) (eeee) (MEMORY)                
Gibt den Speicherinhalt  von  $aaaa  bis
$eeee mit jeweils acht Hex-Byte und  den
dazugehörigen ASCII  Zeichen  pro  Zeile
aus.                                    
Änderungen sind durch Überschreiben  der
Hexzahlen möglich. Die angegebenen Werte
werden in die  entsprechenden  Speicher-
stellen geschrieben und anschließend mit
diesen verglichen.                      
Tauchen Werte auf, die beim Drucken  ein
Chaos erzeugen würden (z.B.:  Bildschirm
löschen), so  wird  nur  ein  Punkt  auf
Papier gebracht.                        
n lllll (NUMBER OF LINE)                
Stellt die erste  Zeilennummer  zum  Er-
zeugen  der  Data-Zeilen   auf   "lllll"
um. Sie muß dezimal angegeben werden!   
p xx (PRINTER-SET)                      
Legt die Geräteadresse des Druckers  auf
"xx".                                   
q (QUIT)                                
Führt einen Systemreset aus (SYS 64738).
Ein eventuell  vorhandener  Resetschutz,
wird aber wahrgenommen.                 
r (REGISTER)                            
Zeigt die Register  und  Flags  an.  Sie
lassen sich durch Überschreiben  ändern.
Die Binärzahl (Flag)  kann  nicht  über-
schrieben werden. Dies muß beim  Status-
register geschehen.                     
                Bedeutung:              
  Abkürzung: PC Programcounter          
             n  Negativ Flag            
             z  Zero-Flag               
             SR Statusregister          
             v  Overflow Flag           
             c  Carry-Flag              
             AC Akkumulator             
             ?  nicht belegt            
             XR X-Register              
             b  BRK Flag                
             YR Y-Register              
             d  Dezimal Flag            
             SP Stackpointer            
             i  Interrupt Flag          
s "name" aaaa eeee (SAVE)               
Speichert  den  Bereich  von  $aaaa  bis
$eeee unter dem Namen "name" ab.        
tb xx aaaa (TRACE BREAK)                
Setzt bei  $aaaa  einen  Haltepunkt  für
"tq". "tq"  wird  unterbrochen,  nachdem
$aaaa "xx"-mal durchlaufen wurde.       
tq aaaa (TRACE QUICK)                   
Schnellschrittmodus,  startet  ein  Pro-
gramm  bei  $aaaa  und  läuft  bis   zum
mit "tb"  voreingestellten  Punkt.  Dann
befindet  man  sich  im   Einzelschritt-
modus. Dieser Befehl arbeitet  natürlich
nicht in Echtzeit!                      
ts aaaa ssss (TRACE STOP)               
Startet ein  Programm  bei  der  Adresse
$aaaa und bricht bei der  Adresse  $ssss
mit der Registeranzeige ab.             
Das  Programm  wird  dabei  in  Echtzeit
durchlaufen. Jetzt kann  evtl.  mit  "g"
oder "tw"  fortgefahren  werden.  Dieser
Befehl arbeitet allerdings nur  im  RAM,
weil an  der  Endadresse  ein  BRK-Point
gesetzt wird.                           
tu uuuu aaaa ssss (TRACE USER)          
Durchläuft ein  Programm  ab  $aaaa  und
unterbricht es bei $ssss  (siehe  "ts").
Nach dem  Erreichen  der  Adresse  $ssss
wird  in  das  User-Programm  ab   $uuuu
gesprungen.  Hier  können   jetzt   ver-
schiedene   Speicherstellen    überprüft
werden.                                 
tw (aaaa) (xxxx) (TRACE WALK)           
Startet ein  Programm  bei  $aaaa.  "tw"
wartet nach  jedem  ausgeführtem  Befehl
auf  einen  Tastendruck  und  zeigt  die
Registerinhalte und Flags  an.  Mit  der
RUN/STOP-Taste kann  der  Einzelschritt-
simulator unterbrochen werden.          
Wird die  Adresse  $xxxx  angegeben,  so
wird zusätzlich nach jedem  Befehl  eine
Hexdump-Zeile  mit  der   Anfangsadresse
$xxxx   ausgegeben   (sog.   Hot-Spots).
Dadurch  können  verschiedene  Speicher-
zellen   überwacht   werden.   Mit   "j"
können  Unterprogramme   schnell   abge-
arbeitet  werden.   Fehlt   jedoch   die
Startadresse, so beginnt tw beim PC.    
u aaaa bbbb cccc dddd eeee (UMRECHNEN)  
Rechnet alle absoluten Adressen  im  Be-
reich von  $dddd  bis  $eeee,  die  sich
auf den Bereich von $aaaa bis $bbbb  be-
ziehen, auf $cccc um.                   
Es geht noch weiter, aber vorher  müssen
Sie  im  Menü  den  nächsten  Teil   der
Anleitung  aufrufen,  der  hier   leider
keinen Platz mehr hat...                
Valid HTML 4.0 Transitional Valid CSS!