home *** CD-ROM | disk | FTP | other *** search
-
- /* Copyright (c) 1985, 88 by Borland International, Inc.
-
- Dieses Modul demonstriert die Möglichkeiten zur Aufnahme von C-Funktionen
- in ein Turbo Pascal-Programm; die hier definierten Funktionen rufen
- ihrerseits Pascal-Routinen (in CPASDEMO.PAS) auf.
-
- Hinweise zur Compilierung von CPASDEMO.C und CPASDEMO.PAS finden Sie
- im einleitenden Text von CPASDEMO.PAS.
-
- HINWEIS: Die Konfigurationsdatei TURBOC.CFG bzw. CTOPAS.TC setzt
- unter anderem O/C/Calling convention...Pascal und sorgt so für die
- "richtige" Reihenfolge bei Aufrufen mit mehr als einem Parameter
- und die Freigabe des Stacks innerhalb der C-Funktion.
-
- Die einzelnen Schalter in TURBOC.CFG bedeuten (vgl. Band II, Anhang C):
- -c Compilierung als OBJ-Datei (entfällt für TC.EXE)
- -p O/C/C/Calling convention... Pascal
- -r- O/C/O/Register optimization...OFF
- -u- keine Unterstriche für extern-Variablen
- -zCCODE Code-Segment... CODE
- -zRCONST O/C/Names/... Daten-Segment... CONST
- -zDDATA BSS-Segment... DATA
- -zP, -zA, -zS,
- -zT, -zG, -zB Klassen- und Gruppennamen: keine
- */
-
- typedef unsigned int word;
- typedef unsigned char byte;
- typedef unsigned long longword;
-
- extern void setcolor(byte newcolor); /* in CPASDEMO.PAS deklariert */
- extern word factor; /* eine globale Variable des Pascal-Programms */
-
- word sqr(int i)
- {
- setcolor(1);
- return(i * i);
- }
-
- word hibits(word w)
- {
- setcolor(2);
- return(w >> 8);
- }
-
- byte suc(byte b) /* "Succ" */
- {
- setcolor(3);
- return(++b);
- }
-
- byte upr(byte c)
- {
- setcolor(4);
- return((c >= 'a') && (c <= 'z') ? c - 32 : c); /* ein Aufruf von
- upper oder toupper ist
- hier nicht möglich! */
- }
-
- char prd(char s) /* "Pred" */
- {
- setcolor(5);
- return(--s);
- }
-
- long lobits(long l)
- {
- setcolor(6);
- return((longword)l & 65535);
- }
-
- void strupr(char far *s)
- {
- int counter;
-
- for (counter = 1; counter <= s[0]; counter++) /* s[0] ist das Längen- */
- s[counter] = upr(s[counter]); /* byte des Strings */
- setcolor(7);
- }
-
- byte boolnot(byte b)
- {
- setcolor(8);
- return(b == 0 ? 1 : 0);
- }
-
- word multbyfactor(word w)
- {
- setcolor(9);
- /* die Pascal-Variable factor ist */
- /* als extern deklariert */
- return(w * factor);
- }
-
-
- /* keine main-Funktion! */