NRM (TSB)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
NRM (TSB)
Syntax: wert = NRM(<string>)
Parameter
string: Hex- oder Binär-String
Einordnung
Typ: Stringfunktion
Kontext: Zahlen
Aufgabe: Umwandeln einer Hex- oder Binärzahl in einen Dezimalwert
Abkürzung: nR
Token: $64 $67 (100 103)
Verwandte Befehle
$ - % - $$ (TSB) - %% (TSB)


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

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

Typ: Stringfunktion 
Syntax: wert = NRM(<string>) PRINT NRM(<string>)

Mithilfe dieser Stringfunktion lassen sich zwei- oder vierstellige Hexzahlen bzw. acht- oder 16-stellige Binärzahlen in Dezimalzahlen umwandeln (Länge ist zwingend vorgeschrieben). Die Strings dürfen dabei nur die jeweils zulässigen Ziffern enthalten (0..9 und a..f bei Hexzahlen und 0 und 1 bei Binärzahlen). Innerhalb der Strings dürfen die Zeichen "%" für "binär" oder "$" für "hex" vorangestellt werden. Ein String darf auch als Konstante - z.B. PRINT NRM("$c000") - an die Funktion übergeben werden.

Kommt im String ein Zeichen vor, das nicht zur jeweiligen Zahlenbasis passt, führt dies zur Fehlermeldung ?NOT HEX CHAR ERROR bzw. ?NOT BINARY CHAR ERROR.

Achtung: Alle 16-bittigen numerischen Simons'-Basic-Funktionen erzeugen unvorhersehbare Reaktionen, wenn sie zweiter Parameter eines POKE-Befehls sind. Ihre Werte müssen vor ihrer Verwendung bei POKE einer Variablen zugewiesen werden (in TSB behoben)-

Beispiel[Bearbeiten | Quelltext bearbeiten]

10 a$="123": a$=RIGHT$("0000"+a$,4)
20 PRINT "Hex $"a$;: b$=STR$(NRM(a$)): PRINT " ist dezimal "+b$

ergibt folgende Ausgabe:

Hex $0123 ist dezimal 291

Die Hexzahl $123 wird zunächst vierstellig gemacht und danach in einen Dezimal-String verwandelt, hier um zu zeigen, dass sogar das funktioniert.

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

NRM (TSB)
Syntax: NRM
Parameter
keine
Einordnung
Typ: Anweisung
Kontext: Erweiterung des TSB
Aufgabe: Rekonstruieren nach INST oder MEM
Abkürzung: nR
Token: $64 $67 (100 103)
Verwandte Befehle
INST - MEM
Typ: Anweisung
Syntax: NRM

NRM rekonstruiert nach Anwendung der Befehle INST oder MEM die dadurch deaktivierten Befehle RENUMBER und PLACE. Dazu muss auf der Diskette im aktuellen Laufwerk die Datei "tsb.mem" zu finden sein. Ist sie nicht da, gibt es einen ?FILE NOT FOUND ERROR und die beiden Befehle bleiben deaktiviert.

Die Uniprom-CRT-Version von TSB (siehe Thema: UNIPROM64 - eine universell einsetzbare EPROM-Platine für den C64 auf Forum64.de) lädt "tsb.mem" direkt aus dem Cartridge-Image. Seit TSB v2.40.517 führt ein SYS $C000 direkt nach dem Booten bei REU-Besitzern zum gleichen Ergebnis. Die Datei „tsb.mem“ ist dann nicht mehr erforderlich.

Gleichzeitig stellt NRM den VIC auf seine TSB-Vorgabewerte zurück (Textmodus in Groß-Klein-Schrift, Bildschirmspeicher an Adresse 1024).

Beispiel[Bearbeiten | Quelltext bearbeiten]

Installiert DOS Wedge 5.1, ruft einige Wedge-Befehle im Direktmodus auf und deaktiviert schließlich die Erweiterung wieder:

INST 
@$
@ 
↑name
←name
NRM
ruft das DOS Wedge 5.1 auf
Directory anzeigen
Fehlerkanal auslesen
BASIC-Programm name laden
BASIC-Programm name speichern
DOS Wedge abschalten