PLH
PLH | |
---|---|
Entwickler | Frank Börncke |
Firma | INPUT 64 |
Verleger | Heise Verlag |
Release | 1987 |
Lizenz | Vollversion |
Plattform(en) | C64 |
Genre | BASIC-Erweiterung |
Steuerung | |
Medien | |
Sprache(n) |
Das Programmiertool PLH (engl. Abkürzung für Programmer's Little Helper) ist eine nützliche Programmierhilfe, die in dem Computermagazin INPUT 64 (Ausgabe 12/1987) veröffentlicht wurde. Sie ist als BASIC-Erweiterung ausgeführt und reichert den Bildschirmeditor um zusätzliche Funktionen an.
Laden und Starten[Bearbeiten | Quelltext bearbeiten]
Nach dem Laden und Starten der INPUT 64 Diskette 12/87 mit LOAD "LADER",8,1
blättert man mit der Leertaste bis zum Abschnitt "PLH / Programmer's Little Helper" und wählt den Inhalt mit RETURN aus.
Die PLH-Titelseite erscheint mit zwei Auswahlmöglichkeiten:
- Leertaste : Eine kurze (aber leider nicht vollständige) Anleitung durchblättern.
- CTRL +S : Das Programm auf (eine neue) Diskette speichern.
Nach dem Drücken der Tastenkombination CTRL +S muss man einen Dateinamen (z.B. "PLH") eingeben, dann wird das Programm abgespeichert. Es belegt 42 Blöcke auf der Diskette. Von dieser wird PLH nun wie ein BASIC-Programm geladen und gestartet.
Die einzige BASIC-Zeile
1987 SYS2096:
PROGRAMMER'S LITTLE HELPER
ruft eine Maschinenprogramm-Routine ab $0830 auf, die den Bereich $0900-$30E9 nach $A7D0-$CFB9 verschiebt und dann die BASIC-Erweiterung startet. Die Tastenwiederholung für CRSR , Inst/Del , Leertaste wird eingeschaltet und
der Start-Bildschirm angezeigt.
Speicherbelegung[Bearbeiten | Quelltext bearbeiten]
Die Erweiterung liegt im Bereich $C000-$CFB9, nutzt aber auch Teile des Bereiches $A7D0-$B5E8 (RAM unterm BASIC-ROM).
Mit dieser Konfiguration bleibt der gesamte Speicherbereich zwischen $0801 und $9FFF für das zu editierende BASIC-Programm frei.
Liste der neuen Befehle[Bearbeiten | Quelltext bearbeiten]
Die 16 zusätzlichen Befehle (hier in alphabetischer Reihenfolge) erleichtern das Editieren von BASIC-Programmen, wenn PLH im Hintergrund aktiv ist (siehe Details).
- AUTO
- CHANGE
- CUTREM
- DELETE
- DIR
- FIND
- LLIST
- MEM
- MERGE
- NORM
- OFF
- OLD
- RENUMBER
- TRACESPEED
- TROFF
- TRON
Außerdem kann die Anzeige eines BASIC-Listings gescrollt werden.
BASIC-Erweiterung[Bearbeiten | Quelltext bearbeiten]
Vektoren[Bearbeiten | Quelltext bearbeiten]
Die Erweiterung wird eingebunden durch die Umleitung der folgenden Vektoren:
$0302-0303 = $C1DB/CAA0 BASIC Input Line and Decode (normal/AUTO on) $0304-0305 = $C043 BASIC Tokenise Routine $0306-0307 = $C106 BASIC LIST Routine $0308-0309 = $C13F BASIC Character Dispatch Routine $0311-0312 = $C000 USR Address
Befehlsroutinen und Token[Bearbeiten | Quelltext bearbeiten]
- Sprungtabelle der Tokens: $CF45-CF63
- Tabelle der Befehlsnamen: $CF64-CFB3
Befehl | Adresse | Token | BASIC-RAM |
---|---|---|---|
DIR | $CC53 | $CC | |
RENUMBER | $C9C0 | $CD | ja |
DELETE | $C9C9 | $CE | ja |
OLD | $C9D2 | $CF | |
MERGE | $C9E8 | $D0 | |
AUTO | $CA7D | $D1 | |
CUTREM | $CB34 | $D2 | ja |
TRON | $CB62 | $D3 | |
TROFF | $CB6A | $D4 | |
TRACESPEED | $CB72 | $D5 | |
OFF | $CB79 | $D6 | |
MEM | $CB86 | $D7 | |
LLIST | $CC01 | $D8 | |
FIND | $CC41 | $D9 | ja |
CHANGE | $CC4A | $DA | ja |
NORM | $CD7B | $DB |
Beschreibung der Befehle[Bearbeiten | Quelltext bearbeiten]
Alle Befehle sind für den Direktmodus gedacht. Sie im Programm-Modus auszuführen ist zwar möglich, aber i. d. R. nicht sinnvoll.
Das Scrollen des Programm-Listings auf dem Bildschirm geschieht mit:
- CRSR ⇑ nach oben, wenn in der obersten Bildschirmzeile eine Programmzeile steht,
- CRSR ⇓ nach unten, wenn in der untersten Bildschirmzeile eine Programmzeile steht.
- DIR
- gibt das Inhaltsverzeichnis der Diskette verlustfrei, d. h. ohne ein BASIC-Programm zu zerstören, aus. Ladeanweisungen "LOAD" und ",8,0" werden eingefügt vor bzw. hinter dem Dateinamen.
- Dateityp und Größe (Blöcke) werden hinter dem Dateinamen, die Anzahl der freien Blöcke und die Zahl der Dateien am Ende des Verzeichnisses angezeigt.
- RENUMBER <start>,<step>
- Neue Nummerierung des Programms mit <start> als Nummer der ersten Programmzeile, <step> als Erhöhungswert der Zeilennummer.
- Parameter müssen angegeben sein. Zeilennummern nach GOTO, GOSUB, THEN, RUN werden mitgeändert.
- Zu große Zeilennummern (>= 64000) werden nicht zugelassen, sondern führen zur Fehlermeldung ILLEGAL LINENUMBER IN ....
- DELETE <start>[,<end>]
- löscht die Zeile <start> bzw. die Zeilen zwischen <start> und <end>.
- OLD
- MERGE <file>,<gerätenr.>
- lädt von Gerätenummer <gerätenr.> das mit Zeichenkette <file> bezeichnete Programm und fügt es in das bereits bestehende Programm ein. Gegebenenfalls werden Zeilen mit gleich lautender Zeilennummer überschrieben.
- AUTO <step>
- Steuert die automatische Zeilennummernvorgabe bei der Eingabe von Programmzeilen, wobei <step> den Erhöhungswert (0 bis 255) festlegt. Der Automatismus wird mit einem Wert > 0 aktiv und erst nach einer Zeileneingabe sichtbar. Mit dem Parameterwert 0 deaktiviert man diesen Modus wieder.
- Beispiele:
AUTO 10 100 REM 110
AUTO 100 1000 REM 1100
AUTO 0 schaltet AUTO wieder aus.
- CUTREM
- alle REM-Anweisungen werden gelöscht. Als mögliches Ansprungziel werden REM-Zeilen auch durch eine Zeile bestehend aus einem ":" ersetzt.
- Beispiel:
10 REM DIES IST EINE SINNLOSE ZEILE 20 PRINT:REM DIES MACHT SINN 30 FOR A$=0 TO 100 40 PRINT A$ 50 NEXT 60 END CUTREM 10 : 20 PRINT 30 FOR A$=0 TO 100 40 PRINT A$ 50 NEXT 60 END
- TRON
- schaltet den Trace-Modus ein (im Programmmodus werden Fehlermeldungen unterdrückt).
- Die aktuelle Zeile wird nun am oberen Bildschirmrand angezeigt.
- Die Geschwindigkeit der Trace-Anzeige wird mit TRACESPEED (s.u.) gesteuert; mit C= kann sie angehalten werden.
- TRACESPEED <bytewert>
- bestimmt die Geschwindigkeit der Trace-Anzeige. Der angegebene Wert erzeugt mittels eine Programmschleife eine Verlangsamung:
- 0 = schnellste Anzeige
- 255 = langsamste Anzeige
- TROFF
- schaltet den Trace-Modus aus.
- OFF
- schaltet die Erweiterung PLH aus.
- Ein Wiedereinschalten ist möglich mit
SYS 2096
oderSYS 12*4096
(49152/$C000), falls der Speicher nicht überschrieben worden ist, - oder mit
?USR(0)
, falls der USR-Vektor noch auf $C000 zeigt.
- MEM
- zeigt die Speicherbelegung (BASIC) an. Beispiel:
SPEICHER : 38911 PROGRAMM : 4130 FELDER : 0 STRINGS : 0 FREI : 34774
- LLIST
- gibt das BASIC-Listing auf Gerät 4 (üblicherweise einem Drucker), Kanal 4 und Sekundäradresse 7 aus.
- FIND <suchbegriff>
- sucht angegebene Zeichenfolge im BASIC-Programm und listet die gefundenen Zeilen.
- Zeichenfolgen hinter einem Anführungszeichen werden nicht gefunden.
- FIND zeigt manchmal nur die erste gefundene Zeile.
- Beispiele:
100 GET A$,B$ 110 IF Q<>0 THEN GET A$,B$ FIND GET A$,B$ 100 GET A$,B$ 110 IF Q<>0 THEN GET A$,B$ FIND A$ 100 GET A$,B$
- CHANGE <suchbegriff>;<änderung>
- sucht <suchbegriff> im BASIC-Programm und ändert ihn in <änderung> nach Bestätigung einer Sicherheitsabfrage, die auch den Abbruch der Änderungen mit RUN/STOP ermöglicht.
- Zeichenfolgen hinter einem Anführungszeichen werden nicht gefunden.
- Im Gegensatz zu FIND wird der Suchbegriff in allen Zeilen gefunden.
- Beispiel (aus der Anleitung):
20 PRINT 30 FOR A$=0 TO 100 40 PRINT A$ 50 NEXT 60 END CHANGE A$;A 20 PRINT 30 FOR A=0 TO 100 40 PRINT A 50 NEXT 60 END
- NORM
- setzt den BASIC-Start auf $0801 (zurück).