Sida 6 av 10

Re: Z80 dator

Postat: 16 augusti 2009, 14:31:32
av victor_passe
Jag har funderat lite mer på grafikkortet.
Ska jag köra med en 96*64 pixel skärm eller en 40*4 HD44780 eller båda?
Den grafiska är fysiskt liten, nästan för liten.
Men HD44780 skärmen kan ju inte göra grafik.

Så ska jag köra med båda kanske?
Och nu har jag börjat leta efter någon form av låda för att bygga in allt i.
Eller så bygger jag en själv.

Re: Z80 dator

Postat: 16 augusti 2009, 22:00:54
av limpan4all
Jag gjorde en gång på 80-talet en grafikkontroller applikation på en Z80 och en 640*400 plasmadisplay 32kB EPROM och 2*32kB SRAM som fungerade som displayminne. CPU´n skrev i den ena medans den andra banken skrevs ut till displayen.
Det gick förstås att skriva i banken som displayades samtidigt men då fans det en liten risk för flimmer.
Så Z80 har en hel del kraft när den kodas rätt (hela den applikationen skrevs i assembler av en extremt duktig Z80 programmerare som har både hunnit pensionera sig och dö).

Så tag du en helgrafisk och var inte rädd att skriva grafikapplikationen, Z80 har kapacitet så det räcker gott och väl.

Re: Z80 dator

Postat: 17 augusti 2009, 21:35:52
av victor_passe
Nu har jag byggt ett grafikkort(som bara innehåller en 74hct138).
Och skrivit en bootloader.
Så när jag startar datorn tar PIC:en över och läser 32KB från ett 24LC256 och skriver det till SRAM minnet.
Jag testade och bara skriva 0x00 till alla platser och det funkar men när Z80:n startar så skriver den 0x67 till varannan plats i hela minnet.
Jag fattar ingenting...
Minnet blir liksom:
0x67, 0x00, 0x67, 0x00, 0x67, 0x00 osv hela vägen genom alla 64KB.

Någon som har någon aning?

Bild
Bild


Re: Z80 dator

Postat: 17 augusti 2009, 22:12:37
av victor_passe
Nu blir jag riktigt förvirrad, när jag belastar M1 med en led så funkar den fint.
Så fort jag tar bort lysdioden så ballar den ut totalt och skriver skit hit och dit och hoppar runt i adresser slumpmässigt.
Är CPU:n kass?
Den har ju legat i en källare några år utan ESD plast.

Re: Z80 dator

Postat: 17 augusti 2009, 22:33:01
av Swech
M1?

Swech

Re: Z80 dator

Postat: 17 augusti 2009, 23:03:16
av victor_passe
En utgång som betyder att cpu:n är på mikrokod #1 eller vad man ska säga.
Den är i "fetch" fasen i en instruktion.

Re: Z80 dator

Postat: 17 augusti 2009, 23:03:42
av nifelheim
Machine cycle one, aktiv vid inläsning av instruktionen (opcode fetch)
Och tillsammans med IOReQuest betyder det Interrupt Ack, så den som gjorde interrupt kan lägga interruptvektorn på bussen.

Skulle nog inte sätta en lysdiod där, funkar säker om den drar lite ström kolla databladet.

Re: Z80 dator

Postat: 17 augusti 2009, 23:11:46
av victor_passe
Jag har satt en pulldown på 240Ohm
Den funkar nu iaf. Men den beter sig väldigt konstigt.
Om jag kör denna kod:
JP 0

Då kan man ju tycka att en ska läsa 3 byte och hoppa till början.
Men den gör det och sedan hoppar den lite fram och sedan bak igen så den läser ända till byte nr 64.

Re: Z80 dator

Postat: 17 augusti 2009, 23:21:07
av victor_passe
Jag har letat en bra stund nu på hur man skickar ut något på databussen.

Om jag vill skicka datan 0xFF till adressen 0x1234
Hur gör jag då?
De jag har fattat är:
LD A, 0x12
OUT (0x34),A

Men vart stoppar man in vilken data man vill ha ut?

Re: Z80 dator

Postat: 18 augusti 2009, 00:16:46
av nifelheim
Om du vill göra OUT till en adress större än 0xFF måste du ladda BC med adressen och sedan göra OUT (C),A
då läggs hela BC ut på adressbussen. (eller OUT(C),"något annat")

I ditt kod exempel kommer du att skriva 0x12 till port 0x34 , normala IO adresser är 0x00 till 0xFF



edit: du menade väl IO? blev osäker när jag läste din fråga igen.

Re: Z80 dator

Postat: 18 augusti 2009, 00:27:26
av victor_passe
Jo, jag menar IO.
Så om jag kör denna kod:
LD BC 0x1234
OUT 0xFF,BC så ska 0xFF komma ut på adress nr 0x1234?

Re: Z80 dator

Postat: 18 augusti 2009, 01:05:58
av nifelheim
den OUT instruktionen finns inte, men om den funnits hade det gått bra :-)

LD A,0xFF
LD BC,0x1234
OUT (C),A

detta ger FF på data bussen och 1234 på adressbussen, IORQ och några extra wait-states ...

Re: Z80 dator

Postat: 18 augusti 2009, 01:10:21
av Tekko
FY FAN att du årkar :shock: :shock: :eek2: :eek2:

Re: Z80 dator

Postat: 18 augusti 2009, 01:22:40
av nifelheim
sätt första instruktionen till halt (HLT) och kolla om den stannar.
Du har väl en lysdiod på halt - pinnen :wink:
funkar inte det ska du nog kolla kopplingen, dra ut CPU'n och sätt spänning på linorna i
data och adressbussen en och en och kolla lysdioderna.

hittade inget schema i tråden
vad har du gjort med NMI ?

Re: Z80 dator

Postat: 18 augusti 2009, 07:07:06
av victor_passe
Båda INT pinnarna har varsin pullup på 10K och driver varsin LED via en ULN2003.
Och jag ska testa och se om den haltar, bra ide!
Och tack för all din hjälp!

Edit:
Om jag kör denna kod: 0x00, 0x76 Alltså HALT så göt den detta:
Läser addr 0 (0x00)
Läser addr 1 (0x76)
lägger ut 2 på adressbussen och aktiverar MEMREQ men inte RD eller WR
lägger ut 1 på adressbussen och läser (0x76)
lägger ut 3 på adressbussen och aktiverar MEMREQ men inte RD eller WR
lägger ut 1 på adressbussen och läser (0x76)
lägger ut 4 på adressbussen och aktiverar MEMREQ men inte RD eller WR
lägger ut 1 på adressbussen och läser (0x76)
lägger ut 5 på adressbussen och aktiverar MEMREQ men inte RD eller WR
lägger ut 1 på adressbussen och läser (0x76)
lägger ut 6 på adressbussen och aktiverar MEMREQ men inte RD eller WR
lägger ut 1 på adressbussen och läser (0x76)
lägger ut 7 på adressbussen och aktiverar MEMREQ men inte RD eller WR
lägger ut 1 på adressbussen och läser (0x76)

osv ända till addr 128, där börjar den om igen från addr 1

Jag ska mäta lite med oscilloscopet och se om jag ser något konstigt.

Edit2:
Klockpinnen har en fin fyrkantsvåg i 1MHz och M1 pinnen ger fina pulser på 4µS cykeltid(50% duty).