Logo Search packages:      
Sourcecode: xabacus version File versions  Download package

vms_amd.h

#ifndef AMD_H
#define AMD_H 1

#if !defined( lint ) && !defined( SABER )
/* #ident   "@(#)vms_amd.h    4.14 99/06/17 xlockmore" */

#endif

/*-
 * VMS sound stuff
 *
 * See xlock.c for copying information.
 *
 * Revision History:
 * 199?: Jouk Jansen <joukj@alpha.chem.uva.nl> contributed this
 *       which he found at http://axp616.gsi.de:8080/www/vms/mzsw.html
 */

/** amd.h **/

/*-
 *    AMD access for the SODRIVER
 */

/*-
 *    Define the SO Indirect Registers
 */
#define MAP_X           0x01
#define MAP_R           0x02
#define MAP_GX          0x03
#define MAP_GR          0x04
#define MAP_GER         0x05
#define MAP_SGCR  0x06
#define MAP_FTGR  0x07
#define MAP_ATGR  0x08
#define MAP_MMR1  0x09
#define MAP_MMR2  0x0A
#define MAP_PERFORM     0x0B
#define MUX_MCR1  0x0C
#define MUX_MCR2  0x0D
#define MUX_MCR3  0x0E
#define MUX_MCR4  0x0F
#define MUX_PERFORM     0x10
#define INIT_INIT 0x11

/*-
 *    Define SO ACPCONTROL (IOCTL) Subfunctions
 */
#define AMD_SETQSIZE    1
#define AMD_GETQSIZE    2
#define AMD_GETREG      3
#define AMD_SETREG      4
#define AMD_READSTART   5
#define AMD_STOP  6
#define AMD_PAUSE 7
#define AMD_RESUME      8
#define AMD_READQ 9
#define AMD_WRITEQ      10
#define AMD_DEBUG 11

/*-
 *    *** HACK ***
 *
 *    GER and GR values for Volume Control for the SODRIVER.  These values
 *    where determine via FTS (available from PUBLIC.TGV.COM) which allowed
 *    me to see the $QIO[W] calls made to the SODRIVER.  How DECsound
 *    actually calculates them is beyond me.  This table is index by percentage.
 *    For Example, if you want the volume at 45% then you use the following
 *    values:     VolumeTable[44].ger_value and VolumeTable[44].gr_value.
 *
 *    *** HACK ***
 */

00074 static struct vtable {
      unsigned short ger_value;
      unsigned short gr_value;
} VolumeTable[] = {

/* GER            GR    */
      {
            0XAAAA, 0X91F9
      },                /* 001 % */
      {
            0XAAAA, 0X91F9
      },                /* 002 % */
      {
            0X9BBB, 0X91F9
      },                /* 003 % */
      {
            0X9BBB, 0X91F9
      },                /* 004 % */
      {
            0X79AC, 0X91F9
      },                /* 005 % */
      {
            0X79AC, 0X91C5
      },                /* 006 % */
      {
            0X099A, 0X91C5
      },                /* 007 % */
      {
            0X099A, 0X91C5
      },                /* 008 % */
      {
            0X4199, 0X91C5
      },                /* 009 % */
      {
            0X3199, 0X91B6
      },                /* 010 % */
      {
            0X3199, 0X91B6
      },                /* 011 % */
      {
            0X9CDE, 0X91B6
      },                /* 012 % */
      {
            0X9CDE, 0X91B6
      },                /* 013 % */
      {
            0X9DEF, 0X9212
      },                /* 014 % */
      {
            0X9DEF, 0X9212
      },                /* 015 % */
      {
            0X749C, 0X9212
      },                /* 016 % */
      {
            0X749C, 0X9212
      },                /* 017 % */
      {
            0X549D, 0X91A4
      },                /* 018 % */
      {
            0X6AAE, 0X91A4
      },                /* 019 % */
      {
            0X6AAE, 0X91A4
      },                /* 020 % */
      {
            0XABCD, 0X91A4
      },                /* 021 % */
      {
            0XABCD, 0X9222
      },                /* 022 % */
      {
            0XABDF, 0X9222
      },                /* 023 % */
      {
            0XABDF, 0X9222
      },                /* 024 % */
      {
            0X7429, 0X9222
      },                /* 025 % */
      {
            0X64AB, 0X9232
      },                /* 026 % */
      {
            0X64AB, 0X9232
      },                /* 027 % */
      {
            0X6AFF, 0X9232
      },                /* 028 % */
      {
            0X6AFF, 0X9232
      },                /* 029 % */
      {
            0X2ABD, 0X9232
      },                /* 030 % */
      {
            0X2ABD, 0X92FB
      },                /* 031 % */
      {
            0XBEEF, 0X92FB
      },                /* 032 % */
      {
            0XBEEF, 0X92FB
      },                /* 033 % */
      {
            0X5CCE, 0X92FB
      },                /* 034 % */
      {
            0X75CD, 0X92AA
      },                /* 035 % */
      {
            0X75CD, 0X92AA
      },                /* 036 % */
      {
            0X0099, 0X92AA
      },                /* 037 % */
      {
            0X0099, 0X92AA
      },                /* 038 % */
      {
            0X554C, 0X9327
      },                /* 039 % */
      {
            0X554C, 0X9327
      },                /* 040 % */
      {
            0X43DD, 0X9327
      },                /* 041 % */
      {
            0X43DD, 0X9327
      },                /* 042 % */
      {
            0X33DD, 0X93B3
      },                /* 043 % */
      {
            0X52EF, 0X93B3
      },                /* 044 % */
      {
            0X52EF, 0X93B3
      },                /* 045 % */
      {
            0X771B, 0X93B3
      },                /* 046 % */
      {
            0X771B, 0X94B3
      },                /* 047 % */
      {
            0X5542, 0X94B3
      },                /* 048 % */
      {
            0X5542, 0X94B3
      },                /* 049 % */
      {
            0X41DD, 0X94B3
      },                /* 050 % */
      {
            0X31DD, 0X9F91
      },                /* 051 % */
      {
            0X31DD, 0X9F91
      },                /* 052 % */
      {
            0X441F, 0X9F91
      },                /* 053 % */
      {
            0X431F, 0X9F91
      },                /* 054 % */
      {
            0X431F, 0X9CEA
      },                /* 055 % */
      {
            0X331F, 0X9CEA
      },                /* 056 % */
      {
            0X331F, 0X9CEA
      },                /* 057 % */
      {
            0X40DD, 0X9CEA
      },                /* 058 % */
      {
            0X1100, 0X9BF9
      },                /* 059 % */
      {
            0X1100, 0X9BF9
      },                /* 060 % */
      {
            0X440F, 0X9BF9
      },                /* 061 % */
      {
            0X440F, 0X9BF9
      },                /* 062 % */
      {
            0X411F, 0X9AAC
      },                /* 063 % */
      {
            0X411F, 0X9AAC
      },                /* 064 % */
      {
            0X311F, 0X9AAC
      },                /* 065 % */
      {
            0X311F, 0X9AAC
      },                /* 066 % */
      {
            0X5520, 0X9A4A
      },                /* 067 % */
      {
            0X10DD, 0X9A4A
      },                /* 068 % */
      {
            0X10DD, 0X9A4A
      },                /* 069 % */
      {
            0X4211, 0X9A4A
      },                /* 070 % */
      {
            0X4211, 0XA222
      },                /* 071 % */
      {
            0X410F, 0XA222
      },                /* 072 % */
      {
            0X410F, 0XA222
      },                /* 073 % */
      {
            0X111F, 0XA222
      },                /* 074 % */
      {
            0X600B, 0XA2A2
      },                /* 075 % */
      {
            0X600B, 0XA2A2
      },                /* 076 % */
      {
            0X00DD, 0XA2A2
      },                /* 077 % */
      {
            0X00DD, 0XA2A2
      },                /* 078 % */
      {
            0X4210, 0XA2A2
      },                /* 079 % */
      {
            0X4210, 0XA68D
      },                /* 080 % */
      {
            0X400F, 0XA68D
      },                /* 081 % */
      {
            0X400F, 0XA68D
      },                /* 082 % */
      {
            0X110F, 0XA68D
      },                /* 083 % */
      {
            0X2210, 0XAAA3
      },                /* 084 % */
      {
            0X2210, 0XAAA3
      },                /* 085 % */
      {
            0X7200, 0XAAA3
      },                /* 086 % */
      {
            0X7200, 0XAAA3
      },                /* 087 % */
      {
            0X4200, 0XB242
      },                /* 088 % */
      {
            0X4200, 0XB242
      },                /* 089 % */
      {
            0X2110, 0XB242
      },                /* 090 % */
      {
            0X2110, 0XB242
      },                /* 091 % */
      {
            0X100F, 0XBB52
      },                /* 092 % */
      {
            0X2200, 0XBB52
      },                /* 093 % */
      {
            0X2200, 0XBB52
      },                /* 094 % */
      {
            0X1110, 0XBB52
      },                /* 095 % */
      {
            0X1110, 0XCB52
      },                /* 096 % */
      {
            0X000B, 0XCBB2
      },                /* 097 % */
      {
            0X000B, 0XCBB2
      },                /* 098 % */
      {
            0X2100, 0XCBB2
      },                /* 099 % */
      {
            0X000F, 0X0808
      }                 /* 100 % */
};

#define volume_table_size ((unsigned)sizeof(VolumeTable)/(unsigned)sizeof(VolumeTable[0]))

/*-
 *    Constants for Speaker selection
 */
#define     SO_EXTERNAL 0
#define SO_INTERNAL     2

/*-
 *    How many bytes of sound / second
 */
#define SO_BYTES_PER_SECOND   (1024*8)

extern unsigned long int AmdInitialize(char *device, int volume);
extern unsigned long int AmdSelect(int s);
extern unsigned long int AmdWrite(char *buffer, int len);

#endif /* !AMD_H */

Generated by  Doxygen 1.6.0   Back to index