NRM (TSB)
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 ?HEX CHAR ERROR bzw. ?BIN 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. Wenn man TSB mit dem Launcher gestartet hat, ist auch dies bereits erledigt.
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
$$ | %% | AT | CALL | CENTER | CHECK | COLD | COLOR | COPY | CLS | CSET | D! | D!PEEK | D!POKE | DIR | DISK | DISPLAY | DIV | DO | DO NULL | DRAW TO | DUMP | DUP | ELSE | ERROR | EXEC | FETCH | FIND | GRAPHICS | INSERT | INST | JOY | KEY | KEYGET | LIN | MAP | MEMCLR | MEMCONT | MEMDEF | MEMLEN | MEMLOAD | MEMOR | MEMPEEK | MEMPOS | MEMREAD | MEMRESTORE | MEMSAVE | MERGE | MOB ON/OFF | MOBCOL | MOD | MOVE | MULTI | NRM | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PLACE | RENUMBER | RESUME | RETRACE | SCRLD | SCRSV | SOUND | TEXT | TRACE | USE | WAVE | X!