home *** CD-ROM | disk | FTP | other *** search
/ HomeWare 14 / HOMEWARE14.bin / music / vaisdk.arj / VBEAI.H < prev    next >
Text File  |  1994-04-10  |  22KB  |  578 lines

  1.  
  2. ;   /*\
  3. ;---|*|--------------------====< VESA Sound Include >====--------------------
  4. ;---|*|
  5. ;---|*| Copyright (c) 1993,1994  V.E.S.A, Inc. All Rights Reserved.
  6. ;---|*|
  7. ;---|*| VBE/AI 1.0 Specification
  8. ;---|*|    February 2, 1994. 1.00 release
  9. ;---|*|
  10. ;---|*| Additional Changes:
  11. ;---|*|   03/03 - Added the full list of Volume feature bit as #defines
  12. ;---|*|
  13. ;   \*/
  14.  
  15. #define VBEAI_VERSION   0x10h     // first VBE/AI version
  16.  
  17. ;   /*\
  18. ;---|*|----====< VESA Services Definitions >====----
  19. ;   \*/
  20.  
  21. #define INTHOOK     0x0010
  22.  
  23. ;   // VAI query interface functions
  24.  
  25. #define VESAFUNCID  0x4f13    // function ID
  26.  
  27. #define VESAFUNC0   0x0000    // VESA Function #0 -- reserved
  28. #define VESAFUNC1   0x0001    // VESA Function #1 -- Locate the device
  29. #define VESAFUNC2   0x0002    // VESA Function #2 -- Query the device
  30. #define VESAFUNC3   0x0003    // VESA Function #3 -- Open the device
  31. #define VESAFUNC4   0x0004    // VESA Function #4 -- Close the device
  32. #define VESAFUNC5   0x0005    // VESA Function #5 -- Driver Unload
  33. #define VESAFUNC6   0x0006    // VESA Function #6 -- Driver Chain/Unchain
  34.  
  35. ;   // VAI function 2 queries
  36.  
  37. #define VESAQUERY1  0x0001    // get length of GeneralDeviceClass
  38. #define VESAQUERY2  0x0002    // get copy   of GeneralDeviceClass
  39. #define VESAQUERY3  0x0003    // get length of Volume Info Structure
  40. #define VESAQUERY4  0x0004    // get copy   of Volume Info Structure
  41. #define VESAQUERY5  0x0005    // get length of Volume Services Structure
  42. #define VESAQUERY6  0x0006    // get copy   of Volume Services Structure
  43. #define VESAENDQUERY    0x000f    // subfunctions 6 - 15 are reserved
  44.                   // subfunctions 16+ are used by the devices
  45. ;   // VAI Device types
  46.  
  47. #define WAVDEVICE   0x0001
  48. #define MIDDEVICE   0x0002
  49. #define VOLDEVICE   0x0003
  50.  
  51. #define WAVESERVICES    0x57415653 // ascii "WAVS"
  52. #define MIDISERVICES    0x4D494453 // ascii "MIDS"
  53.  
  54.  
  55. ;   /*\
  56. ;---|*|----====< Volume Services >====----
  57. ;   \*/
  58.  
  59.     typedef struct {
  60.  
  61.         // housekeeping
  62.  
  63.         char viname[4];     // name of the structure
  64.         long vilength;      // structure length
  65.  
  66.         // hardware vendor name
  67.  
  68.         long viversion;     // driver software version
  69.         char vivname[32];       // vendor name, etc.
  70.         char viprod[32];        // vendor product name
  71.         char vichip[32];        // vendor chip/hardware description
  72.         char viboardid;     // installed board #
  73.         char viunused[3];       // unused data
  74.  
  75.         char vicname[24];       // mixer channel name
  76.  
  77.         long vifeatures;
  78.  
  79.         int  vimin;         // minimum volume setting
  80.         int  vimax;         // maximum volume setting
  81.         int  vicross;       // attenuation/gain crossover
  82.  
  83.     } VolumeInfo, far *fpVolInfo;
  84.  
  85. ;  // Volume feature bits
  86.  
  87. #define VOLSTEREO   0x0001      // Stereo Volume control available
  88. #define VOLLOPASS   0x0004      // Low Pass Filter is available
  89. #define VOLHIPASS   0x0008      // High Pass Filter is available
  90. #define VOLPARATC   0x0010      // Parametric Tone Control is available
  91. #define VOLSELOUT   0x0020      // selectable output paths
  92. #define VOLAZIMUTH  0x0100      // Azimuth Field positioning supported
  93. #define VOLPHIMUTH  0x0200      // Phi Field positioning supported
  94. #define VOLMASTER   0x80000000  // Master Volume device
  95.  
  96. ;  // VOL device check messages
  97.  
  98. #define VOLFILTERRANGE        0x0011
  99. #define VOLFILTERSETTING      0x0012
  100. #define VOLFILTERCURRENT      0x0013
  101. #define VOLTONERANGE          0x0014
  102. #define VOLTONESETTING        0x0015
  103. #define VOLTONECURRENT        0x0016
  104. #define VOLPATH           0x0017
  105. #define VOLGETIOADDRESS       0x0018
  106. #define VOLOEMSTARTINGDC      0x0080    // vendors can add DevChks above 0x80
  107.  
  108.  
  109. ;   /*\
  110. ;---|*|----====< Volume services Structure >====----
  111. ;   \*/
  112.  
  113.     typedef struct {
  114.  
  115.         // housekeeping
  116.  
  117.         char vsname[4];     // name of the structure
  118.         long vslength;      // structure length
  119.  
  120.         char vsfuture[16];      // 16 bytes for future expansion
  121.  
  122.         long (pascal far *vsDeviceCheck  ) ( int, long );
  123.         long (pascal far *vsSetVolume    ) ( int, int, int );
  124.         long (pascal far *vsSetFieldVol  ) ( int, int, int );
  125.         int  (pascal far *vsToneControl  ) ( int, int, int, int );
  126.         long (pascal far *vsFilterControl) ( int, int, int );
  127.         void (pascal far *vsOutputPath   ) ( int );
  128.         void (pascal far *vsResetChannel ) ( void );
  129.         int  (pascal far *vsGetLastError ) ( void );
  130.  
  131.     } VolumeService, far *fpVolServ;
  132.  
  133. ;   // VOL SetVolume message
  134.  
  135. #define VOL_USERSETTING 0x01        // User master volume setting
  136. #define VOL_APPSETTING  0x02        // application master volume setting
  137.  
  138. ;   // VOL error message
  139.  
  140. #define VOL_NOSUPPORT   0x01        // unsupported feature/function
  141. #define VOL_BADVALUE    0x02        // out of range parameter value
  142. #define VOL_HWFAILURE   0x80        // vendors specific errors
  143.  
  144.  
  145. ;   /*\
  146. ;---|*|----====< WAVE Info Structure >====----
  147. ;   \*/
  148.  
  149.         typedef struct {
  150.  
  151.             // housekeeping
  152.  
  153.         char winame[4];     // name of the structure
  154.         long wilength;      // structure length
  155.  
  156.         // hardware vendor name
  157.  
  158.         long wiversion;     // driver software version
  159.         char wivname[32];       // vendor name, etc. (ASCIIZ string)
  160.         char wiprod[32];        // vendor product name
  161.         char wichip[32];        // vendor chip/hardware description
  162.         char wiboardid;     // installed board #
  163.         char wiunused[3];       // unused data
  164.  
  165.             // device specific information
  166.  
  167.         long wifeatures;        // feature bits
  168.         int  widevpref;     // user determined preference field
  169.             int  wimemreq;              // memory required for driver use.
  170.         int  witimerticks;      // # of timer tick callbacks per second
  171.  
  172.         int  wiChannels;        // 1 = mono, 2 = stereo. Stereo is
  173.                     // assumed to be interleaved data.
  174.         int  wiSampleSize;      // Bit field of max sample sizes
  175.  
  176.     } WAVEInfo, far *fpWAVInfo;
  177.  
  178. ;   // WAVE feature bit definitions
  179.  
  180. #define WAVEMP8K    0x00000001  // 8000hz Mono Playback.
  181. #define WAVEMR8K    0x00000002  // 8000hz Mono Record.
  182. #define WAVESR8K    0x00000004  // 8000hz Stereo Record.
  183. #define WAVESP8K    0x00000008  // 8000hz Stereo Playback.
  184. #define WAVEFD8K    0x00000010  // 8000hz Full Duplex Play/Record.
  185.  
  186. #define WAVEMP11K   0x00000020  // 11025hz Mono Playback.
  187. #define WAVEMR11K   0x00000040  // 11025hz Mono Record.
  188. #define WAVESR11K   0x00000080  // 11025hz Stereo Record.
  189. #define WAVESP11K   0x00000100  // 11025hz Stereo Playback.
  190. #define WAVEFD11K   0x00000200  // 11025hz Full Duplex Play/Record.
  191.  
  192. #define WAVEMP22K   0x00000400  // 22050hz Mono Playback.
  193. #define WAVEMR22K   0x00000800  // 22050hz Mono Record.
  194. #define WAVESR22K   0x00001000  // 22050hz Stereo Record.
  195. #define WAVESP22K   0x00002000  // 22050hz Stereo Playback.
  196. #define WAVEFD22K   0x00004000  // 22050hz Full Duplex Play/Record.
  197.  
  198. #define WAVEMP44K   0x00008000  // 44100hz Mono Playback.
  199. #define WAVEMR44K   0x00010000  // 44100hz Mono Record.
  200. #define WAVESR44K   0x00020000  // 44100hz Stereo Record.
  201. #define WAVESP44K   0x00040000  // 44100hz Stereo Playback.
  202. #define WAVEFD44K   0x00080000  // 44100hz Full Duplex Play/Record.
  203.  
  204. #define WAVEPREPARE 0x08000000  // driver must pre handle the data
  205. #define WAVEVARIPMONO   0x10000000  // Variable Sample mono   playback
  206. #define WAVEVARIPSTER   0x20000000  // Variable Sample stereo playback
  207. #define WAVEVARIRMONO   0x40000000  // Variable Sample mono   record
  208. #define WAVEVARIRSTER   0x80000000  // Variable Sample stereo record
  209.  
  210. ;   // WAVE device check messages
  211.  
  212. #define WAVECOMPRESSION       0x0011
  213. #define WAVEDRIVERSTATE       0x0012
  214. #define WAVEGETCURRENTPOS     0x0013
  215. #define WAVESAMPLERATE        0x0014
  216. #define WAVESETPREFERENCE     0x0015
  217. #define WAVEGETDMAIRQ         0x0016
  218. #define WAVEGETIOADDRESS      0x0017
  219. #define WAVEGETMEMADDRESS     0x0018
  220. #define WAVEGETMEMFREE        0x0019
  221. #define WAVEFULLDUPLEX        0x001A
  222. #define WAVEGETBLOCKSIZE      0x001B
  223. #define WAVEGETPCMFORMAT      0x001C
  224. #define WAVEENAPCMFORMAT      0x001D
  225. #define WAVEOEMSTARTINGDC     0x0080    // vendors can add DevChks above 0x80
  226.  
  227. ;   // types of compression
  228.  
  229. #define WAVE_IMA_PLAY         0x0001
  230. #define WAVE_ALAW_PLAY        0x0002
  231. #define WAVE_ULAW_PLAY        0x0003
  232.  
  233. #define WAVE_IMA_RECORD       0x0011
  234. #define WAVE_ALAW_RECORD      0x0012
  235. #define WAVE_ULAW_RECORD      0x0013
  236.  
  237. ;   // sample data sizes
  238.  
  239. #define WAVE08BITPLAY         0x0001
  240. #define WAVE16BITPLAY         0x0002
  241. #define WAVE08BITREC          0x0010
  242. #define WAVE16BITREC          0x0020
  243.  
  244.  
  245. ;   /*\
  246. ;---|*|----====< WAVE Audio Services >====----
  247. ;   \*/
  248.  
  249. ;   //  The following is a description of the contents of the WAVE Audio
  250. ;   //  Services. For the most part, this structure is read-only to
  251. ;   //  the application. The only two fields the application can write
  252. ;   //  are the callback fields.
  253.  
  254.     typedef struct {
  255.  
  256.         // housekeeping
  257.  
  258.         char wsname[4];     // name of the structure
  259.         long wslength;      // structure length
  260.  
  261.         char wsfuture[16];      // 16 bytes for future expansion
  262.  
  263.         // device driver functions
  264.  
  265.         long (pascal far *wsDeviceCheck   ) ( int, long );
  266.         long (pascal far *wsPCMInfo       ) ( int, long, int, int, int );
  267.         int  (pascal far *wsPlayBlock     ) ( int, long );
  268.         int  (pascal far *wsPlayCont      ) ( void far *, long, long );
  269.  
  270.         int  (pascal far *wsRecordBlock   ) ( int, long );
  271.         int  (pascal far *wsRecordCont    ) ( void far *, long, long );
  272.         int  (pascal far *wsPauseIO       ) ( int );
  273.         int  (pascal far *wsResumeIO      ) ( int );
  274.  
  275.         int  (pascal far *wsStopIO        ) ( int );
  276.         int  (pascal far *wsWavePrepare   ) ( int,int,int,void far *,long );
  277.         int  (pascal far *wsWaveRegister  ) ( void huge *,long );
  278.  
  279.         int  (pascal far *wsGetLastError  ) ( void );
  280.         void (pascal far *wsTimerTick     ) ( void );
  281.  
  282.         // callback filled in by the application
  283.  
  284.         void (pascal far *wsApplPSyncCB ) ( int, void far *, long, long ); //play
  285.         void (pascal far *wsApplRSyncCB ) ( int, void far *, long, long ); //rec
  286.  
  287.     } WAVEService, far *fpWAVServ;
  288.  
  289. ;   // error messages
  290.  
  291. #define WAV_NOSUPPORT       1   // unsupported feature/function
  292. #define WAV_BADSAMPLERATE   2
  293. #define WAV_BADBLOCKLENGTH  3
  294. #define WAV_BADBLOCKADDR    4
  295. #define WAV_BADLOSTIRQ      5   // app. missed an IRQ
  296. #define WAV_BADPCMDATA      6   // don't understand the PCM size/format
  297. #define WAV_HWFAILURE          80h  // vendors specific errors
  298.  
  299.  
  300. ;   /*\
  301. ;---|*|----====< MIDI Info Structure >====----
  302. ;   \*/
  303.  
  304.     typedef struct {
  305.  
  306.         // housekeeping
  307.  
  308.         char miname[4];     // name of the structure
  309.         long milength;      // structure length
  310.  
  311.         // hardware vendor name
  312.  
  313.         long miversion;     // driver software version
  314.         char mivname[32];       // vendor name, etc. (ASCIIZ string)
  315.         char miprod[32];        // vendor product name
  316.         char michip[32];        // vendor chip/hardware description
  317.         char miboardid;     // installed board #
  318.         char miunused[3];       // unused data
  319.  
  320.         char milibrary[14];     // the patch library name. file name
  321.                     // only - 8 name char, 3 ext char
  322.         // Feature list
  323.  
  324.         long mifeatures;        // feature bits
  325.         int  midevpref;     // user determined preference field
  326.         int  mimemreq;      // memory required for driver use
  327.         int  mitimerticks;      // # of timer tick callbacks per second
  328.  
  329.         int  miactivetones;     // max # of tones (voices/partials/etc)
  330.  
  331.     } MIDIInfo, far *fpMIDInfo;
  332.  
  333. ;   // MIDI feature bits
  334.  
  335. #define MIDIFRESVD1 0x00000001  // reserved for GM extensions
  336. #define MIDIFRESVD2 0x00000002  // reserved for GM extensions
  337. #define MIDIFRESVD3 0x00000004  // reserved for GM extensions
  338. #define MIDIFRESVD4 0x00000008  // reserved for GM extensions
  339. #define MIDIFXMITR  0x00000010  // Transmitter/Receiver only.
  340. #define MIDIFPRELD  0x00000020  // Patches preloaded.
  341. #define MIDIFTIMEST     0x00000040      // MIDI receive has time stamp.
  342. #define MIDIINTR    0x00000100  // MIDI interrupt driven input supported
  343. #define MIDIPOLL    0x00000200  // MIDI polled input supported
  344. #define MIDIREMOTELD    0x00000400  // MIDI remote patches supported
  345.  
  346. ;   // MIDI device check messages
  347.  
  348. #define MIDITONES         0x0011    // return available tones
  349. #define MIDIPATCHTYPE         0x0012    // return TRUE/FALSE if patch is understood
  350. #define MIDISETPREFERENCE     0x0013    // set the preference
  351. #define MIDIVOICESTEAL        0x0014    // allow/disallow voice stealing
  352. #define MIDIGETFIFOSIZES      0x0015
  353. #define MIDIGETDMAIRQ         0x0016
  354. #define MIDIGETIOADDRESS      0x0017
  355. #define MIDIGETMEMADDRESS     0x0018
  356. #define MIDIGETMEMFREE        0x0019
  357. #define MIDIOEMSTARTINGDC     0x0080h   // vendors can add DevChks above 0x80
  358.  
  359. ;   // MIDI Registered Patch Types
  360.  
  361. #define MIDI_PATCH_OPL2       0x0010
  362. #define MIDI_PATCH_OPL3       0x0011
  363.  
  364.  
  365. ;   /*\
  366. ;---|*|----====< MIDI Audio Services Structure >====----
  367. ;   \*/
  368.  
  369.     // Synthesizer Services Structure
  370.  
  371.     typedef struct {
  372.  
  373.          // housekeeping
  374.  
  375.          char msname[4];        // name of the structure
  376.          long mslength;     // structure length
  377.  
  378.          // runtime data
  379.  
  380.          int  mspatches[16];    // patches loaded table bit field
  381.          char msfuture[16];     // 16 bytes for future expansion
  382.  
  383.          // device driver functions
  384.  
  385.          long ( pascal far *msDeviceCheck  ) ( int, long );
  386.          int  ( pascal far *msGlobalReset  ) ( void );
  387.          int  ( pascal far *msMIDImsg      ) ( char far *, int );
  388.          void ( pascal far *msPollMIDI     ) ( int );
  389.          int  ( pascal far *msPreLoadPatch ) ( int, int, void far *, long );
  390.          int  ( pascal far *msUnloadPatch  ) ( int, int );
  391.          void ( pascal far *msTimerTick    ) ( void );
  392.          int  ( pascal far *msGetLastError ) ( void );
  393.  
  394.          // callbacks filled in by the application
  395.  
  396.          void ( pascal far *msApplFreeCB ) ( int, int, void far *, long );
  397.          void ( pascal far *msApplMIDIIn ) ( int, int, char, long );
  398.  
  399.     } MIDIService, far *fpMIDServ;
  400.  
  401. #define MID_NOSUPPORT       0x01    // unsupported feature/function
  402. #define MID_UNKNOWNPATCH    0x02    // unknown patch type
  403. #define MID_ALLTONESUSED    0x03    // all tones are used
  404. #define MID_BADMIDIMSG      0x04    // messages are out of sync
  405. #define MID_PATCHINCOMP     0x05    // an incoming patch was incomplete
  406. #define MID_PATCHINFULL     0x06    // incoming patch list is full
  407. #define MID_BADLOSTIRQ      0x07    // had to drop an incoming byte
  408. #define MID_PATCHINFAIL     0x08    // driver is failing a patch download
  409. #define MID_HWFAILURE       0x80    // vendors specific errors
  410.  
  411.  
  412. ;   /*\
  413. ;---|*|----====< General Device Class structure for all devices >====----
  414. ;   \*/
  415.  
  416. ;   //  When a device is queried via function #1, it will return the
  417. ;   //  following structure. The entire structure contents are read-only
  418. ;   //  for the application. There are no fields that the application
  419. ;   //  may modify.
  420.  
  421.     typedef struct {
  422.  
  423.         // housekeeping...
  424.  
  425.         char gdname[4];     // name of the structure
  426.         long gdlength;      // structure length
  427.  
  428.         // generalities...
  429.  
  430.         int  gdclassid;     // type of device
  431.         int  gdvbever;      // version of VESA driver support
  432.  
  433.         union {
  434.         WAVEInfo   gdwi;
  435.         MIDIInfo   gdmi;
  436.         VolumeInfo gdvi;
  437.         } u;
  438.  
  439.     } GeneralDeviceClass, far *fpGDC;
  440.  
  441.  
  442. ;   /*\
  443. ;---|*|----====< VBE/AI data structures >====----
  444. ;   \*/
  445.  
  446.     //
  447.     // patch file format structures
  448.     //
  449.  
  450.         typedef struct {
  451.         char type[4];   // structure type holds "RIFF"
  452.         long rcount;    // length of the RIFF block
  453.     } RIFFhdr;
  454.  
  455.         typedef struct {
  456.         char type[4];   // structure type holds "vail"
  457.         long pcount;    // count of patches in the file
  458.     } VAILhdr;
  459.  
  460.         typedef struct {
  461.         char type[4];   // structure type holds "ZSTR"
  462.         long tlen;      // length of text following this field
  463.     } ZSTRhdr;
  464.  
  465.         typedef struct {
  466.         char type[4];   // structure type holds "vaip"
  467.         long vaiplen;   // VBE/AI Patch data table
  468.     } VAIPhdr;
  469.  
  470.         typedef struct {
  471.         char type[4];   // structure type holds "vaii", index
  472.         long vaiilen;   // vaii structure length
  473.         long poffset;   // holds offset to "vaid" from "vaip"
  474.         long vaidln;    // holds length of the corresponding patch
  475.     } VAIIhdr;
  476.  
  477.         typedef struct {
  478.         char type[4];   // structure type holds "vaid"
  479.         long vaidlen;   // holds length of this patch
  480.     } VAIDhdr;
  481.  
  482.  
  483. ;   /*\
  484. ;---|*|----====< PC Specific Hardware Defintions >====----
  485. ;   \*/
  486.  
  487. // Interrupt Controller #1 Port Addresses and Interrupt Masks
  488.  
  489. #define IRQ1MASKREG 0x21        // 8259 mask register
  490. #define IRQ1ACKREG  0x20        // 8259 INT acknowledge register
  491.  
  492. #define INT0MSK     0x01        // interrupt 0 mask
  493. #define INT1MSK     0x02        // interrupt 1 mask
  494. #define INT2MSK     0x04        // interrupt 2 mask
  495. #define INT3MSK     0x08        // interrupt 3 mask
  496. #define INT4MSK     0x10        // interrupt 4 mask
  497. #define INT5MSK     0x20        // interrupt 5 mask
  498. #define INT6MSK     0x40        // interrupt 6 mask
  499. #define INT7MSK     0x80        // interrupt 7 mask
  500.  
  501. // Interrupt Controller #2 Port Addresses and Interrupt Masks
  502.  
  503. #define IRQ2MASKREG 0xA1        // 8259 mask register
  504. #define IRQ2ACKREG  0xA0        // 8259 INT acknowledge register
  505.  
  506. #define INT8MSK     0x01        // interrupt 8 mask
  507. #define INT9MSK     0x02        // interrupt 9 mask
  508. #define INTAMSK     0x04        // interrupt A mask
  509. #define INTBMSK     0x08        // interrupt B mask
  510. #define INTCMSK     0x10        // interrupt C mask
  511. #define INTDMSK     0x20        // interrupt D mask
  512. #define INTEMSK     0x40        // interrupt E mask
  513. #define INTFMSK     0x80        // interrupt F mask
  514.  
  515. #define EOI     020h        // non specific end of interrupt
  516.  
  517. // dma controller #1 port addresses
  518.  
  519. #define DMAC0ADDR   0x00        // DMA channel 0 Base & Address
  520. #define DMAC0COUNT  0x01        // DMA channel 0 Base & Count
  521. #define DMAC1ADDR   0x02        // DMA channel 1 Base & Address
  522. #define DMAC1COUNT  0x03        // DMA channel 1 Base & Count
  523. #define DMAC2ADDR   0x04        // DMA channel 2 Base & Address
  524. #define DMAC2COUNT  0x05        // DMA channel 2 Base & Count
  525. #define DMAC3ADDR   0x06        // DMA channel 3 Base & Address
  526. #define DMAC3COUNT  0x07        // DMA channel 3 Base & Count
  527.  
  528. #define DMA2C4ADDR  0xC0        // DMA channel 4 Base & Current Address
  529. #define DMA2C4COUNT 0xC2        // DMA channel 4 Base & Current Count
  530. #define DMA2C5ADDR  0xC4        // DMA channel 5 Base & Current Address
  531. #define DMA2C5COUNT 0xC6        // DMA channel 5 Base & Current Count
  532. #define DMA2C6ADDR  0xC8        // DMA channel 6 Base & Current Address
  533. #define DMA2C6COUNT 0xCA        // DMA channel 6 Base & Current Count
  534. #define DMA2C7ADDR  0xCC        // DMA channel 7 Base & Current Address
  535. #define DMA2C7COUNT 0xCE        // DMA channel 7 Base & Current Count
  536.  
  537. #define DMARDSTAT   0x08        // DMA read status
  538. #define DMAWRCNTRL  0x08        // DMA write command register
  539. #define DMAWREQ     0x09        // DMA write request register
  540. #define DMAWRSMR    0x0A        // DMA write single mask reg.
  541. #define DMAWRMODE   0x0B        // DMA write mode register
  542. #define DMACLEAR    0x0C        // DMA clear low/high flip-flop
  543. #define DMARDTEMP   0x0D        // DMA read temp register
  544. #define DMAWRCLR    0x0D        // DMA write master clear
  545. #define DMACLRMSK   0x0E        // DMA clear mask register
  546. #define DMAWRALL    0x0F        // DMA write all mask reg. bits
  547.  
  548. #define DMA2RDSTAT  0xD0        // DMA read status
  549. #define DMA2WRCNTRL 0xD0        // DMA write command register
  550. #define DMA2WREQ    0xD2        // DMA write request register
  551. #define DMA2WRSMR   0xD4        // DMA write single mask register
  552. #define DMA2WRMODE  0xD6        // DMA write mode register
  553. #define DMA2CLEAR   0xD8        // DMA clear low/high flip-flop
  554. #define DMA2RDTEMP  0xDA        // DMA read temp register
  555. #define DMA2WRCLR   0xDA        // DMA write master clear
  556. #define DMA2CLRMSK  0xDC        // DMA clear mask register
  557. #define DMA2WRALL   0xDE        // DMA write all mask register bits
  558.  
  559. #define CH0PAGEREG  0x87        // Channel 0 Page Register
  560. #define CH1PAGEREG  0x83        // Channel 1 Page Register
  561. #define CH2PAGEREG  0x81        // Channel 2 Page Register
  562. #define CH3PAGEREG  0x82        // Channel 3 Page Register
  563.  
  564. #define CH5PAGEREG  0x8B        // Channel 5 Page Register
  565. #define CH6PAGEREG  0x89        // Channel 6 Page Register
  566. #define CH7PAGEREG  0x8A        // Channel 7 Page Register
  567.  
  568. #define SYSSPKRTMR  0x0042      // System Speaker Timer Address
  569. #define SYSTMRCTLR  0x0043      // System Timer Control Register
  570. #define SYSSPKRREG  0x0061      // System Speaker Register
  571. #define JOYSTICK    0x0201      // Joystick Register
  572.  
  573. ;   /*\
  574. ;---|*| end of VBEAI.H
  575. ;   \*/
  576.  
  577.  
  578.