Magic Disk 64

home to index to html: MD9409-UTILITIES-MEGA-MON_2.html
       Anleitung MEGAMON - Teil 2       
----------------------------------------
m) "O" - SELECT MEMORYBANK              
Hiermit   schalten  Sie  eine  spezielle
Speicherkonfiguration für alle Speicher-
spezifischen Befehle ein (A, C, D, E, F,
H,  I,  J,  N, T, W). Wie Sie vielleicht
wissen, so  verfügt  der  C64  über  ein
Speichermodell,  in  dem  RAM-  und ROM-
Bereiche  teilweise  an   den   gleichen
Adressen  liegen.  Durch Schreiben eines
Wertes in Adresse $0001 können  Sie  nun
in   bestimmten  Bereichen  ROM-Speicher
über dem RAM einblenden  und  somit  auf
dieses  zugreifen. Da es recht aufwendig
ist, das RAM unter dem ROM  zu  untersu-
chen, und man daher ständig zwischen RAM
und  ROM  hin- und herschalten muß, kann
man die  Speicherkonfiguration  für  den
MegaMon voreinstellen. Schalten Sie z.B.
alle  ROMs  ab, so arbeiten die oben ge-
nannten Befehle immer im RAM  unter  den
ROMs.  Die  Verwaltung des Hin- und Her-
schaltens  wird  dabei  automatisch  vom
MegaMon  übernommen,  so daß für Sie der
Eindruck entsteht, als hätten Sie momen-
tan tatsächlich nur das RAM aktiviert.  
Benutzen Sie die "O"-Funktion ohne einen
Parameter,  so  gibt  Ihnen  der MegaMon
einen Zifferncode aus, der die  aktuelle
Einstellung repräsentiert. Optional kön-
nen Sie auch einen Parameter,  bestehend
aus  einer Ziffer von 0-7, anhängen, der
die Konfiguration  Ihren  Wünschen  ent-
sprechend  einstellt.  Diese Ziffer ent-
spricht  den  untersten  drei  Bits  der
Speicherzelle $0001 die die Speicherkon-
figuration wiefolgt beeinflussen:       
Par. $A000-$BFFF $D000-$DFFF $E000-$FFFF
----------------------------------------
 0   RAM         RAM         RAM        
 1   RAM         CHAR-ROM    RAM        
 2   RAM         CHAR-ROM    KERNEL-ROM 
 3   BASIC-ROM   CHAR-ROM    KERNEL-ROM 
 4   RAM         RAM         RAM        
 5   RAM         I/O         RAM        
 6   RAM         I/O         KERNEL-ROM 
 7   BASIC-ROM   I/O         KERNEL-ROM 
Alle  anderen  Adressbereiche  enthalten
immer   RAM-Speicher  und  werden  nicht
überlagert. Je nach Konfiguration können
Sie also die  I/O-Chips  (SID/VIC/CIAs),
das  Zeichensatz-ROM,  sowie  BASIC- und
Betriebssystem-ROM ein- oder ausschalten
und dann in dem gegebenen Bereich arbei-
ten.                                    
Zusätzlich verfügt diese  Funktion  noch
über  einen  speziellen Parameter. Geben
Sie hinter dem "O" ein "D" an, so "blen-
det"  ihnen der MegaMon den Speicher der
Floppy in den C64-Adressbereich ein. Auf
diese Weise können Sie direkt in  diesem
Bereich  arbeiten  und  somit Assembler-
Programme  in  das  Floppy-RAM   hinein-
schreiben.   Die   Aufteilung  des  C64-
Speichers sieht nach  einem  ".OD"  wie-
folgt aus:                              
Adr.          Funktion                  
----------------------------------------
$0000-$1FFF   Floppy-RAM                
$2000-$BFFF   C64-RAM (dieses Bereiches)
$C000-$FFFF   Floppy-ROM                
Sie können ja einmal die  Speicherkonfi-
guration  auf  diese  Art  und Weise um-
schalten. Hieraufhin kann mit dem Befehl
"I C000" ein  Blick  in  das  Floppy-ROM
geworfen werden (erkennbar am Copyright,
das  irgendwann in der ASCII-Darstellung
des "I"-Befehls erscheint)!             
n) "Q" - EXECUTE SLOWLY                 
Mit  diesem  Befehl  kann man ein Assem-
blerprogramm sehr langsam Ablaufen  las-
sen. Hierbei muß natürlich als Parameter
die  Startadresse dieses Programms ange-
geben werden. Es  wird  nun  Befehl  für
Befehl  abgearbeitet,  jedoch mit langen
Pausen zwischen  den  Befehlen.  Dadurch
kann man besser einen Fehler im Programm
erkennen.  Da  der  MegaMon  während der
Ausführung keine Angaben auf  dem  Bild-
schirm  macht,  eignet sich die Funktion
eigentlich nur für  Grafikroutinen,  bei
denen  man  erkennt,  wenn  etwas falsch
gelaufen ist. Durch  Gedrückthalten  der
'Commodore'-Taste  können  Sie  den Pro-
grammablauf übrigens beschleunigen.  Mit
'RUN/STOP'  brechen  Sie  die Ausführung
ganz ab, wobei die  Registerinhalte  zum
Zeitpunkt  der  Unterbrechung ausgegeben
werden.                                 
o) "R" - REGISTERS                      
Dieser  Befehl  verlangt keine Parameter
und gibt ihnen lediglich  den  Statusan-
zeige  des Prozessors auf dem Bildschirm
aus. Dabei stehen hier immer  die  Werte
der letzten Unterbrechung (BRK oder NMI)
in  den  Registern,  bzw.  eigene Werte,
falls Sie die Anzeige mit selbigen über-
schrieben haben.                        
p) "T" - TRANSFER                       
Hiermit können Sie einen Speicherbereich
an  eine  andere  Adresse  kopieren. Der
Befehl verlangt drei  Parameter:  Start-
und  Endadresse  des  zu kopierenden Be-
reichs, sowie die Startadrese des  Spei-
chers,  an  die  kopiert werden soll. So
kopiert der Befehl  ".T  E000,E3E7,0400"
den   Anfang   des  Betriebssystems-ROMs
(wenn eingeschaltet) in den  Bildschirm-
speicher.  Haben  Sie  übrigens  mittels
".OD" den Floppy-Speicher eingeschaltet,
so können Sie auch diesen in  den  Spei-
cher  des C64 umkopieren und dort verän-
dern!                                   
q) "U" - SHOW RASTERTIME                
Die  Geschwindigkeit  einer Routine wird
oft in der Zeit gemessen,  die  der  Ra-
sterstrahl  braucht  um eine Rasterzeile
aufzubauen. Selbiger läuft  pro  Sekunde
50  Mal über den Bildschirm und baut da-
bei jeweils  312  Zeilen  auf.  Schnelle
Grafikroutinen  müssen  Ihre  Arbeit  in
einem  gewissen  Zeitrahmen   erledigen,
damit  das  Bild  nicht  zu flackern be-
ginnt. Mit der "U"-Funktion  können  Sie
sich nun anzeigen lassen, wie lange Ihre
Routine  braucht.  Geben Sie hierzu ein-
fach die Startadresse  der  Routine  als
Parameter  an,  und  stellen Sie sicher,
daß sie mit einem  "RTS"-Befehl  beendet
wird. Nach Aufruf durch das "U"-Kommando
sehen  Sie  nun einen hellblauen Raster-
balken  im  Bildschirmrahmen,  der   die
benötigte Rasterzeit angibt. Je schmaler
der Streifen, desto schneller die Routi-
ne. Der MegaMon ermittelt dabei übrigens
auch die Anzahl der verbrauchten Raster-
zeilen,  die  er hinter dem "U"-Kommando
auf dem Bildschirm ausgibt. Um die Funk-
tion  zu  beenden, müssen Sie wieder die
'RUN/STOP'-Taste drücken.  Beachten  Sie
bitte, daß diese Funktion nur einen Sinn
bei  besonders  schnellen  Routinen hat.
Dauert die Abarbeitung länger  als  eine
50stel Sekunde, so sieht man einen stän-
dig hellblauen Bildschirmrahmen, der  an
manchen Stellen flackert!               
r) "W" - TRACE MODE                     
Dies  ist eine der nützlichsten Funktio-
nen des MegaMon. Mit ihr können Sie  den
Ablauf eines Assemblerprogramms schritt-
weise verfolgen.  Hierbei  werden  Ihnen
nach  Aufruf  zwei Zeilen angezeigt, die
nacheinander den Zustand von SR, AC,  XR
YR, SP, und PC anzeigen. Hiernach folgen
bis  zu  drei Bytes, in denen der Opcode
und ggf. die  Operandenbytes  eines  Be-
fehls stehen, sowie der Befehl selbst in
Textform.  In der ersten Zeile sehen Sie
immer die  gerade  ausgeführte,  in  der
zweiten  die  als nächstes auszuführende
Instruktion. Es gibt nun  zwei  Möglich-
keiten  den  Programmablauf  um  jeweils
einen Befehl fortzusetzen. Im  Regelfall
können  Sie entweder die 'CTRL' oder die
'SPACE'-Taste zum  Fortfahren  um  einen
Schritt  verwenden. Die Tasten haben al-
lerdings  unterschiedliche   Funktionen,
wenn  der  nächste Befehl ein JSR-Befehl
ist. Drücken Sie hier 'SPACE',  so  wird
der  JSR-Befehl  ausgeführt  und  in die
Unterroutine eingetreten, wo der nächste
Befehl angezeigt wird. Drücken  Sie  je-
doch  'CTRL',  so  wird die Unterroutine
als Ganzes  aufgerufen  und  ausgeführt.
Erst  wenn Sie mittels RTS beendet wurde
unterbricht der MegaMon  die  Ausführung
wieder und zeigt die dem JSR-Befehl fol-
gende Zeile an. Auf diese  Weise  können
Sie  Unterroutinen, von denen Sie sicher
wissen, daß  sie  funktionieren,  normal
ablaufen  lassen, da sie ja nicht geson-
dert auf Fehler untersucht  werden  müs-
sen.  Desweiteren  kann  auch  hier, wie
schon bei  der  "Q"-Funktion,  der  Pro-
grammablauf   durch  Gedrückthalten  der
'Commodore'-Taste  beschleunigt  werden,
wobei jedoch weiterhin die beiden Infor-
mationszeilen angezeigt werden. Der Tra-
ce-Modus  erkennt  automatisch  das Ende
des Programms, wenn es durch den letzten
RTS-Befehl  den  Stapelzeiger  auf   $FF
zurücksetzt,   und   beendet   dann  die
Ausführung. Gleiches erreichen  Sie  ma-
nuell   durch  drücken  der  'RUN/STOP'-
Taste. Der Aufruf des  Trace-Modus  kann
mit  oder  ohne  Startadresse  erfolgen.
Geben Sie letztere nicht an, so wird der
aktuelle Inhalt des Programmzählers  als
Startadresse angenommen. Auf diese Weise
kann   ein  abgebrochener  Trace-Vorgang
wieder fortgesetzt werden.              
s) "X" - EXIT                           
Dieser  Befehl  verlangt keine Parameter
und beendet den MegaMon, indem er in die
BASIC-Eingabe zurückspringt. Die  verän-
derten  NMI-  und  BRK-Vektoren  bleiben
dabei jedoch erhalten.                  
t) "Y" - TEST IRQ                       
Dies ist  eine  nützliche  Funktion  zum
einfachen   Installieren  eines  Raster-
IRQs. Sie  verlangt  als  Parameter  die
Adresse,  an  der  sich  die IRQ-Routine
befindet, sowie die  Rasterzeilennummer,
an der der IRQ ausgelöst werden soll. So
können Sie z.B. eine einfache Rasterbal-
kenroutine bei  $1800  ablegen,  die  in
Rasterzeile   $20  die  Hintergrundfarbe
ändern  soll.  Durch  Eingabe  von   ".Y
1800,20"  im  MegaMon  wird  die Routine
dann automatisch initialisiert  und  ar-
beitet  nun  im  Hintergrund. Damit dies
reibungslos funktioniert muß Sie  aller-
dings   das  VIC-ICR  durch  einen  "DEC
$D019"-Befehl löschen, sowie durch einen
Sprung auf den  Betriebssystems-IRQ  bei
$EA31  beendet  werden. Wird der MegaMon
übrgens  durch  drücken  der  'RESTORE'-
Taste  neu  angestartet,  so entfernt er
den IRQ wieder aus  dem  IRQ-Vektor  bei
$0314/$0315.  Geben  Sie  nun  den  "Y"-
Befehl OHNE Parameter an, so werden  die
zuletzt benutzten Parameter (im Beispiel
1800,20)  automatisch vorrausgesetzt und
wieder neu eingetragen.                 
u) "#" - CONVERT DEC->HEX               
Mit dieser Funktion können Sie eine Zahl
im Dezimalsystem, die als Parameter  dem
Kommandozeichen  "#"  folgen muß, in das
Hexadezimalsystem umwandeln.            
v) "$" - CONVERT HEX-DEC                
Dies ist die Umkehrfunktion von "#". Sie
wandelt  eine  Hexadezimalzahl  in  eine
Dezimalzahl um.                         
w) "***" - CLEAR MEMORY                 
Dies ist der einzige Befehl der aus drei
Zeichen  besteht. Er löscht den gesamten
Speicher, indem  er  ihn  mit  Nullbytes
auffüllt.  Die  einzigen nicht davon be-
troffenen Bereiche  sind  die  Zeropage,
die   Betriebssystemsvektoren,  und  der
Bildschirmspeicher,   im   Bereich   von
$0000-$07FF,   sowie   der  Bereich  von
$8000-$9FFF, in dem ja der  MegaMon  un-
tergebracht ist.                        
3) DIE DISKETTEN-FUNKTIONEN DES MEGAMON 
Außer den oben beschriebenen  Funktionen
verfügt der MegaMon auch über eine Reihe
von Befehlen, die die Zusammenarbeit mit
der  Floppy erleichtern sollen. Zunächst
einmal sollte erwähnt  werden,  daß  das
Programm  zwei Arten von Lade- und Spei-
cherfunktionen kennt. Zum Einen sind das
die normalen Funktionen mit denen  Daten
wie gewohnt gelesen und geschrieben wer-
den können, zum Anderen gibt es speziel-
le  Lade- und Speicherkommandos, die die
zu schreibendenen, bzw. zu lesenden  Da-
ten, packen, bzw. entpacken, können. Auf
diese  Weise kann man eine Menge Disket-
tenspeicher und auch Ladezeit einsparen,
da die Packroutine recht  effizient  und
auch schnell arbeitet.                  
Das  Format  der Parameterangabe ist bei
all diesen Befehlen (wie  auch  bei  der
Verify-Funktion)  ähnlich. Zunächst ein-
mal muß  dem  Befehlszeichen  immer  ein
Anführungszeichen  (")  folgen. Hiernach
wird der Filename angegeben, der  jedoch
nicht,  wie  man  annehmen könnte, durch
ein  weiteres  Anführungszeichen   abge-
schlossen  wird.  Manche Funktionen ver-
langen ggf. noch eine oder zwei  Adress-
Angaben,  die, jeweils durch Kommata vo-
neinander und  vom  Filenamen  getrennt,
angehängt  werden.  Hier nun eine Aufli-
stung der Befehle:                      
a) "Z" - SAVE                           
Diese  Funktion speichert einen bestimm-
ten Speicherbereich, dessen  Start-  und
Endadresse dem Filenamen unbedigt folgen
müssen,  ungepackt auf Diskette. Hierbei
wird auch die Startadresse, als absolute
Ladeadresse, im File vermerkt.          
b) "S" - SAVE COMPRESSED                
Diese Funktion wird wie die "Z"-Funktion
benutzt,  nur  daß  die  zu schreibenden
Daten in gepackter Form auf die Diskette
gelangen. Ein so geschriebenes File kann
dann mit der "K"-Funktion in  den  Spei-
cher  geladen  werden,  wobei  die Daten
automatisch wieder entpackt werden.     
c) "L" - LOAD                           
Hiermit wird  ein  File  normal  in  den
Speicher  geladen.  Dabei können Sie op-
tional eine Ladeadresse angeben, an  die
das  File geladen werden soll. Geben Sie
diese Adresse nicht an, so lädt der  Me-
gaMon  das File an seine absolute Adres-
se, die im File selbst vermerkt ist.    
d) "K" - LOAD COMPRESSED                
Dieser Befehl dient primär dem Laden von
Files,  die mit der "S"-Funktion gepackt
und gespeichert wurden. Hierbei kann wie
bei "L" eine optionale Ladeadresse  hin-
zugefügt werden. Während des Ladens wird
das  File  dann automatisch entpackt und
an  der  entsprechenden  Speicheradresse
abgelegt. Zusätlich verfügt dieser Lade-
befehl über  einen  Floppy-Speeder,  der
die  zu ladenenden Daten weitaus schnel-
ler in den Speicher lädt als  sonst.  Er
erkennt  übrigens  auch  ein ungepacktes
File, das dann automatisch auch als sol-
ches  behandelt wird. Zusätzlich gibt er
die Start- und Endadresse an, an die das
File geladen wurde. Im Prinzip macht  er
den  "L"-Befehl  überflüssig.  Letzterer
ist aus Kompatibilitätsgründen zu  ande-
ren Floppyspeedern eingebaut worden.    
e) "V" - VERIFY                         
Diese Funktion wird wie  der  "L"-Befehl
benutzt. Sie vergleicht den Inhalt eines
Files  auf  Diskette mit dem Speicherin-
halt.  Wird  keine  zusätzliche  Adresse
angegeben,  so  wird  ab der Ladeadresse
des Files  verglichen.  Geben  Sie  eine
Adresse  an, so wird die Ladeadresse ig-
noriert und der  Speicherinhalt  ab  der
gegebenen  Adresse  mit  dem  Fileinhalt
verglichen. Ist irgendwo  auch  nur  ein
Byte  ungleich, so wird ein Fragezeichen
hinter dem Befehlsaufruf ausgegeben.    
Der "V"-Befehl behandelt  übrigens  aus-
schließlich  ungepackte  Files.  Ein ge-
packtes File wird  bei  einem  Vergleich
immer  als  verschieden  zu den Rohdaten
erkannt, da die gepackten  Daten  natür-
lich eine andere Struktur aufweisen, als
die  ungepackten  (selbst  wenn sie nach
dem Entpacken wieder gleich sind).      
f) "<" - DOS COMMAND & FLOPPY STATUS    
Mit der "<"-Funktion  senden  Sie  einen
Befehl  an  die Floppy. Benutzen Sie sie
ohne Parameter, so  wird  lediglich  der
Floppystatus auf dem Bildschirm ausgege-
ben. Desweiteren können Sie optional ein
"$"-Zeichen nachstellen, was  zur  Folge
hat,  daß  der  MegaMon  das Inhaltsver-
zeichnis der eingelegten  Diskette  lädt
und auf dem Bildschirm anzeigt.         
Möchten  Sie ein Diskettenkommando (z.B.
zum Formatieren oder Validieren der Dis-
kette, bzw. zum Löschen von Files, etc.)
an  die Floppy schicken, so muß das Kom-
mando  direkt  an  das  "<"-Zeichen  an-
gehängt  werden.  So können Sie z.B. mit
"<N:TEST,XX" eine Diskette  formatieren,
oder mit "<S:TEST1,TEST2" die zwei Files
"TEST1", und "TEST2" löschen.           
4) DIE TASTENFUNKTIONEN DES MEGAMON     
Nachdem wir nun alle Funktionen des Pro-
gramms besprochen haben, möchte ich  Sie
noch auf einige Tastenfunktionen hinwei-
sen, die Ihnen die Arbeit mit dem  Mega-
Mon erleichtern sollen.                 
Zunächt einmal kann jede Buchstabentaste
von  'A' bis 'Z' zusammen mit der SHIFT-
Taste gedrückt werden. In dem Fall  gibt
Ihnen der MegaMon einen häufig benutzten
Assembler-Befehl,  der  mit dem besagten
Buchstaben assoziert  werden  kann,  auf
dem  Bidlschirm  aus.  Drücken  Sie z.B.
'SHIFT-L', so erscheint  ein  "LDA"  auf
dem  Bildschirm;  ein  'SHIFT-J' erzeugt
ein "JSR", usw.  Auf  diese  Weise  wird
Ihnen  das  Eingeben eines Assemblerpro-
gramms ein wenig erleichtert.           
Desweiteren sind im MegaMon die F-Tasten
mit einigen nützlichen  MegaMon-Befehlen
vorbelegt:                              
F1: Umschalten zwischen Disassemble- und
    Assemble-Modus. Der aktuellen  Zeile
    wird  automatisch  ein ".A" vorange-
    stellt.                             
F2: Cusor um 3 Zeilen nach oben bewegen.
F3: Disassemble-Modus.  Ein ".D" wird am
    Anfang der Zeile eingefügt,  so  daß
    Sie  eine ggf. dort stehende Adresse
    direkt disassemblieren können.      
F4: Bytewerte   in  Speicher  eintragen.
    Befindet sich am  Anfang  der  Zeile
    eine  Adresse, so wird die Erkennung
    für den "I"-Modus am Anfang der Zei-
    le eingefügt, und der Cursor auf die
    erste  Stelle nach der Adresse posi-
    tioniert, so daß  Sie  Daten  direkt
    eingeben können.                    
F5: Assemblierungscodierung  in die akt.
    Zeile schreiben. Haben Sie  ein  Di-
    sassemblieres Programm auf dem Bild-
    schirm, so können Sie auf diese Wei-
    se  einen  einzelnen  Befehl ändern,
    indem Sie 'F5' drücken und dann  den
    Befehl  der Zeile wie gewünscht ein-
    tragen.                             
F6: '.S" :' ausgeben. " :" wird benutzt,
    um  ein  schon existierendes File zu
    überschreiben. Diese Taste ist  beim
    Speichern  von  Daten behilflich, da
    Sie  nur  noch  den  Filenamen   und
    Start-,  sowie  Endadresse  anhängen
    müssen.                             
F7: Diese Taste gibt "<$" aus und  liest
    dadurch  automatisch das Inhaltsver-
    zeichnis der eingelegten Diskette.  
F8: Auto-LOAD.  Haben  Sie das Directory
    auf dem Bildschirm,  so  können  mit
    dem  Cursor in eine Zeile fahren, in
    der sich ein zu ladenendes File  be-
    findet  und  'F8'  drücken.  Hierauf
    fügt der MegaMon  einen  ".K"-Befehl
    in  die  Zeile ein, und lädt dadurch
    automatisch das File.               
Zusammen mit dem Mega-Mon befinden  sich
auch  noch  einige kleine, nützliche As-
sembler-Routinen auf dieser MD, die  Sie
sich  mit  dem  MegaMon einmal anschauen
können.                                 
                                    (ub)
Valid HTML 4.0 Transitional Valid CSS!