16.05.2015 Views

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

16 - SHARE.EXE (10 hex)<br />

26 - ANSI.SYS<br />

67 - HIMEM.SYS<br />

72 - DOSKEY.COM<br />

75 - TASK SWITCHER<br />

173 - KEYB.COM<br />

174 - APPEND.EXE<br />

176 - GRAFTABL.COM<br />

183 - APPEND.EXE<br />

Identyfikator programu TSR jest przekazywany za pośrednictwem<br />

rejestru AH.<br />

System DOS jest na razie systemem w zasadzie jednozadaniowym i<br />

jednoużytkownikowym, w którym zasoby są przydzielane procesom<br />

kolejno (ang. serially reusable resources). Aby uchronić się<br />

przed potencjalnym konfliktem, powinniśmy upewnić się, czy DOS<br />

"nic nie robi". Często stosowaną "sztuczką techniczną" jest<br />

zastosowanie flag ErrorMode i InDos systemu oraz wykorzystanie<br />

mechanizmów przerywań nr 36 i 40 (24 i 28 hex). Przydatną<br />

informacją jest także identyfikator programu - PID. Na taką<br />

ewntualność <strong>Borland</strong> <strong>C++</strong> dysponuje makrem getpid zdefiniowanym w<br />

pliku nagłówkowym :<br />

# define getpid() (_psp)<br />

Inną przydatną funkcją może okazać się keep() (ang. keep<br />

resident - pozostań rezydentny). Oto krótki przykład<br />

zastosowania tej funkcji - znów z wykorzystaniem przerywań<br />

zegarowych.<br />

# include <br />

# define INTR 0x1C /* przerywanie INT 28 */<br />

# define ATTR 0x7900<br />

/* ograniczenie wielkości sterty (heap length) i stosu (stack<br />

length): */<br />

extern unsigned _heaplen = 1024;<br />

extern unsigned _stklen = 512;<br />

void interrupt ( *oldhandler)(void);<br />

void interrupt handler(void)<br />

{<br />

unsigned int (far *ekran)[80];<br />

static int licznik;<br />

// Adres pamieci dla monitora barwnego: B800:0000.<br />

// Dla monitora monochromatycznego: B000:0000.<br />

ekran = MK_FP(0xB800,0);<br />

// piloksztaltna zmiana licznika w przedziale 0 ... 9<br />

- 210-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!