Tegnap elõvettem az egyik lestrapált EP-met (természetesen én strapáltam le tizenpár év alatt), és átalakítottam az antenna kimenetet színes video kimenetre. Ez lesz a tesztgépem. EP 128 issue 6.
Elsõ dolgom volt, hogy megnézzem mennyire tartja be a Z80 a specifikációt.
Írtam egy Assembly programot:
DI
LD HL,5000h
back LD A,(HL)
LD A,(HL)
LD A,(HL)
LD A,(HL)
LD A,(HL)
LD A,(HL)
LD A,(HL)
.
; ezt még vagy 8000-szer egymás után
.
LD A,(HL)
LD A,(HL)
JP back
Arra voltam kíváncsi, hogy hány órajel az utasításbekérés, és mennyi a végrehajtás.
A kód futtatásakor elõvettem az oszcilloszkópot, és rámértem az !M1 és !RD lábakra kétsugaras módban. Valóban a katalógus szerinti specifikációt mértem, így pontos idõzítési értékeket tudok, amelyek megkönnyítik a külsõ NICK memóriavezérlõjének implementálását.
A következõ szabályokat találtam:
Memória olvasásakor:
1. Egy órajelciklus ideje van a memóriavezérlõnek az adatokat szolgáltani, ha ezt nem tudja, akkor a WAIT lábbal késleltetni kell a processzor mûködését.
2. Addig kell a buszon tartani az adatokat, amíg !MREQ és !RD alacsony szintû.
Memória íráskor:
1. !MREQ és !WR lábak lefutóélére a buszon érvényes adat van, ami 1 órajelcikluson keresztül lesz ott.
Az I/O utsítások ugyanígy mûködnek, csak !MREQ helyett !IORQ a jelvezeték.
Projektemben az I/O utasításokat is figyelnem kell, mert a külsõ Nick csak így fogja tudni, honnan töltse be a sorparaméter táblát.