Hallo Z80 Insider,
Ich habe einen Z80 Einplatinensystem in Betrieb. Mit Assembler und C
programmiert. Klappt alles super und habe alles im griff. Ich möchte
jetzt auch die Interrupts benutzen. Modus 0 ist kein Problem, aber der
Modus 2 für die CTC macht mir Kopfzerbrechen. Kann mir jemand ein
Beispiel geben,
womit ich die Vektoren bearbeiten kann. Danke
Nach 10 Sekunden Suche: http://www.z80.info/1653.htm
Übrigens musst nicht Du die Vektoren verarbeiten, das macht die CPU
schon selbst. Wenn die Schaltung stimmt.
War das der geile Modus, wo die Peripherie selbst einen Teil der
Interruptvektors liefert?
Hat mich damals (>25 Jahre) schwer beindruckt und war genial.
Das Programm von Reinhard sieht prinzipiell gut aus,
hat aber paar "Feinheiten" die man ohne Nachlesen in Literatur kaum
verstehen kann.
Was ist z.B. mit
LD A,1
LD I,A ;AT 100
wenn das besagte Programm und die Vektortabelle nicht bei (ungefähr)
100H beginnt?
Auch der Macro80 Assembler kannte schon Schlüsselwörter wie "HIGH" !
Und sogar das automatische "hinORGerln" auf gerade 4er oder 10H-er
Adressen geht mit dem "DS" bzw. "DEFS" Operator in Verbindung mit $ .
http://www.retroarchive.org/cpm/lang/MACRO-80.PDF
Ich rate dem TE, sich gute Bücher zu beschaffen.
Das beste, das ich kenne ist hierfür
Z-80 - Interface-Technik und Anwendung. Buch 3.
Gibt's beispielsweise bei Bücher.de (gebraucht).
Am 2. Platz wäre das Handbuch zum uPF-1, dem "Microprofessor".
Das von Zaks kommt später, das von Klein ist Murks.
Was will und der TE mit seiner Bemerkung zu "spitzfindigen Kommentare"
sagen? Das verstehe ich nicht.
Gut wäre hingegen es, könnte er sagen welche konkrete Hardware (bzw.
Schaltung) er nutzt.
Gruss
Hallo!
@Erich:
...und das von Reinhard Kern
>INITAB: DEFB CTC0,30H ;INT VECTOR
funktioniert auch nur, wenn die anderen Interruptvektoren genau so wie
oben aufgeführt vorhanden sind und ab 0104H im Speicher stehen! So
programmiert man nicht.
Route_66 schrieb:> ...und das von Reinhard Kern>>INITAB: DEFB CTC0,30H ;INT VECTOR> funktioniert auch nur, wenn die anderen Interruptvektoren genau so wie> oben aufgeführt vorhanden sind und ab 0104H im Speicher stehen! So> programmiert man nicht.
Das ist zwar in der Theorie nicht falsch, aber so wie sie sind stehen
die Tabellen nun konstant seit 25 Jahren, und es besteht auch wenig
Grund, sie die nächsten 25 Jahre zu ändern. Der Aufwand für eine
Parametrisierung hätte sich also nie gelohnt, ist allerdings auch nicht
hoch.
Die Startadresse 100H sollte alten Hasen geläufig sein, kommt von CP/M,
obwohl ich stattdessen das eigene kompatible Pseudo-Betriebssystem
POPSYS verwende. Auch deshalb wurde an der Struktur bei 100H nie was
geändert, auch Pascal- oder C-Compiler arbeiten standardmässig damit.
Gruss Reinhard