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

Search the boards