Z80 dator
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
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.
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.
-
- Inlägg: 8445
- Blev medlem: 15 april 2006, 18:57:29
- Ort: Typ Nyköping
Re: Z80 dator
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.
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.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
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?

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?


-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
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.
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.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
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.
Den är i "fetch" fasen i en instruktion.
Re: Z80 dator
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.
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.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
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.
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.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
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?
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
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.
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.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
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?
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
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 ...

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
sätt första instruktionen till halt (HLT) och kolla om den stannar.
Du har väl en lysdiod på halt - pinnen
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 ?
Du har väl en lysdiod på halt - pinnen

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 ?
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
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).
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).