Z80 dator
Re: Z80 dator
och vad hände med HALT* pinnen, blev den aktiv?
vad som finns på bussen när den är odefinierad spelar inte någon roll
vad som finns på bussen när den är odefinierad spelar inte någon roll
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
Jag har köpt en ny CPU på ELFA så nu kan jag köra i 10MHz och allt funkar nu tror jag.
Halt blir aktiv när den ska halta.
Men den fortsätter skicka ut saker på adress bussen.
Den räknar upp adresbussen och aktiverar MEMREQ.
Halt blir aktiv när den ska halta.
Men den fortsätter skicka ut saker på adress bussen.
Den räknar upp adresbussen och aktiverar MEMREQ.
Re: Z80 dator
Det borde vara refresh-räknaren för DRAM-minne du ser.
http://www.sxlist.com/TECHREF/mem/dram/slide4.html
http://www.sxlist.com/TECHREF/mem/dram/slide4.html
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
Hmm, jag har nog missuppfattat hur CALL funkar men ska inte denna koden funka?
Koden assembleras rätt men den haltar inte utan spinner iväg och gör konstiga saker.
Men om jag byter ut CALL till JP så funkar allt fint.
Kod: Markera allt
NOP
LD SP, $FFFF
CALL TEST
TEST:
HALT
.end
Men om jag byter ut CALL till JP så funkar allt fint.
Re: Z80 dator
call ska vara exakt som jp förutom att den ska lägga adressen till "nästa instruktion" på stacken innan den hoppar till angiven adress.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
Jo, och det är det som är det konstiga, det borde ju funka.
Sätter jag SP till $0FFF funkar det.
Men inte om jag sätter den till $7FFF.
Det ska väll inte spela någon roll, den behöver väll inte ens peka på en adress där det finns minne?
Jag skriver ju bara, inte läser.
Och jag har ju minne på hela utrymmet.
Sätter jag SP till $0FFF funkar det.
Men inte om jag sätter den till $7FFF.
Det ska väll inte spela någon roll, den behöver väll inte ens peka på en adress där det finns minne?
Jag skriver ju bara, inte läser.
Och jag har ju minne på hela utrymmet.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
Nu hittade jag felet!
INT och NINT eller vad hu interrupt pinnarna heter har varsitt pullup på 10K och en ULN2003 lyssnar på dem.
Men tydligen drar ULN2003 så mycket ström att spänningen bara blir 2,5V på pinnarna.
Så jag kopplade dem direkt till 5V och nu funkar allt fint.
Men det är darlington koppling på ULN2003 va? Den ska väll inte dra mycket kräm på in-sidan?
Det blir iof bara 0,25mA.
INT och NINT eller vad hu interrupt pinnarna heter har varsitt pullup på 10K och en ULN2003 lyssnar på dem.
Men tydligen drar ULN2003 så mycket ström att spänningen bara blir 2,5V på pinnarna.
Så jag kopplade dem direkt till 5V och nu funkar allt fint.
Men det är darlington koppling på ULN2003 va? Den ska väll inte dra mycket kräm på in-sidan?
Det blir iof bara 0,25mA.
Senast redigerad av victor_passe 20 augusti 2009, 10:28:54, redigerad totalt 1 gång.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
Nu har jag kopplat en AND krets som buffert på INT och NMI på LED-kortet.
Och nu är det en bild på displayen som Z80:n har genererat själv!
Men nu ska jag läsa på om hur man stoppar in rå data i koden.
Så jag kan använda IX och IY och göra någon generell draw_sprit funktion.
Och jag måste säga att PUSH och POP är väldigt bra, mycket bättre lösning än en liten intern stack. Och lätt att skicka parametrar med.
Och nu är det en bild på displayen som Z80:n har genererat själv!
Men nu ska jag läsa på om hur man stoppar in rå data i koden.
Så jag kan använda IX och IY och göra någon generell draw_sprit funktion.
Och jag måste säga att PUSH och POP är väldigt bra, mycket bättre lösning än en liten intern stack. Och lätt att skicka parametrar med.
Re: Z80 dator
Måste bara säga att det är riktigt roligt att följa med på det här projektet. Dock så fattar jag inget av vad ni pratar om men intressant på nått sett
Men blir det ingen bild på den egen genererade bilden som z80 skrev ut?

Men blir det ingen bild på den egen genererade bilden som z80 skrev ut?

-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
Det snarare så att jag har skrivit några byte över Boot-bilden så det är Bootbilden fast med en liten triangel i hörnet.
Nu har jag börjat skriva kod för att skriva ut text.
Men jag har ett par frågor:
Varför har man ibland parenteser runt register som tex LD (HL),$FFFF
Och finns det något bättre sätt att gångra A med 8 än detta:
Det känns extremt korkat att göra så.
Nu har jag börjat skriva kod för att skriva ut text.
Men jag har ett par frågor:
Varför har man ibland parenteser runt register som tex LD (HL),$FFFF
Och finns det något bättre sätt att gångra A med 8 än detta:
Kod: Markera allt
CCF
SCF
RLA
CCF
SCF
RLA
CCF
SCF
RLA
Det känns extremt korkat att göra så.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
De frågor jag hade i förra inlägget har jag redan löst.
Denna kod:
(Det finns en massa rutiner såklart men de är inte så intressanta)
Bokstäverna sparas såhär(Detta är ett "A"):
Genererar detta detta:

Ett stort steg för mig, ett litet steg för mänskligheten.
Och en liten film på när den skriver detta:
Funderar på om man ska spara data åt andra hållet, nu sparar jag ju 8byte men 6byte räcker.
Man kanske skulle ändra "vinkeln" på byten och då bara förbruka 6 byte för ett tecken.
Och det blir ju lättare då jag nu måste ändra om massa adresser på skärmen när det kommer nya bokstäver, skärmen kan ju själv göra detta om man bara skriver från vänster till höger och byte:arna på "höjden"
Vet någon något ställe där man kan hitta hela ASCII listan i binär-form på det sättet jag sparar data?
Denna kod:
Kod: Markera allt
NOP
LD SP,$FFFF
CALL Init_disp
CALL Clear_disp
LD A,0 ;Bokstav 0
CALL Draw_letter
LD A,1 ;Bokstav 1
CALL Draw_letter
LD A,2 ;Bokstav 2
CALL Draw_letter
HALT
Bokstäverna sparas såhär(Detta är ett "A"):
Kod: Markera allt
.db %000000
.db %001000
.db %010100
.db %100010
.db %111110
.db %100010
.db %100010
.db %100010

Ett stort steg för mig, ett litet steg för mänskligheten.
Och en liten film på när den skriver detta:
Funderar på om man ska spara data åt andra hållet, nu sparar jag ju 8byte men 6byte räcker.
Man kanske skulle ändra "vinkeln" på byten och då bara förbruka 6 byte för ett tecken.
Och det blir ju lättare då jag nu måste ändra om massa adresser på skärmen när det kommer nya bokstäver, skärmen kan ju själv göra detta om man bara skriver från vänster till höger och byte:arna på "höjden"
Vet någon något ställe där man kan hitta hela ASCII listan i binär-form på det sättet jag sparar data?
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Z80 dator
http://www.swechtrading.se/Ascii_lg.inc
Här har du en ascii tabell från 32 till Z sparad i vridet format, anpassad för AVR men med
lite search and replace så passar den nog dig
Swech
Här har du en ascii tabell från 32 till Z sparad i vridet format, anpassad för AVR men med
lite search and replace så passar den nog dig
Swech
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: Z80 dator
Tack, det blir perfekt.
Edit:
Det gick visst inte
Jag trodde att man kunde mata in bitarna vertikalt, men icke.
Och jag tänker inte krångla en massa i koden och läsa bit 0 från 8 byte, bit 1 från 8 byte osv.
Så det får bli som det var, men en ASCII lista vore fortfarande uppskattat fast åt andra "hållet".
Edit:
Det gick visst inte

Och jag tänker inte krångla en massa i koden och läsa bit 0 från 8 byte, bit 1 från 8 byte osv.
Så det får bli som det var, men en ASCII lista vore fortfarande uppskattat fast åt andra "hållet".