OldComp.cz

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


Právě je 25.04.2024, 16:23

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 24 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: MDOS3: bootloader, ZXS+2A, divIDE
PříspěvekNapsal: 30.05.2020, 12:57 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Potřeboval bych prokonzultovat několik problémů, na které jsem právě narazil. Snesl jsem z půdy milovanou +2A. Po úvodních problémech s RGB resp. SCARTem v TV, který asi po 20 letech fakt asi definitivně dosloužil, jsem počítač úspěšně nastartoval (na jiné/týden staré TV). To mě potěšilo. Počítač se zdá funguje bez problému. Pro divIDE jsem ale raději vyčistil konektor systémové sběrnice.

Nyní k problémům:
1. divIDE57.b s oddělaným JUMPERem E zkrátka nenastartuje +2A jak jsem očekával. Končím na černé obrazovce s bílým borderem. Zajímavé je, že normálně můžu příkazy psát. Akorát je nevidím, něco jako kdyby byla přistránkována druhá VRAM... Podařilo se mi přes LOAD "" nahrát jak bootloader MDOSu3, tak ESXDOSu 0.8.8. Když JUMPER E dám zpět, systém v ROMce divIDE naběhne OK. Bohužel jsetli se to takto chovalo dříve (když jsem před více jak 15 lety zkoušel DEMFIR) nedokážu říci, protože divIDE jsem si tenkrát již připravil (flashoval přes MFC) na Didaktiku Kompakt a na +2A ho používal jen se zasunutým jumperem E. Je to normální? Setkal se s tím někdo?

2. Druhý problém je MDOS3. Končím s detekcí masteru (HDD seagate 3.2 GB) a prázdným slave a dál už nic. Můžu čekat do aleluja, IDE led nebliká, nic se zkrátka neděje. Čekal bych, že se bude hledat bootdisk. ESXDOS najede bez problémů a bez problémů také funguje. Na tom SEAGATE mám 128 MB oddíl hned na začátku s FAT16 a jako první soubor je uložen image virtuálních disket v čele s bootdiskem. Pak mám normální soubory ESXDOSu. Nepotřebuje MDOS3 mít ten oddíl nějak speciálně nastaven (aktivní, spouštěcí, signaturu...)?

Jo a samozřejmě druhý jumper A mám v divIDE 57.b nasazen. GAL mám s fixem posaným "M".

Nyní mi tu už asi hodinu jede můj prográmek (IDE25) na testování zákmitů a vše bez problémů. Spustil jsem ho jako TAP s ESXDOSu.


Nahoru
 Profil  
 
PříspěvekNapsal: 30.05.2020, 13:31 
Offline
Pan Generální

Registrován: 07.05.2014, 01:21
Příspěvky: 2596
Bydliště: Praha
Has thanked: 511 times
Been thanked: 621 times
S tím jumperem to, pokud vím, normální je. Jeden povoluje zápis do flash a druhý je pro kompatibilitu s +2A, +2B a +3.

_________________
ZX80, ZX81, ZX Spectrum, ZX Spectrum +2, Didaktik M, PMD 85-1,2A,3, Olivetti Prodest PC 128, Acorn BBC Micro, PC-XT, Amiga 500


Nahoru
 Profil  
 
PříspěvekNapsal: 30.05.2020, 14:58 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3674
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
MTs píše:
1. divIDE57.b s oddělaným JUMPERem E zkrátka nenastartuje +2A jak jsem očekával. Končím na černé obrazovce s bílým borderem. Zajímavé je, že normálně můžu příkazy psát. Akorát je nevidím, něco jako kdyby byla přistránkována druhá VRAM...
Ano, toto vyzera na druhu VRAM. Zda sa,ze nejaky program zlblbol a na #7FFD poslal data ktore maju bit 3=1.
Pokial mozes zadavat prikazy, tak zadaj CLEAR 4e4:OUT 32765,16 . Ak sa nic nezmeni, a obrazovka stale bude cierna (a ty stale mozes zadavat prikazy), zadaj CLEAR 65535: DIM a$(4e4) a potom este samotny CLEAR .
Je tiez mozne, ze nejaky program zblbol az tak, ze sa snazi z portu #7FFD citat. V tom pripade uz pomoze len fyzicky reset...


Nahoru
 Profil  
 
PříspěvekNapsal: 30.05.2020, 16:21 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Tu černou obrazovku právě mám po každém tvrdém resetu anebo zapnutí mašiny s připojeným divide a vytahnutým jumperem E. Nejde se jí zbavit. Dokonce ne vždy se mi podaří psát příkazy (je to tuhé), vyjde to až na nějaký Xtý reset.

Pro funkční provoz musím buď vytáhnout celé divide anebo musím mít v divide systém a tedy jumper mít nasazený.

Vram 2 to není. Zkoušel jsem poslepu outovat.


Nahoru
 Profil  
 
PříspěvekNapsal: 30.05.2020, 17:08 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Pokrok!
Na MDOS3 platí přdržení mezerníku. Korektně se mašina resetne a jakmile dám RANDOMIZE USR 0 tak už MDOS3 naběhne a hledá bootdisk. A najde ho po chvíli.

Je to divné, ESXDOS to nedělá. MDOS3 buďto vytuhne anebo se resetuje stále dokola v nekonečné smyčce. Až ten mezerník pomůže. Do kódu jsem koukal jen letmo, ale ta inicializace mi přijde nějaká divná. No hlavně, že jsem se přes to dostal.


Nahoru
 Profil  
 
PříspěvekNapsal: 30.05.2020, 19:13 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Busy píše:
To ale este neznamena, ze to Vram 2 nemoze byt. Evidentne to zblbo tak, ze to zamklo port #7FFD v stave ked bola aktivna Vram 2. A kedze je port zamknuty, ziadny OUT na neho uz nema ucinok.

Skus toto:
Bez pripojeneho divide, v 128 basicu alebo calculatore napis USR 0. Tym sa dostanes do znameho USR 0 rezimu.
Potom zadaj CLEAR 4e4: OUT 32765,63
Paper scernie, prikazy stale mozes zadavat a funguju (skus BEEP 1,1), akurat mas natvrdo Vram 2 a uz s tym nic ziadnym OUTom nespravis. Jedine fyzicky reset dokaze zrusit Vram 2.


Už chápu. Ano toto je pravděpodobné. Proč to ale divide s vytaženým jumperem E udělá? Buď je to stářím té mé +2A anebo je chybka v divide...


Nahoru
 Profil  
 
PříspěvekNapsal: 01.06.2020, 07:10 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Tak asi jsem na to přišel, proč mám problémy jen s naběhnutím bootloaderu MDOSu3. Sweet tam nemá nikde instrukci IM 1 a přitom přerušení povoluje. To by vysvětlovalo proč mám problém s naběhnutím systému jen po zapnutí mašiny do elektřiny (kdy očividně není im 1 ale pravděpodobně im 0, které způsobí ten bordel v běhu kódu) ale když napíšu RANDOMIZE USR 0 z basicu tak vše naběhne na jedničku. Dneska večer patchnu bootloader a testnu to. Věřím, že to zabere. Divím se však, že by na tuto chybu nenarazil nikdo přede mnou...


Nahoru
 Profil  
 
PříspěvekNapsal: 01.06.2020, 07:23 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 21:39
Příspěvky: 1982
Bydliště: Praha
Has thanked: 85 times
Been thanked: 255 times
Co mas za verzi MDOS3? Ja se v tom na to webu nedokazu moc vyznat.


Nahoru
 Profil  
 
PříspěvekNapsal: 01.06.2020, 07:38 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Doda píše:
Co mas za verzi MDOS3? Ja se v tom na to webu nedokazu moc vyznat.

Nyní tam je nová z 16.5. Já zkoušel obě: tu co tam je teď i tu co tam byla před tím šestnáctým. Obě mi dělají tentýž problém, ale nová verze dělá větší "náhodný" bordel v obrazovce, takže už nevidím ani ten text. Koukal jsem však do zdrojáku obou verzí a to přerušení nemění žádná z nich... Napsal jsem o tom i Sweetovi.

Edit:
Přikládám info co je třeba dostat do paměti divIDE. Buď binárku přes nějaký flashovací program anebo hotovou TAPku (ta už je včetně kódu co umí flashovat)
Příloha:
bootloader2.png
bootloader2.png [ 9.45 KiB | Zobrazeno 9107 krát ]


Nahoru
 Profil  
 
PříspěvekNapsal: 01.06.2020, 22:07 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Tak mám softwarově opraveno. :S Na čtvrtý pokus jsem to dal. Opravdu za to může přerušení. Zítra sem hodím detaily jak jsem si bootloader opravil. Fungují mi dvě opravy ze čtyř, které jsem PATCHnul což považuju za perfektní úspěch. Možná, že to je výsada jen +2A a možná, že jen té mojí :) Každopádně Sweet to nemá dobře ošetřeno - v bootloaderu dává EI a před tím vůbec mód přerušení nenastavuje ani netestuje. :hammer: Proto to může způsobit takové problémy na čerstvě zapnuté mašině. Tím přidržením mezerníku člověk dokáže bootloader odpálit ještě se zakázaným přerušením (DI) a vrátit řízení NROM což má za následek korektní RESET (přerušení se nastaví se vším všudy - IM 1, reg I + IY) a pak už bootloader po RANDOMIZE USR 0 funguje perfektně. Já si to opravil myslím celkem fikaně a ta čtvrtá verze mi asi vyhovuje nejlépe. Ale dneska už jdu spát, dám to sem zítra...


Nahoru
 Profil  
 
PříspěvekNapsal: 02.06.2020, 08:39 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 21:39
Příspěvky: 1982
Bydliště: Praha
Has thanked: 85 times
Been thanked: 255 times
Nejsem na to moc expert, ale neni IM0 zavisle na stavu sbernice? Vlastne dost nahodnem, takze se to muze u nahodnych stroju lisit, i kdyz treba jen vyjimecne.


Nahoru
 Profil  
 
PříspěvekNapsal: 02.06.2020, 09:47 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
Takže posílám slíbené dva patche.

PATCH C zajistí nastavení IM1, registru I a IY. Dále je tam asi dvousekundová pauza testující stisk mezerníku. Pokud je stištěn, pak se bootloader vzdává řízení programu a skáče se do NROM kde se reset dokončí. Sweet tam test má také, ale není tam žádná pauza na stisk. A já jsem potřeboval i vědět co uvidím na obrazovce během těch dvou sekund. Vidím tam bordel dat v obrazovce (prostě náhodné bytes po celé RAM, což považuji po zapnutí mašiny za zcela normální jev - proto se taky paměť při resetu v NROM vynulovává. Poslední má úprava je stisk NMI. Vyvolá opět reset a inicializaci bootloaderu (ono JP 1 na adrese 106). Sweet NMI ignoruje a nedělá nic, což si myslím je chyba, protože stisk NMI je si myslím lepší než vytahovat mašinu ze zásuvky...

Kód:
;MDOS3 bootloader PATCH C
;pozor první číslo je DEKADICKÁ adresa paměti! :)

    0 f3        di     
    1 f3        di     
    2 ed56      im      1
    4 c36b05    jp      1387
    7 00        nop     
                ...
  106 c30100    jp      1
  109 00        nop     
  110 00        nop     
  111 3e3f      ld      a,63
  113 ed47      ld      i,a
  115 fd213a5c  ld      iy,23610
  119 010000    ld      bc,0
  122 e3        ex      (sp),hl
  123 e3        ex      (sp),hl
  124 3e7f      ld      a,127
  126 dbfe      in      a,(254)
  128 1f        rra     
  129 d29d05    jp      nc,1437
  132 0b        dec     bc
  133 79        ld      a,c
  134 b0        or      b
  135 c27a00    jp      nz,122
  138 21a861    ld      hl,25000
  141 e5        push    hl
  142 fb        ei     
  143 c3f91f    jp      8185
                ...
 1444 00        nop     
 1445 00        nop     
 1446 00        nop     
 1447 00        nop     
 1448 00        nop     
 1449 c36f00    jp      111


Jelikož jsem si fungujícím pečem C ověřil, že chybu mi opravdu způsobuje povolené přerušení, tak jsem vytvořil lepší řešení celého problému: Přerušení už vůbec nenastavuju, místo toho testuju zda je nastaveno (resp. jestli se už NROM alespoň jednou dostala ke slovu). Pokud IY a I nemá jasně definované hodnoty, pak se nedokončil reset z NROM (čerstvě zapnutá mašina či spuštěný nějaký program/hra), pak bootloader automaticky ukončí činnost a vrátí řízení NROMce od adresy 1. To jest to samé co by se stalo oním přidržením mezerníku. ZXS se tak zcela korektně resetuje a jsme v 48K basicu. Nyní stačí počítač zresetovat (má-li tlačítko RESET) anebo lépe stisknout NMI divIDE. Dojde k naběhnutí bootloaderu bez jakéhokoliv nežádoucího bordelu v obrazovce. Celé to působí mnohem elegantněji a čistěji.

Kód:
;MDOS3 bootloader PATCH D
;pozor první číslo je DEKADICKÁ adresa paměti! :)

    0 f3        di     
    1 f3        di     
    2 00        nop     
    3 00        nop     
    4 c36b05    jp      1387
                ...
  106 c30100    jp      1
  109 00        nop     
  110 00        nop     
  111 fde5      push    iy
  113 e1        pop     hl
  114 113a5c    ld      de,23610
  117 b7        or      a
  118 ed52      sbc     hl,de
  120 7c        ld      a,h
  121 b5        or      l
  122 c29d05    jp      nz,1437
  125 ed57      ld      a,i
  127 fe3f      cp      63
  129 c29d05    jp      nz,1437
  132 00        nop     
  133 00        nop     
  134 00        nop     
  135 00        nop     
  136 00        nop     
  137 00        nop     
  138 21a861    ld      hl,25000
  141 e5        push    hl
  142 fb        ei     
  143 c3f91f    jp      8185
                ...
 1444 00        nop     
 1445 00        nop     
 1446 00        nop     
 1447 00        nop     
 1448 00        nop     
 1449 c36f00    jp      111


Patch D neberu jako zcela finální řešení. Opět jsem si jím ověřil pouze chtěnou funkčnost. Nyní bych to nechal na Sweetovi. Určitě bych si tam přidal zpět tu 2 sec pauzu (klidně i zvýšil na 4 sec) na stisk mezerníku i s jasným nápisem "hold SPACE to skip boot and return to ZX ROM..." a před ní vyčistil obrazovku s atributy.

A pak mám ještě dva dotazy:
1. Jde flešovat EPROMKu divIDE v MAPRAM módu? Podle mě ne, ale nezkoušel jsem to...
2. Provede se NMI i s přistránkovanou divide ROM? Podle mě ANO ale 100% test jsem neprovedl...


Nahoru
 Profil  
 
PříspěvekNapsal: 02.06.2020, 10:05 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 17:48
Příspěvky: 531
Bydliště: Košice
Has thanked: 430 times
Been thanked: 265 times
Doda píše:
Nejsem na to moc expert, ale neni IM0 zavisle na stavu sbernice? Vlastne dost nahodnem, takze se to muze u nahodnych stroju lisit, i kdyz treba jen vyjimecne.
Je to tak. IM 0 je mód prerušenia prevzatý od i8080, kedy pri príchode požiadavky na prerušenie Z80 pri potvrdení prerušenia očakáva na zbernici nejakú zmysluplnú inštrukciu, obvykle RST n. Predpokladám, že ak je na ZXS zbernica "zdravá", tak by tam malo byť #FF, čo je RST #38, teda ekvivalent módu IM 1. Ak sa teda na zbernici objaví nie čo iné, kľudne to môže zhavarovať.

_________________
https://pmd85.borik.net - PMD 85 Emulátor, PMD 85, PMD 32-SD
https://pp01.borik.net - PP 01 Emulátor, PP 01, SD-ROM Modul


Nahoru
 Profil  
 
PříspěvekNapsal: 02.06.2020, 10:31 
Offline
Kecálek

Registrován: 06.04.2020, 16:24
Příspěvky: 241
Bydliště: Opava
Has thanked: 34 times
Been thanked: 76 times
MTs píše:
A pak mám ještě dva dotazy:
1. Jde flešovat EPROMKu divIDE v MAPRAM módu? Podle mě ne, ale nezkoušel jsem to...
2. Provede se NMI i s přistránkovanou divide ROM? Podle mě ANO ale 100% test jsem neprovedl...


+ taková kacířská třetí otázečka: 3. Proč vlastně "bootloader" nepředěláme do ESXDOSu? Byla by to TAP aplikace, která by se spustila a následně si ty systémy tahala normálně přes LOAD "" (TAP vybraná v NMI ESXDOSu). Zcela by odpadla nutnost bootdisku. Akorát ten TXT soubor se systémy a jejich nastavením by bylo nejlepší mít přímo na FS PC (FAT16/32) což je komplikace (velká komplikace), ale i přímo v té TAPce s aplikací bootloaderu by to mohlo být. TAPKu můžu jednoduše rozdělat na d_0 (000 či BIN) a vybrat z toho ten konfigurační TXT. Pohodlně upravit, sestavit TAPku a uložit na disk. Jediné nepohodlí by tak bylo s výběrem systému (resp. TAPky) přes NMI menu, protože to by člověk musel udělat ručně...


Nahoru
 Profil  
 
PříspěvekNapsal: 02.06.2020, 10:50 
Offline
Kecka

Registrován: 07.06.2013, 14:21
Příspěvky: 32
Has thanked: 1 time
Been thanked: 14 times
Firmware selector od Velesofta:
https://velesoft.speccy.cz/zx/divide/sy ... ctor02.zip


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ů: 24 ]  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 20 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