C16 Tips & Tricks

Aus C64-Wiki
Zur Navigation springenZur Suche springen


C16 Tips & Tricks
Cover/Buchdeckel
Sprache deutsch
Autor(en) Said Baloui
Verlag Data Becker
Jahr 1986
ISBN ISBN 3-89011-168-8
Neupreis 29,00 DM
Datenträger
Seitenzahl 201 Seiten
letzte Auflage 2. Auflage
Genre Programmieren
Information Mehrere Auflagen erschienen




Buchrückseite[Bearbeiten | Quelltext bearbeiten]

DAS STEHT DRIN:
C 16 Tips und Tricks bietet eine hochinteressante Sammlung von Anregungen, Ideen und fertigen Lösungen zur Programmierung und Anwendung Ihres C 16/116. Eine wahre Fundgrube für jeden, der auf dem Commodore 16 eigene Programme schreiben will!

Aus dem Inhalt:

  • Hinweise zur Eingabe der Programme
  • Alle Programme für Kassetten- und Diskettenbetrieb
  • Anwenderprogramme aus den Bereichen Unterhaltung, Grafik, Text- und Dateiverarbeitung, Mathematik
  • Viele Utilities, wie Hardcopy auf Drucker, REM-Killer, Mergen von einzelnen Programmteilen, Shape-Editor
  • Etikettendruck
  • Lottozahlen
  • Datumsberechnung
  • Die wichtigsten Tips & Tricks
  • Von BASIC zu Maschinensprache
  • Wichtige Zeropageadressen
  • Betriebssystemroutinen
  • Routinen des BASIC-Interpreters

UND GESCHRIEBEN HAT DIESES BUCH:
Said Baloui hat langjährige Erfahrung im Umgang mit Commodore-Rechnern, was er in seinen zahlreichen Veröffentlichungen immer wieder unter Beweis stellt. Sein besonderes Interesse gilt der Programmierung von Dateiverwaltungen.

Inhaltsverzeichnis[Bearbeiten | Quelltext bearbeiten]

1. Einleitung .................................. 11

2. Hinweise zur Eingabe der Programme .......... 13

3. Verwendung einer Diskettenstation ........... 17

4. Anwenderprogramme ........................... 21

4.1. Spiele .................................... 21
4.1.1. Schiffe versenken ....................... 21
4.1.2. Reaktionstest ........................... 27
4.1.3. Conway's Life ........................... 32
4.1.4. ASW ..................................... 40
4.1.5. Indianapolis ............................ 45
4.1.6. Space Invaders .......................... 52

4.2. Graphik ................................... 59
4.2.1. Malprogramm ............................. 59
4.2.2. Laufschrift ............................. 73
4.2.3. Funktionsdarstellung .................... 81

4.3. Text- und Dateiverarbeitung ............... 88
4.3.1. Textverarbeitung/Dateiverwaltung ........ 88
4.3.2. Vokabeltrainer .......................... 111
4.3.3. KFZ-Überwachung ......................... 120

4.4. Mathematik ................................ 128
4.4.1. Zinzeszins .............................. 129
4.4.2. Determinantenberechnung ................. 130
4.4.3. Zahlentheorie ........................... 132

4.5. Hilfsprogramme ............................ 136
4.5.1. Hardcopy ................................ 137
4.5.2. REM-Killer .............................. 139
4.5.3. Merge ................................... 146
4.5.4. Eingabe-Routine ......................... 150
4.5.5. Shape-Editor ............................ 155

4.6. Sonstige Programme ........................ 160
4.6.1. Etikettendruck .......................... 160
4.6.2. Lottozahlen ............................. 166
4.6.3. Datumsberechnung ........................ 168

5. Die wichtigsten verwendeten Tricks .......... 173

5.1. Cursor setzen ............................. 173
5.2. Dauerfunktion für alle Tasten ............. 174
5.3. Insert-Modus löschen ...................... 175
5.4. Cursornachlauf verhindern ................. 176
5.5. Cursorsimulation im Programmodus .......... 177
5.6. Simulierter Direktmodus ................... 179

6. Programmierung des C16 in Maschinensprache .. 183

6.1. Von BASIC zu Assembler .................... 183
6.2. Der integrierte Monitor ................... 190
6.3. Einbindung von Maschinenroutinen .......... 194
6.4. Die wichtigsten Zeropage-Adressen ......... 196
6.5. Betriebssystemroutinen .................... 197
6.6. Routinen des BASIC-Interpreters ........... 199

Leseprobe[Bearbeiten | Quelltext bearbeiten]

(2. Auflage - Seite 190: Kapitel "6. Programmieren dews C16 in Maschinensprache"; Unterkapitel "6.2. Der integrierte Monitor ")

Üblicherweise wird nicht in der eigentlichen Maschinensprache programmiert, sondern in "Assembler". Zur Assemblerprogrammierung wird jedoch ein Hilfsprogramm benötigt, das gleichfalls den Namen Assembler trägt. Ein Mini-Assembler ist in dem Monitorprogramm des C16 vorhanden. Dieser Monitor besitzt weitere Möglichkeiten außer dem "Assemblieren", das heißt dem Umwandeln der Assemblerbefehle in Maschinensprachebefehle.

Im Handbuch zum C16 wird die Existenz dieses Monitors zwar erwähnt, seine Bedienung jedoch nicht im geringsten erläutert. Sollte Ihnen die folgende Kurzanleitung nicht umfassend genug sein, verweise ich wiederum auf die entsprechende Literatur (zum C64). Glücklicherweise sind die meisten Monitorbefehle und ihre Syntax standardisiert, es gibt nur geringe Unterschiede in der Bedienung verschiedener Monitore.

Aufruf des Monitors:
Zum Aufruf genügt die Eingabe des BASIC-Befehls "MONITOR". Der Monitor meldet sich mit der Anzeige der aktuellen Registerinhalte und des Programmcounters. Alle im folgenden genannten Monitorbefehle verlangen hexadezimale Eingaben! Bei den Befehlen "M ..." und "D..." genügt die Eingabe von "M" beziehungsweise "D", um die weitere Ausgabe ab der aktuellen Adresse zu veranlassen.

Inhalte von Speicher stellen ausgeben:
Die Inhalte beliebiger Speicherbereiche können Sie mit dem Befehl "M (ADR1) (ADR2)" in hexadezimaler Form ausgeben lassen.

Beispiel: "M 0200 0300" führt zur Ausgabe der Inhalte der Speicherstellen $0200-50400.

Inhalte von Speicher stellen ändern:
Lassen Sie sich den Inhalt der gewünschten Speicherstelle(n) ausgeben, bewegen Sie den Cursor zum Zeilenanfang, überschreiben Sie den Punkt mit dem Zeichen ">", ändern Sie die ausgegebenen Werte und bestätigen Sie die Änderung mit "Return". Selbstverständlich können Sie auch direkt das Zeichen ">" eingeben und dahinter eine beliebige Byte-Folge.

Beispiel: "> 0200 02 4A 2B

Disassemblieren:
Ein beliebiger Speicherbereich wird mit dem Befehl "D (ADR1) (ADR2)" disassembliert ausgegeben, das heißt anstelle der Zahlencodes erhalten Sie die zugehörigen Assemblerbefehle. Das Disassemblieren ist nur sinnvoll in einem Bereich, der tatsächlich ein Programm enthält.

Beispiel: "D 1000 1100" gibt den Bereich $1000-51100 disassembliert aus.

Assemblieren:
Zum Assemblieren benötigt der Monitor die Startadresse, ab der assembliert werden soll und die Eingabe des ersten Assemblerbefehls. Der Befehl zum Assemblieren lautet "A". Nachdem Sie den ersten Assemblerbefehl eingegeben haben, wird Ihnen die nächste Adresse automatisch vorgegeben, Sie können den zweiten Assemblerbefehl sofort eingeben. Wichtig ist nur der korrekte Start des Assembliervorgangs. Beachten Sie, daß die Befehle in hexadezimaler Form eingegeben werden und vor einer Zahl oder Adresse das Zeichen "$" eingegeben werden muß!

Beispiel:
"A $4000 LDA #$01"
". $4004 JSR $5000"
". $4007 RTS"

Speicherbereiche kopieren:
Mit dem Befehl "T (ADR1) (ADR2) (ADR3)" kann ein beliebiger Speicherbereich kopiert werden.

Beispiel: "T 1000 2000 3000" kopiert die Inhalte der Speicherstellen $1000-52000 nach $3000-$4000.

Bereiche abspeichern:
Zweifellos ist dies einer der wichtigsten Befehle. Was nützt das schönste Maschinenspracheprogramm, wenn es nicht abgespeichert werden kann. Der zugehörige Befehl hat die Syntax

’S"(NAME)", (GERÄT), (ANFANGSADRESSE), (ENDADRESSE + 1)’.

Beispiel: ’S"TEST",01,1000,2001’ speichert den Bereich $1000-$2000 unter dem Namen "TEST" auf Cassette.

Programm laden:
Dieser Befehl hat die Syntax ’L"(NAME)",(GERÄT)’.

Beispiel: ’L"TEST",01’ lädt das Programm "TEST" von Cassette an jene Adresse, an der es sich vor dem Abspeichern befand.

Zahlen umrechnen:
Der integrierte Monitor kann beliebige Zahlenumwandlungen zwischen dem Dezimal-, dem Hexadezimal- und dem Binärsystem vornehmen. Wenn Sie eine Zahl in einem dieser Formate eingeben, wird Ihnen die Darstellung in den beiden anderen Zahlensystemen ausgegeben.

1. Eingabe einer Dezimalzahl: "+ 1000"
2. Eingabe einer Hexadezimalzahl: "$1000
3. Eingabe einer Binärzahl: "%10111011"

Beispiel: "+255" führt zur Ausgabe von "$FF" und "%11111111".

Monitor verlassen:
Durch die Eingabe von "X" wird der Monitor verlassen.

Dies waren zwar bei weitem nicht alle, jedoch die wichtigsten Befehle, über die der integrierte Monitor verfügt. Ein Tip zum Abschluß: Oftmals möchte man eine Ausgabe (in hexadezimaler Form oder dissasembliert) statt auf dem Bildschirm auf einem Drucker ausgeben lassen. Dies ist möglich, obwohl der Monitor keinen speziellen Befehl besitzt. Die Vorgehensweise:


1. Eingabe von "OPEN 4,4:CMD 4"
2. Monitor aufrufen mit "MONITOR"
3. Befehl eingeben, zum Beispiel "D 1000 1100"
4. Monitor verlassen mit "X"
5. Ausgabe beenden mit "PRINT#4:CLOSE 4"

Im ersten Schritt wird ein Kanal zum Drucker geöffnet und alle weiteren Ausgaben werden auf diesen Kanal "gelegt", auch die folgenden Monitorausgaben werden nun auf dem Drucker ausgegeben.

Sie verfügen nun über das notwendige "Handwerkszeug" zur Programmierung des C16 in Maschinensprache. Vielleicht wird es eines Tages auch einen vernünftigen Assembler geben (der in Monitoren integrierte Assembler ist nur sehr bedingt für umfangreichere Programme geeignet), so daß auch große Text- oder Dateiverwaltungsprogramme für den C16 vollständig in Assembler geschrieben werden können. Momentan muß hierzu noch der Umweg über einen anderen Rechner genommen werden.

Fehler[Bearbeiten | Quelltext bearbeiten]

Meinung[Bearbeiten | Quelltext bearbeiten]

Sven.petersen: Mir scheint dieses Buch so eine "Pflichtarbeit" zu sein, die eben geschrieben werden musste, weil es "Tips & Tricks" auch schon für die anderen Commodore Rechner gibt. Die "wichtigsten Zeropage-Adressen" beinhalten genau drei Bereiche, ähnlich ist es um die Betriebsystemroutinen bestellt. Der "Wert" eines 64 Tips & Tricks wird bei Weitem nicht erreicht.

Weblinks[Bearbeiten | Quelltext bearbeiten]