From f805ed043a155703e1fadcf68b83802b1c2ad010 Mon Sep 17 00:00:00 2001 From: Maurilio Longo Date: Thu, 30 Mar 2000 21:10:20 +0000 Subject: [PATCH] 20000330-23:10 GMT+1 Maurilio Longo --- harbour/ChangeLog | 21 ++++++++++++++------- harbour/include/hbvmpub.h | 7 +++++++ harbour/source/rtl/gtos2/gtos2.c | 30 +++++++++++++++++++++++++++--- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index a62e59a78b..806337925c 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,10 @@ +20000330-23:04 GMT+1 Maurilio Longo + + * include/hbvmpub.h + ! with OS/2 GCC pragma pack(8) is not valid + * source/rtl/gtos2/gtos2.c + * with OS/2 GCC kbhit() is not available (it's a ToolKit function) + 20000330-12:15 EST Paul Tucker * source/rtl/dates.c * account for possible overflow in calculation @@ -149,7 +156,7 @@ 20000327-21:35 GMT+1 Victor Szakats ! Trash in harbour CVS root directory removed by SourceForge staff. - ! File permission error corrected for CONTRIB/RDD_ADS/ dir + ! File permission error corrected for CONTRIB/RDD_ADS/ dir by SourceForge staff. * utils/hbextern/hbextern.prg @@ -193,7 +200,7 @@ + The JAVA runner contribution has been added to a new directory along with all the support files needed to make it work. Thanks to Matteo Baccan for this contribution. - ; !! WARNING !! I could not test this since I don't have the java + ; !! WARNING !! I could not test this since I don't have the java tools needed. * makefile.vc @@ -241,17 +248,17 @@ * include/clipdefs.h * Now the HARBOUR keyword requires the function name to be in uppercase. The compatibility CLIPPER keyword still allows for mixed case function - names on some platforms. The reason is that "pascal" keyword is + names on some platforms. The reason is that "pascal" keyword is non-portable, and the above requirement was already there for some platforms, now it's a generic rule. - Removed the __attribute__ ((stdcall)) for the __GNUC__ branch. Setting - any specific calling convention is not needed, since we don't need to - deal with compatibility with precompiled legacy libs, there's no + any specific calling convention is not needed, since we don't need to + deal with compatibility with precompiled legacy libs, there's no such thing, CA-Cl*pper never supported GNU C. ; Now the HARBOUR macro is quite simple, it's plain "void". * source/pp/ppcore.c - + Added predefined macro __HB_MAIN__. The macro is undefined or holds the + + Added predefined macro __HB_MAIN__. The macro is undefined or holds the value of HARBOUR_START_PROCEDURE depending on the compiler. Use this code to make your Harbour startup procedure platform/compiler independent: @@ -331,7 +338,7 @@ + bin/bld.* + GNU-make starters renamed to better show their purpose. + GNU-make starters modified to work like bld_gnu.*, so that they don't - need to be modified, instead they expect the HB_ envvars to be set. Now + need to be modified, instead they expect the HB_ envvars to be set. Now they also throw a help screen when something is not set. + BLD.SH bash script added to build Harbour executables. + Other small improvements. diff --git a/harbour/include/hbvmpub.h b/harbour/include/hbvmpub.h index 09cba1849b..18317e0fa8 100644 --- a/harbour/include/hbvmpub.h +++ b/harbour/include/hbvmpub.h @@ -44,9 +44,16 @@ extern "C" { struct _HB_DYNS; +/* 30/03/2000 - maurilio.longo@libero.it + OS/2 GCC valid values for pragma pack are 1, 2, 4 with 4 being default +*/ +#if !defined(HARBOUR_GCC_OS2) + /* symbol support structure */ #pragma pack(8) +#endif + typedef struct { char * szName; /* the name of the symbol */ diff --git a/harbour/source/rtl/gtos2/gtos2.c b/harbour/source/rtl/gtos2/gtos2.c index d9ccd6a804..852e7f94f0 100644 --- a/harbour/source/rtl/gtos2/gtos2.c +++ b/harbour/source/rtl/gtos2/gtos2.c @@ -58,9 +58,13 @@ #define INCL_DOSPROCESS #define INCL_NOPMAPI -#include -#include +/* 25/03/2000 - maurilio.longo@libero.it + OS/2 GCC hasn't got ToolKit headers available */ +#if defined(HARBOUR_GCC_OS2) +#include +#else #include +#endif #include #include "hbapigt.h" @@ -105,12 +109,30 @@ BOOL hb_gt_AdjustPos( BYTE * pStr, ULONG ulLen ) return TRUE; } + int hb_gt_ReadKey( HB_inkey_enum eventmask ) { int ch; HB_TRACE(HB_TR_DEBUG, ("hb_gt_ReadKey(%d)", (int) event_mask)); +#if defined(HARBOUR_GCC_OS2) + /* 25/03/2000 - maurilio.longo@libero.it + kbhit() isn't available when using emx/gcc under OS/2, + there is _read_kbd(), instead, which can be used to fetch characters from + keyboard buffer. + */ + ch = _read_kbd(0, 0, 0); /* readkey without echoing, waiting or breaking */ + if(ch == 0) { + ch = _read_kbd(0, 0, 0); + if(ch != EOF) { + ch += 256; + } + } + + /* TODO: Use KBDxxx subsystem to fetch keys */ +#else + if( kbhit() ) { /* A key code is available in the BIOS keyboard buffer, so read it */ @@ -133,12 +155,13 @@ int hb_gt_ReadKey( HB_inkey_enum eventmask ) } else ch = 0; +#endif /* Perform key translations */ switch( ch ) { case -1: /* No key available */ - return; + return 0; case 328: /* Up arrow */ ch = K_UP; break; @@ -247,6 +270,7 @@ int hb_gt_ReadKey( HB_inkey_enum eventmask ) return ch; } + BOOL hb_gt_IsColor( void ) { /* Chen Kedem */