IDE dla Watcom C/C++

    -- Sebastian Pawlak, PCKurier 26/1997.


Jednym z najpopularniejszych na świecie kompilatorów języka C jest bez wątpienia Watcom C. Obsługuje on tryb chroniony - umożliwia korzystanie z całej pamięci komputera bez podziałów na segmenty. W programie bez żadnych kłopotów możemy zadeklarować tablicę o takich "skromnych" rozmiarach:

unsigned char tablica [10000000]; // tablica na 10MB 


można też przydzielić pamięć dynamicznie: 

unsigned char *tablica=new unsigned char [10000000]; 

delete [] tablica; // zwolnienie pamięci 

Oprócz przedstawionych powyżej dogodności, Watcom C/C++ generuje kod o bardzo wysokich parametrach. Wiele firm produkujących gry komputerowe stworzyło dzięki temu kompilatorowi swoje największe hity - wymienię tylko kilka tytułów: DOOM, Raptor, System Shock, Descent, Magic Carpet, NASCAR Racing, Terminal Velocity itd. Obecnie nie widuje się już programów, które przy uruchamianiu nie wyświetlają "DOS4GW" (co oznacza, że pracują w trybie chronionym).

Mimo tych wszystkich zalet poważną wadą Watcom C jest brak dobrego IDE, czyli środowiska, w którym piszemy, sprawdzamy i uruchamiamy nasze programy. Uciążliwe jest pisanie kodu np. edytorem Norton Commander, zapisywanie na dysk, wychodzenie z edytora, uruchamianie kompilatora z odpowiednimi parametrami, później znów wchodzenie do edytora, odszukiwanie miejsc, w których były błędy, itd. Poza tym nie są podświetlane słowa kluczowe, kursor zawsze jest na początku wiersza, a nie tam gdzie zaczyna się wcięcie bloku tekstu. Po chwili zastanowienia doszedłem do wniosku, że do pisania programów w Watcom C może posłużyć IDE od Borland C++.

Oto jak namówić IDE Borlanda do współpracy z kompilatorem Watcoma:

- Do autoexec.bat wpisz: 

SET DPMIMEM=MAXMEM 1560 

Dodaj ścieżkę dostępu do katalogu, w którym znajduje się "bc.exe". Z config.sys usuń EMM386, albo spraw by nie "pochłaniał" on całej pamięci komputera, np. możesz wpisać:

DEVICE=C:\\DOS\\EMM386.EXE 14000 

Jeśli po zaimplementowaniu wszystkich narzędzi, w okienku komunikatów nie pojawiają się komunikaty o błędach, albo nie można uruchomić helpów, to oznacza, że nadal za dużo pamięci poświęcane jest dla EMS.

- Jeśli IDE od BC++ będzie używane tylko do edycji programów
  pisanych w Watcom C, to usuń plik z deklaracją narzędzi " tcdef.dpr".
  Uruchom IDE Borlanda, poprzez "bc.exe".

- Otwórz z menu okno "Options", wybierz "Transfer..." 

- Zejdź na sam dół okna "Program Titles" tak, aby pasek wskazywał
  na puste miejsce, kliknij "Edit". 

- W pole "Program Titles" nowo otwartego okna, wpisz nazwę pierwszego
  implementowanego programu: 

~Watcom C 32 Compiler 

Znak ~ oznacza, że litera stojąca po nim (W) będzie podświetlona na
liście narzędzi. 

- W kolejne pole "Program Path" wpisz: 

C:\\WATCOM\\BINB\\WCL386 


Ścieżkę należy zmodyfikować tak, aby wskazywała miejsce,
gdzie znajduje się plik "WCL386.EXE" 

- W polu "Command Line" umieść parametry: 


-mf /ot -cc $SAVE ALL $NOSWAP $EDNAME $CAP MSG(tasm2msg) 


Trzy pierwsze parametry możesz zmieniać w zależności od tego,
jak chcesz wywołać kompilator. 

- Przypisz narzędziu Hot Key (kombinację klawiszy po wciśnięciu,
której uruchomisz kompilację), w tym celu kliknij na którejś
z wolnych kombinacji Shift+F. Jeśli wszystkie skróty klawiszowe
są już zajęte, zwolnij je, wybierając w zbędnych narzędziach
"Unassigned". Teraz zaznacz jeszcze "Translator", kliknij
"Modify" i gotowe. Jedno narzędzie już masz. 

Pozostałe programy deklaruje się w podobny sposób, więc podam
tylko odpowiednie parametry (ścieżki należy tak modyfikować,
aby prawidłowo wskazywały na pliki): 


*** kompilator C++ *** 



"Program Titles": ~Watcom C++ 32 Compiler 

"Program Path": C:\\WATCOM\\BINB\\WCL386 

"Command Line": 

-mf /ot -cc++ $SAVE ALL $NOSWAP $EDNAME $CAP MSG(tasm2msg) 


zaznacz "Translator", wybierz Hot Key 



   *** Watcom Programmers Guide Help *** 

"Program Titles": Watcom Programmers Guide Help 

"Program Path": C:\\WATCOM\\BIN\\WHELP 

"Command Line": PGUIDE 

wybierz Hot Key 



       *** Watcom C Guide Help *** 

"Program Titles": Watcom C Guide Help 

"Program Path": C:\\WATCOM\\BIN\\WHELP 

"Command Line": CGUIDE 

wybierz Hot Key 



      *** Watcom C Library Help *** 

"Program Titles": Watcom C Library Help 

"Program Path": C:\\WATCOM\\BIN\\WHELP 

"Command Line": CLIB 

wybierz Hot Key 



     *** Watcom CPP Library Help *** 

"Program Titles": Watcom CPP Library Help 

"Program Path": C:\\WATCOM\\BIN\\WHELP 

"Command Line": CPPLIB 

wybierz Hot Key 



Hot Key`e należy ustawić tak, żeby łatwo było korzystać z 

narzędzi: 


Watcom C 32 Compiler	Shift+F8 

Watcom C++ 32 Compiler	Shift+F9 

Watcom Programmers Guide Help	Shift+F2 

Watcom C Guide Help	Shift+F3 

Watcom C Library Help	Shift+F4 

Watcom CPP Library Help	Shift+F5 

Teraz można kompilować programy w IDE Borlanda i uruchamiać helpy. Jeśli nie pamiętasz zdefiniowanych kombinacji klawiszy dla poszczególnych narzędzi, możesz je uruchamiać, wybierając odpowiednie z listy. Z menu gdzie znajduje się lista narzędzi, wybierz okno oznaczone potrójną poziomą kreską (tam, gdzie jest opcja "Repaint desktop").

Mimo dużych możliwości jakie daje wprowadzenie powyższych deklaracji, aby uruchomić skompilowany w IDE program, nadal trzeba wchodzić do DOS i wpisywać jego nazwę z linii poleceń. Jednak i tę niedogodność da się ominąć!

Należy skompilować poniższy program: WCL.EXE uruchom.c

/* Program zarządzający uruchamianiem spod IDE Borland`a */
/* programów pisanych w Watcom C                         */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include <fcntl.h>

void main (int argc,char *argv[],char *env[])
{
 int Plik;
 char Lancuch[100];

 if (argc<2)
 { printf ("brak parametru !\n"); exit (EXIT_FAILURE); }

 /* skoryguj ścieżkę do Twojego ide.bat, ma bć taka sama
    jak do bc.exe */
 Plik=creat ("C:\\BORLANDC\\BIN\\IDE.BAT",S_IWUSR|O_TEXT);

 strcpy (Lancuch,"@uruchom -clear\n:jeszcze_raz\n");
 strcat (Lancuch,"@bc.exe %1 %2 %3 %4\n\0");
 write (Plik,Lancuch,strlen (Lancuch));

 /* jeżli nie ma opcji -clear to ... */
 if (strcmp ("-clear",argv [1]))
 {
  strcpy (Lancuch,"@");
  strcat (Lancuch,argv [1]);
  strcat (Lancuch,"\n");
  write (Plik,Lancuch,strlen (Lancuch));
  strcpy (Lancuch,"@goto jeszcze_raz\n");
  write (Plik,Lancuch,strlen (Lancuch));
 }

 close (Plik);
}



Plik ze skompilowanym programem "uruchom.exe" trzeba przenieść do katalogu, w którym znajduje się "bc.exe". Do listy narzędzi należy dodać jeszcze dwa:

*** RUN PROGRAM *** 

"Program Titles": RUN PROGRAM 

"Program Path": C:\\BORLANDC\\BIN\\uruchom 

"Command Line": $EXENAME $NOSWAP 

wybierz Hot Key    Shift+F7 



*** NO RUN PROGRAM *** 

"Program Titles": NO RUN PROGRAM 

"Program Path": C:\\BORLANDC\\BIN\\uruchom 

"Command Line": -clear $NOSWAP 

wybierz Hot Key    Shift+F6 


Teraz trzeba wybrać Shift+F7, aby program utworzył plik
"ide.bat", a następnie Shift+F6. Wyjść z IDE. I to wszystko ! 

Teraz można już pracować, czyli: 

- wejść do katalogu, w którym będziesz tworzyć swój program
  np. C:\\WATCOM\\PROGRAMY\\, 

- następnie uruchom swoje nowe IDE, pisząc "ide.bat"
  - możesz podać pliki, które chcesz aby pojawiły się w edytorze,
    np. ide PIERWSZY.CPP. 

- Jesteś już w IDE, możesz otwierać pliki, zapisywać, edytować,
  korzystać z helpów, kompilować. 

- Skompiluj swój program (np. Shift+F8), a teraz obejrzyj jego
  działanie. W tym celu wciśnij Shift+F7 (RUN PROGRAM) - informacja
  o tym, że będzie on uruchamiany została umieszczona w pliku "ide.bat".

- Wciśnij Alt+X (wyjście z IDE)... uruchomił się twój program!
  Przerwij jego działanie... jesteś w IDE! Dokonaj poprawek i
  ponownie uruchom program kombinacją klawiszy Alt+X... wykonuje
  się! Przerwij... znowu w IDE! Otwórz inny plik z programem,
  skompiluj go, przed uruchomieniem wciśnij ponownie Shift+F7,
  aby wpisać nazwę nowego pliku "exe" do "ide.bat", teraz możesz
  uruchomić program kombinacją klawiszy Alt+X. 

No tak, ale teraz nie można wyjść z IDE! Owszem można, wciśnij Shift+F6 (NO RUN PROGRAM) i teraz Alt+X ... jesteś w DOS!

Mam nadzieję, że przedstawione przeze mnie rozwiązanie problemu niewygodnej edycji programów w Watcom C usprawni i uprzyjemni ich pisanie.

w3cw3c
automatyka przemysłowa