9. decembra 2019

...od Bórika pod stromček 🎄

Ho, ho, hoo! Ku koncu roka som sa rozhodol dokončiť a vydať všetko, čo som mal rozpracované alebo na zozname úloh, aby som sa mohol naplno venovať novému, veľkému, prísne tajnému projektu. V tomto súhrnnom článku sa dozviete, ktoré moje projekty dostanú takto pred Vianocami nové verzie a čo prinesú. Pripútajte sa, začíname...

📦 Speccy2010 v1.2.7

  • Vo File Manageri funguje v adresári rýchle vyhľadávanie podľa začiatočného písmena. Rozumiem, že užívateľom, čo majú na SD karte z00move DISO to príde zbytočné, ale vyhľadávanie v Paverovom archíve bolo bez tejto funkcie veľmi boľavé a myslím si, že to komfortu len pomôže.
  • prehliadač obsahu pásky
    Implementovaný bol prehliadač obsahu pásky - ak si vo File Manageri zobrazíte pomocou F3 súbor TAP, zobrazí sa výpis všetkých (aj bezhlavičkových) blokov uložených na tejto virtuálnej páske.
  • Pravdepodobne obrovskú mieru nestability firmwaru, bežiaceho s diskovým systémom DivMMC spôsoboval moment, keď v čase, kedy pomocou SPI príkazov ovláda SD kartu sám ESXDOS, ste sa snažili vojsť do File Managera, načítať/uložiť snapshot, či iba otvoriť konfiguračné menu. V tej chvíli, kľudne aj v strede prenosu sektoru, začal FatFs vo firmwari komunikovať na tých istých portoch pomocou SPI protokolu, mysliac si, že driver SD karty je v kľudovom stave. Zaujímavé je, že ja osobne, ako tvorca/implementátor som si to odjakživa uvedomoval a nikdy mi ani nenapadlo počas práce ESXDOSu nad SD kartou vstupovať do firmwarovej nastavby (to dokazuje, prečo v IT svete existuje testing a prečo to nemôže nikdy zastúpiť programátor 😉).
    Odteraz je zakázaný vstup do firmwarovej nadstavby v čase, keď SD kartu ovláda DivMMC (čítanie/zápis do tapky, browsovanie v NMI menu...). Proste vám to teraz samotný firmware nedovolí, keby vám počas aktivity diskového interfejsu napadla zmena konfigurácie alebo využitie služieb File Managera - skrátka preto, aby ste si takto "dobrovoľne" neohrozili integritu súborového systému či nadobro zničili obsah SD karty...

📦 GPMD85Emulator v0.11.1912

Je zaujímavé, že pred dvoma rokmi, keď som vydal verziu 0.10.1801, som jej tu na blogu vôbec nerobil promo a pritom išlo o najväčší milník tohoto projektu. Preto vám v tomto článku vymenujem všetky zmeny, ktoré priniesla aj táto predošlá verzia, a zelenou farbou označím to, čo prináša tá aktuálna:

  • SDL knižnicu som updatoval na verziovú radu 2.x a rendering obrazu bol masívne zjednodušený (zoom už zabezpečuje hardware). Kód sa tiež zbavil rôznych špinavých OpenGL hackov, pretože SDL2 si už nájde najvhodnejšie zobrazovátko a natívne podporuje OpenGL či inú akcelerovanú variantu. V prípade problémov so zobrazovátkom sa ale dá konfiguráciou (./configure --with-soft-render) alebo pri spúšťaní z príkazového riadka (-soft) predvoliť používanie softwarového renderera.
  • Užívateľské prostredie sa po novom zobrazuje ako polo-priesvitná vrstva nad samotným obrazom a "scanlinery" (simulácia prekladaného riadkovania) je tiež iba prekryvná opakujúca-sa pidi-textúra cez obraz. To všetko prispieva k nízkej záťaži samotného procesora.
  • Zmena knižnice viedla k samovyriešeniu rôznych problémov s testom kláves, či pádmi pri prepínaní zobrazovacích režimov apod. Príjemný bonus je, že to umožnilo aplikácii zapamätať si poslednú polohu okna v nastaveniach.
  • Vylepšení sa dočkala hlavne samotná emulácia procesora i8080 a okolitých obvodov. Procesor je brzdený videoprocesorom ako v PMDčku a rýchlosť emulácie je teda rovnaká ako na reálnej mašine. Emulácia pamätí, ich stavu a konfigurácie je teraz separátna pre každý model počítača, čo umožnilo emulovať pamäťové rozšírenie 256k a druhú VideoRAM pre modely 2A a 3.
  • Prístup do pamäte je prepojený s renderom obrazu a teda, obraz sa prekresľuje len keď sa vo VideoRAM niečo reálne zmení. Doplnená bola emulácia prerušenia od videoprocesora a všeobecne sa v emulácii časovačov opravilo zopár diskrepancií.
  • Implementoval som zvukový interface MIF 85! Kompletne prekopaný bol vlastne celý zvukový ovládač a procesor zvuku (mixovanie si zabezpečuje samo SDL2). Lupance a (ako to Čížo vtipne nazval) "geiger" vo zvuku by vás už nemali trápiť.
  • V menu bolo opravených zopár (nechtiac) nefunkčných položiek a upravených niekoľko zmätočných skratiek či hotkeys. Bugy sa našli aj pri ukladaní diskov, alebo pri výmene ROM modulov.
  • Nikdy nikým nepoužité RAOM moduly sa odporúčali do prepadliska dejín.
  • PMD 32 už k svojej činnosti nepotrebuje žiaden ROM súbor s obsahom ovládača radiča, lebo celý radič je emulovaný priamo v kóde. V balíku s emulátorom sa nachádza aj nový Romanov Booter2 - ROM modul pre PMD 85-2A na pohodlný triple-boot (BASIC / MONIT / PMD 32) a je preto predvoleným ROM modulom pre 2Ačko.
  • Emulátor doplnený o argumenty z príkazového riadka, kde je možné si pohodlne nakonfigurovať veľkosť, či farebný profil obrazu, hlasitosť, ďalej emulovaný model, pripojený ROM modul, PMD 32 či MIF 85, no hlavne si pohodlne načítať snapshot, vložiť virtuálnu pásku, či "implantovať" binárku na zvolené miesto do pamäte. Viac info...
argumenty z príkazového riadka

Takže, ak napríklad chcete od adresy #2000 načítať pamäťový blok (na ktorom práve pracujete) do PMD 85-2A, spustiť pri 2x veľkosti obrazu, so zapnutým ColorACE, použijete:
$ ./GPMD85Emu -m 2A -sc 3 -cp 3 -b /path/to/memblock.bin -ptr 0x2000
Pre načítanie snapshotu (model si nastaví sám), pri 3x veľkosti obrazu so štandardným farebným profilom (znížený jas a blikanie) a simuláciou LCD:
$ ./GPMD85Emu -sc 3 -cp 1 -hp 5 -s /path/to/hlipa.psn

Vzhľadom na množstvo zmien v konfiguráku odporúčam úplne vymazať ~/.gpmd85emu/default.conf, alebo si prípadne urobiť diff so zdrojom v res adresári.
Každopádne, prajem príjemné používanie naprieč *nixovými platformami! 😜

📦 z80-macroasm-vscode v0.5.0

Rozmohl se nám tady takový nešvar a za posledný rok som dostal mnoho dotazov na to, čo používam na programovanie a vývoj v assembleri Z80. Takže, aby som nemusel každému odpovedať zvlášť, napíšem to tu na plnú hubu. Na vývoj používam, z môjho pohľadu v súčasnosti najlepší a najrýchlejší univerzálny multiplatformový editor textu a zdrojákov Microsoft VSCode, ktorý je free a s tým ohavným MSVS má spoločný iba fragment názvu. Pre jemne paranoidných jedincov existuje dokonca aj vo verzii odpojenej od spoločnosti Microsoft - VSCodium.

A keďže je tento editor úžasne rozširovateľný pomocou jednoduchých aj komplexných zásuvných modulov, tak ešte pred rokom a pol som sa chytil jedného opusteného rozšírenia, ktoré prinášalo pomerne nedokonalé zvýrazňovanie syntaxe Z80. Celé som to prekopal a doplnil o všetko to, čo sa vznešene označuje ako IntelliSense a v zásade tvorí presne tú nad-vrstvu, čo odlišuje obyčajné otrocké písanie zdrojáku do texťáku, držanie si celej perspektívy kódu a názvov návestí v hlave, scrollovanie hore-dolu po texte... a na druhej strane tým, že to za vás bude riešiť komplexný nástroj, ktorý v sekunde prešmejdí celý zdroják vrátane includov, zohľadní lokálne, globálne aj modulové návestia, vytvorí si ich mapu, ponúka náhľad, čo sa na návestí nachádza a počas písania kódu sleduje, čo užívateľ píše a predvída, čo by sa mu práve asi tak hodilo. Skrátka, priniesť si do programovania v assembleri súčasné trendy vývoja vo vyšších jazykoch.

z80-macroasm-hoverz80-macroasm-completion-demo

Keďže je toho dosť veľa (a kým si to človek nevyskúša, tak len ťažko získa úplnú predstavu), tak si aspoň zhrňme, čo to vlastne dokáže:

  • Pozná a zvýrazňuje mnemoniku Z80, R800, GBZ80 (asi nie komplet) a po novom už aj Z80N (rozšírenie sady ZX-Spectra Next), mnemonické nuancie (iyu, iyh, hy, yh...) a kľúčové slová makro-assemblerov AS, SjASM, SjASMPlus, Pasmo, francúzkeho rasm a MSXkovo/Gameboyáckeho tniASM.
  • Dokumentuje všetky návestia, symboly a po novom aj makrá. Návestiam priradí príslušný komentár, ktorý ste si nechali nad nimi, alebo na konci riadka. Symbolom (equ, eval...) priradí ich hodnotu, makrám zas ich vstupné argumenty a to všetko potom vypíše v bublinách, keď podržíte kurzor všade, kde sú referencované, ale aj ponúka pri písaní kódu všade, kde sa to hodí.
  • Pri návestiach, či symboloch zohľadňuje, či sú v rámci modulov, alebo sú globálne, prípadne lokálne a podľa toho si vytvára ich celkovú mapu aj naprieč includovanými súbormi. V ponuke sú potom zoradené podľa toho, ktoré návestie je najbližšie k aktuálnemu riadku. Kedykoľvek sa dá pritom zobraziť celý zoznam návestí a symbolov daného súboru (Ctrl+Shift+O) alebo celého pracovného adresára (Ctrl+T) a vyhľadávať v ňom.
  • Počas písania rozumie tomu, čo píšete a zobrazuje ponuku inštrukcií a ich logických argumentov v podobe registrov, návestí či symbolov. Nenúti vás to používať, nerobí žiadne autokorekcie, nesnaží sa byť múdrejší ako vy - ani nie je - je to v zásade primitívna, no funkčná nápoveda.
  • Obsahuje vstavané parsery chybových výpisov menovaných makro-assemblerov a ak si v pracovnom adresári nakonfigurujete súbor .vscode/tasks.json na požadovaný makro-assembler a nastavíte jemu príslušný $errmatcher-?, tak vám pri zbuildovaní (Ctrl+Shift+B) pekne v zdrojáku zvýrazní riadok s chybou či varovaním a popisom v bubline. Vačšinou sa potom nemusíte hrabať v listingu.
  • Rozšírenie je samozrejme open-source, čo je jeho nespornou devízou, lebo je pod verejnou kontrolou a napríklad implementáciu makro-assemblerov rasm a tniASM si "ošéfovali" sami Francúzi a Španieli (ja som robil iba code-review a schválil merge). V súčasnosti ho aktívne používa viac ako tisíc ľudí po celom svete, medzi inými aj demomaker sq/skrju, ktorý mu dokonca nezištne robí promo medzi sovietskou mládežou.
  • Čo ma nesmierne teší je, že začínajú vznikať rozšírenia tohto rozšírenia. 😁
    Istý Néstor Sancho naprogramoval svoje rozšírenie Z80 Assembly meter, ktoré ako doplnok slúži na to, že do stavového riadku editora (alebo bubliny pri podržaní kurzora) vypisuje počet strojových cyklov, ľudovo povedané časovanie, a tiež celkovú veľkosť výsledného bytekódu označeného bloku zdrojového textu. Dá sa ešte konfigurovať na časovanie pre Speccy, MSX či CPC, je možné voliť spôsob výpisu opcodov a bytekódu... úžasné! 👌

📦 i8080-macroasm-vscode v0.1.0

Brácho Roman ma nakopol, či by takéto rozšírenie mohlo podporovať aj procesor Intel 8080. Vravím si, prečo nie? A keďže je to procesor omnoho jednoduchší, za jeden večer vznikla táto odnož, ktorá zvláda všetko, čo zvláda z80-macroasm, ale s i8080 mnemonikou. Druhý večer som odladil a vydal. 🤓


Tak... sme na konci. Všetkým vám v menej celého RM-TEAMu prajem príjemné sviatky a úspešný rok 2020! 🎄

Nuž a teraz, ak dovolíte, odpájam sa a začínam sa sústrediť na niečo, o čom vám nenapíšem nič, lebo sa to kutí v utajení, ale máte sa na čo tešiť! 🤫

Žiadne komentáre:

Zverejnenie komentára