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 spustilREGRESSION.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 takRTC.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 demoREGRESSION.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.
Hned jak budu mít Speccy2010 v ruce (což bude v pondělí) tak vyzkouším ;)
OdpovedaťOdstrániťMám ho teď v práci, ale vezmu si ho domů, doma najde uplatnění ;)
Ako ťa poznám, bude ti to padať. 🤣
OdstrániťAle teraz vážne, budem vďačný za feedback.
V pondělí si ho přivezu domu a pak se ozvu :)
OdstrániťBudu se snažit mít jen pozitivní zprávy ;)
Já teda v pondělí do práce nejdu. Je státní svátek.
OdstrániťThanks again, Martin!
OdpovedaťOdstrániťThank Pjotr, you are probably only fan of this project from former soviet area so I appreciate your positive comments much more. ;)
Odstrániť