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
Celé vlákno · 17 zpráv
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
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
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 UnikartyAhoj,_______________________________________________
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
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šekAhoj,_______________________________________________
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 UnikartyAhoj,_______________________________________________
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