Elektronik-Dachbude |
Das GMC-4-Buch ist
zwar mittlerweile schon fast ein Jahr alt, aber es macht mir immer noch Spaß
mit dem kleinen Computer zu spielen. Dennoch fallen mir immer wieder Dinge auf,
die man hätte besser machen können. Das
geht wohl nicht nur mir so, denn vor kurzen erreichte mich die Mail eines Lesers,
der neben seiner Begeisterung auch ein paar Anmerkungen formuliert hat.
An dieser Stelle vielen Dank Arnd Duschek, der sich die Mühe gemacht hat das ganze Buch durchzuarbeiten und Verbesserungsvorschläge zu formulieren.
Anmerkungen
zum „GMC-4 Spielecomputer“-Buch
Kapitel 2.2
Klingeltöne und mehr
Kapitel 3.2
Das erste Programm
Kapitel 3.5
Ein Speicher-Rechner
Kapitel 3.7
LED- und Soundausgabe
Kapitel 3.8
Der bedienerfreundliche Rechner
Kapitel 4.2
Der Countdown läuft
Kapitel 4.5
Der automatische Komponist
S.22 Mitte
„…eine Dauer, die als
Vielfaches von 0,1 Sekunden angegeben wird.“
Das stimmt so nicht. Vielmehr stehen die für die Dauer
möglichen Werte noch nicht einmal in einem linearen Verhältnis zueinander, sondern
repräsentierten konkrete Längen aus der Notenlehre:
Wert |
Dauer |
0 |
sechzehntel Note |
1 |
achtel Note |
2 |
achtel Note, punktiert |
3 |
viertel Note |
5 |
viertel Note, punktiert |
7 |
halbe Note |
B |
halbe Note, punktiert |
F |
ganze Note |
„Ein A markiert den
Start, dann…“
Vorne muss kein A stehen, sondern es sind die Werte 0...F zulässig,
die das Gesamttempo der Melodie bestimmen!
S.46 Mitte
„Starten des
Programms: <RESET> <1> <RUN>“
Das stimmt natürlich. Aber für Programmier-Anfänger ist es
wirklich wissenswert, dass man ein Programm auch schrittweise ausführen kann.
Es gibt folgende Möglichkeiten:
Tastenkombination |
Modus |
LEDs zeigen Adresse an |
Tasten-Ton |
Reset, 1, Run |
Run |
Nein |
Nein |
Reset, 2, Run |
Run |
Ja |
Nein |
Reset, 5, Run |
Step |
Nein |
Nein |
Reset, 6, Run |
Step |
Ja |
Ja |
Im STEP-Mode wird das Programm dann mittels der INCR-Taste
schrittweise ausgeführt.
S.53
Programm-Listing (nur
verbesserte Zeilen):
Adresse |
Code |
Befehl |
Daten |
Kommentar |
02 |
5 (statt 6) |
|
|
|
06 |
F0D (statt F0C) |
|
0D (statt 0C) |
|
0D (statt 0C) |
E0 (statt 0E) |
|
|
|
Der Jump-Befehl (F0A) ab Adresse 0A verbraucht 3 Nibbles in
den Adressen 0A, 0B und 0C, weshalb der nachfolgende CAL bei 0D (und eben nicht
bei 0C) beginnt.
„…geht es weiter bei
Adresse 0C, sonst bei Adresse 0A, …“
Das muss verbessert werden zu:
„…geht es weiter bei Adresse 0D, sonst bei Adresse 09, …“
S.56
Programm-Listing (nur
verbesserte Zeilen):
Adresse |
Code |
Befehl |
Daten |
Kommentar |
00 |
|
|
(statt 5) |
|
S.57
„Wenn diese Rechnung
einen Übertrag verursacht, gibt es einen Piepton und die sechste LED leuchtet
auf.“
Leider bleibt diese LED ab diesem Zeitpunkt dauerhaft
eingeschaltet, selbst wenn man danach wieder eine Addition ohne Übertrag
ausführt. Hinter Adresse 09 (Befehl A0) könnte man daher noch ein TIY 6 und ein
CAL RSTR einfügen! Natürlich muss dann aber auch der JUMP-Befehl an Adresse 06
angepasst werden, weil sich die Zieladresse 0D durch das Einfügen der Befehle
nach hinten verschiebt.
S.60
Programm-Listing (nur
verbesserte Zeilen):
Adresse |
Code |
Befehl |
Daten |
Kommentar |
03 |
|
|
02 (statt 00) |
Springe nach 02 (statt nach 00) |
0F |
|
|
(statt 5) |
|
S.65
Programm-Listing (nur
verbesserte Zeilen):
Adresse |
Code |
Befehl |
Daten |
Kommentar |
0B |
|
|
|
Y=Y+1 (statt Y=A+1) |
S.66
Programm-Listing (nur
verbesserte Zeilen):
Adresse |
Code |
Befehl |
Daten |
Kommentar |
0B |
|
|
|
Y=Y+F bzw. Y=Y-1 (statt Y=A+F, A=A-1) |
Der JUMP an Adresse 12 ist überflüssig, da er einfach nur
zur nächsten Zeile springt.
S.67 unten
„Sie benötigen aber
eine 9 und tippen diese ein, …“
Das muss heißen: „Sie benötigen aber ein A und tippen dieses
ein, …“
„Nun folgen mehrere
Adressen, an denen schon das Gewünschte steht.“
Das stimmt nicht: An Adresse 03 muss die 9 des Vorprogramms
noch durch eine 7 ersetzt werden.
S.70
Programm-Listing (nur
verbesserte Zeilen):
Adresse |
Code |
Befehl |
Daten |
Kommentar |
03 |
|
|
|
Austausch A mit B, Y mit Z (statt „Tastendruck…“) |
04 |
|
|
|
Hierhin gehört der Kommentar, der fälschlicherweise bei 03 stand
(„Tastendruck…“) |
08 |
|
|
|
Austausch A und B (statt A und Z) |
10 |
|
|
|
Austausch A und B (statt A und Z) |
18 |
|
|
|
Austausch A und B (statt A und Z) |
S.71 oben
„…wird vorübergehend
das Z-Register verwendet.“
Das muss heißen: „…wird vorübergehend das B-Register
verwendet.“
S.73 oben
„Beim Start nach einem
Reset hat das Y-Register den Wert 0.“
Es hat den Wert F !
Beweis durch ein kleines Programm mit den Anweisungen CY und
AO.
S.73 Mitte
„Das A-Register
beginnt mit 0. Minus 1 ergibt F, beim nächsten Mal E, dann D usw. bis 0.“
Korrekt ist:
„Das A-Register beginnt mit F. Minus 1 ergibt E, beim
nächsten Mal dann D usw. bis 0.“
S.74
Programm-Listing (nur
verbesserte Zeilen):
Adresse |
Code |
Befehl |
Daten |
Kommentar |
00 |
|
|
0 (statt 1) |
|
17 |
EC (statt Ec) |
|
|
|
1F |
|
|
13 (statt 1313) |
|
S.77
Programm-Listing (nur
verbesserte Zeilen):
Adresse |
Code |
Befehl |
Daten |
Kommentar |
14 |
|
|
14 (statt 13) |
|
S.80
Programm-Listing (nur
verbesserte Zeilen):
Adresse |
Code |
Befehl |
Daten |
Kommentar |
03 |
|
|
|
RAM(50+Y)=A (statt
A=RAM(50+Y) |
S.81
Die JUMP-Befehle an den Adressen 31 und 38 müssen vermutlich
nach 12 (und nicht nach 10) springen, weil an Adresse 10 nämlich gar kein
Befehl beginnt!
S.94
Zu Code 7 muss es korrekt heißen:
A von RAM-Adr(50+Y) subtrahieren (statt RAM-Adr(50+Y) von A subtrahieren).
S.96
Wichtig wäre zu erwähnen, dass sämtliche Unterprogramme nur
ausgeführt werden, wenn vorher das Flag gesetzt ist!
Außerdem gibt es noch die Codes EE (Befehl CAL DEM-) und EF
(Befehl CAL DEM+), die mit dezimaler(!) Subtraktion und Addition zu tun haben.
Der Befehl CAL DEM+ ist sogar sehr mächtig, weil er beliebig viele Überträge
auf höherwertige Ziffern selbst managed. Dennoch sind die Befehle relativ
kompliziert zu erklären. Man findet aber Näheres im Internet.