OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 29.03.2024, 10:56

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 14 ] 
Autor Zpráva
 Předmět příspěvku: Z80 a 6502 (ZXS a C64)
PříspěvekNapsal: 19.08.2013, 22:06 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
ObiWanKen píše:
Sorry, trochu OT.
Ja som kodoval na 8-bitoch s CPU MOS 6502 (6510) a paci sa mi ako kazdy z nas pocita(l) takty.
Ja som mal takto isto cele podprogramy a ku kazdemu popis kolko taktov trva, co vstupuje v registroch atd. :jump:
A co som Z80 koderom zavidel bol pocet registrov procesora. :god2:


256 "registrou" v 65xx rade je ti malo? (0=ta stranka RAM)

Co mna viac stvalo ze na Z80/i8080 maju variabilny zasobnik. ziadne obmedzenie na 256 bitovy ktor lahko pretiekol.

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 19.08.2013, 22:39 
Offline
Kecálek
Uživatelský avatar

Registrován: 13.05.2013, 06:28
Příspěvky: 231
Bydliště: Handlova
Has thanked: 118 times
Been thanked: 44 times
To co som zavidel boli 16bit registre. Ktore 65xx nema. Tam som to potom riesil skor cez "self modifying code" ako cez ZP.

Samozrejme ze sa da pouzit ZP ale zase nie ako plnokrvne 16bit.
ZP som skor pouzival na tabulky s predpocitanimy hodnotami (pre rychlejsi pristup CPU do ZP).
Napr. prevod pozicie Sprite/PMG-VideoRAM atd.
A napriklad Atari OS pouziva vo velkej miere ZP. Ale miesto tam vzdy bolo na nejaky ten "register".

_________________
MiST | Amiga 600 Furia II | Amiga 1200 ACA1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 08:56 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
zz_indigo píše:
ObiWanKen píše:
Sorry, trochu OT.
Ja som kodoval na 8-bitoch s CPU MOS 6502 (6510) a paci sa mi ako kazdy z nas pocita(l) takty.
Ja som mal takto isto cele podprogramy a ku kazdemu popis kolko taktov trva, co vstupuje v registroch atd. :jump:
A co som Z80 koderom zavidel bol pocet registrov procesora. :god2:

256 "registrou" v 65xx rade je ti malo? (0=ta stranka RAM)

Takychto pametovych 256 registrov ma aj Z80, dokonca dve sady, a nemusia byt len v prvych 256 bajtoch ram, ale uplne kdekolvek v pameti :neener: Ale zase je pravda, ze nevie s nimi robit tak domyselne adresovacie rezimy a pristup k nim je velmi pomaly (vela taktov) :bang:

zz_indigo píše:
Co mna viac stvalo ze na Z80/i8080 maju variabilny zasobnik. ziadne obmedzenie na 256 bitovy ktor lahko pretiekol.
No to je prave len a len dobre !!! Velmi vela efektov v demach (hlavne kde sa vela toho hybe po obrazovke) je robenych prave cez zasobnik umiestneny vo videoramke ;) Napriklad nekonecne sprajty a aj obidve multicolorove casti v Echologii by sa bez plnenia videoramky cez zasobnik nedali urobit.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 15:21 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
ObiWanKen píše:
To co som zavidel boli 16bit registre. Ktore 65xx nema. Tam som to potom riesil skor cez "self modifying code" ako cez ZP.

Samozrejme ze sa da pouzit ZP ale zase nie ako plnokrvne 16bit.
ZP som skor pouzival na tabulky s predpocitanimy hodnotami (pre rychlejsi pristup CPU do ZP).
Napr. prevod pozicie Sprite/PMG-VideoRAM atd.
A napriklad Atari OS pouziva vo velkej miere ZP. Ale miesto tam vzdy bolo na nejaky ten "register".


Z80 me jeden problem. Komplexne instrukcie. Setri to pamet ale niektore veci su rychlejsie ked ich robis viac prikazovo ako jednym komplexnim.


Ono je vcelku sranda ze jedine dva 8bit CPU ktore prezili do tychto cvias su tak sialene odlizne. Z80 je ukazka CISC a 6502 zas RISC pristupu.

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 15:31 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
ObiWanKen píše:
Aj ked len tri registre, daju sa robit zazraky.

http://www.pagetable.com/?p=64

Takze 6502 ma este dlhu zivotnost !!!


no ono 6502 ma vlastne len jeden register a dva indexy. Lebo u 6502 nevies spravit ADC A,X zatial co Z80 vie vecsinu registrou pouzit pri aritmetickych operaciach.

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 15:36 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
Busy píše:
Takychto pametovych 256 registrov ma aj Z80, dokonca dve sady, a nemusia byt len v prvych 256 bajtoch ram, ale uplne kdekolvek v pameti :neener: Ale zase je pravda, ze nevie s nimi robit tak domyselne adresovacie rezimy a pristup k nim je velmi pomaly (vela taktov) :bang:


K registrom to ma odost dalej ako na 6502. Uz len preto ze indexove registre v 6502 sa pouzivasju ako index "pola" zatial co iX a iY v Z80 sa pouzivaju ako base toho pola. Co podstatne zneprijemnuje pracu. Navyse toto 6502 vie tiez iked opacne. V operande je Base pola a v index registri je index.

p.s. Inak uz to zacina zavanat zabo mysou vojnou ;-)

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 15:38 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
ObiWanKen píše:
To co som zavidel boli 16bit registre. Ktore 65xx nema.

Z80 ma programovo dostupnych dokopy 13 sestnastbitovych registrov a dva bity. Resp. jeden a pol bitu, lebo jeden z nich sa neda programovo citat :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 15:42 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
zz_indigo píše:
Busy píše:
Takychto pametovych 256 registrov ma aj Z80, dokonca dve sady

K registrom to ma odost dalej ako na 6502. Uz len preto ze indexove registre v 6502 sa pouzivasju ako index "pola" zatial co iX a iY v Z80 sa pouzivaju ako base toho pola. Co podstatne zneprijemnuje pracu.
Zalezi od uhla pohladu. Ak mas vyraz [IX+posun] tak mozes IX nazvat base pola a posun nazvat indexom, ale da sa to rovnako dobre aj naopak - IX nazves indexom a posun nazves ako base ;)

zz_indigo píše:
p.s. Inak uz to zacina zavanat zabo mysou vojnou ;-)
:D


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 15:51 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
Busy píše:
ObiWanKen píše:
To co som zavidel boli 16bit registre. Ktore 65xx nema.

Z80 ma programovo dostupnych dokopy 13 sestnastbitovych registrov a dva bity. Resp. jeden a pol bitu, lebo jeden z nich sa neda programovo citat :)


To cislo sa mi nejak nezda. (AF je nepouzitelne, iX a iY su len indexy, PC a SP detto)
a nieje mozne pouzivat registe nakros sadamy ;-) Takze realne pouzitelnych mame 2x3 a to trinast urcite nieje ;-)

AF A'F'
BC B'C'
DE D''E'
HL H'L'
iX
iY
PC
SP

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 16:11 
Offline
Kecálek
Uživatelský avatar

Registrován: 13.05.2013, 06:28
Příspěvky: 231
Bydliště: Handlova
Has thanked: 118 times
Been thanked: 44 times
zz_indigo píše:
p.s. Inak uz to zacina zavanat zabo mysou vojnou ;-)

:D


Ak bude vojna tak so mnou nepocitajte.
Vyrastal som na 65xx ale Z80 sa mi ozaj paci. Takze by som sa nevedel razhodnut za ktoru stranu budem kopat !!! :sleep:

A to este Z80 slape na 4MHz (ZX) oproti 1MHZ (C64) alebo 1,77 MHz (Atari). :cry:

_________________
MiST | Amiga 600 Furia II | Amiga 1200 ACA1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 17:17 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
ObiWanKen píše:
zz_indigo píše:
p.s. Inak uz to zacina zavanat zabo mysou vojnou ;-)

:D


Ak bude vojna tak so mnou nepocitajte.
Vyrastal som na 65xx ale Z80 sa mi ozaj paci. Takze by som sa nevedel razhodnut za ktoru stranu budem kopat !!! :sleep:

A to este Z80 slape na 4MHz (ZX) oproti 1MHZ (C64) alebo 1,77 MHz (Atari). :cry:


A obom je to naprd alebo jedneho brzdi ULA a druheho VIC-II

Frekvencia nieje vsetko:
najdlhsia instrukcia 6502 ma 7 taktou a najkratsia 1 takt
najdlhsia instrukcia Z80 ma vela taktou najkratsia 4 takty.

Preto sa CPU porovnavaju v MIPS-och

6502 ma 1MIPS pri 2Mhz
i8080 ma 1 MIPS pri 6Mhz (Je 3 krat pomalsi)
ARM2 ma 1MIPS PRI 2Mhz
Z80 som nenasiel ale ten by mal vychadzat cca ako i8080
eZ80 ktory je silne zoptimalizovane jadro z80 ma 1.6 na 1Mhz ale to je dane tym zer je to pipeline co je vyssi divci ;-)

je to dane tym ko vnutorne funguje CPU. Cim je jednoduchsi tym menej taktou je potreba aby sa instrukcia prehnala vsetkymi castamy interneho stavoveho registra.

staci si pozriet ako cita/zapisuje Z80 a ako 6502.
U z80 necitanie instrukcie trva 4 takty. dalsi operand 3 takty.
U 6502 to robi za jeden.

Ale i tak je tu uplne jedno. Vhodnym vyberom algoritmu optimalizovanym na platformu je mozne najst implemntacie kde slapsi CPU trunfne silnejsi. Vdaka obmedzeniam architektury.

p.s.
6502 sa robi; v 1/2/3/4Mhz Verzii a tie aktualne od WDC idu do cca 20Mhz iked ich predavaju ako 14Mhz

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 17:27 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
ObiWanKen píše:
Vyrastal som na 65xx ale Z80 sa mi ozaj paci. Takze by som sa nevedel razhodnut za ktoru stranu budem kopat !!! :sleep:
Ja som zase vyrastal na Z80 ale 6502 sa mi paci ;)
ObiWanKen píše:
A to este Z80 slape na 4MHz (ZX) oproti 1MHZ (C64) alebo 1,77 MHz (Atari). :cry:

ZX bezi na 3.5 MHz, a pokial procesor nepristupuje do pomalej videopameti (alebo na pomaly port), tak ho nic nebrzdi, takze tych 3.5 MHz je skutocne 3.5 MHz. Pokial sa program vykonava v pomalej videpometi, tak realna rychlost je tak v priemere o 30% nizsia. Didaktiky M a Kompakt sice maju Z80 CLK na 4.0 MHz ale tam je uplne cela ramka/romka spomalovana WAIT cyklami (blba konstrukcia ruskej uly) takze realna rychlost je cca 3.4 MHz.

C64 bezi (ak si dobre pametam) na 0.9 MHz.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 18:23 
Offline
Kecálek
Uživatelský avatar

Registrován: 13.05.2013, 06:28
Příspěvky: 231
Bydliště: Handlova
Has thanked: 118 times
Been thanked: 44 times
zz_indigo píše:
ObiWanKen píše:
zz_indigo píše:
p.s. Inak uz to zacina zavanat zabo mysou vojnou ;-)

:D


Ak bude vojna tak so mnou nepocitajte.
Vyrastal som na 65xx ale Z80 sa mi ozaj paci. Takze by som sa nevedel razhodnut za ktoru stranu budem kopat !!! :sleep:

A to este Z80 slape na 4MHz (ZX) oproti 1MHZ (C64) alebo 1,77 MHz (Atari). :cry:


A obom je to naprd alebo jedneho brzdi ULA a druheho VIC-II

Frekvencia nieje vsetko:
najdlhsia instrukcia 6502 ma 7 taktou a najkratsia 1 takt
najdlhsia instrukcia Z80 ma vela taktou najkratsia 4 takty.

Preto sa CPU porovnavaju v MIPS-och

6502 ma 1MIPS pri 2Mhz
i8080 ma 1 MIPS pri 6Mhz (Je 3 krat pomalsi)
ARM2 ma 1MIPS PRI 2Mhz
Z80 som nenasiel ale ten by mal vychadzat cca ako i8080
eZ80 ktory je silne zoptimalizovane jadro z80 ma 1.6 na 1Mhz ale to je dane tym zer je to pipeline co je vyssi divci ;-)

je to dane tym ko vnutorne funguje CPU. Cim je jednoduchsi tym menej taktou je potreba aby sa instrukcia prehnala vsetkymi castamy interneho stavoveho registra.

staci si pozriet ako cita/zapisuje Z80 a ako 6502.
U z80 necitanie instrukcie trva 4 takty. dalsi operand 3 takty.
U 6502 to robi za jeden.

Ale i tak je tu uplne jedno. Vhodnym vyberom algoritmu optimalizovanym na platformu je mozne najst implemntacie kde slapsi CPU trunfne silnejsi. Vdaka obmedzeniam architektury.

p.s.
6502 sa robi; v 1/2/3/4Mhz Verzii a tie aktualne od WDC idu do cca 20Mhz iked ich predavaju ako 14Mhz



Ktory CPU ma kolko MIPS mi nieje zname. Samozrejme ze aj HW berie cas CPUckam.
Osobne si myslim ze ZX je o nieco rychlejsie ako napr. Atari.
Sam som volakedy skusal jednoduchy scrolling Bitmap VRAM (Graphics 8) bez pouzitia HW scrollingu.
Roloval som monochromaticky obraz za pouzitia instrukcii ROL. A tento scrolling bol vyditelne trhany.
Problem s BEAMom aky bol rieseny tu v inej teme pre ZX.
Preto ked si pozriem napr. hru R-TYPE co dokaze bez HW scrollingu a spritov, tak mi vychadza ZX o nieco rychlejsie
ako spominane Atari, samozrejme bez pouzitia Atari HW. Tiez je to poznat pri hre Amaroute, ked sa u Atari verzie
objavy viacej "much" rychlost hry citelne poklesne. A to este ma ZX to sialene rozlozenie VRAM na tretiny.
Iste na to existuje nejaky ten ofajc. Ale na ZX som nikdy nekodoval. Snad len vymazanie VRAM :jump:
Tak ma opravte ak sa mylim :hammer: .

PS. Na C64 sa tiez vysantili v rozlozenie VRAM pri HiRes Bitmap mode (320x200)
.

_________________
MiST | Amiga 600 Furia II | Amiga 1200 ACA1231 | Sharp MZ800 | ZX Spectrum 48k | Didaktik M | Didaktik Gama | C64 U1541II | Atari 800XL | Atari 130XE U1MB+SIDE2.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 20.08.2013, 19:22 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
ObiWanKen píše:
Ktory CPU ma kolko MIPS mi nieje zname. Samozrejme ze aj HW berie cas CPUckam.


No tu zalezi aj ako je to riesene. Napr zx48 ma RAM rozdelenu pomocou HW na dve casti (16K zdielanej medzi ULA a CPU) a zbytok len cpu only vedia byt negraficke programy rychlejsie ak bezia v tejto ramke.

V pripade C64 je pamet spolocna takze si VIC a CPU vzdy konkuruju.

ObiWanKen píše:
Osobne si myslim ze ZX je o nieco rychlejsie ako napr. Atari.
Sam som volakedy skusal jednoduchy scrolling Bitmap VRAM (Graphics 8) bez pouzitia HW scrollingu.
Roloval som monochromaticky obraz za pouzitia instrukcii ROL. A tento scrolling bol vyditelne trhany.
Problem s BEAMom aky bol rieseny tu v inej teme pre ZX.
Preto ked si pozriem napr. hru R-TYPE co dokaze bez HW scrollingu a spritov, tak mi vychadza ZX o nieco rychlejsie
ako spominane Atari, samozrejme bez pouzitia Atari HW. Tiez je to poznat pri hre Amaroute, ked sa u Atari verzie
objavy viacej "much" rychlost hry citelne poklesne. A to este ma ZX to sialene rozlozenie VRAM na tretiny.
Iste na to existuje nejaky ten ofajc. Ale na ZX som nikdy nekodoval. Snad len vymazanie VRAM :jump:
Tak ma opravte ak sa mylim :hammer: .

PS. Na C64 sa tiez vysantili v rozlozenie VRAM pri HiRes Bitmap mode (320x200)
.


porovnavat vykone cpu na zaklade obmedzeni pouzitehio HW je tak trochu nefer. Ale to je to co som spominal. Ak kod zoptimalizujes na dany HW moze byt vykonnejsi na slabsej platfrorme.

Ale IMAO vykonovo su ZXspectrum/commodore64/atary obdobne.

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 14 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 4 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz