Instrukcji do programu 'REAKCJE' jako takiej nie ma, gdyz korzystanie z niego jest bardzo proste i szybciej mozna nauczyc sie go metoda prob i bledow niz czytajac instrukcje. Tutaj tylko wspomne, ze najszybciej zadany efekt uzyskuje sie uzywajac procedur <T>hink , prze<M>iany , <P>rodukty lub <S>yntezy poprzez wcisniecie oznakowanego klawisza.
Dzialanie programu wynika z jego konstrukcji. Program tworzy Wielka Tablice Reakcji WTR i tylko z niej korzysta podczas dzialania (nie odwoluje sie juz do przeczytanej na wstepie bazy). Surowce (wiersze) i produkty (kolumny) naleza tylko do tzw. Surowcow Glownych (w tej chwili 106 typow zwiazkow) a nie do pomoczniczych (ok. 120 typow). Uniknalem w ten sposob deklaracji tablicy 226 x 226 elementow (ktora by sie juz zupelnie nie zmiescila w DOS'ie), zamiast tego jest tablica 106 x 106, co zostalo okupione bardziej skomplikowa- nymi procedurami przepisujacymi dane z bazy do WTR.
Program zawiera tylko bezpieczne, sprawdzone procedury, tak ze wciskajac nawet
dowolne kombinacje klawiszy w trakcie dzialania programu nie dochodzi do
powazniejszych awarii. W szczegolnosci bezpieczne sa:
- dysk twardy lub inny z ktorego uruchomiono program;
- baza danych (BAZA1.REA), nie ma mozliwosci jej nadpisania lub skasowania;
- pliki potrzebne do pracy programu (program nie zapisuje w nich nic);
- pliki systemowe komputera (program ich nie uzywa);
- sam plik programu, *.EXE (program go nie modyfikuje).
Sytuacja ta moze sie zmienic np. w przypadku zainfekowania wirusem, ale to takze normalne. Jesli chodzi o system, to 'wysypanie' sie programu konczy sie , zarowno pod DOS jak i WINDOWS , bezpiecznym komunikatem: *Hit any key to return to system*.
Niedociagniecia:
1. Program nie wyswietla pelnych linii opisow.
Napisanie porzadnej procedury wyswietlania zajeloby duzo czasu a ja koncentru-
je sie na reakcjach, tak wiec na razie jedynym sposobem przeczytania pelnego
komentarza jest 'podgladniecie' pliku BAZA1.REA dowolnym ale prostym edytorem
(moze to byc EDIT, F3 Nortona Commandera, Notatnik, itd.).
Plik BAZA1.REA jest niezakodowany.
Nalezy uwazac, aby nie nadpisac bazy w sposob niezgodny z jej struktura,
np. dopisanie jednego znaku " desynchronizuje ladownaie bazy.
Poza tym mniej uzywane procedury <R>eakcje i <S>yntezy podaja pelne opisy,
lepiej uzywac w tym celu procedury <S>yntezy.
2. Bledy podczas ladowania bazy.
Przede wszystkim, zadeklarowane ilosci rekordow w pliku CONFIG.REA musza byc
wieksze od ilosci, ktore chcemy zaladowac z BAZY.
Jesli mimo to pojawia sie komunikat *Out of memory* lub podobny przyczyna jest
Wielka Tablica Reakcji (WTR). Jesli pamieci jest mniej niz 590 kB, moze nie
starczyc miejsca na wczytywane teksty. Efektem zalozenia takiej, (wypelnionej
w koncu tylko w 10% ) tablicy jest blyskawiczny dotep do danych (i szybkie
dzialanie programu) w przypadku powodzenia w uruchomieniu lub... w ogole
niemoznosc uruchomienia programu na danej maszynie.
Program nie posiada wewnatrz zaimplementowanych procedur obslugujacych pamieci extended czy expanded. Z gory dziekuje za informacje jak wykorzystac HIMEM.SYS lub tez inny, moze lepszy program w takim przypadku. Obecnie, gdy testuje program pod interpreterem dziala on na niepelnej wersji bazy (tablica 80x80 surowcow zamiast 110x110 wlasnie dlatego, ze nie wystarcza juz miejsca dla interpretera (potrzeba dodatkowo ok. 300kB). Okazalo sie, ze w winDOS nawet to nie dziala i musialbym jeszcze bardziej baze okroic (np. do 20x20) co jest bardzo zmudne, wiec tego nie zrobilem.
Tak wiec na razie jedynym wyjsciem jest usuniecie kilku zbednych programow
z pamieci "podstawowej" za pomoca np. zaremowania ich w autoexec.bat lub
config.sys, np.:
rem share.exe (zajmuje okolo 6-17 kB)
rem mouse.com (mysz w DOS jest niepotrzebna, czasem zajmuje 10 kB !)
rem device=c:\dos\ramdrive.sys 2400 512 64 /E
itp. zabiegi.
Wpisujac w DOS'ie 5.0 "mem/c" lub w 6.x "mem/c/p" uzyskujemy info o zajetosci
pamieci podstawowej przez programy, sterowniki, itp.
KOMUNIKAT WINIEN PODAC PRZYNAJMNIEJ 590 KB JAKO "FREE MEMORY" !!!
W nowszej wersji programu zdecydowalem okroic nieco baze o 4 rzadko wykorzystywane surowce (BARWNY.PR, R-S-C-N, pirydon, hydrazon) przez co objetosc tablicy zmalala o okolo 24 kB (do okolo 320 kB). Program powinien wiec dac sie uruchomic przynajmniej na czesci tych maszyn, na ktorych 'nie chcial' wczesniej.
3. Dopisanie nowych reakcji do bazy.
Mozna to zrobic, oczywiscie, recznie (tylko edytorkami typu EDIT lub dla
programistow, a nie np. WORD'em !), ale program posiada odpowiednia procedurke
w procedurze <S>yntezy.
Ze zdziwieniem wczoraj stwierdzilem, ze nie dziala ona czasem...
Pojawialo sie *Subscript Out of range*. Oczywiscie, dodajac nowa reakcje, np.
numer 662 dodajemy nowy komentarz (mialby nr 662), co przy deklaracji
w CONFIG.REA:
>> Maksymalna liczba opisow reakcji w bazie :,662 <<
okazalo sie juz byc bledem. Liczba ta musi byc zatem o kilka, najlepiej ok. 10
wieksza niz liczba ladowanych rekordow i wtedy wszystko dziala poprawnie.
Przykladowo, przy ustawieniu:
>> Maksymalna liczba opisow reakcji w bazie :,665 <<
procedura <S>yntezy pozwolila dopisac kolejna reakcje.
Wiekszych modyfikacji BAZY sam dokonuje i tak zawsze edytorem EDIT, tak ze nie
ma na razie koniecznosci przerobki programu (aby np. sam zmienial CONFIG, itd.)
SKROTY W BAZIE.
Ze wzgledu na oszczednosc czasu przeszukiwania jak i miejsca w 1997 roku
wprowadzono do bazy nastepujace skroty:
vvv - rozbudowa szkieletu weglowego
ddd - destrukcja szkieletu weglowego
ppp - synteza pierscieni (na razie nieuzywana)
identyf. - identyfikacja (+ wszystkie odmiany tego slowa)
r. - reakcja, reaguja, reaguje, itd.
reag. - reaguje
[....] - literatura
#.... - nazwisko przy reakcji ulatwiajace dyskusje i szukanie
w skorowidzach (np. #FRIEDEL-CRAFTS).
Konwencje te zachowuje nadal aby ulatwic przeszukiwanie bazy.
Jesli dany surowiec/produkt mozna zaszeregowac do kilku grup, to trzeba
zaczac poszukiwania od 'bardziej podstawowych' (ale nie ma tu scislej
definicji). Np. poszukujac ogolnych syntez amin znajdujemy je podajac
zapytanie "Produkt amina1". Zapytanie "Produkt amina3" poda tylko metody syntez amin III-cio
rzedowych.
Wg. podobnych zasad wprowadzono tymczasowe slowo 'kompatybilnosc'. Napisanie
porzadnej procedury laczacej nieraz odlegle sciezki zajeloby duzo czasu.
Slowo to sluzy do pokazania komputerowi, ze np. glikol to tez alkohol, ale
nie odwrotnie. Poniewaz struktura danych w bazie jest nastepujaca:
"surowiec.glowny","produkt.glowny","surowiec.glowny lub pomocniczy"
"komentarz"
to zapis:
"eter winylowy","eter","kompatybilnosc"
jest poprawny, bo kazdy eter winylowy to eter, ale:
"eter","eter winylowy","kompatybilnosc"
jest bledny, bo nie kazdy eter to eter winylowy.
Slowo 'kompatybilnosc' moze wiec dzialac tylko w kierunku bardziej ogolnego
produktu.
Kropki w nazwach chemicznych wziely sie z archaicznej wersji programu (1996),
kiedy to dzialania w bazie odbywaly sie wprost na nazwach (zmiennych typu
STRING), a nie na ich numerach, jak w tej chwili. Pozostawilem je jednak aby
nie powstaly jakies nieoczekiwane bledy.
Zmiany w wersji 1.5
- poprawiono procedure przeszukiwania surowcow pomocniczych
(pojawial sie
blad na koncu rozwijanej listy)
- dopisano kilka nowych metod do bazy i poprawiono kilka istniejacych
(reakcje zwiazkow Grignarda oraz TosMIC - izocyjanku tosylometylu)
- rozszerzono i poprawiono info (info2.txt) i przemyslenia (mysli2.txt)
- przekompilowano program na krotszy aby powiekszyc ilosc wolnej
pamieci.
Paweł Hoszowski
Praca wpłynęła do Chemfana: 2-07-2000