Das Betriebssystem des Commodore 64
Das Betriebssystem des Commodore 64 | |||
---|---|---|---|
Sprache | deutsch | ||
Autor(en) | Wolfgang Wester | ||
Verlag | Data Becker | ||
Jahr | 1985 | ||
ISBN | ISBN 3-89011-136-X | ||
Neupreis | |||
Datenträger | |||
Seitenzahl | 177 | ||
letzte Auflage | |||
Genre | Programmieren | ||
Information |
Buchrückseite[Bearbeiten | Quelltext bearbeiten]
DAS STEHT DRIN:
79 nützliche Maschinenroutinen des Betriebssystems, die der COMMODORE-64 Programmierer häufig benötigt, werden nach folgenden Gesichtspunkten ausführlich erläutert:
Startadresse der Routine, Allgemeines, Einsprungbedingungen und Zustand des Akkus, der Register und der Flags. Zum besseren Verständnis sind zusätzlich viele Beispielprogramme und Programmablaufpläne vor handen.
Dieses “Routinenbuch“ eignet sich außerdem hervorragend als Ergänzung zu einem kommentiertem ROM-Listing (z.B. 64 INTERN), um den Einstieg ins Betriebssystem zu erleichtern. Es wird schnell zum unverzichtbaren Hilfsmittel für jeden Maschinenspracheprogrammierer!
UND GESCHRIEBEN HAT DIESES BUCH:
Wolfgang Wester ist Diplom-Ingenieur und hatte dieses Buch ursprünglich nur als Nachschlagewerk und Arbeitsbuch für seine eigene Programmiertätigkeit verfaßt.
Inhaltsverzeichnis[Bearbeiten | Quelltext bearbeiten]
Inhaltsverzeichnis
1. Einleitung ............................................... l 1.1 Kurze Übersicht zur Maschinenprogrammierung des 6510 .... 3 1.2 Kurze Übersicht zu Programmablaufplänen ................. 15 1.3 Der ASCII-Code .......................................... 19 1.4 Die Fliesskomma-Arithmetik des VC-64 .................... 25 2. Beschreibung der Routinen 1. Routine: Zeichen holen ................................... 28 2. Routine: Speicherinhalte verschieben ..................... 3l 3. Routine: Fehlermeldung ausgeben .......................... 34 4. Routine: Eingabe-Warteschleife ........................... 38 5. Routine: Eingabe einer Zeile per Tastatur ................ 40 6. Routine: Speicheradresse einer Programmzeile berechnen ....................................... 43 7. Routine: Basic-Befehl NEW ................................ 48 8. Routine: Basic-Befehl CLR ................................ 50 9. Routine: CHRGET-Zeiger auf Anfang des Basic- Speichers stellen ............................... 52 10. Routine: Basic-Befehl LIST .............................. 53 11. Routine: Basic-Befehl ausführen ......................... 56 12. Routine: Zeilennummer holen und in Adressformat umwandeln ...................................... 6l 13. Routine: String ausgeben ................................ 63 14. Routine: Ausgabe eines Leerzeichens ..................... 68 15. Routine: Ausgabe Cursor rechts .......................... 69 16. Routine: Ausgabe eines Fragezeichens .................... 70 17. Routine: Ausgabe eines ASCII-Zeichens ................... 7l 18. Routine: Beliebigen Ausdruck holen ...................... 72 19. Routine: Prüft auf Klammer zu ")" ....................... 73 20. Routine: Prüft auf Klammer auf "(" ...................... 74 21. Routine: Prüft auf Komma ................................ 75 22. Routine: Prüft auf Buchstabe ............................ 76 23. Routine: 16-Bit-Integer-Zahl in A/Y in Fliesskomma- zahl umwandeln ................................. 77 24. Routine: Holt Byte nach X-Register ...................... 79 25. Routine: Holt 16-Bit-Wert und einen 8-Bit-Wert .......... 82 26. Routine: 1.Subtraktion .................................. 91 27. Routine: 2.Subtraktion .................................. 92 28. Routine: 1.Addition ..................................... 93 29. Routine: 2.Addition ..................................... 94 30. Routine: 1.Multiplikation ............................... 95 31. Routine: 2.Multiplikation ............................... 96 32. Routine: Fliesskommazahl nach ARG bringen ............... 97 33. Routine: 1.Division ..................................... 99 34. Routine: 2.Division ..................................... 100 35. Routine: Fliesskommazahl nach FAC bringen ............... 101 36. Routine: FAC nach Akku #4 übertragen .................... 103 37. Routine: FAC nach Akku #3 übertragen .................... 104 38. Routine: FAC nach Variable übertragen ................... 105 39. Routine: ARG nach FAC übertragen ........................ 107 40. Routine: FAC nach ARG übertragen ........................ 108 41. Routine: Vorzeichen von FAC holen ....................... 109 42. Routine: Vergleich KONSTANTE(A/Y) mit FAC ............... 110 43. Routine: Umwandlung Fliesskomma nach Integer ............ 111 44. Routine: Umwandlung ASCII nach Fliesskommaformat ........ 112 45. Routine: Positive Integerzahl in A/X ausgeben ........... 113 46. Routine: Umwandlung FAC nach ASCII-Format ............... 114 47. Routine: SQR-Funktion ................................... l15 48. Routine: 1.Potenzierungsroutine ......................... 116 49. Routine: 2.Potenzierungsroutine ......................... 117 Programmbeispiele zu den Arithmetikroutinen ................. 118 50. Routine: Ein Zeichen ausgeben ........................... 125 51. Routine: Ein Zeichen holen .............................. 127 52. Routine: Zeichen aus Tastaturpuffer holen ............... 129 53. Routine: 1.SAVE-Routine ................................. 130 54. Routine: VERIFY-Routine ................................. 132 55. Routine: LOAD-Befehl .................................... 133 56. Routine: OPEN-Befehl .................................... 135 57. Routine: CLOSE-Befehl ................................... 138 58. Routine: Parameter für LOAD und SAVE holen .............. 139 59. Routine: Parameter für OPEN und CLOSE holen ............. 14l 60. Routine: COS-Funktion ................................... 143 61. Routine: SIN-Funktion ................................... 144 62. Routine: TAN-Funktion ................................... 145 63. Routine: ATN-Funktion ................................... 146 64. Routine: Cursor setzen/holen ............................ 147 65. Routine: Bildschirm Reset ............................... 149 66. Routine: Bildschirm löschen/Cursor Home ................. 150 67. Routine: Videocontroller initialisieren ................. 151 68. Routine: Zeichen und Farbe auf Bildschirm setzen ........ 152 Programmbeispiel zu den "Cursor-Routinen" ................... 153 69. Routine: Basic-Ram-Ende setzen/holen .................... 161 70. Routine: Untergrenze Basic-Ram holen/setzen ............. 162 71. Routine: Fileparameter setzen ........................... 163 72. Routine: Filenamenparameter setzen ...................... 165 73. Routine: 2.OPEN-Routine ................................. 167 74. Routine: 2.CLOSE-Befehl ................................. 169 75. Routine: Eingabegerät setzen ............................ 170 76. Routine: Ausgabegerät setzen ............................ 171 77. Routine: Ein/Ausgabekanäle zurücksetzen ................. 172 78. Routine: 2.LOAD-Befehl .................................. 173 79. Routine: 2.SAVE-Routine ................................. 175 Literaturhinweis ............................................ 177
Leseprobe[Bearbeiten | Quelltext bearbeiten]
(1. Auflage - Seite 112f: Kapitel "2. Beschreibung der Routinen"; Unterkapitel "44. Routine: Umwandlung ASCII nach Fliesskommaformat" und "45. Routine: Positive Integerzahl in A/X ausgeben")
44. Routine: Umwandlung ASCII nach Fliesskommaformat
Startadresse: | $BCF3 (Hex.) |
48371 (Dez.) |
Allgemeines Mit dieser Routine können ASCII-Zeichen in das Fliesskommaformat des VC64 umgewandelt werden. Damit ist vor allem die exponentielle Zahlendarstellung gemeint.
Beispiele für die exponentielle Darstellung:
456.789E-3 | --> | .456789 |
23456E3 | --> | 23456000 |
Vorteil
Diese Zahlendarstellung ist wesentlich komfortabler als die Integerdarstellung.
Einsprungbedingungen
Der Akku muss den ersten umzuwandelnden ASCII-Wert enthalten.
Außerdem muss der CHRGET-Zeiger ($7A/$7B) auf das nächste ASCII-Zeichen zeigen.
$7A | --> | Low-Byte |
$7B | --> | High-Byte |
45. Routine: Positive Integerzahl in A/X ausgeben
Startadresse: | $BDCD (Hex.) |
48589 (Dez.) |
Allgemeines
Durch diese Routine wird eine positive Integerzahl auf dem Bildschirm ausgegeben. Mit dem Inhalt von $9A bestimmt man das Ausgabegerät (siehe 2.13 ; Tabelle für die verschiedenen Ausgabemedien). Wenn Sie als Ausgabemedium z.B. den Drucker ins Auge gefasst haben, reicht es natürlich nicht, den Inhalt von Speicherzelle $9A zu verändern. Sie benötigen dann zusätzliche Unterprogramme zum Öffnen und vorbereiten der I/O-Kanäle.
Einsprungbedingungen
Der Akku muss das Low-Byte der Integerzahl enthalten.
Das X-Register das High-Byte.