Koupil jsem to hlavně kvůli baterce, klávesnici a napájecímu adaptéru. První adaptér má zlomenej kabel, mám ještě neoriginální, ale docela se ho bojim používat.
Oznámení
Sbalit
Aktuálně žádná oznámení.
Ghh
Sbalit
X
-
Lama programuje
Chtěl jsem do svého programu zabudovat Arexx port pro pár příkazů.
Pohoda můj program je MUI a tam už je Arexx port zabudován. Jelikož vůbec nevim jak se to dělá, prohledal jsem dokumentace a příklady. V dokumentaci je sice příklad pro C, ale jenom část kódu bez kontextu a bez toho mi to nešlo přepsat do E.
Naštěstí máme Aminet a tam jsem našel dva zdrojáky kde je tohle použito.
Existuje atribut MUIA_Application_Commands kde je "seznam" mých třech Arexx příkazů a jejich parametrů v určitém tvaru. Svůj seznam jsem upravil podle příkladu a program při prvním Arexx pokusu vytuhnul
Zpět k dokumentaci, tam je psáno že pokud příkaz nemá žádné parametry můžete použít tento speciální tag. S tímto tagem mi program už nepadal, ale zase při jeho volání přes Arexx nereaguje
Naštěstí existuje další atribut MUIA_Application_RexxHook který zavolá hook/funkci pokaždý když je program volán přes Arexx. V dokumentaci se píše že tímto způsobem získám pointer k rexxmsg. Eh co to je? Nevadí v orig AmigaE balíku je perfektní příklad jak použít rexxmsg.
Najednou se mi povedlo zachytávat aktivitu z Arexx příkazu, ale jenom "aktivitu", nějaký čísla a ne samotný příkaz uff..
Jen zachovat chladnou hlavu a přepsat špatně napsaný string format a už to ukazuje co na ten port přichází Teď už stačí jen pár IFů a ENDIFů a moje tři příkazy se chovají jak mají. Super podařilo se mi obejít problém a napsat vlastní funkci.
Ale pak jsem si všimnul pár nevýhod, příkaz se dá použít jen jeden na jednom řádku a bez parametrů. Také nefungovalo zobrazení příkazů v nápovědě.
Každý správný program by měl mít zabudovanou nápovědu pro všechny Arexx příkazy co podporuje.
Příkazem v shellu:> rx "address MUJPORT.1 HELP 'ramrikazy'" získáte seznam příkazů a jejich parametrů. U MUI programu
by to mělo fungovat vždy, u ostatních nevim jistě.
Vrátil jsem se k verzi s atributem MUIA_Application_Commands a objevil jsem moji chybu, místo rx[0]rx[1]rx[2] jsem napsal rx[0]rx[1]rx[1]. Takže kdybych to našel už na začátku... Jenže nakonec to bylo užitecný, teď už vím jak použít rexxmsg a pod.
Program běží, reaguje na příkazy, ale nechce mi zobrazit obsah jejich parametrů
Parametry maj svoje pravidla, tma/S je switch, dnu/N je číslo atd. Tyto parametry jsou ve stringu 'tma/S,dnu/N' a takhle se zobrazují i v napovědě.
Několik hodin jsem si myslel že je to jenom nápověda a cokoli ve stringu je jen text a s obsahem parametru to nesouvisí. Nechal jsem tam dnu/N a zapoměl na to. Při testovaní jsem zkoušel posílat nějakej text a furt nic.
V dokumentaci u MUIA_Application_Commands je zmínka že to souvisí s dos funkcí ReadArgs. Tam jsem se dočetl že naopak velmi záleží co je v tom stringu, /N je vždy číslo /K je vždy text atd. Takže jsem posílal text na parametr co očekával číslo a hrozně se divil že to nefunguje
Najednou všechno funguje jak má, program reaguje na příkazy a jejich parametry a má vestavěnou nápovědu, štěstí a blaho...
Čtěte dokumentaci.
Amiga DraCo DaMi PegasosII G4 G5
- Poděkování 3
Komentovat
-
Včera jsem si ještě hrál z disketama a konečně po dlouhý době jsem přišel na to jak pracovat s disketama na Drakovi. Drak totiž v základu nabízí AmiDD, AmiHD, DraCoDD a DraCoHD. V mountlistech jsem měl chybu a už všechno funguje jak má. Prohledal jsem šuplíky, našel starý diskety a udělal jsem si adfko z mojí diskety z roku 1995 (obrázky do soutěže).
Nakonec jsem udělal zálohu MorphOS klíčů na disketu a doufám že vydrží dalších 20 letAmiga DraCo DaMi PegasosII G4 G5
- Poděkování 2
Komentovat
-
Lama programuje
Včera se mi konečně po mnoha dnech podařilo donutit můj program aby jeho podprogram běžel ve vlastním tasku (subtask).
Tahle funkce (podprogram) kontroluje až tisíce souborů jestli je to obrázek a jakou má velikost. Funkce běží perfektně, ale když se spustí tak hlavní program a jeho gui "zamrzne" až do skončení operace.
Chtěl jsem to samozřejmě nějak vyřešit a ještě přidat zobrazení průběhu operace v procentech.
V dokumentaci se odkazuje na příklad, který napsal sám autor MUI (Stefan Stuntz). Jeho příklad počítá a kreslí fraktály a taky zobrazuje průběh výpočtu v procentech. Dokonce je i v orig ECX balíku přepsanej do E. No super to je přesně to co potřebuju.
Jenže příklad je na mě moc složitej, protože se tam do toho motá to počítání fraktálů a výstup grafiky. Zkoušel jsem projít nějaký jednodušší příkaldy, ale pořád jsem to moc nechápal.
V dokumentaci dále píšou o nové třídě "Process.mui", která by měla "jednoduše" spravovat běh procesů a podprocesů atd. Příklad této třídy je v SDK, ale jenom v céčku. Zobrazuje úryvky textu Life of Brian a tlačítkama posíláš signály start, stop atd.
Po nějaký době se mi ho podařilo přepsat do E. Program se spustí, tlačítka fungujou, ale posílání signalů ne Pitval jsem to důkladně, ale nepodařilo se mi najít kde je problém. Taky jsem nikde nenašel další příklady kde je tahle třída použita. Dost dlouho mi trvalo než jsem se dokázal vzdát tohodle příkladu a radši na něj zapomenout.
Vrátil jsem se na začátek k prvnímu příkladu s fraktálama. Nejdřív bylo nutné najít místečko kam umístit svoji funkci aby bežela v tom multitasku. To šlo celkem snadno a teď můžu začít "holit". To je odstranit výpočet fraktálů, grafiku a zjistit co vše je a není nutné aby to fungovalo.
Ještě trochu toho ladění a už to celkem funguje. Zatím je to teda dost nahrubo, ale je super že to běží jak jsem chtěl.
Pro někoho je asi subtask atd normální, ale mě se to podařilo zvládnout až teď a cejtim to jako velkej posun dopředu. A ty další možnosti...
Amiga je boží!Amiga DraCo DaMi PegasosII G4 G5
- Poděkování 5
Komentovat
Komentovat