home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 09 / enviro / mc.h < prev    next >
Encoding:
Text File  |  1980-01-12  |  5.8 KB  |  256 lines

  1. /****************************************************************************/
  2. /*                              MC.H                                        */
  3. /*                                                                          */
  4. /* In dieser Include-Datei finden sich die System- und Compiler-abhaengigen */
  5. /* Funktionen zu dem C-Environmentprogramm MC.C .                           */
  6. /* Beschreibung der implementierten Funktionen im Begleittext.              */
  7. /****************************************************************************/
  8.  
  9.  
  10. /********* FUNCTION PROTOTYPING der Screen-I/O-Functionen ***************/
  11. void init_device(void), ende_device(void), setyx(), etoeos(void);
  12. void etoeoln(void), inverse(void), normal(void), update(void), cls(void);
  13.  
  14. /********* FUNCTION PROTOTYPING der Hilfsfunktionen *********************/
  15. void my_putstr(char *,int);
  16. int subprozess(int,char *,char **), call_system(char *);
  17.  
  18.  
  19. /****************************************************************************/
  20. /* Benutzung der Zorland-eigenen IO-Routinen                                */
  21. /****************************************************************************/
  22. #ifdef ZORLAND
  23.  
  24.   /* Hier werden die schnelleren, illegalen I/O-Routinen eingefuehrt */
  25.   #define printf disp_printf
  26.   #define update disp_flush
  27.   #define etoeos disp_eeop /* Von Cursor bis Ende Schirm loeschen */
  28.   #define etoeoln disp_eeol /* Von Cursor bis Ende Zeile loeschen */
  29.   #define inverse disp_startstand
  30.   #define normal disp_endstand
  31.   #define setyx disp_move
  32.   #define ende_device disp_close
  33.   #define init_device disp_open
  34.  
  35.  
  36. void cls(void) 
  37.  
  38. begin
  39.  
  40.    setyx(0,0);
  41.    etoeos();
  42.    setyx(0,0)
  43. end 
  44.  
  45. #endif
  46. /***** ENDE ZORLAND *********************************************************/
  47.  
  48.  
  49. /****************************************************************************/
  50. /* Vereinbarung fuer ein ANSI - Terminal                                    */
  51. /****************************************************************************/
  52. #ifdef ANSI
  53.  
  54.   void init_device(void) begin end
  55.  
  56.   void update(void) begin end
  57.  
  58.   void ende_device(void) begin end
  59.  
  60.  
  61.   void setyx(zeile,spalte)
  62.   int zeile, spalte;
  63.  
  64.   begin
  65.     char out[9], ziffern[3];
  66.     int laenge;
  67.  
  68.     out[0] = (char)27; out[1] = '['; 
  69.     itoa(++zeile,&out[2]);
  70.     if (zeile > 9) begin
  71.       out[4] = ';';
  72.       itoa(++spalte,&out[5]);
  73.       if (spalte > 9) out[7] = 'f';
  74.          else out[6] = 'f';
  75.     end
  76.     else begin
  77.       out[3] = ';';
  78.       itoa(++spalte,&out[4]);
  79.       if (spalte > 9) out[6] = 'f';
  80.          else out[5] = 'f';
  81.     end;
  82.     laenge = 6;
  83.     if (spalte > 9) laenge++;
  84.     if (zeile  > 9) laenge++;
  85.     out[laenge] = '\0';
  86.     my_putstr(out,laenge);
  87.   end;
  88.  
  89.  
  90.   void etoeoln(void)
  91.  
  92.   begin
  93.     char out[3];
  94.  
  95.     out[0] = (char)27; out[1] = '['; out[2] = 'K';
  96.     my_putstr(out,3);
  97.   end
  98.  
  99.  
  100.   void etoeos(void)
  101.  
  102.   begin
  103.     /* Unter ANSI nur umstaendlich zu realisieren */
  104.   end
  105.  
  106.  
  107.  
  108.   void cls(void)
  109.  
  110.   begin
  111.     char out[4];
  112.  
  113.     out[0] = (char)27; out[1] = '['; out[2] = '2'; out[3] = 'J';
  114.     my_putstr(out,4);
  115.   end
  116.  
  117.  
  118.   void inverse(void)
  119.  
  120.   begin
  121.     char out[4];
  122.  
  123.     out[0] = (char)27; out[1] = '['; out[2] = '7'; out[3] = 'm';
  124.     my_putstr(out,4);
  125.   end
  126.  
  127.  
  128.   void normal(void)
  129.  
  130.   begin
  131.     char out[4];
  132.  
  133.     out[0] = (char)27; out[1] = '['; out[2] = '0'; out[3] = 'm';
  134.     my_putstr(out,4);
  135.   end
  136.  
  137.  
  138. #endif
  139. /***** ENDE ANSI ************************************************************/
  140.  
  141.  
  142. /****************************************************************************/
  143. /* Vereinbarung fuer ein VT52 - Terminal                                    */
  144. /****************************************************************************/
  145. #ifdef VT52
  146.  
  147.   void disp_open(void) begin end
  148.  
  149.   void update(void) begin end
  150.  
  151.   void ende_device(void) begin end
  152.  
  153.   void init_device(void) begin end
  154.  
  155.  
  156.   void setyx(zeile,spalte)
  157.     int zeile, spalte;
  158.   
  159.   begin
  160.     char out[4];
  161.  
  162.     out[0] = (char)27; out[1] = 'Y'; out[2] = (char)(zeile+32);
  163.     out[3] = (char)(spalte+32);
  164.     my_putstr(out,4);
  165.   end;
  166.  
  167.  
  168.   void etoeoln(void)
  169.  
  170.   begin
  171.     char out[2];
  172.  
  173.     out[0] = (char)27; out[1] = 'K'; 
  174.     my_putstr(out,2);
  175.   end
  176.  
  177.  
  178.   void cls(void)
  179.  
  180.   begin
  181.     char out[4];
  182.  
  183.     out[0] = (char)27; out[1] = 'E'; out[2] = (char)27; out[3] = 'H';
  184.     my_putstr(out,4);
  185.   end
  186.  
  187.  
  188.   void inverse(void)
  189.  
  190.   begin
  191.     char out[2];
  192.  
  193.     out[0] = (char)27; out[1] = 'p';
  194.     my_putstr(out,2);
  195.   end
  196.  
  197.  
  198.   void normal(void)
  199.  
  200.   begin
  201.     char out[2];
  202.  
  203.     out[0] = (char)27; out[1] = 'q';
  204.     my_putstr(out,2);
  205.   end
  206.  
  207.  
  208. #endif
  209. /***** ENDE VT52 ************************************************************/
  210.  
  211.  
  212. #ifndef ZORLAND
  213.   /* Dann wird diese Funktion zum Output von Steuerzeichen benoetigt */
  214.   void my_putstr(StrP,Nr)
  215.   char *StrP;
  216.   int Nr;
  217.  
  218.   begin
  219.     int Res;
  220.  
  221.     Res = fwrite(StrP,sizeof(char),Nr,stdout); /* Ungepufferter System-I/O */
  222.     if (Res != Nr) begin /* Fehler melden */
  223.       printf("\n ^^^^^^ INTERNER FEHLER IN my_putstr !!!! ^^^^^^^");
  224.       printf("\n"); wait_key();
  225.     end
  226.   end
  227.  
  228. #endif
  229.  
  230.  
  231.  
  232. /* Diese Funktionen koennen leider nicht so leicht wie die I/O-Funktionen   */
  233. /* verallgemeinert werden. Erlaeuterungen und Hilfestellungen siehe         */
  234. /* Begleitartikel.                                                          */
  235.  
  236. int subprozess(mode,pathname,argument_vektor)
  237.   int mode;
  238.   char *pathname;
  239.   char **argument_vektor;
  240.  
  241. begin
  242.   return(spawnv(mode,pathname,argument_vektor))
  243. end
  244.  
  245.  
  246. call_system(zeile)
  247.   char *zeile;
  248. begin
  249.   system(zeile)
  250. end
  251.  
  252.  
  253. /****************************************************************************/
  254. /***** ENDE Includedatei MC.H ***********************************************/
  255. /****************************************************************************/
  256.