Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
z1013:software:tinybasic:rdk [2012/12/03 08:03] – angelegt volkerp | z1013:software:tinybasic:rdk [2012/12/03 08:13] (aktuell) – volkerp | ||
---|---|---|---|
Zeile 30: | Zeile 30: | ||
Dazu das Aufzeichnungsformat: | Dazu das Aufzeichnungsformat: | ||
- | Zeichen 0...1: CR (Wagenrücklauf), | + | //Zeichen 0...1:// CR (Wagenrücklauf), |
- | Zeichen 2: Strichpunkt, | + | //Zeichen 2:// Strichpunkt, |
- | Zeichen 3...4: Dieses Byte (durch zwei ASCII-Zeichen, | + | //Zeichen 3...4:// Dieses Byte (durch zwei ASCII-Zeichen, |
- | Zeichen 5...8: In den zwei Bytes steckt die relative Anfangsadresse des Blocks. Sie wird beginnend mit dem höherwertigen Byte der Adresse angegeben. | + | //Zeichen 5...8:// In den zwei Bytes steckt die relative Anfangsadresse des Blocks. Sie wird beginnend mit dem höherwertigen Byte der Adresse angegeben. |
- | Zeichen 9...10: Dieses Byte enthalt die Relokalisierinformation. Ist dieses Byte 0, so wird die angegebene Anfangsadresse absolut verwendet. Ist dieses Byte 1, so wird die Adresse durch den Relokalisierfaktor modifiziert. | + | //Zeichen 9...10:// Dieses Byte enthalt die Relokalisierinformation. Ist dieses Byte 0, so wird die angegebene Anfangsadresse absolut verwendet. Ist dieses Byte 1, so wird die Adresse durch den Relokalisierfaktor modifiziert. |
- | Zeichen 11...12: Dieses Byte enthält die Relokalisierinformation für die nächsten 8 Daten-Bytes. Dabei entspricht jedes Bit dieses Bytes einem Byte der nächsten 8 Daten-Bytes. Bit 7 ist für das erste Byte zuständig und Bit 0 für das letzte. Ist das betreffende Bit 0, dann heißt dies, das Byte wird unverändert geladen. Ist ein Byte auf 1 gefolgt von einem auf 0, dann sind die beiden dazugehörigen Bytes eine relokalisierbare Adresse, und der Relokalisierfaktor muß aufaddiert werden. Ein Bit auf 1 gesetzt, von einem gefolgt, das ebenfalls auf 1 ist, stellt eine Information für den Linking Loader dar, der aber hier nicht benötigt wird. | + | //Zeichen 11...12:// Dieses Byte enthält die Relokalisierinformation für die nächsten 8 Daten-Bytes. Dabei entspricht jedes Bit dieses Bytes einem Byte der nächsten 8 Daten-Bytes. Bit 7 ist für das erste Byte zuständig und Bit 0 für das letzte. Ist das betreffende Bit 0, dann heißt dies, das Byte wird unverändert geladen. Ist ein Byte auf 1 gefolgt von einem auf 0, dann sind die beiden dazugehörigen Bytes eine relokalisierbare Adresse, und der Relokalisierfaktor muß aufaddiert werden. Ein Bit auf 1 gesetzt, von einem gefolgt, das ebenfalls auf 1 ist, stellt eine Information für den Linking Loader dar, der aber hier nicht benötigt wird. |
- | Zeichen 13...28: Hierin sind die eigentlichen Daten-Bytes enthalten. Die Gesamtzahl der Daten-Bytes ist durch die Information am Anfang bestimmt. Nach jedem achten wird aber wieder die Relokalisierinformation eingefügt, dann folgen wieder Daten-Bytes. | + | //Zeichen 13...28//: Hierin sind die eigentlichen Daten-Bytes enthalten. Die Gesamtzahl der Daten-Bytes ist durch die Information am Anfang bestimmt. Nach jedem achten wird aber wieder die Relokalisierinformation eingefügt, dann folgen wieder Daten-Bytes. |
- | Zeichen N...(N+1): Dieses Byte enthält die Blockprüfsumme, | + | //Zeichen N...(N+1):// Dieses Byte enthält die Blockprüfsumme, |
Vom Benutzer muß ein Lader geschrieben werden, der speziell auf sein System abgestimmt ist und alle diese Informationen auswertet. Der Vorteil des relokalisierbaren Programms liegt neben der frei wählbaren Anfangsadresse bei der Überprüfbarkeit auf Eingabefehler durch die Prüfsumme. | Vom Benutzer muß ein Lader geschrieben werden, der speziell auf sein System abgestimmt ist und alle diese Informationen auswertet. Der Vorteil des relokalisierbaren Programms liegt neben der frei wählbaren Anfangsadresse bei der Überprüfbarkeit auf Eingabefehler durch die Prüfsumme. | ||
Zeile 65: | Zeile 65: | ||
Alle angegebenen Adressen sind um den Relokalisierfaktor zu erhöhen, den der Anwender beim Laden des Interpreters verwendet hat. | Alle angegebenen Adressen sind um den Relokalisierfaktor zu erhöhen, den der Anwender beim Laden des Interpreters verwendet hat. | ||
- | Bild 1. Programmliste | + | **Bild 1. Programmliste** |
- | Bild 2. Programmliste für verschiebbares (relocating) Format | + | **Bild 2. Programmliste für verschiebbares (relocating) Format** |
===== 3 BASIC-Befehle ===== | ===== 3 BASIC-Befehle ===== | ||
Zeile 365: | Zeile 365: | ||
- | Zahlenbereich von -32767 bis + 32767; vier Grundrechenarten + * - /; Klammern können beliebig gesetzt und verschachtelt werden. | + | Zahlenbereich von -32767 bis + 32767; vier Grundrechenarten |
==== 4.3 Logische Operatoren ==== | ==== 4.3 Logische Operatoren ==== | ||
Zeile 380: | Zeile 380: | ||
- | Mit verschiedenen Steuerzeichen kann man Fehler verbessern, die bei der Eingabe entstehen. CTRL C (Code 03, d. h die Tasten " | + | Mit verschiedenen Steuerzeichen kann man Fehler verbessern, die bei der Eingabe entstehen. |
Zeile 391: | Zeile 391: | ||
40 IF PEEK(TOP+I)=' | 40 IF PEEK(TOP+I)=' | ||
50 NEXT I | 50 NEXT I | ||
- | 55 O$ TOP > | + | 55 O$ TOP |
+ | > | ||
GEBEN SIE EINEN STRING EIN | GEBEN SIE EINEN STRING EIN | ||
DIES IST EIN TESTSTRING | DIES IST EIN TESTSTRING | ||
- | DIES-IST-EIN-TESTSTRING 10 FOR I=1 TO 10 | + | DIES-IST-EIN-TESTSTRING |
+ | |||
+ | 10 FOR I=1 TO 10 | ||
20 FOR J=1 TO 10 | 20 FOR J=1 TO 10 | ||
30 @(I)=@(I)+RND(100) | 30 @(I)=@(I)+RND(100) | ||
Zeile 401: | Zeile 404: | ||
60 FOR I=1 TO 10 | 60 FOR I=1 TO 10 | ||
70 PRINT @(I), | 70 PRINT @(I), | ||
- | 80 NEXT I > | + | 80 NEXT I |
+ | > | ||
| | ||
READY | READY | ||
Zeile 409: | Zeile 413: | ||
> | > | ||
1468 1578 1358 1711 1588 1472 1664 1358 1332 1147 | 1468 1578 1358 1711 1588 1472 1664 1358 1332 1147 | ||
- | READY >PRINT A, | + | READY |
+ | |||
+ | >PRINT A, | ||
32 13 | 32 13 | ||
READY | READY | ||
+ | |||
>PRINT A, | >PRINT A, | ||
32 13 | 32 13 | ||
READY | READY | ||
+ | |||
>PRINT (1=1)*(A< | >PRINT (1=1)*(A< | ||
64 | 64 | ||
+ | |||
>PRINT SIZE | >PRINT SIZE | ||
602 | 602 | ||
- | |||
READY | READY | ||
- | >END HEX(3F00) | ||
+ | >END HEX(3F00) | ||
READY | READY | ||
+ | |||
>PRINT SIZE | >PRINT SIZE | ||
- | 8995 >10 REM AUSDRUCKEN VON ZUFALLSZAHLEN ZWISCHEN 0 UND 9 | + | 8995 |
+ | |||
+ | >10 REM AUSDRUCKEN VON ZUFALLSZAHLEN ZWISCHEN 0 UND 9 | ||
>20 FOR I=1 TO 5 | >20 FOR I=1 TO 5 | ||
>30 PRINT RND(10)-1 | >30 PRINT RND(10)-1 | ||
- | >40 NEXT I > | + | >40 NEXT I |
+ | > | ||
9 | 9 | ||
7 | 7 | ||
9 | 9 | ||
2 | 2 | ||
- | 5 >10 INPUT 'GEBEN SIE ZAHL EIN' | + | |
+ | |||
+ | >10 INPUT 'GEBEN SIE ZAHL EIN' | ||
>20 PRINT A*A,B*B,A+B | >20 PRINT A*A,B*B,A+B | ||
>30 PRINT 'MIT ANDEREM FORMAT' | >30 PRINT 'MIT ANDEREM FORMAT' | ||
- | >40 PRINT # | + | >40 PRINT # |
+ | >RUN | ||
GEBEN SIE ZAHL EIN: | GEBEN SIE ZAHL EIN: | ||
B:23-5 | B:23-5 | ||
| | ||
MIT ANDEREM FORMAT | MIT ANDEREM FORMAT | ||
- | 26 | + | 26 |
+ | |||
+ | 10 REM ANWENDUNG VON INCHAR | ||
20 A=INCHAR | 20 A=INCHAR | ||
30 IF A=' ' STOP | 30 IF A=' ' STOP | ||
Zeile 450: | Zeile 467: | ||
60 IF A=' | 60 IF A=' | ||
70 OUTCHAR(B) | 70 OUTCHAR(B) | ||
- | 80 GOTO 20 >RUN | + | 80 GOTO 20 |
+ | >RUN | ||
**** * * * * | **** * * * * | ||
- | | + | |
+ | |||
+ | 10 REM GAUSSCHE VERTEILUNG | ||
20 FOR I=1 TO 300 | 20 FOR I=1 TO 300 | ||
30 FOR J=1 TO 10 | 30 FOR J=1 TO 10 | ||
Zeile 470: | Zeile 490: | ||
160 IF @(I)=@(I+1) PRINT " ", | 160 IF @(I)=@(I+1) PRINT " ", | ||
170 IF @(I)> | 170 IF @(I)> | ||
- | 180 NEXT I > | + | 180 NEXT I |
+ | > | ||
* | * | ||
* | * | ||
Zeile 502: | Zeile 523: | ||
* | * | ||
READY | READY | ||
- | REM ZEITBEDARF ETWA 45 MIN >REM DRUCKEN IN EINER ZEILE | + | REM ZEITBEDARF ETWA 45 MIN |
+ | >REM DRUCKEN IN EINER ZEILE | ||
READY | READY | ||
>10 FOR I=1 TO 5 | >10 FOR I=1 TO 5 | ||
>20 PRINT RND(10)-1, | >20 PRINT RND(10)-1, | ||
- | >30 NEXT I > | + | >30 NEXT I |
+ | > | ||
| | ||
READY | READY | ||
</ | </ | ||