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

[SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty

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

Ahoj,

nahodou jsem objevil docela fatalni chybu v emulaci WD279x, ktera se 
zrejme bude vyskytovat nejen v PC emulatoru, ale i v HW emulatorech, viz 
vsechny verze Unikarty.

FDC podporuje 2 zpusoby cteni / zapisu. Bud jednosektorove, nebo 
sequencni - tzn., ze se radic nastavi nad nejaky sector a pak uz se jen 
cte / pise - ve chvili, kdy pocet datovych bajtu prekroci velikost 
sektoru se kterym se pracuje, tak se radic pokusi na stope vyhledat 
sektor s nasledujicim poradovym cislem. Pokud takovy sektor existuje, 
tak operace cteni / zapisu automaticky bez jakehokoliv preruseni 
pokracuje v tomto sektoru. Pokud sektor s nasledujicim ciselnym 
oznacenim neexistuje (tzn., ze jsme na konci stopy, nebo ze cislovani 
sektoru na stope neni kontinualni), tak radic vyhlasi RNF error a 
operace je ukoncena.

Vetsina programu, ktere pouzivaji kontinualni cteni se spokoji s tim, ze 
ve status registru obdrzi RNF, bez pritomnosti jakekoliv jine chyby a 
povazuji operaci nad stopou za uspesne ukoncenou.

Diskovy K&P BASIC pri zapisu na disk pracuje s disketou tak, ze nejprve 
data multiblokove ulozi. Pak probiha verifikace, ktera je realizovana 
multi blokovym ctenim, pri ktere se vsak zadne data nectou a pouze se 
vyhodnocuje status (podobne verifikuce i cp/m 4.1, nicmene jednoblokove).

Dnes jsem zjistil, ze BASIC (pouze) pri verifikaci netestuje jen RNF, 
ale soucasne s nim nacita i obsah registru sektoru a testuje si, zda uz 
byl na stope precten posledni sektor z verifikovaneho souboru. Jestlize 
byl tento posledni sektor soucasne poslednim sektorem na stope, tak 
BASIC ocekaval, ze precte cislo sektoru 17, nicmene moje emulace WD279x 
mu vracela posledni cislo validniho sektoru, ktery jsme byli schpni 
precist, tzn. 16. K zapisu tedy z duvodu neuspesne verifikace nedoslo a 
BASIC zahlasil neco jako FD1: System id error.

Ja jsem na to narazil tak, ze jsem na ciste diskete v BASICu ukladal po 
sobe nekolik jednosektorovych souboru - 15 se jich ulozilo v pohode a 
16. vyhlasil chybu, kterou popisuju. Kdyz jsem vsak do zdrojoveho kodu v 
BASICu pridal par radku, tak uz to bylo OK a verifikace prosla, protoze 
soubor narostl na 2 sektory a tak jeho posledni blok lezel na zacatku 
nasledujici stopy.
Chyba se projevuje jen tehdy, pokud chcete v BASICu ulozit soubor, jehoz 
konec bude ulozen v 16. sektoru libovolne stopy, coz je ovlivneno 
nejblizsim volnym mistem na disku, velikosti souboru a take fragmentaci 
disku, coz zpusobilo, ze tam ta chyba existuje bez povsimnuti uz skoro 
10 let, protoze stejny kod emulace pouzivam i v Unikarte.

No a ted zasadni otazka: v emulatoru jsem si to samozrejme opravil, 
nicmene co nase puvodni Unikarta? Pouzivate ji jeste nekdo? Budete mit 
zajem, abych vydal nejaky opravny firmware?

Bohousi: pouzivas ve svem emulatoru stale ty moje puvodni zdrojaky? 
chces poradit co prepsat, aby sis to u sebe fixnul?

Michal

Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty

"Vaclav Peroutka" <vaclavpe@[doména skryta]> SHARP MZ-800

Ahoj Michale, 

používám ji já v několika verzích.

Vašek


---------- Původní e-mail ----------
Zobrazit citovaný text (65 řádků)
Od: Michal Hucik - ORDOZ <ordoz[doména skryta]>
Komu: sharpmzmail.ordoz.com
Datum: 16. 1. 2018 13:51:04
Předmět: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty 
"Ahoj, 

nahodou jsem objevil docela fatalni chybu v emulaci WD279x, ktera se 
zrejme bude vyskytovat nejen v PC emulatoru, ale i v HW emulatorech, viz 
vsechny verze Unikarty. 

FDC podporuje 2 zpusoby cteni / zapisu. Bud jednosektorove, nebo 
sequencni - tzn., ze se radic nastavi nad nejaky sector a pak uz se jen 
cte / pise - ve chvili, kdy pocet datovych bajtu prekroci velikost 
sektoru se kterym se pracuje, tak se radic pokusi na stope vyhledat 
sektor s nasledujicim poradovym cislem. Pokud takovy sektor existuje, 
tak operace cteni / zapisu automaticky bez jakehokoliv preruseni 
pokracuje v tomto sektoru. Pokud sektor s nasledujicim ciselnym 
oznacenim neexistuje (tzn., ze jsme na konci stopy, nebo ze cislovani 
sektoru na stope neni kontinualni), tak radic vyhlasi RNF error a 
operace je ukoncena. 

Vetsina programu, ktere pouzivaji kontinualni cteni se spokoji s tim, ze 
ve status registru obdrzi RNF, bez pritomnosti jakekoliv jine chyby a 
povazuji operaci nad stopou za uspesne ukoncenou. 

Diskovy K&P BASIC pri zapisu na disk pracuje s disketou tak, ze nejprve 
data multiblokove ulozi. Pak probiha verifikace, ktera je realizovana 
multi blokovym ctenim, pri ktere se vsak zadne data nectou a pouze se 
vyhodnocuje status (podobne verifikuce i cp/m 4.1, nicmene jednoblokove). 

Dnes jsem zjistil, ze BASIC (pouze) pri verifikaci netestuje jen RNF, 
ale soucasne s nim nacita i obsah registru sektoru a testuje si, zda uz 
byl na stope precten posledni sektor z verifikovaneho souboru. Jestlize 
byl tento posledni sektor soucasne poslednim sektorem na stope, tak 
BASIC ocekaval, ze precte cislo sektoru 17, nicmene moje emulace WD279x 
mu vracela posledni cislo validniho sektoru, ktery jsme byli schpni 
precist, tzn. 16. K zapisu tedy z duvodu neuspesne verifikace nedoslo a 
BASIC zahlasil neco jako FD1: System id error. 

Ja jsem na to narazil tak, ze jsem na ciste diskete v BASICu ukladal po 
sobe nekolik jednosektorovych souboru - 15 se jich ulozilo v pohode a 
16. vyhlasil chybu, kterou popisuju. Kdyz jsem vsak do zdrojoveho kodu v 
BASICu pridal par radku, tak uz to bylo OK a verifikace prosla, protoze 
soubor narostl na 2 sektory a tak jeho posledni blok lezel na zacatku 
nasledujici stopy. 
Chyba se projevuje jen tehdy, pokud chcete v BASICu ulozit soubor, jehoz 
konec bude ulozen v 16. sektoru libovolne stopy, coz je ovlivneno 
nejblizsim volnym mistem na disku, velikosti souboru a take fragmentaci 
disku, coz zpusobilo, ze tam ta chyba existuje bez povsimnuti uz skoro 
10 let, protoze stejny kod emulace pouzivam i v Unikarte. 

No a ted zasadni otazka: v emulatoru jsem si to samozrejme opravil, 
nicmene co nase puvodni Unikarta? Pouzivate ji jeste nekdo? Budete mit 
zajem, abych vydal nejaky opravny firmware? 

Bohousi: pouzivas ve svem emulatoru stale ty moje puvodni zdrojaky? 
chces poradit co prepsat, aby sis to u sebe fixnul? 

Michal 

_______________________________________________ 
SharpMZ mailing list 
SharpMZmail.ordoz.com 
http://mail.ordoz.com/mailman/listinfo/sharpmz 
"

Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty

"Michal Medek" <Michal.Bruntal@[doména skryta]> SHARP MZ-800

Ahoj Michale,



super postrehy. Na fw pro unikartu se v posledni dobe udelalo hodne prace, 
hlavne  souvislosti s podporou pro MZ-1500. Urcite zmeny jsou i v sekci 
podpory FDC, ale ne co se tyka opravy teto popisovane vlastnosti. Je snaha 
mit cely projekt kompatibilni pro MZ-700/800/1500 alespon na strane buildu. 
Mimochodem doslo k velkemu prepracovani manageru, rozsireni API, atd. 
Veskere zdrojove kody jsou na gitu, ktery spravuje Uunek a urcite je 
'komunitne' pristupny.

Pokud by jsi byl ochotny podporu FDC upravit, tak by jsme Ti byli urcite 
velice vdecni.




Mikes


---------- Původní e-mail ----------
Zobrazit citovaný text (65 řádků)
Od: Michal Hucik - ORDOZ <ordoz[doména skryta]>
Komu: sharpmzmail.ordoz.com
Datum: 16. 1. 2018 13:51:04
Předmět: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty 
"Ahoj, 

nahodou jsem objevil docela fatalni chybu v emulaci WD279x, ktera se 
zrejme bude vyskytovat nejen v PC emulatoru, ale i v HW emulatorech, viz 
vsechny verze Unikarty. 

FDC podporuje 2 zpusoby cteni / zapisu. Bud jednosektorove, nebo 
sequencni - tzn., ze se radic nastavi nad nejaky sector a pak uz se jen 
cte / pise - ve chvili, kdy pocet datovych bajtu prekroci velikost 
sektoru se kterym se pracuje, tak se radic pokusi na stope vyhledat 
sektor s nasledujicim poradovym cislem. Pokud takovy sektor existuje, 
tak operace cteni / zapisu automaticky bez jakehokoliv preruseni 
pokracuje v tomto sektoru. Pokud sektor s nasledujicim ciselnym 
oznacenim neexistuje (tzn., ze jsme na konci stopy, nebo ze cislovani 
sektoru na stope neni kontinualni), tak radic vyhlasi RNF error a 
operace je ukoncena. 

Vetsina programu, ktere pouzivaji kontinualni cteni se spokoji s tim, ze 
ve status registru obdrzi RNF, bez pritomnosti jakekoliv jine chyby a 
povazuji operaci nad stopou za uspesne ukoncenou. 

Diskovy K&P BASIC pri zapisu na disk pracuje s disketou tak, ze nejprve 
data multiblokove ulozi. Pak probiha verifikace, ktera je realizovana 
multi blokovym ctenim, pri ktere se vsak zadne data nectou a pouze se 
vyhodnocuje status (podobne verifikuce i cp/m 4.1, nicmene jednoblokove). 

Dnes jsem zjistil, ze BASIC (pouze) pri verifikaci netestuje jen RNF, 
ale soucasne s nim nacita i obsah registru sektoru a testuje si, zda uz 
byl na stope precten posledni sektor z verifikovaneho souboru. Jestlize 
byl tento posledni sektor soucasne poslednim sektorem na stope, tak 
BASIC ocekaval, ze precte cislo sektoru 17, nicmene moje emulace WD279x 
mu vracela posledni cislo validniho sektoru, ktery jsme byli schpni 
precist, tzn. 16. K zapisu tedy z duvodu neuspesne verifikace nedoslo a 
BASIC zahlasil neco jako FD1: System id error. 

Ja jsem na to narazil tak, ze jsem na ciste diskete v BASICu ukladal po 
sobe nekolik jednosektorovych souboru - 15 se jich ulozilo v pohode a 
16. vyhlasil chybu, kterou popisuju. Kdyz jsem vsak do zdrojoveho kodu v 
BASICu pridal par radku, tak uz to bylo OK a verifikace prosla, protoze 
soubor narostl na 2 sektory a tak jeho posledni blok lezel na zacatku 
nasledujici stopy. 
Chyba se projevuje jen tehdy, pokud chcete v BASICu ulozit soubor, jehoz 
konec bude ulozen v 16. sektoru libovolne stopy, coz je ovlivneno 
nejblizsim volnym mistem na disku, velikosti souboru a take fragmentaci 
disku, coz zpusobilo, ze tam ta chyba existuje bez povsimnuti uz skoro 
10 let, protoze stejny kod emulace pouzivam i v Unikarte. 

No a ted zasadni otazka: v emulatoru jsem si to samozrejme opravil, 
nicmene co nase puvodni Unikarta? Pouzivate ji jeste nekdo? Budete mit 
zajem, abych vydal nejaky opravny firmware? 

Bohousi: pouzivas ve svem emulatoru stale ty moje puvodni zdrojaky? 
chces poradit co prepsat, aby sis to u sebe fixnul? 

Michal 

_______________________________________________ 
SharpMZ mailing list 
SharpMZmail.ordoz.com 
http://mail.ordoz.com/mailman/listinfo/sharpmz 
"

Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty

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

Snad budu mit chvilku a podivam se na obsah toho gitu.

Ta emulace FDC je ponekud neprehledna a dnes uz se mi ani moc nelibi ten 
stavovy stroj, kterym se ridi FDC status. Mam uz delsi dobu v hlave par 
napadu jak emulaci vylepsit a emulovat napr. i index pulzy, nebo track 
info. U PC emulatoru zvazuju take to, ze FDC neudelam jako stavovy 
stroj, ale ze jej budu synchronizovat podle pixelclocku, takze pokud 
napr. delka nejake operace prekroci urcity limit, tak dojde k timeoutu, 
stejne jako na skutecnem HW.

Mimochodem s tim managerem Unikarty jsi mi pripomnel, ze jsem v nem ted 
v rijnu udelal taky drobnou upravu: jednalo se o to, ze manager pracoval 
vzdy s absolutni cestou k MZF a pred spustenim programu z SD repozitare 
se do Unikarty vzdy posilal reset. Tohle vsak bylo nezadouci pro 
pripadne upravy multi blokovych her, pracujicich s Unikartou, coz chtel 
prave v rijnu vyzkouset Vasek.

Takze nova verze managera ted provede zmenu CWD, pak natahne MZF do 
Sharpa a nevykona zadny reset. Bohuzel zatim nemam od Vaska zadnou 
zpetnou vazbu, zda se mu to uz chova tak jak potreboval, tak jsem to 
zatim nechtel poustet do sveta.

Michal

Dne 17.1.2018 v 9:57 Michal Medek napsal(a):
Zobrazit citovaný text (20 řádků)
> Ahoj Michale,
>
>
>
> super postrehy. Na fw pro unikartu se v posledni dobe udelalo hodne prace,
> hlavne  souvislosti s podporou pro MZ-1500. Urcite zmeny jsou i v sekci
> podpory FDC, ale ne co se tyka opravy teto popisovane vlastnosti. Je snaha
> mit cely projekt kompatibilni pro MZ-700/800/1500 alespon na strane buildu.
> Mimochodem doslo k velkemu prepracovani manageru, rozsireni API, atd.
> Veskere zdrojove kody jsou na gitu, ktery spravuje Uunek a urcite je
> 'komunitne' pristupny.
>
> Pokud by jsi byl ochotny podporu FDC upravit, tak by jsme Ti byli urcite
> velice vdecni.
>
>
>
>
> Mikes
>

Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty

"Michal Medek" <Michal.Bruntal@[doména skryta]> SHARP MZ-800

Ahoj,



co se tyka FDC emulace, tak bydu rad, kdyz se na to podivas.

A ohledne manageru, tak ten je dost podstatne prepsany, ale nerozumim tomu o
cem pises. Bylo a je to tak, ze manager pri spusteni MZF souboru ho natahne 
do pameti, preda rizeni to EPROMky, ta ho pripadne presune a spusti. Pokud 
ten program potrebuje jeste dalsi casti, tak si to musi poresit sama, 
manager uz davno neni v pameti a program o fw unikarty nic nevi, tak s tim 
nemuze spolupracovat.

Pokud se jedna o programy z vice casti, tak ty vetsinou spolupracuji s 
filesystemem FD nebo QD a to emulace nemusi resit nijak specialne. A pokud 
jde o programy (vetinou hry) na vice QD disketach (pro MZ-1500 je jich asi 
15), tak to uz resime vymenou image pro QDiskety. Mimochodem fw unikarty uz 
podporuje zapis na QD. A taky emulaci EMM pameti, vetsi konfigurovatelnost 
vsech image, atd.




Mikes


---------- Původní e-mail ----------
Zobrazit citovaný text (59 řádků)
Od: Michal Hucik - ORDOZ <ordoz[doména skryta]>
Komu: sharpmzmail.ordoz.com
Datum: 17. 1. 2018 14:00:48
Předmět: Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty 
" 
Snad budu mit chvilku a podivam se na obsah toho gitu. 

Ta emulace FDC je ponekud neprehledna a dnes uz se mi ani moc nelibi ten 
stavovy stroj, kterym se ridi FDC status. Mam uz delsi dobu v hlave par 
napadu jak emulaci vylepsit a emulovat napr. i index pulzy, nebo track 
info. U PC emulatoru zvazuju take to, ze FDC neudelam jako stavovy 
stroj, ale ze jej budu synchronizovat podle pixelclocku, takze pokud 
napr. delka nejake operace prekroci urcity limit, tak dojde k timeoutu, 
stejne jako na skutecnem HW. 

Mimochodem s tim managerem Unikarty jsi mi pripomnel, ze jsem v nem ted 
v rijnu udelal taky drobnou upravu: jednalo se o to, ze manager pracoval 
vzdy s absolutni cestou k MZF a pred spustenim programu z SD repozitare 
se do Unikarty vzdy posilal reset. Tohle vsak bylo nezadouci pro 
pripadne upravy multi blokovych her, pracujicich s Unikartou, coz chtel 
prave v rijnu vyzkouset Vasek. 

Takze nova verze managera ted provede zmenu CWD, pak natahne MZF do 
Sharpa a nevykona zadny reset. Bohuzel zatim nemam od Vaska zadnou 
zpetnou vazbu, zda se mu to uz chova tak jak potreboval, tak jsem to 
zatim nechtel poustet do sveta. 

Michal 

Dne 17.1.2018 v 9:57 Michal Medek napsal(a): 
> Ahoj Michale, 
> 
> 
> 
> super postrehy. Na fw pro unikartu se v posledni dobe udelalo hodne prace,

> hlavne  souvislosti s podporou pro MZ-1500. Urcite zmeny jsou i v sekci 
> podpory FDC, ale ne co se tyka opravy teto popisovane vlastnosti. Je snaha

> mit cely projekt kompatibilni pro MZ-700/800/1500 alespon na strane 
buildu. 
> Mimochodem doslo k velkemu prepracovani manageru, rozsireni API, atd. 
> Veskere zdrojove kody jsou na gitu, ktery spravuje Uunek a urcite je 
> 'komunitne' pristupny. 
> 
> Pokud by jsi byl ochotny podporu FDC upravit, tak by jsme Ti byli urcite 
> velice vdecni. 
> 
> 
> 
> 
> Mikes 
> 

_______________________________________________ 
SharpMZ mailing list 
SharpMZmail.ordoz.com 
http://mail.ordoz.com/mailman/listinfo/sharpmz 
"

Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty

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

V te uprave jde o to, ze program natazeny z SD nema poneti o tom z 
jakeho adresare z SD natazen. Proto novy manager pred tim, nez preda 
rizeni SHARP ROM jeste nastavi pracovni adresar v Unikarte na misto ze 
ktereho natahoval posledni MZF - to je vse. Spusteny program pak muze 
pres relativni cesty pracovat s pridruzenymi soubory, ktere jsou ulozeny 
ve stejnem adresari, nebo v predem predpokladane pozici vuci tomu 
spustenemu MZF.

BTW: dalsi veci je, ze program bohuzel netusi, ze byl natazen prave z 
SD. Manager by mu to ale mohl sdelit -  Sharp ROM s predavanim takove 
informace totiz pocita a predava spoustenemu programu ciselny kod 
zarizeni v nejakem registru (tusim 'HL). Existuje tam ciselny kod pro 
CMT, QD a FD. Puvodne jsem tam take managerem predaval nejaky vlastni 
kod, ale u diskoveho BASICu jsem narazil na problem, protoze on se po 
svem spusteni v inicializaci modifikuje prave podle toho jak byl 
spusten. Pokud je spusten z QD, tak zahodi obsluhu FD a naopak. Kdyz je 
spusten z CMT, tak zahodi vse. Proto manager nyni predava info, ze doslo 
ke spusteni z FD. Lepsi by vsak zrejme bylo. kdyby jsme upravili BASIC.


Dne 17.1.2018 v 14:47 Michal Medek napsal(a):
Zobrazit citovaný text (20 řádků)
> Ahoj,
>
>
>
> co se tyka FDC emulace, tak bydu rad, kdyz se na to podivas.
>
> A ohledne manageru, tak ten je dost podstatne prepsany, ale nerozumim tomu o
> cem pises. Bylo a je to tak, ze manager pri spusteni MZF souboru ho natahne
> do pameti, preda rizeni to EPROMky, ta ho pripadne presune a spusti. Pokud
> ten program potrebuje jeste dalsi casti, tak si to musi poresit sama,
> manager uz davno neni v pameti a program o fw unikarty nic nevi, tak s tim
> nemuze spolupracovat.
>
> Pokud se jedna o programy z vice casti, tak ty vetsinou spolupracuji s
> filesystemem FD nebo QD a to emulace nemusi resit nijak specialne. A pokud
> jde o programy (vetinou hry) na vice QD disketach (pro MZ-1500 je jich asi
> 15), tak to uz resime vymenou image pro QDiskety. Mimochodem fw unikarty uz
> podporuje zapis na QD. A taky emulaci EMM pameti, vetsi konfigurovatelnost
> vsech image, atd.
>

Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty

"Vaclav Peroutka" <vaclavpe@[doména skryta]> SHARP MZ-800

Ahoj,

co se tyce toho CWD, tak pouziti je u her, ktere se nedaji natahnout 
najednou. Natahne se prvni cast hry a hra se spusti. V puvodnim FW se 
ztratila informace o tom, ze kterého adresare SD_CARD byla hra spustena, 
takze si neni schopna tahnout dalsi cast. Michal ten FW upravil, aby CWD 
zustalo. 

Nejake experimenty, co jsem delal, byly uspesne, ale celkove se mi zatim 
nepovedlo tu hru BusinessWorld doupravit. Snad se k tomu zase dostanu.

V.

" 
Mimochodem s tim managerem Unikarty jsi mi pripomnel, ze jsem v nem ted 
v rijnu udelal taky drobnou upravu: jednalo se o to, ze manager pracoval 
vzdy s absolutni cestou k MZF a pred spustenim programu z SD repozitare 
se do Unikarty vzdy posilal reset. Tohle vsak bylo nezadouci pro 
pripadne upravy multi blokovych her, pracujicich s Unikartou, coz chtel 
prave v rijnu vyzkouset Vasek. 

Takze nova verze managera ted provede zmenu CWD, pak natahne MZF do 
Sharpa a nevykona zadny reset. Bohuzel zatim nemam od Vaska zadnou 
zpetnou vazbu, zda se mu to uz chova tak jak potreboval, tak jsem to 
zatim nechtel poustet do sveta. 

Michal 
"
 


Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty

"Michal Medek" <Michal.Bruntal@[doména skryta]> SHARP MZ-800

Ahoj,



ale to by znamenalo, ze pred spustenim programu neuzavres handle a v 
programu se k nemu nejak vratis. To muze fungovat pro nove nebo upravene 
programy. Otazkou zustava, kdo bude stavajici programy upravovat (zatim asi 
nikdo) a kdo bude psat nove. Kdybych psal nejaky novy program, tak neni 
problem si handle dalsi(ch) casti otevrit pres API unikarty, nacist a pak 
korektne uzavrit. To bych radeji poresil v programu a nespolehal na to, ze 
mi to fw zachova. Treba souborovy format .mzt to tak dela a ma ulozenu celou
hravicku kazdych dalsich casti. Existuje nejaky (jakykoliv) program, ktery 
to tak nedelal a nacital primo kontext datoveho souboru?




Mikes


---------- Původní e-mail ----------
Zobrazit citovaný text (41 řádků)
Od: Vaclav Peroutka <vaclavpe[doména skryta]>
Komu: Počítače SHARP MZ a jejich emulátory <sharpmzmail.ordoz.com>
Datum: 17. 1. 2018 15:32:56
Předmět: Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty 
" 
Ahoj, 

co se tyce toho CWD, tak pouziti je u her, ktere se nedaji natahnout 
najednou. Natahne se prvni cast hry a hra se spusti. V puvodnim FW se 
ztratila informace o tom, ze kterého adresare SD_CARD byla hra spustena, 
takze si neni schopna tahnout dalsi cast. Michal ten FW upravil, aby CWD 
zustalo. 

Nejake experimenty, co jsem delal, byly uspesne, ale celkove se mi zatim 
nepovedlo tu hru BusinessWorld doupravit. Snad se k tomu zase dostanu. 

V. 

" 
Mimochodem s tim managerem Unikarty jsi mi pripomnel, ze jsem v nem ted 
v rijnu udelal taky drobnou upravu: jednalo se o to, ze manager pracoval 
vzdy s absolutni cestou k MZF a pred spustenim programu z SD repozitare 
se do Unikarty vzdy posilal reset. Tohle vsak bylo nezadouci pro 
pripadne upravy multi blokovych her, pracujicich s Unikartou, coz chtel 
prave v rijnu vyzkouset Vasek. 

Takze nova verze managera ted provede zmenu CWD, pak natahne MZF do 
Sharpa a nevykona zadny reset. Bohuzel zatim nemam od Vaska zadnou 
zpetnou vazbu, zda se mu to uz chova tak jak potreboval, tak jsem to 
zatim nechtel poustet do sveta. 

Michal 
" 
  


_______________________________________________ 
SharpMZ mailing list 
SharpMZmail.ordoz.com 
http://mail.ordoz.com/mailman/listinfo/sharpmz 
"

Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty

"Michal Medek" <Michal.Bruntal@[doména skryta]> SHARP MZ-800

Ahoj,



jak preda ROMce? Vzdyt ROMka na to nema zadnou podporu. A predavani cisla 
(je to pres BC registr), pokud vim, pouzivaji jen BASICy aby nastavily 
DEFAULT zarizeni, kde hledaji "AUTO RUN". Bez upravy o zadnem unicard 
manageru nevi. Korektni kontext je CMT, RAM a QD (nebo mozna FD). Nova verze
manageru to rezi pres QD a na image QD diskety jsou ostatni soubory. Krome 
toho uz nic nepridava a ani BASIC nic jineho neceka.

Mimochodem ten parametr se predava pres aktualni BC, ne pres stinovy. V 
nekterych zdrojovych kodech jsem to videl spatne. A treba MZ-1500 to ma 
jinak implementovane nez MZ-800. Ale vysledek je stejny.

Ta vlastni modifikace v BASICu je jen proto, aby se poprve spoustel "AUTO 
RUN" a pozdeji (po CTRL+RESET) uz ne. Vychazim z disassemblovaneho/
zdrojoveho kodu nekolika BASICu.




Mikes


---------- Původní e-mail ----------
Zobrazit citovaný text (60 řádků)
Od: Michal Hucik - ORDOZ <ordoz[doména skryta]>
Komu: sharpmzmail.ordoz.com
Datum: 17. 1. 2018 15:24:08
Předmět: Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty 
" 
V te uprave jde o to, ze program natazeny z SD nema poneti o tom z 
jakeho adresare z SD natazen. Proto novy manager pred tim, nez preda 
rizeni SHARP ROM jeste nastavi pracovni adresar v Unikarte na misto ze 
ktereho natahoval posledni MZF - to je vse. Spusteny program pak muze 
pres relativni cesty pracovat s pridruzenymi soubory, ktere jsou ulozeny 
ve stejnem adresari, nebo v predem predpokladane pozici vuci tomu 
spustenemu MZF. 

BTW: dalsi veci je, ze program bohuzel netusi, ze byl natazen prave z 
SD. Manager by mu to ale mohl sdelit -  Sharp ROM s predavanim takove 
informace totiz pocita a predava spoustenemu programu ciselny kod 
zarizeni v nejakem registru (tusim 'HL). Existuje tam ciselny kod pro 
CMT, QD a FD. Puvodne jsem tam take managerem predaval nejaky vlastni 
kod, ale u diskoveho BASICu jsem narazil na problem, protoze on se po 
svem spusteni v inicializaci modifikuje prave podle toho jak byl 
spusten. Pokud je spusten z QD, tak zahodi obsluhu FD a naopak. Kdyz je 
spusten z CMT, tak zahodi vse. Proto manager nyni predava info, ze doslo 
ke spusteni z FD. Lepsi by vsak zrejme bylo. kdyby jsme upravili BASIC. 


Dne 17.1.2018 v 14:47 Michal Medek napsal(a): 
> Ahoj, 
> 
> 
> 
> co se tyka FDC emulace, tak bydu rad, kdyz se na to podivas. 
> 
> A ohledne manageru, tak ten je dost podstatne prepsany, ale nerozumim tomu
o 
> cem pises. Bylo a je to tak, ze manager pri spusteni MZF souboru ho 
natahne 
> do pameti, preda rizeni to EPROMky, ta ho pripadne presune a spusti. Pokud

> ten program potrebuje jeste dalsi casti, tak si to musi poresit sama, 
> manager uz davno neni v pameti a program o fw unikarty nic nevi, tak s tim

> nemuze spolupracovat. 
> 
> Pokud se jedna o programy z vice casti, tak ty vetsinou spolupracuji s 
> filesystemem FD nebo QD a to emulace nemusi resit nijak specialne. A pokud

> jde o programy (vetinou hry) na vice QD disketach (pro MZ-1500 je jich asi

> 15), tak to uz resime vymenou image pro QDiskety. Mimochodem fw unikarty 
uz 
> podporuje zapis na QD. A taky emulaci EMM pameti, vetsi konfigurovatelnost

> vsech image, atd. 
> 

_______________________________________________ 
SharpMZ mailing list 
SharpMZmail.ordoz.com 
http://mail.ordoz.com/mailman/listinfo/sharpmz 
"

Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty

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

Proc neuzavirat handle? Tim by se nic moc nevyresilo - pravda, jedine 
cemu by to mohlo pomoci je ten MZT a to je zajimava myslenka, nicmene 
predstava, ze se ponecha otevrena klika k souboru mne prece prilis 
nelaka ...

Nicmene jak uz tady padlo: pokud jste zachovali kompatibilitu s jadrem 
puvodniho API, tak postaci, kdyz manager pred spustenim MZF nastavi 
zmenu pracovniho adresare. Spusteny program si pak muze zavolat READDIR 
./ a tak najit sve doplnkove casti...



Dne 17.1.2018 v 19:08 Michal Medek napsal(a):
Zobrazit citovaný text (67 řádků)
> Ahoj,
>
>
>
> ale to by znamenalo, ze pred spustenim programu neuzavres handle a v
> programu se k nemu nejak vratis. To muze fungovat pro nove nebo upravene
> programy. Otazkou zustava, kdo bude stavajici programy upravovat (zatim asi
> nikdo) a kdo bude psat nove. Kdybych psal nejaky novy program, tak neni
> problem si handle dalsi(ch) casti otevrit pres API unikarty, nacist a pak
> korektne uzavrit. To bych radeji poresil v programu a nespolehal na to, ze
> mi to fw zachova. Treba souborovy format .mzt to tak dela a ma ulozenu celou
> hravicku kazdych dalsich casti. Existuje nejaky (jakykoliv) program, ktery
> to tak nedelal a nacital primo kontext datoveho souboru?
>
>
>
>
> Mikes
>
>
> ---------- Původní e-mail ----------
> Od: Vaclav Peroutka <vaclavpe[doména skryta]>
> Komu: Počítače SHARP MZ a jejich emulátory <sharpmzmail.ordoz.com>
> Datum: 17. 1. 2018 15:32:56
> Předmět: Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty
> "
> Ahoj,
>
> co se tyce toho CWD, tak pouziti je u her, ktere se nedaji natahnout
> najednou. Natahne se prvni cast hry a hra se spusti. V puvodnim FW se
> ztratila informace o tom, ze kterého adresare SD_CARD byla hra spustena,
> takze si neni schopna tahnout dalsi cast. Michal ten FW upravil, aby CWD
> zustalo.
>
> Nejake experimenty, co jsem delal, byly uspesne, ale celkove se mi zatim
> nepovedlo tu hru BusinessWorld doupravit. Snad se k tomu zase dostanu.
>
> V.
>
> "
> Mimochodem s tim managerem Unikarty jsi mi pripomnel, ze jsem v nem ted
> v rijnu udelal taky drobnou upravu: jednalo se o to, ze manager pracoval
> vzdy s absolutni cestou k MZF a pred spustenim programu z SD repozitare
> se do Unikarty vzdy posilal reset. Tohle vsak bylo nezadouci pro
> pripadne upravy multi blokovych her, pracujicich s Unikartou, coz chtel
> prave v rijnu vyzkouset Vasek.
>
> Takze nova verze managera ted provede zmenu CWD, pak natahne MZF do
> Sharpa a nevykona zadny reset. Bohuzel zatim nemam od Vaska zadnou
> zpetnou vazbu, zda se mu to uz chova tak jak potreboval, tak jsem to
> zatim nechtel poustet do sveta.
>
> Michal
> "
>    
>
>
> _______________________________________________
> 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] Chyba v emulaci FDC - tyka se i Unikarty

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

Tak se divam do kodu sveho managera a tam je to predavano (do ROM :) 
pres 'BC:

         ld      bc, 0x0100      ; nastaveni load device CMT
         exx
         ld      hl, 0x1102      ; header SIZE
         jp      0xecfc          ; spust to z ROM


Je to uz temer 10 let, kdy jsem delal na prvni verzi Unikarty, tak uz 
mam mozna neco v mlze. Udaj o tom co a v jakem registru predat mam s 
nejvetsi pravdepodobnosti z poznamek v komentovanem vypisu ROM. Nechce 
se mi jej ted dohledavat, ale predpokladam, ze 0xecfc se postara o 
spravne umisteni programu v pameti, pak provede EXX a JP na strt adresu 
natazeneho programu.

Michal

Dne 17.1.2018 v 19:22 Michal Medek napsal(a):
Zobrazit citovaný text (85 řádků)
> Ahoj,
>
>
>
> jak preda ROMce? Vzdyt ROMka na to nema zadnou podporu. A predavani cisla
> (je to pres BC registr), pokud vim, pouzivaji jen BASICy aby nastavily
> DEFAULT zarizeni, kde hledaji "AUTO RUN". Bez upravy o zadnem unicard
> manageru nevi. Korektni kontext je CMT, RAM a QD (nebo mozna FD). Nova verze
> manageru to rezi pres QD a na image QD diskety jsou ostatni soubory. Krome
> toho uz nic nepridava a ani BASIC nic jineho neceka.
>
> Mimochodem ten parametr se predava pres aktualni BC, ne pres stinovy. V
> nekterych zdrojovych kodech jsem to videl spatne. A treba MZ-1500 to ma
> jinak implementovane nez MZ-800. Ale vysledek je stejny.
>
> Ta vlastni modifikace v BASICu je jen proto, aby se poprve spoustel "AUTO
> RUN" a pozdeji (po CTRL+RESET) uz ne. Vychazim z disassemblovaneho/
> zdrojoveho kodu nekolika BASICu.
>
>
>
>
> Mikes
>
>
> ---------- Původní e-mail ----------
> Od: Michal Hucik - ORDOZ <ordoz[doména skryta]>
> Komu: sharpmzmail.ordoz.com
> Datum: 17. 1. 2018 15:24:08
> Předmět: Re: [SharpMZ] Chyba v emulaci FDC - tyka se i Unikarty
> "
> V te uprave jde o to, ze program natazeny z SD nema poneti o tom z
> jakeho adresare z SD natazen. Proto novy manager pred tim, nez preda
> rizeni SHARP ROM jeste nastavi pracovni adresar v Unikarte na misto ze
> ktereho natahoval posledni MZF - to je vse. Spusteny program pak muze
> pres relativni cesty pracovat s pridruzenymi soubory, ktere jsou ulozeny
> ve stejnem adresari, nebo v predem predpokladane pozici vuci tomu
> spustenemu MZF.
>
> BTW: dalsi veci je, ze program bohuzel netusi, ze byl natazen prave z
> SD. Manager by mu to ale mohl sdelit -  Sharp ROM s predavanim takove
> informace totiz pocita a predava spoustenemu programu ciselny kod
> zarizeni v nejakem registru (tusim 'HL). Existuje tam ciselny kod pro
> CMT, QD a FD. Puvodne jsem tam take managerem predaval nejaky vlastni
> kod, ale u diskoveho BASICu jsem narazil na problem, protoze on se po
> svem spusteni v inicializaci modifikuje prave podle toho jak byl
> spusten. Pokud je spusten z QD, tak zahodi obsluhu FD a naopak. Kdyz je
> spusten z CMT, tak zahodi vse. Proto manager nyni predava info, ze doslo
> ke spusteni z FD. Lepsi by vsak zrejme bylo. kdyby jsme upravili BASIC.
>
>
> Dne 17.1.2018 v 14:47 Michal Medek napsal(a):
>> Ahoj,
>>
>>
>>
>> co se tyka FDC emulace, tak bydu rad, kdyz se na to podivas.
>>
>> A ohledne manageru, tak ten je dost podstatne prepsany, ale nerozumim tomu
> o
>> cem pises. Bylo a je to tak, ze manager pri spusteni MZF souboru ho
> natahne
>> do pameti, preda rizeni to EPROMky, ta ho pripadne presune a spusti. Pokud
>> ten program potrebuje jeste dalsi casti, tak si to musi poresit sama,
>> manager uz davno neni v pameti a program o fw unikarty nic nevi, tak s tim
>> nemuze spolupracovat.
>>
>> Pokud se jedna o programy z vice casti, tak ty vetsinou spolupracuji s
>> filesystemem FD nebo QD a to emulace nemusi resit nijak specialne. A pokud
>> jde o programy (vetinou hry) na vice QD disketach (pro MZ-1500 je jich asi
>> 15), tak to uz resime vymenou image pro QDiskety. Mimochodem fw unikarty
> uz
>> podporuje zapis na QD. A taky emulaci EMM pameti, vetsi konfigurovatelnost
>> vsech image, atd.
>>
> _______________________________________________
> 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
>

[SharpMZ] Business World - nahrávání z Unikarty

"Vaclav Peroutka" <vaclavpe@[doména skryta]> SHARP MZ-800

Ahoj,

jak jsem psal minulý týden, tak se mi nepovedlo upravit BW1.MZF tak, abych mohl hru Business World nahrát z unikarty. Tak to už neplatí, kód, který je přiložen níže, se dá použít pro nahrávání vícesouborových her - ale pouze těch, co si otevírají v emulátoru CMT PATCH. Tj.pokud v loaderu není nahrávání obrázků nebo podobná zvěrstva.

U hry BW je ještě taková specialitka, že se nesmí sáhnout na zásobník - proto jsou zakomentované všechny CALLy.

Nevím popravdě, jak to funguje na Vašich novějších unikartách, já používám ten starší model můj a kód Michalův.

Vašek

mainprg:  
  ;;;;;;;;;;;;;;;;;;;;;;; precteme par byte z filata
 
     ;ld de, txt1
    ;call 0x0015        ; zobrazit text z DE
 
    ; otevreme soubor
    ld a, cmdOPEN
    out (CMDPORT), a

    ; Exstujici soubor pro cteni
    ld a, FA_OPEN_EXISTING + FA_READ
    out (DATAPORT), a

    ; Druhym parametrem je jmeno souboru
   ld    e, 0x00 ; konec jmena soubor
    ld hl, filename
    ld    c, DATAPORT
next_char:
    outi
    ld    a, (hl)
    cp    e
    jr    nz, next_char
  
    ; Podarilo se nam soubor otevrit?
    ;
    ; (Pokud je vse OK, tak ted mame ve statusu nastaveny
    ; bity READ_FILE, WRITE_FILE a EOF.)
    ;
    in a,(CMDPORT)
    bit 0, a        ; je READY ?
    jr nz, ERROR_PARAM    ; NENI: tohle muze nastat jen pokud
                ; jsme zapomneli ukoncit vkladani
                ; textoveho parametru znakem mensim jak 0x20
           
    and 0x80
    jr nz,ERROR_OPEN    ; ne, doslo k chybe pri OPEN

   ; pripravili jsme si v unikarte MZF, tak nacteme jeho hlavicku
   ld bc, 0x8051    ; cteme 128 bajt z DATA_PORTu
   ld hl, 0x10f0    ; a ukladame to na 0x10f0
   inir

   ; podle udaju z hlavicky si nacteme z DATA_PORTu telo na adresu 0x1200
   ld hl, 0x1200
   ld de, (0x10f0 + 0x12 )
rdbyte:        ini
   dec de
   ld a,d
   or e
   jr nz, rdbyte
   ; zavrit soubor
   ld a,cmdCLOSE
   out (CMDPORT),a

   out   (0xe0),A  ; zrusi spodni ROM a primapuje RAM
   jp    0x0000 ; skoci do RAMky, kde uz je pripravena BW1
  

ERROR_PARAM:
    ld de, msg_err_param
    call 0x0015        ; zobrazit text z HL
    di
    halt

ERROR_OPEN:
    ld de, msg_err_open
    jr print_errcode

;ERROR_SEEK:
;    ld de, msg_err_seek

print_errcode:
    call 0x0015        ; zobrazit text z HL
    in a,(CMDPORT)        ; kod posledniho prikazu
    in a,(CMDPORT)        ; unicard err code
    in a,(CMDPORT)        ; FatFS err code

    call 0x03c3        ; zobrazit obsah A
    di
    halt
   
msg_err_param:
    db    "ERROR: BP!",0x0d
msg_err_open:
    db    "OPEN ERROR: ",0x0d
;msg_err_seek:
;    db    "SEEK - ERROR CODE: ",0x0d

  
txt1: db "OPENING "  ; doplni se filename automagicky
filename:  db    "BW.DAT",0x0d, 0x00
txt2: db " OK",0x0d



Re: [SharpMZ] Business World - nahrávání z Unikarty

"Michal Medek" <Michal.Bruntal@[doména skryta]> SHARP MZ-800

Ahoj,

tak jsem zkoumal ten kod. Nejak nechapu v cem by mela byt ten rozdil mezi starsi/upravenym a novym modelem? Vzdyt to klasicky otevre soubor nacte hlavicku, pak telo a otestuje errory.
Takto vlastne musis upravit prvni dil programu/hry tak, aby si pres API unikarty otevrel a nacetl druhy dil. A pak dal a dal. A co teda vlastne dela ta uprava fw jinak?
Obavam se, ze na MZT souboru, ktery ma vice casti to nepujde pouzit. Musel by jsi udelat seek na pokracovani v souboru. Treba takova hra jako Yokai_A.mzt a Yokai_B.mzt, to by byl asi orisek, predelat, protoze kazda cast ma jeste nekolik dilu:
File: ..\MZT2\Yokai_A.mzt
Directory of MZT:                         size load exec
 OBJ  "SIDE A"          :` 48640 Bytes    BE00 1200 1200
 OBJ  "DEMO"            :`  6784 Bytes    1A80 1200 2C66
Length of data: 55424 Bytes.

File: ..\MZT2\Yokai_B.mzt
Directory of MZT:                         size load exec
 OBJ  "YOUKAI V1.1"     :` 36718 Bytes    8F6E 1200 A155
 OBJ  "MAP 8"           :`  6656 Bytes    1A00 9600 E804
Length of data: 43374 Bytes.

Jinak posledni update fw pro unikartu to resi prohazovanim image QD postupne na dalsi a dalsi, ale je potreba, aby programy bud nahravaly dalsi casti z QDisku nebo cekaly na prohozeni disketek. Vzhledem k tomu, ze vetsina programu pouziva rutiny z monitoru, tak je to resitelne. Akorat je tu problem s adresama QD radice, ale to je jina story.
Vyhoda je, ze se nemusi 'patchovat' kazda hra nebo BASICove programy.

Mikes

---------- Původní e-mail ----------
Zobrazit citovaný text Od: Vaclav Peroutka <vaclavpe[doména skryta]>
Komu: Počítače SHARP MZ a jejich emulátory <sharpmzmail.ordoz.com>
Datum: 22. 1. 2018 22:10:32
Předmět: [SharpMZ] Business World - nahrávání z Unikarty
Ahoj,

jak jsem psal minulý týden, tak se mi nepovedlo upravit BW1.MZF tak, abych mohl hru Business World nahrát z unikarty. Tak to už neplatí, kód, který je přiložen níže, se dá použít pro nahrávání vícesouborových her - ale pouze těch, co si otevírají v emulátoru CMT PATCH. Tj.pokud v loaderu není nahrávání obrázků nebo podobná zvěrstva.

U hry BW je ještě taková specialitka, že se nesmí sáhnout na zásobník - proto jsou zakomentované všechny CALLy.

Nevím popravdě, jak to funguje na Vašich novějších unikartách, já používám ten starší model můj a kód Michalův.

Vašek

mainprg:  
  ;;;;;;;;;;;;;;;;;;;;;;; precteme par byte z filata
 
     ;ld de, txt1
    ;call 0x0015        ; zobrazit text z DE
 
    ; otevreme soubor
    ld a, cmdOPEN
    out (CMDPORT), a

    ; Exstujici soubor pro cteni
    ld a, FA_OPEN_EXISTING + FA_READ
    out (DATAPORT), a

    ; Druhym parametrem je jmeno souboru
   ld    e, 0x00 ; konec jmena soubor
    ld hl, filename
    ld    c, DATAPORT
next_char:
    outi
    ld    a, (hl)
    cp    e
    jr    nz, next_char
  
    ; Podarilo se nam soubor otevrit?
    ;
    ; (Pokud je vse OK, tak ted mame ve statusu nastaveny
    ; bity READ_FILE, WRITE_FILE a EOF.)
    ;
    in a,(CMDPORT)
    bit 0, a        ; je READY ?
    jr nz, ERROR_PARAM    ; NENI: tohle muze nastat jen pokud
                ; jsme zapomneli ukoncit vkladani
                ; textoveho parametru znakem mensim jak 0x20
           
    and 0x80
    jr nz,ERROR_OPEN    ; ne, doslo k chybe pri OPEN

   ; pripravili jsme si v unikarte MZF, tak nacteme jeho hlavicku
   ld bc, 0x8051    ; cteme 128 bajt z DATA_PORTu
   ld hl, 0x10f0    ; a ukladame to na 0x10f0
   inir

   ; podle udaju z hlavicky si nacteme z DATA_PORTu telo na adresu 0x1200
   ld hl, 0x1200
   ld de, (0x10f0 + 0x12 )
rdbyte:        ini
   dec de
   ld a,d
   or e
   jr nz, rdbyte
   ; zavrit soubor
   ld a,cmdCLOSE
   out (CMDPORT),a

   out   (0xe0),A  ; zrusi spodni ROM a primapuje RAM
   jp    0x0000 ; skoci do RAMky, kde uz je pripravena BW1
  

ERROR_PARAM:
    ld de, msg_err_param
    call 0x0015        ; zobrazit text z HL
    di
    halt

ERROR_OPEN:
    ld de, msg_err_open
    jr print_errcode

;ERROR_SEEK:
;    ld de, msg_err_seek

print_errcode:
    call 0x0015        ; zobrazit text z HL
    in a,(CMDPORT)        ; kod posledniho prikazu
    in a,(CMDPORT)        ; unicard err code
    in a,(CMDPORT)        ; FatFS err code

    call 0x03c3        ; zobrazit obsah A
    di
    halt
   
msg_err_param:
    db    "ERROR: BP!",0x0d
msg_err_open:
    db    "OPEN ERROR: ",0x0d
;msg_err_seek:
;    db    "SEEK - ERROR CODE: ",0x0d

  
txt1: db "OPENING "  ; doplni se filename automagicky
filename:  db    "BW.DAT",0x0d, 0x00
txt2: db " OK",0x0d



_______________________________________________
SharpMZ mailing list
SharpMZmail.ordoz.com
http://mail.ordoz.com/mailman/listinfo/sharpmz

Re: [SharpMZ] Business World - nahrávání z Unikarty

"Vaclav Peroutka" <vaclavpe@[doména skryta]> SHARP MZ-800


Ahoj Mikeši,
rozdíl je ten, že nevím, jaké máte poslední API na unikartě. Michal Hučík mi upravoval kód na staré unikartě, aby se nenuloval aktuální adresář po dočtení souboru, a možná nějaké další drobnosti.

Vašek


Ahoj,

tak jsem zkoumal ten kod. Nejak nechapu v cem by mela byt ten rozdil mezi starsi/upravenym a novym modelem? Vzdyt to klasicky otevre soubor nacte hlavicku, pak telo a otestuje errory.
Takto vlastne musis upravit prvni dil programu/hry tak, aby si pres API unikarty otevrel a nacetl druhy dil. A pak dal a dal. A co teda vlastne dela ta uprava fw jinak?
Obavam se, ze na MZT souboru, ktery ma vice casti to nepujde pouzit. Musel by jsi udelat seek na pokracovani v souboru. Treba takova hra jako Yokai_A.mzt a Yokai_B.mzt, to by byl asi orisek, predelat, protoze kazda cast ma jeste nekolik dilu:
File: ..\MZT2\Yokai_A.mzt
Directory of MZT:                         size load exec
 OBJ  "SIDE A"          :` 48640 Bytes    BE00 1200 1200
 OBJ  "DEMO"            :`  6784 Bytes    1A80 1200 2C66
Length of data: 55424 Bytes.

File: ..\MZT2\Yokai_B.mzt
Directory of MZT:                         size load exec
 OBJ  "YOUKAI V1.1"     :` 36718 Bytes    8F6E 1200 A155
 OBJ  "MAP 8"           :`  6656 Bytes    1A00 9600 E804
Length of data: 43374 Bytes.

Jinak posledni update fw pro unikartu to resi prohazovanim image QD postupne na dalsi a dalsi, ale je potreba, aby programy bud nahravaly dalsi casti z QDisku nebo cekaly na prohozeni disketek. Vzhledem k tomu, ze vetsina programu pouziva rutiny z monitoru, tak je to resitelne. Akorat je tu problem s adresama QD radice, ale to je jina story.
Vyhoda je, ze se nemusi 'patchovat' kazda hra nebo BASICove programy.

Mikes

---------- Původní e-mail ----------
Od: Vaclav Peroutka <vaclavpe[doména skryta]>
Komu: Počítače SHARP MZ a jejich emulátory <sharpmzmail.ordoz.com>
Datum: 22. 1. 2018 22:10:32
Předmět: [SharpMZ] Business World - nahrávání z Unikarty
Ahoj,

jak jsem psal minulý týden, tak se mi nepovedlo upravit BW1.MZF tak, abych mohl hru Business World nahrát z unikarty. Tak to už neplatí, kód, který je přiložen níže, se dá použít pro nahrávání vícesouborových her - ale pouze těch, co si otevírají v emulátoru CMT PATCH. Tj.pokud v loaderu není nahrávání obrázků nebo podobná zvěrstva.

U hry BW je ještě taková specialitka, že se nesmí sáhnout na zásobník - proto jsou zakomentované všechny CALLy.

Nevím popravdě, jak to funguje na Vašich novějších unikartách, já používám ten starší model můj a kód Michalův.

Vašek

mainprg:  
  ;;;;;;;;;;;;;;;;;;;;;;; precteme par byte z filata
 
     ;ld de, txt1
    ;call 0x0015        ; zobrazit text z DE
 
    ; otevreme soubor
    ld a, cmdOPEN
    out (CMDPORT), a

    ; Exstujici soubor pro cteni
    ld a, FA_OPEN_EXISTING + FA_READ
    out (DATAPORT), a

    ; Druhym parametrem je jmeno souboru
   ld    e, 0x00 ; konec jmena soubor
    ld hl, filename
    ld    c, DATAPORT
next_char:
    outi
    ld    a, (hl)
    cp    e
    jr    nz, next_char
  
    ; Podarilo se nam soubor otevrit?
    ;
    ; (Pokud je vse OK, tak ted mame ve statusu nastaveny
    ; bity READ_FILE, WRITE_FILE a EOF.)
    ;
    in a,(CMDPORT)
    bit 0, a        ; je READY ?
    jr nz, ERROR_PARAM    ; NENI: tohle muze nastat jen pokud
                ; jsme zapomneli ukoncit vkladani
                ; textoveho parametru znakem mensim jak 0x20
           
    and 0x80
    jr nz,ERROR_OPEN    ; ne, doslo k chybe pri OPEN

   ; pripravili jsme si v unikarte MZF, tak nacteme jeho hlavicku
   ld bc, 0x8051    ; cteme 128 bajt z DATA_PORTu
   ld hl, 0x10f0    ; a ukladame to na 0x10f0
   inir

   ; podle udaju z hlavicky si nacteme z DATA_PORTu telo na adresu 0x1200
   ld hl, 0x1200
   ld de, (0x10f0 + 0x12 )
rdbyte:        ini
   dec de
   ld a,d
   or e
   jr nz, rdbyte
   ; zavrit soubor
   ld a,cmdCLOSE
   out (CMDPORT),a

   out   (0xe0),A  ; zrusi spodni ROM a primapuje RAM
   jp    0x0000 ; skoci do RAMky, kde uz je pripravena BW1
  

ERROR_PARAM:
    ld de, msg_err_param
    call 0x0015        ; zobrazit text z HL
    di
    halt

ERROR_OPEN:
    ld de, msg_err_open
    jr print_errcode

;ERROR_SEEK:
;    ld de, msg_err_seek

print_errcode:
    call 0x0015        ; zobrazit text z HL
    in a,(CMDPORT)        ; kod posledniho prikazu
    in a,(CMDPORT)        ; unicard err code
    in a,(CMDPORT)        ; FatFS err code

    call 0x03c3        ; zobrazit obsah A
    di
    halt
   
msg_err_param:
    db    "ERROR: BP!",0x0d
msg_err_open:
    db    "OPEN ERROR: ",0x0d
;msg_err_seek:
;    db    "SEEK - ERROR CODE: ",0x0d

  
txt1: db "OPENING "  ; doplni se filename automagicky
filename:  db    "BW.DAT",0x0d, 0x00
txt2: db " OK",0x0d



_______________________________________________
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] Business World - nahrávání z Unikarty

"Michal Medek" <Michal.Bruntal@[doména skryta]> SHARP MZ-800

Ahoj,

aha, takze kdyz zadas soubor bez cesty, tak se otevre na te puvodni. Tak to by chtelo vyzkouset - kouknu na to. A kdyby ne, tak by se to dalo upravit. Jestli das casem nejakou upravu k dispozici (myslim upravenou hru), tak na to kouknu. Nebo si zkusim ten zdrojak, co jsi poslal ;-)

Mikes

---------- Původní e-mail ----------
Zobrazit citovaný text Od: Vaclav Peroutka <vaclavpe[doména skryta]>
Komu: Počítače SHARP MZ a jejich emulátory <sharpmzmail.ordoz.com>
Datum: 23. 1. 2018 19:09:46
Předmět: Re: [SharpMZ] Business World - nahrávání z Unikarty

Ahoj Mikeši,
rozdíl je ten, že nevím, jaké máte poslední API na unikartě. Michal Hučík mi upravoval kód na staré unikartě, aby se nenuloval aktuální adresář po dočtení souboru, a možná nějaké další drobnosti.

Vašek


Ahoj,

tak jsem zkoumal ten kod. Nejak nechapu v cem by mela byt ten rozdil mezi starsi/upravenym a novym modelem? Vzdyt to klasicky otevre soubor nacte hlavicku, pak telo a otestuje errory.
Takto vlastne musis upravit prvni dil programu/hry tak, aby si pres API unikarty otevrel a nacetl druhy dil. A pak dal a dal. A co teda vlastne dela ta uprava fw jinak?
Obavam se, ze na MZT souboru, ktery ma vice casti to nepujde pouzit. Musel by jsi udelat seek na pokracovani v souboru. Treba takova hra jako Yokai_A.mzt a Yokai_B.mzt, to by byl asi orisek, predelat, protoze kazda cast ma jeste nekolik dilu:
File: ..\MZT2\Yokai_A.mzt
Directory of MZT:                         size load exec
 OBJ  "SIDE A"          :` 48640 Bytes    BE00 1200 1200
 OBJ  "DEMO"            :`  6784 Bytes    1A80 1200 2C66
Length of data: 55424 Bytes.

File: ..\MZT2\Yokai_B.mzt
Directory of MZT:                         size load exec
 OBJ  "YOUKAI V1.1"     :` 36718 Bytes    8F6E 1200 A155
 OBJ  "MAP 8"           :`  6656 Bytes    1A00 9600 E804
Length of data: 43374 Bytes.

Jinak posledni update fw pro unikartu to resi prohazovanim image QD postupne na dalsi a dalsi, ale je potreba, aby programy bud nahravaly dalsi casti z QDisku nebo cekaly na prohozeni disketek. Vzhledem k tomu, ze vetsina programu pouziva rutiny z monitoru, tak je to resitelne. Akorat je tu problem s adresama QD radice, ale to je jina story.
Vyhoda je, ze se nemusi 'patchovat' kazda hra nebo BASICove programy.

Mikes

---------- Původní e-mail ----------
Od: Vaclav Peroutka <vaclavpe[doména skryta]>
Komu: Počítače SHARP MZ a jejich emulátory <sharpmzmail.ordoz.com>
Datum: 22. 1. 2018 22:10:32
Předmět: [SharpMZ] Business World - nahrávání z Unikarty
Ahoj,

jak jsem psal minulý týden, tak se mi nepovedlo upravit BW1.MZF tak, abych mohl hru Business World nahrát z unikarty. Tak to už neplatí, kód, který je přiložen níže, se dá použít pro nahrávání vícesouborových her - ale pouze těch, co si otevírají v emulátoru CMT PATCH. Tj.pokud v loaderu není nahrávání obrázků nebo podobná zvěrstva.

U hry BW je ještě taková specialitka, že se nesmí sáhnout na zásobník - proto jsou zakomentované všechny CALLy.

Nevím popravdě, jak to funguje na Vašich novějších unikartách, já používám ten starší model můj a kód Michalův.

Vašek

mainprg:  
  ;;;;;;;;;;;;;;;;;;;;;;; precteme par byte z filata
 
     ;ld de, txt1
    ;call 0x0015        ; zobrazit text z DE
 
    ; otevreme soubor
    ld a, cmdOPEN
    out (CMDPORT), a

    ; Exstujici soubor pro cteni
    ld a, FA_OPEN_EXISTING + FA_READ
    out (DATAPORT), a

    ; Druhym parametrem je jmeno souboru
   ld    e, 0x00 ; konec jmena soubor
    ld hl, filename
    ld    c, DATAPORT
next_char:
    outi
    ld    a, (hl)
    cp    e
    jr    nz, next_char
  
    ; Podarilo se nam soubor otevrit?
    ;
    ; (Pokud je vse OK, tak ted mame ve statusu nastaveny
    ; bity READ_FILE, WRITE_FILE a EOF.)
    ;
    in a,(CMDPORT)
    bit 0, a        ; je READY ?
    jr nz, ERROR_PARAM    ; NENI: tohle muze nastat jen pokud
                ; jsme zapomneli ukoncit vkladani
                ; textoveho parametru znakem mensim jak 0x20
           
    and 0x80
    jr nz,ERROR_OPEN    ; ne, doslo k chybe pri OPEN

   ; pripravili jsme si v unikarte MZF, tak nacteme jeho hlavicku
   ld bc, 0x8051    ; cteme 128 bajt z DATA_PORTu
   ld hl, 0x10f0    ; a ukladame to na 0x10f0
   inir

   ; podle udaju z hlavicky si nacteme z DATA_PORTu telo na adresu 0x1200
   ld hl, 0x1200
   ld de, (0x10f0 + 0x12 )
rdbyte:        ini
   dec de
   ld a,d
   or e
   jr nz, rdbyte
   ; zavrit soubor
   ld a,cmdCLOSE
   out (CMDPORT),a

   out   (0xe0),A  ; zrusi spodni ROM a primapuje RAM
   jp    0x0000 ; skoci do RAMky, kde uz je pripravena BW1
  

ERROR_PARAM:
    ld de, msg_err_param
    call 0x0015        ; zobrazit text z HL
    di
    halt

ERROR_OPEN:
    ld de, msg_err_open
    jr print_errcode

;ERROR_SEEK:
;    ld de, msg_err_seek

print_errcode:
    call 0x0015        ; zobrazit text z HL
    in a,(CMDPORT)        ; kod posledniho prikazu
    in a,(CMDPORT)        ; unicard err code
    in a,(CMDPORT)        ; FatFS err code

    call 0x03c3        ; zobrazit obsah A
    di
    halt
   
msg_err_param:
    db    "ERROR: BP!",0x0d
msg_err_open:
    db    "OPEN ERROR: ",0x0d
;msg_err_seek:
;    db    "SEEK - ERROR CODE: ",0x0d

  
txt1: db "OPENING "  ; doplni se filename automagicky
filename:  db    "BW.DAT",0x0d, 0x00
txt2: db " OK",0x0d



_______________________________________________
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
_______________________________________________
SharpMZ mailing list
SharpMZmail.ordoz.com
http://mail.ordoz.com/mailman/listinfo/sharpmz

Re: [SharpMZ] Business World - nahrávání z Unikarty

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

Vasku, neupravoval jsem ti prece FW Unikarty, ale kod managera, ktery s 
tim API pracoval nevhodnym zpusobem ...


Dne 23.1.2018 v 19:09 Vaclav Peroutka napsal(a):
Zobrazit citovaný text (7 řádků)
>
> Ahoj Mikeši,
> rozdíl je ten, že nevím, jaké máte poslední API na unikartě. Michal 
> Hučík mi upravoval kód na staré unikartě, aby se nenuloval aktuální 
> adresář po dočtení souboru, a možná nějaké další drobnosti.
>
> Vašek

Re: [SharpMZ] Business World - nahrávání z Unikarty

"Vaclav Peroutka" <vaclavpe@[doména skryta]> SHARP MZ-800


Jsem rád Michale, že si to pamatuješ líp, než já :-) Já vím, že se nějaké změny dělaly. No a nakonec se to povedlo a hry, které se napoprvé nevejdou do RAMky, se dají upravit pro fungování na unikartě.


Vasku, neupravoval jsem ti prece FW Unikarty, ale kod managera, ktery s
tim API pracoval nevhodnym zpusobem ...


Dne 23.1.2018 v 19:09 Vaclav Peroutka napsal(a):
>
> Ahoj Mikeši,
> rozdíl je ten, že nevím, jaké máte poslední API na unikartě. Michal
> Hučík mi upravoval kód na staré unikartě, aby se nenuloval aktuální
> adresář po dočtení souboru, a možná nějaké další drobnosti.
>
> Vašek