Jak píšu ten svůj FORTH, tak jsem se dostal ke slovu DOES> které dělá něco jako magii a používá se pro definování slov (třeba CONSTANT), která definují jiná slova (třeba Pi), která pak používají kus těla slova, které je definovalo.
Používají přitom trik, kdy se mezi data vepíše instrukce CALL ve strojáku a jinde v datech se předstírá, že tato data jsou přeložený program.
Což funguje hezky, pokud tu instrukci CALL jde spustit. Jenže já to píšu pro chip ATmega2560, který má oddělenou datovou (kam jde psát) a programovou (kde jde spouštět) paměť a nedají se mezi sebou zaměnit, takže mi tohle prostě nemůže takhle fungovat.
Můžu to slovo sice vytvořit, ale pak už ho nemůžu použít.
Vytvořené slovo si můžu vypsat jak vypadá, přepsat nějak do zdrojáku, zkompilovat, znovu nahrát a pak jde sice použít, ale zase nejde nijak rozumně upravit a celý ten proces je příšrně neinteraktivní (co mám normálně ve zlomku sekundy zabere řadu minut a potřebuju k tomu velký výkonný počítač.)
A tak jsem myslel až vymyslel trik, jak si označit adresu jako speciální a nechat samotné srdce systému (NEXT) tuto adresu zpracovat tak, že se místo použití jako jednoduchý odkaz se použije jako odkaz na odkaz a ještě navíc do několika registrů uloží právě ty hodnoty, kvůli kterým se to dělá.
Takže nemožné se stalo triviálním a v běžném provozu, kdy se to zrovna nepoužívá, tak mě to stojí jen 1 instrukci navíc (k těm asi 40, které teď NEXT má) :)