home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / tc20 / cpasdemo.c < prev    next >
Text File  |  1988-10-10  |  2KB  |  97 lines

  1.  
  2. /* Copyright (c) 1985, 88 by Borland International, Inc.
  3.  
  4.    Dieses Modul demonstriert die Möglichkeiten zur Aufnahme von C-Funktionen
  5.    in ein Turbo Pascal-Programm; die hier definierten Funktionen rufen
  6.    ihrerseits Pascal-Routinen (in CPASDEMO.PAS) auf.
  7.  
  8.    Hinweise zur Compilierung von CPASDEMO.C und CPASDEMO.PAS finden Sie
  9.    im einleitenden Text von CPASDEMO.PAS.
  10.  
  11.    HINWEIS: Die Konfigurationsdatei TURBOC.CFG bzw. CTOPAS.TC setzt
  12.    unter anderem O/C/Calling convention...Pascal und sorgt so für die
  13.    "richtige" Reihenfolge bei Aufrufen mit mehr als einem Parameter
  14.    und die Freigabe des Stacks innerhalb der C-Funktion.
  15.  
  16.    Die einzelnen Schalter in TURBOC.CFG bedeuten (vgl. Band II, Anhang C):
  17.    -c        Compilierung als OBJ-Datei (entfällt für TC.EXE)
  18.    -p        O/C/C/Calling convention... Pascal
  19.    -r-       O/C/O/Register optimization...OFF
  20.    -u-       keine Unterstriche für extern-Variablen
  21.    -zCCODE                   Code-Segment...   CODE
  22.    -zRCONST  O/C/Names/...   Daten-Segment...  CONST
  23.    -zDDATA                   BSS-Segment...    DATA
  24.    -zP, -zA, -zS,
  25.    -zT, -zG, -zB             Klassen- und Gruppennamen: keine
  26. */
  27.  
  28. typedef unsigned int word;
  29. typedef unsigned char byte;
  30. typedef unsigned long longword;
  31.  
  32. extern void setcolor(byte newcolor);  /* in CPASDEMO.PAS deklariert */
  33. extern word factor;    /* eine globale Variable des Pascal-Programms */
  34.  
  35. word sqr(int i)
  36. {
  37.   setcolor(1);
  38.   return(i * i);
  39. }
  40.  
  41. word hibits(word w)
  42. {
  43.   setcolor(2);
  44.   return(w >> 8);
  45. }
  46.  
  47. byte suc(byte b)     /* "Succ" */
  48. {
  49.   setcolor(3);
  50.   return(++b);
  51. }
  52.  
  53. byte upr(byte c)
  54. {
  55.   setcolor(4);
  56.   return((c >= 'a') && (c <= 'z') ? c - 32 : c);  /* ein Aufruf von
  57.                           upper oder toupper ist
  58.                           hier nicht möglich! */
  59. }
  60.  
  61. char prd(char s)    /* "Pred" */
  62. {
  63.   setcolor(5);
  64.   return(--s);
  65. }
  66.  
  67. long lobits(long l)
  68. {
  69.   setcolor(6);
  70.   return((longword)l & 65535);
  71. }
  72.  
  73. void strupr(char far *s)
  74. {
  75.   int counter;
  76.  
  77.   for (counter = 1; counter <= s[0]; counter++)  /* s[0] ist das Längen- */
  78.     s[counter] = upr(s[counter]);                /* byte des Strings */
  79.   setcolor(7);
  80. }
  81.  
  82. byte boolnot(byte b)
  83. {
  84.   setcolor(8);
  85.   return(b == 0 ? 1 : 0);
  86. }
  87.  
  88. word multbyfactor(word w)
  89. {
  90.   setcolor(9);
  91.                /* die Pascal-Variable factor ist */
  92.                /* als extern deklariert */
  93.   return(w * factor);
  94. }
  95.  
  96.  
  97. /* keine main-Funktion! */