Files
lba1-classic/LIB386/LIB_SYS/ADELINE.C
Gwen Gourevich c5f4f6ba25 Initial commit
2021-10-27 10:34:18 +02:00

333 lines
6.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <stdlib.h>
#include <string.h>
#include <process.h>
#include "f:\projet\lib386\lib_sys\adeline.h"
#include "f:\projet\lib386\lib_sys\lib_sys.h"
#include "f:\projet\lib386\lib_midi\lib_midi.h"
#include "f:\projet\lib386\lib_samp\lib_wave.h"
#include "f:\projet\lib386\lib_mix\lib_mix.h"
#include "f:\projet\lib386\lib_svga\lib_svga.h"
char Driver[_MAX_PATH] ;
// timer proc for ail_lib
HTIMER HandleTimer ;
void NewProc08() ; // dans timer.asm
extern UBYTE VESA_Error ;
char PathConfigFile[_MAX_PATH] ;
char *Adeline="ADELINE" ;
char MidiFM = 1 ;
/*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*
Ûßßßß ÛßßßÛ ÛÛÜ Û Ûßßßß Û Ûßßßß
ÛÛ ÛÛ Û ÛÛßÛÛ ÛÛßß ÛÛ ÛÛ ßÛ
ßßßßß ßßßßß ßß ß ßß ßß ßßßßß
*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*/
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*/
WORD GiveIndexTab( UBYTE **tab, UBYTE *identificateur )
{
UBYTE **ptr ;
WORD i = 0 ;
while( *tab[0] != 0 )
{
if( !stricmp( *tab, identificateur ) )
{
return i ;
}
tab++ ;
i++ ;
}
return -1 ;
}
/*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*/
void InitAdelineSystem( char *name, LONG inits )
{
char **ptridentifier ;
LONG *ptrvar ;
char *ptr, *midiptr=NULL ;
char *defname ;
char *rien="" ;
printf( "\nCopyright (c) Adeline Software International 1994, All Rights Reserved.\n\n" );
*PathConfigFile = 0 ;
if (!inits) return ;
if (inits & INIT_VESA)
inits |= INIT_SVGA ;
defname = getenv(Adeline) ;
if ((inits & ~(INIT_MCGA | INIT_VESA | INIT_SVGA)) OR (inits == INIT_SVGA))
{
if(!*name)
{
printf("Error: Empty configuration filename. Go kill the programmer! (Tell him to talk to Serge as well...)\n\n");
exit(1);
}
if(!FileSize( defname ))
{
if (defname)
{
printf( "Warning: Cannot find configuration file %s as defined in the environment.\n", defname) ;
printf( " Using local configuration file %s.\n\n", name ) ;
}
if(!FileSize( name ))
{
printf( "Error: Cannot find configuration file %s.\n\n", name ) ;
exit( 1 ) ;
}
}
else
name = defname ;
printf("Please wait, loading drivers using %s...\n\n", name );
}
else
{
if(FileSize( defname ))
name = defname ;
}
strcpy(PathConfigFile, name);
//úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
// midi device
if(inits & INIT_MIDI)
{
printf("Initialising Midi device. Please wait...\n\n");
midiptr = Def_ReadString( name, "MidiExec" ) ;
if( midiptr )
if ((*midiptr!=0) AND stricmp(midiptr, "NoExec"))
{
spawnl(P_WAIT, midiptr, midiptr, NULL);
printf("\n");
}
ptr = Def_ReadString( name, "MidiDriver" ) ;
if( !ptr )
{
printf( "Warning %s: 'MidiDriver' missing\n", name ) ;
ptr = rien ;
}
if (stricmp(ptr, "NoMidi"))
strcpy( Driver, ptr ) ;
else
Driver[0]=0 ;
if( Driver[0] != 0 ) /* si driver midi */
{
if( !InitMidiDLL( Driver ) ) exit( 1 ) ;
AskMidiVars( &ptridentifier, &ptrvar ) ;
while( **ptridentifier )
{
if (!Def_ReadValue2( name, *ptridentifier, ptrvar++ ))
{
printf( "Error %s: '%s' missing\n", name, *ptridentifier ) ;
exit( 1 ) ;
}
ptridentifier++ ;
}
if( !InitMidi() ) exit( 1 ) ;
}
ptr = Def_ReadString( name, "MidiType" ) ;
if( !ptr )
{
printf( "Warning %s: 'MidiType' missing\n", name ) ;
ptr = rien ;
}
if (*ptr) MidiFM = !stricmp(ptr, "FM") ;
}
//úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
// svga device
if(inits & INIT_SVGA)
{
printf("Initialising SVGA device. Please wait...\n\n");
if(!(inits & INIT_VESA))
{
ptr = Def_ReadString( name, "SvgaDriver" ) ;
if( !ptr )
{
printf( "Warning %s: 'SvgaDriver' missing\n", name ) ;
ptr = rien ;
}
if ((stricmp( ptr, "VESA" )) AND (*ptr) )
{
strcpy( Driver, ptr ) ;
if( !SvgaInitDLL( Driver ) ) exit( 1 ) ;
}
else
printf( "Built-in VESA Super VGA Driver\n\n" ) ;
}
}
else if (inits & INIT_MCGA)
printf( "Built-in MCGA Driver\n\n" ) ;
//úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
// mixer device
if(inits & INIT_MIXER)
{
printf("Initialising Mixer device. Please wait...\n\n");
ptr = Def_ReadString( name, "MixerDriver" ) ;
if( !ptr )
{
printf( "Warning %s: 'MixerDriver' missing\n", name ) ;
ptr = rien ;
}
if (stricmp(ptr, "NoMixer"))
strcpy( Driver, ptr ) ;
else
Driver[0]=0 ;
if( Driver[0] != 0 ) /* si driver wave */
{
if( !MixerInitDLL( Driver ) ) exit( 1 ) ;
MixerAskVars( &ptridentifier, &ptrvar ) ;
while( **ptridentifier )
{
if (!Def_ReadValue2( name, *ptridentifier, ptrvar++ ))
{
printf( "Error %s: '%s' missing\n", name, *ptridentifier ) ;
exit( 1 ) ;
}
ptridentifier++;
}
}
}
//úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
// wave device
if(inits & INIT_WAVE)
{
printf("Initialising Wave device. Please wait...\n\n");
ptr = Def_ReadString( name, "WaveExec" ) ;
if( ptr )
if ((*ptr!=0) AND stricmp(ptr, "NoExec") AND stricmp(ptr, midiptr))
{
spawnl(P_WAIT, ptr, ptr, NULL);
printf("\n");
}
ptr = Def_ReadString( name, "WaveDriver" ) ;
if( !ptr )
{
printf( "Warning %s: 'WaveDriver' missing\n", name ) ;
ptr = rien ;
}
if (stricmp(ptr, "NoWave"))
strcpy( Driver, ptr ) ;
else
Driver[0]=0 ;
if( Driver[0] != 0 ) /* si driver wave */
{
if( !WaveInitDLL( Driver ) ) exit( 1 ) ;
WaveAskVars( &ptridentifier, &ptrvar ) ;
while( **ptridentifier )
{
if (!Def_ReadValue2( name, *ptridentifier, ptrvar++ ))
{
printf( "Error %s: '%s' missing\n", name, *ptridentifier ) ;
exit( 1 ) ;
}
ptridentifier++;
}
if( !InitWave() ) exit( 1 ) ;
}
}
//úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
// system etc
InitSystem() ;
if (inits & INIT_SVGA)
InitGraphSvga() ;
else if (inits & INIT_MCGA)
InitGraphMcga() ;
if (VESA_Error)
{
printf( "Error: SVGA card BIOS does not support VESA extensions.\n") ;
printf( " Please refer to your SVGA card documentation for installing VESA driver.\n") ;
exit( 1 ) ;
}
InitKeyboard() ;
//úúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúú
// init Timer (TimerRef et NbF) selon midi installe ou non
if( Midi_Driver_Enable )
{
HandleTimer = AIL_register_timer( NewProc08 ) ;
AIL_set_timer_frequency( HandleTimer, 50 ) ;
AIL_start_timer( HandleTimer ) ;
}
else
{
InitTimer() ;
}
// InitSample() ;
}
/*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*/
void ClearAdelineSystem()
{
// ClearSample() ;
if( !Midi_Driver_Enable ) ClearTimer() ;
ClearKeyboard() ;
ClearGraphSvga() ;
ClearSystem() ;
ClearWave();
ClearMidi();
}
/*ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ*/