Magic Disk 64

home to index to text: MD9503-UTILITIES-FREEMEM.txt
                 FREEMEM                
  - Den Basicspeicher immer im Griff -  

" Freemem" ist ein kleines Hilfsprogramm für die Basic-Programmierer unter Ihnen.
Es zeigt Ihnen mit Hilfe von zwei Sprites ständig den momentan noch freien Basic-Speicher an, so daß Sie immer einen Überblick über selbigen haben. Da Freemem im IRQ abläuft, wissen Sie beim Eingeben eines Programms immer, wieviel Platz selbiges momentan im Speicher einnimmt, und haben zudem die Möglichkeit, während des Ablaufs des Programms zu verfolgen, wieviel Speicher durch die Deklaration von Variablen verbraucht wird.
1) LADEHINWEISE Freemem liegt auf diese MD in sechs verschiedenen Versionen vor. Diese unter- scheiden sich in Funktionalität nicht voneinander, sondern sind lediglich an anderen Adressen im Speicher abgelegt, so daß Sie sich eine Version heraussuchen können, die auch zu Ihrer Rechnerkonfigration passt. Es gibt jeweils drei, in der Speicherlage unterschiedliche, Versionen. Zudem kann jede dieser drei Versionen die Anzeige in hexadezimaler oder dezimaler Darstellung ausgeben. Hieraus ergeben sich die sechs Filenamen des Programms: Jeder von Ihnen beginnt mit " FREEMEM", gefolgt von einem Punkt und einem der Buchstaben " D" oder " H"( für < D> ezimale oder < H> exadezimale Darstellung) . Hierauf folgt nun die Ladeadresse, die gleichzeitig auch die Startadresse des Programms repräsentiert. Mögliche Adressen sind:
" RUN" Diese Version kann normal mit ",8" geladen und durch " RUN" gestartet werden.
Sie legt Freemem am Anfang des Basic- speichers ab, wodurch selbiger nach oben verschoben werden muß, und somit ein klein wenig eingeschränkt wird. Das Verschieben des Basicstarts wird von Freemem automatisch durchgeführt.
"39658" Diese Version muß mit ",8,1" geladen und durch ein " SYS39658" gestartet werden.
Sie liegt am Ende des Basicspeichers, wodurch selbiger nach unten verschoben werden muß, womit der verfügbare Basicspeicher ebenfalls eingeschränkt wird.
Zudem kann es mit dieser Version Probleme geben, falls Sie ein Erweiterungsmodul im Expansions-Port eingesteckt haben, da diese Module immer am Basic-Ende eingeblendet werden, und Freemem somit " überlagern" können.
"49152" Auch diese Version müssen Sie mit ",8,1" laden und durch ein " SYS49152" starten.
Sie hat den Vorteil, daß Sie im Spei- cherbereich für Assembler-Erweiterungen liegt, und somit den Basic-Speicher nicht berührt. Sie sollte eigentlich die beste Wahl darstellen, falls Sie in diesem Speicherbereich nicht auch noch andere Assembler-Erweiterungen zu Ihrem Programm unterbringen möchten.
2) BEDIENUNGSHINWEISE Nachdem die gewünschte Programmversion geladen und gestartet wurde, so sehen Sie nun außer der blinkenden Speicheranzeige rechts oben, einen kleinen Vermerk auf dem Bildschirm, der Ihnen angibt, an welchen Adressen Sie das Programm aufrufen müssen, um es mit anderen Parametern zu starten, oder um es abzuschalten.
Diese Adressen variieren, je nach Programmversion. Beachten Sie bitte, daß nach dem Laden und erstmaligen Aufrufen das Programm lediglich initialisiert wurde. Sie können es nun nocheinmal mit dem angegebenen SYS-Befehl aufrufen, um einige Parameter wie gewünscht umzusetzen. Die allgemeine Syntax für den Aufruf lautet:

SYS Adresse,X,Y,FLASH,START,END         

" Adresse" steht hierbei für die, von Freemem angegebene Startadresse. Bei " X" und " Y", können Sie zwei Zahlwerte angeben, die die Position der beiden Anzeigesprites auf dem Bildschirm angeben.
Für " X" sind Werte zwischen 0 und 400, für " Y" Werte zwischen 0 und 255 erlaubt. Um die Sprites in der Ecke rechts oben zu positionieren können die Werte 304/50 benutzt werden." FLASH" stellt die Geschwindigkeit dar, mit der das Programm die Sprites blinken lassen soll. Hier sind Werte zwischen 0( sehr schnell) bis 15( sehr langsam) möglich.
Dadurch, daß die Sprites blinken, ist die Speicheranzeige auch auf jeder beliebigen Hintergrundfarbe gut sichtbar.
Die beiden letzten Parameter " START" und" END" sind eine ganz besondere Funktion des Programms. Sie müssen sich nämlich nicht nur den Basicspeicher anzeigen lassen, sondern können beliebige Zeropageadressen wählen, die zur Anzeige herangezogen werden sollen. So kann für " START" und " END" jeweils ein Wert zwischen 0 und 255 angegeben werden, der jeweils das erste Byte eines Adresszeigers in der Zeropage angibt. Dort sollten in der Form Low-Byte/ High-Byte zwei Adressen gespeichert sein, deren Differenz von Freemem angezeigt wird. Haben Sie also z. B. ein Programm, das in den Zeropageadressen $02/$03, sowie $04/$05 einen Adressbereich verwaltet, so können Sie mit dem Aufruf:

SYS Adresse,304,50,7,02,04              

sich die Differenz dieser beiden Adressen anzeigen lassen. Da das Betriebssystem eine Menge solche Adresszeiger in der Zeropage verwaltet, können Sie sich also auch ganz andere Speicherwerte anzeigen lassen.
Im Übrigen müssen nicht unbedingt alle Parameter des SYS-Aufrufs angegeben werden. Möchten Sie z. B. nur die X-Position ändern, so genügt es, auch nur diese anzugeben. Allerdings müssen Sie Xund Y-Position mitangeben, wenn Sie z. B. den " FLASH"- Wert ändern möchten, da das Programm hier nicht unterscheiden kann, welche Parameter es weglassen soll.
Beachten Sie bitte auch, daß die vier Programmversionen, die mit ",8,1" geladen und per SYS-Befehl gestartet werden müssen, durch den absoluten Ladevorgang die Adresszeiger des Basicspeichers verbogen haben. Geben Sie also nach dem Laden und vor dem SYS-Befehl zur Sicherheit einen " NEW"- Befehl ein, um die Zeiger wieder auf die Normalwerte zurückzusetzen. Tun Sie dies nicht, so zeigt Freemem meist unsinnige Basicspeicher- werte an ( z. B."55000 Bytes free"- obwohl der Basicspeicher maximal 38911 Bytes groß sein kann) .
Desweiteren sollten Sie beachten, daß Freemem zwei Sprites des VICs belegt.
Dies sind die Sprites mit den Nummern 6 und 7 . Solange Sie sie also nicht in einem eigenen Programm benutzen, sollte es hierbei keine Schwierigkeiten geben.
Die Spritedaten zu diesen Sprites werden in den Spritepuffern 13 und 14 abgelegt, die Ihnen ebenfalls nicht mehr für eigene Sprites zur Verfügung stehen.
Das Programm bindet sich übrigens in schon bestehende IRQ-Routinen mit ein, so daß diese parallel mitablaufen. Dadurch ist gewähleistet, daß sich Freemem mit den meisten anderen IRQ-Programmen, oder auch Basic-Erweiterungen verträgt.

                                    (ub)

Valid HTML 4.0 Transitional Valid CSS!