summaryrefslogtreecommitdiff
path: root/board/MAI/bios_emulator/scitech/src/common/gabeos.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/MAI/bios_emulator/scitech/src/common/gabeos.c')
-rw-r--r--board/MAI/bios_emulator/scitech/src/common/gabeos.c146
1 files changed, 146 insertions, 0 deletions
diff --git a/board/MAI/bios_emulator/scitech/src/common/gabeos.c b/board/MAI/bios_emulator/scitech/src/common/gabeos.c
new file mode 100644
index 0000000000..1d8a543216
--- /dev/null
+++ b/board/MAI/bios_emulator/scitech/src/common/gabeos.c
@@ -0,0 +1,146 @@
+/****************************************************************************
+*
+* SciTech Nucleus Graphics Architecture
+*
+* Copyright (C) 1991-1998 SciTech Software, Inc.
+* All rights reserved.
+*
+* ======================================================================
+* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|
+* | |
+* |This copyrighted computer code contains proprietary technology |
+* |owned by SciTech Software, Inc., located at 505 Wall Street, |
+* |Chico, CA 95928 USA (http://www.scitechsoft.com). |
+* | |
+* |The contents of this file are subject to the SciTech Nucleus |
+* |License; you may *not* use this file or related software except in |
+* |compliance with the License. You may obtain a copy of the License |
+* |at http://www.scitechsoft.com/nucleus-license.txt |
+* | |
+* |Software distributed under the License is distributed on an |
+* |"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or |
+* |implied. See the License for the specific language governing |
+* |rights and limitations under the License. |
+* | |
+* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|
+* ======================================================================
+*
+* Language: ANSI C
+* Environment: Linux
+*
+* Description: OS specific Nucleus Graphics Architecture services for
+* the Linux operating system.
+*
+****************************************************************************/
+
+#include "nucleus/graphics.h"
+#include <sys/time.h>
+
+static ibool haveRDTSC;
+
+/*-------------------------- Implementation -------------------------------*/
+
+/****************************************************************************
+PARAMETERS:
+path - Local path to the Nucleus driver files.
+
+REMARKS:
+This function is used by the application program to override the location
+of the Nucleus driver files that are loaded. Normally the loader code
+will look in the system Nucleus directories first, then in the 'drivers'
+directory relative to the current working directory, and finally relative
+to the MGL_ROOT environment variable.
+****************************************************************************/
+void NAPI GA_setLocalPath(
+ const char *path)
+{
+ PM_setLocalBPDPath(path);
+}
+
+/****************************************************************************
+RETURNS:
+Pointer to the system wide PM library imports, or the internal version if none
+
+REMARKS:
+In order to support deploying new Nucleus drivers that may require updated
+PM library functions, we check here to see if there is a system wide version
+of the PM functions available. If so we return those functions for use with
+the system wide Nucleus drivers, otherwise the compiled in version of the PM
+library is used with the application local version of Nucleus.
+****************************************************************************/
+PM_imports * NAPI GA_getSystemPMImports(void)
+{
+ // TODO: We may very well want to provide a system shared library
+ // that eports the PM functions required by the Nucleus library
+ // for BeOS here. That will eliminate fatal errors loading new
+ // drivers on BeOS!
+ return &_PM_imports;
+}
+
+/****************************************************************************
+REMARKS:
+Nothing special for this OS.
+****************************************************************************/
+ibool NAPI GA_getSharedExports(
+ GA_exports *gaExp,
+ ibool shared)
+{
+ (void)gaExp;
+ (void)shared;
+ return false;
+}
+
+#ifndef TEST_HARNESS
+/****************************************************************************
+REMARKS:
+Nothing special for this OS
+****************************************************************************/
+ibool NAPI GA_queryFunctions(
+ GA_devCtx *dc,
+ N_uint32 id,
+ void _FAR_ *funcs)
+{
+ return __GA_exports.GA_queryFunctions(dc,id,funcs);
+}
+
+/****************************************************************************
+REMARKS:
+Nothing special for this OS
+****************************************************************************/
+ibool NAPI REF2D_queryFunctions(
+ REF2D_driver *ref2d,
+ N_uint32 id,
+ void _FAR_ *funcs)
+{
+ return __GA_exports.REF2D_queryFunctions(ref2d,id,funcs);
+}
+#endif
+
+/****************************************************************************
+REMARKS:
+This function initialises the high precision timing functions for the
+Nucleus loader library.
+****************************************************************************/
+ibool NAPI GA_TimerInit(void)
+{
+ if (_GA_haveCPUID() && (_GA_getCPUIDFeatures() & CPU_HaveRDTSC) != 0)
+ haveRDTSC = true;
+ return true;
+}
+
+/****************************************************************************
+REMARKS:
+This function reads the high resolution timer.
+****************************************************************************/
+void NAPI GA_TimerRead(
+ GA_largeInteger *value)
+{
+ if (haveRDTSC)
+ _GA_readTimeStamp(value);
+ else {
+ struct timeval t;
+ gettimeofday(&t, NULL);
+ value->low = t.tv_sec*1000000 + t.tv_usec;
+ value->high = 0;
+ }
+}