Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

z1013:software:tinybasic:rdk [2012/12/03 08:03] – angelegt volkerpz1013: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), LF (Zeilenvorschub), um Blöcke voneinander zu trennen.+//Zeichen 0...1:// CR (Wagenrücklauf), LF (Zeilenvorschub), um Blöcke voneinander zu trennen.
  
-Zeichen 2: Strichpunkt, kennzeichnet den Anfang eines relokalisierbaren Blockes.+//Zeichen 2:// Strichpunkt, kennzeichnet den Anfang eines relokalisierbaren Blockes.
  
-Zeichen 3...4: Dieses Byte (durch zwei ASCII-Zeichen, ISO-7-bit-Code nach DIN 66003, 0...9, A...F dargestellt) gibt die Anzahl der Daten-Bytes an. Z. B. 19 an dieser Stelle bedeutet, es sind 25 Daten-Bytes in diesem Block. +//Zeichen 3...4:// Dieses Byte (durch zwei ASCII-Zeichen, ISO-7-bit-Code nach DIN 66003, 0...9, A...F dargestellt) gibt die Anzahl der Daten-Bytes an. Z. B. 19 an dieser Stelle bedeutet, es sind 25 Daten-Bytes in diesem Block. 
  
-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, die dem Zweierkomplement der Summe über alle vorhergehenden Bytes in diesem Block entspricht, so daß nun die Summe aller Bytes 0 ergeben muß. Damit wird eine Blocksicherung erreicht.+//Zeichen N...(N+1):// Dieses Byte enthält die Blockprüfsumme, die dem Zweierkomplement der Summe über alle vorhergehenden Bytes in diesem Block entspricht, so daß nun die Summe aller Bytes 0 ergeben muß. Damit wird eine Blocksicherung erreicht.
  
 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 **+ * - /**; Klammern können beliebig gesetzt und verschachtelt werden. 
  
 ==== 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 "CTRL" und "C" werden gleichzeitig gedrückt) z. B. unterbricht die Ausführung eines Programms oder eines Listings. Mit CTRL A wird das zuletzt eingegebene Zeichen gelöscht (Code 01). Mit ESC (Code 1B) wird die gerade eingegebene Zeile gelöscht, wenn CR noch nicht gegeben wurde. CTRL B besitzt eine besondere Bedeutung (Code 02): Wird CTRL B ausgeführt, so gibt der Interpreter keine Zeichen mehr aus, aber empfängt noch alle Zeichen. Damit ist es möglich, Programme vom Kassettenrecorder aus einzulesen. Die Programme werden mit Hilfe des LIST-Befehls ausgegeben, während ein Kassettenrecorder mitläuft, der simultan über ein Modem an der Serienschnittstelle zum Datensichtgerät hängt. Bei der Wiedergabe wird CTRL B betätigt (zuvor NEW eingeben), dann wird der Ausgang des Kassettenmodems mit der Serienschnittstelle des Datensichtgeräteausgangs parallel geschaltet. Das Programm kann dann eingelesen werden. Am Schluß wird wieder CTRL B betätigt, so daß mit dem Interpreter wieder normal gearbeitet werden kann. Diese Unterdrückung der Ausgabe ist nötig, da sonst durch die Ausgabevorgänge eine Verlangsamung des Eingabevorgangs die Folge wäre und das System außer Tritt käme. +Mit verschiedenen Steuerzeichen kann man Fehler verbessern, die bei der Eingabe entstehen. **CTRL C** (Code 03, d. h die Tasten "CTRL" und "C" werden gleichzeitig gedrückt) z. B. unterbricht die Ausführung eines Programms oder eines Listings. Mit **CTRL A** wird das zuletzt eingegebene Zeichen gelöscht (Code 01). Mit **ESC** (Code 1B) wird die gerade eingegebene Zeile gelöscht, wenn CR noch nicht gegeben wurde. **CTRL B** besitzt eine besondere Bedeutung (Code 02): Wird CTRL B ausgeführt, so gibt der Interpreter keine Zeichen mehr aus, aber empfängt noch alle Zeichen. Damit ist es möglich, Programme vom Kassettenrecorder aus einzulesen. Die Programme werden mit Hilfe des LIST-Befehls ausgegeben, während ein Kassettenrecorder mitläuft, der simultan über ein Modem an der Serienschnittstelle zum Datensichtgerät hängt. Bei der Wiedergabe wird CTRL B betätigt (zuvor NEW eingeben), dann wird der Ausgang des Kassettenmodems mit der Serienschnittstelle des Datensichtgeräteausgangs parallel geschaltet. Das Programm kann dann eingelesen werden. Am Schluß wird wieder CTRL B betätigt, so daß mit dem Interpreter wieder normal gearbeitet werden kann. Diese Unterdrückung der Ausgabe ist nötig, da sonst durch die Ausgabevorgänge eine Verlangsamung des Eingabevorgangs die Folge wäre und das System außer Tritt käme. 
  
  
Zeile 391: Zeile 391:
 40 IF PEEK(TOP+I)=' ' POKE TOP+I,'-'  40 IF PEEK(TOP+I)=' ' POKE TOP+I,'-' 
 50 NEXT I  50 NEXT I 
-55 O$ TOP >RUN +55 O$ TOP  
 +>RUN 
 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 >RUN +80 NEXT I  
 +>RUN 
    479   6l2   269   685   379   496   514   477   338   422     479   6l2   269   685   379   496   514   477   338   422 
 READY  READY 
Zeile 409: Zeile 413:
 >RUN  >RUN 
   1468  1578  1358  1711  1588  1472  1664  1358  1332  1147    1468  1578  1358  1711  1588  1472  1664  1358  1332  1147 
-READY >PRINT A,B,A<B,A>B,A=B,A<== +READY  
 + 
 +>PRINT A,B,A<B,A>B,A=B,A<== 
     32    13                     0     32    13                     0
  
 READY  READY 
 +
 >PRINT A,B,A<B,A>B,A=B,A#B,A<=B,A>=B  >PRINT A,B,A<B,A>B,A=B,A#B,A<=B,A>=B 
     32    13                         1     32    13                         1
  
 READY  READY 
 +
 >PRINT (1=1)*(A<B)*100+A+A*('1'='1' >PRINT (1=1)*(A<B)*100+A+A*('1'='1'
     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 >RUN +>40 NEXT I  
 +>RUN 
      9      9
      7      7
      9      9
      2      2
-     5 >10 INPUT 'GEBEN SIE ZAHL EIN'A,B+      
 + 
 +>10 INPUT 'GEBEN SIE ZAHL EIN'A,B
 >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 #10,A+A,B*B,A+B >RUN+>40 PRINT #10,A+A,B*B,A+B  
 +>RUN
     GEBEN SIE ZAHL EIN:12+1      GEBEN SIE ZAHL EIN:12+1 
     B:23-5     B:23-5
        169   324    31        169   324    31
     MIT ANDEREM FORMAT      MIT ANDEREM FORMAT 
-            26       324         31 10 REM ANWENDUNG VON INCHAR +            26       324         31  
 + 
 +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='2' B=HEX(D) 60 IF A='2' B=HEX(D)
 70 OUTCHAR(B)  70 OUTCHAR(B) 
-80 GOTO 20 >RUN+80 GOTO 20  
 +>RUN
 ****   * *   * * ****   * *   * *
-  ** ** 10 REM GAUSSCHE VERTEILUNG +  ** **  
 + 
 +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)>@(I+1) PHINT "*"  170 IF @(I)>@(I+1) PHINT "*" 
-180 NEXT I >RUN +180 NEXT I  
 +>RUN 
  *  *
   *   *
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 >RUN +>30 NEXT I  
 +>RUN 
                                            
 READY  READY 
 </code> </code>
  
  • z1013/software/tinybasic/rdk.1354521809.txt.gz
  • Zuletzt geändert: 2012/12/03 08:03
  • von volkerp