OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 19.04.2024, 02:10

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 19 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: MDOS3: předělávky ze snapů
PříspěvekNapsal: 06.06.2020, 13:46 
Offline
Kecálek
Uživatelský avatar

Registrován: 30.05.2020, 01:05
Příspěvky: 190
Bydliště: Olomouc
Has thanked: 559 times
Been thanked: 102 times
Zdravím všechny,
narazil jsem na problém, kdy FUXOFTem počeštěný program Diktator (je jich více) upravený pro Didaktik D40/D80 (z archivu Velesofta) od Unsnap -Dolphin nejde spustit (nahrát) pod MDOS3 emulací na divIDE. Přitom z Didaktiku D40/D80 to samozřejmě jede. Pravděpodobně při nahrávání přepisuje nějaké systémové proměnné nebo celý basic, které jsou jiné než u Didaktiku D40/D80, a pak to skočí někam jinam než by mělo, ale nevím.


Přílohy:
Diktator.tap [26.77 KiB]
465 krát

_________________
ZX Spectrum+ 48 kB s D40 nebo divIDE 57c, MB03+, popřípadě Fuse a teď nově LNX
Nahoru
 Profil  
 
PříspěvekNapsal: 06.06.2020, 22:53 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3661
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 795 times
Naco sa tam v basicu otvara MDOS romka pomocou znameho POKE 244,79 ? Potrebuje Diktator po nahrati a spusteni este nejak komunikovat s MDOSom ?


Nahoru
 Profil  
 
PříspěvekNapsal: 07.06.2020, 09:56 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2089
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 327 times
Snáď POKE #247,79. To 244 nebude skôr nejaká ochrana proti snapu?

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Nahoru
 Profil  
 
PříspěvekNapsal: 07.06.2020, 13:15 
Offline
Kecálek
Uživatelský avatar

Registrován: 30.05.2020, 01:05
Příspěvky: 190
Bydliště: Olomouc
Has thanked: 559 times
Been thanked: 102 times
Určitě nepotřebuje, to tam je asi ta ochrana proti SNAPu. Musím se podívat do manuálu rutin D40.
Už jsem z toho BASICu vypreparoval stroják je od 23811 do 24066 při standartní poloze.


Přílohy:
DIKT_kod.tap [280 bajtů]
451 krát

_________________
ZX Spectrum+ 48 kB s D40 nebo divIDE 57c, MB03+, popřípadě Fuse a teď nově LNX
Nahoru
 Profil  
 
PříspěvekNapsal: 07.06.2020, 14:35 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3661
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 795 times
PotPalo píše:
Snáď POKE #247,79. To 244 nebude skôr nejaká ochrana proti snapu?
Sorry, preklep, samozrejme myslel som 247.
Adresa 244 by poskodila systemovu znacku co by sposobilo okamzity reset po prvom RST #00.


Nahoru
 Profil  
 
PříspěvekNapsal: 07.06.2020, 18:56 
Offline
Kecálek

Registrován: 10.07.2014, 01:57
Příspěvky: 169
Has thanked: 25 times
Been thanked: 225 times
Kód:
MERGE *"DIKTATOR"
25 POKE 24020,224: POKE 24021,2: POKE 23868,33
RUN


akurat, ze to ma jeden side effect, vypne to ochranu proti breaku ;]

asi najlepsie by bolo zohnat si normalnu verziu a nie nejaku, ktoru niekto prerobil zo snapu (tipujem ze unsnap-doplhin bude nejaky soft na konverziu snapu do *.P a *.B)

kazdopadne, funkcna verzia s normalnym loaderom aj s obrazkom je na zx-spectrum.cz . je dokonca pripravena na upravu na d80, kedze medzi LOAD a uvodzovkami je (pre kazetak nepotrebna) medzera, ktora sa lahko nahradi hviezdickou.


Nahoru
 Profil  
 
PříspěvekNapsal: 08.06.2020, 19:07 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2089
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 327 times
Narýchlo som do toho nazrel, čo je to za exotiku. Vyzerá to, že to v podstate asi malo plniť dva účely: komprimácia, a prevod SNAP na bytes, takže sa to potom ľahšie kopíruje. Pre samotnú funkciu to využíva RAM disketovej mechaniky. Asi je to výsledok nejakej automatizácie, podľa prevedenia.

Prvé dva bloky sa nahrajú ešte z BASICu. Po kontrole na CALL #E92 na ich začiatku sa spustia (teda pokiaľ tam je, inak nie) každý od adresy od ktorej sa nahral. Pred spustením sa prekopíruje 256 bytov pred blokom do RAM MDOSu a po spustení sa vráti naspäť. Samotné bloky sú relokovateľné, na adrese #E9A (v ROM MDOS) kde sa skáče, je RET, následne sa zo zásobníku vyextrahuje návratová adresa a takto si dekomprimačná rutina zistí kde sa v skutočnosti nachádza, podľa toho si vypočíta adresu svojich dát a dekomprimuje sa obsah. Ďalej loader upraví meno požadovaného súboru (v MDOSe ostalo uložené meno posledného nahraného súboru) tak, že posledný znak prepíše na "b" a súbor nahrá. Potom sa celá tá paráda spustí podobne ako snapshot. Myslím že by nebol problém spraviť program, ktorý by toto automaticky prevádzal do klasického snapu, teda pokiaľ už neexistuje. Pokiaľ je ale niekde verzia v pôvodnom obsahu, nieje dôvod sa týmto zaoberať.

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.06.2020, 07:01 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 240
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
PotPalo píše:
Narýchlo som do toho nazrel, čo je to za exotiku. Vyzerá to, že to v podstate asi malo plniť dva účely: komprimácia, a prevod SNAP na bytes, takže sa to potom ľahšie kopíruje. Pre samotnú funkciu to využíva RAM disketovej mechaniky. Asi je to výsledok nejakej automatizácie, podľa prevedenia.

Prvé dva bloky sa nahrajú ešte z BASICu. Po kontrole na CALL #E92 na ich začiatku sa spustia (teda pokiaľ tam je, inak nie) každý od adresy od ktorej sa nahral. Pred spustením sa prekopíruje 256 bytov pred blokom do RAM MDOSu a po spustení sa vráti naspäť. Samotné bloky sú relokovateľné, na adrese #E9A (v ROM MDOS) kde sa skáče, je RET, následne sa zo zásobníku vyextrahuje návratová adresa a takto si dekomprimačná rutina zistí kde sa v skutočnosti nachádza, podľa toho si vypočíta adresu svojich dát a dekomprimuje sa obsah. Ďalej loader upraví meno požadovaného súboru (v MDOSe ostalo uložené meno posledného nahraného súboru) tak, že posledný znak prepíše na "b" a súbor nahrá. Potom sa celá tá paráda spustí podobne ako snapshot. Myslím že by nebol problém spraviť program, ktorý by toto automaticky prevádzal do klasického snapu, teda pokiaľ už neexistuje. Pokiaľ je ale niekde verzia v pôvodnom obsahu, nieje dôvod sa týmto zaoberať.


Nic z toho by nemělo být důvodem, aby to na MDOS 3 nechodilo. Mě by naopak zajímalo na čem to vyhučelo. Tipoval bych, že MDOS 3 má nějak posunutou rutinu na rozběhnutí snapu a tím pádem program skočí do místa kde už je nyní jiný kód. V rámci lepší kompatibility by bylo dobré chybu odhalit a v MDOSu 3 opravit.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.06.2020, 12:03 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2089
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 327 times
Čo si pamätám, tak rutinu na rozbehnutie snapu to má vlastnú (aspoň niečo také som tam videl), to by nemalo vadiť. Nahrá sa pod MDOS3 ten posledný blok, ktorý sa nahráva po spustení cez USR... ? MDOS3 nemám, nieje ako porovnať. Možno to volanie na adresu #67 kde je JP (HL), má to tam aj MDOS3?

Ono to dosť využíva pamäť disketovky, tak možno to prepíše nejaké premenné ktoré MDOS 1 a 2 nemajú ale MDOS 3 áno. Až bude čas, pozriem to.

edit: možno vadí OUT 137,5. Inak to volá klasické rutiny z 9625, 8107, a 9526 (dek.).

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.06.2020, 18:23 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 240
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
PotPalo píše:
Čo si pamätám, tak rutinu na rozbehnutie snapu to má vlastnú (aspoň niečo také som tam videl), to by nemalo vadiť. Nahrá sa pod MDOS3 ten posledný blok, ktorý sa nahráva po spustení cez USR... ? MDOS3 nemám, nieje ako porovnať. Možno to volanie na adresu #67 kde je JP (HL), má to tam aj MDOS3?

Ono to dosť využíva pamäť disketovky, tak možno to prepíše nejaké premenné ktoré MDOS 1 a 2 nemajú ale MDOS 3 áno. Až bude čas, pozriem to.

edit: možno vadí OUT 137,5. Inak to volá klasické rutiny z 9625, 8107, a 9526 (dek.).


137,5 by nemělo vadit. S divide nekoliduje. Co jsem pochopil z výpisu MDOSu, tak to ovládá motory mechaniky. Zřejmě je tímto outem buďto rozbíhá anebo vypíná. Každopádně je to :pig: :pig: :pig:
Ale myslím, že toto nebude ten důvod nefungování na MDOS3.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.06.2020, 20:49 
Offline
Kecka

Registrován: 07.06.2013, 14:21
Příspěvky: 32
Has thanked: 1 time
Been thanked: 14 times
Co tahle verze?


Přílohy:
Poznámka: screen
dic.png
dic.png [ 10.36 KiB | Zobrazeno 10701 krát ]
Poznámka: d80 soubor.
dic.zip [15.79 KiB]
452 krát
Poznámka: tap soubor (pozor LOAD *)
dic.tap [18.41 KiB]
451 krát
Nahoru
 Profil  
 
PříspěvekNapsal: 19.06.2020, 21:10 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2089
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 327 times
Stále nemám odpoveď, kde presne sa to kusne a ako.

Normálne to má fungovať takto:
1. nahrajú sa dva bloky (toto obsluhuje BASIC, určite funguje)
2. po USR sa najprv zobrazí úvodná obrazovka s textom, a je pauza pár sekúnd (dekompresia hlavného bloku)
3. nahrá sa tretí blok z diskety
4. snap sa spustí

V ktorom alebo medzi ktorými bodmi to zamrzne alebo čo to spraví? V emulátore som natrafil na problém: pokiaľ nebola akože vložená disketa (čiže v emulátore nebola ani mechanika, bol iba MDOS), tak naskočila úvodná obrazovka poškodená čiarami (ledva bolo poznať miestami text), a krachlo to.

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.06.2020, 23:20 
Offline
Kecálek
Uživatelský avatar

Registrován: 30.05.2020, 01:05
Příspěvky: 190
Bydliště: Olomouc
Has thanked: 559 times
Been thanked: 102 times
sweet128 píše:
Co tahle verze?

Ano, tenhle jede. Testoval jsem to pod MDOS3 s HDFsouborem ve Fuse . Proč se tam poukuje do systémové proměnné SBRT?

Vzal jsem dictatora z https://cs.speccy.cz/?scn=4 a dodělal jen * a ten jede také. Přitom LOAD*"dictator" CODE přehraje basic, ale funguje to korektně, byla tam na hvězdičku nachystaná mezera.

_________________
ZX Spectrum+ 48 kB s D40 nebo divIDE 57c, MB03+, popřípadě Fuse a teď nově LNX


Naposledy upravil Hroudik dne 19.06.2020, 23:45, celkově upraveno 1

Nahoru
 Profil  
 
PříspěvekNapsal: 19.06.2020, 23:33 
Offline
Kecálek
Uživatelský avatar

Registrován: 30.05.2020, 01:05
Příspěvky: 190
Bydliště: Olomouc
Has thanked: 559 times
Been thanked: 102 times
Našel jsem ten program UNSNAP u Velesofta který to asi vyrábí ze snapů.


Přílohy:
unsnap-d80.tap [4.09 KiB]
448 krát

_________________
ZX Spectrum+ 48 kB s D40 nebo divIDE 57c, MB03+, popřípadě Fuse a teď nově LNX
Nahoru
 Profil  
 
PříspěvekNapsal: 20.06.2020, 09:53 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 240
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Hroudik píše:
Zdravím všechny,
narazil jsem na problém, kdy FUXOFTem počeštěný program Diktator (je jich více) upravený pro Didaktik D40/D80 (z archivu Velesofta) od Unsnap -Dolphin nejde spustit (nahrát) pod MDOS3 emulací na divIDE.


Nechceš udělat krátké video jak to nechodí?

edit: Tak nebude třeba. Na tuty to bortí CALL 103 kde program očekává jp (hl). Jenže MDOS3 to tam nemá. Ani nemůže, je to dáno koncepcí divide a jeho 1 byte opožděním při průchodu adresou #66 (102). MDOS3 tam má jp 11746 a řeší si tím defakto stisk NMI z normální ROMky. Jenže my jsme v diskové ROM (u MDOS3 v divide ROM) a tam se nepočítá s tím že někdo/něco adresu 103 zavolá. MDOS3 na 11746 má jako první instrukci POP AF (jako setřesení PUSH AF, které je ale v normální ROM na adrese #66) a to je ten kámen úrazu - my žádné PUSH AF neudělali. Řešení na straně MDOSu 3 dle méno názoru neexistuje. Šel by ale určitě upravit ten kód Doplhina.

edit2: CALL 103 (v tom diktatorovi je na drese 24019) je možné zaměnit za CALL 736, kde všechny MDOSy mají JP (HL). Opravdu nerozumím proč to Dolphin použil, protože zrovna ta adresa 103 je v MDOSu 2 zcela mrtvý kód a v MDOSu 1 je to pouze důsledek nadřazeného prefixu JP (IX). I kdyby si ve svém kódu udělal v RAM "AAA JP (hl)" a volal to call AAA (namísto call 103) tak by mu to mělo fungovat. Ověřím si to ale vše raději i na reálné ZX mašině s divIDE a MDOSem 3...


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 19 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 3 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz