TI58 tiny - replika kalkulátoru TI-58 s ATmega8

Zkusil jsem vytvořit obdobu starších kalkulátorů - konkrétně repliku kalkulátoru TI-58C - s novodobějším procesorem, ATmega8. Podle odhadu by mohl mít přiměřenou velikost pamětí pro daný účel. Bohužel jsem se dostal jen na 90% práce na firmware, narazil jsem na zaplnění paměti ROM a nedokázal tam vměstnat celý potřebný kód. Převést kód na větší procesor jsem nechtěl, protože kód v assembleru se už stával nepřehledný, a tak budu dál pokračovat raději v C s větším procesorem, v nové koncepci.

Kalkulátor je použitelný jen jako kalkulátor, není funkční programování. Přesto ale má replika zajímavé vlastnosti, jako běžný kalkulátor - počítá s přesností 19 platných číslic, exponent 4 číslice, 60 paměťových buněk. Proto zde uvádím popis kalkulátoru, mohl by být někomu užitečný. Např. využít float knihovny v assembleru AVR.

Upozorňuji že konstrukci jsem odbyl jen jako nejnutnější, abych si vyzkoušel tvorbu firmware, tj. napájení je z USB, tlačítka bez hmatníků, nevhodná krabička a potisky “upatlané”. Řešil jsem jen software, ne hardware.

breatharian.eu/hw/ti58/index.html

breatharian.eu/hw/ti58/img/TI58_0_m2.jpg

Odhadom, súvislým prechodom na Atmega168 alebo 328, by mali byť všetky vlastnosti programovania v ASM zachované.
Pinovo sú plne kompatibilné.

Ano, zřejmě tento projekt k tomu dospěje, že by mohl být dokončený s ATmega168. Jen už to nebude tak vtipné jako nacpat to do ATmega8. :slight_smile:

Teď pomalu dokončuji variantu TI-59 s ATmega644p, ale v C. Kód je 4x větší a stejně tak pomalejší (výsledná rychlost srovnatelná s originálním TI), ale alespoň je dokončení reálnější. Možná pak poslouží jako vzor k dokončení rychlejší a úspornější ASM varianty.

Ono obcas treba rozmyslat pri programovani v Cku. Aby preklad bol pouzitelnejsi. Sice to obcas nejde, alebo kod v c vyzera všelijako. Na druhej strane pre vypoctoch co su na kalkulacke, sa to velm8 vylepsit nebude dat.
Zase 4x vecsi kod sa mi zda dost.
V c9m to robis?

Ve WinAvr. Ten rozdíl mezi C a ASM verzí je především v metodě. ASM verze je dost optimalizovaná podle vzoru kódu ZX Spectrum (makro kód, důsledné používání všech registrů). Ale C verze je psaná obecně - nejen aby byla nezávislá na procesoru, ale aby float knihovna měla konfigurovatelnou přesnost (arbitrary, navíc kompatibilní s IEEE formátem, který není sw implementaci moc nakloněný) - kvůli tomu, protože je to příprava pro následující verzi kalkulačky s ARM procesorem a podstatně vyšší přesností. Takže ten poměr 4x větší i pomalejší je asi tak přiměřený.

Akú optimalizáciu používaš?
Používaš -oS alebo -o3?

U ATmega používám nejčastěji -Os, optimalizace na velikost, bývá spíš problém s pamětí než s rychlostí. Ale stejně to nezmáčkne až tak moc jak by mohl, např. vkládá funke jako inline, musí se mu i tak ještě dost domlouvat.

Update: Dokončil jsem další mezi-prototyp kalkulátoru, rozšířená replika TI-59. Tentokrát už plně funkční, jen neodladěný, protože je to testovací meziverze (proto opět ošklivá kontrukce), ladit budu až poslední nejvyšší verzi. Mohou se proto objevit nefunkčnosti. Tahle verze by měla zajišťovat všechny funkce původní TI-59 plus nějaká nová rozšíření. Používá procesor ATmega644P naprogramovaný v C kódu. K dispozici je i emulátor pro Windows.

Parametry: přesnost 19 číslic, exponent 4 číslice, paměť 1000 programových kroků a 100 registrů, interní záložní paměť EEPROM, načítání programových modulů z SD karty, ukládání programů na SD kartu, tisk do souboru na SD kartu.

breatharian.eu/hw/ti59/index.html

breatharian.eu/hw/ti59/img/TI59_1_m2.jpg

breatharian.eu/hw/ti59/img/TI59_emul.jpg

Veľmi pekné :slight_smile:

Si bretarian (podľa uvedenej stránky)? By som sa nedivil. Veď odkiaľ by si zobral toľko času na takéto veci :slight_smile:

Bohužel ne. :slight_smile: To byl jen původní sen a plán, ale časem jsem pochopil jak to funguje a proč to funguje jen někomu a proč to vlastně není vůbec důležité.