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 · 5 zpráv

[SharpMZ] pezik software

Michal Hucik - ORDOZ <ordoz@[doména skryta]> SHARP MZ-800


Ahoj,

prozatim tu mam k dispozici 2 programy pracujici s ramdiskem PEZIK a jak se ukazuje, tak programatori s timto kusem HW pracovali tak, jak se jim zrovna v danou chvili zamanulo. Nic proti nicemu. Vzhledem k tomu, ze se nejedna o zalohovany disk, tak se tyhle rozdily v kompatibilite zrejme nikdy nikde neprojevovaly tak, aby dochazelo ke kolizim.


1) otazka velikosti disku vs obsazeni a poradi portu:
===========================================

Radek tady v nekterem z predchozich postu uvedl, ze jako prvni banka by se mela obsadit ta, ktera se nachazi na adrese 0xec a nasledne se pokracuje od 0xe8 nahoru.
Radku, vsumnul jsem si, ze v nastaveni tveho OS je jakasi moznost nastavovat jednotlive banky, nicmene moc jsem to nezkoumal. Kazdopadne v zaklanim nastaveni, kdyz ve tvem systemu neco na ramdisk nahraju, tak se to uklada od banky s nejnizsim poradovym cislem 0xe8 a nikoliv od 0xec.

JSS si pred praci s diskem udela test velikosti disku tak, ze na nulty bajt kazde banky v poradi 0xe8 - 0xef ulozi cislo banky (zvyseno o 1), tedy  1 - 8. Nasledne provede kontrolu ctenim z 0. (0xe8) a 4. (0xec) banky, cimz tedy dela test pouze zda se jedna o 256, nebo 512 kB verzi. Pritomnost, ci nepritomnost dalsich bank se pri testu vubec neresi. Nejak mi unika smysl toho, proc tedy ovsem na zacatku pred testem precte obsah z 8 bank, pak zapisuje do vsech a na konci testu potom vraci puvodni hodnotu do vsech 8 bank.

Samotny test existence ramdisku se provadi v 0. (0xe8) bance.

Autor JSS ROM se vsak zrejme nechal zmast tim, ze do bank uklada jejich cislo zvysene o 1, takze pokud identifikoval, ze mu funguje 0.
banka s obsahem "1", ale uz nefunguje 4. banka s obsahem "5"  tak zpristupni v seznamu banky 0. - 4. => 320 kB, misto puvodne zamyslenych 256 kB. Spravme by mely byt zpristupneny banky 0. - 3.

Az na tu chybu s poctem bank, ke ktere zrejme doslo tak, ze bohati Brnaci zrejme meli vzdy jen 512 kB ramdisky, mi prijde, ze takovy postup obsazovani a urcovani poradi bank je nejlogictejsi. Co se tyka moznych kapacit tohoto disku, tak to uz je jina...

Muj zaver je, ze mozna nekdo nekdy zamyslel variabilne i peziky s mensi, ci atypickou kapacitou, nicmene v miste s jejich pravdepodobne nejvetsim vyskytem bylo zrejme standardem 256, nebo 512 kB obsazeni a nic mezi tim.



2) otazka endianity v nastaveni adresniho latche:
=========================================

Kdysi jsem mel od Zdenka nejaky dokument s navodem jak obsluhovat PEZIK. Nemohu to ted najit, ale pokud si vybavuju, tak tam byl popsan princip 16 bitoveho adresovani, ktery jsem pochopil tak, ze se uvnitr ramdisku nachazi 8 bitovy latch. Pri praci s ramdiskem se 16 bitova adresa v ramci banky nastavi tak, ze se posklada s aktualni MSB datove sbernice (tedy obsahu regB pri instrukci out (c),a ) a z obsahu, ktery je jiz ulozen v latchi.
Pokud prave probehla operace cteni - tedy IN a, (c), tak se po dokonceni operace ulozi adresni MBR do vyse zmineneho latche. Pokud probihal zapis, tak se latch nezmeni.

Co ovsem neni nikde popsano je to, zda se ma v latchi machazet MSB, nebo LSB cast pezikovske adresy. Ono je to ve sve podstate jedno, protoze at uz je tam jedno, nebo druhe, tak ramdisk bude vzdy fungovat naprosto spolehlive. Jedine, cim se tyto 2 metody lisi je to, zda bude v driveru malinko slozitejsi rutina zapisu, nebo rutina cteni a tim, ze v jednom pripade budou fyzicka data ulozena usporadane a v druhem budou od sebe bajty rozlozeny v ramci cele banky s odstupem 256 bajtu.

Ja osobne jsem to pojal tak, ze jsem vychazel z bezne intelovske endianity, kdy se nejprve udava LSB a az za nim MSB. Z tohoto pravidla jsem si pak ucinil svuj vlastni zaver, ze pokud se pri plnem 16 bitovem urceni adresy musi vzdy nejprve provest cteni, po jehoz dokonceni se nastavi novy obsah latche, tak tedy do latche vkladame LSB.
Kdyz se divam na to jak fyzicky uklada data Radkuv OS, tak vidim, ze to pojal ve stejnem duchu.

Kdyz jsem se podival jak jsou fyzicky ulozena data zapsana pomoci JSS, tak jsem zjistil, ze tam je te presne naopak a kdyz se nad tim zamyslim, tak mi takovy pristup prijde mozna lepsi, protoze pokud budu touto metodou zapisovat data na disk, tak si nejprve pomoci prvniho IN nastavim obsah latche. Nasledne uz pak mohu s kazdym OUT jen incrementovat regB a na latch neni potreba sahat dokud regB nedosahne hodnoty 0xff.

K logickemu zaveru o tom, ze je spravne ten Svehluv pristup mne privadi to, ze kdybych chtel podobnym "zrychlenym" pristupem cist, tak by to rozhodne nefungovalo, protoze prave pri cteni se vzdy nastavuje obsah latche a tedy zde opravdu VZDY musi nasledovat dva IN po sobe.

Zajimalo by mne, jak se k vyse uvedenym problemum postavili ostatni programatori. Mate nekdo BASIC, ci nejake oficialni utility pro PEZIK? Neumi nahocou nejaka kazetakova kopirka pouzivat ramdisk?
Nenapsal Zemcik i svou vlastni ramdiskovou cp/m? Mam totiz pocit, ze nejaka tady kdysi nejaka takova kolovala i s doprovodnym textem, ze se jedna o jeho diplomovou praci, ale je mozne, ze se mi popletli lidi.

BTW: kdyby jste se chteli podivat na fyzicke ulozeni bajtu v ramdisku, tak bohuzel v posledni vydane verzi emulatoru jeste nefunguje spravne memory dump pro peziky. Pokud bude zajem, tak zase nekam ulozim ke stazeni devel verzi s opravou - kvuli takove drobnosti vsak zatim nebudu vydavat dalsi release.

Michal


Re: [SharpMZ] pezik software

Radek Suk <suk@[doména skryta]> SHARP MZ-800

Michale zatim odpovim jen rychle a pozdeji mozna podrobneji. Posilam ti 
seznam zmen ktere kdyz udelas tak z bezneho basicu pro cmt udelas basic 
s podporou Peziku.

V me cp/m si muzes urcit jake porty chces pouzit a ktere ne. Proto se to 
cisluje od 0e8 kdyz jinak nereknes ale klidne si to muzes definovat i 
jine poradi. Protoze moje cpm pracuje pres 1MB, tak pro 1,5 MB ramdisk 
potrebuje jinak receno 16+8 portu a tak je mozno definovat 24 portu za 
sebou. Je mozne nejaky vynechat aby byl vyhrazeny pro Basic. Ono pouziti 
e8 nebo ec jako prvniho portu je pro programatora jedno. Moje cpm 
pouziva to pole 24 bajtu jako pole kam se podiva kam vlastne ma data 
ulozit/precist. Proto je mozno kombinovat vice typu ramdisku.

Jen jsem chtel napsat ze autor pezika uvazoval ze kdyz nekdo bude 
zapojovat jen prvni banku (64KB nebo 256KB) tak ramdisk bude pouzivat 
jen ec-ef. To ma i vyhodu a tu ze muze fungovat spolu z ramdiskem ktery 
zase bude pouzivat ty f8,fa,fb (e8,e9,eb).

Co se tyce pristupu LSB a MSB tak jsem zachoval pristup co byl nejdrive 
popsan v Basicu, protoze to umoznuje stejne logicky pracovat s daty 
uvnitr ramdisku. Take ze nejdrive jde do ramdisku prvni bajt jako RAS a 
druhy jak CAS mi pripada lepsi a logictejsi.

Co se tyce velikosti ramdisku pezik tak opravdu kdy ten ramdisk prisel 
mezi lidi a to byl rok 1988, byla jedina moznost si koupit pameti 64KB v 
NDR a udelat si max 128KB ramdisk.

Radek


------

Uprava bezneho Basicu z kazety aby fungoval s PEZIK ramdiskem:

Vse hexadecimalne. Port je ta hodnota E8 (port muze byt od E8 do EF)

adresa 4094
C5
0EE8
45
ED40
44
ED79
C1
C9

adresa 409F
C5
0EE8
45
ED40
44
ED78
C1
C9

pak provest INIT ramdisku dle manualu


Re: [SharpMZ] pezik software

Miloš <milsa@[doména skryta]> SHARP MZ-800

Ahoj,

Celkom som nepochopil, že či potom BASIC spozná Pezika ako 256 kB alebo 
64 kB. Predpokladám ale, že BASIC si žiada viac úprav, aby spopznal plnú 
veľkosť Pezika a teda bude asi vidieť len 64 kB. Je pravda, že si to 
môžem aj sám overiť, ale emulátoru sa teraz nevenujem, preto otázka.

Miloš

Dňa 6. 3. 2016 o 11:58 Radek Suk napísal(a):
Zobrazit citovaný text (63 řádků)
> Michale zatim odpovim jen rychle a pozdeji mozna podrobneji. Posilam ti
> seznam zmen ktere kdyz udelas tak z bezneho basicu pro cmt udelas basic
> s podporou Peziku.
>
> V me cp/m si muzes urcit jake porty chces pouzit a ktere ne. Proto se to
> cisluje od 0e8 kdyz jinak nereknes ale klidne si to muzes definovat i
> jine poradi. Protoze moje cpm pracuje pres 1MB, tak pro 1,5 MB ramdisk
> potrebuje jinak receno 16+8 portu a tak je mozno definovat 24 portu za
> sebou. Je mozne nejaky vynechat aby byl vyhrazeny pro Basic. Ono pouziti
> e8 nebo ec jako prvniho portu je pro programatora jedno. Moje cpm
> pouziva to pole 24 bajtu jako pole kam se podiva kam vlastne ma data
> ulozit/precist. Proto je mozno kombinovat vice typu ramdisku.
>
> Jen jsem chtel napsat ze autor pezika uvazoval ze kdyz nekdo bude
> zapojovat jen prvni banku (64KB nebo 256KB) tak ramdisk bude pouzivat
> jen ec-ef. To ma i vyhodu a tu ze muze fungovat spolu z ramdiskem ktery
> zase bude pouzivat ty f8,fa,fb (e8,e9,eb).
>
> Co se tyce pristupu LSB a MSB tak jsem zachoval pristup co byl nejdrive
> popsan v Basicu, protoze to umoznuje stejne logicky pracovat s daty
> uvnitr ramdisku. Take ze nejdrive jde do ramdisku prvni bajt jako RAS a
> druhy jak CAS mi pripada lepsi a logictejsi.
>
> Co se tyce velikosti ramdisku pezik tak opravdu kdy ten ramdisk prisel
> mezi lidi a to byl rok 1988, byla jedina moznost si koupit pameti 64KB v
> NDR a udelat si max 128KB ramdisk.
>
> Radek
>
>
> ------
>
> Uprava bezneho Basicu z kazety aby fungoval s PEZIK ramdiskem:
>
> Vse hexadecimalne. Port je ta hodnota E8 (port muze byt od E8 do EF)
>
> adresa 4094
> C5
> 0EE8
> 45
> ED40
> 44
> ED79
> C1
> C9
>
> adresa 409F
> C5
> 0EE8
> 45
> ED40
> 44
> ED78
> C1
> C9
>
> pak provest INIT ramdisku dle manualu
>
>
> _______________________________________________
> SharpMZ mailing list
> SharpMZmail.ordoz.com
> http://mail.ordoz.com/mailman/listinfo/sharpmz

Re: [SharpMZ] pezik software

Radek Suk <suk@[doména skryta]> SHARP MZ-800

Ahoj Milosi

Basic umi jen 64 KB, pres to vlak nejede. Proto to prepinas pouze zmenou 
portu a vzdy je kazdy 64 KB ramdisk samostatny. Umim si predstavit ze 
nekdo ma treba dva obsahy ramdisku a ty si prepina. Realna situace co 
jsem drive pouzival byla 0ech pro cpm a 0e8h pro basic. Pak clovek mohl 
pouzivat jak cpm tak basic.

Vcera jsem natrefil na disketu z rok 1991 a tam jsou docela zajimave 
moje asm programy vcetne pezika a romky ale aby se to zverejnilo tak by 
se to muselo jeste prodiskutovat. Nerad bych neco vypustil a udelal 
chaos. Ale potesi cloveka kdyz neco najde co uz zapomel ze delal.

Radek

Dne 6.3.2016 v 12:05 Miloš napsal(a):
Zobrazit citovaný text (79 řádků)
> Ahoj,
>
> Celkom som nepochopil, že či potom BASIC spozná Pezika ako 256 kB alebo
> 64 kB. Predpokladám ale, že BASIC si žiada viac úprav, aby spopznal plnú
> veľkosť Pezika a teda bude asi vidieť len 64 kB. Je pravda, že si to
> môžem aj sám overiť, ale emulátoru sa teraz nevenujem, preto otázka.
>
> Miloš
>
> Dňa 6. 3. 2016 o 11:58 Radek Suk napísal(a):
>> Michale zatim odpovim jen rychle a pozdeji mozna podrobneji. Posilam ti
>> seznam zmen ktere kdyz udelas tak z bezneho basicu pro cmt udelas basic
>> s podporou Peziku.
>>
>> V me cp/m si muzes urcit jake porty chces pouzit a ktere ne. Proto se to
>> cisluje od 0e8 kdyz jinak nereknes ale klidne si to muzes definovat i
>> jine poradi. Protoze moje cpm pracuje pres 1MB, tak pro 1,5 MB ramdisk
>> potrebuje jinak receno 16+8 portu a tak je mozno definovat 24 portu za
>> sebou. Je mozne nejaky vynechat aby byl vyhrazeny pro Basic. Ono pouziti
>> e8 nebo ec jako prvniho portu je pro programatora jedno. Moje cpm
>> pouziva to pole 24 bajtu jako pole kam se podiva kam vlastne ma data
>> ulozit/precist. Proto je mozno kombinovat vice typu ramdisku.
>>
>> Jen jsem chtel napsat ze autor pezika uvazoval ze kdyz nekdo bude
>> zapojovat jen prvni banku (64KB nebo 256KB) tak ramdisk bude pouzivat
>> jen ec-ef. To ma i vyhodu a tu ze muze fungovat spolu z ramdiskem ktery
>> zase bude pouzivat ty f8,fa,fb (e8,e9,eb).
>>
>> Co se tyce pristupu LSB a MSB tak jsem zachoval pristup co byl nejdrive
>> popsan v Basicu, protoze to umoznuje stejne logicky pracovat s daty
>> uvnitr ramdisku. Take ze nejdrive jde do ramdisku prvni bajt jako RAS a
>> druhy jak CAS mi pripada lepsi a logictejsi.
>>
>> Co se tyce velikosti ramdisku pezik tak opravdu kdy ten ramdisk prisel
>> mezi lidi a to byl rok 1988, byla jedina moznost si koupit pameti 64KB v
>> NDR a udelat si max 128KB ramdisk.
>>
>> Radek
>>
>>
>> ------
>>
>> Uprava bezneho Basicu z kazety aby fungoval s PEZIK ramdiskem:
>>
>> Vse hexadecimalne. Port je ta hodnota E8 (port muze byt od E8 do EF)
>>
>> adresa 4094
>> C5
>> 0EE8
>> 45
>> ED40
>> 44
>> ED79
>> C1
>> C9
>>
>> adresa 409F
>> C5
>> 0EE8
>> 45
>> ED40
>> 44
>> ED78
>> C1
>> C9
>>
>> pak provest INIT ramdisku dle manualu
>>
>>
>> _______________________________________________
>> SharpMZ mailing list
>> SharpMZmail.ordoz.com
>> http://mail.ordoz.com/mailman/listinfo/sharpmz
> _______________________________________________
> SharpMZ mailing list
> SharpMZmail.ordoz.com
> http://mail.ordoz.com/mailman/listinfo/sharpmz
>
>

Re: [SharpMZ] pezik software

Radek Suk <suk@[doména skryta]> SHARP MZ-800

Michale pokusim se popsat praci ramdisku PEZIK

budu vychazet ze schematu na 
http://www.scav.cz/data/MZ-800/Vyroba_Popis_Ramdisk_Pezik.jpg

mozna neni spatne dat na odkaz kdyz se delala replika kde pisi rozdily 
http://www.oldcomp.cz/viewtopic.php?f=72&t=1107&hilit=pezik
dalsi zajimavy odkaz je 
http://www.8bity.cz/2014/nezlohovan-ram-disk-pezik-512-kb-pro-sharp-mz-800/

Obvod 3 (74l373 spodni) a obvod 6 (75ls74) delaji refresh. Vyuziva se 
refresh pres signal /RAS. Protoze pameti potrebuji 8 bitovou refres tak 
posledni osmy bit dela ten obvod 6. Obvod 74ls74 vlevo od obvodu 6 je 
stavovy automat, ktery zajistuje ze prave pri M1 ma obvod 3 otevreny 
vystup a obvod 2 ma deaktivovany vystup. Funguje tak, ze na zacatku M1 
cyklu se /Q da do log0 a zustane tam az do doby nez se ukonci refresh 
cykl. Druhy impuls /MREQ udela signal /RAS. Po ukonceni refresh cyklu se 
ulozi stav 6 bitu a pripadne se zmeni 7 bit refreshe.

Ted mame probrano docela velkou cast disku a muzeme se vrhnou jak 
funguje zbytek desky.

Dulezite je, ze horni obvod 74ls373 ma aktivni vystup kdyz neni cykl M1. 
Take je dobre vedet ze pri kazdem aktivovanim /MREQ se udela i /RAS 
signal. Existuje uprava kterou pisi na 
http://www.oldcomp.cz/viewtopic.php?f=72&t=1107&hilit=pezik a to "- M1 
signal jsem privedl na IC5D vyvod 13." ktera udela to ze pri cyklu M1 se 
nedela /RAS ale porad ze dela pri jakekoliv pristupu do pameti - to se 
dela navic a je to zbytecne. Spravne by se /RAS mel delat jen pri 
refresh a IN/OUT operaci. Ty /RAS navic ale nevadi, jen delaji zbytecne 
aktivovani a spotrebu navic.

Vlastni aktivace IN/OUT je udelana tak, ze pri spravne kombinaci signalu 
se da do log0 vyvod Q7 obvodu 4. To projde pres dva invertory a prijde 
na cast desky ktera je oznacena X v kouzku. Nasleduje cast co dela 
multiplex signalu A1 a A0 pro vyvod A8 pameti (nevyuziva se pro pamet 
64Kb). Druhy multiplex podle signalu A2 dela aktivaci /CAS0 nebo /CAS1. 
Takto se rozlisuji dve banky. Dulezite je aby vse bylo spravne 
nacasovano. Spravne ma nejdrive prijit /RAS a ten posle z obvodu 2 
informaci co byla zapamatovana predchazejici instrukci IN (uvazuje se ze 
nejdrive je vzdy IN instrukce). Pak se ma okamzik pockat a nasledne se 
prepne multiplex A0 a A1 a soucasne se otevre obvod 2 a tak se AD8-ADF 
dostane na vystup obvodu 2. Pak s nasledujici nabeznou hranou BusFi se 
vyvola /CAS0 nebo /CAS1.

Problem je ale ze to prepinani ja na hrane a je zde haradni stav a proto 
to rade lidem neslo. To se ma resit doplnenim kondenzatoru na misto kde 
je to X v krouzku o velikosti 470 pF. Osobne si ale myslim ze idelanejsi 
by bylo ho dat o hradlo drive. Muzeme o tom diskutovat.

Jinak muj nazor na ten hazardni stav je ten, ze nechapu proc je to takto 
resene. Protoze je na desce jedno hradlo 74ls00 volne a take je volny 
jedna pulka 74ls74, tak by bylo idelani dat 74ls00 na BusFi a to dat na 
C obvodu 74. Prerusit misto X v krouzku a takto reagovat na sestupnou 
hranu BusFi. Takto by to bylo zcela bez hazardu. Take by to slo obratit 
ze multiplex by reagoval na nabeznou hranu a druhy 74 na sestupnou - 
takze vse by probihalo v TW cyklu.

Zkuste se na to podivat a oponovat text at vime zda je to pravda ci ne.

Radek