ndr-nkc.de ndr-nbc.de
  
Startseite
News
 
NDR-NKC
Geräte Z80
Geräte 68000
Geräte 8088
 
Z80 Section
Baugruppen
ROM's
Software
68000 Section
Baugruppen
ROM's
PASCAL/S
Software
8088 Section
Baugruppen
Downloads
 
Bussysteme
Stromversorgung
Input / Output
Grafikkarten
Speicherkarten
Massenspeicher
Weitere Baugruppen
 
Projekte
 
Dokumentation
Datenblätter
Glossar
Portraits
Links

Impressum

 

Tipps zur Programmierung mit BASIC 1.3

Genauigkeit des Zahlenbereiches

Realzahlen im BASIC 1.3 haben eine Auflösung von exakt 5 Dezimalstellen. Dabei ist es unerheblich, ob Zahlen als Konstanten benutzt werden, in Variablen gespeichert sind oder Ergebnis einer Funktion sind.

  LET A = 1234567
  PRINT A           > 1.2345E+06  OK, gerundet
  PRINT A/10        > 123450      kann falsch interpretiert werden  
  PRINT A/100       > 12345       keine Rundung, korrekt wäre 12346
  PRINT A/1000      > 1234.5      keine Rundung
  PRINT A/10000     > 123.45      keine Rundung
  PRINT A/100000    > 12.345      keine Rundung
  PRINT A/1000 00   > 1.2345      keine Rundung
  PRINT SQR(2)      > 1.4142      OK im Rahmen der Auflösung

Grundsätzlich muss man mit diesen Einschränkungen im Zahlenbereich leben. Das ist auch OK und man muss bei der Programmierung "nur" darauf achten, dass man keine höhere Auflösung benötigt. Ohne die gesamten Arithmetik-Routinen neu zu codieren ist keine einfache Erweiterung denkbar. Wer unbedingt BASIC benutzen möchte und dennoch eine höhere Auflösung der Zahlen benötigt wird auf eine komplett eigene Lösung mit Unterprogrammen in Maschinensprache zurückgreifen müssen.

Speicherverbrauch und Geschwindigkeit der Programme

Der Quellcode eines NKC BASIC Programms wird im Speicher exakt so abgelegt wie er eingegeben wurde. Viele andere BASIC Dialekte nehmen bereits bei der Eingabe eine Interpretation vor um unnötige Leerzeichen zu entfernen oder die BASIC Schlüsselworte als sogenannte Tokens mit nur einem Byte abzulegen. Die Verwendung von Tokens hätte Vorteile gehabt, da diese sich schnell über eine Sprungtabelle auswerten lassen und zudem weniger Platz im RAM Speicher verbrauchen.

Verzicht auf unnötige Zeichen

Durch das Weglassen von unnötigen Leerzeichen, unnötigen Klammern und unnötigen Schlüsselwörtern spart man wertvollen Speicherplatz ein und gewinnt etwas an Geschwindigkeit - Leider auf Kosten der Lesbarkeit

10 IF ( a = b ) THEN GOTO 100
10 IF a=b GOTO 100

Verwendung von Kommentaren

Kommentare tragen nichts zur Programmausführung bei, sie dienen ausschließlich zur Verbesserung der Lesbarkeit des Codes. Wenn man nicht auf Kommentare verzichten will, sollte man nach Fertigstellung des Programms eine zweite Version ohne Kommentare abspeichern. Das Programm ist dann kürzer und läuft schneller ab.

10 GOSUB 1000
20 END
1000 REM Mein tolles Unterprogramm
1010 LET a = a + 1
1020 RETURN

Kommentarzeilen sollten nicht direkt mit GOTO oder GOSUB angesprungen werden, da sonst immer Kommentar interpretiert werden muss. Statt dessen springt man besser auf die erste ausführbare Zeile hinter einem Kommentar.

Zusammenfassung von Kommandos

Auch hierdurch wird wertvoller Speicherplatz eingespart und etwas an Ausführungsgeschwindigkeit gewonnen. Diesen Trick kann man immer dann anwenden, wenn kein Sprungbefehl auf eine der Zeilen erfolgen muss.

10 LET a = 10
20 LET b = 20
30 GOSUB 1000
10 a=10:b=20:GOSUB 1000

Positionierung von Unterprogrammen

Unterprogramme sollten so weit als möglich an den Anfang des Quellendes gesetzt werden. Je weiter hinten ein Unterprogramm liegt, desto länger dauert jeder einzelne Aufruf. Umso häufiger ein Unterprogramm benutzt wird desto weiter vorne sollte dies im Quelltext liegen. Das Hauptprogramm hingegen kann durchaus auch ganz am Ende des Programmcodes liegen, da dieses nur wenige Verzweigungen enthält.

10 LET A = 0
20 GOTO 9000
1000 REM Häufig aufgerufenes Unterprogramm
1010 E = SRQ(A)
1020 RETURN
2000 REM selten aufgerufenes Unterprogramm
2010 A = A + 1
2020 RETURN
9000 REM Hauptprogramm
9010 FOR n = 1 TO 100
9020 GOSUB 2000
9030 FOR k = 1 TO 100
9040 GOSUB 1000
9050 NEXT k
9060 NEXT n
9070 END

Falls DATA Statements verwendet werden sollten diese ebenfalls an den Anfang des Quelltextes gesetzt werden.