**1. Zur Programmierung in ASSEMBLER** * 1.1 Warum nicht bei BASIC bleiben? * 1.2 Hinweise zum Gebrauch des Buches * 1.2.1 Hardware/Software-Voraussetzungen * 1.2.2 Aufbau der Beispielprogramme * 1.2.3 Noch ein guter Tip * 1.3 Schreibweisen - Vereinbarungen **2. Bewegte Bildschirmobjekte** * 2.1 Ein Beispiel: "Wendezeigerpinsel", ein Richtungsanzeiger * 2.1.1 Zielsetzung * 2.1.2 Anschluß eines Joysticks * 2.1.3 Aufbau des Programms "Ol-pinsel" * 2.1.4 ASSEMBLER-Beispiel für "Ol-pinsel" * 2.1.5 Vorbereitungen, Initialisierungen * 2.1.6 Zusammenstellung der verwendeten Labels * 2.2 Variieren des Moduls * 2.2.1 Variable Laufgeschwindigkeit * 2.2.2 Bildschirmobjekte austauschen * 2.3.3 Bildschirmgestaltung * 2.3 Abweichungen für die 40/80XX-Geräte * 2.4 Erweiterungs- und Übungsaufgaben **3. Erweiterung der Interrupt-Routine - ein Beispiel** * 3.1 Die IR-Routine * 3.2 Erzeugung eines Taktes mit der IR-Routine * 3.3 Wichtige Adressen des "04-Taktmodul" * 3.4 Ablauf von "04-taktmodul" * 3.5 ASSEMBLER-Programm "04-taktmodul" * 3.6 Abstimmung des Taktes * 3.7 Eine kleine Testroutine zur Bestimmung der Taktfrequenz * 3.8 Einstellen des IRQ-Vektors **4. Zahlen, Variablen - Formate** * 4.1 Rechnen mit Ganzzahlen (Integer-Zahlen) * 4.1.1 Rechnen mit positiven Ganzzahlen * 4.1.2 Negative Ganzzahlen * 4.1.3 Subtrahieren von Integerzahlen im positiven Bereich * 4.1.4 Subtraktion mit beliebigen Integerzahlen * 4.1.5 Höhere Rechenarten mit Integerzahlen * 4.1.6 Integermultiplikation mit INTMUL * 4.2 Arbeiten mit reellen Zahlen * 4.2.1 Formate für reelle Zahlen * 4.2.2 Übernehmen von gespeicherten Zahlen mit MEMFAC * 4.2.3 Erzeugung von reellen Zahlen * 4.3 Zahlenumwandlungen * 4.3.1 Integer- in Realzahlformat mit INTFLP * 4.3.2 Reelle Zahl in Integerzahl mit FLPINT * 4.3.3 Umwandlung eines Strings in eine reelle Zahl mit STRFAC * 4.3.4 Umwandlung einer Zahl in einen String mit FLPSTR * 4.3.5 (A)-Inhalt in ASC-Code mit BYTHEX * 4.3.6 ASC-Code in Byte umwandeln mit HEXBYT * 4.3.7 Positive Integerzahl in Realzahl mit ADRFLP **Umwandlungs-ROM-Routinen (Zusammenstellung)** **5. Arithmetik mit ROM-Routinen** * 5.1 Durch 10 dividieren mit FDIV1O * 5.2 Mit 10 multiplizieren * 5.3 Addieren des Werts 0.5 mit ADDO.5 * 5.4 Addieren beliebiger Zahlen mit ADD * 5.5 Addieren beliebiger Zahlen mit M-ADD * 5.6 Subtrahieren mit M-SUB * 5.7 Vorzeichenwechsel mit FACMIN * 5.8 Betrag einer Zahl mit FACABS * 5.9 Multiplizieren mit M-MULT * 5.10 Division mit M-DIV * 5.11 Kehrwert bilden mit M-DIV * 5.12 Quadratwurzel ziehen mit SQRFAC * 5.13 Potenzieren und Radizieren mit POTRAD * 5.14 Logarithmieren mit. LOGNAT * 5.15 Exponentialrechnen mit EHOCHF * 5.16 Erzeugen einer Zufallszahl mit ZUFALL * 5.17 Winkelfunktionen mit SINUS, COSIN, TANG * 5.18 Umkehrung der Winkelfunktionen mit ARCTAN * 5.19 Weitere Arcusfunktionen mit ARCTAN * 5.20 Polynomauswertung mit POLNOM * 5.21 Wertetabellen für Funktionen mit POLNOM * 5.22 Vergleichsoperationen mit CMPFAC * 5.23 Vorzeichenprüfung mit SGNFAC **Arithmetik-ROM-Routinen (Zusammenstellung)** **6. Bildschirmoperationen** * 6.1 Ausgabe einer Integerzahl mit INTOUT * 6.2 Ausgabe einer reellen Zahl mit FLPOUT * 6.3 Ausgabe eines ASCI I-Zeichens mit CHROUT (BSOUT) * 6.4 Vorbereitete Zeichenausgaben * 6.5 Cursorposition festlegen * 6.5.1 Cursorposition C64 * 6.5.2 Cursorposition 40/80XX * 6.6 Ausgabe eines Strings mit STROUT * 6.7 Umwandlung des FAC-Inhalts in einen String mit FACSTR * 6.8 Anwendung: eine PRINT USING-Routine * 6.8.1 Ablauf-Struktur der PRINT USING-Routine * 6.8.2 Struktogramm zur PRINT USING-Routine * 6.8.3 ASSEMBLER-Modul "51-printusing" * 6.9 Ausgabe von Hexzahlen * 6.9.1 Byte in der Hexform ausgeben mit BYTOUT * 6.9.2 Vierstellige Hexzahl (Adresse) ausgeben mit ADROUT * 6.9.3 Zwei Zeichen ausgeben mit OUT2 * 6.10 Bewegungssimulation - eine Kompaßanzeige **Ausgabe-Routinen (Zusammenstellung)** **7. Eingabe-ROH-Routinen** * 7.1 Eingabe eines Zeichens über die Tastatur mit GETIN * 7.2 Künstlicher Cursor mit GETIN und CHROUT * 7.3 Zahleneingabe (reell) mit GETIN und STRFAC * 7.4 Eingabe mit BASIN * 7.5 Eingabe einer Zeile mit INLINE * 7.6 Eingabe von Hexzahlen mit HEXINB und HEXINA **Eingabe-ROM-Routinen (Zusammenstellung)** **8. Verwaltung der Variablen** * 8.1 Überblick über die BASIC-Variablen * 8.1.1 Lage der Variablen im RAM * 8.1.2 Variablen-Arten * 8.1.3 Struktur der Variablen * 8.2 Einrichten einer Variablen * 8.2.1 Festlegen des Bereichsanfangs * 8.2.2 Suchen oder Einrichten einer Variablen mit PTRVAR **9. Bedienung von Peripherie** * 9.1 Datentransfer über den IEC- bzw. den seriellen Bus * 9.2 Umschaltungen des seriellen bzw. des (IEC)-Bus * 9.2.1 Datenübernahme mit TALK * 9.2.2 Datenausgabe mit LISTEN * 9.2.3 Beispiel: "druckerausgabe" mit LISTEN, BSOUT, CLALL * 9.2.4 Modul "druckex" : Drucker als Schreibmaschine * 9.2.5 Vorbereitung von Datenübertragungen mit OPEN * 9.2.6 Ausgabevorbereitung mit CHKOUT * 9.2.7 Eingabevorbereitung mit CHKIN * 9.2.8 Standard-Ein/Ausgabe herstellen mit CLRCH * 9.2.9 Dateien schließen mit CLALL * 9.2.10 Schließen einer Datei mit CLOSEA und CLOSEL * 9.3 Vereinfachungen zur Dateibehandlung * 9.4 Behandlung von Dateien - Beispiele * 9.5 Arbeiten mit SEQ-Dateien * 9.5.1 Öffnen einer Datei * 9.5.2 Beispiel: Schreiben mit CHKOUT und BSOUT * 9.5.3 Beispiel: SEQ-Lesen mit CHKIN und BASIN * 9.5.4 Beispiel: Schließen der Datei mit CLOSEA und CLOSEL * 9.5.5 Verknüpfen der SEQ-Routinen * 9.6 REL-Dateien - Schreiben/Lesen mit OUTBUS/INBUS * 9.6.1 REL-Dateien auf dem C64 * 9.6.2 REL-Dateien auf 40er- und 80er-Geräten * 9.7 Laden eines Programmes mit LOAD und LOADXX * 9.8 Anwendung: Modul zum Nachladen von Programmen * 9.8.1 Das Maschinenprogramm "81-1oadmodul" * 9.8.2 BASIC-Hilfsprogramm zur Übernahme von Maschinenteilen * 9.9 Modul "84-quickdirector" mit TALK, INBUS, UNTALK * 9.10 Modul "85-printdirector" (Floppy-Drucker) * 9.11 Direktzugriffe auf Floppy: Modul "86-fastdisk" **Adressen und ROM-Routinen zur Ein/Ausgabe** **10. Maschinenmodule in BASIC-Programmen** * 10.1 Übernahme von BASIC-Parametern * 10.2 Zeichen aus dem BASIC-Text holen mit CHRGET und CHRGOT * 10.3 Byte-Auswertung mit GETBYT und VALBYT * 10.4 Eine Anwendung: PRINT AT-Routine mit Fehlermeldung * 10.5 Zu den Fehlermeldungen * 10.6 Zur Schreibweise der BASIC-Befehle * 10.7 Auswertung mit VAREAL * 10.8 Auswertung mit VALKLA * 10.9 Auswertung von Integerzahlen mit VALINT und INTADR * 10.10 Auswertung mit VALPAR, VALSTR, PARFLG und TYPFLG * 10.11 Übernahme einer BASIC-Variablen mit GETVAR * 10.12 Ein vielseitiges Modul: "98-onstring" * 10.13 "99-onstring" für 40/80XX-Geräte * 10.14 Verknüpfen von Modulen - zwei Anwendungen * 10.15 Modulverknüpfung mit einer Sprungleiste **BASIC-Text-Routinen und -adressen (Zusammenstellung)** **11. Diverse ROM-Hilfen - Anwendungen** * 11.1 BASIC-Start vom Maschinenprogramm aus mit RUN * 11.2 Warmstart mit MGOTO ab einer bestimmten Zeilennummer * 11.3 Startadresse einer BASIC-Zeile suchen mit BLINAD * 11.4 Umschalten von Text- auf Graphikmodus * 11.5 Abfrage der STOP-Taste mit STOPRY und STOPO * 11.6 Sprung in den READY-Modus mit MREADY * 11.7 Verschieben von RAM-Bereichen mit TRABLO * 11.8 Abspeichern eines Datenbereichs mit MSAVE * 11.9 Laden eines Programms mit veränderter Startadresse * 11.10 Speichern eines Datenblocks mit variabler Anfangsadresse **12. ASSEMBLER-Kurzschule** * 12.1 Die Register des 65XX-Prozessors * 12.2 Das Prozessor Statusregister P * 12.3 Beeinflussung der Flags durch Befehle * 12.4 Der Befehlssatz in ASSEMBLER * 12.4.1 Eingabebefehle (Ladebefehle) * 12.4.2 Ausgabebefehle (Speicherbefehle) * 12.4.3 Arithmetische Verknüpfungen * 12.4.4 Logische (bitweise) Verknüpfungen * 12.4.5 Verschiebebefehle (bitweise) * 12.4.6 Vergleichsbefehle * 12.4.7 Transportbefehle zwischen den Registern * 12.4.8 Sprungbefehle * 12.4.9 Beeinflussung der Flags des Statusregisters * 12.4.10 Lückenfüller **13. ROM-Routinen - thematisch, mit Kurzbeschreibung** **14. ROM-Routinen - alphabetisch** **15. Wichtige Adressen - alphabetisch** **16. Stichwort verzeichnis** **17. Übersicht weiterer Markt&Technik-Bücher**