1 Der Speicher-Monitor

Ab Version 1.3 gibt es die M�glichkeit, den Speicher ab einer gew�hlten Adresse anzusehen, den Monitor. Dieser erscheint immer dann, wenn ein Objekt mit einer Adresse geklickt wurde und dieses nicht modifiziert werden kann. In Version 1.2 wurde an dieser Stelle nur kurz gebeept.

Ich habe eine Speicherliste eingebaut, deren Aufbau ich der Dokumentation zum Programm ‘Enforcer’ entnommen habe. Bevor der Monitor erscheint, wird eine Adre��berpr�fung vorgenommen, ob die gew�nschte Adresse �berhaupt zul�ssig ist. Ist sie es nicht, erscheint ein Systemrequester mit allen erkennbaren Attributen des anvisierten Speicherbereichs. Das Auslesen eines unzul�ssigen Speicherbereiches kann zu einem ‘Enforcer’-Hit f�hren, wenn dieser ausgelesen wird.

Das Monitorfenster besteht aus einem Anzeige-ListView und mehreren Gadgets.

Text-Gadget: Entry

In diesem Gadget erscheint zur Information noch einmal die Zeile im Haupt-Listview von ‘RSYS’. Dahinter in [] der Typ des Speichers, wie er aus der implementierten ‘Enforcer’-Liste der Speicherbereiche ausgelesen wurde.

Text-Gadget: Start

Hier steht die Startadresse, ab der der Speicher angezeigt wird.

Gadget: Current

Hier steht die aktuelle Adresse, ab der der Speicher angezeigt wird. Der Speicher wird in 512-Byte-Bl�cken angezeigt.

Cycle-Gadget: Hex/ASCII-Hex-ASCII

Hiermit kann die Art der Anzeige ausgew�hlt werden.

Gadget: Speicher-ListView/Header

Hier steht formatiert der aktuell formatierte Speicherinhalt. Der Speicher wird in 512-Byte-Bl�cken angezeigt.

Gadget: <<< Prev 512 Byte
Gadget: To start address
Gadget: >>> Next 512 Byte

Mit diesen Gadgets kann der Speicherbereich aktualisiert werden. Das erste Gadget zeigt den vorhergehenden, das dritte den nachfolgenden und das zweite den Startbereich des Speichers an.

Gadget: Save C-Code
Gadget: Save ASCII
Gadget: Save Hex
Gadget: Save as is

Mit diesen Gadgets kann der angezeigte Speicherbereich auf verschiedene Arten in eine Datei gespeichert werden. Hier ein paar Beispiele:

Als C-Code:

/*
   RSys-C-Code Generator
   Memory at 0x00203672
*/

ULONG RSysData[] = {
   0x00000000, 0x00000000, 0x000000F8, 0xF7C80020,
   0x362400F8, 0xF7740000, 0x00000000, 0x00000000,
   0x00F8F7C8, 0x00203624, 0x00F8F78A, 0x00000000,
   0x00000000, 0x000000F8, 0xF7C80020, 0x362400F8,
   0xF7A0002E, 0x4FBC4EF9, 0x00FC775C, 0x4EF900FC,
   0x77340020, 0x63880020, 0x36240800, 0x00FC76D6,
   0x0600000C, 0x00320025, 0x00010000, 0x00000000,
   0x00000000, 0x0033CE18, 0x0033CE18, 0x00000000,
   0x00000000, 0x00000000, 0x4EF900FA, 0x3FE24EF9,
   0x00FA3DCE, 0x4EF900FA, 0x15DA4EF9, 0x00FA4036,
   0x4EF9002E, 0x8E0C4EF9, 0x00FA15A8, 0x4EF900FA,
   0x14604EF9, 0x00FA1258, 0x4EF900FA, 0x14B24EF9,
   0x00FA12AA, 0x4EF900FA, 0x3D384EF9, 0x002E8DD4,
   0x4EF9002E, 0x8DEA4EF9, 0x00FB3BAC, 0x4EF900FB,
   0x3BC24EF9, 0x002E8E1C, 0x4EF9002E, 0x8E344EF9,
   0x00FA124A, 0x4EF9002E, 0x8DF44EF9, 0x00FA122C,
   0x4EF900FA, 0x6B8C4EF9, 0x00FA429E, 0x4EF900FA,
   0x41624EF9, 0x00FA53A0, 0x4EF900FA, 0x4F784EF9,
   0x00FA6B98, 0x4EF900FA, 0x6B804EF9, 0x00FA6B74,
   0x4EF900FA, 0x114C4EF9, 0x00FA1848, 0x4EF900FA,
   0x18484EF9, 0x00FA0E70, 0x4EF900FA, 0x10884EF9,
   0x00FA2D7C, 0x4EF900FA, 0x2D0E4EF9, 0x00FA2C90,
   0x4EF900FA, 0x0E584EF9, 0x00FA32CA, 0x4EF900FA,
   0x68F84EF9, 0x00FA0BD0, 0x4EF900FA, 0x0BB84EF9,
   0x00FA0B7C, 0x4EF900FA, 0x0ADE4EF9, 0x00FA0ABC,
   0x4EF900FA, 0x306E4EF9, 0x00FA0E40, 0x4EF900FA,
   0x096C4EF9, 0x00FA095C, 0x4EF900FA, 0x2E0A4EF9,
   0x00FA2E26, 0x4EF900FA, 0x2CDC4EF9, 0x00FA2D5A,
   0x4EF900FA, 0x2BC04EF9, 0x00FA2AC2, 0x4EF900FA,
   0x07FC4EF9, 0x00FA07DC, 0x4EF900FA, 0x3C1E4EF9,
   0x00FA3BF4, 0x4EF900FA, 0x3C884EF9, 0x00FA03D0,
   0x4EF900FA, 0x0A084EF9, 0x00FA097C, 0x4EF900FA,
};
/* End of Code */

Als Hex:

----------------------------------------------
Memory at 0x00203672
----------------------------------------------

000: 00 00 00 00 00 00 00 00 00 00 00 F8 F7 C8 00 20
010: 36 24 00 F8 F7 74 00 00 00 00 00 00 00 00 00 00
020: 00 F8 F7 C8 00 20 36 24 00 F8 F7 8A 00 00 00 00
030: 00 00 00 00 00 00 00 F8 F7 C8 00 20 36 24 00 F8
040: F7 A0 00 2E 4F BC 4E F9 00 FC 77 5C 4E F9 00 FC
050: 77 34 00 20 63 88 00 20 36 24 08 00 00 FC 76 D6
060: 06 00 00 0C 00 32 00 25 00 01 00 00 00 00 00 00
070: 00 00 00 00 00 33 CE 18 00 33 CE 18 00 00 00 00
080: 00 00 00 00 00 00 00 00 4E F9 00 FA 3F E2 4E F9
090: 00 FA 3D CE 4E F9 00 FA 15 DA 4E F9 00 FA 40 36
0A0: 4E F9 00 2E 8E 0C 4E F9 00 FA 15 A8 4E F9 00 FA
0B0: 14 60 4E F9 00 FA 12 58 4E F9 00 FA 14 B2 4E F9
0C0: 00 FA 12 AA 4E F9 00 FA 3D 38 4E F9 00 2E 8D D4
0D0: 4E F9 00 2E 8D EA 4E F9 00 FB 3B AC 4E F9 00 FB
0E0: 3B C2 4E F9 00 2E 8E 1C 4E F9 00 2E 8E 34 4E F9
0F0: 00 FA 12 4A 4E F9 00 2E 8D F4 4E F9 00 FA 12 2C
100: 4E F9 00 FA 6B 8C 4E F9 00 FA 42 9E 4E F9 00 FA
110: 41 62 4E F9 00 FA 53 A0 4E F9 00 FA 4F 78 4E F9
120: 00 FA 6B 98 4E F9 00 FA 6B 80 4E F9 00 FA 6B 74
130: 4E F9 00 FA 11 4C 4E F9 00 FA 18 48 4E F9 00 FA
140: 18 48 4E F9 00 FA 0E 70 4E F9 00 FA 10 88 4E F9
150: 00 FA 2D 7C 4E F9 00 FA 2D 0E 4E F9 00 FA 2C 90
160: 4E F9 00 FA 0E 58 4E F9 00 FA 32 CA 4E F9 00 FA
170: 68 F8 4E F9 00 FA 0B D0 4E F9 00 FA 0B B8 4E F9
180: 00 FA 0B 7C 4E F9 00 FA 0A DE 4E F9 00 FA 0A BC
190: 4E F9 00 FA 30 6E 4E F9 00 FA 0E 40 4E F9 00 FA
1A0: 09 6C 4E F9 00 FA 09 5C 4E F9 00 FA 2E 0A 4E F9
1B0: 00 FA 2E 26 4E F9 00 FA 2C DC 4E F9 00 FA 2D 5A
1C0: 4E F9 00 FA 2B C0 4E F9 00 FA 2A C2 4E F9 00 FA
1D0: 07 FC 4E F9 00 FA 07 DC 4E F9 00 FA 3C 1E 4E F9
1E0: 00 FA 3B F4 4E F9 00 FA 3C 88 4E F9 00 FA 03 D0
1F0: 4E F9 00 FA 0A 08 4E F9 00 FA 09 7C 4E F9 00 FA

Der C-Code kann unmittelbar in C-Programmen eingebunden werden.


This document was generated on September 19, 2022 using texi2html 5.0.