home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
turbo5
/
cpasdemo.c
< prev
next >
Wrap
Text File
|
1988-10-09
|
2KB
|
97 lines
/* 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! */