USE (TSB)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
USE (TSB)
Syntax: USE <const>
USE [#n,] [at(x,y]<string>, <zahl> [, zahl...] [;]
Parameter
const: Zahlenkonstante
n: Dateinummer
string: Formatstring (enthält ###.## o.ä.)
zahlen: Zahlen, die formatiert werden sollen
Einordnung
Typ: Anweisung
Kontext: kontrollierte Zahlenausgabe
Aufgabe: dezimalorientierte Ausgabe von Zahlen
Abkürzung: uS
Token: $64 $2c (100 44)
Verwandte Befehle
CENTRE - AT


Dieser Artikel beschreibt das TSB-Schlüsselwort USE (TSB).
Das entsprechende Simons'-Basic-Schlüsselwort lautet ebenfalls USE.

1. Syntax (Kommando)[Bearbeiten | Quelltext bearbeiten]

Typ: Kommando
Syntax: USE <const> | USE 0+<var>

TSB hat (anders als Simons' Basic) die Eigenschaft, dass laufwerksbezogene Befehle auch auf andere als nur das Standardlaufwerk 8 zugreifen können. Weil dazu aber nötig ist, dass das gewünschte Laufwerk eingestellt wird, gibt es den Befehl USE <const>. Folgt also auf USE eine Zahlenkonstante, so wird diese als Laufwerksnummer interpretiert. Es sind Werte für <const> von 1 bis 31 zulässig (somit können auch CMD-Laufwerke wie z.B. ein RAMLink angesprochen werden).

Beachten: TSB prüft nicht, ob die Laufwerksangabe plausibel ist. Greift der Befehl auf ein nicht vorhandenes Laufwerk zu, meldet es einen ?DEVICE NOT PRESENT ERROR.

Hinweis: USE <const> kann auch als Anweisung in einem Programm verwendet werden, sogar Variablen kann man durch einen Trick bei USE <const> einbauen: Der USE-Parameter wird in Wirklichkeit schon als Ausdruck ausgewertet, der Zwang zur Konstante besteht nur deshalb, weil der Parameter vom Interpreter eindeutig seinem Zweck zugeordnet werden muss. Also erweitert man die Konstante mit der gewünschten Variablen, z.B. so: USE 0+dr, wobei DR die Laufwerksnummer enthält. Ansonsten muss man mit IF..THEN..ELSE arbeiten. Weitere Alternative: Der Wert der Konstanten wird in der Speicherstelle $be (dez. 190) abgelegt und kann dort beliebig verändert oder abgerufen werden.

Ein Bandlaufwerk kann man mit USE 1 und LOAD ansprechen, wenn man vor dem LOAD in $B2/$B3 die Adresse des Kassettenpuffers rekonstruiert ($033C): Ein Ladebefehl für ein Programm von Band würde also USE 1: D!POKE $B2,$033C: LOAD Return  lauten.


2. Syntax (Anweisung)[Bearbeiten | Quelltext bearbeiten]

Typ: Anweisung
Syntax: USE [#n,] [ AT(sp,zl) ] <string>, <zahl> [, zahl...] [;]

USE dient zum Formatieren von Zahlen, so dass sichergestellt ist, dass Dezimale immer an der gewünschten Position stehen. In BASIC-Dialekten auf PCs erscheint USE als "USING" abhängig von PRINT (PRINT USING <string>, <zahlen>, zu deutsch: "Drucke die <zahlen>, indem du <string> als Vorlage benutzt"). In TSB ist der Befehl eigenständig. Mit dem optionalen Parameter AT legt man fest, an welcher Stelle auf dem Bildschirm USE eingesetzt werden soll.

Im Formatstring <string> kann beliebiger Text an beliebiger Stelle stehen, die Zahlen in der Zahlenliste werden auf Platzhaltersymbole aufgeteilt (Rautenzeichen "#" oder Stern "*", für jede gewünschte Ausgabeziffer steht ein Platzhaltersymbol). Das Trennzeichen zum Nachkommaanteil der Zahlen im Formatstring ist entweder der Dezimalpunkt (".") oder das Dezimalkomma (",").

Im Formatstring können Platzhalter für mehrere Zahlen eingebaut werden, sodass man geordnete Listen mit einem einzigen Format erstellen kann. In der Liste der Zahlen (<zahl> [, zahl...]) werden die einzelnen Zahlen mit einem Komma getrennt. Sollten in der Liste Konstanten vorkommen, muss das Trennzeichen zum Nachkommateil bei ihnen der Basic-Syntax folgend natürlich ein Dezimalpunkt sein. Die Position des Vorzeichens bestimmt man durch Setzen des Vorzeichens an die gewünschte Stelle (vor oder nach dem Platzhalter), ein "+" erzwingt ein Vorzeichen, ein "-" lässt nur bei negativen Zahlen das Vorzeichen erscheinen. Kein Vorzeichen im Formatstring lässt den Interpreter vorzeichenlose Zahlen anzeigen. Ein "*" (Stern) als führender Platzhalter oder in mindestens einer Vorkommastelle des Formatstrings füllt alle von einer Zahl nicht benutzten führenden Platzhalterstellen mit weiteren Sternen. In diesem Fall sollte man wegen der Übersichtlichkeit das Vorzeichen nachstellen.

Wenn am Ende des USE-Befehls ein ";" (Semikolon) gesetzt wird, hat das den gleichen Effekt wie beim Befehl PRINT (kein Zeilenwechsel nach der Ausgabe).

Hinweise:

  • USE gibt die Zahlen gerundet aus. Der zugrundeliegende Wert der gerundet angezeigten Zahl ändert sich dadurch nicht.
  • Zahlen, die nicht in einen Platzhalter passen (vierstellige Zahlen in einem dreistelligen Platzhalter), werden nicht angezeigt. Stattdessen erscheint dort der Platzhalter selbst als Fehlerhinweis. Das betrifft auch Zahlen, die wegen eines Übertrags beim Runden nicht mehr in den Platzhalter passen, z.B. bei der Zahl 99.999, formatiert auf zwei Vor- und Nachkommastellen (was eigentlich 100.00 ergäbe).
  • Die Ausgabe von USE kann auch umgelenkt werden auf einen Drucker. Dazu muss man vorher auf übliche Weise den Drucker öffnen (s. OPEN) und hinter USE muss der Ausgabekanal angegeben werden (USE #1, <string>, <zahlen>).

Beachten: Da "." und "," Dezimaltrennzeichen darstellen, können sie im Formatstring nicht einzeln stehen, z.B. als Satzzeichen oder Abkürzungszeichen (führt zu einem ?BAD MODE ERROR). Der "*" muss direkt vor einem Platzhalter stehen und darf ebenfalls nicht ohne folgende Platzhalter verwendet werden, sonst gibt es auch hier einen ?BAD MODE ERROR.


USE (TSB)
Syntax: wert = USE
PRINT USE
Parameter
keine
Einordnung
Typ: Systemvariable
Kontext: Peripheriekontrolle
Aufgabe: Abfrage der aktuellen Drive-Nummer
Abkürzung: uS
Token: $64 $2c (100 44)
Verwandte Befehle
DIR - DISK - ERROR


3. Syntax (Systemvariable)[Bearbeiten | Quelltext bearbeiten]

Typ: Systemvariable
Syntax: w = USE
oder:   PRINT USE

Diese Syntaxvariante (gültig ab TSB v2.30410) ist die Umkehrfunktion zu Syntax 1: Mit A = USE wird der Wert für die Nummer des aktuellen Diskettenlaufwerks abgefragt und in A zurückgeliefert.

Hinweis: Wenn USE als Argument von USE (Anweisung) verwendet wird, muss auch hier die Zahlenkonstante 0 (Null) vorangestellt werden (s. zweites Beispiel, dort wird sinnvollerweise eine 1 verwendet).

Beispiele[Bearbeiten | Quelltext bearbeiten]

100 f$="nr ##: Euro -###,##"
110 FOR i=1 TO 10
120 z=(RND(1)*201)-50: vg$=STR$(z)
130 USE f$, i, z;: PRINT " :" vg$
140 NEXT

Das Programm gibt 10 nummerierte Geldbeträge aus, negative Beträge erhalten ein vorangestelltes Minus. Der Vergleichsstring VG$ zeigt die unformatierte Version der Zahl.

Ein weiteres Anwendungsbeispiel beim Simons-Basic-Befehl MOB SET Beispiel 2.

100 REM" Ausgehend vom aktuellen Laufwerk das naechstfolgende anwaehlen 
110 PRINT USE
120 USE 1+USE
130 PRINT USE

Wenn das aktuelle Laufwerk anfangs die Nummer 8 war, ist es nach dem Programmlauf die Nummer 9.