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)