Das Trainingsbuch zum Simon's Basic

Aus C64-Wiki
Wechseln zu: Navigation, Suche


Das Trainingsbuch zum Simon's Basic
Cover/Buchdeckel
Sprache deutsch
Autor(en) Axel Plenge, Norbert Szczepanowski
Verlag Data Becker
Jahr 1983
ISBN ISBN 3-89090-009-6
Neupreis DM 49,-
Datenträger
Seitenzahl 386 (2. Aufl.)
381 (4. Aufl.)
letzte Auflage 4. überarbeitete Auflage; 1985
Genre Programmieren
Information



Cover der vierten Auflage


Beschreibung[Bearbeiten]

Wegen seines großen Befehlsumfanges wurde Simons' Basic eine beliebte Befehlserweiterung. Das nicht gerade umfangreiche Handbuch und eine Reihe von Problemen, die bei der Benutzung der Erweiterung auftraten, weckten den Bedarf nach mehr Informationen. Dem will das "Trainingsbuch zum Simons' Basic" gerecht werden. Es bezieht sich auf eine Simons' Basic - Diskettenversion vom November 1983.

Auf 380 Seiten werden (fast) alle Simons' Basic Befehle und deren Anwendung ausführlich mit vielen Beispielen und ggf. auch Grafiken beschrieben. Zu Unzulänglichkeiten und Fehlern im Simons' Basic findet man hier Hinweise. Die Befehle werden ihrer Anwendung nach in Gruppen eingeteilt. Nach der Behandlung jeder Gruppe kann der Leser sein erworbenes Wissen mit einigen Testaufgaben überprüfen. Jeder Befehl ist einzeln behandelt, so dass sich das Trainingsbuch auch als Nachschlagewerk eignet.

Inhaltsverzeichnis[Bearbeiten]

1. KAPITEL - Einleitung ....................................  11

2. KAPITEL - Programmierhilfen .............................  14
2.1 Belegung der Funktionstasten ...........................  14
2.1.1 KEY - Definition der Tasten ..........................  16
2.1.2 DISPLAY - Anzeigen der Definitionen ..................  19
2.1.3 Testaufgaben .........................................  21
2.2 Komfortable Programmerstellung .........................  22
2.2.1 AUTO - automatische Zeilennumerierung ................  22
2.2.2 RENUMBER - Zeilen umnumerieren .......................  24
2.2.3 MERGE - Programmverknüpfung ..........................  28
2.2.4 Testaufgaben .........................................  32
2.3 Listhilfen .............................................  33
2.3.1 PAGE - Formatierte Listausgabe .......................  34
2.3.2 OPTION - Hervorheben aller SIMON'S BASIC-Befehle .....  35
2.3.3 DELAY - Verändern der List-Geschwindigkeit ...........  36
2.3.4 FIND - Aufsuchen von Zeichenketten ...................  37
2.3.5 Testaufgaben .........................................  40

3. KAPITEL - Fehlerbehandlung ..............................  42
3.1 Externe Fehlerbehandlung ...............................  43
3.1.1 TRACE - Anzeigen der aktiven BASIC-Zeilen ............  43
3.1.2 RETRACE - Anzeige des letzten TRACE-Fensters .........  45
3.1.3 DUMP - Anzeigen der benutzten Variablen ..............  47
3.1.4 COLD - Kaltstart .....................................  49
3.1.5 OLD - Anti-NEW .......................................  50
3.1.6 Testaufgaben .........................................  51
3.2 Programminterne Fehlerbehandlung .......................  52
3.2.1 ON ERROR - Abfangen eines Programmfehlers ............  52
3.2.2 NO ERROR - Ausschalten der Fehlerbehandlung ..........  55
3.2.3 ON ERROR NO ERROR im Detail ..........................  55
3.2.4 OUT ..................................................  62
3.2.5 Testaufgaben .........................................  63 

4. KAPITEL - Programmschutz ................................  64
4.1 DISAPA - Kennzeichnen geschützter Zeilen ...............  64
4.2 SECURE - Schützen der gekennzeichneten Zeilen ..........  65

5. KAPITEL - Programmstruktur ..............................  66
5.1 Logische Operationen ...................................  67
5.1.1 IF ... THEN ... ELSE .................................  67
5.1.2 RCOMP ................................................  68
5.1.3 REPEAT ... UNTIL .....................................  70
5.1.4 LOOP ... EXIT IF ... END LOOP ........................  72
5.1.5 Testaufgaben .........................................  74
5.2 Sprungbehandlung .......................................  75
5.2.1 PROC - Symbolische Sprungadressen (Label) ............  75
5.2.2 END PROC - Routinenende festlegen ....................  76
5.2.3 CALL - Sprung zu Label ...............................  77
5.2.4 EXEC - symbolischer Unterprogrammaufruf ..............  78
5.2.5 CGOTO - berechneter Sprung ...........................  79
5.2.6 Testaufgaben .........................................  80

6. KAPITEL - Variablen .....................................  82
6.1 LOCAL - Festvariablendefinition ........................  82
6.2 GLOBAL - Wiederherstellung der Festvariablen ...........  83
6.3 Testaufgaben ...........................................  84

7. KAPITEL - Zahlenbehandlung ..............................  85
7.1 Arithmetische Operatoren ...............................  85
7.1.1 MOD - Rest einer Division ............................  85
7.1.2 DIV - Vorkommazahl einer Division ....................  87
7.1.3 FRAC - Bestimmen der Nachkommazahl ...................  88
7.1.4 EXOR - Exclusiv-Oder Verknüpfung .....................  89
7.1.5 Testaufgaben .........................................  91
7.2 Zahlenumwandlung .......................................  92
7.2.1 % - Umwandlung binär nach dezimal ....................  92
7.2.2 $ - Umwandlung hexadezimal nach dezimal ..............  93
7.2.3 Testaufgaben .........................................  94

8. KAPITEL - Stringoperationen .............................  95
8.1 INSERT - Einfügen eines Strings in einen anderen .......  95
8.2 INST - Überschreiben eines Strings mit einem anderen ...  97
8.3 PLACE - Suchen eines Stringteils .......................  99
8.4 DUP - Vervielfachen eines Strings ...................... 109
8.5 Testaufgaben ........................................... 111

9. KAPITEL - Ausgabekontrolle .............................. 113
9.1 Formatierte Ausgabe .................................... 113
9.1.1 CENTRE- zentrierte Ausgabe ........................... 115
9.1.2 USE - Dezimalpunkt orientierte Ausgabe ............... 117
9.1.3 AT - positionierte Ausgabe ........................... 119
9.1.4 LIN - Bestimmen der Cursorposition ................... 122
9.1.5 PAUSE - Verzögern des Programmablaufs ................ 123
9.1.6 Testaufgaben ......................................... 126
9.2 Bildschirm blinken ..................................... 127
9.2.1 FLASH - Blinken einer Bildschirmfarbe ................ 127
9.2.2 OFF - Ausschalten des FLASH-Modus .................... 129
9.2.3 BFLASH - Blinken des Bildschirmrahmens ............... 131
9.2.4 BFLASH 0 - Ausschalten des BFLASH-Modus .............. 133
9.2.5 Testaufgaben ......................................... 135
9.3 Hintergrund- und Rahmenfarbe ........................... 136
9.3.1 COLOUR - Ändern der Rahmen- und Hintergrundfarbe ..... 139
9.3.2 BCKGNDS - Einschalten des Extended-Color Modus ....... 141
9.3.3 NRM - Ausschalten des Extended-Color-Modus ........... 147
9.3.4 Testaufgaben ......................................... 148
9.4 Steuerung : Bildschirmbereiche ......................... 149
9.4.1 FCHR - Bildschirmbereich mit Zeichen füllen .......... 152
9.4.2 FCOL - Bildschirmbereich färben ...................... 156
9.4.3 FILL - Bildschirmbereich mit gefärbten Zeichen füllen. 159
9.4.4 MOVE - Bildschirmbereich duplizieren ................. 162
9.4.5 INV - Bildschirmbereich invertieren .................. 163
9.4.6 Testaufgaben ......................................... 166
9.5 Bildschirm scrollen .................................... 167
9.5.1 LEFT - Linksscrollen ................................. 168
9.5.2 RIGHT - Rechtsscrollen ............................... 171
9.5.3 UP - Aufwärtsscrollen ................................ 174
9.5.4 DOWN - Abwärtsscrollen ............................... 176
9.5.5 Testaufgaben ......................................... 178

10. KAPITEL - Eingabekontrolle ............................. 179
10.1 FETCH - Selektion der eingegebenen Zeichen ............ 180
10.2 INKEY - Abfrage der Funktionstasten ................... 181
10.3 RESET - Setzen des DATA-Zeigers ....................... 182
10.3 Testaufgaben .......................................... 184

11. KAPITEL - Ein/Ausgabe Peripheriebefehle ................ 185
11.1 Diskettenbefehle ...................................... 185
11.1.1 DISK - Befehlsübertragung ........................... 185
11.1.2 DIR - Anzeigen des Directorys ....................... 187
11.1.3 SCRSV - Abspeichern eines LOW-RES Bildschirms ....... 189
11.1.4 SCRLD - Laden eines LOW-RES Bildschirms ............. 191
11.1.5 Testaufgaben ........................................ 192
11.2 Druckerbefehle ........................................ 193
11.2.1 COPY - Hardcopy des HIGH-RES/MULTI COLOR Bildschirms. 193
11.2.2 HRDCPY - Hardcopy des LOW-RES Bildschirms ........... 193
11.2.3 Testaufgaben ........................................ 194

12. KAPITEL - Graphik ...................................... 196
12.1 Hardwarevoraussetzungen ............................... 197
12.2 Graphikmodus und Farbbestimmung ....................... 202
12.2.1 HIRES - Bestimmen der Zeichen- und Hintergrundfarbe 
       und Einschalten der HGR mit Löschen ................. 204
12.2.2 MULTI - Bestimmen der Zeichenfarben und Umschalten 
       in den MULTI-COLOR Modus ............................ 207
12.2.3 NRM - Ausschalten des Extended-Color-Modus .......... 211
12.2.4 CSET 2 - Einschalten der Graphikanzeige ohne löschen  213
12.2.5 LOW COL - Farbwechsel und Zeichnen mit Farbsetzung .. 215
12.2.6 HI COL - Farbausgangszustand herstellen und 
      Zeichnen ohne Farbsetzung ............................ 219
12.2.7 Testaufgaben ........................................ 224
12.3 Grafikbefehle ......................................... 225
12.3.1 PLOT - Setzen eines Punktes ......................... 226
12.3.2 TEST - Prüfen auf gesetzten Punkt ................... 228
12.3.3 LINE - Zeichnen einer Linie ......................... 233
12.3.4 REC - Zeichnen eines Rechtecks ...................... 237
12.3 5 BLOCK - Zeichnen eines ausgefüllten Rechtecks ....... 242
12.3.6 CIRCLE - Zeichnen eines Kreises ..................... 245
12.3.7 ARC - Zeichnen eines Bogens ......................... 250
12.3.8 ANGL - Radius einer Figur zeichnen .................. 256
12.3.9 PAINT - Beliebige Fläche ausfüllen .................. 261
12.3.10 Testaufgaben ....................................... 265
12.4 Zeichnen eigener Figuren .............................. 267
12.4.1 DRAW - Erstellen einer Figur ........................ 267
12.4.2 ROT - Drehen und vergrößern dieser Figur ............ 273
12.4.3 Testaufgaben ........................................ 278
12.5 Text innerhalb der Graphik ............................ 279
12.5.1 CHAR - einzelnes Zeichen in die Graphik setzen ...... 279
12.5.2 TEXT - Zeichenkette in die Graphik setzen ........... 283
12.5.3 Testaufgaben ........................................ 287

13. KAPITEL - Zeichensatzerstellung ........................ 288
13.1 MEM - Verlegen des Zeichensatzes von ROM in RAM ....... 292
13.2 DESIGN 2 - Bestimmen des zu verändernden Zeichens ..... 296
13.3 @ - Definition eines Zeichens ......................... 297
13.4 CSET 0/1 - Umschalten auf zweiten Zeichensatz ......... 302
13.5 Testaufgaben .......................................... 304

14. KAPITEL - Sprites (MOBs) ............................... 305
14.1 Spritedefinition ...................................... 310
14.1.1 DESIGN 0/1 - Speicherplatzzuteilung für Sprites ..... 310
14.1.2 @ - Form eines Sprites eingeben ..................... 312
14.4.3 MOB SET - Eigenschaften des Sprites bestimmen ....... 315
14.1.4 CMOB - Farbwahl eines MULTI-COLOR Sprites ........... 319
14.1.5 Testaufgaben ........................................ 320
14.2 Spritesteuerung ....................................... 321
14.2.1 MMOB - Darstellen oder Bewegen eines Sprites ........ 321
14.2.2 MOB OFF - Ausschalten eines Sprites ................. 325
14.2.3 RLOCMOB - Darstellen und Weiterbewegen eines Sprites. 329
14.2.4 DETECT - Sprite-Kollisionsabfrage vorbereiten ....... 333
14.2.5 CHECK - Abfrage auf Sprite-Kollision ................ 335
14.2.6 Testaufgaben ........................................ 340

15. KAPITEL - Musik ........................................ 340
15.1 Hardwarevoraussetzungen ............................... 341
15.2 VOL - Einstellen der Lautstärke ....................... 345
15.3 WAVE - Wellenform bestimmen ........................... 348
15.4 ENVELOPE - Hüllkurve einstellen ....................... 353
15.5 MUSIC - Tonfolge festlegen ............................ 356
15.6 PLAY - Wiedergabe der Musik ........................... 360
15.7 Testaufgaben .......................................... 363

16. KAPITEL - Steuernde Peripherie ......................... 364
16.1 LIGHTPEN .............................................. 364
16.1.1 PENX - Bestimmen der X-Koordinate ................... 366
16.1.2 PENY - Bestimmen der Y-Koordinate ................... 367
16.2 PADDLE und JOYSTICK ................................... 369
16.2.1 POT - PADDLE-Wert abfragen .......................... 370
16.2.2 JOY - Funktion des Joysticks bestimmen .............. 371

17. KAPITEL - Anhang ....................................... 373
17.1 Lösungen zu den Testaufgaben .......................... 373
17.2 Farbtabelle ........................................... 374
17.3 Fehlermeldungen ....................................... 375
17.3 Alphabetische Befehlsübersicht ........................ 377
17.4 SIMONS BASIC Daten .................................... 378

Leseprobe[Bearbeiten]

9.5.1 LEFT
Format  :LEFTW z,a,b,h Parameter  : - z: Zeile (0-24) und - s: Spalte (0-39) der oberen linken Ecke des Feldes - h: Höhe und - b: Breite des Feldes Beispiel  :LEFTW 5,7,3,4 Funktion  :Links Scrollen eines Bildschirmbereiches

Erläuterungen:
Bei dem Befehl LEFT haben wir es mit dem Komando zu tun, das uns - wie der Name schon sagt - unseren Bildschirm nach links verschiebt. Dabei kann jeweils ein bestimmter rechteckiger Bereich ausgewählt werden, für den die Verschiebung ausgeführt wird. Dabei geben die ersten beiden Parameter die absolute Lage des Rechtecks auf dem Bildschirm an:
z stellt hier die Zeile, s die Spalte der oberen linken Ecke Ihres Rechtecks an. z und s sind somit praktisch die Anfangskoordinaten.
Mit h und b nun legen Sie die Höhe bzw. die Breite des Feldes fest, wobei stets in Einheiten eines Zeichens gemessen wird., d.h. h oder b geben die relativen Ausmaße (relativ zu dem mit z und s festgelegten "Ursprungspunkt") Ihres Zeichenrechtecks an. h und b dürfen also nicht größer werden, als die Anzahl der Zeilen oder Spalten vom Ursprungspunkt bis zum Ende der Spalte bzw. Zeile. Beginnen Sie demnach mit Ihrem Rechteck in Zeile 10 / Spalte 10, so darf h nur noch maximal den Wert von 14 annehmen, da nur noch 14 Zeilen bis zum unteren Rand des Bildschirms frei sind. Umgekehrt darf b höchstes nur noch 29 werden, da dies die Zahl der freien Zeichen bis zum rechten Rand ist. Werden diese Werte überschritten, ragt nach Ihrer Eingabe das Rechteck über den Bildschirmrand hinaus, oder geben Sie für einen der Parameter den Wert 0 ein, so wird die Fehlermeldung BAD MODE, ausgegeben.
Wie Sie sehen stimmt (entgegen den Aussagen des Simon's Basic Handbuchs, das an dieser Stelle einen Fehler aufweist) die Parametersyntax mit der der Bildschirmbereichsbefehle überein, was ja auch zweckmäßig ist.

100 REM #####################
110 REM ##                 ##
120 REM ##  LEFT-BEISPIEL  ##
130 REM ##                 ##
140 REM #####################
150 REM
160 PRINT CHR$(147) : REM BILDSCHIRM LOESCHEN
170 A$ = "CBM 64 --- SIMON'S BASIC///" : REM SCHRIFT DEFINIEREN
180 PRINT AT(7,12) A$ :REM POSITIONIERT SCHREIBEN
190 FOR X=1 TO 216 : REM AUFZAEHLEN
200 LEFTW 12,7,LEN(A$),1 : REM LEN(A$) IST DIE LAENGE VON A$ 
210 FOR	Y=X TO 100 : NEXT Y : REM VARIABLE WARTESCHLEIFE/SCHNELLER WERDEND
220 NEXT X
230 FOR X=216 TO 1 STEP -1 : REM ABZAEHLEN
240 LEFTW 12,7,LEN(A$),1 : REM LEN(A$) IST DIE LAENGE VON A$ 
250 FOR	Y=X TO 100 : NEXT Y : REM VARIABLE WARTESCHLEIFE/LANGSAMER WERDEND
260 NEXT X
270 PRINT : REM LEERZEILE
280 CENTRE "UEBERZEUGT?" 

Auflagenunterschiede[Bearbeiten]

Auflage 3 und 4[Bearbeiten]

  • Die Lesbarkeit wurde durch eine größere Schrift deutlich erhöht.
  • Die Hintergrund der Befehlseckdaten wurden mit grauer Farbe eingefärbt.
  • Die Druckqualität wurde verbessert.
  • Der Buchrücken ist bedruckt.
  • Am Ende der Einleitung wurden folgende Sätze hinzugefügt:
Es gibt noch eine Reihe weiterer im Handbuch nicht aufgeführter Kommandos, 
die jedoch nicht oder nicht fehlerfrei funktionieren und oft in einem Absturz des Rechners enden. 
Aus diesem Grunde wurden sie hier nicht weiter aufgeführt.

Auflage 4[Bearbeiten]

  • Neues Cover und zusätzliche Grafiken.
  • Das fehlerhafte Programmbeispiel des CALL-Befehls wurde in der vierten Auflage korrigiert.

Fehler[Bearbeiten]

Fehler Korrektur Fundstelle Kommentar
... mit dem Komando ... ... mit dem Kommando ... 9.5.1 LEFT, S. 168 , Aufl. 2 Rechtschreibung
160 ::DIR:REM DIRECTORY AUFLISTEN 160 ::DIR"$":REM DIRECTORY AUFLISTEN 11.1.2 DIR, S. 188, Aufl. 2 DIR-Syntax
Der Befehl DIR jedoch ließt das Directory wie eine Datei Byte für Byte und stellt sie auf dem Bildschirm dar. Der Befehl DIR jedoch liest das Directory wie eine Datei Byte für Byte und stellt sie auf dem Bildschirm dar. 11.1.2 DIR, S. 188 , Aufl. 2 Rechtschreibung

Meinung[Bearbeiten]

Petrus: Die Autoren haben sich viel Mühe gegeben - mit Erfolg. Dieses Buch ist eine wertvolle Ergänzung zum Handbuch und kann jedem Simons' Basic Benutzer empfohlen werden. Den positiven Gesamteindruck trüben dabei auch nicht einige kleine Mängel, wie die folgenden:

  • Die Befehle ON KEY, DISABLE, RESUME wurden "vergessen"
  • Hinter CALL folgen im Beispiel weitere Anweisungen; das ist aber nicht möglich
  • Die MOVE-Parameter für Breite und Höhe sind in der Befehlsbeschreibung vertauscht
  • Beim Befehl TEXT wird übersehen, dass auch der drittletzte Parameter nicht als Variable einsetzbar ist.

Johann Klasek: Inhaltlich gesehen füllt das Buch viele Informationslücken, die es zu SB gibt auf. Speziell das Fehlerverhalten der Kommandos und sonstige Macken werden ganz gut erläutert. Die Struktur orientiert sich an den Aufgaben, nachdem auch die Befehle gruppiert sind. Das tut dem Buch selbst in der Nutzung als Nachschlagewerk keinen Abbruch und macht das Werk erst richtig zu einem wertvollen Helfer.
Der Stil ist mir fast zu jovial, was für ein Fachbuch schon eher selten anzutrefen ist.
Zumindest bei Auflage 2 ist das Matrixdrucker-Layout im Blocksatz zum Lesen eine wahre Qual. Hinzu kommt der bei Data Becker übliche schlecht redigierte (wenn überhaupt - vermutlich stammt alles 1:1 vom Autor?) und mit Fehlern überhäufte Satz, wogegen man im Laufe der Lesezeit aber abstumpft.

Weblinks[Bearbeiten]