OldComp.cz
https://www.oldcomp.cz/

Ventilátor '85
https://www.oldcomp.cz/viewtopic.php?f=49&t=10084
Stránka 12

Autor:  aceltd [ 29.05.2021, 22:33 ]
Předmět příspěvku:  Ventilátor '85

Mohl by mi někdo poskytnout výhrady proti obsazení I/O portů 0x2C..0x2D, 0x30..0x3F a 0xB0..0xBF v PMD1/2/3?
A neví ještě někdo, jak zachází i8080 s nepoužitými/nesmyslnými opcody (08,18... &40,49,52... &20,30)? Použil je někdy někdo k něčemu, nebo mohu CPU naučit pár nových instrukcí?

V přílohách jsou zdroje a důvod proč bych to rád konzultoval...
[url]http://aceltd.no-ip.org/io85.txt[/url]
[url]http://aceltd.no-ip.org/i8080ins.txt[/url]
[url]http://aceltd.no-ip.org/turbo'85.jpg[/url]

Autor:  EC1045.01 [ 29.05.2021, 22:55 ]
Předmět příspěvku:  Re: Ventilátor '85

Pokut jde o ty instrukce tak například zde, jinak i v neobsazeních kódech se provede instrukce aneb neúplný instrukční dekodér.

Nové instrukce tyto historické CPU nenaučíš aneb je to natvrdo zadrátováno v ROM.

Ještě k tomu PMD

V PMD je takzvaná lineární adresace aneb neúplné dekódování adresy. Konkrétně jsou použité adresné vodiče A2, A3, a A7 pro adresování konkrétních IO/IF desky, takže pokut chceš něco neadresovat mimo PMD tak na daných adresných vodičích musí bít log 1. Někde zde by měla být dohádatelná tabulka s volnými poty ale narychlo jsem ji nenašel.

Autor:  dex [ 30.05.2021, 00:05 ]
Předmět příspěvku:  Re: Ventilátor '85

"Někde zde" je asi https://pmd85.borik.net/wiki/Obsadenie_vstupno_v%C3%BDstupn%C3%BDch_adries_PMD_85
To ale hádám aceltd zná, když si udělal podobnou tabulku vlastní a o periferiích od RM Teamu má povědomí.
Spíš bych řekl, že mu tabulka od RM Teamu přijde nepřesná a chce s ní polemizovat - koneckonců podle RMT tabulky je 2C-2F a 3C-3F volné. A hned v té první "zakázané" oblasti x0-x3 je v jeho tabulce http://aceltd.no-ip.org/io85.txt spousta nepoužitých portů (C0, D0, E0, F0, ...).

Autor:  Libor L.A. [ 30.05.2021, 08:50 ]
Předmět příspěvku:  Re: Ventilátor '85

U PMD-85 lze volně používat adresy portů XCh..XFh, kde X může být (0, 2, 3, 6, 8, 9, A, B, C, D, E, F). Ostatní adresy opravdu kolidují mezi sebou a při pokusu o čtení takto kolidujících portů to může produkovat nesmyslné hodnoty (logický součin hodnot aktivovaných portů). Takže BCh..BFh ano, ale B0h..BFh už koliduje ve spodní části rozsahu. Jak říkal Petr, A2=0 aktivuje ROMPACK, A3=0 aktivuje PPI klávesnice a A7=0 aktivuje podřízený selektor 3205 pro výběr UARTu 8251, CTC 8253 a 2x 8255 (GPIO a IMS). Viz příloha - jiné pojetí tabulky adres portů.

K těm "volným" instrukčním kódům: osobně si myslím, že funkční projevy těchto nedokumentovaných kódů jsou natolik nejisté, že je nikdo nepoužívá tak jako u 6502 nebo 8085 pro znepřehlednění nebo urychlení kódu. S jistotu to ale říci nemohu. Klidně bych je využil pro nové instrukce. Co garantovat mohu, tak cca 10 her pro PMD-85 je zcela jistě nepoužívá :)

Přílohy:
io_adresy_pmd85.xls [50.5 KiB]
262 krát

Autor:  EC1045.01 [ 30.05.2021, 08:51 ]
Předmět příspěvku:  Re: Ventilátor '85

dex píše:

Jo to je ona

Ty adresy 0C-0F, 2C-2F, 3C-3F a „6C-6F“ jsou volné jen v PMD nebo na konektoru pro ROM modul, na aplikačním konektoru jsou nedostupné, aneb ti tři diody na IF modulu to zaříznou. Kdy adresy 6C-6F jsou použité pro moderní vnitřní doplňky (mám pocit že 6E používá MEGAROM modul).

Tu tabulku mají dobře jen není úplně blbu vzdorně popsaná tj. chce to mí povědomí o tom jak je PMD zapojené aneb to neúplné adresování je pěkně zákeřné. Aneb v té tabulce kde je udáno uživatelská oblast tak to jsou volné adresy dostupné na aplikačním konektoru a nepožívají je dobové periférie.

Autor:  Libor L.A. [ 30.05.2021, 08:56 ]
Předmět příspěvku:  Re: Ventilátor '85

Nojo, to co napsal teď Petr, je třeba opravdu zohlednit. Pokud nastane případ A2=0 nebo A3=0 nebo A7=0, tak se z takto adresované periferie nedá číst, pokud je připojena na aplikační konektor. Pro připojení přes aplikační konektor zbývají volně připojitelné periferie XCh..XFh, kde X = (8, 9, A, B, C, D, E, F).

Teď se ale nebavíme o standardním využití některých těchto adres novými periferiemi typu myš. Pokud to dobře chápu a děláš nějaký kompatibilní stroj, koukni k RM-Teamu na povídání o periferiích.

DOPLNĚNÍ: Ty problémové adresy (0X), 2X, 3X a 6X by měly být použitelné na konektoru ROMPACKu.

Autor:  Libor L.A. [ 30.05.2021, 09:03 ]
Předmět příspěvku:  Re: Ventilátor '85

Pokud bys dělal vylepšený CPU do FPGA nebo něco podobného, možná poslouží toto (viz příloha). Snad tam nejsou chyby. Ten originál tabulky je dostupný i na internetu ve scanovaném katalogu rodiny MCS80 od Intelu.

Přílohy:
Stavy.xls [89 KiB]
273 krát

Autor:  EC1045.01 [ 30.05.2021, 09:28 ]
Předmět příspěvku:  Re: Ventilátor '85

Ještě k těm instrukcím.

Pokut jde o 8080 tak tam se snad od všech výrobců chovají stejně i pokut jde o neobsazené instrukční kódy.

S 8085 je to trochu složitější, aneb ty oficiálně neobsazené kódy jsou reálné instrukce, ale obchodní politika INTELu z nich uvolnila jen RIM a SIM. Ty ostatní nedokumentované instrukce taky nemají obdobu v instrukčním kódu 8086. Ale jak to vypadá tak od všech výrobců se chovají stejně i pokut jde o nedokumentované instrukce.

Největší sranda je se Z80 aneb ta má u některých instrukcí nedefinované nastavení bitu stavového registr pak údajně je v originál Z80 chyba kterou někteří výrobci opravily. Takže pokut se zabrousí mimo oficiální instrukce tak se muže chovat pokaždé jinak aneb podle těchto nedokumentovaných instrukcí a chování stavového registru jde poznat výrobce (skupinu výrobců) dané Z80. Pokut se nepletu tak pro ZXS existuje hra která jede jen na originál Z80 a od MOSTEKu aneb hra využívá nedefinovaný bit stavového registr.

Autor:  faraon [ 30.05.2021, 09:51 ]
Předmět příspěvku:  Re: Ventilátor '85

Libor L.A. píše:
Klidně bych je využil pro nové instrukce.
A vznikne Z80 Second Edition :P

Když už do FPGA, mohlo by být zajímavé mít přepínání různých verzí se všemi odlišnostmi. Klidně i za běhu, pokud něco nepojede...

Autor:  aceltd [ 30.05.2021, 11:07 ]
Předmět příspěvku:  Re: Ventilátor '85

Po prostudování jsem dospěl k následujícímu závěru: Použít IO bloky 80..83,90..93,..,F0..F3 (kolize mne netrápí, instrukce neopustí pouzdro CPU) nebo modifikovat instrukce 20h a 30h protože 8085 ani Z80 v PMD nikdo určitě nemá. Víc se mi líbí ta druhá varianta, protože je efektivnější: INS CMD B0 B1 Bn namísto MVI, OUT, MVI, OUT. Případně použít všechny INS 08,10,18,20,28,30,38...ED,FD a zbavit se CMD. V reálu potom bude vypadat přepnutí banky např.: ED 01 50 (logických 1000..1FFF ve fyzických 50000..50FFF), mapování ROM: FD 80 FD 91 FD 02 FD 13 FD 24 (Monitor 8000..9FFF/fyzicky 0000..1FFF a BasicG 0000..2400/fyzicky 2000..4400), čtení RTC: D9 01 (A:=minuty), zápis RTC: D9 81 (minuty:=A), změna konfigurace CB 00 (konfigurační bity 00000000), nebo zápis pixelu do XVRAM: DD 01 FF 01 1F FF (pixel x=511 y=287 color=R3G3B3A3)...

Ještě jedna otázka: Interní cache v CPU bankovat/mapovat nebo fixnout někde ve fyzickém prostoru (např: BC00..BFFF). Při bankování bude prodleva během kopírováním způsobeným čekáním na DRAM, fixnutí zase nesmí kolidovat se stávajícím SW. Přednačítání nemá význam, vždy to bude zdržovat pomalejší SRAM a pomalá DRAM.

Jo a ještě jedna: Zatím to není implementováno, ale jakou variantu byste raději pro overlay videoram (aka GRAFIK v IQ151). Rozměry jsou 512x288px (16:9) a teď jestli 'RRGGBBAA (64color+4alpha), 'RRRRGGGG.BBBBAAAA (4096color+16alpha) nebo 'RRRRRRRR.GGGGGGGG.BBBBBBBB.----AAAA (16.7color+16alpha). Za mne 64c vzhledem k objemu dat potřebných k transférům a bez iluzí, pořád je to jen PéeMDéčko. Chipsetem generovaný obraz 288x256xACE zůstane uprostřed (3:4) a překryje /jej/ overlay.

Autor:  dex [ 30.05.2021, 11:16 ]
Předmět příspěvku:  Re: Ventilátor '85

64 barev je až kam.
Vícebarevnější režimy by musely být doplněné HW scrollem a HW sprity, jinak se to dá použít jen na statické obrázky a práci (barevné grafy, úprava fotek :D ).

Autor:  Libor L.A. [ 30.05.2021, 11:23 ]
Předmět příspěvku:  Re: Ventilátor '85

Raději bych šel do menšího počtu barvových registrů a každý z nich větší barevnou hloubku. Plný RGB formát bez HW akcelerace neutáhne 8080/8085/Z80 ani na 5MHz. Na téhle rychlosti se dá programově scrollovat tak do 512*384 v monochromu a už je na ploše vidět postupný posun.

Autor:  Libor L.A. [ 30.05.2021, 11:29 ]
Předmět příspěvku:  Re: Ventilátor '85

Teď mi ještě došla jedna věc. Instrukce zdánlivě zbytečné (MOV A,A až MOV H,H) nezaměňuj za nové. Dost často se používají jako časově rovnocenné zpožďovače k jiným instrukcím a využívá se právě jejich nulového dopadu.

Autor:  EC1045.01 [ 30.05.2021, 11:41 ]
Předmět příspěvku:  Re: Ventilátor '85

Osobně bych nehrabal nikam, kde by i teoreticky mohlo dojít ke kolizím. Takže pokut to rozšíření bude uvnitř PMD tak bych použil nepoužité IO adresy na IF modulu, je jich tam k dispozici ještě 12. Do instrukčního souboru CPU, bych nehraba aneb nikdy nevíš, co tam pojede a pak taky se to zhroutí vždy stejně.

Mám pocit, že z toho PMD děláš něco, co to není. Bít to na SAPI-1 tak to má v rodném listě stavebnicoví systém a můžeš si tam postavit, co chceš ale ta roztříštěnost jednotlivých standardních sestav. Co se snažím dostat na SAPI-1 hry z PMD tak celé je to koncipované tak aby se co nejméně zasahovalo do původních sestav (ZPS-2 až ZPS-4) a pokut možno se využilo to, co dané sestavy umožňují a i tak si to vyžádá dvě nové desky ale SAPI-1 zůstane SAPI-1.

Autor:  Libor L.A. [ 30.05.2021, 11:49 ]
Předmět příspěvku:  Re: Ventilátor '85

Na takovém bádání se člověk řadu věcí naučí, a pak přijde na to, že je vlastně nepotřebuje :) Ale zkušenosti zůstanou.

Stránka 12 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/