Canvas Express
3. 10. 2026

Po spoustě měsíců práce mám konečně pocit, že do sebe všechno zapadlo. NXPaint řeší grafiku, MXTracker hudbu a NextForge přidává poslední velký kus: místo, kde můžu přímo na ZX Spectrum Next psát a překládat vlastní programy. Grafika, hudba a kód. Moje malá svatá trojice je tím pádem kompletní. A ano, soubory si pak samozřejmě můžu přesunout tam, kam potřebuji, pomocí CalmCommanderu. Když už si člověk vyrábí vlastní ekosystém, byla by škoda nechávat některé části zahálet.

NextForge / ZX Spectrum Next

NextForge: moje svatá trojice je kompletní

Po spoustě měsíců práce mám konečně pocit, že do sebe všechno zapadlo. NXPaint řeší grafiku, MXTracker hudbu a NextForge přidává poslední velký kus: místo, kde můžu přímo na ZX Spectrum Next psát a překládat vlastní programy. Grafika, hudba a kód. Moje malá svatá trojice je tím pádem kompletní.

A ano, soubory si pak samozřejmě můžu přesunout tam, kam potřebuji, pomocí CalmCommanderu. Když už si člověk vyrábí vlastní ekosystém, byla by škoda nechávat některé části zahálet.

Jestli mi teď někdo bude tvrdit, že ZX Spectrum Next je dobrý jen jako spouštěč TAPek s Manic Minerem, tak ho nakopu do zádele. Next je pro mne stroj, který si můžu vzít na akci, skládat na něm hudbu, kreslit grafiku a teď vezmu zdrojové kódy pro sjasmplus a můžu na nich pracovat i bez PC. Ano, neumí to LUA skripty, ale ty já používám opravdu výjmečně, takže to je něco, co velmi rád oželím...

Co je NextForge

NextForge je nativní editor a assembler pro ZX Spectrum Next, inspirovaný klasickým Prometheem. Zdrojový kód píšete přímo na Nextu, ukládáte ho na SD kartu a ve stejném prostředí jej také přeložíte.

Výsledkem může být jednoduchá binárka .bin nebo spustitelný soubor .nex pro NextZXOS. Ke spuštění potřebujete ZX Spectrum Next s NextZXOS a SD kartou, případně odpovídající prostředí v CSpectu.

Na kartu stačí zkopírovat NEXTFORGE.NEX, spustit ho z prohlížeče NextZXOS a můžete otevřít existující zdroj nebo rovnou začít psát.

Stažení programu: NextForge na itch.io.

Základem je celoobrazovkový 80sloupcový editor se zvýrazněním syntaxe. Stavová lišta ukazuje soubor, pozici kurzoru, délku řádku, počet řádků i volnou paměť. Otevřených může být až osm souborů najednou.

  • Běžné úpravy textu: vkládání, mazání, odsazování, formátování assemblerového řádku a rychlý pohyb po textu.
  • Blokové operace: označování řádků, kopírování, vyjmutí a vložení, klidně i mezi otevřenými soubory.
  • Hledání: procházení výskytů textu v otevřených souborech.
  • Doplňování návěští: po několika znacích vyvoláte seznam odpovídajících symbolů.
  • Skok na definici: z použití symbolu rovnou na jeho definici, případně do jiného otevřeného souboru.
  • Práce se SD kartou: načtení, uložení, Save As a výběr cílového adresáře.
  • Klávesnice i myš: menu a dialogy zvládnou obojí, kolečko posouvá text i přehledy.
  • Vyhledávatelná nápověda: zadáte třeba label nebo MMU a nemusíte lovit zkratku z paměti.

Když například píšu call lores_init, stačí dát kurzor na lores_init a pomocí SYMBOL SHIFT + ENTER skočit na definici. Pokud mám rozepsané jen lores, pomocí CAPS SHIFT + ENTER vyvolám seznam odpovídajících návěští.

Zní to jako maličkost, dokud člověk neskočí po padesáté ručně o několik set řádků. Pak už to maličkost není.

Assembler pro Z80 i Next

Assembler pracuje ve dvou průchodech, takže umí i odkazy na návěští definovaná později. Podporuje běžné instrukce Z80, práci s IX/IY a jejich horními i dolními bajty a také oficiální instrukční formy Z80N, včetně například NEXTREG, MUL D,E nebo rozšířených blokových přenosů.

Pro organizaci zdroje jsou k dispozici globální i lokální návěští, konstanty EQU, aritmetické výrazy, HIGH a LOW. Čísla lze zapisovat desítkově, hexadecimálně i binárně.

Data vytvoříte přes DB, DW a DS, adresu nastavíte pomocí ORG, zarovnání přes ALIGN a podmínky si můžete hlídat direktivou ASSERT.

Větší projekt rozdělíte pomocí INCLUDE, binární data vložíte přes INCBIN. Nechybí jednoduchá makra s jedním parametrem ani opakování pomocí REPT / ENDR. Pro Next je tu také MMU a export bankované paměti do NEX.

První příklad: deset bajtů vlastního kódu

Začít můžete opravdu jednoduše. Tohle je krátký zdroj, který nastaví počáteční adresu, naplní tři registry a skončí návratem z rutiny. Nic převratného nedělá, ale přesně na něm je dobře vidět cesta od zdroje k binárce.

        org $8000

Start:
        ld hl,0
        ld de,16384
        ld bc,6144
        ret

End:
        savebin "hello.bin",$8000,End-$8000
  1. Zdroj uložíte jako hello.asm.
  2. Zvolíte Assemble → Assemble a vyberete hlavní soubor.
  3. Po úspěšném překladu vznikne vedle zdroje hello.bin o velikosti 10 bajtů.

Délku není potřeba počítat ručně: výraz End-$8000 ji určí podle adresy koncového návěští. Ano, počítač může občas dělat i něco za nás.

Makra a opakování bez zbytečného přepisování

Opakující se sekvenci lze pojmenovat makrem. Třeba takto:

        macro ESXCALL code
        rst $08
        db code
        ret
        endm

ReadFile:
        ESXCALL $9D

Makro musí být definované před použitím. Současná verze podporuje osm maker, každé maximálně s jedním parametrem a šesti řádky těla.

Pro opakování při překladu slouží REPT:

        org $8000

        REPT 4
        db low $
        ENDR

Výsledkem jsou bajty 0, 1, 2, 3, protože dolní bajt aktuální adresy se při každém opakování vyhodnotí znovu. Podporované jsou až čtyři vnořené úrovně.

Větší projekt: zdroje, grafika i další data

Hlavní soubor může spojovat několik modulů a přidat binární assety:

        device zxspectrum128
        org $2000
        jp Start

        include "src/constants.asm"
        include "src/main.asm"
        incbin "assets/font.bin"

End:
        assert End-$2000 <= $2000
        savebin "build/demo.bin",$2000,End-$2000

INCLUDE vloží další zdrojový soubor a INCBIN hotová binární data. ASSERT zase zkontroluje, že výstup nepřeroste určenou velikost.

Hlavní zdroj se překládá z editoru, ale soubory načítané přes INCLUDE a INCBIN se berou ze SD karty. Pokud je upravíte, je potřeba je před překladem uložit. Ano, i vlastní vývojové prostředí vás může naučit ukládat práci.

Výstup NEX a bankovaná paměť

Pokud má být výsledkem soubor spustitelný přímo z NextZXOS, použije se SAVENEX.

        device zxspectrumnext
        org $8000

Start:
        nextreg 7,3
        mul d,e
        ret

        savenex open "demo.nex",Start,$BFF0
        savenex core 3,0,0
        savenex cfg 7,0,0,1
        savenex auto
        savenex close

OPEN určí jméno, vstupní adresu a zásobník, CORE minimální verzi jádra, CFG parametry načtení, AUTO vybere nenulové banky a CLOSE nastavení uzavře.

Pro větší projekty lze pomocí MMU při překladu mapovat 8KB stránky do jednotlivých slotů Nextu. Například MMU 4,24 namapuje stránku 24 do slotu 4, tedy na adresy $8000–$9FFF.

NEX pak zachová obsah jednotlivých bank, takže projekt může být větší než 64 KB. Samotné přepínání stránek za běhu už samozřejmě řeší program přes NEXTREG.

Nejde jen o laboratorní ukázky. Ověřoval jsem assembler i na reálnějších projektech a výsledky porovnávám bajt po bajtu s výstupem SjASMPlus. To je výrazně méně romantické než „vypadá to stejně“, ale mnohem užitečnější.

Klávesové zkratky a ovládání

CS znamená CAPS SHIFT, SS SYMBOL SHIFT. U zápisu EXT → klávesa nejprve stisknete CS + SS, obě pustíte a pak stisknete uvedenou klávesu.

Kombinace CS + SS + číslo se drží současně. Následující přehled zahrnuje všechny zkratky z manuálu i ovládání jednotlivých dialogů.

Pohyb a úpravy v editoru

AkceZkratka
Pohyb vlevo / dolů / nahoru / vpravoCS + 5 / 6 / 7 / 8
Stránka nahoru / dolůCS + SS + 7 / 6 (současně)
Začátek / konec řádkuSS + Q / E
Nový řádekENTER
Smazat znak před kurzorem / pod kurzoremCS + 0 / 9
Tabulátor / odsazení assemblerového řádkuCS + 3
Zformátovat aktuální assemblerový řádekSS + W
Označit začátek / potvrdit konec řádkového blokuCS + 4; mezi stisky rozšíříte výběr pohybem kurzoru
Vybrat všechny řádkySS + A
Kopírovat / vyjmout / vložitEXT → C / X / V

Schránku můžete vložit i do jiného otevřeného souboru. Vyjmutí bez označeného bloku vyjme aktuální řádek.

Menu, soubory a ukládání

AkceZkratka
Otevřít horní menuEXT → 0
Předchozí / další nabídka v menuCS + 5 / 8
Předchozí / další položka menu nebo otevřený soubor v dialoguCS + 7 / 6
Spustit položku menu, potvrdit soubor nebo jméno pro Save AsENTER
Otevřít soubor (File → Load...)EXT → O
Uložit soubor (File → Save)EXT → S
Uložit pod jiným názvem (File → Save As...)EXT → E
Zavřít aktivní soubor (File → Close)EXT → W
Seznam otevřených souborů (File → Files...)CS + SS + 1 (současně)
V prohlížeči potvrdit cílový adresář pro uloženíSPACE
Při zavírání souboru uložit změnyENTER nebo S v potvrzovacím dialogu
Při zavírání souboru zahodit neuložené změnyD v potvrzovacím dialogu
Zavřít menu nebo zrušit dialog či výběrCS + SPACE (BREAK)

Hledání, doplňování návěští a skok na definici

AkceZkratka
Otevřít hledání v otevřených souborech (Edit → Find...)SS + F
Najít první / další výskyt v dialogu hledáníENTER
Smazat poslední znak hledaného textuCS + 0
Otevřít nabídku doplnění po napsání alespoň čtyř znaků návěštíCS + ENTER
Předchozí / další shoda v nabídce doplněníCS + 7 / 6
Stránka shod nahoru / dolůCS + SS + 7 / 6 (současně)
Doplnit vybrané návěští a zavřít nabídkuENTER
Přejít na definici názvu pod kurzoremSS + ENTER
Zavřít hledání nebo nabídku doplnění bez vloženíCS + SPACE (BREAK)

Doplňování a skok na definici pracují nad otevřenými soubory. Pokud je potřebný include jen na SD kartě, nejprve ho otevřete v editoru.

Integrovaná nápověda

AkceKlávesa / zkratka
Otevřít / zavřít nápovědu (Help → Help...)EXT → H
Filtrovat popisy a zkratkyPsaní textu; hledání nerozlišuje velikost písmen
Smazat poslední znak filtruCS + 0
Posunout přehled nahoru / dolůCS + 7 / 6
Předchozí / další stránka shodCS + SS + 7 / 6 (současně)
První / poslední stránka shodSS + Q / E
Zavřít nápovědu a vrátit se do editoruCS + SPACE (BREAK), případně kliknutí na Close

Výsledkový report překladu

AkceKlávesa / zkratka
Posunout report nahoru / dolůCS + 7 / 6
Stránka reportu nahoru / dolůCS + SS + 7 / 6 (současně)
Zavřít výsledkový reportENTER, CS + SPACE (BREAK) nebo kliknutí

PC klávesnice a myš

Starší popis na itch.io uvádí také kurzorové klávesy / Kempston cursor, Page Up / Page Down, Tab, Backspace, Delete / Graph, Break / Esc a klávesu Files. Na PC záleží na mapování emulátoru: kurzorové klávesy slouží k pohybu, Page Up / Page Down k posunu po stránkách, Tab k odsazení, Backspace k mazání vlevo, Delete / Graph k mazání pod kurzorem a Break / Esc k rušení dialogu. Pro ovládání podle aktuálního manuálu použijte kombinace Spectra uvedené výše; seznam otevřených souborů vyvoláte současným CS + SS + 1.

Myší můžete vybírat nabídky a položky menu, potvrzovat soubory v dialogu a kolečkem posouvat editor, nápovědu i report překladu.

Co ještě čeká na dokončení

NextForge 1.0 je pořád vývojová verze. Debugger a přímé spuštění přeloženého programu z editoru zatím nejsou hotové; položka Assemble & Run v tuto chvíli provede jen překlad. Undo také zatím není implementované.

Syntaxe je inspirovaná SjASMPlus, ale kompatibilita není úplná. Obecný Lua interpreter součástí programu není a makra i export NEX mají své limity. Editor pracuje s řádky do 80 znaků, assembler při přímém načítání include souborů až se 160 znaky.

Podrobnosti jsou v českém manuálu, který je k dispozici také jako PDF.

Grafika, hudba a kód. Přímo na Nextu.

Právě tohle je pro mě na NextForge největší radost. V NXPaintu připravím grafiku, v MXTrackeru hudbu a v NextForge napíšu kód, který to celé spojí dohromady. CalmCommander pak zařídí přesuny souborů tam, kam patří. Po měsících práce se moje svatá trojice uzavřela. Teď už zbývá jen ta drobnost: něco v ní vytvořit.

screenshot_2026_10_4___11_40_52

Napsat komentář

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