Přejít na obsah
ARCHIVEKArchiv e-mailových konferencí o 8bitových počítačích Archiv Pandory 1999 až 2013

Zpět na zprávu

Celé vlákno · 15 zpráv

Memext: resurrection

Michal Hučík SHARP MZ-800

Ahoj decka, mam tady jednu hracku mimo plan ;)
 http://ordoz.com/sharp/memext_cpuboard/

Prvni desticka se nam malinko nepovedla a tak si pro zasunuti do CPU patice
trochu prekazi s napajecim konektorem zakladove desky, ktery jsem prozatim
nahradil jinym typem na kabelu.
Jedinym nutnym zasahem do Sharpa je tedy pripojeni jednoho dratku na signal
DRAM_CAS. Toho prepinace si tam nevsimejte - pochazi jeste z experimentu, ktere 
jsem kdysi delal s Davidovym memextem a odpojuji se s nim puvodni pameti, coz v 
tomto pripade neni zapotrebi.
Memext se po resetu sam zinicializuje, takze neni potreba ani zadna uprava
ROMky.

Otestoval jsem prozatim zakladni funkci strankovani - 1 stranka ma 4kB, (tzn.
0x2000) a mame nyni k dispozici 64 stranek, ktere lze mapovat dle libosti.

Zvazujeme, zda by se stavajici zarizeni dalo rozsirit i o moznost cteni obsahu
strankovacich registru a Fuzzy pozadal o moznost nastavovani RO priznaku pro
jednotlive banky.

Prozatim se neplanuje vyroba dalsi verze desek, nicmene casem se ukaze...

Nejake omezene mnozstvi stavajicich desek se vali u Vaska, tak mu muzete zkusit 
napsat ;)

S pozdravem -
   Vasek a Michal

Re: Memext: resurrection

Martin Lukasek SHARP MZ-800

Parada. Bezva prace! Toho napajeciho konektoru je sice skoda, ale co uz. ;-)  Pokud zbude deska, urcite mam zajem.

Ahoj, Martin.

P.S. Nepokrocili jste nejak s podporou Ethernetu na Unikarte?

Re: Memext: resurrection

Vaclav Peroutka SHARP MZ-800

Zobrazit citovaný text (3 řádky)
> Otestoval jsem prozatim zakladni funkci strankovani - 1 stranka ma 4kB,
 (tzn.
> 0x2000) a mame nyni k dispozici 64 stranek, ktere lze mapovat dle libosti.
A protože stárnu a stávám se protivnějším, tak jen opravím drobnost -
velikost stránky je 8kB. A je skutečně 64 stránek, tedy dokupy 512kB SRAM.

Zobrazit citovaný text (3 řádky)
> Nejake omezene mnozstvi stavajicich desek se vali u Vaska, tak mu muzete
zkusit
> napsat ;)
Desek mám momentálně 8 kousků, k tomu sadu SRAM a CPLD, jsem schopen dát
dokupy celé kity v ceně 400Kč včetně pošty. A včetně kousku plošňáku,
který se odstřihne a zbude zúčastněným na experimenty se SMD obvody.

Pokud bude extrémní zájem, upravím layout, nechám vyrobit další sérii a 
nakoupím další sady.

Vašek

PS. A ted kdo k tomu napíše nějaký soft :-)

Re: Memext: resurrection

Pavel Železo SHARP MZ-800

Ahoj Vasku,

mel bych zajem o jeden osazeny komplet (pokud ti tedy jeste nejaky zbyva )

Mej se fajn
Pavel Zelezo
Zobrazit citovaný text (32 řádků)
> ----------------------------------------
> 
> > Otestoval jsem prozatim zakladni funkci strankovani - 1 stranka ma 4kB,
 (tzn.
> > 0x2000) a mame nyni k dispozici 64 stranek, ktere lze mapovat dle libosti.
> 
> A protože stárnu a stávám se protivnějším, tak jen opravím drobnost - 
velikost
> stránky je 8kB. A je skutečně 64 stránek, tedy dokupy 512kB SRAM.
> 
> > Nejake omezene mnozstvi stavajicich desek se vali u Vaska, tak mu muzete
> zkusit
> > napsat ;)
> 
> Desek mám momentálně 8 kousků, k tomu sadu SRAM a CPLD, jsem schopen dát 
dokupy
> celé kity v ceně 400Kč včetně pošty. A včetně kousku plošňáku,
který se
> odstřihne a zbude zúčastněným na experimenty se SMD obvody.
> 
> Pokud bude extrémní zájem, upravím layout, nechám vyrobit další sérii 
a nakoupím
> další sady.
> 
> Vašek
> 
> PS. A ted kdo k tomu napíše nějaký soft :-)
> 
> ---
> 
> 
> 

Re: Memext: resurrection

Michal Hučík SHARP MZ-800

Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (3 řádky)
> A protože stárnu a stávám se protivnějším, tak jen opravím drobnost - 
> velikost stránky je 8kB. A je skutečně 64 stránek, tedy dokupy 512kB
 SRAM.
Dekuji, ze jsi mne opravil nacelniku :)

Dnes jsem trochu experimentoval s kodem memexta. Jsou dve veci, ktere 
bych rad prenechal k diskuzi:

1) Cteni strankovacich registru - pro realizaci teto fce je potreba 
pridratovat i signal RD, coz by nemel byt problem, nicmene do xc9572 se 
to cele zrejme nevejde a jediny zpusob jakym se mi to podarilo uspesne 
zkompilovat (zatim ne otestovat) je takovy, ze jsem musel obetovat jednu 
stranku pameti, coz by mozna taky melo svuj smysl.
Predpokladam, ze by za obet padla napr. nulta stranka. To znamena, ze by 
obsah pameti 0x0000 - 0x1fff byl nemenny, vzdy by tam byla primapovana 
nulta banka, kterou by samozrejme slo duplicitne namapovat i kamkoliv 
jinam, pokud by to melo nejaky smysl.

Otazka tedy zni: obetovat tu jednu stranku pameti, aby jsme meli moznost 
cist obsah strankovacich registru, nebo se na cteni vykaslat?



2) Zpusob nastavovani strankovacich registru - jak uz mne opravil Vasek, 
tak ted mame pamet Sharpa rozdelenu na 8 stranek po 8kB. Nastavovani 
strankovacich registru probiha nasledovne:

LD BC, xxE7
LD A,yy
OUT (C),A

xx - cislo stranky pameti (je jich 8)
yy - cislo pametove banky (je jich 64)
0xE7 - adresa strankovaciho portu

Dotaz se tyka xx - tedy cisla stranky. Prislo mi prehladnejsi, kdyz se 
bude urcovat cislo stranky podle toho, jaka je jeji startovaci adresa v 
pameti, coz je zaroven castecne kompatibilni s Davidovym memextem.

stranka 0x00 - je pamet 0x0000 - 0x1fff
stranka 0x20 - je pamet 0x2000 - 0x3fff
stranka 0x40 - je pamet 0x4000 - 0x5fff
...
...

Je tu samozrejme i moznost nastavovat stranky podle poradoveho cisla 
registru:

stranka 0x00 - je pamet 0x0000 - 0x1fff
stranka 0x01 - je pamet 0x2000 - 0x3fff
stranka 0x02 - je pamet 0x4000 - 0x5fff
...
...

Otazka zni: ktery zpusob se vam vic zamlouva? Ja osobne jsem spise pro 
ten prvni.

Michal

Re: Memext: resurrection

Fuzzy SHARP MZ-800

Ahoj Michale,

ad 1) kdyz uz, tak bych byl pro to udelat nemennou posledni stranku,
0xe000 - 0xffff. Kdyby chtel nekdo udelat prepinani cp/m procesu, tak
by mu fixni 1. stranka vadila. Pro mzix by to ted taky vadilo
(aplikacni prostor 0x0000 - 0x7fff), dalo by se to ale prekonfigurovat
nebo obejit.
Jak asi uz vis, ja tedy nevidim velky prinos ve cteni strankovacich
registru, mel by se o to postarat OS. Mozna v nekterych aplikacich
ktere by primo pracovaly se strankovanim by se to hodilo, ale
momentalne nevim... Ja bych doporucoval to tam nedavat za tuhle cenu.
Pro me by byl mnohem uzitecnejsi... ro flag, za to bych klidne neco
obetoval :-)

as 2) prvni moznost se mi zda lepsi, ale asi je to celkem jedno.

Jinak dik za rozjeti memextu!

Fuzzy

2012/3/24 Michal Hučík (sharpemupandora.cz) <ordoz[doména skryta]>:
Zobrazit citovaný text (67 řádků)
>
> Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemupandora.cz) napsal(a):
>
>> A protože stárnu a stávám se protivnějším, tak jen opravím drobnost
 -
>> velikost stránky je 8kB. A je skutečně 64 stránek, tedy dokupy 512kB
SRAM.
>
>
> Dekuji, ze jsi mne opravil nacelniku :)
>
> Dnes jsem trochu experimentoval s kodem memexta. Jsou dve veci, ktere bych
> rad prenechal k diskuzi:
>
> 1) Cteni strankovacich registru - pro realizaci teto fce je potreba
> pridratovat i signal RD, coz by nemel byt problem, nicmene do xc9572 se to
> cele zrejme nevejde a jediny zpusob jakym se mi to podarilo uspesne
> zkompilovat (zatim ne otestovat) je takovy, ze jsem musel obetovat jednu
> stranku pameti, coz by mozna taky melo svuj smysl.
> Predpokladam, ze by za obet padla napr. nulta stranka. To znamena, ze by
> obsah pameti 0x0000 - 0x1fff byl nemenny, vzdy by tam byla primapovana nulta
> banka, kterou by samozrejme slo duplicitne namapovat i kamkoliv jinam, pokud
> by to melo nejaky smysl.
>
> Otazka tedy zni: obetovat tu jednu stranku pameti, aby jsme meli moznost
> cist obsah strankovacich registru, nebo se na cteni vykaslat?
>
>
>
> 2) Zpusob nastavovani strankovacich registru - jak uz mne opravil Vasek, tak
> ted mame pamet Sharpa rozdelenu na 8 stranek po 8kB. Nastavovani
> strankovacich registru probiha nasledovne:
>
> LD BC, xxE7
> LD A,yy
> OUT (C),A
>
> xx - cislo stranky pameti (je jich 8)
> yy - cislo pametove banky (je jich 64)
> 0xE7 - adresa strankovaciho portu
>
> Dotaz se tyka xx - tedy cisla stranky. Prislo mi prehladnejsi, kdyz se bude
> urcovat cislo stranky podle toho, jaka je jeji startovaci adresa v pameti,
> coz je zaroven castecne kompatibilni s Davidovym memextem.
>
> stranka 0x00 - je pamet 0x0000 - 0x1fff
> stranka 0x20 - je pamet 0x2000 - 0x3fff
> stranka 0x40 - je pamet 0x4000 - 0x5fff
> ...
> ...
>
> Je tu samozrejme i moznost nastavovat stranky podle poradoveho cisla
> registru:
>
> stranka 0x00 - je pamet 0x0000 - 0x1fff
> stranka 0x01 - je pamet 0x2000 - 0x3fff
> stranka 0x02 - je pamet 0x4000 - 0x5fff
> ...
> ...
>
> Otazka zni: ktery zpusob se vam vic zamlouva? Ja osobne jsem spise pro ten
> prvni.
>
> Michal
>
>
> ---

Re: Memext: resurrection

Michal Hučík SHARP MZ-800

Dne 24.3.2012 18:44, Fuzzy (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (6 řádků)
> Jak asi uz vis, ja tedy nevidim velky prinos ve cteni strankovacich
> registru, mel by se o to postarat OS. Mozna v nekterych aplikacich
> ktere by primo pracovaly se strankovanim by se to hodilo, ale
> momentalne nevim... Ja bych doporucoval to tam nedavat za tuhle cenu.
> Pro me by byl mnohem uzitecnejsi... ro flag, za to bych klidne neco
> obetoval :-)
Martine pokud by to melo byt nastavovani RO flagu pro jednotlive stranky 
pameti, tedy 8 bitovy registr, aplikovany podle poslednich 3 bitu 
adresni sbernice, tak to by jsme tam snad nacpat dokazali. Myslim si 
ale, ze tohle neni to co mas na mysli...

Pokud by ti slo o RO priznak pro jednotlive pametove banky, tak na to 
tam mame asi male CPLD ... Znamenalo by to totiz 64 bitovy registr a 
take jeho aplikace by byla trochu slozitejsi:  podle hornich 3 bitu 
adresni sbernice identifikujeme stranku, podle ni urcime prislusny 
strankovaci registr. Z obsahu registru nacteme cislo banky, ktere nam 
rekne v kolikatem bitu je ulozen stav RO atributu, ktery nas prave 
zajima. Ve VHDL se to napise celkem snadno, ale myslim, ze ta logika by 
se proste do xc9572 nevesla ...

Michal

Re: Memext: resurrection

Radek Suk SHARP MZ-800

Ahoj Michale

- je mozno udelat schema na bilem podkladu?  
(http://ordoz.com/sharp/new_memext/memext_cpld_cpu.png)
- planujete udelat tabulku soucastek a pouzder + pripadne kde to koupit
- planujete udelat Gerger data aby si to mohl kazdy udelat?
- ukazete VHD soubor aby se videlo jak to funguje? To byl potreboval nejvic.
- napiste proc je tam U2 (74HCP245) - k cemu slouzi

Ja bych byl pro verzi kde se da vse menit i treba ze cenu vetsiho CPLD 
obvodu. Zjistoval jsem co existuje a hlavne kolik to stoji.

www.tme.eu XC9572XL10VQG44  cena  70Kc/kus bez DPH Integrovaný obvod: 
CPLD;  72; Počet vst./výst:34; 10ns; VQFP44

www.tme.eu XC95144XL10TQG1  cena 129Kc/kus bez DPH Integrovaný obvod: 
CPLD; 144; Počet vst./výst:81; 10ns; TQFP100
cz.farnell.com  XC95144XL-10TQG100C cena 155Kc/kus bez DPH  odkaz 
http://cz.farnell.com/xilinx/xc95144xl-10tqg100c/cpld-isp-144mcells-3-3v-100tqfp
/dp/1776144

Otazka je kolik z nas je schopno spravne zapajet ten 100 pinovy obvod? 
Kdyz by byla sance, tak bych byl pro vymenu za tento a pak by se tam 
mohl dat i ten 64bitovy registr
pro R/O na kazdy segment pameti. A soucasne by tam byl navic ten vyvod 
pro RD.

Take potrebuji vysvetlit jak funguje:

LD BC, xxE7
LD A,yy
OUT (C),A

xx - cislo stranky pameti (je jich 8)
yy - cislo pametove banky (je jich 64)
0xE7 - adresa strankovaciho portu

stranka 0x00 - je pamet 0x0000 - 0x1fff
stranka 0x20 - je pamet 0x2000 - 0x3fff
stranka 0x40 - je pamet 0x4000 - 0x5fff

jedna se mi o to ze dle schematu nejsou do CPLD privedene D6 a D7 a tak 
to nemuze fungovat.

Take logicky z toho vyplyva zda neprohodit "xx" a "yy" a pak staci jen 
D0,D1 a D2 a tim padem neni potreba privest na CPLD D3,D4 a D5 a tak je 
jeden privod volny pro RD.
Druhe reseni je, neprivest na CPLD nektere A signaly a tim umoznit 
privest RD. Resenich je vice, zalezi co se bude chtit udelat.
Mozna se zjisti ze neni potreba A8, A9, D5 az D3 - celkem 5 signalu. V 
jinem zapojeni bych zapojil jen A15, A14 a A13 (ne A12 - A8) a pak A7-A0 
a D0 az D5 (ne D6 a D7) a nasledne na A13-15 da cislo stranky pameti a 
na D0 az D5 se da cislo pametove banky. Pri tomto by slo zapojit i D6 a 
D7 a tim padem cist cely bajt najednou, kdyz by to bylo potreba.


Nevim kolik zdroju je ted jeste volnych v CPLD ale tak by mozna slo 
udelat R/O flag alespon pro tech 8 stranek pameti a tak treba simulovat 
rom na zacatku pameti.

Radek



Dne 24.3.2012 17:12, Michal Hučík (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (65 řádků)
>
> Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemupandora.cz) napsal(a):
>> A protože stárnu a stávám se protivnějším, tak jen opravím drobnost ->> velikost stránky je 8kB. A je skutečně 64 stránek, tedy dokupy 512kB 
>> SRAM.
>
> Dekuji, ze jsi mne opravil nacelniku :)
>
> Dnes jsem trochu experimentoval s kodem memexta. Jsou dve veci, ktere 
> bych rad prenechal k diskuzi:
>
> 1) Cteni strankovacich registru - pro realizaci teto fce je potreba 
> pridratovat i signal RD, coz by nemel byt problem, nicmene do xc9572 
> se to cele zrejme nevejde a jediny zpusob jakym se mi to podarilo 
> uspesne zkompilovat (zatim ne otestovat) je takovy, ze jsem musel 
> obetovat jednu stranku pameti, coz by mozna taky melo svuj smysl.
> Predpokladam, ze by za obet padla napr. nulta stranka. To znamena, ze 
> by obsah pameti 0x0000 - 0x1fff byl nemenny, vzdy by tam byla 
> primapovana nulta banka, kterou by samozrejme slo duplicitne namapovat 
> i kamkoliv jinam, pokud by to melo nejaky smysl.
>
> Otazka tedy zni: obetovat tu jednu stranku pameti, aby jsme meli 
> moznost cist obsah strankovacich registru, nebo se na cteni vykaslat?
>
>
>
> 2) Zpusob nastavovani strankovacich registru - jak uz mne opravil 
> Vasek, tak ted mame pamet Sharpa rozdelenu na 8 stranek po 8kB. 
> Nastavovani strankovacich registru probiha nasledovne:
>
> LD BC, xxE7
> LD A,yy
> OUT (C),A
>
> xx - cislo stranky pameti (je jich 8)
> yy - cislo pametove banky (je jich 64)
> 0xE7 - adresa strankovaciho portu
>
> Dotaz se tyka xx - tedy cisla stranky. Prislo mi prehladnejsi, kdyz se 
> bude urcovat cislo stranky podle toho, jaka je jeji startovaci adresa 
> v pameti, coz je zaroven castecne kompatibilni s Davidovym memextem.
>
> stranka 0x00 - je pamet 0x0000 - 0x1fff
> stranka 0x20 - je pamet 0x2000 - 0x3fff
> stranka 0x40 - je pamet 0x4000 - 0x5fff
> ...
> ...
>
> Je tu samozrejme i moznost nastavovat stranky podle poradoveho cisla 
> registru:
>
> stranka 0x00 - je pamet 0x0000 - 0x1fff
> stranka 0x01 - je pamet 0x2000 - 0x3fff
> stranka 0x02 - je pamet 0x4000 - 0x5fff
> ...
> ...
>
> Otazka zni: ktery zpusob se vam vic zamlouva? Ja osobne jsem spise pro 
> ten prvni.
>
> Michal
>
>
> ---
>
>

Re: Memext: resurrection

Michal Hučík SHARP MZ-800


Ahoj Radku,

tady je VHDL kod overeneho memexta a je tam taky experimentalni kod pro 
variantu se ctenim registru za cenu ztraty nulte stranky pameti.

http://duna.ordoz.com/memext_cpuboard/memext_cpuboard_rtl.rar

Co se tyka schematu a seznamu soucastek, tak to tady myslim posilal 
Vasek v prosinci. Obrazek se schematem generoval Vasek, tak nevim jake 
jsou moznosti ve zmene jeho formatu - ja bych asi zkusil invertovat 
barvy v nejakem gimpu, ci necem podobnem..
Oproti Vaskovemu puvodnimu navrhu jsem do zapojeni pridal pouze 10k 
pull-up pripojeny mezi +5V a signal CAS, ktery tam vedeme dratkem, 
protoze jsem mel obavu z toho, kdybych nahodou ten dratek zapomnel 
pripojit a nebo kdyby ten jednopinovy konektor nebyl spolehlive vodivy.

Popis funkce memexta na cpu patici je zhruba nasledujici:

Pro IORQ - WR se dekoduje jen operace na portu 0xE7 (0 - 7 bit adresni 
sbernice). Na horni casti adresni sbernice (13 - 15 bit) se ocekava 
cislo stranky/registru, ktery se snazime zmenit.
Na datove sbernici se pri IORQ - WR ocekava nova hodnota (cislo pametove 
banky), kterou chceme do registru vlozit. Tato hodnota muze byt pouze v 
rozsahu 0 - 63, coz znamena, ze nam z datovky staci jen bity 0 - 5.

Pro aplikaci samotneho strankovani je do memexta priveden dratkem signal 
CAS, kterym nam GDG rika, ze prave probiha operace s DRAM. Protoze nas 
memext tuto DRAM obchazi a nahrazuje ji 512kB SRAM, tak je v takovem 
pripade potreba pouzit LVX245, kterym se "odstrihne" datova sbernice 
memexta od zbytku pocitace a zabranime tak kolizi na datove sbernici.
Pri adresovani SRAM se jako spodni cast adresy pouzije standardnich 16 
bitu z adresni sbernice Z80. Hornich 5 bitu adresy SRAM se urci podle 
obsahu prislusneho strankovaciho registru (stranka/registr je zde take 
odvozena podle bitu 13 - 15 z adresni sbernice).

V pripade experimentalniho kodu, ktery by umoznoval cteni strankovacich 
registru by bylo potreba pripojit do CPLD jeste signal RD a optimalne 
take zbyvajici 2 bity datove sbernice, aby nam jejich obsah pri cteni 
nepoletoval vzduchem - jinak by bylo potreba si po precteni dat udelat 
jeste AND 0x3f, aby se vynulovaly horni 2 bity.

Ted kdyz to pisu, tak jsem si uvedomil, ze jsem v tom experimentalnim 
VHDL kodu navic jeste zapomnel na to, ze pri IORQ - RD - 0xE7 musim take 
deaktivovat Sharpackou datovou sbernici pomoci LVX245, jako se to dela i 
v pripade, kdy se mluvi se SRAM.

Pro pripojeni chybejicich signalu by se pouzily piny na kterych je nyni 
nadbytecna cast adresni sbernice ADDR 8 - 12.


Co se tyka pouziti vetsiho CPLD, tak pro cteni registru by asi urcite 
postacoval xc95144, ale u toho RO flagu se obavam, ze by se to veslo tak 
mozna do xc95288, coz uz je nesmyslne drahe reseni. To uz by asi bylo 
lepsi dat tam spise nejake male FPGA.

Memext v soucasne podobe Vasek optimalizoval tak, aby se vesel do co 
nejlevnejsich soucastek, cemuz odpovida i omezeni na 64 pametovych bank 
po 8kB. Je otazka, zda navrhovane doplnkove funkce jsou opravdu tak 
prinosne, aby stalo za to delat upgrade logiky na neco vetsiho.

Zkusim napsat jeste kod pro RO flagy jak stranek, tak i bank a uvidime 
co z toho vyleze...

Michal

Dne 26.3.2012 0:39, Radek Suk (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (140 řádků)
>
>
> Ahoj Michale
>
> - je mozno udelat schema na bilem podkladu?  
> (http://ordoz.com/sharp/new_memext/memext_cpld_cpu.png)
> - planujete udelat tabulku soucastek a pouzder + pripadne kde to koupit
> - planujete udelat Gerger data aby si to mohl kazdy udelat?
> - ukazete VHD soubor aby se videlo jak to funguje? To byl potreboval 
> nejvic.
> - napiste proc je tam U2 (74HCP245) - k cemu slouzi
>
> Ja bych byl pro verzi kde se da vse menit i treba ze cenu vetsiho CPLD 
> obvodu. Zjistoval jsem co existuje a hlavne kolik to stoji.
>
> www.tme.eu XC9572XL10VQG44  cena  70Kc/kus bez DPH Integrovaný obvod: 
> CPLD;  72; Počet vst./výst:34; 10ns; VQFP44
>
> www.tme.eu XC95144XL10TQG1  cena 129Kc/kus bez DPH Integrovaný obvod: 
> CPLD; 144; Počet vst./výst:81; 10ns; TQFP100
> cz.farnell.com  XC95144XL-10TQG100C cena 155Kc/kus bez DPH  odkaz 
>
 http://cz.farnell.com/xilinx/xc95144xl-10tqg100c/cpld-isp-144mcells-3-3v-100tqf
p/dp/1776144 
>
>
> Otazka je kolik z nas je schopno spravne zapajet ten 100 pinovy obvod? 
> Kdyz by byla sance, tak bych byl pro vymenu za tento a pak by se tam 
> mohl dat i ten 64bitovy registr
> pro R/O na kazdy segment pameti. A soucasne by tam byl navic ten vyvod 
> pro RD.
>
> Take potrebuji vysvetlit jak funguje:
>
> LD BC, xxE7
> LD A,yy
> OUT (C),A
>
> xx - cislo stranky pameti (je jich 8)
> yy - cislo pametove banky (je jich 64)
> 0xE7 - adresa strankovaciho portu
>
> stranka 0x00 - je pamet 0x0000 - 0x1fff
> stranka 0x20 - je pamet 0x2000 - 0x3fff
> stranka 0x40 - je pamet 0x4000 - 0x5fff
>
> jedna se mi o to ze dle schematu nejsou do CPLD privedene D6 a D7 a 
> tak to nemuze fungovat.
>
> Take logicky z toho vyplyva zda neprohodit "xx" a "yy" a pak staci jen 
> D0,D1 a D2 a tim padem neni potreba privest na CPLD D3,D4 a D5 a tak 
> je jeden privod volny pro RD.
> Druhe reseni je, neprivest na CPLD nektere A signaly a tim umoznit 
> privest RD. Resenich je vice, zalezi co se bude chtit udelat.
> Mozna se zjisti ze neni potreba A8, A9, D5 az D3 - celkem 5 signalu. V 
> jinem zapojeni bych zapojil jen A15, A14 a A13 (ne A12 - A8) a pak 
> A7-A0 a D0 az D5 (ne D6 a D7) a nasledne na A13-15 da cislo stranky 
> pameti a na D0 az D5 se da cislo pametove banky. Pri tomto by slo 
> zapojit i D6 a D7 a tim padem cist cely bajt najednou, kdyz by to bylo 
> potreba.
>
>
> Nevim kolik zdroju je ted jeste volnych v CPLD ale tak by mozna slo 
> udelat R/O flag alespon pro tech 8 stranek pameti a tak treba 
> simulovat rom na zacatku pameti.
>
> Radek
>
>
>
> Dne 24.3.2012 17:12, Michal Hučík (sharpemupandora.cz) napsal(a):
>>
>> Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemupandora.cz) napsal(a):
>>> A protože stárnu a stávám se protivnějším, tak jen opravím drobnost >>> - velikost stránky je 8kB. A je skutečně 64 stránek, tedy dokupy 
>>> 512kB SRAM.
>>
>> Dekuji, ze jsi mne opravil nacelniku :)
>>
>> Dnes jsem trochu experimentoval s kodem memexta. Jsou dve veci, ktere 
>> bych rad prenechal k diskuzi:
>>
>> 1) Cteni strankovacich registru - pro realizaci teto fce je potreba 
>> pridratovat i signal RD, coz by nemel byt problem, nicmene do xc9572 
>> se to cele zrejme nevejde a jediny zpusob jakym se mi to podarilo 
>> uspesne zkompilovat (zatim ne otestovat) je takovy, ze jsem musel 
>> obetovat jednu stranku pameti, coz by mozna taky melo svuj smysl.
>> Predpokladam, ze by za obet padla napr. nulta stranka. To znamena, ze 
>> by obsah pameti 0x0000 - 0x1fff byl nemenny, vzdy by tam byla 
>> primapovana nulta banka, kterou by samozrejme slo duplicitne 
>> namapovat i kamkoliv jinam, pokud by to melo nejaky smysl.
>>
>> Otazka tedy zni: obetovat tu jednu stranku pameti, aby jsme meli 
>> moznost cist obsah strankovacich registru, nebo se na cteni vykaslat?
>>
>>
>>
>> 2) Zpusob nastavovani strankovacich registru - jak uz mne opravil 
>> Vasek, tak ted mame pamet Sharpa rozdelenu na 8 stranek po 8kB. 
>> Nastavovani strankovacich registru probiha nasledovne:
>>
>> LD BC, xxE7
>> LD A,yy
>> OUT (C),A
>>
>> xx - cislo stranky pameti (je jich 8)
>> yy - cislo pametove banky (je jich 64)
>> 0xE7 - adresa strankovaciho portu
>>
>> Dotaz se tyka xx - tedy cisla stranky. Prislo mi prehladnejsi, kdyz 
>> se bude urcovat cislo stranky podle toho, jaka je jeji startovaci 
>> adresa v pameti, coz je zaroven castecne kompatibilni s Davidovym 
>> memextem.
>>
>> stranka 0x00 - je pamet 0x0000 - 0x1fff
>> stranka 0x20 - je pamet 0x2000 - 0x3fff
>> stranka 0x40 - je pamet 0x4000 - 0x5fff
>> ...
>> ...
>>
>> Je tu samozrejme i moznost nastavovat stranky podle poradoveho cisla 
>> registru:
>>
>> stranka 0x00 - je pamet 0x0000 - 0x1fff
>> stranka 0x01 - je pamet 0x2000 - 0x3fff
>> stranka 0x02 - je pamet 0x4000 - 0x5fff
>> ...
>> ...
>>
>> Otazka zni: ktery zpusob se vam vic zamlouva? Ja osobne jsem spise 
>> pro ten prvni.
>>
>> Michal
>>
>>
>> ---
>>
>>
>
>
> ---

Re: Memext: resurrection

Fuzzy SHARP MZ-800

Ahoj Michale, Radku, vsichni,

ro stranek by podle me bylo dostacujici.
Pouziti: ochrana oblasti pameti vyhrazenych pro system, aby byla mensi
pravdepodobnost, ze jeden proces shodi cely OS.

Jako nahrada ROM by to asi moc pouzitelne nebylo, protoze pokud vim
tak Sharp ROM prekryva cokoliv na memextu; memext se strankuje vzdy do
prostoru kde je normalne RAM.

Jestli chcete nekdo delat modifikace, tak bych rad pozadal o
dodrzovani zpetne kompatibility - bud s Michalovym/Vaskovym memextem,
nebo s Davidovym, at nam nevyroste jeste treti varianta.

Zbyva adaptovat/psat software :-)

Fuzzy

2012/3/26 Michal Hučík (sharpemupandora.cz) <ordoz[doména skryta]>:
Zobrazit citovaný text (218 řádků)
>
>
>
> Ahoj Radku,
>
> tady je VHDL kod overeneho memexta a je tam taky experimentalni kod pro
> variantu se ctenim registru za cenu ztraty nulte stranky pameti.
>
> http://duna.ordoz.com/memext_cpuboard/memext_cpuboard_rtl.rar
>
> Co se tyka schematu a seznamu soucastek, tak to tady myslim posilal Vasek v
> prosinci. Obrazek se schematem generoval Vasek, tak nevim jake jsou moznosti
> ve zmene jeho formatu - ja bych asi zkusil invertovat barvy v nejakem gimpu,
> ci necem podobnem..
> Oproti Vaskovemu puvodnimu navrhu jsem do zapojeni pridal pouze 10k pull-up
> pripojeny mezi +5V a signal CAS, ktery tam vedeme dratkem, protoze jsem mel
> obavu z toho, kdybych nahodou ten dratek zapomnel pripojit a nebo kdyby ten
> jednopinovy konektor nebyl spolehlive vodivy.
>
> Popis funkce memexta na cpu patici je zhruba nasledujici:
>
> Pro IORQ - WR se dekoduje jen operace na portu 0xE7 (0 - 7 bit adresni
> sbernice). Na horni casti adresni sbernice (13 - 15 bit) se ocekava cislo
> stranky/registru, ktery se snazime zmenit.
> Na datove sbernici se pri IORQ - WR ocekava nova hodnota (cislo pametove
> banky), kterou chceme do registru vlozit. Tato hodnota muze byt pouze v
> rozsahu 0 - 63, coz znamena, ze nam z datovky staci jen bity 0 - 5.
>
> Pro aplikaci samotneho strankovani je do memexta priveden dratkem signal
> CAS, kterym nam GDG rika, ze prave probiha operace s DRAM. Protoze nas
> memext tuto DRAM obchazi a nahrazuje ji 512kB SRAM, tak je v takovem pripade
> potreba pouzit LVX245, kterym se "odstrihne" datova sbernice memexta od
> zbytku pocitace a zabranime tak kolizi na datove sbernici.
> Pri adresovani SRAM se jako spodni cast adresy pouzije standardnich 16 bitu
> z adresni sbernice Z80. Hornich 5 bitu adresy SRAM se urci podle obsahu
> prislusneho strankovaciho registru (stranka/registr je zde take odvozena
> podle bitu 13 - 15 z adresni sbernice).
>
> V pripade experimentalniho kodu, ktery by umoznoval cteni strankovacich
> registru by bylo potreba pripojit do CPLD jeste signal RD a optimalne take
> zbyvajici 2 bity datove sbernice, aby nam jejich obsah pri cteni nepoletoval
> vzduchem - jinak by bylo potreba si po precteni dat udelat jeste AND 0x3f,
> aby se vynulovaly horni 2 bity.
>
> Ted kdyz to pisu, tak jsem si uvedomil, ze jsem v tom experimentalnim VHDL
> kodu navic jeste zapomnel na to, ze pri IORQ - RD - 0xE7 musim take
> deaktivovat Sharpackou datovou sbernici pomoci LVX245, jako se to dela i v
> pripade, kdy se mluvi se SRAM.
>
> Pro pripojeni chybejicich signalu by se pouzily piny na kterych je nyni
> nadbytecna cast adresni sbernice ADDR 8 - 12.
>
>
> Co se tyka pouziti vetsiho CPLD, tak pro cteni registru by asi urcite
> postacoval xc95144, ale u toho RO flagu se obavam, ze by se to veslo tak
> mozna do xc95288, coz uz je nesmyslne drahe reseni. To uz by asi bylo lepsi
> dat tam spise nejake male FPGA.
>
> Memext v soucasne podobe Vasek optimalizoval tak, aby se vesel do co
> nejlevnejsich soucastek, cemuz odpovida i omezeni na 64 pametovych bank po
> 8kB. Je otazka, zda navrhovane doplnkove funkce jsou opravdu tak prinosne,
> aby stalo za to delat upgrade logiky na neco vetsiho.
>
> Zkusim napsat jeste kod pro RO flagy jak stranek, tak i bank a uvidime co z
> toho vyleze...
>
> Michal
>
> Dne 26.3.2012 0:39, Radek Suk (sharpemupandora.cz) napsal(a):
>
>>
>>
>> Ahoj Michale
>>
>> - je mozno udelat schema na bilem podkladu?
>>  (http://ordoz.com/sharp/new_memext/memext_cpld_cpu.png)
>> - planujete udelat tabulku soucastek a pouzder + pripadne kde to koupit
>> - planujete udelat Gerger data aby si to mohl kazdy udelat?
>> - ukazete VHD soubor aby se videlo jak to funguje? To byl potreboval
>> nejvic.
>> - napiste proc je tam U2 (74HCP245) - k cemu slouzi
>>
>> Ja bych byl pro verzi kde se da vse menit i treba ze cenu vetsiho CPLD
>> obvodu. Zjistoval jsem co existuje a hlavne kolik to stoji.
>>
>> www.tme.eu XC9572XL10VQG44  cena  70Kc/kus bez DPH Integrovaný obvod:
>> CPLD;  72; Počet vst./výst:34; 10ns; VQFP44
>>
>> www.tme.eu XC95144XL10TQG1  cena 129Kc/kus bez DPH Integrovaný obvod:
>> CPLD; 144; Počet vst./výst:81; 10ns; TQFP100
>> cz.farnell.com  XC95144XL-10TQG100C cena 155Kc/kus bez DPH  odkaz
>>
 http://cz.farnell.com/xilinx/xc95144xl-10tqg100c/cpld-isp-144mcells-3-3v-100tqf
p/dp/1776144
>>
>> Otazka je kolik z nas je schopno spravne zapajet ten 100 pinovy obvod?
>> Kdyz by byla sance, tak bych byl pro vymenu za tento a pak by se tam mohl
>> dat i ten 64bitovy registr
>> pro R/O na kazdy segment pameti. A soucasne by tam byl navic ten vyvod pro
>> RD.
>>
>> Take potrebuji vysvetlit jak funguje:
>>
>> LD BC, xxE7
>> LD A,yy
>> OUT (C),A
>>
>> xx - cislo stranky pameti (je jich 8)
>> yy - cislo pametove banky (je jich 64)
>> 0xE7 - adresa strankovaciho portu
>>
>> stranka 0x00 - je pamet 0x0000 - 0x1fff
>> stranka 0x20 - je pamet 0x2000 - 0x3fff
>> stranka 0x40 - je pamet 0x4000 - 0x5fff
>>
>> jedna se mi o to ze dle schematu nejsou do CPLD privedene D6 a D7 a tak to
>> nemuze fungovat.
>>
>> Take logicky z toho vyplyva zda neprohodit "xx" a "yy" a pak staci jen
>> D0,D1 a D2 a tim padem neni potreba privest na CPLD D3,D4 a D5 a tak je
>> jeden privod volny pro RD.
>> Druhe reseni je, neprivest na CPLD nektere A signaly a tim umoznit privest
>> RD. Resenich je vice, zalezi co se bude chtit udelat.
>> Mozna se zjisti ze neni potreba A8, A9, D5 az D3 - celkem 5 signalu. V
>> jinem zapojeni bych zapojil jen A15, A14 a A13 (ne A12 - A8) a pak A7-A0 a
>> D0 az D5 (ne D6 a D7) a nasledne na A13-15 da cislo stranky pameti a na D0
>> az D5 se da cislo pametove banky. Pri tomto by slo zapojit i D6 a D7 a tim
>> padem cist cely bajt najednou, kdyz by to bylo potreba.
>>
>>
>> Nevim kolik zdroju je ted jeste volnych v CPLD ale tak by mozna slo udelat
>> R/O flag alespon pro tech 8 stranek pameti a tak treba simulovat rom na
>> zacatku pameti.
>>
>> Radek
>>
>>
>>
>> Dne 24.3.2012 17:12, Michal Hučík (sharpemupandora.cz) napsal(a):
>>>
>>>
>>> Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemupandora.cz) napsal(a):
>>>>
>>>> A protože stárnu a stávám se protivnějším, tak jen opravím drobnost
-
>>>> velikost stránky je 8kB. A je skutečně 64 stránek, tedy dokupy 512kB
SRAM.
>>>
>>>
>>> Dekuji, ze jsi mne opravil nacelniku :)
>>>
>>> Dnes jsem trochu experimentoval s kodem memexta. Jsou dve veci, ktere
>>> bych rad prenechal k diskuzi:
>>>
>>> 1) Cteni strankovacich registru - pro realizaci teto fce je potreba
>>> pridratovat i signal RD, coz by nemel byt problem, nicmene do xc9572 se to
>>> cele zrejme nevejde a jediny zpusob jakym se mi to podarilo uspesne
>>> zkompilovat (zatim ne otestovat) je takovy, ze jsem musel obetovat jednu
>>> stranku pameti, coz by mozna taky melo svuj smysl.
>>> Predpokladam, ze by za obet padla napr. nulta stranka. To znamena, ze by
>>> obsah pameti 0x0000 - 0x1fff byl nemenny, vzdy by tam byla primapovana
nulta
>>> banka, kterou by samozrejme slo duplicitne namapovat i kamkoliv jinam,
pokud
>>> by to melo nejaky smysl.
>>>
>>> Otazka tedy zni: obetovat tu jednu stranku pameti, aby jsme meli moznost
>>> cist obsah strankovacich registru, nebo se na cteni vykaslat?
>>>
>>>
>>>
>>> 2) Zpusob nastavovani strankovacich registru - jak uz mne opravil Vasek,
>>> tak ted mame pamet Sharpa rozdelenu na 8 stranek po 8kB. Nastavovani
>>> strankovacich registru probiha nasledovne:
>>>
>>> LD BC, xxE7
>>> LD A,yy
>>> OUT (C),A
>>>
>>> xx - cislo stranky pameti (je jich 8)
>>> yy - cislo pametove banky (je jich 64)
>>> 0xE7 - adresa strankovaciho portu
>>>
>>> Dotaz se tyka xx - tedy cisla stranky. Prislo mi prehladnejsi, kdyz se
>>> bude urcovat cislo stranky podle toho, jaka je jeji startovaci adresa v
>>> pameti, coz je zaroven castecne kompatibilni s Davidovym memextem.
>>>
>>> stranka 0x00 - je pamet 0x0000 - 0x1fff
>>> stranka 0x20 - je pamet 0x2000 - 0x3fff
>>> stranka 0x40 - je pamet 0x4000 - 0x5fff
>>> ...
>>> ...
>>>
>>> Je tu samozrejme i moznost nastavovat stranky podle poradoveho cisla
>>> registru:
>>>
>>> stranka 0x00 - je pamet 0x0000 - 0x1fff
>>> stranka 0x01 - je pamet 0x2000 - 0x3fff
>>> stranka 0x02 - je pamet 0x4000 - 0x5fff
>>> ...
>>> ...
>>>
>>> Otazka zni: ktery zpusob se vam vic zamlouva? Ja osobne jsem spise pro
>>> ten prvni.
>>>
>>> Michal
>>>
>>>
>>> ---
>>>
>>>
>>
>>
>> ---
>
>
>
> ---

Re: Memext: resurrection

Michal Hučík SHARP MZ-800

Ahoj,

dnes jsem teda zkusil ruzne varianty VHDL pro memext - pokud nekoho 
zajimaji, tak jsou zde http://duna.ordoz.com/memext_cpuboard/


A)
mz800memext_IORQ_RD.vhd - cteni obsahu strankovacich registru. Oproti 
vcerejsi verzi jsem tam opravil chybu v procesu nastaveni dat, ktere by 
se spravne melo dit ve chvili, kdy spadne IORQ na hodnotu 0 (narozdil od 
zapisu do strankovacich registru, ktery se musi dit az kdyz jde IORQ 
nahoru) a pridal jsem take odstrizeni datove sbernice Sharpa pri IORQ RD 
operacich. Do stavajiciho CPLD se to vejde jen za cenu ztraty jedne 
pametove stranky, coz je IMHO na prd.


B)
mz800memext_locking.vhd - nastavovani RO priznaku pro jednotlive 
pametove stranky. Udelal jsem to tak, ze pri OUT (C),A se 8. bitem 
adresni sbernice ( 0.bit registru B)  rika zda se bude strankovat, nebo 
nastavovat RO flag. Pri hodnote 0 se pouze strankuje, pri hodnote 1 se 
pouze nastavuje flag, ktery je pak ocekavan na 0. bitu datove sbernice 
(registr A). Zamykani je fyzicky realizovano tak, ze prerusime signal 
MZ800_CAS od SRAM a budeme jej ridit z CPLD, ktere ho pak pri MEM_WR 
operacich nastavuje podle stavu RO flagu. Do stavajiciho XC9572 se to 
sice vejde bez ztraty jakekoliv dalsi funkcionality, nicmene mu nevoni 
nase stavajici pripojeni pinu a muselo by se zrejme nejakym docela 
razantnim zpusobem zmenit zapojeni/routovani - dal jsem to nezkoumal.


C)
mz800memext_locking_IORQ_RD.vhd - maximalisticky memext, ktery obsahuje 
jak cteni registru, tak i zamykani jednotlivych stranek pameti. Podle 
vseho by se to melo vejit do XC95144 ve kterem by mozna zbylo misto i na 
nejake dalsi veci - zkousel jsem strankovani  128 bank po 4kB, ale to uz 
bylo bez sance - asi by jsme tam mohli nacpat oddelovac datove sbernice 
a tak by se nam deska zjednodusila o to, ze by tam nemuselo byt LVX245.


Varianta A podle mne nestoji za tu ztratu jedne stranky pameti. Varianta 
B se _asi_ neobejde bez razantnejsi zmeny desky - pujde to vubec 
proroutovat na 2 vrstevach? Varianta C obnasi uz mozna pro nekoho 
pomerne drahe CPLD, ktere taky navic muzou mit nekteri problem zapajet 
(stejny model je tusim v Davidovem scandoubleru).

Michal

Re: Memext: resurrection

Vaclav Peroutka SHARP MZ-800

Podle mne momentálně nestojí za to jakkoli upravovat HW Memextu. Čtení
 mapování tam není, to je jasné. To si může pamatovat přímo systém, ať
už nějaký OS, nebo cokoli co s memextem poběží a bude ho umět využívat,
třeba hra ze ZX128.

Read-only flag je určitě hezká věc, pokud je nutná a do stávájícího
memextu se nevejde celá, co třeba udělat zamykací jen horní 4 stránky, tj.
32kB ? Koza se nažrala a kůzlata zůstanou celá.

Spíše jde o to mít nějaký SW, ať má memext jako takový smysl. Vymyslet
jakékoli rozšíření čekoholi je hezká věc, ale pokud je nevyužívaná,
tak je to zbytečnost...

Vašek

PS. zatím se mi ozvali na Memexty Pavel Železo, Radek Suk a Martin
Lukášek.

Re: Memext: resurrection

Michal Hučík SHARP MZ-800

Dne 27.3.2012 14:27, Vaclav Peroutka (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (4 řádky)
> Read-only flag je určitě hezká věc, pokud je nutná a do stávájícího
> memextu se nevejde celá, co třeba udělat zamykací jen horní 4 stránky,
> tj. 32kB ? Koza se nažrala a kůzlata zůstanou celá.
>
Podarilo se mi dostat do stavajiciho zapojeni pinu takovy model, ve 
kterem mam 3 bitovy zamykaci registr. Ten lze vyuzit bud tak, ze kazdy 
bit bude zamykat nejakou konkretni cast pameti. Nebo to muzeme pouzit 
jako preddefinovany modus, ktery se bude podle hodnoty 0 - 7 nejak 
specialne chovat.
Mne osobne vsak nenapada jake zamykaci mody by mohly byt zajimave pro 
dalsi pouziti.
Napada mne (a nevim ted nakolik je to realne), co treba take modus, 
ktery by nabizel moznost zakazat premapovani, at uz obecne a nebo jen 
pro nejake stranky?

Michal

Re: Memext: resurrection

Radek Suk SHARP MZ-800

A co treba misto r/o udelat fukci ze kdyz bude 8 bit nastaveny tak se 
pamet prepne az po dalsi instrukci. Neco podobneho co dela RET s IFF. 
Pak by sel udelat kod co by skakal do nove pripojene pameti, ktera by 
byla primapovana na stejne misto, kde je kod na prepnuti. Stacilo by 
testovat M1 a pri druhe sestupne hrane to prepnout. Pripadne preruseni 
si musi autor systemu osetrit, protoze se mu muze pamet prepnout prave 
pri vyvolani preruseni. To by ale nemel byt problem, stejne to ma byt 
osetrene.

Radek


Dne 27.3.2012 15:59, Michal Hučík (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (25 řádků)
>
>
> Dne 27.3.2012 14:27, Vaclav Peroutka (sharpemupandora.cz) napsal(a):
>> Read-only flag je určitě hezká věc, pokud je nutná a do stávájícího 
>> memextu se nevejde celá, co třeba udělat zamykací jen horní 4 
>> stránky, tj. 32kB ? Koza se nažrala a kůzlata zůstanou celá.
>>
>
> Podarilo se mi dostat do stavajiciho zapojeni pinu takovy model, ve 
> kterem mam 3 bitovy zamykaci registr. Ten lze vyuzit bud tak, ze kazdy 
> bit bude zamykat nejakou konkretni cast pameti. Nebo to muzeme pouzit 
> jako preddefinovany modus, ktery se bude podle hodnoty 0 - 7 nejak 
> specialne chovat.
> Mne osobne vsak nenapada jake zamykaci mody by mohly byt zajimave pro 
> dalsi pouziti.
> Napada mne (a nevim ted nakolik je to realne), co treba take modus, 
> ktery by nabizel moznost zakazat premapovani, at uz obecne a nebo jen 
> pro nejake stranky?
>
> Michal
>
>
> ---
>
>

vyroba PCB

VELESOFT (SPRINTER) SHARP MZ-800

Nevite o nejake levne vyrobe plosnych spoju ? Myslim tim prokovene s nepajivou 
maskou. MATRON ma pozastavenou prototypovou vyrobu plosnych spoju na dobu 
neurcitou :-(

VELESOFT