Sida 7 av 10

Re: Z80 dator

Postat: 18 augusti 2009, 23:00:55
av nifelheim
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

Re: Z80 dator

Postat: 18 augusti 2009, 23:18:38
av victor_passe
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.

Re: Z80 dator

Postat: 19 augusti 2009, 00:52:14
av anrhm
Det borde vara refresh-räknaren för DRAM-minne du ser.

http://www.sxlist.com/TECHREF/mem/dram/slide4.html

Re: Z80 dator

Postat: 19 augusti 2009, 07:21:01
av victor_passe
Ja, det är det ju såklart!
Tack så mycket, nu behöver jag inte oroa mig för att något är fel.

Här är bilder på hur jag har löst det med minnet:
Bild
Bild
När man slår på datorn så läser PIC:en från det lilla EEPROM och skriver till SRAM.
Och man programmerar EEPROM i PICKIT 2

Re: Z80 dator

Postat: 19 augusti 2009, 21:44:11
av victor_passe
Hmm, jag har nog missuppfattat hur CALL funkar men ska inte denna koden funka?

Kod: Markera allt

NOP
LD  SP, $FFFF
CALL	TEST

TEST:
HALT
.end
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.

Re: Z80 dator

Postat: 20 augusti 2009, 03:03:29
av slaeshjag
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.

Re: Z80 dator

Postat: 20 augusti 2009, 10:16:57
av victor_passe
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.

Re: Z80 dator

Postat: 20 augusti 2009, 10:25:07
av victor_passe
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.

Re: Z80 dator

Postat: 20 augusti 2009, 10:26:08
av Icecap
INT & NMI

Re: Z80 dator

Postat: 20 augusti 2009, 11:34:04
av victor_passe
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.

Re: Z80 dator

Postat: 20 augusti 2009, 13:13:12
av ekman
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 :humm:

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

Re: Z80 dator

Postat: 20 augusti 2009, 14:26:00
av victor_passe
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:

Kod: Markera allt

	CCF
	SCF
	RLA

	CCF
	SCF
	RLA

	CCF
	SCF
	RLA

Det känns extremt korkat att göra så.

Re: Z80 dator

Postat: 20 augusti 2009, 22:28:56
av victor_passe
De frågor jag hade i förra inlägget har jag redan löst.

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
(Det finns en massa rutiner såklart men de är inte så intressanta)

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
Genererar detta detta:
Bild

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?

Re: Z80 dator

Postat: 21 augusti 2009, 06:43:04
av Swech
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

Re: Z80 dator

Postat: 21 augusti 2009, 11:22:20
av victor_passe
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".