PLH

Aus C64-Wiki
Wechseln zu: Navigation, Suche
PLH
Der Startbildschirm der Oberfläche
Entwickler Frank Börncke
Firma INPUT 64
Verleger Heise Verlag
Release 1987
Lizenz Vollversion
Plattform(en) C64
Genre BASIC-Erweiterung
Steuerung Icon tastatur.png
Medien Icon disk525.png
Sprache(n) Sprache:deutsch

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.


Laden und Starten[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 Auswahl-Mö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:
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 , Space  wird eingeschaltet und der Start-Bildschirm angezeigt.

Speicherbelegung[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]

Die 16 zusätzlichen Befehle (hier in alphabetischer Reihenfolge) erleichtern das Editieren von BASIC-Programmen.
Die Anzeige eines BASIC-Listings kann gescrollt werden.

AUTO
CHANGE
CUTREM
DELETE
DIR
FIND
LLIST
MEM
MERGE
NORM
OFF
OLD
RENUMBER
TRACESPEED
TROFF
TRON

BASIC-Erweiterung[Bearbeiten]

Vektoren[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]

Bei $CF45-CF63 liegt die Sprungtabelle,
bei $CF64-CFB3 die Tabelle der Befehlsnamen.

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]

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 mit Softmaus-Diskette von Scanntronik
  • DIR
gibt das Inhaltsverzeichnis der Diskette 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
holt mit NEW gelöschtes BASIC-Programm zurück (siehe auch UNNEW).
  • 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. Ggf. 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 12*4096 (49152/$C000), falls der Speicher nicht überschrieben worden ist,
oder mit ?USR(0), falls der USR-Vektor muss allerdings noch auf $C000 zeigend gesetzt werden.
  • 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).

Weblinks[Bearbeiten]