Next Player (EsxDos) 0.73
6. 7. 2026
CalmCommander 1.2
8. 7. 2026

Od posledního článku jsem vestavěný assembler v NextForge posunul zase o kus blíž k tomu, aby nebyl jen syntaktická kontrola jednoho otevřeného souboru. Největší změna byla jednoduchá na napsání do seznamu věcí, které ještě nefungují, ale o něco méně jednoduchá na implementaci: include už opravdu otevírá další soubor a parser ho projde jako součást assembly. A k tomu se konečně začalo chovat rozumně i incbin.

NextForge: include, incbin a bezpečnější ukládání

Od posledního článku jsem vestavěný assembler v NextForge posunul zase o kus blíž k tomu, aby nebyl jen syntaktická kontrola jednoho otevřeného souboru. Největší změna byla jednoduchá na napsání do seznamu věcí, které ještě nefungují, ale o něco méně jednoduchá na implementaci: include už opravdu otevírá další soubor a parser ho projde jako součást assembly. A k tomu se konečně začalo chovat rozumně i incbin.

Pořád nejde o plnohodnotnou náhradu assembleru jako je Odin a pořád je to hlavně pass-1 analyzátor přímo v editoru. Ale rozdíl proti minule je podstatný: assembler už při kontrole zdrojáku nemusí dělat, že externí soubory neexistují. V předchozí verzi byl include rozpoznaný, ale bral se jako direktiva bez expanze. Teď assembler vezme název souboru, přepne se do adresáře aktuálního zdrojáku, otevře include soubor a postupně ho čte přes vlastní file handle.

include "constants.i.asm"
include "src/next/nextregs.asm"

Include soubor se nečte najednou do editorového bufferu. Místo toho se streamuje po blocích, skládá se z něj pracovní řádek a ten se posílá zpět do stejného parseru, který zpracovává hlavní soubor. Díky tomu se znovu používá existující logika pro labely, direktivy, mnemoniky, operandy i výpočet PC.

Incbin už počítá reálnou velikost

Další věc z minulého seznamu restů: incbin. Ten už není jen rozpoznaná direktiva. Assembler otevře binární soubor, zjistí jeho velikost přes filesystem a přičte ji do program counteru.

org $8000
incbin "data/sprite.bin"
start:
    jp start

Díky tomu už label za incbin neleží na špatné adrese jen proto, že pass-1 neuměl zjistit délku vložených dat.

Bezpečnější ukládání editorového souboru

Vedle assembleru se upravovalo i ukládání souborů z editoru. Save teď používá skutečné jméno aktuálního file slotu a před zápisem správně přepíná do adresáře daného souboru. Ano, byla tam chyba a EXT. MODE + S nefungoval :).

Změnila se i samotná práce se souborem: pokud soubor existuje, otevře se pro zápis, po úspěšném zápisu se zkrátí na skutečně uloženou délku a teprve potom se synchronizuje a zavře.

Co pořád není hotové (tento seznam se postupně zkracuje ;) )
  • Assembler pořád nemá obecný expression evaluator pro libovolné symboly a výrazy.
  • REPT/ENDR je stále jednoduchý praktický případ, ne plný makro systém.
  • Assembler zatím negeneruje finální binárku; hlavní role je pořád kontrola, průchod a výpočet PC.
Shrnutí

Možná Vám tento článek přijde zbytečný, ale já to beru jako programátorský deníček. Takže pokud Vás článek nebavil, omlouvám se, ale popravdě mne tyto články baví číst po nějaké době, kdy si říkám: jak jsi na takovou kravinu mohl přistoupit, vždyť už to nedávalo smysl tenkrát... ;)

Snímek obrazovky 2026-07-07 230538

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *