In an attempt to produce a working "make bgitest" for bcc, I tried to link the BGI test programs against Borland graphics.lib, but failed. Albeit similar, Borland and GRX implementations of BGI are different, so I decided to port GRX BGI to Borland C. What's in the patch below: - all header and source files include libbcc.h and not graphics.h - modename uses long color values - GRX for BCC includes the GRX BGI modules - fontplay "requires DJGPP/GRX", removed from test\bgi\makefile.bcc - getch(), getkey() and kbhit() from test\bgi\* synced with test\keys - some compatibility fixes Compiled and tested with Borland C/C++ 5.01 - some of the static inline functions generate harmless warnings - test\bgi\tellipse displays something... well, for sure not ellipse - test\bgi\colortst displays black screen for some modes - all other bgi tests work properly More work is probably required, but this is still better (IMHO) than having non-working/incompatible BGI for BCC, right? And GRX BGI can not be ported to work on top of Borland BGI, they are too different. diff -Nru3 grx245p3/include/bgiext.h grx/include/bgiext.h --- grx245p3/include/bgiext.h Fri Jan 12 03:36:56 2001 +++ grx/include/bgiext.h Mon Jun 24 13:56:12 2002 @@ -24,12 +24,7 @@ #ifndef __BGIEXT_H #define __BGIEXT_H -#ifdef __TURBOC__ -# include <graphics.h> -#endif -#ifdef __GNUC__ -# include <libbcc.h> -#endif +#include <libbcc.h> #ifdef __cplusplus extern "C" { diff -Nru3 grx245p3/src/bgi/modename.c grx/src/bgi/modename.c --- grx245p3/src/bgi/modename.c Fri Jan 12 19:36:44 2001 +++ grx/src/bgi/modename.c Mon Jun 24 13:48:24 2002 @@ -47,9 +47,9 @@ if (!__gr_getmode_whc(mode_number, &xw, &yw, &nc)) return NULL; switch (nc) { - case 1<<15 : strcpy(cols,"32K"); break; - case 1<<16 : strcpy(cols,"64K"); break; - case 1<<24 : strcpy(cols,"16M"); break; + case 1L<<15 : strcpy(cols,"32K"); break; + case 1L<<16 : strcpy(cols,"64K"); break; + case 1L<<24 : strcpy(cols,"16M"); break; default : sprintf(cols, "%ld", nc); break; } diff -Nru3 grx245p3/src/bgi/text.h grx/src/bgi/text.h --- grx245p3/src/bgi/text.h Sun Dec 23 03:15:42 2001 +++ grx/src/bgi/text.h Mon Jun 24 13:41:40 2002 @@ -33,7 +33,7 @@ typedef signed char schar; typedef unsigned short _ushort; -#if defined(_MSC_VER) && defined(_WIN32) +#if defined(__TURBOC__) || (defined(_MSC_VER) && defined(_WIN32)) #include <io.h> #else #include <unistd.h> diff -Nru3 grx245p3/src/makefile.bcc grx/src/makefile.bcc --- grx245p3/src/makefile.bcc Sun Jun 16 02:04:16 2002 +++ grx/src/makefile.bcc Mon Jun 24 13:46:32 2002 @@ -28,10 +28,12 @@ GRX20STa= ..\lib\$(GRX_LIB_SUBDIR)\temp1.lib GRX20STb= ..\lib\$(GRX_LIB_SUBDIR)\temp2.lib GRX20STc= ..\lib\$(GRX_LIB_SUBDIR)\temp3.lib +GRX20STd= ..\lib\$(GRX_LIB_SUBDIR)\temp4.lib +GRX20STe= ..\lib\$(GRX_LIB_SUBDIR)\temp5.lib TEMP_LIB= ..\lib\$(GRX_LIB_SUBDIR)\temp?.lib INCDIR= -I. -I./include -I../include -I$(BCCROOT)/include\ - -I./vdrivers + -I./vdrivers -I./bgi LIBDIR= -L$(BCCROOT)/lib OP=+ @@ -83,7 +85,9 @@ LOBJ1=$(STD_1:/=\) $(STD_2:/=\) $(STD_3:/=\) $(STD_4:/=\) LOBJ2=$(STD_5:/=\) $(STD_6:/=\) $(STD_7:/=\) $(STD_8:/=\) LOBJ3=$(STD_9:/=\) $(STD_10:/=\) -LOBJ4=$(STD_11:/=\) $(BCCOBJ) $(DBG_O) +LOBJ4=$(BGI_1:/=\) $(BGI_2:/=\) $(BGI_3:/=\) +LOBJ5=$(BGI_4:/=\) $(BGI_5:/=\) $(BGI_6:/=\) +LOBJ6=$(STD_11:/=\) $(BCCOBJ) $(DBG_O) UTILP = \ ..\bin\vesaif16.exe \ @@ -126,13 +130,15 @@ if exist $(GRX20ST) del $(GRX20ST) # the & tells TLIB to continue on next line -$(GRX20ST): $(GRX20STa) $(GRX20STb) $(GRX20STc) $(LOBJ4:+=) +$(GRX20ST): $(GRX20STa) $(GRX20STb) $(GRX20STc) $(GRX20STd) $(GRX20STe) $(LOBJ6:+=) if exist $(GRX20ST) del $(GRX20ST) $(TLIB) $(LIBPAGE) /C $(GRX20ST) @&&! +$(GRX20STa) & +$(GRX20STb) & +$(GRX20STc) & - $(LOBJ4) + +$(GRX20STd) & + +$(GRX20STe) & + $(LOBJ6) ! $(GRX20STa): $(LOBJ1:+=) @@ -151,6 +157,18 @@ if exist $(GRX20STc) del $(GRX20STc) $(TLIB) $(LIBPAGE) /C $(GRX20STc) @&&! $(LOBJ3) +! + +$(GRX20STd): $(LOBJ4:+=) + if exist $(GRX20STd) del $(GRX20STd) + $(TLIB) $(LIBPAGE) /C $(GRX20STd) @&&! + $(LOBJ4) +! + +$(GRX20STe): $(LOBJ5:+=) + if exist $(GRX20STe) del $(GRX20STe) + $(TLIB) $(LIBPAGE) /C $(GRX20STe) @&&! + $(LOBJ5) ! ..\bin\vesaif16.exe: utilprog\vesainfo.c $(GRX20ST) config.bcc diff -Nru3 grx245p3/test/bgi/bccbgi.c grx/test/bgi/bccbgi.c --- grx245p3/test/bgi/bccbgi.c Thu Nov 29 22:59:30 2001 +++ grx/test/bgi/bccbgi.c Mon Jun 24 14:43:12 2002 @@ -12,7 +12,10 @@ #if defined(__MSDOS__) # include <dos.h> -# include <pc.h> +# if defined(__DJGPP__) +# include <conio.h> +# include <pc.h> +# endif #elif defined(__WIN32__) # include "bccw32.h" #else diff -Nru3 grx245p3/test/bgi/bgilink.c grx/test/bgi/bgilink.c --- grx245p3/test/bgi/bgilink.c Thu May 31 13:21:48 2001 +++ grx/test/bgi/bgilink.c Mon Jun 24 14:47:12 2002 @@ -2,6 +2,7 @@ * Copyright (C) 1993-97 by Hartmut Schirmer */ +#include <stdlib.h> /* NULL, exit() */ #include <string.h> #include "libbcc.h" diff -Nru3 grx245p3/test/bgi/colortst.c grx/test/bgi/colortst.c --- grx245p3/test/bgi/colortst.c Sat Mar 10 17:02:20 2001 +++ grx/test/bgi/colortst.c Mon Jun 24 14:43:50 2002 @@ -4,11 +4,8 @@ #include <stdio.h> #include <string.h> -#ifdef __GNUC__ -# include "libbcc.h" -#else -# include <graphics.h> -#endif + +#include "libbcc.h" static void testmode(int mode) { diff -Nru3 grx245p3/test/bgi/makefile.bcc grx/test/bgi/makefile.bcc --- grx245p3/test/bgi/makefile.bcc Tue Jan 16 03:31:16 2001 +++ grx/test/bgi/makefile.bcc Mon Jun 24 14:16:28 2002 @@ -14,7 +14,6 @@ bgilink.exe \ bccbgi.exe \ colortst.exe \ - fontplay.exe \ small.exe \ tellipse.exe \ tfill.exe \ diff -Nru3 grx245p3/test/bgi/small.c grx/test/bgi/small.c --- grx245p3/test/bgi/small.c Sat Mar 10 23:29:20 2001 +++ grx/test/bgi/small.c Mon Jun 24 14:42:12 2002 @@ -1,8 +1,4 @@ -#ifdef __GNUC__ -# include <libbcc.h> -#else -# include <graphics.h> -#endif +#include <libbcc.h> #if defined(__WIN32__) int GRXMain(void) diff -Nru3 grx245p3/test/bgi/tellipse.c grx/test/bgi/tellipse.c --- grx245p3/test/bgi/tellipse.c Thu Nov 29 22:59:30 2001 +++ grx/test/bgi/tellipse.c Mon Jun 24 14:44:40 2002 @@ -2,17 +2,15 @@ #include <stdlib.h> #include <math.h> -#ifdef __GNUC__ -# include <libbcc.h> -# ifdef __MSDOS__ -# include <pc.h> -# else - extern int kbhit(void), getkey(void); -# endif -# define getch() getkey() +#include <libbcc.h> + +#ifdef __DJGPP__ +#include <conio.h> +#include <pc.h> #else -# include <graphics.h> -# include <conio.h> +extern int getch(void); +extern int getkey(void); +extern int kbhit(void); #endif #if defined(__WIN32__) diff -Nru3 grx245p3/test/bgi/tfill.c grx/test/bgi/tfill.c --- grx245p3/test/bgi/tfill.c Thu Nov 29 22:59:30 2001 +++ grx/test/bgi/tfill.c Mon Jun 24 14:45:34 2002 @@ -1,17 +1,15 @@ #include <stdio.h> #include <stdlib.h> -#ifdef __GNUC__ -# include <libbcc.h> -# ifdef __MSDOS__ -# include <pc.h> -# else - extern int kbhit(void); - extern int getkey(void); -# endif -# define getch() getkey() + +#include <libbcc.h> + +#ifdef __DJGPP__ +#include <conio.h> +#include <pc.h> #else -# include <graphics.h> -# include <conio.h> +extern int getch(void); +extern int getkey(void); +extern int kbhit(void); #endif #if defined(__WIN32__) diff -Nru3 grx245p3/test/bgi/tpoly.c grx/test/bgi/tpoly.c --- grx245p3/test/bgi/tpoly.c Thu Nov 29 22:59:30 2001 +++ grx/test/bgi/tpoly.c Mon Jun 24 14:45:18 2002 @@ -1,16 +1,15 @@ #include <stdio.h> #include <stdlib.h> -#ifdef __GNUC__ -# include <libbcc.h> -# ifdef __MSDOS__ -# include <pc.h> -# else - extern int kbhit(void), getkey(void); -# endif -# define getch() getkey() + +#include <libbcc.h> + +#ifdef __DJGPP__ +#include <conio.h> +#include <pc.h> #else -# include <graphics.h> -# include <conio.h> +extern int getch(void); +extern int getkey(void); +extern int kbhit(void); #endif #if defined(__WIN32__) diff -Nru3 grx245p3/test/bgi/ttext.c grx/test/bgi/ttext.c --- grx245p3/test/bgi/ttext.c Thu Nov 29 22:59:30 2001 +++ grx/test/bgi/ttext.c Mon Jun 24 14:46:22 2002 @@ -1,16 +1,15 @@ #include <stdio.h> #include <stdlib.h> -#ifdef __GNUC__ -# include <libbcc.h> -# ifdef __MSDOS__ -# include <pc.h> -# else - extern int khbit(void), getkey(void); -# endif -# define getch() getkey() + +#include <libbcc.h> + +#ifdef __DJGPP__ +#include <conio.h> +#include <pc.h> #else -# include <graphics.h> -# include <conio.h> +extern int getch(void); +extern int getkey(void); +extern int kbhit(void); #endif void play_font(char *name, char *file, int *x, int *y)
participants (2)
-
Dimitar Zhekov -
Mariano Alvarez Fernandez