von Markus Rösner Herzlich willkommen zu dieser neuen (?) Serie. Ich versuche euch hier, das Turbo-Basic, das sich grandioser Be- liebtheit erfreut, näherzubringen. Zunächst einige Speicherplatzsparende Dinge: Eine Trennungsline (xx REM ------ usw), die normalerweise etwa 25 Bytes belegt, kann durch eine 3-Byte-Routine ersetzt werden: 100 -- wird eingetippt, beim listen erhält man eine Zeile mit 19 "-" - Zeichen. Zudem wurden die Zahlen 0-3 als Konst- anten bereits vordeffiniert: %0,%1,%2 und %3. Ruft man sie in dieser Form auf, so wird u.U. einiges an Speicher- platz gespart. Bsp: 20 OPEN #%1,4,%0,"D:SERVUS.DAT" 30 SCORE=SCORE+%2 40 TIME=TIME-%3 zum Beispiel spart schon einiges an Speicherplatz, den man sinnvoller be- nutzen kann, besonders wenn das Pro- gramm recht umfangreich zu werden scheint. Doch jetzt zu den ersten neuen Befehlen und Funktionen, die sich mit der Pro- grammierung beschäftigen: Wer Displaylists oder ähnliches pro- grammiert, kennt das speicherplatz- fressende Problem mit den Low/High- Bytes, also "PEEK(yy)+256*PEEK(zz)". Diese Zeile kann in Turbo-Basic ganz einfach durch "DPEEK(yy)" ersetzt werd- en, ebenso kann gepoket werden: DPOKE xx,yy. Mit Hilfe des MOVE-Befehls können be- stimmte Speicherbereiche ganz leicht verschoben werden, z.B. kann so Scroll- ing ersetzt oder PMs bewegt werden. MOVE xx,yy,zz verschiebt zz Bytes von der Adresse xx ab zur Adresse yy. MOVE 1536,1740,10 verschiebt also den Inhalt der Adressen 1536-1546 nach 1740-1750. Und wenn der Zielbereich innerhalb des Orginalbereichs liegt ? Muß man dann zweimal verschieben ? Nein, denn hier- für gibt's ja noch den -MOVE-Befehl. -MOVE xx,yy,zz schreibt also zz Bytes von xx nach yy rückwärts. Verständlich ausgedrückt: Bereich 1 ist 1536 - 1540, Bereich 2 ist 1538 - 1542. Das 1540ste Byte wird nach 1542 geschrieben, das 1539ste nach 1541 usw. Welcher leidenschaftlicher Programmier- er kennt nicht folgendes Problem: 10 OPEN #1,8,0,"D:A.DAT":FOR I=1536 TO 1540:PUT #1,PEEK(I):NEXT I:CLOSE #1 um auf Disk wichtige Daten abzulegen ? In Turbo-Basic geht's einfacher, Speicherplatzsparender sowie schneller: 10 OPEN #%1,8,%0,"D:A.DAT":BPUT #1, 1536,5:CLOSE #%1 BPUT xx,yy,zz schreibt auf Kanal xx ab Adresse yy zz Bytes, gelsen werden kann mit der Suntax BGET xx,yy,zz. Auf Kanal xx werden zz Bytes gelesen und ab Adresse yy abgelegt. %PUT #1,xx bzw %GET #1,xx sind schnell- er als die herkömmlichen Basicbefehle, dafür aber auch nicht untereinander kompatibel. Nein, nicht schon wieder eine Taste ab- fragen, die Routine ist immer so lang. Nicht so in Turbo-Basic: BASIC: 10 OPEN #1,4,0,"K:":GET #1,KEY: CLOSE #1 Turbo-Basic: 10 GET KEY Na, das ist doch was, oder ?!?! PRINT "++" (das er- gibt den Pfeil nach links oben, der den Schirm löscht) ersetzt man in Gr.0 durch CLS, bzw. in Gr. 1+2 usw durch CLS #6. Warteschleifen werden auch speicher- platzsparender: 10 FOR I=1 TO 50:NEXT I ersetzt man in Turbo-Basic einfach durch 10 PAUSE 50. Wer blickte nicht schon neidisch auf das Basic diverser anderer Computer, die zusammen mit dem Input einen Ein- gabetext erlaubten ? Ok, in Basic geht es auch, aber doch etwas umständlich: IMPORTANT: entspricht dem Semikolon 10 ? "Eingabe ->":INPUT E$ Aber was ist mit dem Fragezeichen, das stört doch meistens ohne Ende ? Zu- nächst mal kann in Turbo-Basic folgend- es Input verwendet werden: 10 INPUT "Eingabe ->"E$ zudem verschwindet das Fragezeichen, indem man das Semikolon durch ein Komma "," ersetzt. Komfortabel, nicht ? Also dann bis nächsten Monat. Nächstes mal gibt es noch mehr neue Befehle, sowie die neuen Schleifenroutinen. Bis dahin wendet das bisher gelernte mal an !!!