Forum: Mikrocontroller und Digitale Elektronik Z80 Interrupts


von Reinhard Kniest (Gast)


Lesenswert?

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

von (prx) A. K. (prx)


Lesenswert?

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.

von H.Joachim S. (crazyhorse)


Lesenswert?

War das der geile Modus, wo die Peripherie selbst einen  Teil der 
Interruptvektors liefert?

Hat mich damals (>25 Jahre) schwer beindruckt und war genial.

von Michael_ (Gast)


Lesenswert?

Ach ja, "Daisy-Chain", das waren noch Zeiten!

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

da müsste alles für CTC drin sein:
1
;
2
PERETI:  EI
3
PRETI:  RETI
4
PRETN:  RETN
5
;
6
.......
7
        EXTERNAL PRETI,PERETI,PRETN
8
;
9
;       POPSYS CALLS INIT,
10
;       THEN JUMPS TO 100H
11
;
12
;       LINK AT 103H FOR INT HANDLING !!
13
;
14
        ASEG
15
        ORG     104H
16
;
17
;       INTERRUPT VECTORS
18
;
19
;
20
        DEFW    NOSERV
21
        DEFW    NOSERV  ;NOT USED
22
        DEFW    NOSERV
23
        DEFW    NOSERV
24
        DEFW    NOSERV
25
        DEFW    NOSERV
26
;
27
SIOINT: DEFW    NOSERV  ;SIO NOT USED
28
        DEFW    NOSERV
29
        DEFW    NOSERV
30
        DEFW    NOSERV
31
        DEFW    NOSERV
32
        DEFW    NOSERV
33
        DEFW    NOSERV
34
        DEFW    NOSERV
35
;
36
SCCINT: DEFW    NOSERV  ;SIO NOT USED
37
        DEFW    NOSERV
38
        DEFW    NOSERV
39
        DEFW    NOSERV
40
        DEFW    NOSERV
41
        DEFW    NOSERV
42
        DEFW    NOSERV
43
        DEFW    NOSERV
44
;
45
CTCINT: DEFW    NOSERV  ;CTC TIMER 0
46
        DEFW    NOSERV  ;TIMER 1
47
        DEFW    TIMNAJ  ;TIMER 2
48
        DEFW    NOSERV  ;RTC
49
;
50
NOSERV: JP      PERETI
51
;
52
;
53
;
54
INIT:   DI
55
        LD      HL,0
56
        LD      B,0FFH
57
INITX2: XOR     A       ;DISPLAY OFF
58
        OUT     (DIG),A
59
        OUT     (SEG),A
60
.......
61
        IM      2       ;INTERRUPT 2
62
        LD      A,1
63
        LD      I,A     ;AT 100
64
;
65
        LD      HL,RAM  ;CLEAR RAM
66
        LD      DE,RAM+1
67
        LD      BC,TOPMEM-RAM-32
68
        LD      (HL),0
69
        LDIR
70
;
71
        JR      INIT10
72
;
73
TIMNAJ: JP      TIMINA
74
;
75
...
76
;
77
INITAB: DEFB    CTC0,30H        ;INT VECTOR
78
        DEFB    CTC0,07H        ;BAUD RATE SER3
79
        DEFB    CTC0,B1200
80
        DEFB    CTC1,07H        ;BAUD SER4
81
        DEFB    CTC1,B1200
82
        DEFB    CTC2,0A7H       ;SYSTEM TIMER
83
        DEFB    CTC2,TACON
84
        DEFB    CTC3,47H        ;RTC
85
        DEFB    CTC3,1
86
.....
87
INIT20: XOR     A
88
        OUT     (RTC),A
89
        EI
90
        RET
91
;
92
;
93
;
94
;       TIMER INTERRUPT 1 MS
95
;       2 MS DISPLAY SCAN
96
;       2 MS STEPPER MOTOR
97
;       1 MS V24
98
;       1 MS ADC
99
;
100
TIMINA: PUSH    AF
101
        PUSH    BC
102
        PUSH    DE
103
        PUSH    HL
104
;
105
;       TOGGLE
106
;       0 : DISPLAY AND KB
107
;       1 : STEPPER MOTOR & RTC
108
;
109
.......
110
;
111
TMNAE:  POP     HL
112
        POP     DE
113
        POP     BC
114
        POP     AF
115
        JP      NOSERV
116
;

Gruss Reinhard

von Reinhard K. (sailingreiner)


Lesenswert?

Auf solche spitzfindigen Kommentare kann ich verzichten.Ich denke es ist 
ein ernstes Forum!

von Reinhard K. (sailingreiner)


Lesenswert?

Danke Reinhard Kern

von Erich (Gast)


Lesenswert?

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

von Route_66 (Gast)


Lesenswert?

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.

von Reinhard Kern (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.