| Lösungsvorschläge zu den Praktischen Übungen | Anhang |
Zu S3.1-1:
Die Ansteuerung der "Control"-Eingänge C3-C0 geschieht durch die Ausgänge eines 2-auf-4-Demultiplexers. Die Adreßsignale A0 und A1 dienen zur Selektion eines seiner 4 Ausgänge.

Zu S3.1-2:
(Hinweis: Zur besseren Lesbarkeit werden hier die Indizes der Adreßleitungen tiefgestellt, also z.B. hier A15 anstelle A15 wie im Schaltplan.)
CS selektiert damit den Adreßbereich $F000 - $F03F. Bild 3.1-1 können Sie entnehmen, daß in diesem Bereich die Adressen aller Peripherie-Komponenten untergebracht sind.
Yi = 0 genau dann, wenn für die Gate-Eingänge G1, G2A, G2B und für die Auswahleingänge (Select) A,B,C die folgenden Bedingungen gelten:
G1 = 1, G2A = 0, G2B = 0, A*20 + B*21 + C*22 = i.
Dem Gesamtschaltplan entnimmt man:
G1 = CS, G2A = G2B = GND, A = A13, B = A14, C = A15.
Damit folgt für die nicht - invertierten Auswahlsignale CS0 - CS :
CS0 = #A15#A14#A13#CS = #(A15 v A14 v A13 v A15A14A13R)
= #(A15 v A14 v A13) = #A15#A14#A13 Adreßbereich: $0000 - $1FFF
Komponente: 8-kbyte-RAM
CS1 = #A15#A14A13 Adreßbereich: $2000 - $3FFF
Komponente: 1. Speichererweiterung
CS2 = #A15A14#A13 Adreßbereich: $4000 - $5FFF
Komponente: 2. Speichererweiterung
CS3 = #A15A14A13 Adreßbereich: $6000 - $7FFF
CS4 = A15#A14#A13 Adreßbereich: $8000 - $9FFF
CS5 = A15#A14A13 Adreßbereich: $A000 - $BFFF
CS6 = A15A14#A13 Adreßbereich: $C000 - $DFFF
Da an der Kette von UND-Gattern des IC35 keine Brücken gesetzt sind, stimmt das Signal CS7 mit dem Ausgang Y7 des Demultiplexers 74138 überein. Also folgt:
CS7 = A15A14A13#CS = A15A14A13#(A15A14A13R)
= (A15A14A13 v #R)A15A14A13 = A15A14A13R
= A15A14A13#(A12#A11#A10#A9#A8#A7#A6)
= A15A14A13(#A12 v A12 (A11 v A10 v A9 v A8 v A7 v A6)
= A15A14A13#A12 v A15A14A13A12(A11 v A10 v A9 v A8 v A7 v A6)
Adreßbereich: $E000 - $EFFF und $F040 - $FFFF
Komponente: 8-kbyte - EPROM
Durch das Signal CS wird aus dem Bereich des EPROM-Speichers der Adreßbereich $F000 - $F03F der Peripherie ausgeblendet. CS wird nun zur Erzeugung der weiteren Auswahlsignale CS8 - CS13 herangezogen. Für das Signal am Gate-Eingang G des 2-auf-4-Demultiplexers 74139 (IC25) ergibt sich aus dem Schaltplan:
G = A5 v A4 v #CS = #(#A5#A4CS). Damit folgt:
CS8 = #A3#A2G = #A3#A2#A5#A4CS
= A15A14A13A12#A11#A10#A9#A8#A7#A6#A5#A4#A3#A2
Adreßbereich: $F000 - $F003
Komponente: Parallel-Schnittstelle
CS9 = #A3 A2 #G = A3 A2 #A5 #A4 CS, Adreßbereich: $F004-$F007
CS10 = A3 #A2 #G = A3 #A2 #A5 #A4 CS , Adreßbereich: $F008-$F00B
Komponente: V24-Schnittstelle
CS11 = A3 A2 G = A3 A2 #A4 #A5 CS, Adreßbereich: $F00C-$F00F
Komponente: Kassettenrecorder-Interface (wird nicht mehr unterstützt)
CS12 = #(#A4 #CS v A5) = A4 #A5 CS, Adreßbereich: $F010-$F01F
Komponenten: Tastatur und Timer ($F018-$F01F)
CS13 = #(#A5 #CS v A4) = #A4 A5 CS, Adreßbereich: $F020-$F02F
Komponente: 7-Segment-Anzeige
Zu S3.1-3:
Der Baustein 74245 enthält 8 bidirektionale Tristate-Leitungstreiber mit Schmitt-Trigger-Eingängen. Für jede Leitung sind zwei Treiber antiparallel geschaltet. Von ihnen wird durch den Eingang Dir jeweils genau einer angesprochen.
Die Aktivierung des gesamten Bausteins erfolgt durch L-Potential am Gate-Eingang G. Dieser Baustein eignet sich besonders zum Einsatz an bidirektionalen Datenbussen.

Zu S3.1-4:
(Beachten Sie die verschiedenen Bezeichnungen der Ein- und Ausgänge im Datenblatt und dem Gesamtschaltplan.)
| Datenbuswort: | D7 D6.....D1 D0 = $A7 = 1010 0111 | |
| IC29: | Dateneingänge: | DI1=DI2=DI3=1, DI4=0, |
| Steuereingänge: | ME=#S=0, WE=#W=0, | |
| Adreßeingänge: | A=B=C=1, D=0 . | |
| IC31: | Dateneingänge: | DI1=DI3=0, DI2=DI4=1, |
| Steuereingänge: | ME=0, WE=0, | |
| Adreßeingänge: | A=B=C=1, D=0 . | |
Zu S3.1-5:
Die Rücksetztaste C wirkt direkt auf einen Eingang der CPU 6809. Sie setzt den Prozessor hardwaremäßig in den Grundzustand zurück. Da sie in jedem Prozessorzustand wirksam sein muß, darf sie nicht erst vom Prozessor in einem Programm abgefragt werden.
Ähnlich verhält es sich mit der Break-Taste F4. Diese finden Sie am Eingang 40 (CA1) des Port-Bausteins MC6821 in der Parallel-Schnittstelle. Sie bewirkt über die IRQ-Leitung eine Hardware-Unterbrechung des mPs. Voraussetzung dafür ist, daß der Port-Baustein solche Interrupts durchläßt. In KE4 wird Ihnen gezeigt, wie man durch das Setzen eines bestimmten Bits solche Interrupts verhindern kann.
Zu S3.1-6:
Zu S3.2-1:
Die Routinen der Bibliothek eines Entwicklungssystems sind auf dem Zielsystem nicht verfügbar, sie könnten also nicht aufgerufen, sondern müßten in das Programm hineinkopiert werden (wie Macros in Assemblerprogrammen). Dazu müssen jedoch mehrere Voraussetzungen erfüllt sein:
Zu S3.2-2:
Nach einem Reset ist der Inhalt des 'S'-Registers nicht definiert, der Stapelzeiger zeigt also auf eine beliebige Adresse. Liegt sie im Bereich eines Anwenderprogramms, so würde dieses durch das Ablegen der Register des Prozessors durch eine Interruptroutine zerstört. Falls sie im ROM-Bereich oder in einem nicht belegten Adreßbereich liegt, könnten die Register gar nicht gesichert werden, und eine Programmfortsetzung nach Beendigung der Unterbrechung wäre unmöglich. Auf keinen Fall ist der einwandfreie Betrieb des Rechners gewährleistet.
Zu S3.2-3:
Die vom Empfänger berechnete Prüfsumme PSE über alle Bytes einer fehlerfrei übertragenen Zeile ergibt PSE = $00, denn für jede Zeile Z = (B1, B2,..., Bn) gilt:
| n | n-1 | n-1 | n-1 | n-1 | n-1 | |
| PSE = å Bi = å Bi + PSS = å Bi + ( å Bi )2k = å Bi + (28 - å Bi ) = $00. | ||||||
Zu S3.2-4:
Die Verfahrensweise beim Programmabbruch ist im wesentlichen die gleiche. Bei der Beendigung der BREAKPOINT-Routine muß jedoch (neben dem Austauch des SWI-Befehls im Programm) das PC-Register um eins vermindert werden, da der PC auf die dem SWI-Befehl folgende Adresse zeigt und nicht mehr auf den ursprünglichen OpCode des Programms. Bei der TRACE-Routine muß außerdem die Interrupt-Anforderung gesperrt werden.
| Lösungsvorschläge zu den Praktischen Übungen | Anhang |