Magic Disk 64

home to index to html: MD9104-KURSE-CIA-KURS_TEIL_6-4.html
Vierter Teil:                           
Im ersten Teil von NEWIRQ wird der  Dar-
stellungsmodus  geprüft und, abhängig da
von, entweder sieben  oder  acht  Sprite
eingeschaltet. Im AM/PM-Modus wird das 8
Sprite  nämlich  zur  Darstellung  von A
oder PM verwendet.                      
Als Nächstes prüft NEWIRQ, was die Inter
ruptquelle des IRQs war. Ist Bit 2 im IC
von  CIA1  gesetzt,  so war es der Alarm
IRQ. Wenn dieser  der  Auslöser  war,  s
wird  der  voreingestellte Piepton einge
schaltet und für die Dauer der  folgende
Warteschleife gespielt. Anschließend wir
er  wieder  abgeschaltet und NEWIRQ fähr
mit der Zeitausgabe fort. Sicherlich  is
die  Tonausgabe  mit  einer Warteschleif
nicht unbedingt die eleganteste  Art  un
Weise  dieses  Problem  zu  lösen, jedoc
genügt Sie für den Zweck als Beispielpro
gramm. Sehen Sie sich doch einfach gefor
dert,  und  versuchen  Sie  eine   eigen
Alarm-Routine  zu  schreiben,  die läuft
ohne den IRQ zu verzögern.              
Es folgt nun die Routine TIMEREF, die di
Ausgabe der Uhrzeit erledigt. Hierzu müs
sen wir zunächst einmal herausfinden,  o
die   Stunden  in  AM/PM-  oder  in  24h
Darstellung erscheinen soll. Demensprech
end  muß nämlich dann die Stundenzahl mo
difiziert werden. Das geschieht am Anfan
von TIMEREF. Das Sprite  für  AM/PM  wir
übrigens  immer  mitgesetzt,  selbst wen
die  24h-Darstellung  gewählt  wurde.  I
diesem Fall ist es jedoch nicht zu sehen
weil es am Anfang von NEWIRQ abgeschalte
wurde.                                  
Wenn das Programm herausfindet,  daß  di
Uhr  12 Uhr AM anzeigt, was ja nach unse
rer  Definition  keine  logische  Uhrzei
ist,  so lädt es 0 in den Akku, um späte
bei der Ausgabe ein "00" als  Stunde  er
scheinen zu lassen.                     
Wenn es Nachmittag  ist,  stellt  TIMERE
zunächst einmal den Spritepointer für da
AM/PM-Sprite  auf  "PM",  indem es das X
Register um 1 erhöht. Anschließend lösch
es das 7. Bit der Stundenzahl, da  diese
ja  nur  angibt,  daß Nachmittag ist, un
später bei der Umwandlung in eine  Ziffe
stören  würde. Wenn die AM/PM-Darstellun
aktiv ist, wird direkt zu dieser  Umwand
lung  weiterverzweigt.  Andernfalls prüf
TIMEREF, ob es nicht  gerade  12  Uhr  P
ist, da bei der 24h-Darstellung in diese
Fall ja NICHT der Wert 12 zu der Stunden
zahl addiert werden soll. Ist dies  nich
der  Fall, so müssen wir den Wert 12 doc
noch zur Stundenzahl hinzuaddieren, wobe
wir den BCD-Modus des  Prozessors  benut
zen.  Nun  ist  die Stundenzahl berechne
und kann an die  Umwandlungsroutine  wei
tergegeben werden.                      
Der  restliche  Teil  von  NEWIRQ erklär
sich von selbst.                        
Damit  wissen  Sie nun, wie man eine CIA
Echtzeituhr  programmiert.  Die   übrige
Programmteile von CLOCK (die schon erwän
ten Routinen SETIT und GETNUM) möchte ic
hier aussparen, da sie mit dem Thema  un
seres  Kurses wenig zu tun haben und all
gemeingültige Probleme lösen. Nichts  de
sto  trotz  können Sie sie sich ja einma
im Source-Code-Listing auf dieser MD  an
schauen.                                
Probieren Sie CLOCK doch einmal aus. Wen
Sie  es  starten  so  werden Sie zunächs
nach Uhr und Alarmzeit gefragt. Anschlie
ßend  können Sie die Uhr am unteren Bild
schirmrand  beobachten.  Wenn  Sie  CLOC
starten,  so  müßte  die Zeit in der 24h
Darstellung erscheinen, da die  Speicher
stelle 3 in der Regel einen Wert ungleic
0 enthält. Schalten Sie dann doch einfac
einmal mit "POKE 3,0" und "POKE 3,1" zwi
schen den beiden Modi um. Sie werden  se
hen,    daß    CLOCK   durch   die   IRQ
Programmierung immer direkt auf Ihre Ein
gaben reagiert.                         
So. Das war es dann mal wieder für diese
Monat.  Sie  können  ja  einmal versuche
eine noch komfortablere Uhr  zu  program
mieren - wie es geht wissen Sie jetzt ja
Wie  wäre es zum Beispiel mit einer Funk
tion, die stündlich  einen  Piepton  aus
gibt?  Oder sogar gleich eine ganze Reih
von  Intervall-Tönen,  wie  man  es   vo
Quartz-Weckern her kennt?               
Ich hoffe, Ihnen damit einige Öbungsanre
gungen  gegeben zu haben und verabschied
mich nun bis nächsten Monat. Dann  werde
wir  uns mit einem der Hauptanwendungsge
biete der CIAs beschäftigen: der Ein- un
Ausgabe.                                
Bis dahin wünsche ich Ihnen viel Zeit un
Piep,                                   
                    Ihr Uli Basters (ub)



Valid HTML 4.0 Transitional Valid CSS!