V rokoch 1996 a 1997 som písal firmware pre fiškalny modul FP-994 firmy TriPos. Modul bol založený na 8051 s externou pameťou programu a dát. Pamäť dát je zálohovaná akumulátorom. Modul obsahuje vlastný zdroj času s obvodom RTC fy Epson. K nadriadenému systému bol modul pripojený sériovým rozhraním. Na pripojenie tlačiarne je k dispozícii ešte jedno sériové rozhranie alebo paralelné rozhranie. Volitelne mohol mať modul pripojený aj dvojriadkový LCD displej pre zobrazovanie blokovaných položiek zákazníkovi.
Vývoj pozostával z kompletného vývoja software. Išlo hlavne o:
Jedným z veľkých problémov bolo vytvorenie aritmetiky ktorá by bola dostatočne presná pre požadované obraty (miliardy s presnosťou na haliere). Ukázalo sa že v jazyku C je aritmetika na tento účel nevhodná a preto som vytvoril vlastnú celečíselnú aritmetiku ktorá počítala s dĺžkou 5 byte, čo je 40 bitov. Takáto aritmetika dovoľuje spracovávať čisla v rozsahu -549,755,813,888 až 549,755,813,887. Celočíselná aritmetika vyhovuje, nakoľko je použitý malý fígeľ. Všetky čísla sú vlastne vynasobené hodnotou 100 a pri vypisovaní sa dá desatinná čiarka vždy pred posledné dve číslice.
Násobenie a delenie som robil s číslami s dvojnásobnou presnosťou teda 80 bitov Pri delení som tiež použil obdobnú fintu. Delenec som vynásobil číslom 1000 a tak som dostal výsledný podiel na tri desatinné miesta ktoré som nasledne zaokrúhlil na dve.
Pri výpočtoch denných, mesačných a ročných obratov je dôležité, aby boli
konzistentné aj pri vypadku napájania. Pamäť dát je síce zálohovaná, ale
celý modul nie. Bolo treba počítať že program pri výpočte môže kedykoľvek skončiť.
Program preto používal rôzne príznaky a niekoľko oblastí pamäte tak, aby sa vždy
podarilo zrekonštruovať posledný platný stav obratov. V podstate to bol taký malý
transakčný systém ako to teraz robia dobré databazy, alebo žurnálové súborové systémy.
Ovladanie tlačiarne, displeja a RTC už bola len programátorská rutina. Nebolo tam toho
veľa zaujímavého na riešenie. Bolo to iba hodne rozsiahle a nakoniec výsledný
program pozná okolo 30 rôznych príkazov a jeho celková veľkosť je 15kB.
Zdrojový tvar programu mal 157kB.