#ifndef MACHINE
   typedef char                CHAR;        /* signed,    8 bits  */
   typedef unsigned char       BYTE;        /* unsigned,  8 bits  */
   typedef signed int          INT;         /* signed,   16 bits  */
   typedef unsigned int        UINT;        /* unsigned, 16 bits  */
   typedef signed short int    INT2;        /* signed,   16 bits  */
   typedef unsigned short int  UINT2;       /* unsigned, 16 bits  */
   typedef unsigned int        WORD;        /* unsigned, 16 bits  */
   typedef long                INT4;        /* signed,   32 bits  */
   typedef unsigned long       UINT4;       /* unsigned, 32 bits  */
   typedef float               REAL4;       /* signed,   32 bits  */
   typedef double              REAL8;       /* unsigned, 64 bits  */

   #define PTR                 far *
   #define VOID                void
   #define SSCTOOLS            <fpclib.h>
   #define MACHINE             1
#endif
#define FPENTRY             pascal far

typedef struct TFindRec   {
                          BYTE    Attr;
                          UINT2   Time;
                          UINT2   Date;
                          UINT4   Size;
                          BYTE    Name[13];
                          } TFindRec;

extern BYTE pascal CheckSnow;
extern BYTE pascal TextAttr;
extern BYTE pascal CErrDevice[10];

extern INT2 pascal VioMode;
extern INT2 pascal VioPage;
extern INT2 pascal VioCols;
extern INT2 pascal VioCursor;
extern INT2 pascal VioBaseSeg;
extern INT2 pascal WindMin;
extern INT2 pascal WindMax;
extern INT2 pascal InsMode;
extern INT2 pascal DosErrNo;
extern INT2 pascal CErrCode;
extern INT2 pascal CErrType;
extern INT2 pascal CErrDrive;
extern INT2 pascal NEvents;
extern INT2 pascal MTextMode;


extern VOID FPENTRY Beep( INT2, INT2 );
extern VOID FPENTRY GetTime( INT2 PTR, INT2 PTR,
                             INT2 PTR, INT2 PTR );

#ifndef IN_GETKEY
extern UINT2 FPENTRY GetKey( VOID );
#endif

extern VOID FPENTRY BiosKbdClr( VOID );
extern VOID FPENTRY BiosKbdRead( VOID PTR );
extern INT2 FPENTRY BiosKbdGetElmt( VOID );
extern INT2 FPENTRY BiosKbdHit( VOID );
extern INT2 FPENTRY BiosKbdStat( VOID );
extern VOID FPENTRY DosKbdClr( VOID );
extern VOID FPENTRY DosKbdRead( VOID PTR );
extern INT2 FPENTRY DosKbdGetElmt( VOID );
extern INT2 FPENTRY DosKbdHit( VOID );
extern CHAR FPENTRY ReadKey( VOID );

extern CHAR FPENTRY MButtonPress( INT2,       INT2 PTR,
                                  INT2 PTR,   INT2 PTR );
extern CHAR FPENTRY MButtonRel( INT2,       INT2 PTR,
                                INT2 PTR,   INT2 PTR );
extern VOID FPENTRY MGetPos( INT2 PTR, INT2 PTR, INT2 PTR );
extern VOID FPENTRY MGetSpeed( INT2 PTR, INT2 PTR );
extern VOID FPENTRY MHideCursor( VOID );
extern VOID FPENTRY MInitEventHandler( INT2 );
extern VOID FPENTRY MPollQue( INT2 PTR, INT2 PTR,
                              INT2 PTR, INT2 PTR );
extern VOID FPENTRY MSetEvent( INT2, INT2, INT2, INT2 );
extern VOID FPENTRY MSetPos( INT2, INT2 );
extern VOID FPENTRY MShowCursor( VOID );
extern VOID FPENTRY MTextCursor( INT2, INT2, INT2 );
extern CHAR FPENTRY MResetMouse( INT2 PTR );
extern VOID FPENTRY MSetSpeed( INT2, INT2 );
extern VOID FPENTRY MSetXRange( INT2, INT2 );
extern VOID FPENTRY MSetYRange( INT2, INT2 );
extern VOID FPENTRY MRetQue( INT2 PTR, INT2 PTR,
                             INT2 PTR, INT2 PTR );

extern INT2 FPENTRY BiosPrtChar( CHAR, INT2 );
extern INT2 FPENTRY BiosPrtInit( INT2 );
extern INT2 FPENTRY BiosPrtStat( INT2 );
extern INT2 FPENTRY DosPrtChar( CHAR );

extern VOID FPENTRY VioInit( VOID );
extern VOID FPENTRY BorderColor( INT2 );
extern VOID FPENTRY ClrWin( INT2, INT2, INT2, INT2, INT2 );
extern VOID FPENTRY ColorMsg( INT2, INT2, INT2, VOID PTR );
extern VOID FPENTRY DspMsg( INT2, INT2, VOID PTR );
extern VOID FPENTRY EditSt( INT2, INT2, INT2, INT2, INT2,
                            INT2, INT2, INT2, INT2,
                            VOID PTR, VOID PTR,
                            INT2  PTR, INT2  PTR, VOID PTR );

extern VOID FPENTRY FillColAttr( INT2, INT2, INT2, INT2 );
extern VOID FPENTRY FillColCell( INT2, INT2, INT2, UINT2 );
extern VOID FPENTRY FillColChar( INT2, INT2, INT2, CHAR );

extern VOID FPENTRY FillFrameAttr( INT2, INT2, INT2, INT2, INT2 );
extern VOID FPENTRY FillFrameCell( INT2, INT2, INT2, INT2, UINT2 );
extern VOID FPENTRY FillFrameChar( INT2, INT2, INT2, INT2, CHAR );

extern VOID FPENTRY FillRowAttr( INT2, INT2, INT2, INT2 );
extern VOID FPENTRY FillRowCell( INT2, INT2, INT2, UINT2 );
extern VOID FPENTRY FillRowChar( INT2, INT2, INT2, CHAR );

extern VOID FPENTRY FrameWin( CHAR, CHAR, CHAR, CHAR, CHAR, CHAR, INT2 );

extern VOID FPENTRY GetFrameAttr( INT2, INT2, INT2, INT2, VOID PTR );
extern VOID FPENTRY GetFrameCell( INT2, INT2, INT2, INT2, VOID PTR );
extern VOID FPENTRY GetFrameChar( INT2, INT2, INT2, INT2, VOID PTR );

extern VOID FPENTRY PutFrameAttr( INT2, INT2, INT2, INT2, VOID PTR );
extern VOID FPENTRY PutFrameCell( INT2, INT2, INT2, INT2, VOID PTR );
extern VOID FPENTRY PutFrameChar( INT2, INT2, INT2, INT2, VOID PTR );

extern VOID FPENTRY GetScrn( INT2, INT2, INT2, VOID PTR );
extern VOID FPENTRY PutScrn( INT2, INT2, INT2, VOID PTR );

extern INT2 FPENTRY GetCursorSize( VOID );
extern VOID FPENTRY SetCursorSize( INT2, INT2 );

extern INT2 FPENTRY RvsAttr( INT2 );
extern VOID FPENTRY WindowFP( INT2, INT2, INT2, INT2 );

extern INT2 FPENTRY GetVideoMode( VOID );
extern INT2 FPENTRY GetVideoCols( VOID );
extern INT2 FPENTRY GetVideoPage( VOID );

extern VOID FPENTRY GetVideoInfo( INT2 PTR, INT2 PTR,
                                 INT2 PTR, INT2 PTR, INT2 PTR );

extern VOID FPENTRY HideCursor( VOID );
extern VOID FPENTRY InitVideo( INT2 );
extern VOID FPENTRY SetVideoPage( INT2 );

extern VOID FPENTRY GotoxyAbs( INT2, INT2 );
extern INT2 FPENTRY WhereXAbs( VOID );
extern INT2 FPENTRY WhereYAbs( VOID );

extern VOID FPENTRY ScrollLeft( INT2, INT2, INT2, INT2, INT2, INT2 );
extern VOID FPENTRY ScrollRight( INT2, INT2, INT2, INT2, INT2, INT2 );
extern VOID FPENTRY ScrollUp( INT2, INT2, INT2, INT2, INT2, INT2 );
extern VOID FPENTRY ScrollDown( INT2, INT2, INT2, INT2, INT2, INT2 );

extern VOID FPENTRY ShowCursor( VOID );
extern VOID FPENTRY WriteSt( VOID PTR );
extern VOID FPENTRY WriteStln( VOID PTR );

extern VOID FPENTRY CloseFile( INT2 );
extern VOID FPENTRY CreateFile( VOID PTR, INT2, INT2 PTR );
extern VOID FPENTRY DosFindFirst( VOID PTR, INT2, VOID PTR );
extern VOID FPENTRY DosFindNext( VOID PTR );
extern INT4 FPENTRY FSeek( INT2, INT2, long );
extern VOID FPENTRY GetDir( INT2, VOID PTR );
extern INT2 FPENTRY GetDrive( VOID );
extern VOID FPENTRY GetDTA( UINT2 PTR, UINT2 PTR );
extern INT2 FPENTRY GetNDrvs( VOID );
extern INT4 FPENTRY GetFileSize( INT2 );
extern VOID FPENTRY OpenFile( CHAR PTR, INT2, INT2 PTR );
extern VOID FPENTRY ReadFile( INT2, INT2, VOID PTR, INT2 PTR );
extern VOID FPENTRY ResetDisk( VOID );
extern VOID FPENTRY ResetErrCodes( VOID );
extern VOID FPENTRY RestInt24( VOID );
extern VOID FPENTRY SetDTA( INT2, INT2 );
extern VOID FPENTRY SetInt24( VOID );
