Prometheus je malá pokladnice špeků, co se tenkrát s programy dělaly. Pár příkladů.
Prometheus na začátku zkopíruje část kódu, která je potřeba jen jednou (nastavení + relokátor), do video RAM (díky nastavení atributů není vidět) a po použití je zahozena.
Program je relokovatelný. Neznamená to, že by byl napsán s pomocí jen relativních skoků. Používá tabulku míst v programu, které je potřeba upravit tak, aby odpovídala cílové adrese. Tato tabulka se generovala při kompilaci.
Prometheus masivně používá sebemodifikující se kód. Nejběžnější příklad je využití paměťového místa s výchozí hodnotou proměnné k uchování její změněné hodnoty.
variableX: ld b,001h ... ld (variableX+1),a
Nastavení se také zhusta dělá tak, že se prostě přepíše příslušný kus programu tak, aby dělal, co má - ušetří se místo a nemusí se testovat hodnoty proměnných a dělat skoky. Třeba nastavení toho, jestli se písmena mají zobrazovat jako malá, velká či nezměněná
caseModificationCodeOptions: and 0ffh ; normal or 020h ; lowercase and 0dfh ; uppercase
Podobně se řeší to, jestli se fonty mají vykreslovat tučně. Nebo když chcete tisknout nějaký řetězec, umístí se literál s jeho obsahem přímo za volání tiskové rutiny (pomocí CALL). Ta si ze zásobníku vyzvedne adresu, která odpovídá začátku řetězce, a po vytištění skočí za jeho konec (JP, nikoliv RET), kde program vesele pokračuje.
Jeho Monitor má úsporně řešené provázání kódů kláves (či klávesových zkratek) s akcemi, které se při jejich stisknutí mají provést. Používá k tomu tabulku, která obsahuje pro každou položku dva byty. Druhý je kód stisknuté klávesy, první je rozdíl adres dané operace a operace svázané s předcházející klávesou (přičemž adresa první takové operace je známá). To ušetří místo, protože místo dvojbytové adresy každé operace (je jich celkem 40) stačí jeden byte, a navíc to zkrátí relokační tabulku. Kód pak vypadá nějak takto:
defb monShowAddresses - monExecutionMode defb 0x63 ; c - show addresses defb monAddressPrintingMode - monShowAddresses defb 0x3f ; SS + c - addresses printing mode
Pro dekompilaci takového kódu to znamená, že adresám příslušných operací nejsou v kódu automaticky přiřazena vůbec žádná návěští, ta je teprve nutné dopočítat. Rovněž ona tabulka vypadá na první pohled jako posloupnost bytů bez zjevného smyslu. Aby toho nebylo málo, na příslušné operace se neskáče pomocí CALL nebo JP, ale tak, že se požadovaná adresa vloží na zásobník a pak se provede RET.