25. októbra 2019

Speccy2010 v1.2.6

Viem, že teraz už nejakým novým firmwarom pre Speccy2010 nikoho nezaujmem, keď všetci žijú hype okolo MB03+Ultimate, ale keďže sa mi nepodarilo "zlomiť" kohokoľvek, kto by si ukrojil zo svojho voľného času na beta-testing, vydávam ho tu a teraz, považujúc za hodný verzie v1.2.6...

TL;DR: More info about Speccy2010 v1.2.6 at the end of the article »

Zoznam zmien:

  • Betadisk implementácia, ktorá sa riešila až na hw úroveň radiča a okolitých obvodov bola nahradená obyčajnou a veľmi jednoduchou emuláciou. Ušetrilo to tisíce logických blokov v FPGA, priblížilo jeho základnú frekvenciu 84MHz k normálu a v ARM firmwari ušetrilo ďalšie kilobajty v ROM aj RAM! 👍
    A viete čo? To sú dôvody, kvôli ktorým ma vôbec nezaujíma, že niekto nájde nejaké jedno staré ruské demo, čo bude mať problém pri streamovaní videa z diskety... nah! 😒
  • Ďalšie optimalizácie v FPGA so sebou vzali 3. kanál vo zvukovom mixeri, ktorý bol pôvodne určený pre SID alebo SAA a jeho ticho sa stále pekne primiešavalo do výstupu. Pá pá...
  • Z tej "hromady" voľných logických blokov v FPGA som sa šiel zblázniť a tak bol DivMMC vylepšený o AllRAM režim kompatibilný s MB-02+ na porte #17(23). Tým, že sú na doske obe tieto zariadenia to bolo jednoduché. V princípe ide o to, že ak na tomto porte nastavíte 6.bit, tak sa podľa bitov 0 až 4 (5.bit volí možnosť zápisu) nastaví na mieste ROM požadovaná 16k stránka (pričom sa stránkovaných 512k kryje s tými, ktoré stránkuje DivMMC). Keď následne zrušíte nastavenie 6.bitu (napr. 'OUT 23,0'), prepína sa späť do režimu DivMMC v rovnakom stave, v akom ste ho naposledy nechali, heč!
    Zo samej radosti z dobre vykonanej práce som si rovno z NMI menu ESXDOSu spustil REGRESSION.tap a demo fungovalo na prvú dobrú... 😊
  • Zároveň som v DivMMC opravil aj výber zariadenia. Doteraz pri spúšťaní ESXDOSu detegoval 2 zariadenia, ale obe boli rovnaká SD karta Speccy2010. Teraz sa hlási a pracuje iba to prvé, vlastne "nulté" zariadenie.
  • Hromada voľného miesta v ARM firmwari, čo zostala po Betadisku a pár optimalizáciach zas viedla k zväčšeniu bufferov na prácu s cestou k súborom, imagom diskov a snapshotov. Na druhej strane som obmedzil maximálnu dĺžku cesty k ROM súborom na 32 bajtov (lebo 'roms/filename.ext' je stále iba polovica, sorryjako...)
  • Našiel som asi najvážnejšiu príčinu pádov a zvláštneho chovania firmwaru. V konfigurácii knižnice FatFs bolo Sydom nastavené, že pri práci s názvom súboru má používať iba s jeden staticky alokovaný buffer a nevšimol si asi poznámku "Always NOT thread-safe". Voilá, malý zázrak stability spôsobila zmena na dynamický buffer na zásobníku...
  • ub880d našiel chybu v RTC.SYS pri samotnej inicializácii RTC modulu a jej oprava viedla k zisteniu, že chyba bola aj v Speccy2010 (v prednastavenej hodnote kontrolného portu). Zároveň sme dostali od Miguela a Velesofta požehnanie a prvýkrát sa tak RTC.SYS objavuje v podobe zdrojáku na internete. Preto odporúčam si z releasu stiahnuť aj balík s obsahom predpripravenej SD karty a "updatnúť" (nielen) ESXDOS.
  • z00m pred časom vytvoril úpravu BS-ROM 140 aby pri resete vypínala všetky zvukové obvody a tak som túto príležitosť využil k tomu, že aj môj projektový adresár teraz obsahuje BS-ROM + BS-DOS s úpravami a BIOSom pre Speccy2010 v podobe kompletných zdrojákov. Výsledné "súromie" je obsahom balíčka, updatnite si prosím.

Tak a to tu máte... minule som sa "vyhrážal", že si od tohto projektu dám dlhšiu pauzu, ale cítim zodpovednosť za vaše pocuchané nervy a keď na Bytefeste vidím frustrovaných užívateľov, musím konať. Blížime sa ale do finále a možno už nasledujúca verzia bude skutočne definitívna. Teším sa!

PS: Ešte sa vrátim k tomu AllRAM režimu v DivMMC: Plán je taký, že sa s Pavlom Vymetálkom chystáme touto implementáciou vylepšiť aj jeho verziu DivMMC a potom to rozšíriť do sveta... 😜

[ Speccy2010 v1.2.6 ]

Changelog:

  • real Betadisk implementation replaced by simple emulation.
    It free-up lot of resources in FPGA and ARM firmware memory.
  • removed unused 3rd channel of sound mixer in FPGA.
  • DivMMC improved by implementing AllRAM mode compatible with MB-02+ controlled by port #17(23). You can test it by running my demo REGRESSION.tap directly from NMI menu of ESXDOS or even easier from File Manager.
  • fixed device selector port #E7 of DivMMC.
  • filepath buffers were expanded in ARM firmware to improve stability.
  • found probably most important stability issue in FatFs library, where single static buffer was allocated which wasn't thread-safe. Changed to dynamic buffer on stack space.
  • Released RTC.SYS and fixed predefined value of control port in RTC emulation by ub880d.
  • Updated BS-ROM with AY-silencer by z00m.

More info, sources and issue tracker on the project's github pages »
If you like this project, please consider to star and watch it on the github.

6 komentárov:

  1. Hned jak budu mít Speccy2010 v ruce (což bude v pondělí) tak vyzkouším ;)

    Mám ho teď v práci, ale vezmu si ho domů, doma najde uplatnění ;)

    OdpovedaťOdstrániť
    Odpovede
    1. Ako ťa poznám, bude ti to padať. 🤣
      Ale teraz vážne, budem vďačný za feedback.

      Odstrániť
    2. V pondělí si ho přivezu domu a pak se ozvu :)

      Budu se snažit mít jen pozitivní zprávy ;)

      Odstrániť
    3. Já teda v pondělí do práce nejdu. Je státní svátek.

      Odstrániť
  2. Odpovede
    1. Thank Pjotr, you are probably only fan of this project from former soviet area so I appreciate your positive comments much more. ;)

      Odstrániť