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.
