Posted By: mac (mac) on 'CZmsdos' Title: Re: TSR spustec programu Date: Sat Nov 2 19:36:53 1996 > Cafte! > > > Tak me napadla takova ptakovina: > > existuje nejaky TSR programek, ktery by po urcitem case, kdyz nesahnu na > > klavesninci, spustil nejaky jiny program? > > No, ptakovina to sice je, ale proc ne? Nevim, jestli jsem ho nekde > uz nevidel. Muzes se po tom poohlednout... nebo pozeptat, vetsina lidi te > urcite nekam posle. ;) > Ale takovy pgm by urcite nebyl problem napsat. Pro zrucneho > assembleristu se jedna o par desitek radku. > > > Byte, > Tuttle > > My mother said: Life is like the box of chocolate; > you never know what you gonna get. Forrest Gump To teda musim oponovat. Zase tak bez problemu to nebude, a ani pro zrucneho assembleristu (treba taky ja) to neni zcela trivialni. Tak treba co s alokaci pameti? Rezidentak je tam, OK, ale nad nim je program, ktery pokud sam nerekne jinak, ma cely zbytek konvencni pro sebe... pouze pokud spusti on sam neco dalsiho, cemuz nejakou tu pamet uvolni, ale pak si ji pro zmenu schlamstne zase tento. Atd, atd. Pokud jde o spousteni COM - programu, (predpokladam, ze nic vetsiho se touto metodou spoustet nebude) jde to vyresit nasledovne: Kdyz se TSR instaluje nacte do pameti COM, a necha si ho tam. (Tim zabere o neco vic nez 1 segment, tj 64k + nejake drobne.) Zavesi se na nekolik preruseni (klavesnice, casovac, dossafe apod.) Az uplyne dana doba, prerusi bezici program a spusti COM. Ale je tu dalsi problem: Pokud bezici program prave pouziva nejakou sluzbu DOSu (co je ve vetsine pripadu) a ten COMac potrebuje s DOSem pracovat take, tak se to posere (po navratu z toto COMu urcite), protoze DOS pouziva globalni promenne. Ten rezidentak musi tedy jeste pockat, az nebude prave bezet DOS (pozna se to pomoci indos flagu - je na to sluzba systemu, nebo se zavola dossafe preruseni - treba kdyz se ceka pomoci dosove sluzby na klavesu) Takze zadna legrace to neni a pokud ten spousteny program nema zadne specialni vyhodne vlastnosti (vubec nepouziva dos atp.) tak je to velmi slozita vec. Jo jeste bych zapomel na to, ze ten rezidentak by mel nekam uschovat obrazovku - v grafice je to dost problem, ne vzdy se da zjistit kompletne stav videokarty, tak aby to slo bezpecne obnovit. Pri spousteni EXE programu, je to podobne, s tim, ze to zpravidla sebere vic konvencni pameti (tolik, ze na vetsinu veci je pocitac nepouzitelny) Musi se proste jeste zajistit, aby ten rezidentne spousteny EXEac dostal jen minimun pameti kolik vyzaduje (to je napsano v hlavicce). Jeste by tu byla jedna metoda: Odklidit, konvencni pamet, jak jen to jde uschovat stav vseho mozneho, (vsech zarizeni videokaret, a vubec vseho) spustit tem program, a az skonci, vsechno zase obnovit, a modlit se, ze se na nic nezapomelo, a ten puvodne bezici program to prezije (mala sance, ze se to nekomu podari snadno naprogramovat) Toto dela to Cybex Shell od stejnomenne firmy (pokud jste delali na Spectru, a znate Miroslava Fidlera, pak vezte, ze to spachal on) Nebo pouzij neblaze prosluly "graficky system" od firmy Microsoft (Mala mekka) a napis si to pod Windows. Je mi lito, ale pro slozitejsi veci asi jedine rozumne (ale ne zrovna dobre) reseni. Mac