Magic Disk 64

home to index to text: MD9409-UTILITIES-MEGA-MON_2.txt
       Anleitung MEGAMON - Teil 2       

m)" O"- SELECT MEMORYBANK Hiermit schalten Sie eine spezielle Speicherkonfiguration für alle Speicherspezifischen 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 RAMund 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 untersuchen, und man daher ständig zwischen RAM und ROM hinund herschalten muß, kann man die Speicherkonfiguration für den MegaMon voreinstellen. Schalten Sie z. B.
alle ROMs ab, so arbeiten die oben genannten Befehle immer im RAM unter den ROMs. Die Verwaltung des Hinund Her- schaltens wird dabei automatisch vom MegaMon übernommen, so daß für Sie der Eindruck entsteht, als hätten Sie momentan 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önnen Sie auch einen Parameter, bestehend aus einer Ziffer von 0-7, anhängen, der die Konfiguration Ihren Wünschen entsprechend einstellt. Diese Ziffer entspricht den untersten drei Bits der Speicherzelle $0001 die die Speicherkonfiguration 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 BASICund Betriebssystem-ROM einoder ausschalten und dann in dem gegebenen Bereich arbeiten.
Zusätzlich verfügt diese Funktion noch über einen speziellen Parameter. Geben Sie hinter dem " O" ein " D" an, so " blendet" 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 hineinschreiben. Die Aufteilung des C64- Speichers sieht nach einem " . OD" wiefolgt aus:
Adr. Funktion

----------------------------------------
$0000-$1FFF   Floppy-RAM                
$2000-$BFFF   C64-RAM (dieses Bereiches)
$C000-$FFFF   Floppy-ROM                

Sie können ja einmal die Speicherkonfiguration auf diese Art und Weise umschalten. 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 Assemblerprogramm sehr langsam Ablaufen lassen. Hierbei muß natürlich als Parameter die Startadresse dieses Programms angegeben 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 Programmablauf ü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 Statusanzeige 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 überschrieben haben.
p)" T"- TRANSFER Hiermit können Sie einen Speicherbereich an eine andere Adresse kopieren. Der Befehl verlangt drei Parameter: Startund Endadresse des zu kopierenden Bereichs, sowie die Startadrese des Speichers, an die kopiert werden soll. So kopiert der Befehl " . T E000, E3 E7,0400" den Anfang des Betriebssystems-ROMs ( wenn eingeschaltet) in den Bildschirmspeicher. Haben Sie übrigens mittels " . OD" den Floppy-Speicher eingeschaltet, so können Sie auch diesen in den Speicher des C64 umkopieren und dort verändern!
q)" U"- SHOW RASTERTIME Die Geschwindigkeit einer Routine wird oft in der Zeit gemessen, die der Rasterstrahl braucht um eine Rasterzeile aufzubauen. Selbiger läuft pro Sekunde 50 Mal über den Bildschirm und baut dabei jeweils 312 Zeilen auf. Schnelle Grafikroutinen müssen Ihre Arbeit in einem gewissen Zeitrahmen erledigen, damit das Bild nicht zu flackern beginnt. Mit der " U"- Funktion können Sie sich nun anzeigen lassen, wie lange Ihre Routine braucht. Geben Sie hierzu einfach 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 Rasterbalken im Bildschirmrahmen, der die benötigte Rasterzeit angibt. Je schmaler der Streifen, desto schneller die Routine. Der MegaMon ermittelt dabei übrigens auch die Anzahl der verbrauchten Rasterzeilen, die er hinter dem " U"- Kommando auf dem Bildschirm ausgibt. Um die Funktion 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 50 stel Sekunde, so sieht man einen ständig hellblauen Bildschirmrahmen, der an manchen Stellen flackert!
r)" W"- TRACE MODE Dies ist eine der nützlichsten Funktionen des MegaMon. Mit ihr können Sie den Ablauf eines Assemblerprogramms schrittweise 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 Befehls 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öglichkeiten 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 allerdings 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 jedoch ' 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 folgende Zeile an. Auf diese Weise können Sie Unterroutinen, von denen Sie sicher wissen, daß sie funktionieren, normal ablaufen lassen, da sie ja nicht gesondert auf Fehler untersucht werden müssen. Desweiteren kann auch hier, wie schon bei der " Q"- Funktion, der Programmablauf durch Gedrückthalten der ' Commodore'- Taste beschleunigt werden, wobei jedoch weiterhin die beiden Informationszeilen angezeigt werden. Der Trace- 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 manuell 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änderten NMIund 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 Rasterbalkenroutine 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 arbeitet nun im Hintergrund. Damit dies reibungslos funktioniert muß Sie allerdings 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 betroffenen Bereiche sind die Zeropage, die Betriebssystemsvektoren, und der Bildschirmspeicher, im Bereich von $0000-$07 FF, sowie der Bereich von $8000-$9 FFF, in dem ja der MegaMon untergebracht 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 Ladeund Speicherfunktionen kennt. Zum Einen sind das die normalen Funktionen mit denen Daten wie gewohnt gelesen und geschrieben werden können, zum Anderen gibt es spezielle Ladeund Speicherkommandos, die die zu schreibendenen, bzw. zu lesenden Daten, packen, bzw. entpacken, können. Auf diese Weise kann man eine Menge Diskettenspeicher 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 einmal 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 abgeschlossen wird. Manche Funktionen verlangen ggf. noch eine oder zwei Adress-Angaben, die, jeweils durch Kommata voneinander und vom Filenamen getrennt, angehängt werden. Hier nun eine Auflistung der Befehle:
a)" Z"- SAVE Diese Funktion speichert einen bestimmten Speicherbereich, dessen Startund 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 Speicher 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 optional eine Ladeadresse angeben, an die das File geladen werden soll. Geben Sie diese Adresse nicht an, so lädt der MegaMon das File an seine absolute Adresse, 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 hinzugefügt werden. Während des Ladens wird das File dann automatisch entpackt und an der entsprechenden Speicheradresse abgelegt. Zusätlich verfügt dieser Ladebefehl über einen Floppy-Speeder, der die zu ladenenden Daten weitaus schneller in den Speicher lädt als sonst. Er erkennt übrigens auch ein ungepacktes File, das dann automatisch auch als solches behandelt wird. Zusätzlich gibt er die Startund 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 Speicherinhalt. Wird keine zusätzliche Adresse angegeben, so wird ab der Ladeadresse des Files verglichen. Geben Sie eine Adresse an, so wird die Ladeadresse ignoriert 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 ausschließlich ungepackte Files. Ein gepacktes File wird bei einem Vergleich immer als verschieden zu den Rohdaten erkannt, da die gepackten Daten natürlich 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 ausgegeben. Desweiteren können Sie optional ein "$"- Zeichen nachstellen, was zur Folge hat, daß der MegaMon das Inhaltsverzeichnis der eingelegten Diskette lädt und auf dem Bildschirm anzeigt.
Möchten Sie ein Diskettenkommando ( z. B.
zum Formatieren oder Validieren der Diskette, bzw. zum Löschen von Files, etc.) an die Floppy schicken, so muß das Kommando direkt an das "<"- Zeichen angehä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 Programms besprochen haben, möchte ich Sie noch auf einige Tastenfunktionen hinweisen, 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 Assemblerprogramms ein wenig erleichtert.
Desweiteren sind im MegaMon die F-Tasten mit einigen nützlichen MegaMon-Befehlen vorbelegt:
F1 : Umschalten zwischen Disassembleund 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 Zeile eingefügt, und der Cursor auf die erste Stelle nach der Adresse positioniert, so daß Sie Daten direkt eingeben können.
F5 : Assemblierungscodierung in die akt.
Zeile schreiben. Haben Sie ein Disassemblieres Programm auf dem Bildschirm, so können Sie auf diese Weise einen einzelnen Befehl ändern, indem Sie ' F5' drücken und dann den Befehl der Zeile wie gewünscht eintragen.
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 Inhaltsverzeichnis 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 befindet 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 Assembler- Routinen auf dieser MD, die Sie sich mit dem MegaMon einmal anschauen können.
( ub)

Valid HTML 4.0 Transitional Valid CSS!