Annotation of src/sos.h, revision 1.1.1.1

1.1       root        1: /****************************************************************************
                      2: 
                      3:    File              : sos.h
                      4: 
                      5:    Programmer(s)     : Don Fowler, Nick Skrepetos
                      6:    Date              :
                      7: 
                      8:    Purpose           : Include Files For Zortech C++ Compiler
                      9: 
                     10:    Last Updated      :
                     11: 
                     12: ****************************************************************************
                     13:                           Copyright(c) 1993,1994 Human Machine Interfaces 
                     14:                                                        All Rights Reserved
                     15: ****************************************************************************/
                     16: 
                     17: #ifndef  _SOS_DEFINED   
                     18: #define  _SOS_DEFINED   
                     19: 
                     20: //
                     21: // #include "sosdefs.h"
                     22: //
                     23: /****************************************************************************
                     24: 
                     25:    File              : sosdefs.h
                     26: 
                     27:    Programmer(s)     : Don Fowler, Nick Skrepetos
                     28:    Date              :
                     29: 
                     30:    Purpose           : Include Files For Zortech C++ Compiler
                     31: 
                     32:    Last Updated      :
                     33: 
                     34: ****************************************************************************
                     35:                           Copyright(c) 1993,1994 Human Machine Interfaces 
                     36:                                                        All Rights Reserved
                     37: ****************************************************************************/
                     38: 
                     39: 
                     40: #ifndef  _SOSDEFS_DEFINED
                     41: #define  _SOSDEFS_DEFINED
                     42: 
                     43: #undef   _TRUE
                     44: #undef   _FALSE
                     45: #undef   _NULL
                     46: enum  
                     47:          { 
                     48:                 _FALSE, 
                     49:                 _TRUE 
                     50:          };
                     51: 
                     52: #define  _NULL  0
                     53: 
                     54: #ifndef  VOID
                     55: #define  VOID           void
                     56: #endif
                     57: typedef  int            BOOL;
                     58: typedef  unsigned int   UINT;
                     59: typedef  unsigned char  BYTE;
                     60: typedef  unsigned       WORD;
                     61: #ifndef  LONG
                     62: typedef  signed long    LONG;
                     63: #endif
                     64: typedef  unsigned long  DWORD;
                     65: 
                     66: typedef  BYTE  *        PBYTE;
                     67: typedef  char near *    PSTR;
                     68: typedef  WORD  *        PWORD;
                     69: typedef  LONG  *        PLONG;
                     70: typedef  VOID  *        PVOID;
                     71: 
                     72: typedef  BYTE  far   *  LPBYTE;
                     73: typedef  BYTE  far   *  LPSTR;
                     74: typedef  WORD  far   *  LPWORD;
                     75: typedef  LONG  far   *  LPLONG;
                     76: typedef  VOID  far   *  LPVOID;
                     77: 
                     78: typedef  BYTE  huge  *  HPBYTE;
                     79: typedef  BYTE  huge  *  HPSTR;
                     80: typedef  WORD  huge  *  HPWORD;
                     81: typedef  LONG  huge  *  HPLONG;
                     82: typedef  VOID  huge  *  HPVOID;
                     83: 
                     84: typedef  unsigned       HANDLE;
                     85: 
                     86: #endif
                     87: 
                     88: 
                     89: 
                     90: #pragma pack(4)
                     91:  
                     92: // error definition for sound operating system  
                     93: #define  _SOS_ERR          -1
                     94: 
                     95: // number of drivers allowed to be open at one time
                     96: #define  _SOS_MAX_DRIVERS  5
                     97: 
                     98: // structure definition for the capabilities
                     99: typedef struct _tagCAPABILITIES
                    100: {
                    101:    BYTE  szDeviceName[ 32 ];  // device name
                    102:    WORD  wDeviceVersion;      // device version
                    103:    WORD  wBitsPerSample;      // bits per sound sample
                    104:    WORD  wChannels;           // stereo/mono sound card
                    105:    WORD  wMinRate;            // minimum rate
                    106:    WORD  wMaxRate;            // maximum rate
                    107:    WORD  wMixerOnBoard;       // board contains mixer
                    108:    WORD  wMixerFlags;         // mixer capabilities
                    109:    WORD  wFlags;              // miscellaneous flags   
                    110:    short far * lpPortList;         // list of usable ports
                    111:    short far * lpDMAList;          // list of usable dma channels
                    112:    short far * lpIRQList;          // list of usable irq channels
                    113:    short far * lpRateList;         // list of usable rates, -1 if any in min to max
                    114:    WORD  fBackground;         // foreground or background driver
                    115:    WORD  wDeviceID;           // ID for the device
                    116:    WORD  wTimerID;            // ID for the timer
                    117:    
                    118: } _SOS_CAPABILITIES; 
                    119: 
                    120: // far pointer to the device capabilities structure
                    121: typedef _SOS_CAPABILITIES far *  LPSOSDEVICECAPS;
                    122: 
                    123: // flag types for driver
                    124: #define  _FLAGS_SIGNED              0x8000
                    125:   
                    126: // devices that can be loaded
                    127: #define  _SOUND_BLASTER_8_MONO      0xe000
                    128: #define  _SOUND_BLASTER_8_ST        0xe001
                    129: #define  _SBPRO_8_ST                _SOUND_BLASTER_8_ST
                    130: #define  _SBPRO_8_MONO              0xe00f
                    131: #define  _SOUND_MASTER_II_8_MONO    0xe002
                    132: #define  _MV_PAS_8_MONO             0xe003
                    133: #define  _MV_PAS_16_MONO            0xe004
                    134: #define  _MV_PAS_8_ST               0xe005
                    135: #define  _MV_PAS_16_ST              0xe006
                    136: #define  _ADLIB_GOLD_8_ST           0xe007
                    137: #define  _ADLIB_GOLD_16_ST          0xe008
                    138: #define  _ADLIB_GOLD_8_MONO         0xe009
                    139: #define  _ADLIB_GOLD_16_MONO        0xe00a
                    140: #define  _MICROSOFT_8_MONO          0xe00b
                    141: #define  _MICROSOFT_8_ST            0xe00c
                    142: #define  _MICROSOFT_16_MONO         0xe00d
                    143: #define  _MICROSOFT_16_ST           0xe00e
                    144: #define  _SOUND_SOURCE_8_MONO_PC    0xe010
                    145: #define  _SOUND_SOURCE_8_MONO_TANDY 0xe011
                    146: #define  _GENERAL_PORT_8_MONO       0xe012
                    147: #define  _GENERAL_PORT_8_MONO_R     0xe013
                    148: #define  _SIERRA_8_MONO             0xe014
                    149: #define  _SB16_8_MONO               0xe015
                    150: #define  _SB16_8_ST                 0xe016
                    151: #define  _SB16_16_MONO              0xe017
                    152: #define  _SB16_16_ST                0xe018
                    153: #define  _ESS_AUDIODRIVE_8_MONO     0xe019
                    154: #define  _ESS_AUDIODRIVE_8_ST       0xe01a
                    155: #define  _ESS_AUDIODRIVE_16_MONO    0xe01b
                    156: #define  _ESS_AUDIODRIVE_16_ST      0xe01c
                    157: #define  _SOUNDSCAPE_8_MONO         0xe01d
                    158: #define  _SOUNDSCAPE_8_ST           0xe01e
                    159: #define  _SOUNDSCAPE_16_MONO        0xe01f
                    160: #define  _SOUNDSCAPE_16_ST          0xe020
                    161: #define  _RAP10_8_MONO              0xe021
                    162: #define  _RAP10_16_MONO             0xe022
                    163: #define  _GUS_8_MONO                0xe023
                    164: #define  _GUS_8_ST                  0xe024
                    165: #define  _GUS_16_MONO               0xe025
                    166: #define  _GUS_16_ST                 0xe026
                    167: #define  _GUS_MAX_8_MONO            0xe027
                    168: #define  _GUS_MAX_8_ST              0xe028
                    169: #define  _GUS_MAX_16_MONO           0xe029
                    170: #define  _GUS_MAX_16_ST             0xe02a
                    171: #define  _WAVEJAMMER_8_MONO         0xe02b
                    172: #define  _WAVEJAMMER_8_ST           0xe02c
                    173: #define  _WAVEJAMMER_16_MONO        0xe02d
                    174: #define  _WAVEJAMMER_16_ST          0xe02e
                    175: #define  _TEMPOCS_8_MONO            0xe02f
                    176: #define  _TEMPOCS_8_ST              0xe030
                    177: #define  _TEMPOCS_16_MONO           0xe031
                    178: #define  _TEMPOCS_16_ST             0xe032
                    179: #define  _WAVEJAMMERCD_8_MONO       0xe033
                    180: #define  _WAVEJAMMERCD_8_ST         0xe034
                    181: #define  _WAVEJAMMERCD_16_MONO      0xe035
                    182: #define  _WAVEJAMMERCD_16_ST        0xe036
                    183: #define  _SOUND_BLASTER_8_MONO_R    0xe050
                    184: #define  _MICROSOFT_8_MONO_R        0xe051
                    185: #define  _SOUND_MASTER_II_8_MONO_R  0xe052
                    186: #define  _ADLIB_GOLD_8_MONO_R       0xe053
                    187: #define  _MV_PAS_8_MONO_R           0xe054
                    188: #define  _RAP10_8_MONO_R            0xe058
                    189: #define  _RAP10_16_MONO_R           0xe059
                    190: #define  _SB16_8_MONO_R             0xe05a
                    191: #define  _SB16_8_ST_R               0xe05b
                    192: #define  _SB16_16_MONO_R            0xe05c
                    193: #define  _SB16_16_ST_R              0xe05d
                    194: #define  _MV_PAS_16_MONO_R          0xe060
                    195: #define  _SOUNDSCAPE_8_MONO_R       0xe061
                    196: #define  _SOUNDSCAPE_8_ST_R         0xe062
                    197: #define  _SOUNDSCAPE_16_MONO_R      0xe063
                    198: #define  _SOUNDSCAPE_16_ST_R        0xe064
                    199: #define  _ESS_AUDIODRIVE_8_MONO_R   0xe065
                    200: #define  _ESS_AUDIODRIVE_8_ST_R     0xe066
                    201: #define  _ESS_AUDIODRIVE_16_MONO_R  0xe067
                    202: #define  _ESS_AUDIODRIVE_16_ST_R    0xe068
                    203: #define  _SPEECH_THING_8_MONO       0xe090
                    204: #define  _YAMAHA_8_MONO             0xe106
                    205: #define  _INT_SPEAKER_8_MONO        0xe107
                    206: 
                    207: // call indexes for the loadable drivers
                    208: enum
                    209: { 
                    210:    _DRV_INIT,
                    211:    _DRV_UNINIT,
                    212:    _DRV_SETRATE,
                    213:    _DRV_SETACTION,
                    214:    _DRV_START,
                    215:    _DRV_STOP,
                    216:    _DRV_PAUSE,
                    217:    _DRV_RESUME,
                    218:    _DRV_CAPABILITIES,
                    219:    _DRV_PLAY_FOREGROUND,
                    220:    _DRV_GET_FILL_INFO, 
                    221:    _DRV_GET_CALL_FUNCTIONS,
                    222:    _DRV_SET_CALL_FUNCTIONS
                    223: };
                    224: 
                    225: // fill info
                    226: typedef  struct   _tagFillInfo
                    227:                 {
                    228: 
                    229:                        LPSTR lpFillHandler;                   // pointer to fill handler
                    230:                        LPWORD lpDMAFillCount;                 // pointer to dma count
                    231:                        LPSTR lpSampleList;                    // pointer to sample list
                    232:                        LPWORD lpDMAMasterVolume;              // pointer to dma count
                    233: 
                    234:                 } _SOS_FILL_INFO;
                    235: 
                    236: // caps info structure
                    237: typedef  struct   _tagCapsInfo
                    238:                 {
                    239: 
                    240:                        LPSTR    lpPortList;                   // pointer to port list
                    241:                        LPSTR    lpDMAList;                    // pointer to DMA list
                    242:                        LPSTR    lpIRQList;                    // pointer to IRQ list
                    243:                        LPSTR    lpRateList;                   // pointer to rate list
                    244: 
                    245:                 } _SOS_CAPS_INFO;
                    246: 
                    247: // maximum number of available voice
                    248: #define  _MAX_VOICES    32
                    249: 
                    250: // structure definition
                    251: typedef  struct   _tagSAMPLE
                    252: {
                    253:    LPSTR    samplePtr;                 // pointer to data buffer
                    254:    LPSTR    sampleData;                // pointer to active data
                    255:    LPSTR    sampleLoopPtr;             // pointer for loop back
                    256: 
                    257:    WORD     sampleLength;              // length of sample
                    258:    WORD     sampleIndex;               // index into sample
                    259:    WORD     sampleLoopLength;          // length of loop
                    260:    
                    261:    WORD     sampleBytesLeft;           // bytes left to play in sample
                    262: 
                    263:    WORD     sampleLoopPoint;           // byte count for loop point
                    264:    WORD     sampleLoopEndLength;       // length of remaining chunk
                    265: 
                    266:    short    sampleFlags;               // control sample
                    267:    short    sampleVolume;              // volume control
                    268:    short    sampleID;                  // sample ID
                    269: 
                    270:    short    sampleChannel;             // channel to play sample on
                    271:    short    sampleLoopCount;           // loop count
                    272:    short    sampleLastFill;            // last fill position
                    273:    VOID ( far cdecl * sampleCallback )( WORD, WORD, WORD ); // callback function for sample
                    274: 
                    275:    WORD     samplePitchAdd;
                    276:    short    samplePitchFraction;
                    277: 
                    278:    short    samplePort;                // port to use for non-dma digitized
                    279: 
                    280:    WORD     sampleTotalBytes;
                    281:    WORD     sampleByteLength;
                    282: 
                    283:    short    samplePanLocation;
                    284:    short    samplePanSpeed;
                    285:    short    samplePanDirection;
                    286:    short    samplePanStart;
                    287:    short    samplePanEnd;
                    288:    
                    289:    short    sampleDelayBytes;
                    290:    short    sampleDelayRepeat;
                    291:    
                    292:    WORD     sampleADPCMPredicted;
                    293:    short    sampleADPCMIndex;
                    294: 
                    295:    short    sampleRootNoteMIDI;   
                    296: 
                    297:    WORD  sampleTemp1;   
                    298:    
                    299: } _SOS_SAMPLE;
                    300: 
                    301: // enumeration for left or right channel
                    302: enum
                    303: {
                    304:    _LEFT_CHANNEL,
                    305:    _RIGHT_CHANNEL,
                    306:    _CENTER_CHANNEL,
                    307:    _INTERLEAVED
                    308: };
                    309: 
                    310: // enumeration for foreground and background
                    311: enum
                    312: { 
                    313:    _FOREGROUND,
                    314:    _BACKGROUND 
                    315: };
                    316: 
                    317: // defines for the sample flags
                    318: #define  _ACTIVE           0x8000
                    319: #define  _LOOPING          0x4000
                    320: #define  _FIRST_TIME       0x2000
                    321: #define  _PENDING_RELEASE  0x1000
                    322: #define  _CONTINUE_BLOCK   0x0800
                    323: #define  _PITCH_SHIFT      0x0400
                    324: #define  _PANNING          0x0200
                    325: #define  _VOLUME           0x0100
                    326: #define  _TRANSLATE16TO8   0x0080
                    327: #define  _STAGE_LOOP       0x0040
                    328: #define  _TRANSLATE8TO16   0x0020
                    329: #define  _STEREOTOMONO     0x0010
                    330: 
                    331: // defines for the wParam flags 
                    332: #define  _SINGLE_SAMPLE 0x01
                    333: 
                    334: #define  _SOS_DCAPS_AUTO_REINIT     0x01
                    335: #define  _SOS_DCAPS_MPU_401         0x02
                    336: #define  _SOS_DCAPS_OPL2            0x04
                    337: #define  _SOS_DCAPS_OPL3            0x08
                    338: #define  _SOS_DCAPS_OPL4            0x10
                    339: #define  _SOS_DCAPS_WAVETABLE       0x20
                    340: #define  _SOS_DCAPS_DL_SAMPLES      0x40
                    341: #define  _SOS_DCAPS_FIFO_DEVICE     0x80
                    342: #define  _SOS_DCAPS_ENV_NEEDED      0x100
                    343: #define  _SOS_DCAPS_PSEUDO_DMA1     0x200
                    344: #define  _SOS_DCAPS_SIGNED_DATA     0x8000
                    345: 
                    346: // file header structure
                    347: typedef struct
                    348: {
                    349:    // name ID
                    350:    BYTE  szName[ 32 ];
                    351: 
                    352:    // number of drivers in the file
                    353:    WORD  wDrivers;
                    354: 
                    355:    // offset of first driver
                    356:    WORD  lOffset;
                    357: 
                    358:    // size of the file
                    359:    WORD  lFileSize;
                    360: 
                    361: } _FILEHEADER;
                    362: 
                    363: // driver header structure
                    364: typedef struct
                    365: {
                    366:    // name ID
                    367:    BYTE  szName[ 32 ];
                    368: 
                    369:    // offset of next driver
                    370:    WORD  lNextDriver;
                    371: 
                    372:    // size of current driver
                    373:    WORD  wSize;
                    374: 
                    375:    // id for the current device
                    376:    WORD  wDeviceID;
                    377: 
                    378:    // id for the type of DOS extender
                    379:    WORD  wExtenderType;
                    380: 
                    381: } _DRIVERHEADER;
                    382: 
                    383: // device hardware information
                    384: typedef struct
                    385: {
                    386:    // port to be used
                    387:    WORD  wPort;
                    388: 
                    389:    // irq to use
                    390:    WORD  wIRQ;
                    391: 
                    392:    // dma channel to se
                    393:    WORD  wDMA; 
                    394:   
                    395:    // extra parameter
                    396:    WORD  wParam;
                    397: 
                    398: } _SOS_HARDWARE;
                    399: 
                    400: // structure definition for start sample
                    401: typedef struct
                    402: {
                    403:    // pointer to sample
                    404:    LPSTR lpSamplePtr;
                    405: 
                    406:    // size of the sample
                    407:    WORD  dwSampleSize;
                    408: 
                    409:    // number of times to loop the sample -1 is infinite
                    410:    WORD  wLoopCount;
                    411: 
                    412:    // channel to play sample on
                    413:    WORD  wChannel;
                    414: 
                    415:    // volume to play sample at
                    416:    WORD wVolume;
                    417: 
                    418:    // id for the sample
                    419:    WORD  wSampleID;
                    420: 
                    421:    // far pointer to the callback function
                    422:    VOID ( far cdecl *lpCallback )( WORD, WORD, WORD );
                    423: 
                    424:    // port to use if driver is a non-dma background driver
                    425:    WORD  wSamplePort; 
                    426: 
                    427:    // flags field
                    428:    WORD  wSampleFlags;
                    429: 
                    430:    // total length of sample including loops, etc..
                    431:    WORD     dwSampleByteLength;
                    432: 
                    433:    // loop point for the sample
                    434:    WORD  dwSampleLoopPoint;
                    435:    WORD  dwSampleLoopLength;
                    436: 
                    437:    // pitch shifting components 
                    438:    WORD     dwSamplePitchAdd;
                    439:    WORD    wSamplePitchFraction;
                    440: 
                    441:    // pan components
                    442:    WORD    wSamplePanLocation;
                    443:    WORD    wSamplePanSpeed;
                    444:    WORD    wSamplePanDirection;
                    445:    WORD    wSamplePanStart;
                    446:    WORD    wSamplePanEnd;
                    447:    
                    448:    // delay parts
                    449:    WORD    wSampleDelayBytes;
                    450:    WORD    wSampleDelayRepeat;
                    451: 
                    452:    // compression components   
                    453:    WORD     dwSampleADPCMPredicted;
                    454:    WORD    wSampleADPCMIndex;
                    455: 
                    456:    // root note for pitch shifting 
                    457:    WORD    wSampleRootNoteMIDI;   
                    458: 
                    459:    // filler for future upgrades
                    460:    WORD  dwSampleTemp1;   
                    461:    WORD  dwSampleTemp2;   
                    462:    WORD  dwSampleTemp3;   
                    463: 
                    464: } _SOS_START_SAMPLE;
                    465: 
                    466: // structure for initializing a driver
                    467: typedef struct
                    468: {  
                    469:    WORD  wBufferSize;
                    470:    LPSTR lpBuffer;
                    471:    BOOL  wAllocateBuffer;
                    472:    WORD  wSampleRate;
                    473:    WORD  wParam;
                    474:    LONG  dwParam;
                    475:    VOID ( far *lpFillHandler )( VOID );
                    476:    LPSTR lpDriverMemory;
                    477:    LPSTR lpDriverMemoryCS;
                    478:    LPSTR lpTimerMemory;
                    479:    LPSTR lpTimerMemoryCS;
                    480:    WORD  wTimerID;
                    481:    WORD  wPhysical;
                    482: 
                    483: } _SOS_INIT_DRIVER;
                    484: 
                    485: // define for the timer types to use
                    486: #define  _SOS_NORMAL_TIMER          0x00
                    487: 
                    488: // enumeration for the timer types
                    489: enum
                    490: {
                    491:    _TIMER_8_MONO   =     0x1000,
                    492:    _TIMER_8_ST,          
                    493:    _TIMER_16_MONO,       
                    494:    _TIMER_16_ST,         
                    495:    _TIMER_8_MONO_ULAW,  
                    496:    _TIMER_8_ST_ULAW,    
                    497:    _TIMER_16_MONO_ULAW, 
                    498:    _TIMER_16_ST_ULAW,   
                    499:    _TIMER_8_MONO_REC,   
                    500:    _TIMER_8_MONO_ULAW_REC,
                    501:    _TIMER_UNDEFINED_1,      
                    502:    _TIMER_UNDEFINED_2,
                    503:    _TIMER_UNDEFINED_3,
                    504:    _TIMER_UNDEFINED_4,
                    505:    _TIMER_UNDEFINED_5,
                    506:    _TIMER_UNDEFINED_6,
                    507:    _TIMER_UNDEFINED_7,
                    508:    _TIMER_UNDEFINED_8,
                    509:    _TIMER_UNDEFINED_9,
                    510:    _TIMER_UNDEFINED_A,
                    511:    _TIMER_UNDEFINED_B,
                    512:    _TIMER_UNDEFINED_C,
                    513:    _TIMER_UNDEFINED_D,
                    514:    _TIMER_UNDEFINED_E,
                    515:    _TIMER_UNDEFINED_F,
                    516:    _TIMER_UNDEFINED_10,
                    517:    _TIMER_UNDEFINED_11,
                    518:    _TIMER_UNDEFINED_12,
                    519:    _TIMER_UNDEFINED_13,
                    520:    _TIMER_UNDEFINED_14,
                    521:    _TIMER_UNDEFINED_15,
                    522:    _TIMER_UNDEFINED_16,
                    523:    _TIMER_8_SOUND_SOURCE,
                    524:    _TIMER_8_SOUND_SOURCE_TANDY,
                    525:    _TIMER_8_GENERAL_PORT,
                    526:    _TIMER_8_GENERAL_PORT_REC   
                    527: };
                    528: 
                    529: // define for no slots available
                    530: #define  _ERR_NO_SLOTS ( WORD )-1
                    531: 
                    532: // error codes for the system
                    533: enum
                    534: {
                    535:    _ERR_NO_ERROR,
                    536:    _ERR_DRIVER_NOT_LOADED,
                    537:    _ERR_INVALID_POINTER,
                    538:    _ERR_DETECT_INITIALIZED,
                    539:    _ERR_FAIL_ON_FILE_OPEN,
                    540:    _ERR_MEMORY_FAIL,
                    541:    _ERR_INVALID_DRIVER_ID,
                    542:    _ERR_NO_DRIVER_FOUND,
                    543:    _ERR_DETECTION_FAILURE,
                    544:    _ERR_DRIVER_LOADED,
                    545:    _ERR_INVALID_HANDLE,
                    546:    _ERR_NO_HANDLES,
                    547:    _ERR_PAUSED,   
                    548:    _ERR_NOT_PAUSED,
                    549:    _ERR_INVALID_DATA,
                    550:    _ERR_DRV_FILE_FAIL,
                    551:    _ERR_INVALID_PORT,
                    552:    _ERR_INVALID_IRQ,
                    553:    _ERR_INVALID_DMA,
                    554:    _ERR_INVALID_DMA_IRQ
                    555: };   
                    556: 
                    557: // maximum number of timer events that can be registered 
                    558: #define  _TIMER_MAX_EVENTS    0x10  
                    559: 
                    560: // flags for the debugging system
                    561: #define  _SOS_DEBUG_NORMAL       0x0000
                    562: #define  _SOS_DEBUG_NO_TIMER     0x0001
                    563: #define  _SOS_TIMER_DPMI         0x0002
                    564: 
                    565: // define for types of DOS extenders
                    566: #define  _SOS_RATIONAL           0x8000
                    567: #define  _SOS_FLASHTECK          0x4000
                    568: 
                    569: // defines for the types of timers for different
                    570: // dos extenders
                    571: #define  _SOS_TIMER_NEAR         0x8000
                    572: #define  _SOS_TIMER_FAR          0x4000
                    573:  
                    574: // values for callback information
                    575: enum
                    576: {
                    577:    _SAMPLE_PROCESSED,
                    578:    _SAMPLE_LOOPING,
                    579:    _SAMPLE_DONE
                    580: };
                    581: 
                    582: // define for special 18.2 callback rate to dos
                    583: #define  _TIMER_DOS_RATE   0xff00
                    584: 
                    585: #pragma pack()
                    586: 
                    587: #pragma aux int_3 = "int 3"
                    588:  
                    589: #pragma pack( 1 ) 
                    590: typedef struct
                    591: {
                    592:        unsigned       region_size;
                    593:        unsigned       offset;
                    594:        unsigned       segment;
                    595:        unsigned short  number_available;
                    596:        unsigned short number_used;
                    597:        unsigned       page0;
                    598: 
                    599: } EVDS_STRUCT;
                    600: 
                    601: typedef struct 
                    602: {
                    603:        unsigned       region_size;
                    604:        unsigned       offset;
                    605:        unsigned short segment;
                    606:        unsigned short  ID;
                    607:        unsigned       physical;
                    608: 
                    609: } VDS_STRUCT;
                    610: 
                    611: #pragma pack() 
                    612: 
                    613: //
                    614: // #include "sosdata.h"
                    615: //
                    616: /****************************************************************************
                    617: 
                    618:    File              : sosdata.h
                    619: 
                    620:    Programmer(s)     : Don Fowler, Nick Skrepetos
                    621:    Date              :
                    622: 
                    623:    Purpose           : Include Files For Zortech C++ Compiler
                    624: 
                    625:    Last Updated      :
                    626: 
                    627: ****************************************************************************
                    628:                           Copyright(c) 1993,1994 Human Machine Interfaces 
                    629:                                                        All Rights Reserved
                    630: ****************************************************************************/
                    631: 
                    632: #ifndef  _SOS_DATA
                    633: #define  _SOS_DATA
                    634: 
                    635: #include <stddef.h>
                    636: 
                    637: #pragma pack(4) 
                    638: extern   WORD     _sosDIGIData_Start;
                    639: extern   WORD     _sosDIGIData_End;
                    640: extern   WORD     _wSOSDriverLinear[];
                    641: extern   WORD     _wSOSTimerLinear[];
                    642: extern   LPSTR    _lpSOSDriver[];
                    643: extern   LPSTR    _lpSOSTimer[];
                    644: extern   LPSTR    _lpSOSDriverCS[];
                    645: extern   LPSTR    _lpSOSTimerCS[];
                    646: extern   BOOL     _wSOSDriverLoaded[];
                    647: extern   BOOL     _wSOSTimerLoaded[];
                    648: extern   BOOL     _wSOSDriverInitialized[];
                    649: extern   WORD     _wSOSOutputRate[];
                    650: extern   WORD     _wSOSDMABuffersize[];
                    651: extern   LONG     _dwSOSDMABufferPhysical[];
                    652: extern   LPSTR    _lpSOSDMABuffer[];
                    653: extern   BOOL     _wTimerUsed;
                    654: extern   VOID ( far *_lpSOSFillHandler[] )( VOID );
                    655: extern   WORD     _wSOSTimerType[];
                    656: extern   WORD     _wSOSDriverType[];
                    657: extern   _SOS_SAMPLE far * _lpSOSSampleList[][ _MAX_VOICES ];
                    658: extern   LPWORD      _lpSOSDMAIrqCount[];
                    659: extern   LPWORD      _lpSOSDMAFillCount[];
                    660: extern   WORD        _wSOSTmrNextCount;
                    661: extern   VOID ( interrupt far *_lpSOSOldTimer )( VOID );
                    662: extern   WORD     _wSOSDriverID[];
                    663: extern   _SOS_CAPABILITIES _sSOSDriverCaps[];
                    664: extern   WORD        _wSOSDMAPortList[];
                    665: extern   BYTE        _bSOSDMAChannel[];
                    666: extern   _SOS_INIT_DRIVER     _sSOSDIGIInitDriver[];
                    667: extern   BYTE  _pSOSDriverPath[];
                    668: extern   BYTE  _pSOSTempDriverPath[];
                    669: extern   BOOL  _wTIMERUsed;
                    670: extern   WORD  _wTIMERValue;
                    671: extern   VOID ( far * _lpTIMEREvents[] )( VOID );
                    672: extern   WORD _wTIMEREventRate[];
                    673: extern   WORD _dwTIMEREventFraction[];
                    674: extern   WORD _dwTIMEREventFractionCurrent[];
                    675: extern   BYTE  _bSOSMIDITimerSongHandler[];
                    676: extern   BYTE  _bSOSMIDISongHandle;
                    677: extern   WORD  _wSOSTimerMemHandle[];
                    678: extern   WORD  _wSOSDriverMemHandle[];
                    679: extern   WORD  _wSOSRealSeg[];
                    680: 
                    681: extern   _FILEHEADER    _sDETFileHeader;
                    682: extern   _DRIVERHEADER  _sDETDriverHeader;
                    683: extern   _FILEHEADER    sLOADFileHeader;
                    684: extern   _DRIVERHEADER  sLOADDriverHeader;
                    685: extern   BOOL           _wDETInitialized;
                    686: extern   WORD           _wDETLinear;
                    687: extern   LPSTR          _lpDETDriverBuffer;    
                    688: extern   LPSTR          _lpDETDriverBufferCS;
                    689: extern   WORD           _hDETFile;
                    690: extern   DWORD          _dwDETDriverIndex;
                    691: extern   WORD           _wDETDriverIndexCur;
                    692: extern   WORD           _wDETMemHandle;
                    693: extern   LPSOSDEVICECAPS _lpDETDeviceCaps;
                    694: extern   _SOS_CAPABILITIES _sDETCaps;  
                    695: extern   PSTR _pSOSErrorStrings[];
                    696: extern   BOOL _wSOSBufferAllocated[];
                    697: extern   BOOL _wSOSSystemInitialized;
                    698: extern   VDS_STRUCT _sSOSVDSInfo;
                    699: extern   _SOS_FILL_INFO _sSOSFillInfo;
                    700: extern   WORD    _wSOSTimerEventIndex;
                    701: extern   WORD  _wSOSTimerEntered;
                    702: extern   WORD  _wSOSDriverSize[];
                    703: extern   WORD  _wSOSTimerSize[];
                    704: 
                    705: #ifdef __cplusplus
                    706: extern "C" {
                    707: #endif
                    708: extern   WORD  _sosDIGIData1_Start;
                    709: extern   WORD  _sosDIGIData1_End;
                    710: extern   WORD  _sosDIGIData2_Start;
                    711: extern   WORD  _sosDIGIData2_End;
                    712: extern   BYTE  _bTIMERInstalled;
                    713: extern   BYTE  _bTIMERDPMI;
                    714: extern   WORD  wDetectPort;
                    715: extern   WORD  wDetectIRQ;
                    716: extern   WORD  wDetectDMA;
                    717: extern   WORD  wDetectParam;
                    718: #ifdef __cplusplus
                    719: }
                    720: #endif 
                    721: 
                    722: #pragma pack()
                    723: 
                    724: #endif
                    725: 
                    726: 
                    727: //
                    728: // #include "sosfnct.h"
                    729: //
                    730: /****************************************************************************
                    731: 
                    732:    File              : sosfnct.h
                    733: 
                    734:    Programmer(s)     : Don Fowler, Nick Skrepetos
                    735:    Date              :
                    736: 
                    737:    Purpose           : Include Files For Zortech C++ Compiler
                    738: 
                    739:    Last Updated      :
                    740: 
                    741: ****************************************************************************
                    742:                           Copyright(c) 1993,1994 Human Machine Interfaces 
                    743:                                                        All Rights Reserved
                    744: ****************************************************************************/
                    745: 
                    746: #ifndef  _SOS_FUNCTIONS
                    747: #define  _SOS_FUNCTIONS
                    748: 
                    749: #pragma pack(4)
                    750: 
                    751: WORD sosDIGILockMemory          (  VOID  );
                    752: WORD sosDIGIUnLockMemory        (  VOID  );
                    753: WORD sosDIGIInitSystem           (  LPSTR, WORD  );
                    754: WORD sosDIGIUnInitSystem         (  VOID  );
                    755: WORD sosDIGIInitDriver           (  WORD, _SOS_HARDWARE far *,
                    756:                                                                        _SOS_INIT_DRIVER far *, WORD far *   );
                    757: WORD sosDIGIUnInitDriver         (  WORD, BOOL, BOOL  );
                    758: WORD sosDIGILoadDriver          (  WORD, WORD, LPSTR far *, LPSTR far *, PSTR, PSTR, WORD * );
                    759: WORD sosDIGIUnLoadDriver         (  WORD  );
                    760: WORD sosDIGIGetDeviceCaps        (  WORD, LPSOSDEVICECAPS  );
                    761: 
                    762: #ifdef PHARLAP
                    763: LPSTR sosDIGIAllocateBuffer      (  WORD , WORD *, WORD * );
                    764: #else
                    765: LPSTR sosDIGIAllocateBuffer      (  WORD , WORD *, WORD * );
                    766: #endif
                    767: 
                    768: WORD sosDIGIStopSample           (  WORD, WORD  );
                    769: WORD sosDIGISamplesPlaying       (  WORD  );
                    770: BOOL sosDIGISampleDone           (  WORD, WORD  );
                    771: BOOL sosDIGISampleFilling        (  WORD, WORD  );
                    772: WORD sosDIGIStartSample          (  WORD, _SOS_START_SAMPLE far *  );
                    773: WORD sosDIGIContinueSample       (  WORD, WORD, _SOS_START_SAMPLE far * );
                    774: 
                    775: 
                    776: WORD  sosDIGIDetectInit          (  LPSTR  );
                    777: WORD  sosDIGIDetectUnInit        (  VOID  );
                    778: WORD  sosDIGIDetectFindHardware  (  WORD, _SOS_CAPABILITIES far *, WORD far * );
                    779: WORD  sosDIGIDetectFindFirst     (  _SOS_CAPABILITIES far *, WORD far *  );
                    780: WORD  sosDIGIDetectFindNext      (  _SOS_CAPABILITIES far *, WORD far *  );
                    781: WORD  sosDIGIDetectGetSettings   (  _SOS_HARDWARE far *  );
                    782: WORD  sosDIGIDetectGetCaps       (  WORD, _SOS_CAPABILITIES far *  );
                    783: WORD  sosDIGIDetectVerifySettings(  _SOS_HARDWARE far *  );
                    784: PSTR  sosGetErrorString          (  WORD  );
                    785: 
                    786: WORD  sosDIGILoadTimer           (  WORD , LPSTR far *, LPSTR far *, PSTR, PSTR, WORD * );
                    787: WORD  sosDIGIUnLoadTimer         (  WORD  );
                    788: 
                    789: WORD  sosTIMERRegisterEvent      ( WORD wCallRate, VOID ( far * lpTimerEvent )( VOID ), WORD far *lpTimerHandle );
                    790: WORD  sosTIMERInitSystem               (  WORD, WORD  );
                    791: WORD  sosTIMERUnInitSystem             (  WORD  );
                    792: WORD  sosTIMERSetRate                  (  WORD  );  
                    793: WORD  sosTIMERRemoveEvent              (  WORD );
                    794: WORD  sosTIMERAlterEventRate           (  WORD, WORD  );
                    795: WORD  sosTIMERGetEventRate             (  WORD  );
                    796: VOID far sosTIMEROldHandler            (  VOID  );
                    797: VOID far sosTIMERHandler               (  VOID  );
                    798: 
                    799: // functions in soscntl.c
                    800: WORD  sosDIGISetSampleVolume     ( WORD, WORD, WORD );
                    801: WORD  sosDIGIGetSampleVolume     ( WORD, WORD );
                    802: WORD  sosDIGISetChannel          ( WORD, WORD, WORD );
                    803: WORD  sosDIGIGetChannel          ( WORD, WORD );
                    804: WORD  sosDIGIGetBytesProcessed   ( WORD, WORD );
                    805: WORD  sosDIGIGetLoopCount        ( WORD, WORD );
                    806: WORD  sosDIGISetPanLocation      ( WORD, WORD, WORD );
                    807: WORD  sosDIGIGetPanLocation      ( WORD, WORD );
                    808: DWORD sosDIGISetPitch            ( WORD, WORD, DWORD );
                    809: DWORD sosDIGIGetPitch            ( WORD, WORD );
                    810: WORD  sosDIGIGetDMAPosition      ( WORD );
                    811: WORD  sosDIGISetPanSpeed         ( WORD, WORD, WORD );
                    812: WORD  sosDIGIGetPanSpeed         ( WORD, WORD );
                    813: WORD  sosDIGIGetSampleID         ( WORD, WORD );
                    814: WORD  sosDIGIGetSampleHandle     ( WORD, WORD );
                    815: WORD  sosDIGISetMasterVolume     ( WORD, WORD );
                    816: #ifdef PHARLAP
                    817: VOID  sosFreeVDSPage          ( unsigned short, unsigned short, DWORD );
                    818: WORD  sosAllocVDSPage         ( unsigned short *, unsigned short *, DWORD * );
                    819: #else
                    820: WORD  sosAllocVDSPage            ( LPSTR *, WORD *, WORD * );
                    821: VOID  sosFreeVDSPage             ( WORD, WORD, LONG );
                    822: #endif
                    823: 
                    824: #ifdef __cplusplus
                    825: extern "C" {
                    826: #endif
                    827: 
                    828: #ifdef PHARLAP
                    829: extern   int   cdecl sosRealFree          ( int );
                    830: extern   BOOL  cdecl  _sos_read( WORD, LPSTR, WORD, WORD * );
                    831: extern   int   cdecl sosRealAlloc( int, int *, int * );
                    832: extern   void  cdecl sosDRVFarMemCopy( LPSTR, LPSTR, WORD );
                    833: extern   int   cdecl sosGetCS( VOID );
                    834: extern   int   cdecl sosGetES( VOID );
                    835: #else
                    836: extern   int   cdecl sosRealAlloc         ( int, int *, int * );
                    837: extern   int   cdecl sosRealFree          ( int );
                    838: #endif
                    839: 
                    840: // sos driver functions
                    841: extern   WORD  cdecl sosDRVLockMemory     ( DWORD, DWORD );
                    842: extern   WORD  cdecl sosDRVUnLockMemory   ( DWORD, DWORD );
                    843: extern   void  cdecl sosDRVGetCapsInfo    ( LPSTR, LPSTR, _SOS_CAPABILITIES far * );
                    844: extern   void  cdecl sosDetDRVGetCapsInfo ( LPSTR, LPSTR, _SOS_CAPABILITIES far * );
                    845: extern   void  cdecl sosDRVGetCapsPtr     ( LPSTR, LPSTR, _SOS_CAPABILITIES far * );
                    846: extern   void  cdecl sosDRVInit           ( LPSTR, LPSTR, int, int, int, int, int, int );  
                    847: extern   void  cdecl sosDRVStart          ( LPSTR, LPSTR, int, int );
                    848: extern   void  cdecl sosDRVSetRate        ( LPSTR, LPSTR, int );
                    849: extern   void  cdecl sosDRVSetAction      ( LPSTR, LPSTR );
                    850: extern   void  cdecl sosDRVStop           ( LPSTR, LPSTR );
                    851: extern   void  cdecl sosDRVUnInit         ( LPSTR, LPSTR );
                    852: extern   void  cdecl sosDRVGetFillInfo    ( LPSTR, LPSTR, LPSTR, int, int, int, _SOS_FILL_INFO * );
                    853: extern   void  cdecl sosFillSampleStructs ( PSTR, LPSTR );
                    854: extern   WORD  cdecl sosDetDRVExist       ( LPSTR, LPSTR );
                    855: extern   WORD  cdecl sosDetDRVGetSettings ( LPSTR, LPSTR );
                    856: extern   WORD  cdecl sosDetDRVVerifySettings( LPSTR, WORD, WORD, WORD, LPSTR );
                    857: extern   WORD  cdecl sosDIGIInitForWindows( WORD );
                    858: extern   WORD  cdecl sosDIGIUnInitForWindows( WORD );
                    859: extern   LPSTR cdecl sosAllocateFarMem      ( WORD, PSTR, WORD * );
                    860: extern   LPSTR cdecl sosCreateAliasCS       ( LPSTR );
                    861: extern   VOID  cdecl sosFreeSelector        ( LPSTR, DWORD );
                    862: extern   LPSTR cdecl sosMAKEDOSPtr          ( PSTR );
                    863: extern   VOID  cdecl sosDetDRVSetEnvString  ( DWORD, PSTR );
                    864: extern   PSTR  cdecl sosDetDRVGetEnvString  ( DWORD );
                    865: extern   VOID  cdecl sosDetDRVEnvStringInit ( LPSTR, LPSTR );
                    866: extern   VOID  cdecl sosDRVSetupCallFunctions( LPSTR, LPSTR, LPSTR, LPSTR );
                    867: extern   WORD  cdecl sosDRVGetFreeMemory     ( VOID );
                    868: extern   WORD  cdecl sosDRVAllocVDSStruct    ( WORD, WORD *, WORD * );
                    869: extern   WORD  cdecl sosDRVFreeVDSStruct     ( WORD, WORD );
                    870: extern   WORD  cdecl sosDRVIsWindowsActive   ( VOID );
                    871: extern   WORD  cdecl sosDRVVDSGetBuffer    ( WORD );
                    872: extern   WORD  cdecl sosDRVVDSFreeBuffer   ( WORD );
                    873: extern   WORD  cdecl getDS( VOID );
                    874: extern   WORD  cdecl sosDRVMakeDMASelector   ( WORD );  
                    875: extern   WORD  cdecl sosDRVFreeDMASelector   ( WORD );  
                    876: 
                    877: 
                    878: extern   void  cdecl sosTIMERDRVInit( int wRate, void ( far * )( void ) );
                    879: extern   void  cdecl sosTIMERDRVUnInit( void );
                    880: extern   void  cdecl sosTIMERDRVHandler( void );
                    881: extern   void  cdecl sosTIMERDRVFHandler( void );
                    882: extern   void  cdecl sosTIMERDRVEnable( void );
                    883: extern   void  cdecl sosTIMERDRVDisable( void );
                    884: extern   void  cdecl sosTIMERDRVCallOld( void );
                    885: extern   void  cdecl sosTIMERDRVSetRate( WORD );    
                    886: extern   void  cdecl sosDIGITimer_Start( void );
                    887: extern   void  cdecl sosDIGITimer_End( void );
                    888: extern   void  cdecl sosDIGIDrv_Start( void );
                    889: extern   void  cdecl sosDIGIDrv_End( void );
                    890: #ifdef __cplusplus
                    891: }
                    892: #endif 
                    893: 
                    894: // external functions for handling system initialization and 
                    895: // uninitialization
                    896: WORD  sosEXDIGInitDriver               (  WORD, WORD, WORD, LPSTR,
                    897:                                                                                  _SOS_HARDWARE far *, WORD *  );
                    898: WORD  sosEXDIGIUnInitDriver            (  VOID  );
                    899: 
                    900: WORD  sosEXDETFindDriver               (  WORD, LPSTR, _SOS_HARDWARE far *,
                    901:                                                                                  _SOS_CAPABILITIES far *  );
                    902: 
                    903: // memory locking prototypes
                    904: VOID  sosDIGICaps_Start( VOID );
                    905: VOID  sosDIGICaps_End( VOID );
                    906: VOID  sosDIGIErr_Start( VOID );
                    907: VOID  sosDIGIErr_End( VOID );
                    908: VOID  sosDIGITmr_Start( VOID );
                    909: VOID  sosDIGITmr_End( VOID );
                    910: VOID  sosDIGIStart_Start( VOID );
                    911: VOID  sosDIGIStart_End( VOID );
                    912: VOID  sosDIGIPlyng_Start( VOID );
                    913: VOID  sosDIGIPlyng_End( VOID );
                    914: VOID  sosDIGIRate_Start( VOID );
                    915: VOID  sosDIGIRate_End( VOID );
                    916: VOID  sosDIGIDone_Start( VOID );
                    917: VOID  sosDIGIDone_End( VOID );
                    918: VOID  sosDIGIDetec_Start( VOID );
                    919: VOID  sosDIGIDetec_End( VOID );
                    920: VOID  sosDIGIInit_Start( VOID );
                    921: VOID  sosDIGIInit_End( VOID );
                    922: VOID  sosDIGILoad_Start( VOID );
                    923: VOID  sosDIGILoad_End( VOID );
                    924: VOID  sosDIGICntl_Start( VOID );
                    925: VOID  sosDIGICntl_End( VOID );
                    926: 
                    927: #pragma pack()
                    928: 
                    929: #endif
                    930: 
                    931: 
                    932: #endif
                    933: 
                    934: 
                    935: 
                    936: //
                    937: // include sosm.h and its includes so just call
                    938: // sos.h from teksnd.c
                    939: //
                    940: /****************************************************************************
                    941: 
                    942:    File              : sosm.h
                    943: 
                    944:    Programmer(s)     : Don Fowler, Nick Skrepetos
                    945:    Date              :
                    946: 
                    947:    Purpose           : Include Files For Zortech C++ Compiler
                    948: 
                    949:    Last Updated      :
                    950: 
                    951: ****************************************************************************
                    952:                           Copyright(c) 1993,1994 Human Machine Interfaces 
                    953:                                                        All Rights Reserved
                    954: ****************************************************************************/
                    955: 
                    956: #ifndef  _SOS_MIDI_DEFINED   
                    957: #define  _SOS_MIDI_DEFINED   
                    958: 
                    959: //
                    960: //#include "sosdefs.h"
                    961: //#include "sos.h"
                    962: //
                    963: 
                    964: #pragma pack(4)
                    965: 
                    966: #define  _SOS_MIDI_ERR          -1
                    967: 
                    968: // number of drivers allowed to be open at one time
                    969: #define  _SOS_MIDI_MAX_DRIVERS  5
                    970: 
                    971: // maximum number of allowed channels
                    972: #define  _SOS_MIDI_MAX_CHANNELS    0x10
                    973: 
                    974: // structure definition for the capabilities
                    975: typedef struct
                    976: {
                    977:    BYTE     szDeviceName[ 32 ];  // device name
                    978:    WORD     wDeviceVersion;      // device version
                    979:    WORD     wFlags;              // miscellaneous flags   
                    980:    WORD     wProcessData;        // process data before sending to driver
                    981:    short far *   lpPortList;          // list of usable ports
                    982:    short far *   lpIRQList;           // list of usable irq channels
                    983:    WORD     wDeviceID;           // ID for the device
                    984:    
                    985: } _SOS_MIDI_CAPABILITIES; 
                    986: 
                    987: #define  LPSOSMIDIDEVICECAPS  _SOS_MIDI_CAPABILITIES far *
                    988: 
                    989: // call indexes for the loadable drivers
                    990: enum
                    991: { 
                    992:    _DRV_MIDI_GET_CAPS,
                    993:    _DRV_MIDI_GET_CALL_TABLE,
                    994:    _DRV_MIDI_SPECIAL1
                    995: };
                    996: 
                    997: // file header for the driver
                    998: typedef struct
                    999: {
                   1000:    // name ID
                   1001:    BYTE  szName[ 32 ];
                   1002: 
                   1003:    // number of drivers in the file
                   1004:    WORD  wDrivers;
                   1005: 
                   1006:    // offset of first driver
                   1007:    WORD  lOffset;
                   1008: 
                   1009:    // size of the file
                   1010:    WORD  lFileSize;
                   1011: 
                   1012: } _MIDIFILEHEADER;
                   1013: 
                   1014: // driver header structure
                   1015: typedef struct
                   1016: {
                   1017:    // name ID
                   1018:    BYTE  szName[ 32 ];
                   1019: 
                   1020:    // offset of next driver
                   1021:    WORD  lNextDriver;
                   1022: 
                   1023:    // size of current driver
                   1024:    WORD  wSize;
                   1025: 
                   1026:    // id for the current device
                   1027:    WORD  wDeviceID;
                   1028: 
                   1029:    // id for the extender type
                   1030:    WORD  wExtenderType;
                   1031: 
                   1032: } _MIDIDRIVERHEADER;
                   1033: 
                   1034: // device hardware information
                   1035: typedef struct
                   1036: {
                   1037:    // port to be used
                   1038:    WORD  wPort;
                   1039: 
                   1040:    // IRQ for the board
                   1041:    WORD  wIRQ;
                   1042: 
                   1043:    // extra parameter
                   1044:    WORD  wParam;
                   1045: 
                   1046: } _SOS_MIDI_HARDWARE;
                   1047: 
                   1048: // structure for initializing a digital driver 
                   1049: typedef struct
                   1050: {
                   1051:    // ID for the digital driver
                   1052:    WORD  wDriverID;
                   1053: 
                   1054:    // timer rate to use
                   1055:    WORD  wTimerRate;
                   1056: 
                   1057:    // timer callback rate to use
                   1058:    WORD  wTimerCallbackRate;
                   1059: 
                   1060:    // max voices for the driver to use
                   1061:    WORD  wMaxVoices;
                   1062: 
                   1063:    // velocity sensing flag
                   1064:    WORD  wVelocitySensing;
                   1065: 
                   1066:    // init driver info
                   1067:    _SOS_INIT_DRIVER far * sDIGIDriverInfo;
                   1068: 
                   1069:    // hardware information
                   1070:    _SOS_HARDWARE far *  sDIGIHardwareInfo;    
                   1071: 
                   1072: } _SOS_MIDI_DIGI_INIT_DRIVER;
                   1073: 
                   1074: // structure for initializing a driver
                   1075: typedef struct
                   1076: {  
                   1077:    // type of driver to use if using a digital driver
                   1078:    WORD        wDIGIDriverID;
                   1079: 
                   1080:    // pointer to driver memory
                   1081:    VOID far * lpDriverMemory;
                   1082:    VOID far * lpDriverMemoryCS;
                   1083: 
                   1084:    // pointer to digital driver initialization information
                   1085:    _SOS_MIDI_DIGI_INIT_DRIVER far * sDIGIInitInfo;
                   1086: 
                   1087:    // miscellaneous WORD parameter for driver
                   1088:    WORD  wParam;
                   1089: 
                   1090:    // miscellaneous DWORD parameter for driver
                   1091:    DWORD dwParam;
                   1092: 
                   1093: } _SOS_MIDI_INIT_DRIVER;
                   1094: 
                   1095: // structure for starting a song
                   1096: typedef struct
                   1097: {  
                   1098:    // pointer to song memory 
                   1099:    BYTE _huge * lpSongData;
                   1100: 
                   1101:    // pointer to callback function for pertinent song information
                   1102:    VOID ( far * lpSongCallback )( WORD );
                   1103: 
                   1104: } _SOS_MIDI_INIT_SONG;
                   1105: 
                   1106: // define to indicate that track mapping can be used
                   1107: // from the midi file for the song
                   1108: #define  _MIDI_MAP_TRACK   0xff
                   1109:   
                   1110: // MIDI channel to device mapping structure
                   1111: typedef struct
                   1112: {
                   1113:    // track to device mapping information
                   1114:    WORD wTrackDevice[ 32 ];
                   1115:         
                   1116: } _SOS_MIDI_TRACK_DEVICE;
                   1117: 
                   1118: // MIDI channel to device mapping structure
                   1119: typedef struct
                   1120: {
                   1121:    // track to device mapping information
                   1122:    WORD wTrackDevice[ 32 ][ 5 ];
                   1123:         
                   1124: } _SOS_MIDI_TRACK_DEVICE1;
                   1125: 
                   1126: // NEW
                   1127: // header for the NDMF format MIDI file 
                   1128: typedef struct
                   1129: {
                   1130:    // ID for the file
                   1131:    BYTE  szFileID[ 32 ];
                   1132: 
                   1133:    WORD dwBranchOffset;
                   1134:    WORD temp1;
                   1135:    WORD temp2;
                   1136:    WORD temp3;
                   1137: 
                   1138: //   // name of the instrument file to use with the song   
                   1139: //   BYTE  szInstrumentFile[ 16 ];
                   1140: 
                   1141:    // number of tracks in the song
                   1142:    WORD  wNDMFTracks;
                   1143: 
                   1144:    // ticks/quarter note song is used at
                   1145:    WORD  wTicksQuarterNote;
                   1146: 
                   1147:    // tempo
                   1148:    WORD  wTempo;
                   1149: 
                   1150:    // time for song to play at current tempo
                   1151:    WORD  wTimeToPlay;
                   1152: 
                   1153:    // channel mapping priority information
                   1154:    WORD  wChannelPriority[ _SOS_MIDI_MAX_CHANNELS ];
                   1155: 
                   1156:    // channel mapping information
                   1157:    _SOS_MIDI_TRACK_DEVICE1 sTrackMap;
                   1158: 
                   1159:    // array of flags for which controllers to restore on a loop/branch
                   1160:    BYTE  bCtrlRestore[ 128 ];
                   1161: 
                   1162:    // pointer to callback function for song to call with 
                   1163:    // pertinent information
                   1164:    VOID ( far * lpSongCallback )( WORD ); 
                   1165: 
                   1166: } _NDMF_FILE_HEADER;
                   1167: // END
                   1168: 
                   1169: // header for the tracks in the NDMF format MIDI file
                   1170: typedef struct
                   1171: {
                   1172:    // track number
                   1173:    WORD  wTrackNumber;
                   1174: 
                   1175:    // length of the track
                   1176:    WORD  wTrackLength;
                   1177: 
                   1178:    // channel used on the track
                   1179:    WORD  wChannel;
                   1180: 
                   1181: } _NDMF_TRACK_HEADER;
                   1182: 
                   1183: // MIDI event structure
                   1184: typedef struct
                   1185: {
                   1186:    // dummy name to access midi data from
                   1187:    BYTE  bMidiData[ 256 ];
                   1188: 
                   1189: } _NDMF_MIDI_EVENT;
                   1190: 
                   1191: // maximum number of songs that can be played at any time
                   1192: #define  _SOS_MIDI_MAX_SONGS     8
                   1193: 
                   1194: // maximum number of tracks that can be used
                   1195: #define  _SOS_MIDI_MAX_TRACKS    32
                   1196: 
                   1197: // number of driver functions
                   1198: #define  _SOS_MIDI_DRV_FUNCTIONS 12
                   1199: 
                   1200: // enumeration for all of the drv functions
                   1201: enum
                   1202: {
                   1203:    _MIDI_DRV_SEND_DATA,
                   1204:    _MIDI_DRV_INIT,
                   1205:    _MIDI_DRV_UNINIT,
                   1206:    _MIDI_DRV_RESET,
                   1207:    _MIDI_DRV_SET_INST_DATA
                   1208: };
                   1209: 
                   1210: // defines for the loadable driver ids
                   1211: #define  _MIDI_SOUND_MASTER_II      0xa000
                   1212: #define  _MIDI_MPU_401              0xa001
                   1213: #define  _MIDI_FM                   0xa002
                   1214: #define  _MIDI_OPL2                 0xa002
                   1215: #define  _MIDI_CALLBACK             0xa003
                   1216: #define  _MIDI_MT_32                0xa004
                   1217: #define  _MIDI_DIGI                 0xa005  
                   1218: #define  _MIDI_INTERNAL_SPEAKER     0xa006
                   1219: #define  _MIDI_WAVE_TABLE_SYNTH     0xa007  
                   1220: #define  _MIDI_AWE32                0xa008  
                   1221: #define  _MIDI_OPL3                 0xa009  
                   1222: #define  _MIDI_GUS                  0xa00a  
                   1223: 
                   1224: // structure for the hmi instrument file header
                   1225: typedef struct
                   1226: {
                   1227:    // file id type
                   1228:    BYTE  szFileID[ 32 ];
                   1229: 
                   1230:    // file version
                   1231:    WORD  wFileVersion;
                   1232: 
                   1233:    // size of the file
                   1234:    WORD dwFileSize;
                   1235: 
                   1236: } _HMI_INS_FILE_HEADER;
                   1237: 
                   1238: 
                   1239: // define for identifying a drum instrument  
                   1240: #define  _SOS_MIDI_DRUM_INS   ( short )0x8000
                   1241: 
                   1242: // maximum number of timer events that can be registered 
                   1243: #define  _TIMER_MAX_EVENTS    0x10  
                   1244: 
                   1245: // structure for digital driver queue element
                   1246: typedef struct _tagQueueElement
                   1247: {
                   1248:    // handle for the sample
                   1249:    WORD  wSampleHandle;
                   1250: 
                   1251:    // id for the sample
                   1252:    WORD  wSampleID;
                   1253: 
                   1254:    // velocity for the sample
                   1255:    WORD  wVelocity;
                   1256: 
                   1257:    // channel for the sample
                   1258:    WORD  wChannel;
                   1259: 
                   1260: } _DIGI_QUEUE_ELEMENT;
                   1261: 
                   1262: // maximum number of instruments that can be set in the 
                   1263: // digital driver
                   1264: #define  _MAX_INS    128
                   1265: 
                   1266: // define for the maximum number of times a channel can be stolen
                   1267: #define  _SOS_MIDI_MAX_LEVELS    0x04
                   1268: 
                   1269: // structure for MIDI information to be stored on the local stack
                   1270: // when a channel is stolen
                   1271: typedef struct
                   1272: {
                   1273:    // used element
                   1274:    BYTE  bUsed;
                   1275: 
                   1276:    // last pitch bend information sent
                   1277:    BYTE  bPitchBend;
                   1278: 
                   1279:    // channel volume
                   1280:    BYTE  bChannelVolume;
                   1281: 
                   1282:    // instrument information
                   1283:    BYTE  bInstrument;
                   1284: 
                   1285:    // sustain pedal
                   1286:    BYTE  bSustain;
                   1287: 
                   1288: } _SOS_MIDI_CHANNEL_DATA;
                   1289:  
                   1290: // flags for the debugging system
                   1291: #define  _SOS_DEBUG_NORMAL       0x0000
                   1292: #define  _SOS_DEBUG_NO_TIMER     0x0001
                   1293: 
                   1294: // ID for 32 bit MIDI file
                   1295: #define  _SOS_MIDI_FILE_ID       "HMIMIDIP"  
                   1296: 
                   1297: // structure for branch location controller
                   1298: typedef struct
                   1299: {
                   1300:    // offset from start of track data
                   1301:    WORD     dwOffset;
                   1302: 
                   1303:    // branch ID number
                   1304:    BYTE     bBranchID;
                   1305: 
                   1306:    // current instrument
                   1307:    BYTE     bInstrument;
                   1308: 
                   1309:    // current loop count for temporary storage
                   1310:    // so that a track can be looped without 
                   1311:    // needing any data from the program
                   1312:    BYTE     bLoopCount;
                   1313: 
                   1314:    // number of controller messages stored
                   1315:    BYTE     bCtrlChangeCount;
                   1316: 
                   1317:    // offset of control change information from start of file
                   1318:    WORD     lpCtrlChangeData;   
                   1319:    WORD     lpCtrlChangeDataTemp;
                   1320:    
                   1321:    // reserved fields
                   1322:    WORD     wReserved1;
                   1323:    WORD     wReserved2;
                   1324: 
                   1325: } _SOS_BRANCH_POINT;
                   1326: 
                   1327: #define  _SOS_MIDI_FADE_IN          0x01  
                   1328: #define  _SOS_MIDI_FADE_OUT         0x02  
                   1329: #define  _SOS_MIDI_FADE_OUT_STOP    0x04  
                   1330: 
                   1331: // structure for digital drums to use to store midi information
                   1332: typedef struct
                   1333: {
                   1334:    // current volume
                   1335:    WORD  wVolume;
                   1336: 
                   1337:    // current pan position
                   1338:    WORD  wPanPosition;
                   1339: 
                   1340:    // reserved
                   1341:    DWORD dwReserved;
                   1342:    
                   1343: } _SOS_MIDI_DIGI_CHANNEL;
                   1344: 
                   1345: // instrument file header structure
                   1346: typedef struct
                   1347: {
                   1348:    // file ID
                   1349:    BYTE  szID[ 32 ];
                   1350: 
                   1351:    // file version
                   1352:    WORD  wVersion;
                   1353: 
                   1354:    // instruments in file
                   1355:    WORD  wInstruments;
                   1356: 
                   1357:    // list of pointers to start sample structures
                   1358:    _SOS_START_SAMPLE far * lpStartSample[ _MAX_INS ];
                   1359: 
                   1360:    DWORD temp1;
                   1361:    DWORD temp2;
                   1362: 
                   1363: } _WAVE_FILE_HEADER;
                   1364: 
                   1365: #pragma pack()
                   1366: 
                   1367: // define for the busy error returned from send data
                   1368: #define  _ERR_DRIVER_BUSY  0xf000
                   1369: 
                   1370: // NEW
                   1371: // defines for the looping branch controllers
                   1372: #define  _SOS_SET_FLAG   103
                   1373: #define  _SOS_RESET_FLAG 104
                   1374: #define  _SOS_BRANCH1   108
                   1375: #define  _SOS_BRANCH2   109
                   1376: #define  _SOS_BRANCH3   110
                   1377: #define  _SOS_BRANCH4   111
                   1378: #define  _SOS_BRANCH5   112
                   1379: #define  _SOS_BRANCH6   113
                   1380: #define  _SOS_BRANCH7   114
                   1381: #define  _SOS_BRANCH8   115
                   1382: #define  _SOS_BRANCH9   116
                   1383: #define  _SOS_BRANCH10  117
                   1384: #define  _SOS_BRANCH11  118
                   1385: #define  _SOS_BRANCH12  119
                   1386: #define  _SOS_BRANCH13  120
                   1387: #define  _SOS_BRANCH14  121
                   1388: 
                   1389: // define for the program change controller flag
                   1390: #define  _SOS_PROGRAM_CHANGE_FLAG   108
                   1391: 
                   1392: // END
                   1393: 
                   1394: 
                   1395: // 
                   1396: // #include "sosmdata.h"
                   1397: //
                   1398: /****************************************************************************
                   1399: 
                   1400:    File              : sosmdata.h
                   1401: 
                   1402:    Programmer(s)     : Don Fowler, Nick Skrepetos
                   1403:    Date              :
                   1404: 
                   1405:    Purpose           : Include Files For Zortech C++ Compiler
                   1406: 
                   1407:    Last Updated      :
                   1408: 
                   1409: ****************************************************************************
                   1410:                           Copyright(c) 1993,1994 Human Machine Interfaces 
                   1411:                                                        All Rights Reserved
                   1412: ****************************************************************************/
                   1413: 
                   1414: 
                   1415: #ifndef  _SOS_MIDI_DATA
                   1416: #define  _SOS_MIDI_DATA
                   1417: 
                   1418: // #include "sos.h"
                   1419: 
                   1420: #pragma pack(4)
                   1421: 
                   1422: extern   WORD     _wSOSMIDIDriverLinear[];
                   1423: extern   LPSTR    _lpSOSMIDIDriver[];
                   1424: extern   LPSTR    _lpSOSMIDIDriverCS[];
                   1425: extern   WORD     _wSOSMIDIMemHandle[];
                   1426: extern   BOOL     _wSOSMIDIDriverLoaded[];
                   1427: extern   WORD     _wSOSMIDIDriverType[];
                   1428: extern   WORD     _wSOSMIDIDriverID[];
                   1429: extern   DWORD    _dwSOSMIDITrackDeltaCurrent[][_SOS_MIDI_MAX_TRACKS];
                   1430: extern   WORD     _wSOSMIDIActiveTracks[];
                   1431: extern   WORD     _wSOSMIDITotalTracks[];
                   1432: extern   DWORD    _dwSOSMIDITrackDeltaTime[][_SOS_MIDI_MAX_TRACKS];
                   1433: extern   WORD     _wSOSMIDISongPaused[];
                   1434: extern   WORD     _wSOSMIDISongMuted[];
                   1435: extern   BOOL     _wSOSMIDISongActive[];
                   1436: extern   BYTE     _bSOSMIDIEventSize[];
                   1437: extern   BYTE     _bSOSMIDIEventSizeControl[];
                   1438: extern   _SOS_MIDI_CAPABILITIES far * _lpSOSMIDIDriverCaps[];
                   1439: extern   _SOS_MIDI_TRACK_DEVICE far * _sSOSMIDITrackMap[];   
                   1440: extern   _NDMF_MIDI_EVENT _huge *  _lpSOSMIDITrack[][_SOS_MIDI_MAX_TRACKS];
                   1441: extern   WORD  ( cdecl far *_lpSOSMIDIDrvFunction[ _SOS_MIDI_MAX_DRIVERS ][ _SOS_MIDI_DRV_FUNCTIONS ] )( LPSTR, WORD, WORD );   
                   1442: extern   _NDMF_FILE_HEADER far * _sSOSMIDISongHeader[];
                   1443: extern   _SOS_INIT_DRIVER        _sSOSDIGIInitDriver[];
                   1444: extern   WORD _wSOSMIDIEventHandle[];
                   1445: extern   BYTE  _szSOSMIDIDrvFile[];
                   1446: extern   _MIDIFILEHEADER    _sSOSMIDIDRVFileHeader;
                   1447: extern   _MIDIDRIVERHEADER  _sSOSMIDIDRVDriverHeader;
                   1448: extern   BOOL  _wSOSMIDISysInititalized;
                   1449: extern   WORD ( cdecl far *_lpSOSMIDICBCKDrvFunctions[] )( LPSTR, WORD, WORD );
                   1450: extern   VOID ( cdecl far *_lpSOSMIDICBCKFunctions )( LPSTR, WORD, WORD );
                   1451: extern   WORD _wMIDIDIGISampleQueueHead[];
                   1452: extern   WORD _wMIDIDIGISampleQueueTail[];
                   1453: extern   WORD _wMIDIDIGIMaxSamples[];
                   1454: extern   WORD _wMIDIDIGIUsedSamples[];
                   1455: extern   _DIGI_QUEUE_ELEMENT _sMIDIDIGIQueue[][ _MAX_VOICES ];
                   1456: 
                   1457: 
                   1458: extern   WORD ( cdecl far *_lpMIDIDIGIDrvFunctions[] )( LPSTR, WORD, WORD );
                   1459: extern   _SOS_START_SAMPLE far * _sMIDIDIGIStartSample[][ _MAX_INS ];
                   1460: extern   _HMI_INS_FILE_HEADER far * _sMIDIDIGIInsFileHeader[];
                   1461: extern   WORD _wMIDIDIGIDriverHandle[];
                   1462: extern   WORD _wMIDIDIGIDriverInitialized[];
                   1463: extern   WORD _wMIDIDIGITimerEventHandle[];
                   1464: extern   WORD _wMIDIDIGIDriverInitMIDI[];
                   1465: extern   WORD _wMIDIDIGIVelocitySensing[];
                   1466: extern   BYTE _szMIDIDIGIInsFileID[];
                   1467: 
                   1468: extern   BYTE  _bSOSMIDIMasterVolume;
                   1469: extern   BYTE  _bSOSMIDIDeviceChannelVolume[][ _SOS_MIDI_MAX_CHANNELS ];
                   1470: extern   BYTE  _bSOSMIDIMT32SendData;
                   1471: 
                   1472: extern   LPSTR lpFake;
                   1473: extern   WORD  wFake;
                   1474: 
                   1475: extern   _NDMF_TRACK_HEADER _huge *_lpSOSMIDITrackHeaders[][ _SOS_MIDI_MAX_TRACKS ];
                   1476: extern   BYTE  _bSOSMIDIChannelRemap[][ _SOS_MIDI_MAX_SONGS ][ _SOS_MIDI_MAX_CHANNELS ];
                   1477: extern   BYTE  _bSOSMIDIChannelPriority[][ _SOS_MIDI_MAX_CHANNELS ];
                   1478: extern   BYTE  _bSOSMIDIOwnerChannel[][ _SOS_MIDI_MAX_CHANNELS ];
                   1479: extern   BYTE  _bSOSMIDIOwnerSong[][ _SOS_MIDI_MAX_CHANNELS ];
                   1480: extern   _SOS_MIDI_CHANNEL_DATA _sSOSMIDIChannelData[][ _SOS_MIDI_MAX_CHANNELS ][ _SOS_MIDI_MAX_LEVELS ];
                   1481: extern   BYTE  _bSOSMIDIChannelDataIndex[][ _SOS_MIDI_MAX_SONGS ][ _SOS_MIDI_MAX_CHANNELS ];
                   1482: extern   BYTE  _bSOSMIDIData[];
                   1483: extern   BYTE  _bSOSMIDIData1[];
                   1484: extern   BYTE  _bSOSMIDIDeviceLowPriority[];
                   1485: extern   WORD  _wSOSMIDIChannelStealing;
                   1486: extern   BYTE  _bSOSMIDIDeviceChannelActive[][ _SOS_MIDI_MAX_CHANNELS ];
                   1487: extern   BYTE  _bSOSMIDIDeviceChannelAvailable[][ _SOS_MIDI_MAX_CHANNELS ];
                   1488: extern   BYTE  _bSOSMIDISongHandle;
                   1489: extern   BYTE  _szMIDIMIDIFileID[];
                   1490: extern   BYTE  _pSOSMIDIDriverPath[];
                   1491: extern   BYTE  _pSOSMIDITempDriverPath[];
                   1492: extern   WORD  sosMIDIData_Start;
                   1493: extern   WORD  sosMIDIData_End;
                   1494: extern   WORD  ( cdecl far *_lpSOSMIDIAWEDrvFunctions[5] )( LPSTR, WORD, WORD );
                   1495: extern   WORD  _wSOSGravisTimerHandle;
                   1496: extern   WORD  _wSOSMIDISongVolume[];
                   1497: 
                   1498: extern   _SOS_BRANCH_POINT far * _lpMIDIBranchData[][ _SOS_MIDI_MAX_TRACKS ];
                   1499: extern   WORD ( far *_lpSOSMIDIBranchCallback[] )( WORD, BYTE, BYTE );
                   1500: extern   WORD ( far *_lpSOSMIDILoopCallback[] )( WORD, BYTE, BYTE, BYTE );
                   1501: extern   WORD ( far *_lpSOSMIDITriggerCallback[][ 127 ] )( WORD, BYTE, BYTE );
                   1502: extern   BYTE _bSOSMIDIBranchOccurred;
                   1503: 
                   1504: extern   WORD  _wSOSMIDIVolumeFadeDirection[];
                   1505: extern   DWORD _dwSOSMIDIVolumeFadeFraction[];
                   1506: extern   DWORD _dwSOSMIDIVolumeFadeVolume[];
                   1507: extern   WORD  _wSOSMIDIVolumeFadeTicks[];
                   1508: extern   BYTE  _bSOSMIDIHandleVolumeFade[];
                   1509: extern   WORD  _wSOSDIGIMIDIHandle[];
                   1510: 
                   1511: extern   _SOS_MIDI_DIGI_CHANNEL _sMIDIDIGIChannel[];
                   1512: 
                   1513: extern   WORD ( cdecl far *_lpMIDIWAVEDrvFunctions[] )( LPSTR, WORD, WORD );
                   1514: extern   WORD  _wSOSMIDIChannelMuted[][ _SOS_MIDI_MAX_CHANNELS ];
                   1515: 
                   1516: extern   BYTE  _szPLYMIDIBuffer[];
                   1517: extern   WORD  _wPLYMIDIBufferIndex;
                   1518: extern   WORD  _wSOSMIDIDriverSize[];
                   1519: 
                   1520: #pragma pack()
                   1521: 
                   1522: #endif
                   1523: 
                   1524: 
                   1525: //
                   1526: // #include "sosmfnct.h"
                   1527: //
                   1528: /****************************************************************************
                   1529: 
                   1530:    File              : sosmfnct.h
                   1531: 
                   1532:    Programmer(s)     : Don Fowler, Nick Skrepetos
                   1533:    Date              :
                   1534: 
                   1535:    Purpose           : Include Files For Zortech C++ Compiler
                   1536: 
                   1537:    Last Updated      :
                   1538: 
                   1539: ****************************************************************************
                   1540:                           Copyright(c) 1993,1994 Human Machine Interfaces 
                   1541:                                                        All Rights Reserved
                   1542: ****************************************************************************/
                   1543: 
                   1544: #ifndef  _SOS_MIDI_FUNCTIONS
                   1545: #define  _SOS_MIDI_FUNCTIONS
                   1546: 
                   1547: #pragma pack(4)
                   1548: 
                   1549: VOID interrupt far sosMIDITimerHandler (  VOID  );
                   1550: WORD  sosMIDILockMemory                (  VOID  );
                   1551: WORD  sosMIDIUnLockMemory              (  VOID  );
                   1552: WORD  sosMIDIGetDeviceCaps             (  WORD, LPSOSMIDIDEVICECAPS  );
                   1553: WORD  sosMIDIInitSystem                (  LPSTR, WORD  );
                   1554: WORD  sosMIDIUnInitSystem              (  VOID  );
                   1555: WORD  sosMIDIInitDriver                (  WORD, _SOS_MIDI_HARDWARE far *,
                   1556:                                                                                 _SOS_MIDI_INIT_DRIVER far *, WORD far *  );
                   1557: WORD  sosMIDIUnInitDriver              (  WORD, BOOL  );
                   1558: WORD  sosMIDILoadDriver                (  WORD, WORD, LPSTR far *, LPSTR far *, PSTR, PSTR, WORD * );
                   1559: WORD  sosMIDIUnLoadDriver              (  WORD  );
                   1560: WORD  sosMIDIInitSong                  (  _SOS_MIDI_INIT_SONG far *,
                   1561:                                                                                  _SOS_MIDI_TRACK_DEVICE far *,
                   1562:                                                                                  WORD far * );
                   1563: WORD  sosMIDIUnInitSong                (  WORD  );
                   1564: WORD  sosMIDIResetSong                 (  WORD, _SOS_MIDI_INIT_SONG far *  );
                   1565: WORD  sosMIDIStartSong                 (  WORD  );  
                   1566: WORD  sosMIDIStopSong                  (  WORD  );  
                   1567: WORD  sosMIDIPauseSong                 (  WORD, WORD  );
                   1568: WORD  sosMIDIMuteSong                  (  WORD  );
                   1569: WORD  sosMIDIUnMuteSong                (  WORD  );
                   1570: WORD  sosMIDIResumeSong                (  WORD  );
                   1571: BOOL  sosMIDISongDone                  (  WORD  );  
                   1572: WORD  sosMIDISongAlterTempo            (  WORD, WORD  );  
                   1573: WORD  sosMIDIGetDeltaTime              (  LPSTR, DWORD far *  );
                   1574: WORD  sosMIDISongGetTimeToPlay         (  WORD  );  
                   1575: BYTE _huge * sosMIDINormalizePtr       (  BYTE _huge *  );
                   1576: WORD  sosMIDISetInsData                (  WORD, LPSTR, WORD  );
                   1577: WORD  sosMIDIResetDriver               (  WORD  );
                   1578: BOOL  sosMIDIHandleMIDIData            (  WORD, LPSTR, WORD, WORD  );
                   1579: WORD  sosMIDISendMIDIData              (  WORD, LPSTR, WORD  );
                   1580: // NEW
                   1581: VOID  sosMIDISetTrackState             (  WORD, WORD, WORD  );
                   1582: // END
                   1583: 
                   1584: // compiled in drivers function interface
                   1585: LPSTR digiGetCallTable                 (  VOID  );
                   1586: LPSTR callbackGetCallTable             (  VOID  );
                   1587: LPSTR aweGetCallTable                  (  VOID  );
                   1588: 
                   1589: WORD cdecl far callbackSendData             (  LPSTR, WORD, WORD  );
                   1590: WORD cdecl far callbackInit                 (  LPSTR, WORD, WORD  );
                   1591: WORD cdecl far callbackUnInit               (  LPSTR, WORD, WORD  );
                   1592: WORD cdecl far callbackReset                (  LPSTR, WORD, WORD  );
                   1593: WORD cdecl far callbackSetInstrumentData    (  LPSTR, WORD, WORD  );
                   1594: 
                   1595: WORD cdecl far aweSendData             (  LPSTR, WORD, WORD  );
                   1596: WORD cdecl far aweInit                 (  LPSTR, WORD, WORD  );
                   1597: WORD cdecl far aweUnInit               (  LPSTR, WORD, WORD  );
                   1598: WORD cdecl far aweReset                (  LPSTR, WORD, WORD  );
                   1599: WORD cdecl far aweSetInstrumentData    (  LPSTR, WORD, WORD  );
                   1600: 
                   1601: // function prototypes
                   1602: WORD cdecl far digiSendData             (  LPSTR, WORD, WORD  );
                   1603: WORD cdecl far digiInit                 (  LPSTR, WORD, WORD  );
                   1604: WORD cdecl far digiUnInit               (  LPSTR, WORD, WORD  );
                   1605: WORD cdecl far digiReset                (  LPSTR, WORD, WORD  );
                   1606: WORD cdecl far digiSetInstrumentData    (  LPSTR, WORD, WORD  );
                   1607: 
                   1608: LPSTR waveGetCallTable                 (  VOID  );
                   1609: WORD cdecl far waveSendData             (  LPSTR, WORD, WORD  );
                   1610: WORD cdecl far waveInit                 (  LPSTR, WORD, WORD  );
                   1611: WORD cdecl far waveUnInit               (  LPSTR, WORD, WORD  );
                   1612: WORD cdecl far waveReset                (  LPSTR, WORD, WORD  );
                   1613: WORD cdecl far waveSetInstrumentData    (  LPSTR, WORD, WORD  );
                   1614: VOID cdecl far waveSampleCallback(  WORD, WORD, WORD  );
                   1615: 
                   1616: VOID        digiQueueInit           (  WORD, WORD  );
                   1617: VOID        digiQueueUnInit         (  WORD  );
                   1618: WORD        digiQueueAddItem        (  WORD, WORD, WORD, WORD, WORD );
                   1619: WORD        digiQueueGetItem        (  WORD, WORD  );
                   1620: WORD        digiQueueGetItemWAVE    (  WORD  );
                   1621: WORD        digiQueueDeleteItem     (  WORD, WORD  );
                   1622: WORD        digiQueueDeleteItemWAVE (  WORD, WORD  );
                   1623: WORD        digiQueueDeleteItemMIDI (  WORD, WORD, WORD  );
                   1624: WORD        digiQueueFindItemMIDI   (  WORD, WORD, WORD  );
                   1625: 
                   1626: // function prototypes
                   1627: VOID cdecl far digiSampleCallback(  WORD, WORD, WORD  );
                   1628: 
                   1629: WORD        sosMIDIRegisterBranchFunction (  WORD, WORD ( far * )( WORD, BYTE, BYTE )  );
                   1630: WORD        sosMIDIRegisterLoopFunction   (  WORD, WORD ( far * )( WORD, BYTE, BYTE, BYTE )  );
                   1631: WORD        sosMIDIRegisterTriggerFunction(  WORD, BYTE, WORD ( far * )( WORD, BYTE, BYTE ) );
                   1632: WORD        sosMIDIBranchToTrackLocation  (  WORD, BYTE, BYTE  );
                   1633: WORD        sosMIDIBranchToSongLocation   (  WORD, BYTE  );
                   1634: 
                   1635: #ifdef __cplusplus
                   1636: extern "C" {
                   1637: #endif
                   1638: 
                   1639: extern   void  cdecl sosMIDIDRVGetCapsInfo( LPSTR, LPSTR, _SOS_MIDI_CAPABILITIES far * );
                   1640: extern   void  cdecl sosMIDIDRVGetCapsPtr ( LPSTR, LPSTR, _SOS_MIDI_CAPABILITIES far * );
                   1641: extern   void  cdecl sosMIDIDRVGetFuncsPtr( LPSTR, LPSTR, LPSTR );
                   1642: extern   LPSTR cdecl sosMIDIDRVSpecialFunction( LPSTR, LPSTR, WORD );
                   1643: extern   WORD cdecl xgetES( void );
                   1644: 
                   1645: #ifdef __cplusplus
                   1646: }
                   1647: #endif 
                   1648: 
                   1649: BOOL sosMIDIResetChannelStealing (  WORD  );
                   1650: WORD sosMIDIEnableChannelStealing(  WORD  );
                   1651: VOID far sosMIDISongHandler( VOID );
                   1652: 
                   1653: WORD sosMIDISetMT32InsData       (  WORD, LPSTR, WORD  );
                   1654: WORD sosMIDISetMasterVolume      (  BYTE  );
                   1655: VOID far sosMIDIMT32Timer        (  VOID  );
                   1656: 
                   1657: WORD sosMIDISetSongVolume        (  WORD, BYTE  );
                   1658: WORD        sosMIDIFadeSong            (  WORD, WORD, WORD, BYTE, BYTE, WORD  );       
                   1659: 
                   1660: // functions for memory locking
                   1661: VOID  sosMIDICaps_Start( VOID );
                   1662: VOID  sosMIDICaps_End( VOID );
                   1663: VOID  sosMIDICbck_Start( VOID );
                   1664: VOID  sosMIDICbck_End( VOID );
                   1665: VOID  sosMIDIDigi_Start( VOID );
                   1666: VOID  sosMIDIDigi_End( VOID );
                   1667: VOID  sosMIDIDone_Start( VOID );
                   1668: VOID  sosMIDIDone_End( VOID );
                   1669: VOID  sosMIDIDq_Start( VOID );
                   1670: VOID  sosMIDIDq_End( VOID );
                   1671: VOID  sosMIDIInit_Start( VOID );
                   1672: VOID  sosMIDIInit_End( VOID );
                   1673: VOID  sosMIDIIns_Start( VOID );
                   1674: VOID  sosMIDIIns_End( VOID );
                   1675: VOID  sosMIDILoad_Start( VOID );
                   1676: VOID  sosMIDILoad_End( VOID );
                   1677: VOID  sosMIDIPause_Start( VOID );
                   1678: VOID  sosMIDIPause_End( VOID );
                   1679: VOID  sosMIDIPtr_Start( VOID );
                   1680: VOID  sosMIDIPtr_End( VOID );
                   1681: VOID  sosMIDISong_Start( VOID );
                   1682: VOID  sosMIDISong_End( VOID );
                   1683: VOID  sosMIDISt_Start( VOID );
                   1684: VOID  sosMIDISt_End( VOID );
                   1685: VOID  sosMIDITmpo_Start( VOID );
                   1686: VOID  sosMIDITmpo_End( VOID );
                   1687: VOID  sosMIDITmr_Start( VOID );
                   1688: VOID  sosMIDITmr_End( VOID );
                   1689: 
                   1690: void    StringOut( BYTE X, BYTE Y, BYTE * String, BYTE Color );
                   1691: 
                   1692: #pragma pack()
                   1693: 
                   1694: #endif
                   1695: 
                   1696: 
                   1697: #endif
                   1698: 
                   1699: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.