home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************/
- /* MC.H */
- /* */
- /* In dieser Include-Datei finden sich die System- und Compiler-abhaengigen */
- /* Funktionen zu dem C-Environmentprogramm MC.C . */
- /* Beschreibung der implementierten Funktionen im Begleittext. */
- /****************************************************************************/
-
-
- /********* FUNCTION PROTOTYPING der Screen-I/O-Functionen ***************/
- void init_device(void), ende_device(void), setyx(), etoeos(void);
- void etoeoln(void), inverse(void), normal(void), update(void), cls(void);
-
- /********* FUNCTION PROTOTYPING der Hilfsfunktionen *********************/
- void my_putstr(char *,int);
- int subprozess(int,char *,char **), call_system(char *);
-
-
- /****************************************************************************/
- /* Benutzung der Zorland-eigenen IO-Routinen */
- /****************************************************************************/
- #ifdef ZORLAND
-
- /* Hier werden die schnelleren, illegalen I/O-Routinen eingefuehrt */
- #define printf disp_printf
- #define update disp_flush
- #define etoeos disp_eeop /* Von Cursor bis Ende Schirm loeschen */
- #define etoeoln disp_eeol /* Von Cursor bis Ende Zeile loeschen */
- #define inverse disp_startstand
- #define normal disp_endstand
- #define setyx disp_move
- #define ende_device disp_close
- #define init_device disp_open
-
-
- void cls(void)
-
- begin
-
- setyx(0,0);
- etoeos();
- setyx(0,0)
- end
-
- #endif
- /***** ENDE ZORLAND *********************************************************/
-
-
- /****************************************************************************/
- /* Vereinbarung fuer ein ANSI - Terminal */
- /****************************************************************************/
- #ifdef ANSI
-
- void init_device(void) begin end
-
- void update(void) begin end
-
- void ende_device(void) begin end
-
-
- void setyx(zeile,spalte)
- int zeile, spalte;
-
- begin
- char out[9], ziffern[3];
- int laenge;
-
- out[0] = (char)27; out[1] = '[';
- itoa(++zeile,&out[2]);
- if (zeile > 9) begin
- out[4] = ';';
- itoa(++spalte,&out[5]);
- if (spalte > 9) out[7] = 'f';
- else out[6] = 'f';
- end
- else begin
- out[3] = ';';
- itoa(++spalte,&out[4]);
- if (spalte > 9) out[6] = 'f';
- else out[5] = 'f';
- end;
- laenge = 6;
- if (spalte > 9) laenge++;
- if (zeile > 9) laenge++;
- out[laenge] = '\0';
- my_putstr(out,laenge);
- end;
-
-
- void etoeoln(void)
-
- begin
- char out[3];
-
- out[0] = (char)27; out[1] = '['; out[2] = 'K';
- my_putstr(out,3);
- end
-
-
- void etoeos(void)
-
- begin
- /* Unter ANSI nur umstaendlich zu realisieren */
- end
-
-
-
- void cls(void)
-
- begin
- char out[4];
-
- out[0] = (char)27; out[1] = '['; out[2] = '2'; out[3] = 'J';
- my_putstr(out,4);
- end
-
-
- void inverse(void)
-
- begin
- char out[4];
-
- out[0] = (char)27; out[1] = '['; out[2] = '7'; out[3] = 'm';
- my_putstr(out,4);
- end
-
-
- void normal(void)
-
- begin
- char out[4];
-
- out[0] = (char)27; out[1] = '['; out[2] = '0'; out[3] = 'm';
- my_putstr(out,4);
- end
-
-
- #endif
- /***** ENDE ANSI ************************************************************/
-
-
- /****************************************************************************/
- /* Vereinbarung fuer ein VT52 - Terminal */
- /****************************************************************************/
- #ifdef VT52
-
- void disp_open(void) begin end
-
- void update(void) begin end
-
- void ende_device(void) begin end
-
- void init_device(void) begin end
-
-
- void setyx(zeile,spalte)
- int zeile, spalte;
-
- begin
- char out[4];
-
- out[0] = (char)27; out[1] = 'Y'; out[2] = (char)(zeile+32);
- out[3] = (char)(spalte+32);
- my_putstr(out,4);
- end;
-
-
- void etoeoln(void)
-
- begin
- char out[2];
-
- out[0] = (char)27; out[1] = 'K';
- my_putstr(out,2);
- end
-
-
- void cls(void)
-
- begin
- char out[4];
-
- out[0] = (char)27; out[1] = 'E'; out[2] = (char)27; out[3] = 'H';
- my_putstr(out,4);
- end
-
-
- void inverse(void)
-
- begin
- char out[2];
-
- out[0] = (char)27; out[1] = 'p';
- my_putstr(out,2);
- end
-
-
- void normal(void)
-
- begin
- char out[2];
-
- out[0] = (char)27; out[1] = 'q';
- my_putstr(out,2);
- end
-
-
- #endif
- /***** ENDE VT52 ************************************************************/
-
-
- #ifndef ZORLAND
- /* Dann wird diese Funktion zum Output von Steuerzeichen benoetigt */
- void my_putstr(StrP,Nr)
- char *StrP;
- int Nr;
-
- begin
- int Res;
-
- Res = fwrite(StrP,sizeof(char),Nr,stdout); /* Ungepufferter System-I/O */
- if (Res != Nr) begin /* Fehler melden */
- printf("\n ^^^^^^ INTERNER FEHLER IN my_putstr !!!! ^^^^^^^");
- printf("\n"); wait_key();
- end
- end
-
- #endif
-
-
-
- /* Diese Funktionen koennen leider nicht so leicht wie die I/O-Funktionen */
- /* verallgemeinert werden. Erlaeuterungen und Hilfestellungen siehe */
- /* Begleitartikel. */
-
- int subprozess(mode,pathname,argument_vektor)
- int mode;
- char *pathname;
- char **argument_vektor;
-
- begin
- return(spawnv(mode,pathname,argument_vektor))
- end
-
-
- call_system(zeile)
- char *zeile;
- begin
- system(zeile)
- end
-
-
- /****************************************************************************/
- /***** ENDE Includedatei MC.H ***********************************************/
- /****************************************************************************/