============================================================================================================================================== OFFSET 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ---------------------------------------------------------------------------------------------------------------------------------------------- 00000000 DB A5 2D 00 21 40 09 04 00 00 14 00 2D 00 00 00 00 00 00 00 00 00 00 00 80 01 00 00 95 D0 02 00 █Ñ-.!@○♦..¶.-...........Ç☺..ò╨☻. 00000020 9C 47 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2B CE 02 00 00 00 00 00 E8 00 00 00 £G♥.................+╬☻.....Φ... 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2C 03 00 23 01 00 2C .........................,♥.#☺., 00000060 03 00 23 01 23 2D 03 00 00 00 23 2D 03 00 00 00 23 2D 03 00 00 00 23 2D 03 00 00 00 23 2D 03 00 ♥.#☺#-♥...#-♥...#-♥...#-♥...#-♥. 00000080 0E 00 31 2D 03 00 EC 05 1D 33 03 00 70 11 8D 44 03 00 00 00 8D 44 03 00 00 00 8D 44 03 00 10 00 ♫.1-♥.∞♣↔3♥.p◄ìD♥...ìD♥...ìD♥.►. 000000A0 9D 44 03 00 0A 00 A7 44 03 00 0C 01 8D 44 03 00 00 00 B3 45 03 00 4D 00 00 46 03 00 04 00 04 46 ¥D♥.◙.ºD♥.♀☺ìD♥...│E♥.M..F♥.♦.♦F 000000C0 03 00 16 00 1A 46 03 00 00 00 1A 46 03 00 00 00 1A 46 03 00 00 00 1A 46 03 00 00 00 1A 46 03 00 ♥.▬.→F♥...→F♥...→F♥...→F♥...→F♥. 000000E0 00 00 1A 46 03 00 00 00 1A 46 03 00 0E 00 28 46 03 00 00 00 28 46 03 00 00 00 28 46 03 00 00 00 ..→F♥...→F♥.♫.(F♥...(F♥...(F♥... 00000100 28 46 03 00 00 00 28 46 03 00 00 00 28 46 03 00 1E 00 89 46 03 00 34 00 BD 46 03 00 DF 00 46 46 (F♥...(F♥...(F♥.▲.ëF♥.4.╜F♥.▀.FF 00000120 03 00 43 00 23 2D 03 00 00 00 00 00 00 00 00 00 46 46 03 00 00 00 46 46 03 00 00 00 00 00 69 01 ♥.C.#-♥.........FF♥...FF♥.....i☺ 00000140 6A 01 01 00 2C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 j☺☺.,........................... 00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 00000180 43 68 61 70 74 65 72 20 31 20 2D 20 47 65 6E 65 72 61 6C 20 49 6E 66 6F 72 6D 61 74 69 6F 6E 0D Chapter 1 - General Information♪ 000001A0 0A 0D 0A 31 2E 30 20 49 6E 74 72 6F 64 75 63 74 69 6F 6E 0D 0A 0D 0A 54 68 69 73 20 69 73 20 76 ◙♪◙1.0 Introduction♪◙♪◙This is v 000001C0 65 72 73 69 6F 6E 20 32 2E 31 30 20 6F 66 20 74 68 65 20 53 6F 66 74 77 61 72 65 20 44 65 76 65 ersion 2.10 of the Software Deve 000001E0 6C 6F 70 6D 65 6E 74 20 4B 69 74 20 28 53 44 4B 29 20 66 6F 72 20 74 68 65 20 41 64 76 61 6E 63 lopment Kit (SDK) for the Advanc 00000200 65 64 20 47 72 61 76 69 73 20 55 6C 74 72 61 53 6F 75 6E 64 20 63 61 72 64 2C 20 61 6E 64 20 69 ed Gravis UltraSound card, and i 00000220 73 20 74 68 65 20 63 6F 6D 62 69 6E 65 64 20 77 6F 72 6B 20 6F 66 20 41 64 76 61 6E 63 65 64 20 s the combined work of Advanced 00000240 47 72 61 76 69 73 2C 20 46 4F 52 54 45 20 54 65 63 68 6E 6F 6C 6F 67 69 65 73 2C 20 61 6E 64 20 Gravis, FORTE Technologies, and 00000260 49 6E 67 65 6E 75 69 74 79 20 53 6F 66 74 77 61 72 65 2E 20 20 54 68 69 73 20 6B 69 74 20 69 73 Ingenuity Software. This kit is 00000280 20 69 6E 74 65 6E 64 65 64 20 66 6F 72 20 75 73 65 20 62 79 20 70 72 6F 67 72 61 6D 6D 65 72 73 intended for use by programmers 000002A0 20 6F 66 20 49 42 4D 2D 63 6F 6D 70 61 74 69 62 6C 65 20 50 43 73 2E 20 20 41 66 74 65 72 20 62 of IBM-compatible PCs. After b 000002C0 65 63 6F 6D 69 6E 67 20 66 61 6D 69 6C 69 61 72 20 77 69 74 68 20 74 68 69 73 20 6D 61 74 65 72 ecoming familiar with this mater 000002E0 69 61 6C 2C 20 79 6F 75 20 73 68 6F 75 6C 64 20 62 65 20 61 62 6C 65 20 74 6F 20 75 73 65 20 43 ial, you should be able to use C 00000300 20 6F 72 20 50 61 73 63 61 6C 20 74 6F 20 70 72 6F 67 72 61 6D 20 74 68 65 20 55 6C 74 72 61 53 or Pascal to program the UltraS 00000320 6F 75 6E 64 20 75 6E 64 65 72 20 4D 53 2D 44 4F 53 2E 0D 0A 0D 0A 54 68 69 73 20 69 73 20 74 68 ound under MS-DOS.♪◙♪◙This is th 00000340 65 20 66 69 72 73 74 20 76 65 72 73 69 6F 6E 20 77 68 69 63 68 20 69 6E 63 6C 75 64 65 73 20 61 e first version which includes a 00000360 20 66 75 6C 6C 20 42 6F 72 6C 61 6E 64 20 50 61 73 63 61 6C 20 28 76 65 72 73 69 6F 6E 20 37 29 full Borland Pascal (version 7) 00000380 20 61 6E 64 20 54 75 72 62 6F 2D 50 61 73 63 61 6C 20 28 76 65 72 73 69 6F 6E 73 20 36 20 61 6E and Turbo-Pascal (versions 6 an 000003A0 64 20 37 29 20 69 6E 74 65 72 66 61 63 65 2E 20 20 54 68 69 73 20 77 61 73 20 77 72 69 74 74 65 d 7) interface. This was writte 000003C0 6E 20 62 79 20 4B 75 72 74 20 4B 65 6E 6E 65 74 74 20 6F 66 20 49 6E 67 65 6E 75 69 74 79 20 53 n by Kurt Kennett of Ingenuity S 000003E0 6F 66 74 77 61 72 65 20 66 6F 72 20 41 64 76 61 6E 63 65 64 20 47 72 61 76 69 73 2C 20 61 6E 64 oftware for Advanced Gravis, and 00000400 20 69 73 20 74 68 65 20 64 69 72 65 63 74 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6F 66 20 74 68 is the direct translation of th 00000420 65 20 72 6F 75 74 69 6E 65 73 20 69 6E 20 74 68 65 20 43 20 69 6E 74 65 72 66 61 63 65 2E 20 20 e routines in the C interface. 00000440 46 6F 72 20 73 70 65 63 69 66 69 63 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 61 62 6F 75 74 20 74 For specific information about t 00000460 68 65 20 50 61 73 63 61 6C 20 69 6E 74 65 72 66 61 63 65 2C 20 73 65 65 20 73 65 63 74 69 6F 6E he Pascal interface, see section 00000480 20 33 2E 31 33 2E 0D 0A 0D 0A 46 6F 72 20 73 70 65 63 69 66 69 63 20 69 6E 66 6F 72 6D 61 74 69 3.13.♪◙♪◙For specific informati 000004A0 6F 6E 20 61 62 6F 75 74 20 74 68 65 20 72 65 76 69 73 65 64 20 61 6E 64 20 75 70 64 61 74 65 64 on about the revised and updated 000004C0 20 43 20 69 6E 74 65 72 66 61 63 65 2C 20 69 6E 63 6C 75 64 69 6E 67 20 63 6F 6D 70 69 6C 65 72 C interface, including compiler 000004E0 73 20 61 6E 64 20 6D 65 6D 6F 72 79 20 6D 6F 64 65 6C 73 20 73 75 70 70 6F 72 74 65 64 2C 20 73 s and memory models supported, s 00000500 65 65 20 73 65 63 74 69 6F 6E 20 33 2E 31 32 2E 0D 0A 0D 0A 53 6F 6D 65 20 6F 66 20 74 68 65 20 ee section 3.12.♪◙♪◙Some of the 00000520 64 69 73 63 75 73 73 69 6F 6E 73 20 6F 66 20 74 68 65 20 68 61 72 64 77 61 72 65 20 69 6E 74 65 discussions of the hardware inte 00000540 72 66 61 63 65 20 74 6F 20 74 68 65 20 63 61 72 64 20 28 43 68 61 70 74 65 72 20 32 29 20 61 72 rface to the card (Chapter 2) ar 00000560 65 20 71 75 69 74 65 20 74 65 63 68 6E 69 63 61 6C 2C 20 61 6E 64 20 67 6F 20 62 65 79 6F 6E 64 e quite technical, and go beyond 00000580 20 74 68 65 20 6C 65 76 65 6C 20 6F 66 20 74 65 63 68 6E 69 63 61 6C 20 73 6F 70 68 69 73 74 69 the level of technical sophisti 000005A0 63 61 74 69 6F 6E 20 6E 65 65 64 65 64 20 74 6F 20 77 72 69 74 65 20 73 6F 66 74 77 61 72 65 2E cation needed to write software. 000005C0 20 20 54 68 65 72 65 66 6F 72 65 2C 20 61 20 73 65 70 65 72 61 74 65 20 73 65 63 74 69 6F 6E 20 Therefore, a seperate section 000005E0 28 43 68 61 70 74 65 72 20 33 29 20 68 61 73 20 62 65 65 6E 20 69 6E 63 6C 75 64 65 64 20 77 68 (Chapter 3) has been included wh 00000600 69 63 68 20 69 73 20 61 20 67 65 6E 65 72 61 6C 20 6F 76 65 72 76 69 65 77 20 6F 66 20 68 6F 77 ich is a general overview of how 00000620 20 74 6F 20 77 72 69 74 65 20 73 6F 66 74 77 61 72 65 20 66 6F 72 20 74 68 65 20 63 61 72 64 2E to write software for the card. 00000640 20 20 57 68 61 74 20 66 6F 6C 6C 6F 77 73 20 69 6E 20 74 68 69 73 20 63 68 61 70 74 65 72 20 69 What follows in this chapter i 00000660 73 20 61 20 67 65 6E 65 72 61 6C 20 64 65 73 63 72 69 70 74 69 6F 6E 20 6F 66 20 74 68 65 20 55 s a general description of the U 00000680 6C 74 72 61 53 6F 75 6E 64 20 63 61 72 64 20 61 6E 64 20 69 74 73 20 66 65 61 74 75 72 65 73 2C ltraSound card and its features, 000006A0 20 74 68 65 20 4D 49 44 49 20 66 75 6E 63 74 69 6F 6E 61 6C 69 74 79 2C 20 74 68 65 20 4A 6F 79 the MIDI functionality, the Joy 000006C0 73 74 69 63 6B 20 69 6E 74 65 72 66 61 63 65 2C 20 61 6E 64 20 74 68 65 20 47 46 31 20 33 32 2D stick interface, and the GF1 32- 000006E0 76 6F 69 63 65 20 53 6F 75 6E 64 20 53 79 6E 74 68 65 73 69 7A 65 72 2E 20 20 54 68 72 6F 75 67 voice Sound Synthesizer. Throug 00000700 68 6F 75 74 20 74 68 69 73 20 64 6F 63 75 6D 65 6E 74 61 74 69 6F 6E 2C 20 74 68 65 20 77 6F 72 hout this documentation, the wor 00000720 64 73 20 27 6C 6F 77 6C 65 76 65 6C 20 74 6F 6F 6C 6B 69 74 27 2C 20 27 6C 6F 77 6C 65 76 65 6C ds 'lowlevel toolkit', 'lowlevel 00000740 20 72 6F 75 74 69 6E 65 73 27 20 61 6E 64 20 27 6C 6F 77 6C 65 76 65 6C 20 63 6F 64 65 27 20 61 routines' and 'lowlevel code' a 00000760 72 65 20 75 73 65 64 2E 20 20 54 68 69 73 20 72 65 66 65 72 73 20 74 6F 20 61 6E 79 20 61 6E 64 re used. This refers to any and 00000780 20 61 6C 6C 20 6F 66 20 74 68 65 20 72 6F 75 74 69 6E 65 73 20 64 65 73 63 72 69 62 65 64 20 61 all of the routines described a 000007A0 6E 64 20 69 6E 63 6C 75 64 65 64 20 69 6E 20 74 68 65 20 43 20 61 6E 64 2F 6F 72 20 50 61 73 63 nd included in the C and/or Pasc 000007C0 61 6C 20 69 6E 74 65 72 66 61 63 65 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 31 2E 31 20 46 65 61 74 75 72 al interfaces.♪◙♪◙♪◙♪◙1.1 Featur 000007E0 65 73 20 6F 66 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 0D 0A 0D 0A 2D 09 4A 75 6D 70 65 72 es of the UltraSound♪◙♪◙-○Jumper 00000800 20 73 65 6C 65 63 74 61 62 6C 65 20 62 61 73 65 20 70 6F 72 74 20 61 64 64 72 65 73 73 2E 0D 0A selectable base port address.♪◙ 00000820 2D 09 53 6F 66 74 77 61 72 65 20 73 65 6C 65 63 74 61 62 6C 65 20 49 52 51 20 76 65 63 74 6F 72 -○Software selectable IRQ vector 00000840 73 20 61 6E 64 20 44 4D 41 20 63 68 61 6E 6E 65 6C 73 2E 0D 0A 2D 09 58 54 20 61 6E 64 20 41 54 s and DMA channels.♪◙-○XT and AT 00000860 20 63 6F 6D 70 61 74 69 62 69 6C 69 74 79 2E 0D 0A 2D 09 38 20 6F 72 20 31 36 20 62 69 74 20 70 compatibility.♪◙-○8 or 16 bit p 00000880 6C 61 79 62 61 63 6B 3A 20 53 74 65 72 65 6F 20 61 6E 64 20 4D 6F 6E 6F 70 68 6F 6E 69 63 2E 0D layback: Stereo and Monophonic.♪ 000008A0 0A 2D 09 38 20 62 69 74 20 72 65 63 6F 72 64 69 6E 67 3A 20 20 53 74 65 72 65 6F 20 6F 72 20 4D ◙-○8 bit recording: Stereo or M 000008C0 6F 6E 6F 70 68 6F 6E 69 63 2E 0D 0A 2D 09 50 6C 61 79 62 61 63 6B 20 61 6E 64 20 72 65 63 6F 72 onophonic.♪◙-○Playback and recor 000008E0 64 69 6E 67 20 72 61 74 65 73 20 75 70 20 74 6F 20 34 34 2E 31 20 6B 48 7A 2E 0D 0A 2D 09 33 32 ding rates up to 44.1 kHz.♪◙-○32 00000900 20 76 6F 69 63 65 20 77 61 76 65 74 61 62 6C 65 20 73 79 6E 74 68 65 73 69 73 3A 20 61 6C 6C 20 voice wavetable synthesis: all 00000920 76 6F 69 63 65 73 20 6D 69 78 65 64 20 6F 6E 20 62 6F 61 72 64 2E 0D 0A 2D 09 53 69 6D 75 6C 74 voices mixed on board.♪◙-○Simult 00000940 61 6E 65 6F 75 73 20 70 6C 61 79 62 61 63 6B 20 61 6E 64 20 72 65 63 6F 72 64 69 6E 67 20 69 73 aneous playback and recording is 00000960 20 70 6F 73 73 69 62 6C 65 2E 0D 0A 2D 09 45 61 63 68 20 76 6F 69 63 65 20 68 61 73 20 69 74 73 possible.♪◙-○Each voice has its 00000980 20 6F 77 6E 20 76 6F 6C 75 6D 65 20 73 65 74 74 69 6E 67 73 2C 20 76 6F 6C 75 6D 65 20 65 6E 76 own volume settings, volume env 000009A0 65 6C 6F 70 69 6E 67 2C 20 70 6C 61 79 62 61 63 6B 20 72 61 74 65 20 61 6E 64 20 62 61 6C 61 6E eloping, playback rate and balan 000009C0 63 65 2E 0D 0A 2D 09 42 6F 74 68 20 6C 69 6E 65 20 6C 65 76 65 6C 20 61 6E 64 20 61 6D 70 6C 69 ce.♪◙-○Both line level and ampli 000009E0 66 69 65 64 20 6F 75 74 70 75 74 73 2E 0D 0A 2D 09 36 38 35 30 20 63 6F 6D 70 61 74 69 62 6C 65 fied outputs.♪◙-○6850 compatible 00000A00 20 4D 49 44 49 20 55 41 52 54 20 6F 6E 2D 62 6F 61 72 64 2E 0D 0A 2D 09 47 72 61 76 69 73 20 45 MIDI UART on-board.♪◙-○Gravis E 00000A20 6C 69 6D 69 6E 61 74 6F 72 20 6A 6F 79 73 74 69 63 6B 20 69 6E 74 65 72 66 61 63 65 20 77 69 74 liminator joystick interface wit 00000A40 68 20 6A 75 6D 70 65 72 20 65 6E 61 62 6C 65 2F 64 69 73 61 62 6C 65 2E 0D 0A 2D 09 32 35 36 4B h jumper enable/disable.♪◙-○256K 00000A60 62 20 44 52 41 4D 20 6F 6E 20 62 6F 61 72 64 20 66 6F 72 20 77 61 76 65 66 6F 72 6D 73 2E 20 20 b DRAM on board for waveforms. 00000A80 45 78 70 61 6E 64 61 62 6C 65 20 74 6F 20 31 4D 62 2E 0D 0A 2D 09 53 74 65 72 65 6F 20 6D 69 63 Expandable to 1Mb.♪◙-○Stereo mic 00000AA0 72 6F 70 68 6F 6E 65 20 69 6E 70 75 74 20 77 69 74 68 20 61 75 74 6F 6D 61 74 69 63 20 6C 65 76 rophone input with automatic lev 00000AC0 65 6C 20 63 6F 6E 74 72 6F 6C 2E 0D 0A 2D 09 4C 69 6E 65 20 6C 65 76 65 6C 20 69 6E 70 75 74 2E el control.♪◙-○Line level input. 00000AE0 0D 0A 2D 09 43 44 20 52 4F 4D 20 44 72 69 76 65 20 61 75 64 69 6F 20 69 6E 70 75 74 2E 0D 0A 2D ♪◙-○CD ROM Drive audio input.♪◙- 00000B00 09 53 74 65 72 65 6F 20 6D 69 6E 69 2D 6A 61 63 6B 73 20 66 6F 72 20 6C 69 6E 65 20 26 20 61 6D ○Stereo mini-jacks for line & am 00000B20 70 6C 69 66 69 65 64 20 6F 75 74 70 75 74 73 20 61 6E 64 20 4D 69 63 20 61 6E 64 20 4C 69 6E 65 plified outputs and Mic and Line 00000B40 20 69 6E 70 75 74 73 2E 0D 0A 0D 0A 0C 31 2E 32 20 42 65 6E 65 66 69 74 73 20 6F 66 20 73 75 70 inputs.♪◙♪◙♀1.2 Benefits of sup 00000B60 70 6F 72 74 69 6E 67 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 0D 0A 0D 0A 54 68 65 20 55 6C porting the UltraSound♪◙♪◙The Ul 00000B80 74 72 61 53 6F 75 6E 64 20 68 61 73 20 33 32 20 73 65 70 61 72 61 74 65 20 76 6F 69 63 65 73 2C traSound has 32 separate voices, 00000BA0 20 65 61 63 68 20 6F 66 20 77 68 69 63 68 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 70 6C each of which can be used to pl 00000BC0 61 79 20 62 61 63 6B 20 61 6E 79 20 38 2D 20 6F 72 20 31 36 2D 62 69 74 20 64 69 67 69 74 61 6C ay back any 8- or 16-bit digital 00000BE0 20 64 61 74 61 20 74 68 61 74 20 69 73 20 6C 6F 61 64 65 64 20 69 6E 74 6F 20 69 74 73 20 44 52 data that is loaded into its DR 00000C00 41 4D 2E 20 20 54 68 69 73 20 64 61 74 61 20 63 61 6E 20 63 6F 6E 73 69 73 74 20 6F 66 20 69 6E AM. This data can consist of in 00000C20 64 69 76 69 64 75 61 6C 20 73 6F 75 6E 64 20 65 66 66 65 63 74 73 2C 20 61 20 77 68 6F 6C 65 20 dividual sound effects, a whole 00000C40 73 6F 75 6E 64 20 74 72 61 63 6B 2C 20 6F 72 20 65 76 65 6E 20 73 69 6E 67 6C 65 20 6D 75 73 69 sound track, or even single musi 00000C60 63 61 6C 20 6E 6F 74 65 73 20 6F 66 20 61 20 64 69 67 69 74 69 7A 65 64 20 69 6E 73 74 72 75 6D cal notes of a digitized instrum 00000C80 65 6E 74 2E 20 20 54 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 69 73 20 63 6F 6D 70 6C 65 74 65 ent. The UltraSound is complete 00000CA0 6C 79 20 63 6F 6E 74 72 6F 6C 6C 65 64 20 62 79 20 74 68 65 20 50 43 2C 20 74 68 75 73 20 67 69 ly controlled by the PC, thus gi 00000CC0 76 69 6E 67 20 6D 61 78 69 6D 75 6D 20 66 6C 65 78 69 62 69 6C 69 74 79 20 74 6F 20 61 70 70 6C ving maximum flexibility to appl 00000CE0 69 63 61 74 69 6F 6E 73 20 77 68 69 63 68 20 75 73 65 20 69 74 2E 20 20 54 68 65 20 6D 61 69 6E ications which use it. The main 00000D00 20 63 68 69 70 20 77 68 69 63 68 20 72 75 6E 73 20 74 68 65 20 63 61 72 64 20 28 74 68 65 20 47 chip which runs the card (the G 00000D20 46 31 29 20 69 73 20 64 69 72 65 63 74 6C 79 20 61 64 64 72 65 73 73 61 62 6C 65 20 66 72 6F 6D F1) is directly addressable from 00000D40 20 74 68 65 20 50 43 27 73 20 43 50 55 20 76 69 61 20 62 61 73 69 63 20 49 2F 4F 20 69 6E 73 74 the PC's CPU via basic I/O inst 00000D60 72 75 63 74 69 6F 6E 73 2E 0D 0A 0D 0A 48 65 72 65 20 61 72 65 20 73 6F 6D 65 20 6F 66 20 74 68 ructions.♪◙♪◙Here are some of th 00000D80 65 20 66 65 61 74 75 72 65 73 20 74 68 61 74 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 6F e features that the UltraSound o 00000DA0 66 66 65 72 73 3A 0D 0A 0D 0A 31 29 09 57 61 76 65 74 61 62 6C 65 20 73 79 6E 74 68 65 73 69 73 ffers:♪◙♪◙1)○Wavetable synthesis 00000DC0 20 68 61 73 20 61 20 6D 75 63 68 20 68 69 67 68 65 72 20 73 6F 75 6E 64 20 71 75 61 6C 69 74 79 has a much higher sound quality 00000DE0 20 74 68 61 74 20 46 4D 2D 62 61 73 65 64 20 63 61 72 64 73 20 63 61 6E 20 65 76 65 72 20 61 63 that FM-based cards can ever ac 00000E00 68 69 65 76 65 2E 20 20 54 68 69 73 20 6D 65 74 68 6F 64 20 6F 66 20 61 75 64 69 6F 20 73 79 6E hieve. This method of audio syn 00000E20 74 68 65 73 69 73 20 69 73 20 74 68 65 20 73 61 6D 65 20 6D 65 74 68 6F 64 20 75 73 65 64 20 69 thesis is the same method used i 00000E40 6E 20 65 78 70 65 6E 73 69 76 65 20 70 72 6F 66 65 73 73 69 6F 6E 61 6C 20 6B 65 79 62 6F 61 72 n expensive professional keyboar 00000E60 64 73 2E 0D 0A 32 29 09 33 32 20 64 69 67 69 74 61 6C 20 76 6F 69 63 65 73 20 63 61 6E 20 62 65 ds.♪◙2)○32 digital voices can be 00000E80 20 69 6E 64 65 70 65 6E 64 65 6E 74 6C 79 20 63 6F 6E 74 72 6F 6C 6C 65 64 2E 20 54 68 69 73 20 independently controlled. This 00000EA0 61 6C 6C 6F 77 73 20 79 6F 75 20 74 6F 20 68 61 76 65 20 75 70 20 74 6F 20 33 32 20 73 6F 75 6E allows you to have up to 32 soun 00000EC0 64 20 65 66 66 65 63 74 73 20 6F 72 20 69 6E 73 74 72 75 6D 65 6E 74 73 20 67 6F 69 6E 67 20 61 d effects or instruments going a 00000EE0 74 20 6F 6E 63 65 2E 0D 0A 33 29 09 54 68 65 20 63 61 72 64 20 69 73 20 52 41 4D 2D 62 61 73 65 t once.♪◙3)○The card is RAM-base 00000F00 64 2E 20 20 53 69 6E 63 65 20 74 68 65 20 69 6E 73 74 72 75 6D 65 6E 74 20 70 61 74 63 68 65 73 d. Since the instrument patches 00000F20 20 61 72 65 20 6B 65 70 74 20 6F 6E 20 64 69 73 6B 20 61 6E 64 20 6F 6E 6C 79 20 6C 6F 61 64 65 are kept on disk and only loade 00000F40 64 20 77 68 65 6E 20 74 68 65 79 20 61 72 65 20 6E 65 65 64 65 64 2C 20 74 68 65 79 20 63 61 6E d when they are needed, they can 00000F60 20 62 65 20 63 68 61 6E 67 65 64 20 6F 72 20 69 6D 70 72 6F 76 65 64 20 61 74 20 77 69 6C 6C 2E be changed or improved at will. 00000F80 0D 0A 34 29 09 46 6F 63 61 6C 20 50 6F 69 6E 74 20 33 44 20 73 6F 75 6E 64 20 67 65 6E 65 72 61 ♪◙4)○Focal Point 3D sound genera 00000FA0 74 69 6F 6E 2E 20 59 6F 75 20 63 61 6E 20 70 6F 73 69 74 69 6F 6E 20 79 6F 75 72 20 61 70 70 6C tion. You can position your appl 00000FC0 69 63 61 74 69 6F 6E 73 20 73 6F 75 6E 64 73 20 61 6E 79 77 68 65 72 65 20 69 6E 20 33 44 20 73 ications sounds anywhere in 3D s 00000FE0 70 61 63 65 20 61 72 6F 75 6E 64 20 74 68 65 20 6C 69 73 74 65 6E 65 72 2E 0D 0A 35 29 09 41 6C pace around the listener.♪◙5)○Al 00001000 6C 20 6D 69 78 69 6E 67 20 69 73 20 64 6F 6E 65 20 6F 6E 20 74 68 65 20 63 61 72 64 2E 20 20 54 l mixing is done on the card. T 00001020 68 65 72 65 20 69 73 20 6E 6F 20 62 75 72 64 65 6E 20 6F 6E 20 74 68 65 20 43 50 55 20 74 6F 20 here is no burden on the CPU to 00001040 70 6C 61 79 62 61 63 6B 20 6D 75 6C 74 69 70 6C 65 20 63 68 61 6E 6E 65 6C 73 2E 0D 0A 36 29 09 playback multiple channels.♪◙6)○ 00001060 4D 75 6C 74 69 70 6C 65 20 63 61 72 64 73 20 63 61 6E 20 62 65 20 69 6E 73 74 61 6C 6C 65 64 20 Multiple cards can be installed 00001080 69 6E 20 74 68 65 20 73 61 6D 65 20 50 43 2E 20 57 69 74 68 20 73 6F 6D 65 20 72 65 6C 61 74 69 in the same PC. With some relati 000010A0 76 65 6C 79 20 6D 69 6E 6F 72 20 61 64 6A 75 73 74 6D 65 6E 74 73 20 74 6F 20 74 68 65 20 53 44 vely minor adjustments to the SD 000010C0 4B 20 73 6F 66 74 77 61 72 65 2C 20 6D 75 6C 74 69 70 6C 65 20 63 61 72 64 73 20 63 61 6E 20 62 K software, multiple cards can b 000010E0 65 20 63 6F 6E 74 72 6F 6C 6C 65 64 20 69 6E 20 74 68 65 20 73 61 6D 65 20 50 43 2E 0D 0A 37 29 e controlled in the same PC.♪◙7) 00001100 09 48 61 72 64 77 61 72 65 2D 61 73 73 69 73 74 65 64 20 76 6F 69 63 65 20 65 6E 76 65 6C 6F 70 ○Hardware-assisted voice envelop 00001120 69 6E 67 2E 20 41 20 6D 75 6C 74 69 2D 70 6F 69 6E 74 20 61 74 74 61 63 6B 2D 64 65 63 61 79 2D ing. A multi-point attack-decay- 00001140 73 75 73 74 61 69 6E 2D 72 65 6C 65 61 73 65 20 65 6E 76 65 6C 6F 70 65 20 63 61 6E 20 62 65 20 sustain-release envelope can be 00001160 69 6D 70 6C 65 6D 65 6E 74 65 64 20 74 68 61 74 20 75 73 65 73 20 76 69 72 74 75 61 6C 6C 79 20 implemented that uses virtually 00001180 6E 6F 20 43 50 55 20 6F 76 65 72 68 65 61 64 2E 20 54 72 65 6D 65 6C 6F 20 63 61 6E 20 61 6C 73 no CPU overhead. Tremelo can als 000011A0 6F 20 62 65 20 64 6F 6E 65 20 69 6E 20 68 61 72 64 77 61 72 65 2E 0D 0A 38 29 09 53 6F 75 6E 64 o be done in hardware.♪◙8)○Sound 000011C0 20 65 66 66 65 63 74 73 20 63 61 6E 20 62 65 20 70 72 65 2D 6C 6F 61 64 65 64 20 69 6E 74 6F 20 effects can be pre-loaded into 000011E0 44 52 41 4D 2C 20 75 73 69 6E 67 20 6C 69 74 74 6C 65 20 6F 72 20 6E 6F 20 50 43 20 6D 65 6D 6F DRAM, using little or no PC memo 00001200 72 79 20 74 6F 20 6B 65 65 70 20 74 72 61 63 6B 20 6F 66 20 74 68 65 6D 2E 20 20 54 68 69 73 20 ry to keep track of them. This 00001220 6C 65 61 76 65 73 20 6D 6F 72 65 20 73 70 61 63 65 20 66 6F 72 20 79 6F 75 72 20 61 70 70 6C 69 leaves more space for your appli 00001240 63 61 74 69 6F 6E 20 61 6E 64 20 69 74 27 73 20 64 61 74 61 2E 20 20 49 74 20 61 6C 73 6F 20 61 cation and it's data. It also a 00001260 6C 6C 6F 77 73 20 79 6F 75 20 74 6F 20 73 74 61 72 74 20 6F 72 20 73 74 6F 70 20 61 6E 79 20 73 llows you to start or stop any s 00001280 6F 75 6E 64 20 77 68 65 6E 65 76 65 72 20 79 6F 75 20 77 69 73 68 2E 0D 0A 0D 0A 0D 0A 0D 0A 31 ound whenever you wish.♪◙♪◙♪◙♪◙1 000012A0 2E 33 20 54 68 65 20 47 46 31 20 2D 20 33 32 20 56 6F 69 63 65 20 53 6F 75 6E 64 20 53 79 6E 74 .3 The GF1 - 32 Voice Sound Synt 000012C0 68 65 73 69 7A 65 72 0D 0A 0D 0A 54 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 75 73 65 73 20 57 hesizer♪◙♪◙The UltraSound uses W 000012E0 61 76 65 2D 54 61 62 6C 65 20 53 79 6E 74 68 65 73 69 73 20 74 6F 20 70 72 6F 64 75 63 65 20 73 ave-Table Synthesis to produce s 00001300 6F 75 6E 64 20 6F 75 74 70 75 74 2E 20 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 20 65 69 ound output. This means that ei 00001320 74 68 65 72 20 73 61 6D 70 6C 65 64 20 64 61 74 61 20 66 72 6F 6D 20 61 63 74 75 61 6C 20 69 6E ther sampled data from actual in 00001340 73 74 72 75 6D 65 6E 74 73 20 6F 72 20 6F 74 68 65 72 20 73 79 6E 74 68 65 73 69 7A 65 64 20 64 struments or other synthesized d 00001360 69 67 69 74 61 6C 20 61 75 64 69 6F 20 69 73 20 73 74 6F 72 65 64 20 69 6E 20 44 52 41 4D 20 6F igital audio is stored in DRAM o 00001380 6E 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 42 6F 61 72 64 2E 20 20 54 68 65 20 47 46 31 n the UltraSound Board. The GF1 000013A0 20 63 68 69 70 20 77 68 69 63 68 20 63 6F 6E 74 72 6F 6C 73 20 74 68 65 20 62 6F 61 72 64 20 69 chip which controls the board i 000013C0 73 20 73 65 74 20 75 70 20 74 6F 20 70 6C 61 79 20 62 61 63 6B 20 72 65 6C 61 74 69 76 65 6C 79 s set up to play back relatively 000013E0 20 73 68 6F 72 74 20 64 69 67 69 74 61 6C 20 61 75 64 69 6F 20 73 61 6D 70 6C 65 73 20 61 6E 64 short digital audio samples and 00001400 20 70 72 6F 64 75 63 65 20 63 6F 6E 74 69 6E 75 6F 75 73 20 73 6F 75 6E 64 20 63 6C 6F 73 65 6C produce continuous sound closel 00001420 79 20 72 65 70 72 6F 64 75 63 69 6E 67 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 69 6E 73 74 72 y reproducing the original instr 00001440 75 6D 65 6E 74 2E 20 20 54 68 65 20 33 32 20 76 6F 69 63 65 73 20 61 72 65 20 69 6E 64 65 70 65 ument. The 32 voices are indepe 00001460 6E 64 65 6E 74 6C 79 20 63 6F 6E 74 72 6F 6C 6C 65 64 20 61 6E 64 20 63 61 6E 20 62 65 20 70 72 ndently controlled and can be pr 00001480 6F 64 75 63 69 6E 67 20 64 69 66 66 65 72 65 6E 74 20 73 6F 75 6E 64 73 20 63 6F 6E 63 75 72 65 oducing different sounds concure 000014A0 6E 74 6C 79 2E 20 20 4F 75 74 70 75 74 20 66 72 6F 6D 20 61 6C 6C 20 76 6F 69 63 65 73 20 69 73 ntly. Output from all voices is 000014C0 20 6D 69 78 65 64 20 69 6E 74 6F 20 74 68 65 20 6C 65 66 74 20 6F 72 20 72 69 67 68 74 20 63 68 mixed into the left or right ch 000014E0 61 6E 6E 65 6C 73 2E 20 20 43 69 72 63 75 69 74 72 79 20 69 6E 20 74 68 65 20 47 46 31 20 63 61 annels. Circuitry in the GF1 ca 00001500 6E 20 62 65 20 70 72 6F 67 72 61 6D 6D 65 64 20 74 6F 20 70 65 72 66 6F 72 6D 20 74 68 65 20 66 n be programmed to perform the f 00001520 6F 6C 6C 6F 77 69 6E 67 20 61 75 64 69 6F 20 70 72 6F 63 65 73 73 69 6E 67 20 66 75 6E 63 74 69 ollowing audio processing functi 00001540 6F 6E 73 20 69 6E 64 65 70 65 6E 64 65 6E 74 6C 79 20 66 6F 72 20 65 61 63 68 20 76 6F 69 63 65 ons independently for each voice 00001560 3A 0D 0A 0D 0A 2D 09 46 72 65 71 75 65 6E 63 79 20 53 68 69 66 74 69 6E 67 20 74 6F 20 70 72 6F :♪◙♪◙-○Frequency Shifting to pro 00001580 64 75 63 65 20 64 69 66 66 65 72 65 6E 74 20 6E 6F 74 65 73 20 6F 66 20 74 68 65 20 73 61 6D 65 duce different notes of the same 000015A0 20 69 6E 73 74 72 75 6D 65 6E 74 2E 0D 0A 0D 0A 2D 09 41 6D 70 6C 69 74 75 64 65 20 4D 6F 64 75 instrument.♪◙♪◙-○Amplitude Modu 000015C0 6C 61 74 69 6F 6E 20 74 6F 20 70 72 6F 64 75 63 65 20 6E 6F 74 65 20 65 6E 76 65 6C 6F 70 69 6E lation to produce note envelopin 000015E0 67 20 28 61 74 74 61 63 6B 2C 20 64 65 63 61 79 2C 20 73 75 73 74 61 69 6E 2C 20 72 65 6C 65 61 g (attack, decay, sustain, relea 00001600 73 65 29 2C 20 6F 76 65 72 61 6C 6C 20 76 6F 6C 75 6D 65 20 63 6F 6E 74 72 6F 6C 20 6F 72 20 73 se), overall volume control or s 00001620 70 65 63 69 61 6C 20 65 66 66 65 63 74 73 20 73 75 63 68 20 61 73 20 4C 46 4F 20 28 6C 6F 77 20 pecial effects such as LFO (low 00001640 66 72 65 71 75 65 6E 63 79 20 61 6D 70 6C 69 74 75 64 65 20 6D 6F 64 75 6C 61 74 69 6F 6E 29 2E frequency amplitude modulation). 00001660 0D 0A 0D 0A 2D 09 50 61 6E 6E 69 6E 67 20 74 68 65 20 76 6F 69 63 65 20 66 72 6F 6D 20 6C 65 66 ♪◙♪◙-○Panning the voice from lef 00001680 74 20 74 6F 20 72 69 67 68 74 20 63 68 61 6E 6E 65 6C 20 6F 75 74 70 75 74 73 2E 0D 0A 0D 0A 4D t to right channel outputs.♪◙♪◙M 000016A0 75 6C 74 69 2D 74 72 61 63 6B 20 64 69 67 69 74 61 6C 20 61 75 64 69 6F 20 72 65 63 6F 72 64 69 ulti-track digital audio recordi 000016C0 6E 67 73 20 63 61 6E 20 62 65 20 70 6C 61 79 65 64 20 74 68 72 6F 75 67 68 20 74 68 65 20 47 46 ngs can be played through the GF 000016E0 31 20 62 79 20 75 73 69 6E 67 20 6F 6E 65 20 76 6F 69 63 65 20 70 65 72 20 64 69 67 69 74 61 6C 1 by using one voice per digital 00001700 20 61 75 64 69 6F 20 74 72 61 63 6B 2E 20 20 54 68 65 20 47 46 31 20 69 73 20 63 6F 6D 70 61 74 audio track. The GF1 is compat 00001720 69 62 6C 65 20 77 69 74 68 20 38 20 61 6E 64 20 31 36 20 62 69 74 20 64 61 74 61 2C 20 73 74 65 ible with 8 and 16 bit data, ste 00001740 72 65 6F 20 6F 72 20 6D 6F 6E 6F 2C 20 73 69 67 6E 65 64 20 6F 72 20 75 6E 73 69 67 6E 65 64 20 reo or mono, signed or unsigned 00001760 64 61 74 61 2C 20 61 6E 64 20 38 20 6F 72 20 31 36 20 62 69 74 20 44 4D 41 20 63 68 61 6E 6E 65 data, and 8 or 16 bit DMA channe 00001780 6C 73 2E 0D 0A 0D 0A 54 68 65 20 47 46 31 20 69 73 20 62 61 73 69 63 61 6C 6C 79 20 61 20 70 69 ls.♪◙♪◙The GF1 is basically a pi 000017A0 70 65 6C 69 6E 65 20 70 72 6F 63 65 73 73 6F 72 2E 20 20 49 74 20 63 6F 6E 73 74 61 6E 74 6C 79 peline processor. It constantly 000017C0 20 6C 6F 6F 70 73 20 66 72 6F 6D 20 76 6F 69 63 65 20 23 30 20 74 6F 20 74 68 65 20 65 6E 64 20 loops from voice #0 to the end 000017E0 6F 66 20 74 68 65 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 28 68 6F 77 20 74 6F 20 64 65 66 of the active voices (how to def 00001800 69 6E 65 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 ine the number of active voices 00001820 69 73 20 73 68 6F 77 6E 20 6C 61 74 65 72 29 2E 20 45 76 65 72 79 20 31 2E 36 20 6D 69 63 72 6F is shown later). Every 1.6 micro 00001840 73 65 63 6F 6E 64 73 2C 20 74 68 65 20 47 46 31 20 70 65 72 66 6F 72 6D 73 20 61 20 73 65 72 69 seconds, the GF1 performs a seri 00001860 65 73 20 6F 66 20 6F 70 65 72 61 74 69 6F 6E 73 20 6F 6E 20 61 20 70 61 72 74 69 63 75 6C 61 72 es of operations on a particular 00001880 20 76 6F 69 63 65 2E 20 20 54 68 65 20 6D 6F 72 65 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 voice. The more active voices 000018A0 74 68 65 72 65 20 61 72 65 2C 20 74 68 65 20 6C 6F 6E 67 65 72 20 69 74 20 74 61 6B 65 73 20 62 there are, the longer it takes b 000018C0 65 74 77 65 65 6E 20 65 61 63 68 20 74 69 6D 65 20 61 20 70 61 72 74 69 63 75 6C 61 72 20 76 6F etween each time a particular vo 000018E0 69 63 65 20 69 73 20 73 65 72 76 69 63 65 64 2E 20 20 54 68 69 73 20 70 75 74 73 20 61 20 6C 69 ice is serviced. This puts a li 00001900 6D 69 74 20 6F 6E 20 74 68 65 20 72 61 74 65 20 61 74 20 77 68 69 63 68 20 70 6C 61 79 62 61 63 mit on the rate at which playbac 00001920 6B 20 63 61 6E 20 6F 63 63 75 72 2E 20 20 31 34 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 77 k can occur. 14 active voices w 00001940 69 6C 6C 20 61 6C 6C 6F 77 20 61 20 6D 61 78 69 6D 75 6D 20 6F 66 20 34 34 2E 31 20 6B 48 7A 20 ill allow a maximum of 44.1 kHz 00001960 70 6C 61 79 62 61 63 6B 2E 20 20 32 38 20 76 6F 69 63 65 73 20 77 69 6C 6C 20 61 6C 6C 6F 77 20 playback. 28 voices will allow 00001980 32 32 20 6B 48 7A 2E 20 20 46 61 73 74 65 72 20 72 61 74 65 73 20 63 61 6E 20 62 65 20 61 63 68 22 kHz. Faster rates can be ach 000019A0 69 65 76 65 64 20 62 79 20 6D 61 6B 69 6E 67 20 74 68 65 20 66 72 65 71 75 65 6E 63 79 20 63 6F ieved by making the frequency co 000019C0 6E 73 74 61 6E 74 20 67 72 65 61 74 65 72 20 74 68 61 6E 20 31 2E 20 20 54 68 69 73 20 77 69 6C nstant greater than 1. This wil 000019E0 6C 20 63 61 75 73 65 20 74 68 65 20 47 46 31 20 74 6F 20 73 6B 69 70 20 73 6F 6D 65 20 64 61 74 l cause the GF1 to skip some dat 00001A00 61 20 62 79 74 65 73 20 74 6F 20 70 6C 61 79 20 61 20 73 61 6D 70 6C 65 20 62 61 63 6B 20 61 74 a bytes to play a sample back at 00001A20 20 74 68 65 20 72 65 71 75 65 73 74 65 64 20 66 72 65 71 75 65 6E 63 79 2E 20 20 54 68 69 73 20 the requested frequency. This 00001A40 69 73 20 6E 6F 74 20 67 65 6E 65 72 61 6C 6C 79 20 61 20 70 72 6F 62 6C 65 6D 2C 20 62 75 74 20 is not generally a problem, but 00001A60 63 6F 75 6C 64 20 63 61 75 73 65 20 73 6F 6D 65 20 64 69 73 74 6F 72 74 69 6F 6E 20 6F 72 20 61 could cause some distortion or a 00001A80 6C 69 61 73 69 6E 67 2E 0D 0A 0D 0A 54 68 65 20 66 6F 72 6D 75 6C 61 20 66 6F 72 20 63 61 6C 63 liasing.♪◙♪◙The formula for calc 00001AA0 75 6C 61 74 69 6E 67 20 74 68 65 20 70 6C 61 79 62 61 63 6B 20 72 61 74 65 20 69 73 3A 0D 0A 0D ulating the playback rate is:♪◙♪ 00001AC0 0A 20 20 20 20 46 72 65 71 75 65 6E 63 79 20 20 20 41 63 74 69 76 65 20 56 6F 69 63 65 73 0D 0A ◙ Frequency Active Voices♪◙ 00001AE0 34 34 31 30 30 20 20 20 20 20 20 20 20 20 20 31 34 0D 0A 34 31 31 36 30 20 20 20 20 20 20 20 20 44100 14♪◙41160 00001B00 20 20 31 35 0D 0A 33 38 35 38 37 20 20 20 20 20 20 20 20 20 20 31 36 0D 0A 33 36 33 31 37 20 20 15♪◙38587 16♪◙36317 00001B20 20 20 20 20 20 20 20 20 31 37 0D 0A 33 34 33 30 30 20 20 20 20 20 20 20 20 20 20 31 38 0D 0A 33 17♪◙34300 18♪◙3 00001B40 32 34 39 34 20 20 20 20 20 20 20 20 20 20 31 39 0D 0A 33 30 38 37 30 20 20 20 20 20 20 20 20 20 2494 19♪◙30870 00001B60 20 32 30 0D 0A 32 39 34 30 30 20 20 20 20 20 20 20 20 20 20 32 31 0D 0A 32 38 30 36 33 20 20 20 20♪◙29400 21♪◙28063 00001B80 20 20 20 20 20 20 20 32 32 0D 0A 32 36 38 34 33 20 20 20 20 20 20 20 20 20 20 32 33 0D 0A 32 35 22♪◙26843 23♪◙25 00001BA0 37 32 35 20 20 20 20 20 20 20 20 20 20 32 34 0D 0A 32 34 36 39 36 20 20 20 20 20 20 20 20 20 20 725 24♪◙24696 00001BC0 32 35 0D 0A 32 33 37 34 36 20 20 20 20 20 20 20 20 20 20 32 36 0D 0A 32 32 38 36 36 20 20 20 20 25♪◙23746 26♪◙22866 00001BE0 20 20 20 20 20 20 32 37 0D 0A 32 32 30 35 30 20 20 20 20 20 20 20 20 20 20 32 38 0D 0A 32 31 32 27♪◙22050 28♪◙212 00001C00 38 39 20 20 20 20 20 20 20 20 20 20 32 39 0D 0A 32 30 35 38 30 20 20 20 20 20 20 20 20 20 20 33 89 29♪◙20580 3 00001C20 30 0D 0A 31 39 39 31 36 20 20 20 20 20 20 20 20 20 20 33 31 0D 0A 31 39 32 39 33 20 20 20 20 20 0♪◙19916 31♪◙19293 00001C40 20 20 20 20 20 33 32 0D 0A 0D 0A 54 68 69 73 20 74 61 62 6C 65 20 69 73 20 63 61 6C 63 75 6C 61 32♪◙♪◙This table is calcula 00001C60 74 65 64 20 62 79 20 6B 6E 6F 77 69 6E 67 20 74 68 61 74 20 31 34 20 61 63 74 69 76 65 20 76 6F ted by knowing that 14 active vo 00001C80 69 63 65 73 20 77 69 6C 6C 20 67 69 76 65 20 65 78 61 63 74 6C 79 20 34 34 2E 31 20 6B 48 7A 20 ices will give exactly 44.1 kHz 00001CA0 70 6C 61 79 62 61 63 6B 2E 20 20 54 68 65 72 65 66 6F 72 65 2C 20 74 68 65 20 76 6F 69 63 65 20 playback. Therefore, the voice 00001CC0 73 65 72 76 69 63 69 6E 67 20 72 61 74 65 20 27 58 27 20 63 61 6E 20 62 65 20 63 61 6C 63 75 6C servicing rate 'X' can be calcul 00001CE0 61 74 65 64 20 66 72 6F 6D 3A 0D 0A 0D 0A 31 2C 30 30 30 2C 30 30 30 20 2F 20 28 58 20 2A 20 31 ated from:♪◙♪◙1,000,000 / (X * 1 00001D00 34 29 20 3D 20 34 34 31 30 30 20 48 7A 0D 0A 58 20 3D 20 31 2E 36 31 39 36 39 35 34 39 37 20 6D 4) = 44100 Hz♪◙X = 1.619695497 m 00001D20 69 63 72 6F 73 65 63 6F 6E 64 73 0D 0A 0C 4F 6E 63 65 20 58 20 69 73 20 6B 6E 6F 77 6E 2C 20 74 icroseconds♪◙♀Once X is known, t 00001D40 68 65 20 66 72 65 71 75 65 6E 63 79 20 27 64 69 76 69 73 6F 72 27 20 69 73 20 63 61 6C 63 75 6C he frequency 'divisor' is calcul 00001D60 61 74 65 64 20 62 79 3A 0D 0A 0D 0A 20 64 69 76 69 73 6F 72 20 3D 20 31 2C 30 30 30 2C 30 30 30 ated by:♪◙♪◙ divisor = 1,000,000 00001D80 20 2F 20 28 31 2E 36 31 39 36 39 35 34 39 37 20 2A 20 23 20 6F 66 20 61 63 74 69 76 65 20 76 6F / (1.619695497 * # of active vo 00001DA0 69 63 65 73 29 0D 0A 0D 0A 54 68 65 20 6C 6F 77 6C 65 76 65 6C 20 63 6F 64 65 20 70 72 65 2D 63 ices)♪◙♪◙The lowlevel code pre-c 00001DC0 61 6C 63 75 6C 61 74 65 73 20 74 68 69 73 20 74 61 62 6C 65 20 73 6F 20 74 68 61 74 20 66 6C 6F alculates this table so that flo 00001DE0 61 74 69 6E 67 20 70 6F 69 6E 74 20 61 72 69 74 68 6D 65 74 69 63 20 64 6F 65 73 6E 27 74 20 6E ating point arithmetic doesn't n 00001E00 65 65 64 20 74 6F 20 62 65 20 64 6F 6E 65 2E 20 20 41 20 66 72 65 71 75 65 6E 63 79 20 27 63 6F eed to be done. A frequency 'co 00001E20 75 6E 74 65 72 27 20 69 73 20 75 73 65 64 20 74 6F 20 63 61 6C 63 75 6C 61 74 65 20 68 6F 77 20 unter' is used to calculate how 00001E40 6F 66 74 65 6E 20 61 20 76 6F 69 63 65 20 69 73 20 75 70 64 61 74 65 64 20 62 79 20 74 68 65 20 often a voice is updated by the 00001E60 47 46 31 2E 20 20 54 6F 20 63 61 6C 63 75 6C 61 74 65 20 61 6E 20 46 43 20 28 66 72 65 71 75 65 GF1. To calculate an FC (freque 00001E80 6E 63 79 20 63 6F 75 6E 74 65 72 29 20 66 6F 72 20 61 6E 79 20 67 69 76 65 6E 20 66 72 65 71 75 ncy counter) for any given frequ 00001EA0 65 6E 63 79 20 77 69 74 68 20 61 20 70 61 72 74 69 63 75 6C 61 72 20 23 20 6F 66 20 61 63 74 69 ency with a particular # of acti 00001EC0 76 65 20 76 6F 69 63 65 73 2C 20 72 75 6E 20 69 74 20 74 68 72 6F 75 67 68 20 74 68 69 73 20 66 ve voices, run it through this f 00001EE0 6F 72 6D 75 6C 61 3A 0D 0A 0D 0A 43 3A 0D 0A 20 20 20 66 63 20 3D 20 28 75 6E 73 69 67 6E 65 64 ormula:♪◙♪◙C:♪◙ fc = (unsigned 00001F00 20 69 6E 74 29 28 28 28 73 70 65 65 64 5F 6B 68 7A 3C 3C 39 4C 29 2B 28 64 69 76 69 73 6F 72 3E int)(((speed_khz<<9L)+(divisor> 00001F20 3E 31 4C 29 29 20 2F 20 64 69 76 69 73 6F 72 29 3B 0D 0A 20 20 20 66 63 20 3D 20 66 63 20 3C 3C >1L)) / divisor);♪◙ fc = fc << 00001F40 20 31 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 0D 0A 20 20 20 66 63 20 3A 3D 20 57 6F 72 64 28 28 28 1;♪◙♪◙PASCAL:♪◙ fc := Word((( 00001F60 53 70 65 65 64 5F 4B 68 7A 20 53 48 4C 20 39 29 2B 28 44 69 76 69 73 6F 72 20 53 48 52 20 31 29 Speed_Khz SHL 9)+(Divisor SHR 1) 00001F80 29 20 44 49 56 20 44 69 76 69 73 6F 72 29 3B 0D 0A 20 20 20 66 63 20 3A 3D 20 66 63 20 53 48 4C ) DIV Divisor);♪◙ fc := fc SHL 00001FA0 20 31 3B 0D 0A 0D 0A 54 68 65 20 6C 65 66 74 20 73 68 69 66 74 20 69 73 20 6E 65 65 64 65 64 20 1;♪◙♪◙The left shift is needed 00001FC0 73 69 6E 63 65 20 74 68 65 20 46 43 20 69 73 20 69 6E 20 62 69 74 73 20 31 35 2D 31 2E 20 20 46 since the FC is in bits 15-1. F 00001FE0 6F 72 20 6D 6F 72 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 61 62 6F 75 74 20 74 68 65 20 66 72 or more information about the fr 00002000 65 71 75 65 6E 63 79 20 63 6F 75 6E 74 65 72 2C 20 73 65 65 20 63 68 61 70 74 65 72 20 32 2C 20 equency counter, see chapter 2, 00002020 74 68 65 20 68 61 72 64 77 61 72 65 20 73 65 63 74 69 6F 6E 2E 0D 0A 0D 0A 54 68 69 73 20 76 61 the hardware section.♪◙♪◙This va 00002040 6C 75 65 20 69 73 20 74 68 65 6E 20 70 75 74 20 69 6E 20 74 68 65 20 66 72 65 71 75 65 6E 63 79 lue is then put in the frequency 00002060 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 66 6F 72 20 74 68 61 74 20 70 61 72 74 69 control register for that parti 00002080 63 75 6C 61 72 20 76 6F 69 63 65 2E 20 20 49 66 20 74 68 65 20 6D 61 6E 74 69 73 73 61 20 70 6F cular voice. If the mantissa po 000020A0 72 74 69 6F 6E 20 6F 66 20 74 68 65 20 46 43 20 69 73 20 31 2C 20 74 68 65 6E 20 65 61 63 68 20 rtion of the FC is 1, then each 000020C0 74 69 6D 65 20 61 72 6F 75 6E 64 20 74 68 65 20 6C 6F 6F 70 2C 20 74 68 65 20 47 46 31 20 75 73 time around the loop, the GF1 us 000020E0 65 73 20 65 61 63 68 20 64 61 74 61 20 70 6F 69 6E 74 20 74 6F 20 70 6C 61 79 2E 20 20 49 66 20 es each data point to play. If 00002100 74 68 65 72 65 20 69 73 20 61 20 66 72 61 63 74 69 6F 6E 61 6C 20 70 6F 72 74 69 6F 6E 2C 20 74 there is a fractional portion, t 00002120 68 65 20 47 46 31 20 69 6E 74 65 72 70 6F 6C 61 74 65 73 20 74 68 65 20 61 63 74 75 61 6C 20 64 he GF1 interpolates the actual d 00002140 61 74 61 20 74 6F 20 70 6C 61 79 20 66 72 6F 6D 20 74 68 65 20 74 77 6F 20 64 61 74 61 20 70 6F ata to play from the two data po 00002160 69 6E 74 73 20 74 68 61 74 20 69 74 20 69 73 20 62 65 74 77 65 65 6E 2E 20 20 54 68 69 73 20 6D ints that it is between. This m 00002180 61 6B 65 73 20 74 68 65 20 73 6F 75 6E 64 20 6D 75 63 68 20 27 73 6D 6F 6F 74 68 65 72 27 2C 20 akes the sound much 'smoother', 000021A0 73 69 6E 63 65 20 74 68 65 20 47 46 31 20 77 69 6C 6C 20 63 72 65 61 74 65 20 70 6F 69 6E 74 73 since the GF1 will create points 000021C0 20 69 6E 20 62 65 74 77 65 65 6E 20 74 68 65 20 61 63 74 75 61 6C 20 64 61 74 61 20 70 6F 69 6E in between the actual data poin 000021E0 74 73 2E 20 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 61 73 73 75 6D 65 20 61 6E 20 38 20 62 69 ts. For example, assume an 8 bi 00002200 74 20 72 65 63 6F 72 64 69 6E 67 20 61 74 20 32 32 20 6B 48 7A 20 61 6E 64 20 31 34 20 61 63 74 t recording at 22 kHz and 14 act 00002220 69 76 65 20 76 6F 69 63 65 73 20 2E 20 20 54 68 65 20 66 72 65 71 75 65 6E 63 79 20 63 6F 6E 74 ive voices . The frequency cont 00002240 72 6F 6C 20 72 65 67 69 73 74 65 72 20 69 73 20 73 65 74 20 75 70 20 74 6F 20 31 2F 32 20 28 65 rol register is set up to 1/2 (e 00002260 78 70 6F 6E 65 6E 74 20 3D 20 32 35 36 29 2E 20 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 xponent = 256). This means that 00002280 20 65 76 65 72 79 20 74 69 6D 65 20 61 72 6F 75 6E 64 20 74 68 65 20 6C 6F 6F 70 2C 20 74 68 61 every time around the loop, tha 000022A0 74 20 70 61 72 74 69 63 75 6C 61 72 20 76 6F 69 63 65 27 73 20 61 63 63 75 6D 75 6C 61 74 6F 72 t particular voice's accumulator 000022C0 20 69 73 20 61 64 6A 75 73 74 65 64 20 62 79 20 31 2F 32 2E 20 20 53 6F 20 74 68 65 20 66 69 72 is adjusted by 1/2. So the fir 000022E0 73 74 20 74 69 6D 65 20 74 68 65 20 61 63 63 75 6D 75 6C 61 74 6F 72 20 69 73 20 30 20 61 6E 64 st time the accumulator is 0 and 00002300 20 64 61 74 61 20 70 6F 69 6E 74 20 30 20 69 73 20 75 73 65 64 2E 20 20 54 68 65 20 73 65 63 6F data point 0 is used. The seco 00002320 6E 64 20 74 69 6D 65 20 61 72 6F 75 6E 64 20 74 68 65 20 6C 6F 6F 70 2C 20 74 68 65 20 61 63 63 nd time around the loop, the acc 00002340 75 6D 75 6C 61 74 6F 72 20 69 73 20 30 2E 35 2E 20 20 53 69 6E 63 65 20 74 68 65 72 65 20 6F 62 umulator is 0.5. Since there ob 00002360 76 69 6F 75 73 6C 79 20 69 73 20 6E 6F 20 44 52 41 4D 20 6C 6F 63 61 74 69 6F 6E 20 30 2E 35 2C viously is no DRAM location 0.5, 00002380 20 74 68 65 20 47 46 31 20 69 6E 74 65 72 70 6F 6C 61 74 65 73 20 77 68 61 74 20 74 68 65 20 64 the GF1 interpolates what the d 000023A0 61 74 61 20 77 6F 75 6C 64 20 62 65 20 62 79 20 6C 6F 6F 6B 69 6E 67 20 61 74 20 6C 6F 63 61 74 ata would be by looking at locat 000023C0 69 6F 6E 20 30 20 61 6E 64 20 6C 6F 63 61 74 69 6F 6E 20 31 20 61 6E 64 20 74 61 6B 69 6E 67 20 ion 0 and location 1 and taking 000023E0 74 68 65 20 61 70 70 72 6F 70 72 69 61 74 65 20 72 61 74 69 6F 20 66 72 6F 6D 20 65 61 63 68 2E the appropriate ratio from each. 00002400 20 20 49 6E 20 74 68 69 73 20 63 61 73 65 2C 20 69 74 20 70 69 63 6B 73 20 61 20 70 6F 69 6E 74 In this case, it picks a point 00002420 20 68 61 6C 66 2D 77 61 79 20 62 65 74 77 65 65 6E 20 74 68 65 20 74 77 6F 2E 20 20 49 66 20 74 half-way between the two. If t 00002440 68 65 20 72 65 63 6F 72 64 69 6E 67 20 72 61 74 65 20 77 65 72 65 20 31 31 6B 48 7A 2C 20 69 74 he recording rate were 11kHz, it 00002460 20 77 6F 75 6C 64 20 74 61 6B 65 20 32 35 25 20 66 72 6F 6D 20 6C 6F 63 61 74 69 6F 6E 20 30 20 would take 25% from location 0 00002480 61 6E 64 20 37 35 25 20 66 72 6F 6D 20 6C 6F 63 61 74 69 6F 6E 20 31 20 74 68 65 20 66 69 72 73 and 75% from location 1 the firs 000024A0 74 20 74 69 6D 65 20 74 68 72 6F 75 67 68 20 74 68 65 20 6C 6F 6F 70 2E 20 20 54 68 65 20 6E 65 t time through the loop. The ne 000024C0 78 74 20 74 69 6D 65 20 69 74 20 77 6F 75 6C 64 20 74 61 6B 65 20 35 30 25 20 66 72 6F 6D 20 65 xt time it would take 50% from e 000024E0 61 63 68 2E 20 20 54 68 65 20 6E 65 78 74 20 74 69 6D 65 20 69 74 20 77 6F 75 6C 64 20 74 61 6B ach. The next time it would tak 00002500 65 20 32 35 25 20 66 72 6F 6D 20 6C 6F 63 61 74 69 6F 6E 20 30 20 61 6E 64 20 37 35 25 20 66 72 e 25% from location 0 and 75% fr 00002520 6F 6D 20 6C 6F 63 61 74 69 6F 6E 20 31 2E 20 20 54 68 65 20 66 6F 75 72 74 68 20 74 69 6D 65 20 om location 1. The fourth time 00002540 74 68 72 6F 75 67 68 20 69 74 20 75 73 65 73 20 31 30 30 25 20 6F 66 20 6C 6F 63 61 74 69 6F 6E through it uses 100% of location 00002560 20 31 2E 0D 0A 0D 0A 54 68 65 20 69 6E 74 65 72 70 6F 6C 61 74 69 6F 6E 20 69 73 20 64 6F 6E 65 1.♪◙♪◙The interpolation is done 00002580 20 74 6F 20 61 20 72 65 73 6F 6C 75 74 69 6F 6E 20 6F 66 20 31 36 20 62 69 74 73 2C 20 65 76 65 to a resolution of 16 bits, eve 000025A0 6E 20 66 6F 72 20 38 20 62 69 74 20 70 6C 61 79 62 61 63 6B 2E 20 20 54 68 69 73 20 68 61 73 20 n for 8 bit playback. This has 000025C0 74 68 65 20 65 66 66 65 63 74 20 6F 66 20 6D 61 6B 69 6E 67 20 61 6E 20 38 20 62 69 74 20 72 65 the effect of making an 8 bit re 000025E0 63 6F 72 64 69 6E 67 20 73 6F 75 6E 64 20 62 65 74 74 65 72 20 77 68 65 6E 20 70 6C 61 79 65 64 cording sound better when played 00002600 20 62 61 63 6B 20 6F 6E 20 74 68 65 20 47 46 31 20 74 68 61 6E 20 6F 6E 20 61 20 73 74 61 6E 64 back on the GF1 than on a stand 00002620 61 72 64 20 38 20 62 69 74 20 63 61 72 64 2E 0D 0A 0D 0A 52 65 6D 65 6D 62 65 72 20 74 68 61 74 ard 8 bit card.♪◙♪◙Remember that 00002640 20 74 68 65 20 47 46 31 20 77 6F 72 6B 73 20 6F 6E 20 61 20 76 6F 69 63 65 20 65 76 65 72 79 20 the GF1 works on a voice every 00002660 31 2E 36 20 6D 69 63 72 6F 73 65 63 6F 6E 64 73 2E 20 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 1.6 microseconds. This means th 00002680 61 74 20 74 68 65 20 66 65 77 65 72 20 76 6F 69 63 65 73 2C 20 74 68 65 20 66 61 73 74 65 72 20 at the fewer voices, the faster 000026A0 65 61 63 68 20 76 6F 69 63 65 20 67 65 74 73 20 75 70 64 61 74 65 64 2E 20 20 54 68 65 20 66 72 each voice gets updated. The fr 000026C0 65 71 75 65 6E 63 79 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 73 65 74 74 69 6E 67 equency control register setting 000026E0 20 66 6F 72 20 74 68 65 20 76 6F 69 63 65 20 4D 55 53 54 20 74 61 6B 65 20 74 68 69 73 20 69 6E for the voice MUST take this in 00002700 74 6F 20 61 63 63 6F 75 6E 74 2E 20 20 54 68 65 20 46 43 20 6D 75 73 74 20 67 65 74 20 73 6D 61 to account. The FC must get sma 00002720 6C 6C 65 72 20 69 66 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 61 63 74 69 76 65 20 76 6F 69 ller if the number of active voi 00002740 63 65 73 20 67 65 74 73 20 73 6D 61 6C 6C 65 72 2E 20 20 54 68 69 73 20 77 69 6C 6C 20 69 6E 63 ces gets smaller. This will inc 00002760 72 65 61 73 65 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 70 6F 69 6E 74 73 20 63 72 65 61 74 rease the number of points creat 00002780 65 64 20 62 65 74 77 65 65 6E 20 74 68 65 20 61 63 74 75 61 6C 20 64 61 74 61 20 70 6F 69 6E 74 ed between the actual data point 000027A0 73 20 73 6F 20 74 68 65 20 70 65 72 63 65 69 76 65 64 20 70 6C 61 79 62 61 63 6B 20 73 70 65 65 s so the perceived playback spee 000027C0 64 20 72 65 6D 61 69 6E 73 20 74 68 65 20 73 61 6D 65 2E 0D 0A 0D 0A 0C 31 2E 34 20 4D 49 44 49 d remains the same.♪◙♪◙♀1.4 MIDI 000027E0 20 49 6E 74 65 72 66 61 63 65 20 0D 0A 0D 0A 54 68 65 20 4D 49 44 49 20 31 30 31 20 69 6E 74 65 Interface ♪◙♪◙The MIDI 101 inte 00002800 72 66 61 63 65 20 63 6F 6E 73 69 73 74 73 20 6F 66 20 73 74 61 6E 64 61 72 64 20 55 41 52 54 20 rface consists of standard UART 00002820 66 75 6E 63 74 69 6F 6E 61 6C 69 74 79 20 2D 20 4D 6F 74 6F 72 6F 6C 61 20 4D 43 36 38 43 35 30 functionality - Motorola MC68C50 00002840 2E 20 20 41 6E 20 69 6E 74 65 72 72 75 70 74 20 74 6F 20 74 68 65 20 50 43 20 63 61 6E 20 62 65 . An interrupt to the PC can be 00002860 20 67 65 6E 65 72 61 74 65 64 20 66 6F 72 20 65 61 63 68 20 62 79 74 65 20 6F 66 20 4D 49 44 49 generated for each byte of MIDI 00002880 20 64 61 74 61 20 72 65 63 65 69 76 65 64 20 6F 72 20 74 72 61 6E 73 6D 69 74 74 65 64 2E 20 20 data received or transmitted. 000028A0 54 68 69 73 20 68 61 72 64 77 61 72 65 20 69 73 20 69 6E 64 65 70 65 6E 64 65 6E 74 20 6F 66 20 This hardware is independent of 000028C0 61 6E 79 20 6F 66 20 74 68 65 20 6F 74 68 65 72 20 68 61 72 64 77 61 72 65 2E 20 20 54 68 65 20 any of the other hardware. The 000028E0 6D 61 69 6E 20 4D 49 44 49 20 63 69 72 63 75 69 74 72 79 20 69 73 20 69 6E 63 6C 75 64 65 64 20 main MIDI circuitry is included 00002900 69 6E 20 74 68 65 20 47 46 31 20 70 72 6F 63 65 73 73 6F 72 2C 20 62 75 74 20 65 78 74 65 72 6E in the GF1 processor, but extern 00002920 61 6C 20 74 6F 20 74 68 65 20 63 68 69 70 20 69 73 20 61 6E 20 6F 70 74 69 63 61 6C 20 69 73 6F al to the chip is an optical iso 00002940 6C 61 74 6F 72 20 74 68 61 74 20 69 73 20 75 73 65 64 20 6F 6E 20 74 68 65 20 73 65 72 69 61 6C lator that is used on the serial 00002960 20 69 6E 70 75 74 20 64 61 74 61 20 61 6E 64 20 61 6E 20 6F 70 65 6E 20 63 6F 6C 6C 65 63 74 6F input data and an open collecto 00002980 72 20 64 72 69 76 65 72 20 74 68 61 74 20 69 73 20 75 73 65 64 20 66 6F 72 20 74 68 65 20 73 65 r driver that is used for the se 000029A0 72 69 61 6C 20 6F 75 74 70 75 74 2E 20 20 49 6E 20 61 64 64 69 74 69 6F 6E 2C 20 65 78 74 65 72 rial output. In addition, exter 000029C0 6E 61 6C 20 6C 6F 67 69 63 20 69 73 20 69 6E 63 6C 75 64 65 64 20 6F 6E 20 62 6F 61 72 64 20 74 nal logic is included on board t 000029E0 6F 20 6C 6F 6F 70 20 62 61 63 6B 20 74 72 61 6E 73 6D 69 74 20 64 61 74 61 20 74 6F 20 74 68 65 o loop back transmit data to the 00002A00 20 72 65 63 65 69 76 65 20 64 61 74 61 20 75 6E 64 65 72 20 73 6F 66 74 77 61 72 65 20 63 6F 6E receive data under software con 00002A20 74 72 6F 6C 2E 20 20 54 68 65 20 73 65 72 69 61 6C 20 69 6E 74 65 72 66 61 63 65 20 68 61 73 20 trol. The serial interface has 00002A40 61 20 66 69 78 65 64 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 77 69 74 68 20 6E 6F 20 70 72 a fixed configuration with no pr 00002A60 6F 67 72 61 6D 6D 61 62 6C 65 20 6F 70 74 69 6F 6E 73 2C 20 61 73 20 69 6E 20 74 68 65 20 4D 43 ogrammable options, as in the MC 00002A80 36 38 35 30 2E 20 41 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 69 73 20 75 73 65 64 6850. A control register is used 00002AA0 20 74 6F 20 65 6E 61 62 6C 65 20 61 6E 64 20 64 69 73 61 62 6C 65 20 74 68 65 20 69 6E 74 65 72 to enable and disable the inter 00002AC0 72 75 70 74 20 67 65 6E 65 72 61 74 69 6F 6E 20 6C 6F 67 69 63 2E 20 20 41 20 73 74 61 74 75 73 rupt generation logic. A status 00002AE0 20 72 65 67 69 73 74 65 72 20 69 73 20 75 73 65 64 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 20 69 register is used to determine i 00002B00 66 20 74 68 65 20 74 72 61 6E 73 6D 69 74 20 6F 72 20 72 65 63 65 69 76 65 20 72 65 67 69 73 74 f the transmit or receive regist 00002B20 65 72 20 69 73 20 69 6E 74 65 72 72 75 70 74 69 6E 67 2E 20 20 41 20 72 65 61 64 20 6F 72 20 77 er is interrupting. A read or w 00002B40 72 69 74 65 20 74 6F 20 74 68 65 20 64 61 74 61 20 72 65 67 69 73 74 65 72 20 63 6C 65 61 72 73 rite to the data register clears 00002B60 20 74 68 65 20 69 6E 74 65 72 72 75 70 74 20 73 74 61 74 75 73 2E 20 20 0D 0A 0D 0A 54 68 65 20 the interrupt status. ♪◙♪◙The 00002B80 73 70 65 63 69 66 69 63 61 74 69 6F 6E 73 20 66 6F 72 20 74 68 65 20 69 6E 74 65 72 66 61 63 65 specifications for the interface 00002BA0 20 61 72 65 3A 0D 0A 0D 0A 33 31 2E 32 35 20 6B 48 7A 20 2B 2D 20 31 25 0D 0A 61 73 79 6E 63 68 are:♪◙♪◙31.25 kHz +- 1%♪◙asynch 00002BC0 72 6F 6E 6F 75 73 0D 0A 31 20 73 74 61 72 74 20 62 69 74 0D 0A 38 20 64 61 74 61 20 62 69 74 73 ronous♪◙1 start bit♪◙8 data bits 00002BE0 0D 0A 31 20 73 74 6F 70 20 62 69 74 0D 0A 0D 0A 54 68 65 20 4D 49 44 49 20 73 69 67 6E 61 6C 73 ♪◙1 stop bit♪◙♪◙The MIDI signals 00002C00 20 61 72 65 20 61 76 61 69 6C 61 62 6C 65 20 6F 6E 20 74 68 65 20 31 35 20 70 69 6E 20 44 20 63 are available on the 15 pin D c 00002C20 6F 6E 6E 65 63 74 6F 72 20 75 73 65 64 20 66 6F 72 20 74 68 65 20 6A 6F 79 73 74 69 63 6B 2E 20 onnector used for the joystick. 00002C40 20 41 6E 20 65 78 74 65 72 6E 61 6C 20 63 61 62 6C 65 20 61 73 73 65 6D 62 6C 79 20 63 6F 6E 74 An external cable assembly cont 00002C60 61 69 6E 69 6E 67 20 74 68 65 20 6F 70 74 69 63 61 6C 20 69 73 6F 6C 61 74 6F 72 20 61 6E 64 20 aining the optical isolator and 00002C80 64 72 69 76 65 72 20 69 73 20 72 65 71 75 69 72 65 64 20 74 6F 20 75 73 65 20 74 68 65 20 4D 49 driver is required to use the MI 00002CA0 44 49 20 69 6E 74 65 72 66 61 63 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 31 2E 35 20 4A 6F 79 73 74 69 63 DI interface.♪◙♪◙♪◙♪◙1.5 Joystic 00002CC0 6B 20 49 6E 74 65 72 66 61 63 65 0D 0A 0D 0A 54 68 65 20 6A 6F 79 73 74 69 63 6B 20 69 6E 74 65 k Interface♪◙♪◙The joystick inte 00002CE0 72 66 61 63 65 20 69 73 20 61 6E 20 45 6C 69 6D 69 6E 61 74 6F 72 20 4A 6F 79 73 74 69 63 6B 20 rface is an Eliminator Joystick 00002D00 69 6E 74 65 72 66 61 63 65 20 64 65 73 69 67 6E 65 64 20 62 79 20 41 64 76 61 6E 63 65 64 20 47 interface designed by Advanced G 00002D20 72 61 76 69 73 2E 20 20 49 74 20 62 61 73 69 63 61 6C 6C 79 20 63 6F 6E 73 69 73 74 73 20 6F 66 ravis. It basically consists of 00002D40 20 61 20 73 69 6E 67 6C 65 20 65 69 67 68 74 20 62 69 74 20 72 65 67 69 73 74 65 72 2E 20 20 57 a single eight bit register. W 00002D60 68 65 6E 20 77 72 69 74 74 65 6E 20 74 6F 2C 20 66 6F 75 72 20 66 6C 69 70 2D 66 6C 6F 70 73 20 hen written to, four flip-flops 00002D80 61 72 65 20 72 65 73 65 74 20 61 6E 64 20 63 6F 6D 70 61 72 61 74 6F 72 20 69 6E 70 75 74 73 20 are reset and comparator inputs 00002DA0 28 4C 4D 33 33 39 29 20 62 65 67 69 6E 20 74 6F 20 63 68 61 72 67 65 20 75 70 20 62 61 73 65 64 (LM339) begin to charge up based 00002DC0 20 6F 6E 20 74 68 65 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 68 65 20 6A 6F 79 73 74 69 63 6B on the position of the joystick 00002DE0 2E 20 20 54 68 65 20 63 6F 6D 70 61 72 61 74 6F 72 20 74 68 72 65 73 68 6F 6C 64 20 69 73 20 73 . The comparator threshold is s 00002E00 65 74 75 70 20 69 6E 20 74 68 65 20 47 46 31 2E 20 20 43 72 6F 73 73 69 6E 67 20 74 68 65 20 74 etup in the GF1. Crossing the t 00002E20 68 72 65 73 68 6F 6C 64 20 6F 66 20 74 68 65 20 63 6F 6D 70 61 72 61 74 6F 72 73 20 63 61 75 73 hreshold of the comparators caus 00002E40 65 20 74 68 65 20 66 6C 69 70 2D 66 6C 6F 70 73 20 74 6F 20 62 65 20 70 72 65 73 65 74 20 61 6E e the flip-flops to be preset an 00002E60 64 20 74 68 65 20 63 61 70 61 63 69 74 6F 72 20 74 6F 20 62 65 20 64 69 73 63 68 61 72 67 65 64 d the capacitor to be discharged 00002E80 2E 20 20 52 65 61 64 73 20 6F 66 20 74 68 65 20 72 65 67 69 73 74 65 72 20 72 65 74 75 72 6E 20 . Reads of the register return 00002EA0 74 68 65 20 73 74 61 74 65 20 6F 66 20 66 6F 75 72 20 64 69 67 69 74 61 6C 20 69 6E 70 75 74 73 the state of four digital inputs 00002EC0 20 28 69 6E 74 65 72 6E 61 6C 6C 79 20 70 75 6C 6C 65 64 20 75 70 29 20 61 6E 64 20 74 68 65 20 (internally pulled up) and the 00002EE0 73 74 61 74 65 20 6F 66 20 74 68 65 20 66 6C 69 70 2D 66 6C 6F 70 73 2E 20 20 54 68 65 20 72 61 state of the flip-flops. The ra 00002F00 74 65 20 6F 66 20 64 69 73 63 68 61 72 67 65 20 6F 66 20 74 68 65 20 63 61 70 61 63 69 74 6F 72 te of discharge of the capacitor 00002F20 73 20 68 61 73 20 61 20 6D 69 6E 69 6D 75 6D 20 74 69 6D 65 20 63 6F 6E 73 74 61 6E 74 20 6F 66 s has a minimum time constant of 00002F40 20 31 20 6D 69 63 72 6F 73 65 63 6F 6E 64 2E 20 20 0D 0A 0D 0A 55 6C 74 72 61 53 6F 75 6E 64 20 1 microsecond. ♪◙♪◙UltraSound 00002F60 62 6F 61 72 64 73 20 77 69 74 68 20 61 20 72 65 76 69 73 69 6F 6E 20 76 65 72 73 69 6F 6E 20 28 boards with a revision version ( 00002F80 70 72 69 6E 74 65 64 20 6F 6E 20 74 68 65 20 63 61 72 64 29 20 6F 66 20 33 2E 33 20 61 6E 64 20 printed on the card) of 3.3 and 00002FA0 6C 6F 77 65 72 20 68 61 76 65 20 61 20 6A 75 6D 70 65 72 20 77 68 69 63 68 20 69 73 20 75 73 65 lower have a jumper which is use 00002FC0 64 20 74 6F 20 65 6E 61 62 6C 65 20 6F 72 20 64 69 73 61 62 6C 65 20 74 68 65 20 6A 6F 79 73 74 d to enable or disable the joyst 00002FE0 69 63 6B 2E 20 20 42 6F 61 72 64 73 20 77 69 74 68 20 61 20 72 65 76 69 73 69 6F 6E 20 76 65 72 ick. Boards with a revision ver 00003000 73 69 6F 6E 20 6F 66 20 33 2E 34 20 61 6E 64 20 61 62 6F 76 65 20 68 61 76 65 20 61 20 73 6F 66 sion of 3.4 and above have a sof 00003020 74 77 61 72 65 20 65 6E 61 62 6C 65 2F 64 69 73 61 62 6C 65 20 66 6F 72 20 74 68 65 20 6A 6F 79 tware enable/disable for the joy 00003040 73 74 69 63 6B 20 69 6E 73 74 65 61 64 20 6F 66 20 61 20 6A 75 6D 70 65 72 2E 20 20 54 68 65 72 stick instead of a jumper. Ther 00003060 65 20 69 73 20 61 20 6A 6F 79 73 74 69 63 6B 20 53 44 4B 20 61 76 61 69 6C 61 62 6C 65 20 73 70 e is a joystick SDK available sp 00003080 65 72 61 74 65 6C 79 20 66 72 6F 6D 20 47 72 61 76 69 73 2E 0D 0A 0D 0A 0D 0A 0C 43 68 61 70 74 erately from Gravis.♪◙♪◙♪◙♀Chapt 000030A0 65 72 20 32 20 2D 20 48 61 72 64 77 61 72 65 20 49 6E 66 6F 72 6D 61 74 69 6F 6E 0D 0A 0D 0A 32 er 2 - Hardware Information♪◙♪◙2 000030C0 2E 31 20 20 49 2F 4F 20 50 6F 72 74 20 4D 61 70 0D 0A 0D 0A 54 68 65 20 66 6F 6C 6C 6F 77 69 6E .1 I/O Port Map♪◙♪◙The followin 000030E0 67 20 64 65 73 63 72 69 62 65 73 20 49 2F 4F 20 61 64 64 72 65 73 73 20 6D 61 70 20 75 73 65 64 g describes I/O address map used 00003100 20 6F 6E 20 74 68 65 20 62 6F 61 72 64 2E 20 54 68 65 20 27 58 27 20 69 73 20 64 65 66 69 6E 65 on the board. The 'X' is define 00003120 64 20 62 79 20 74 68 65 20 6A 75 6D 70 65 72 20 73 65 74 74 69 6E 67 73 20 6F 6E 20 74 68 65 20 d by the jumper settings on the 00003140 55 6C 74 72 61 53 6F 75 6E 64 20 61 6E 64 20 73 68 6F 75 6C 64 20 6D 61 74 63 68 20 74 68 61 74 UltraSound and should match that 00003160 20 73 70 65 63 69 66 69 65 64 20 69 6E 20 74 68 65 20 55 4C 54 52 41 53 4E 44 20 65 6E 76 69 72 specified in the ULTRASND envir 00003180 6F 6E 6D 65 6E 74 20 76 61 72 69 61 62 6C 65 2E 0D 0A 0D 0A 09 49 4E 54 45 52 46 41 43 45 20 20 onment variable.♪◙♪◙○INTERFACE 000031A0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 2F 4F 2C 4D 45 4D 2C 20 I/O,MEM, 000031C0 20 52 2C 57 20 20 20 20 20 20 20 41 44 44 52 45 53 53 0D 0A 09 20 20 20 20 20 20 20 20 20 20 20 R,W ADDRESS♪◙○ 000031E0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 4E 54 2C 44 4D 41 20 20 INT,DMA 00003200 20 20 20 20 20 20 20 20 20 20 20 48 45 58 0D 0A 09 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D HEX♪◙○--------------- 00003220 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -------------------------------- 00003240 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 09 55 6C 74 72 61 53 6F 75 6E 64 20 42 61 73 65 20 -------------♪◙○UltraSound Base 00003260 50 6F 72 74 3A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 2D 2D 20 20 20 20 20 20 20 2D 2D 20 Port: --- -- 00003280 20 20 20 20 20 20 20 32 58 30 0D 0A 0D 0A 09 4D 49 44 49 20 49 6E 74 65 72 66 61 63 65 3A 0D 0A 2X0♪◙♪◙○MIDI Interface:♪◙ 000032A0 09 20 20 20 20 20 43 6F 6E 74 72 6F 6C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ○ Control 000032C0 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 20 20 33 58 30 0D 0A 09 20 20 I/O W 3X0♪◙○ 000032E0 20 20 20 53 74 61 74 75 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Status 00003300 20 49 2F 4F 20 20 20 20 20 20 20 52 20 20 20 20 20 20 20 20 20 33 58 30 0D 0A 09 20 20 20 20 20 I/O R 3X0♪◙○ 00003320 54 72 61 6E 73 6D 69 74 20 44 61 74 61 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 2F Transmit Data I/ 00003340 4F 20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 20 20 33 58 31 0D 0A 09 20 20 20 20 20 52 65 63 O W 3X1♪◙○ Rec 00003360 65 69 76 65 20 44 61 74 61 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 2F 4F 20 20 eive Data I/O 00003380 20 20 20 20 20 52 20 20 20 20 20 20 20 20 20 33 58 31 0D 0A 09 09 4A 6F 79 73 74 69 63 6B 20 49 R 3X1♪◙○○Joystick I 000033A0 6E 74 65 72 66 61 63 65 3A 0D 0A 09 20 20 20 20 20 20 20 54 72 69 67 67 65 72 20 54 69 6D 65 72 nterface:♪◙○ Trigger Timer 000033C0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 57 20 20 20 20 20 20 I/O W 000033E0 20 20 20 32 30 31 0D 0A 09 20 20 20 20 20 20 20 52 65 61 64 20 44 61 74 61 20 20 20 20 20 20 20 201♪◙○ Read Data 00003400 20 20 20 20 20 20 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 52 20 20 20 20 20 20 20 20 20 I/O R 00003420 32 30 31 0D 0A 0D 0A 09 47 46 31 20 53 79 6E 74 68 65 73 69 7A 65 72 3A 0D 0A 09 20 20 20 20 20 201♪◙♪◙○GF1 Synthesizer:♪◙○ 00003440 47 46 31 20 50 61 67 65 20 52 65 67 69 73 74 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 49 2F GF1 Page Register I/ 00003460 4F 20 20 20 20 20 20 20 52 2F 57 20 20 20 20 20 20 20 33 58 32 0D 0A 09 20 20 20 20 20 47 46 31 O R/W 3X2♪◙○ GF1 00003480 2F 47 6C 6F 62 61 6C 20 52 65 67 69 73 74 65 72 20 53 65 6C 65 63 74 20 20 20 20 49 2F 4F 20 20 /Global Register Select I/O 000034A0 20 20 20 20 20 52 2F 57 20 20 20 20 20 20 20 33 58 33 0D 0A 09 20 20 20 20 20 47 46 31 2F 47 6C R/W 3X3♪◙○ GF1/Gl 000034C0 6F 62 61 6C 20 44 61 74 61 20 4C 6F 77 20 42 79 74 65 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 obal Data Low Byte I/O 000034E0 20 20 52 2C 57 20 20 20 20 20 20 20 33 58 34 0D 0A 09 20 20 20 20 20 47 46 31 2F 47 6C 6F 62 61 R,W 3X4♪◙○ GF1/Globa 00003500 6C 20 44 61 74 61 20 48 69 67 68 20 42 79 74 65 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 52 l Data High Byte I/O R 00003520 2F 57 20 20 20 20 20 20 20 33 58 35 0D 0A 09 20 20 20 20 20 49 52 51 20 53 74 61 74 75 73 20 52 /W 3X5♪◙○ IRQ Status R 00003540 65 67 69 73 74 65 72 20 31 3D 41 43 54 49 56 45 20 20 49 2F 4F 20 20 20 20 20 20 20 52 20 20 20 egister 1=ACTIVE I/O R 00003560 20 20 20 20 20 20 32 58 36 0D 0A 09 20 20 20 20 20 54 69 6D 65 72 20 43 6F 6E 74 72 6F 6C 20 52 2X6♪◙○ Timer Control R 00003580 65 67 20 20 20 20 20 20 20 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 52 2F 57 20 20 20 20 eg I/O R/W 000035A0 20 20 20 32 58 38 0D 0A 09 20 20 20 20 20 54 69 6D 65 72 20 44 61 74 61 20 20 20 20 20 20 20 20 2X8♪◙○ Timer Data 000035C0 20 20 20 20 20 20 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 20 20 I/O W 000035E0 32 58 39 0D 0A 09 20 20 20 20 20 44 52 41 4D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2X9♪◙○ DRAM 00003600 20 20 20 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 52 2C 57 20 20 20 20 20 20 20 33 58 37 I/O R,W 3X7 00003620 0D 0A 09 20 20 20 20 20 44 52 41 4D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ♪◙○ DRAM 00003640 20 20 20 20 20 20 44 4D 41 20 20 20 20 20 20 20 52 2C 57 20 20 20 20 20 20 20 31 2C 33 2C 35 2C DMA R,W 1,3,5, 00003660 36 2C 37 0D 0A 09 20 20 20 20 20 52 65 63 6F 72 64 20 44 69 67 69 74 61 6C 20 41 75 64 69 6F 20 6,7♪◙○ Record Digital Audio 00003680 20 20 20 20 20 20 20 20 20 44 4D 41 20 20 20 20 20 20 20 52 20 20 20 20 20 20 20 20 20 31 2C 33 DMA R 1,3 000036A0 2C 35 2C 36 2C 37 0D 0A 09 09 42 4F 41 52 44 20 4F 4E 4C 59 0D 0A 09 20 20 20 20 20 20 20 4D 69 ,5,6,7♪◙○○BOARD ONLY♪◙○ Mi 000036C0 78 20 43 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 20 20 20 20 20 20 20 49 2F 4F 20 20 20 x Control register I/O 000036E0 20 20 20 20 57 20 20 20 20 20 20 20 20 20 32 58 30 0D 0A 09 20 20 20 20 20 20 20 49 52 51 20 20 W 2X0♪◙○ IRQ 00003700 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 control register I/O 00003720 20 57 20 20 20 20 20 20 20 20 20 32 58 42 0D 0A 09 20 20 20 20 20 20 20 28 32 58 30 2D 20 62 69 W 2XB♪◙○ (2X0- bi 00003740 74 20 36 20 3D 20 31 29 0D 0A 09 20 20 20 20 20 20 20 44 4D 41 20 63 6F 6E 74 72 6F 6C 20 72 65 t 6 = 1)♪◙○ DMA control re 00003760 67 69 73 74 65 72 20 20 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 gister I/O W 00003780 20 20 32 58 42 0D 0A 09 20 20 20 20 20 20 20 28 32 58 30 2D 20 62 69 74 20 36 20 3D 20 30 29 0D 2XB♪◙○ (2X0- bit 6 = 0)♪ 000037A0 0A 09 20 20 20 20 20 20 20 52 65 67 69 73 74 65 72 20 43 6F 6E 74 72 6F 6C 73 20 20 20 20 20 20 ◙○ Register Controls 000037C0 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 52 2F 57 20 20 20 20 20 20 20 32 58 46 20 28 52 65 I/O R/W 2XF (Re 000037E0 76 20 33 2E 34 2B 29 0D 0A 09 20 20 20 20 20 20 20 4D 69 78 65 72 20 43 6F 6E 74 72 6F 6C 20 20 v 3.4+)♪◙○ Mixer Control 00003800 20 20 20 20 20 20 20 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 20 I/O W 00003820 20 33 58 36 20 28 52 65 76 20 33 2E 37 2B 29 0D 0A 0D 0A 41 74 20 70 6F 77 65 72 2D 75 70 20 74 3X6 (Rev 3.7+)♪◙♪◙At power-up t 00003840 68 65 20 62 6F 61 72 64 20 68 61 73 20 6F 70 65 72 61 74 69 6F 6E 61 6C 20 4A 6F 79 73 74 69 63 he board has operational Joystic 00003860 6B 20 61 6E 64 20 4D 49 44 49 20 69 6E 74 65 72 66 61 63 65 73 2E 20 54 68 69 73 20 61 6C 6C 6F k and MIDI interfaces. This allo 00003880 77 73 20 74 68 65 69 72 20 64 69 72 65 63 74 20 75 73 65 20 77 69 74 68 20 65 78 69 73 74 69 6E ws their direct use with existin 000038A0 67 20 73 6F 66 74 77 61 72 65 2E 20 54 68 65 20 47 46 31 20 41 53 49 43 20 70 6F 77 65 72 73 20 g software. The GF1 ASIC powers 000038C0 75 70 20 77 69 74 68 20 61 6C 6C 20 76 6F 69 63 65 73 20 64 69 73 61 62 6C 65 64 2C 20 6E 6F 74 up with all voices disabled, not 000038E0 20 72 65 71 75 69 72 69 6E 67 20 61 20 73 6F 66 74 77 61 72 65 20 69 6E 69 74 69 61 6C 69 7A 61 requiring a software initializa 00003900 74 69 6F 6E 2E 20 54 68 69 73 20 68 65 6C 70 73 20 65 6C 69 6D 69 6E 61 74 65 20 6E 6F 69 73 65 tion. This helps eliminate noise 00003920 20 61 74 20 70 6F 77 65 72 75 70 20 61 6E 64 20 61 6C 6C 6F 77 73 20 74 68 65 20 4A 6F 79 73 74 at powerup and allows the Joyst 00003940 69 63 6B 20 61 6E 64 20 4D 49 44 49 20 69 6E 74 65 72 66 61 63 65 73 20 74 6F 20 62 65 20 75 73 ick and MIDI interfaces to be us 00003960 65 64 20 62 79 20 65 78 69 73 74 69 6E 67 20 61 70 70 6C 69 63 61 74 69 6F 6E 73 2E 20 54 68 65 ed by existing applications. The 00003980 20 49 52 51 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 4D 55 53 54 20 62 65 20 73 65 IRQ control register MUST be se 000039A0 74 20 75 70 20 62 65 66 6F 72 65 20 74 68 65 20 4D 49 44 49 20 69 6E 74 65 72 66 61 63 65 20 63 t up before the MIDI interface c 000039C0 61 6E 20 67 65 6E 65 72 61 74 65 20 61 6E 20 49 52 51 2E 20 20 54 68 69 73 20 69 73 20 64 6F 6E an generate an IRQ. This is don 000039E0 65 20 69 6E 20 55 4C 54 52 49 4E 49 54 2E 45 58 45 20 61 6E 64 20 77 68 65 6E 20 61 6E 20 61 70 e in ULTRINIT.EXE and when an ap 00003A00 70 6C 69 63 61 74 69 6F 6E 20 73 65 74 73 20 75 70 20 74 68 65 20 6C 61 74 63 68 65 73 20 74 6F plication sets up the latches to 00003A20 20 74 68 65 20 55 4C 54 52 41 53 4E 44 20 70 61 72 61 6D 65 74 65 72 73 2E 0D 0A 0D 0A 0C 32 2E the ULTRASND parameters.♪◙♪◙♀2. 00003A40 32 20 20 4D 49 44 49 20 43 6F 6E 74 72 6F 6C 20 50 6F 72 74 20 2D 20 33 58 30 0D 0A 0D 0A 48 65 2 MIDI Control Port - 3X0♪◙♪◙He 00003A60 72 65 20 61 72 65 20 74 68 65 20 62 69 74 20 64 65 66 69 6E 69 74 69 6F 6E 73 20 66 6F 72 20 74 re are the bit definitions for t 00003A80 68 65 20 4D 49 44 49 20 63 6F 6E 74 72 6F 6C 20 62 79 74 65 2E 20 49 74 20 69 73 20 6C 6F 63 61 he MIDI control byte. It is loca 00003AA0 74 65 64 20 61 74 20 61 64 64 72 65 73 73 20 33 58 30 20 68 65 78 20 61 6E 64 20 69 73 20 77 72 ted at address 3X0 hex and is wr 00003AC0 69 74 65 20 6F 6E 6C 79 2E 0D 0A 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ite only.♪◙♪◙○================== 00003AE0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 ===============♪◙○| 7 | 6 | 5 | 00003B00 34 20 7C 20 33 20 7C 20 32 20 7C 20 31 20 7C 20 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 4 | 3 | 2 | 1 | 0 |♪◙○========== 00003B20 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C 20 20 20 =======================♪◙○ | 00003B40 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 20 7C 20 | | | | | | |♪◙○ | 00003B60 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 | | | | | | +---- 00003B80 31 20 5C 20 4D 61 73 74 65 72 20 72 65 73 65 74 20 28 77 68 65 6E 20 73 65 74 29 0D 0A 09 20 20 1 \ Master reset (when set)♪◙○ 00003BA0 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D | | | | | | +------- 00003BC0 2D 20 31 20 2F 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D - 1 /♪◙○ | | | | | +- 00003BE0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 09 20 20 7C 20 20 20 7C 20 20 ----------- Reserved♪◙○ | | 00003C00 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 | | +---------------- Reser 00003C20 76 65 64 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ved♪◙○ | | | +----------- 00003C40 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 2B --------- Reserved♪◙○ | | + 00003C60 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 31 20 5C 20 78 6D 69 ------------------------ 1 \ xmi 00003C80 74 20 49 52 51 20 65 6E 61 62 6C 65 64 0D 0A 09 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D t IRQ enabled♪◙○ | +--------- 00003CA0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 30 20 2F 0D 0A 09 20 20 2B 2D 2D 2D ------------------- 0 /♪◙○ +--- 00003CC0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 31 20 ----------------------------- 1 00003CE0 3D 20 52 65 63 65 69 76 65 20 49 52 51 20 65 6E 61 62 6C 65 64 0D 0A 0D 0A 42 69 74 20 30 20 26 = Receive IRQ enabled♪◙♪◙Bit 0 & 00003D00 20 31 20 77 69 6C 6C 20 63 61 75 73 65 20 61 20 6D 61 73 74 65 72 20 72 65 73 65 74 20 77 68 65 1 will cause a master reset whe 00003D20 6E 20 74 6F 67 67 6C 65 64 20 68 69 67 68 20 61 6E 64 20 74 68 65 6E 20 6C 6F 77 2E 20 54 68 65 n toggled high and then low. The 00003D40 79 20 6D 75 73 74 20 62 65 20 6C 65 66 74 20 6C 6F 77 20 77 68 65 6E 20 75 73 69 6E 67 20 70 6F y must be left low when using po 00003D60 72 74 2E 20 54 68 69 73 20 77 69 6C 6C 20 6E 6F 72 6D 61 6C 6C 79 20 63 61 75 73 65 20 61 20 74 rt. This will normally cause a t 00003D80 72 61 6E 73 6D 69 74 20 62 75 66 66 65 72 20 65 6D 70 74 79 20 49 52 51 2E 0D 0A 0D 0A 0D 0A 0D ransmit buffer empty IRQ.♪◙♪◙♪◙♪ 00003DA0 0A 32 2E 33 20 20 4D 49 44 49 20 53 74 61 74 75 73 20 50 6F 72 74 20 2D 20 33 58 30 0D 0A 0D 0A ◙2.3 MIDI Status Port - 3X0♪◙♪◙ 00003DC0 48 65 72 65 20 61 72 65 20 74 68 65 20 62 69 74 20 64 65 66 69 6E 69 74 69 6F 6E 73 20 66 6F 72 Here are the bit definitions for 00003DE0 20 74 68 65 20 4D 49 44 49 20 73 74 61 74 75 73 20 62 79 74 65 2E 20 20 49 74 20 69 73 20 6C 6F the MIDI status byte. It is lo 00003E00 63 61 74 65 64 20 61 74 20 61 64 64 72 65 73 73 20 33 58 30 20 68 65 78 20 61 6E 64 20 69 73 20 cated at address 3X0 hex and is 00003E20 72 65 61 64 2D 6F 6E 6C 79 2E 0D 0A 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D read-only.♪◙♪◙○================= 00003E40 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C ================♪◙○| 7 | 6 | 5 | 00003E60 20 34 20 7C 20 33 20 7C 20 32 20 7C 20 31 20 7C 20 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 4 | 3 | 2 | 1 | 0 |♪◙○========= 00003E80 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C 20 20 ========================♪◙○ | 00003EA0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 20 7C | | | | | | |♪◙○ | 00003EC0 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D | | | | | | +---- 00003EE0 20 52 65 63 65 69 76 65 20 72 65 67 2E 20 66 75 6C 6C 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C Receive reg. full♪◙○ | | | 00003F00 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 54 72 61 6E 73 6D 69 | | | +-------- Transmi 00003F20 74 20 72 65 67 2E 20 65 6D 70 74 79 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 t reg. empty♪◙○ | | | | 00003F40 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 09 20 20 | +------------ Reserved♪◙○ 00003F60 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | | | | +--------------- 00003F80 2D 20 52 65 73 65 72 76 65 64 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D - Reserved♪◙○ | | | +---- 00003FA0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 46 72 61 6D 69 6E 67 20 45 72 72 6F 72 0D 0A ---------------- Framing Error♪◙ 00003FC0 09 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ○ | | +-------------------- 00003FE0 2D 2D 2D 2D 20 4F 76 65 72 72 75 6E 20 65 72 72 6F 72 0D 0A 09 20 20 7C 20 20 20 2B 2D 2D 2D 2D ---- Overrun error♪◙○ | +---- 00004000 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 ------------------------ Reserve 00004020 64 0D 0A 09 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D d♪◙○ +------------------------- 00004040 2D 2D 2D 2D 2D 2D 2D 20 49 6E 74 65 72 72 75 70 74 20 70 65 6E 64 69 6E 67 0D 0A 0D 0A 54 68 65 ------- Interrupt pending♪◙♪◙The 00004060 20 4D 49 44 49 20 63 6F 6E 74 72 6F 6C 20 69 6E 74 65 72 66 61 63 65 20 62 65 68 61 76 65 73 20 MIDI control interface behaves 00004080 69 64 65 6E 74 69 63 61 6C 6C 79 20 74 6F 20 61 20 36 38 35 30 20 55 41 52 54 2E 0D 0A 0D 0A 0D identically to a 6850 UART.♪◙♪◙♪ 000040A0 0A 0D 0A 32 2E 34 20 20 4D 49 44 49 20 44 61 74 61 20 50 6F 72 74 20 2D 20 33 58 31 0D 0A 0D 0A ◙♪◙2.4 MIDI Data Port - 3X1♪◙♪◙ 000040C0 54 68 65 20 74 72 61 6E 73 6D 69 74 20 61 6E 64 20 72 65 63 65 69 76 65 20 72 65 67 69 73 74 65 The transmit and receive registe 000040E0 72 73 20 61 72 65 20 61 74 20 33 58 31 20 68 65 78 20 61 6E 64 20 61 72 65 20 38 20 62 69 74 73 rs are at 3X1 hex and are 8 bits 00004100 20 77 69 64 65 2E 0D 0A 0D 0A 0D 0A 0C 32 2E 35 20 20 50 61 67 65 20 52 65 67 69 73 74 65 72 20 wide.♪◙♪◙♪◙♀2.5 Page Register 00004120 2D 20 33 58 32 0D 0A 0D 0A 54 68 69 73 20 63 6F 75 6C 64 20 61 6C 73 6F 20 62 65 20 63 61 6C 6C - 3X2♪◙♪◙This could also be call 00004140 65 64 20 74 68 65 20 76 6F 69 63 65 20 73 65 6C 65 63 74 20 72 65 67 69 73 74 65 72 2E 20 54 68 ed the voice select register. Th 00004160 69 73 20 72 65 67 69 73 74 65 72 20 69 73 20 75 73 65 64 20 74 6F 20 73 70 65 63 69 66 79 20 77 is register is used to specify w 00004180 68 69 63 68 20 76 6F 69 63 65 27 73 20 72 65 67 69 73 74 65 72 73 20 79 6F 75 20 77 61 6E 74 20 hich voice's registers you want 000041A0 74 6F 20 72 65 61 64 2F 77 72 69 74 65 2E 20 54 68 69 73 20 76 61 6C 75 65 20 63 61 6E 20 72 61 to read/write. This value can ra 000041C0 6E 67 65 20 66 72 6F 6D 20 30 20 74 6F 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 61 63 74 69 nge from 0 to the number of acti 000041E0 76 65 20 76 6F 69 63 65 73 20 73 70 65 63 69 66 69 65 64 20 28 31 33 2D 33 31 29 2E 20 4F 6E 63 ve voices specified (13-31). Onc 00004200 65 20 74 68 69 73 20 68 61 73 20 62 65 65 6E 20 73 70 65 63 69 66 69 65 64 2C 20 79 6F 75 20 6D e this has been specified, you m 00004220 61 79 20 73 65 6C 65 63 74 20 74 68 65 20 73 70 65 63 69 66 69 63 20 72 65 67 69 73 74 65 72 20 ay select the specific register 00004240 77 69 74 68 69 6E 20 74 68 61 74 20 76 6F 69 63 65 2E 20 42 65 20 63 61 72 65 66 75 6C 20 74 68 within that voice. Be careful th 00004260 61 74 20 49 52 51 73 20 61 72 65 20 6F 66 66 20 64 75 72 69 6E 67 20 74 68 65 20 74 69 6D 65 20 at IRQs are off during the time 00004280 74 68 61 74 20 74 68 65 20 70 61 67 65 20 61 6E 64 20 73 65 6C 65 63 74 20 72 65 67 69 73 74 65 that the page and select registe 000042A0 72 73 20 61 72 65 20 62 65 69 6E 67 20 6D 6F 64 69 66 69 65 64 2E 20 54 68 69 73 20 77 69 6C 6C rs are being modified. This will 000042C0 20 70 72 65 76 65 6E 74 20 74 68 65 20 66 6F 72 65 67 72 6F 75 6E 64 20 66 72 6F 6D 20 73 65 6C prevent the foreground from sel 000042E0 65 63 74 69 6E 67 20 61 20 76 6F 69 63 65 20 61 6E 64 20 68 61 76 69 6E 67 20 74 68 65 20 62 61 ecting a voice and having the ba 00004300 63 6B 67 72 6F 75 6E 64 20 63 68 61 6E 67 65 20 69 74 20 69 6E 20 74 68 65 20 62 61 63 6B 67 72 ckground change it in the backgr 00004320 6F 75 6E 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 36 20 20 53 65 6C 65 63 74 20 52 65 67 69 73 74 65 ound.♪◙♪◙♪◙♪◙2.6 Select Registe 00004340 72 20 2D 20 33 58 33 0D 0A 32 2E 36 2E 31 20 20 47 6C 6F 62 61 6C 20 52 65 67 69 73 74 65 72 73 r - 3X3♪◙2.6.1 Global Registers 00004360 0D 0A 0D 0A 54 68 65 73 65 20 61 72 65 20 74 68 65 20 67 6C 6F 62 61 6C 20 72 65 67 69 73 74 65 ♪◙♪◙These are the global registe 00004380 72 73 2E 20 54 68 65 79 20 61 72 65 20 6E 6F 74 20 76 6F 69 63 65 2D 73 70 65 63 69 66 69 63 2E rs. They are not voice-specific. 000043A0 0D 0A 0D 0A 09 09 20 20 20 20 20 41 64 64 72 65 73 73 20 20 20 20 20 4D 6F 64 65 20 20 20 20 57 ♪◙♪◙○○ Address Mode W 000043C0 69 64 74 68 20 20 20 44 65 73 63 72 69 70 74 69 6F 6E 0D 0A 0D 0A 09 09 20 20 20 20 20 20 20 34 idth Description♪◙♪◙○○ 4 000043E0 31 20 20 20 20 20 20 20 20 52 2F 57 20 20 20 20 20 20 20 38 20 20 20 20 20 44 52 41 4D 20 44 4D 1 R/W 8 DRAM DM 00004400 41 20 43 6F 6E 74 72 6F 6C 0D 0A 09 09 20 20 20 20 20 20 20 34 32 20 20 20 20 20 20 20 20 57 20 A Control♪◙○○ 42 W 00004420 20 20 20 20 20 20 20 31 36 20 20 20 20 20 44 4D 41 20 53 74 61 72 74 20 41 64 64 72 65 73 73 0D 16 DMA Start Address♪ 00004440 0A 09 09 20 20 20 20 20 20 20 34 33 20 20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 20 31 36 20 ◙○○ 43 W 16 00004460 20 20 20 20 44 52 41 4D 20 49 2F 4F 20 41 64 64 72 65 73 73 20 28 4C 4F 57 29 0D 0A 09 09 20 20 DRAM I/O Address (LOW)♪◙○○ 00004480 20 20 20 20 20 34 34 20 20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 44 44 W 8 D 000044A0 52 41 4D 20 49 2F 4F 20 41 64 64 72 65 73 73 20 28 48 49 47 48 29 0D 0A 09 09 20 20 20 20 20 20 RAM I/O Address (HIGH)♪◙○○ 000044C0 20 34 35 20 20 20 20 20 20 20 20 52 2F 57 20 20 20 20 20 20 20 38 20 20 20 20 20 54 69 6D 65 72 45 R/W 8 Timer 000044E0 20 43 6F 6E 74 72 6F 6C 0D 0A 09 09 20 20 20 20 20 20 20 34 36 20 20 20 20 20 20 20 20 57 20 20 Control♪◙○○ 46 W 00004500 20 20 20 20 20 20 20 38 20 20 20 20 20 54 69 6D 65 72 20 31 20 43 6F 75 6E 74 0D 0A 09 09 20 20 8 Timer 1 Count♪◙○○ 00004520 20 20 20 20 20 34 37 20 20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 54 47 W 8 T 00004540 69 6D 65 72 20 32 20 43 6F 75 6E 74 0D 0A 09 09 20 20 20 20 20 20 20 34 38 20 20 20 20 20 20 20 imer 2 Count♪◙○○ 48 00004560 20 57 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 53 61 6D 70 6C 69 6E 67 20 46 72 65 71 75 65 W 8 Sampling Freque 00004580 6E 63 79 0D 0A 09 09 20 20 20 20 20 20 20 34 39 20 20 20 20 20 20 20 20 52 2F 57 20 20 20 20 20 ncy♪◙○○ 49 R/W 000045A0 20 20 38 20 20 20 20 20 53 61 6D 70 6C 69 6E 67 20 43 6F 6E 74 72 6F 6C 0D 0A 09 09 20 20 20 20 8 Sampling Control♪◙○○ 000045C0 20 20 20 34 42 20 20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 4A 6F 79 4B W 8 Joy 000045E0 73 74 69 63 6B 20 74 72 69 6D 20 44 41 43 0D 0A 09 09 20 20 20 20 20 20 20 34 43 20 20 20 20 20 stick trim DAC♪◙○○ 4C 00004600 20 20 20 52 2F 57 20 20 20 20 20 20 20 38 20 20 20 20 20 52 45 53 45 54 0D 0A 0D 0A 0D 0A 0C 32 R/W 8 RESET♪◙♪◙♪◙♀2 00004620 2E 36 2E 31 2E 31 20 20 44 52 41 4D 20 44 4D 41 20 43 6F 6E 74 72 6F 6C 20 52 65 67 69 73 74 65 .6.1.1 DRAM DMA Control Registe 00004640 72 20 2D 20 28 34 31 29 0D 0A 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D r - (41)♪◙♪◙○=================== 00004660 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 ==============♪◙○| 7 | 6 | 5 | 4 00004680 20 7C 20 33 20 7C 20 32 20 7C 20 31 20 7C 20 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | 3 | 2 | 1 | 0 |♪◙○=========== 000046A0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C 20 20 20 7C ======================♪◙○ | | 000046C0 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 20 7C 20 20 | | | | | |♪◙○ | 000046E0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 45 | | | | | | +---- E 00004700 6E 61 62 6C 65 20 44 4D 41 20 28 31 3D 67 6F 29 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 nable DMA (1=go)♪◙○ | | | 00004720 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 44 4D 41 20 64 69 72 65 63 | | | +-------- DMA direc 00004740 74 69 6F 6E 20 28 31 3D 72 65 61 64 29 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 tion (1=read)♪◙○ | | | | 00004760 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 | +------------ DMA channel 00004780 77 69 64 74 68 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D width♪◙○ | | | | +----- 000047A0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 5C 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D ----------- \♪◙○ | | | +- 000047C0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 2F 20 44 4D 41 20 52 61 74 65 20 64 ------------------- / DMA Rate d 000047E0 69 76 69 64 65 72 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ivider♪◙○ | | +------------ 00004800 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 44 4D 41 20 49 52 51 20 45 6E 61 62 6C 65 0D 0A 09 20 20 ------------ DMA IRQ Enable♪◙○ 00004820 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | +--------------------------- 00004840 2D 20 28 52 29 20 44 4D 41 20 49 52 51 20 50 65 6E 64 69 6E 67 0D 0A 09 20 20 7C 20 20 20 20 20 - (R) DMA IRQ Pending♪◙○ | 00004860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 57 29 20 (W) 00004880 44 41 54 41 20 53 49 5A 45 20 28 30 3D 38 62 69 74 2C 31 3D 31 36 62 69 74 29 0D 0A 09 20 20 2B DATA SIZE (0=8bit,1=16bit)♪◙○ + 000048A0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -------------------------------- 000048C0 20 49 6E 76 65 72 74 20 4D 53 42 20 28 77 72 69 74 65 20 6F 6E 6C 79 29 0D 0A 0D 0A 42 69 74 20 Invert MSB (write only)♪◙♪◙Bit 000048E0 30 20 2D 09 45 6E 61 62 6C 65 20 74 68 65 20 44 4D 41 20 63 68 61 6E 6E 65 6C 2E 20 54 68 65 20 0 -○Enable the DMA channel. The 00004900 47 46 31 20 77 69 6C 6C 20 62 65 67 69 6E 20 73 65 6E 64 69 6E 67 20 44 4D 41 20 41 43 4B 20 70 GF1 will begin sending DMA ACK p 00004920 72 6F 74 6F 63 6F 6C 2E 20 49 66 20 50 43 20 44 4D 41 20 63 6F 6E 74 72 6F 6C 6C 65 72 20 69 73 rotocol. If PC DMA controller is 00004940 20 70 72 6F 67 72 61 6D 6D 65 64 2C 20 64 61 74 61 20 77 69 6C 6C 20 62 65 67 69 6E 20 62 65 69 programmed, data will begin bei 00004960 6E 67 20 74 72 61 6E 73 66 65 72 72 65 64 2E 20 49 66 20 6E 6F 74 2C 20 64 61 74 61 20 77 69 6C ng transferred. If not, data wil 00004980 6C 20 6D 6F 76 65 20 61 73 20 73 6F 6F 6E 20 61 73 20 69 74 20 69 73 20 70 72 6F 67 72 61 6D 6D l move as soon as it is programm 000049A0 65 64 2E 0D 0A 42 69 74 20 31 20 2D 09 44 4D 41 20 74 72 61 6E 73 66 65 72 20 64 69 72 65 63 74 ed.♪◙Bit 1 -○DMA transfer direct 000049C0 69 6F 6E 2E 20 52 65 61 64 20 69 73 20 74 61 6B 69 6E 67 20 64 61 74 61 20 4F 55 54 20 6F 66 20 ion. Read is taking data OUT of 000049E0 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 2C 20 57 72 69 74 65 20 73 65 6E 64 73 20 64 61 74 61 the UltraSound, Write sends data 00004A00 20 74 6F 20 69 74 2E 0D 0A 42 69 74 20 32 20 2D 09 30 20 3D 20 69 66 20 44 4D 41 20 63 68 61 6E to it.♪◙Bit 2 -○0 = if DMA chan 00004A20 6E 65 6C 20 69 73 20 61 6E 20 38 20 62 69 74 20 63 68 61 6E 6E 65 6C 20 28 30 2D 33 29 2E 0D 0A nel is an 8 bit channel (0-3).♪◙ 00004A40 09 31 20 3D 20 49 66 20 69 74 20 69 73 20 61 20 31 36 20 62 69 74 20 63 68 61 6E 6E 65 6C 20 28 ○1 = If it is a 16 bit channel ( 00004A60 34 2D 37 29 0D 0A 09 20 20 4E 6F 74 65 3A 20 54 68 69 73 20 69 73 20 49 4E 44 45 50 45 4E 44 45 4-7)♪◙○ Note: This is INDEPENDE 00004A80 4E 54 20 6F 66 20 74 68 65 20 64 61 74 61 20 73 69 7A 65 2E 0D 0A 42 69 74 20 33 2C 34 20 2D 09 NT of the data size.♪◙Bit 3,4 -○ 00004AA0 44 4D 41 20 52 61 74 65 20 64 69 76 69 73 6F 72 2E 20 54 68 65 20 4D 61 78 69 6D 75 6D 20 72 61 DMA Rate divisor. The Maximum ra 00004AC0 74 65 20 69 73 20 61 70 70 72 6F 78 20 36 35 30 20 6B 68 7A 2E 0D 0A 09 20 20 30 30 20 3D 20 64 te is approx 650 khz.♪◙○ 00 = d 00004AE0 69 76 69 64 65 20 62 79 20 31 0D 0A 09 20 20 30 31 20 3D 20 64 69 76 69 64 65 20 62 79 20 32 0D ivide by 1♪◙○ 01 = divide by 2♪ 00004B00 0A 09 20 20 31 30 20 3D 20 64 69 76 69 64 65 20 62 79 20 33 0D 0A 09 20 20 31 31 20 3D 20 64 69 ◙○ 10 = divide by 3♪◙○ 11 = di 00004B20 76 69 64 65 20 62 79 20 34 0D 0A 42 69 74 20 35 20 2D 09 44 4D 41 20 74 65 72 6D 69 6E 61 6C 20 vide by 4♪◙Bit 5 -○DMA terminal 00004B40 63 6F 75 6E 74 20 69 6E 74 65 72 72 75 70 74 20 65 6E 61 62 6C 65 0D 0A 42 69 74 20 36 20 2D 09 count interrupt enable♪◙Bit 6 -○ 00004B60 52 65 61 64 20 20 2D 20 44 4D 41 20 74 65 72 6D 69 6E 61 6C 20 63 6F 75 6E 74 20 49 52 51 20 70 Read - DMA terminal count IRQ p 00004B80 65 6E 64 69 6E 67 0D 0A 09 57 72 69 74 65 20 2D 20 44 61 74 61 20 73 69 7A 65 20 30 20 3D 20 38 ending♪◙○Write - Data size 0 = 8 00004BA0 20 42 69 74 20 64 61 74 61 0D 0A 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 20 Bit data♪◙○ 1 00004BC0 3D 20 31 36 20 62 69 74 20 64 61 74 61 0D 0A 09 20 20 20 20 4E 6F 74 65 3A 20 44 61 74 61 20 73 = 16 bit data♪◙○ Note: Data s 00004BE0 69 7A 65 20 69 73 20 69 6E 64 65 70 65 6E 64 65 6E 74 20 6F 66 20 63 68 61 6E 6E 65 6C 20 73 69 ize is independent of channel si 00004C00 7A 65 0D 0A 42 69 74 20 37 20 2D 09 31 20 3D 20 49 6E 76 65 72 74 20 48 69 67 68 20 62 69 74 20 ze♪◙Bit 7 -○1 = Invert High bit 00004C20 74 6F 20 66 6C 69 70 20 64 61 74 61 20 74 6F 20 74 77 6F 73 20 63 6F 6D 70 6C 65 6D 65 6E 74 20 to flip data to twos complement 00004C40 66 6F 72 6D 2E 0D 0A 09 20 20 20 20 4E 6F 74 65 3A 20 54 68 69 73 20 66 6C 69 70 73 20 62 69 74 form.♪◙○ Note: This flips bit 00004C60 20 37 20 66 6F 72 20 38 20 62 69 74 20 64 61 74 61 20 61 6E 64 20 62 69 74 20 31 35 20 66 6F 72 7 for 8 bit data and bit 15 for 00004C80 0D 0A 09 20 20 20 20 20 20 20 20 20 20 31 36 20 62 69 74 20 64 61 74 61 2E 0D 0A 0D 0A 0D 0A 0D ♪◙○ 16 bit data.♪◙♪◙♪◙♪ 00004CA0 0A 32 2E 36 2E 31 2E 32 20 20 44 4D 41 20 53 74 61 72 74 20 41 64 64 72 65 73 73 20 2D 20 28 34 ◙2.6.1.2 DMA Start Address - (4 00004CC0 32 29 0D 0A 0D 0A 42 69 74 73 20 31 35 2D 30 20 61 72 65 20 41 64 64 72 65 73 73 20 6C 69 6E 65 2)♪◙♪◙Bits 15-0 are Address line 00004CE0 73 20 31 39 2D 34 2E 0D 0A 0D 0A 54 68 69 73 20 72 65 67 69 73 74 65 72 20 64 65 66 69 6E 65 73 s 19-4.♪◙♪◙This register defines 00004D00 20 77 68 65 72 65 20 74 68 65 20 44 4D 41 20 77 69 6C 6C 20 74 72 61 6E 73 66 65 72 20 64 61 74 where the DMA will transfer dat 00004D20 61 20 74 6F 20 6F 72 20 66 72 6F 6D 2E 20 20 53 69 6E 63 65 20 6F 6E 6C 79 20 74 68 65 20 75 70 a to or from. Since only the up 00004D40 70 65 72 20 31 36 20 61 64 64 72 65 73 73 20 62 69 74 73 20 61 72 65 20 75 73 65 64 20 61 6E 64 per 16 address bits are used and 00004D60 20 74 68 65 20 6C 6F 77 65 72 20 34 20 62 69 74 73 20 61 72 65 20 73 65 74 20 74 6F 20 30 2C 20 the lower 4 bits are set to 0, 00004D80 61 20 44 4D 41 20 74 72 61 6E 73 66 65 72 20 4D 55 53 54 20 62 65 67 69 6E 20 6F 6E 20 61 6E 20 a DMA transfer MUST begin on an 00004DA0 31 36 20 62 79 74 65 20 62 6F 75 6E 64 61 72 79 20 66 6F 72 20 61 6E 20 38 20 62 69 74 20 44 4D 16 byte boundary for an 8 bit DM 00004DC0 41 20 63 68 61 6E 6E 65 6C 20 28 30 2D 33 29 2E 20 49 66 20 61 20 31 36 20 62 69 74 20 44 4D 41 A channel (0-3). If a 16 bit DMA 00004DE0 20 63 68 61 6E 6E 65 6C 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2C 20 74 68 65 20 74 72 61 6E channel is being used, the tran 00004E00 73 66 65 72 20 4D 55 53 54 20 62 65 69 6E 67 20 6F 6E 20 61 20 33 32 20 62 79 74 65 20 62 6F 75 sfer MUST being on a 32 byte bou 00004E20 6E 64 61 72 79 2E 20 41 6E 20 61 64 64 69 74 69 6F 6E 61 6C 20 61 64 64 72 65 73 73 20 74 72 61 ndary. An additional address tra 00004E40 6E 73 6C 61 74 69 6F 6E 20 69 73 20 6E 65 63 65 73 73 61 72 79 20 69 66 20 61 20 31 36 20 62 69 nslation is necessary if a 16 bi 00004E60 74 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 69 73 20 75 73 65 64 2E 20 46 6F 72 20 73 69 6D 70 6C t DMA channel is used. For simpl 00004E80 65 20 65 78 61 6D 70 6C 65 20 63 6F 64 65 20 6F 6E 20 68 6F 77 20 74 6F 20 64 6F 20 74 68 69 73 e example code on how to do this 00004EA0 20 74 72 61 6E 73 6C 61 74 69 6F 6E 2C 20 73 65 65 20 74 68 65 20 43 20 66 75 6E 63 74 69 6F 6E translation, see the C function 00004EC0 20 63 6F 6E 76 65 72 74 5F 74 6F 5F 31 36 28 29 2E 0D 0A 0C 32 2E 36 2E 31 2E 33 20 20 44 52 41 convert_to_16().♪◙♀2.6.1.3 DRA 00004EE0 4D 20 49 2F 4F 20 41 64 64 72 65 73 73 20 28 34 33 2C 34 34 29 0D 0A 0D 0A 54 68 65 73 65 20 32 M I/O Address (43,44)♪◙♪◙These 2 00004F00 20 72 65 67 69 73 74 65 72 73 20 61 6C 6C 6F 77 20 79 6F 75 20 74 6F 20 73 70 65 63 69 66 79 20 registers allow you to specify 00004F20 61 6E 20 61 64 64 72 65 73 73 20 74 6F 20 70 65 65 6B 20 61 6E 64 20 70 6F 6B 65 20 64 69 72 65 an address to peek and poke dire 00004F40 63 74 6C 79 20 69 6E 74 6F 20 55 6C 74 72 61 53 6F 75 6E 64 20 44 52 41 4D 2E 20 52 65 67 69 73 ctly into UltraSound DRAM. Regis 00004F60 74 65 72 20 34 33 20 69 73 20 74 68 65 20 6C 6F 77 65 72 20 31 36 20 61 64 64 72 65 73 73 20 6C ter 43 is the lower 16 address l 00004F80 69 6E 65 73 2E 20 52 65 67 69 73 74 65 72 20 34 34 20 69 73 20 74 68 65 20 75 70 70 65 72 20 34 ines. Register 44 is the upper 4 00004FA0 20 61 64 64 72 65 73 73 20 6C 69 6E 65 73 2E 20 28 62 69 74 73 20 30 2D 33 29 2E 20 52 65 61 64 address lines. (bits 0-3). Read 00004FC0 20 6F 72 20 77 72 69 74 65 20 74 6F 20 72 65 67 69 73 74 65 72 20 33 58 37 20 74 6F 20 67 65 74 or write to register 3X7 to get 00004FE0 20 61 74 20 74 68 65 20 61 64 64 72 65 73 73 20 6C 6F 63 61 74 69 6F 6E 2E 0D 0A 0D 0A 0D 0A 0D at the address location.♪◙♪◙♪◙♪ 00005000 0A 32 2E 36 2E 31 2E 34 20 20 54 69 6D 65 72 20 43 6F 6E 74 72 6F 6C 20 2D 20 28 34 35 29 0D 0A ◙2.6.1.4 Timer Control - (45)♪◙ 00005020 0D 0A 09 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ♪◙○○============================ 00005040 3D 3D 3D 3D 3D 0D 0A 09 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 20 7C 20 32 =====♪◙○○| 7 | 6 | 5 | 4 | 3 | 2 00005060 20 7C 20 31 20 7C 20 30 20 7C 0D 0A 09 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | 1 | 0 |♪◙○○================== 00005080 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 ===============♪◙○○ | | | 000050A0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 09 20 20 7C 20 20 20 7C 20 20 20 | | | | |♪◙○○ | | 000050C0 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 52 65 73 65 72 76 | | | | | +---- Reserv 000050E0 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C ed (Set to 0)♪◙○○ | | | | 00005100 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 | | +-------- Reserved (S 00005120 65 74 20 74 6F 20 30 29 0D 0A 09 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 et to 0)♪◙○○ | | | | | 00005140 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 45 6E 61 62 6C 65 20 54 69 6D 65 72 20 31 20 49 +------------ Enable Timer 1 I 00005160 52 51 0D 0A 09 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D RQ♪◙○○ | | | | +------- 00005180 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 45 6E 61 62 6C 65 20 54 69 6D 65 72 20 32 20 49 52 51 0D 0A 09 09 --------- Enable Timer 2 IRQ♪◙○○ 000051A0 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | | | +----------------- 000051C0 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 09 20 20 7C 20 20 --- Reserved (Set to 0)♪◙○○ | 000051E0 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 | +------------------------ R 00005200 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 09 20 20 7C 20 20 20 2B 2D 2D 2D eserved (Set to 0)♪◙○○ | +--- 00005220 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 ------------------------- Reserv 00005240 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 09 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ed (Set to 0)♪◙○○ +------------ 00005260 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 -------------------- Reserved (S 00005280 65 74 20 74 6F 20 30 29 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 36 2E 31 2E 35 20 20 54 69 6D 65 72 20 31 et to 0)♪◙♪◙♪◙♪◙2.6.1.5 Timer 1 000052A0 20 61 6E 64 20 54 69 6D 65 72 20 32 20 43 6F 75 6E 74 20 2D 20 28 34 36 2C 34 37 29 0D 0A 0D 0A and Timer 2 Count - (46,47)♪◙♪◙ 000052C0 54 68 65 73 65 20 63 6F 75 6E 74 73 20 61 72 65 20 6C 6F 61 64 65 64 20 62 79 20 74 68 65 20 61 These counts are loaded by the a 000052E0 70 70 6C 69 63 61 74 69 6F 6E 20 61 6E 64 20 74 68 65 6E 20 74 68 65 79 20 77 69 6C 6C 20 63 6F pplication and then they will co 00005300 75 6E 74 20 75 70 20 74 6F 20 24 46 46 20 61 6E 64 20 67 65 6E 65 72 61 74 65 20 61 6E 64 20 49 unt up to $FF and generate and I 00005320 52 51 2E 20 54 69 6D 65 72 20 31 20 68 61 73 20 61 20 67 72 61 6E 75 6C 61 72 69 74 79 20 6F 66 RQ. Timer 1 has a granularity of 00005340 20 38 30 20 6D 69 63 72 6F 73 65 63 6F 6E 64 73 20 28 30 2E 30 30 30 30 38 20 73 65 63 29 20 61 80 microseconds (0.00008 sec) a 00005360 6E 64 20 54 69 6D 65 72 20 32 20 68 61 73 20 61 20 67 72 61 6E 75 6C 61 72 69 74 79 20 6F 66 20 nd Timer 2 has a granularity of 00005380 33 32 30 20 6D 69 63 72 6F 73 65 63 6F 6E 64 73 20 28 30 2E 30 30 30 33 32 20 73 65 63 29 2E 0D 320 microseconds (0.00032 sec).♪ 000053A0 0A 0D 0A 0D 0A 0D 0A 32 2E 36 2E 31 2E 36 20 20 53 61 6D 70 6C 69 6E 67 20 46 72 65 71 75 65 6E ◙♪◙♪◙♪◙2.6.1.6 Sampling Frequen 000053C0 63 79 20 2D 20 28 34 38 29 0D 0A 0D 0A 54 68 65 20 66 6F 72 6D 75 6C 61 20 66 6F 72 20 63 61 6C cy - (48)♪◙♪◙The formula for cal 000053E0 63 75 6C 61 74 69 6E 67 20 74 68 69 73 20 76 61 6C 75 65 20 69 73 3A 0D 0A 09 72 61 74 65 20 3D culating this value is:♪◙○rate = 00005400 20 39 38 37 38 34 30 30 2F 28 31 36 2A 28 46 52 45 51 2B 32 29 29 0D 0A 0D 0A 0D 0A 0C 32 2E 36 9878400/(16*(FREQ+2))♪◙♪◙♪◙♀2.6 00005420 2E 31 2E 37 20 20 53 61 6D 70 6C 69 6E 67 20 43 6F 6E 74 72 6F 6C 20 52 65 67 69 73 74 65 72 20 .1.7 Sampling Control Register 00005440 2D 20 28 34 39 29 0D 0A 0D 0A 09 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D - (49)♪◙♪◙○○==================== 00005460 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 =============♪◙○○| 7 | 6 | 5 | 4 00005480 20 7C 20 33 20 7C 20 32 20 7C 20 31 20 7C 20 30 20 7C 0D 0A 09 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | 3 | 2 | 1 | 0 |♪◙○○========== 000054A0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 09 20 20 7C 20 20 =======================♪◙○○ | 000054C0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 09 20 20 | | | | | | |♪◙○○ 000054E0 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D | | | | | | | +--- 00005500 2D 20 53 74 61 72 74 20 73 61 6D 70 6C 69 6E 67 0D 0A 09 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 - Start sampling♪◙○○ | | | 00005520 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 4D 6F 64 65 20 28 30 3D | | | +-------- Mode (0= 00005540 6D 6F 6E 6F 2C 20 31 3D 73 74 65 72 65 6F 29 0D 0A 09 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 mono, 1=stereo)♪◙○○ | | | 00005560 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 44 4D 41 20 77 69 64 74 68 | | +------------ DMA width 00005580 20 28 30 3D 38 62 69 74 2C 31 3D 31 36 62 69 74 29 0D 0A 09 09 20 20 7C 20 20 20 7C 20 20 20 7C (0=8bit,1=16bit)♪◙○○ | | | 000055A0 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 | +---------------- Reserve 000055C0 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D d (Set to 0)♪◙○○ | | | +- 000055E0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 ------------------- Reserved (Se 00005600 74 20 74 6F 20 30 29 0D 0A 09 09 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D t to 0)♪◙○○ | | +---------- 00005620 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 44 4D 41 20 49 52 51 20 65 6E 61 62 6C 65 0D 0A 09 -------------- DMA IRQ enable♪◙○ 00005640 09 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ○ | +------------------------ 00005660 2D 2D 2D 2D 20 28 52 65 61 64 29 20 44 4D 41 20 49 52 51 20 70 65 6E 64 69 6E 67 0D 0A 09 09 20 ---- (Read) DMA IRQ pending♪◙○○ 00005680 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D +------------------------------ 000056A0 2D 2D 20 49 6E 76 65 72 74 20 4D 53 42 0D 0A 0D 0A 42 69 74 20 30 20 2D 09 49 66 20 50 43 20 44 -- Invert MSB♪◙♪◙Bit 0 -○If PC D 000056C0 4D 41 20 63 6F 6E 74 72 6F 6C 6C 65 72 20 69 73 20 70 72 6F 67 72 61 6D 6D 65 64 2C 20 69 74 20 MA controller is programmed, it 000056E0 77 69 6C 6C 20 62 65 67 69 6E 20 73 61 6D 70 6C 69 6E 67 20 61 73 20 73 6F 6F 6E 20 61 73 20 74 will begin sampling as soon as t 00005700 68 69 73 20 69 73 20 65 6E 61 62 6C 65 64 2E 0D 0A 42 69 74 20 31 20 2D 09 30 20 3D 20 6D 6F 6E his is enabled.♪◙Bit 1 -○0 = mon 00005720 6F 20 0D 0A 09 31 20 3D 20 73 74 65 72 65 6F 20 0D 0A 09 49 6E 20 73 74 65 72 65 6F 20 6D 6F 64 o ♪◙○1 = stereo ♪◙○In stereo mod 00005740 65 2C 20 74 68 65 20 6F 72 64 65 72 20 6F 66 20 74 68 65 20 64 61 74 61 20 62 79 74 65 73 20 69 e, the order of the data bytes i 00005760 73 20 6C 65 66 74 20 69 73 20 66 69 72 73 74 2C 20 61 6E 64 20 72 69 67 68 74 20 69 73 20 73 65 s left is first, and right is se 00005780 63 6F 6E 64 2E 20 49 66 20 61 20 31 36 20 62 69 74 20 64 61 74 61 20 63 68 61 6E 6E 65 6C 20 69 cond. If a 16 bit data channel i 000057A0 73 20 75 73 65 64 2C 20 74 68 65 20 6C 65 66 74 20 69 73 20 69 6E 20 74 68 65 20 6C 6F 77 65 72 s used, the left is in the lower 000057C0 20 62 79 74 65 2E 0D 0A 42 69 74 20 32 20 2D 09 44 4D 41 20 43 68 61 6E 6E 65 6C 20 77 69 64 74 byte.♪◙Bit 2 -○DMA Channel widt 000057E0 68 20 28 30 20 3D 20 38 20 62 69 74 2C 20 31 20 3D 20 31 36 20 62 69 74 29 0D 0A 42 69 74 20 35 h (0 = 8 bit, 1 = 16 bit)♪◙Bit 5 00005800 20 2D 09 45 6E 61 62 6C 65 20 44 4D 41 20 74 65 72 6D 69 6E 61 6C 20 63 6F 75 6E 74 20 49 52 51 -○Enable DMA terminal count IRQ 00005820 0D 0A 42 69 74 20 36 20 2D 09 44 4D 41 20 74 65 72 6D 69 6E 61 6C 20 63 6F 75 6E 74 20 49 52 51 ♪◙Bit 6 -○DMA terminal count IRQ 00005840 20 70 65 6E 64 69 6E 67 0D 0A 42 69 74 20 37 20 2D 09 46 6C 69 70 20 62 69 74 20 37 20 74 6F 20 pending♪◙Bit 7 -○Flip bit 7 to 00005860 67 65 74 20 6E 6F 6E 2D 74 77 6F 73 20 63 6F 6D 70 6C 69 6D 65 6E 74 20 64 61 74 61 0D 0A 0D 0A get non-twos compliment data♪◙♪◙ 00005880 0D 0A 0D 0A 32 2E 36 2E 31 2E 38 20 20 4A 6F 79 73 74 69 63 6B 20 54 72 69 6D 20 44 41 43 20 2D ♪◙♪◙2.6.1.8 Joystick Trim DAC - 000058A0 20 28 34 42 29 0D 0A 0D 0A 54 68 69 73 20 72 65 67 69 73 74 65 72 20 69 73 20 69 6E 69 74 69 61 (4B)♪◙♪◙This register is initia 000058C0 6C 69 7A 65 64 20 74 6F 20 34 2E 33 20 76 6F 6C 74 73 20 28 76 61 6C 75 65 20 3D 20 32 39 29 2E lized to 4.3 volts (value = 29). 000058E0 20 49 74 20 6F 6E 6C 79 20 6E 65 65 64 73 20 74 6F 20 62 65 20 6D 6F 64 69 66 69 65 64 20 74 6F It only needs to be modified to 00005900 20 61 63 63 6F 75 6E 74 20 66 6F 72 20 66 61 73 74 65 72 2F 73 6C 6F 77 65 72 20 6D 61 63 68 69 account for faster/slower machi 00005920 6E 65 73 2E 20 41 20 75 74 69 6C 69 74 79 20 69 73 20 70 72 6F 76 69 64 65 64 20 28 55 4C 54 52 nes. A utility is provided (ULTR 00005940 41 4A 4F 59 2E 45 58 45 29 20 74 68 61 74 20 73 65 74 73 20 74 68 69 73 20 75 70 2E 20 20 54 68 AJOY.EXE) that sets this up. Th 00005960 65 72 65 20 73 68 6F 75 6C 64 20 62 65 20 6E 6F 20 72 65 61 73 6F 6E 20 66 6F 72 20 79 6F 75 72 ere should be no reason for your 00005980 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 74 6F 20 6D 6F 64 69 66 79 20 74 68 69 73 20 72 65 67 69 application to modify this regi 000059A0 73 74 65 72 2E 0D 0A 0D 0A 0D 0A 0C 32 2E 36 2E 31 2E 39 20 20 52 65 73 65 74 20 52 65 67 69 73 ster.♪◙♪◙♪◙♀2.6.1.9 Reset Regis 000059C0 74 65 72 20 2D 20 28 34 43 29 0D 0A 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ter - (4C)♪◙♪◙○================= 000059E0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C ================♪◙○| 7 | 6 | 5 | 00005A00 20 34 20 7C 20 33 20 7C 20 32 20 7C 20 31 20 7C 20 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 4 | 3 | 2 | 1 | 0 |♪◙○========= 00005A20 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C 20 20 ========================♪◙○ | 00005A40 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 20 7C | | | | | | |♪◙○ | 00005A60 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D | | | | | | +---- 00005A80 20 4D 61 73 74 65 72 20 52 65 73 65 74 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 Master Reset♪◙○ | | | | 00005AA0 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 44 41 43 20 45 6E 61 62 6C 65 0D 0A | | +-------- DAC Enable♪◙ 00005AC0 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D ○ | | | | | +-------- 00005AE0 2D 2D 2D 2D 20 47 46 31 20 4D 61 73 74 65 72 20 49 52 51 20 45 6E 61 62 6C 65 0D 0A 09 20 20 7C ---- GF1 Master IRQ Enable♪◙○ | 00005B00 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | | | +---------------- 00005B20 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 20 20 7C 20 20 20 7C 20 20 Reserved (Set to 0)♪◙○ | | 00005B40 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 | +-------------------- Reser 00005B60 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D ved (Set to 0)♪◙○ | | +---- 00005B80 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 -------------------- Reserved (S 00005BA0 65 74 20 74 6F 20 30 29 0D 0A 09 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D et to 0)♪◙○ | +-------------- 00005BC0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 -------------- Reserved (Set to 00005BE0 30 29 0D 0A 09 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0)♪◙○ +------------------------ 00005C00 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 0D 0A -------- Reserved (Set to 0)♪◙♪◙ 00005C20 42 69 74 20 30 20 2D 09 47 46 31 20 4D 61 73 74 65 72 20 52 65 73 65 74 2E 20 30 20 3D 20 72 65 Bit 0 -○GF1 Master Reset. 0 = re 00005C40 73 65 74 2C 20 31 20 3D 20 72 75 6E 2E 20 41 73 20 6C 6F 6E 67 20 61 73 20 74 68 69 73 20 69 73 set, 1 = run. As long as this is 00005C60 20 61 20 30 2C 20 69 74 20 77 69 6C 6C 20 62 65 20 68 65 6C 64 20 69 6E 20 61 20 72 65 73 65 74 a 0, it will be held in a reset 00005C80 20 73 74 61 74 65 2E 0D 0A 42 69 74 20 31 20 2D 09 45 6E 61 62 6C 65 20 44 41 43 20 6F 75 74 70 state.♪◙Bit 1 -○Enable DAC outp 00005CA0 75 74 2E 20 44 41 43 27 73 20 77 69 6C 6C 20 6E 6F 74 20 72 75 6E 20 75 6E 6C 65 73 73 20 74 68 ut. DAC's will not run unless th 00005CC0 69 73 20 62 69 74 20 69 73 20 73 65 74 2E 0D 0A 42 69 74 20 32 20 2D 09 4D 61 73 74 65 72 20 49 is bit is set.♪◙Bit 2 -○Master I 00005CE0 52 51 20 65 6E 61 62 6C 65 2E 20 54 68 69 73 20 62 69 74 20 4D 55 53 54 20 62 65 20 73 65 74 20 RQ enable. This bit MUST be set 00005D00 74 6F 20 67 65 74 20 41 4E 59 20 6F 66 20 74 68 65 20 47 46 31 2D 67 65 6E 65 72 61 74 65 64 20 to get ANY of the GF1-generated 00005D20 49 52 51 73 20 28 77 61 76 65 74 61 62 6C 65 2C 20 76 6F 6C 75 6D 65 2C 20 65 74 63 29 2E 0D 0A IRQs (wavetable, volume, etc).♪◙ 00005D40 0D 0A 54 68 69 73 20 72 65 67 69 73 74 65 72 20 77 69 6C 6C 20 6E 6F 72 6D 61 6C 6C 79 20 63 6F ♪◙This register will normally co 00005D60 6E 74 61 69 6E 20 74 68 65 20 76 61 6C 75 65 20 24 30 37 20 77 68 69 6C 65 20 79 6F 75 72 20 61 ntain the value $07 while your a 00005D80 70 70 6C 69 63 61 74 69 6F 6E 20 69 73 20 72 75 6E 6E 69 6E 67 2E 0D 0A 0D 0A 0D 0A 0D 0A 32 2E pplication is running.♪◙♪◙♪◙♪◙2. 00005DA0 36 2E 32 20 20 56 6F 69 63 65 2D 73 70 65 63 69 66 69 63 20 52 65 67 69 73 74 65 72 73 0D 0A 0D 6.2 Voice-specific Registers♪◙♪ 00005DC0 0A 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 61 72 65 20 74 68 65 20 76 6F 69 63 65 2D 73 70 65 ◙The following are the voice-spe 00005DE0 63 69 66 69 63 20 72 65 67 69 73 74 65 72 73 2E 20 45 61 63 68 20 76 6F 69 63 65 20 68 61 73 20 cific registers. Each voice has 00005E00 69 74 73 20 6F 77 6E 20 62 61 6E 6B 20 6F 66 20 72 65 61 64 20 61 6E 64 20 77 72 69 74 65 20 72 its own bank of read and write r 00005E20 65 67 69 73 74 65 72 73 20 74 68 61 74 20 61 6C 74 65 72 20 69 74 73 20 62 65 68 61 76 69 6F 72 egisters that alter its behavior 00005E40 2E 20 54 68 65 20 77 72 69 74 65 20 72 65 67 69 73 74 65 72 73 20 72 61 6E 67 65 20 66 72 6F 6D . The write registers range from 00005E60 20 30 20 74 6F 20 46 20 61 6E 64 20 74 68 65 20 63 6F 72 72 65 73 70 6F 6E 64 69 6E 67 20 72 65 0 to F and the corresponding re 00005E80 61 64 20 72 65 67 69 73 74 65 72 73 20 72 61 6E 67 65 20 66 72 6F 6D 20 38 30 20 74 6F 20 38 46 ad registers range from 80 to 8F 00005EA0 2E 20 54 6F 20 63 6F 6E 76 65 72 74 20 66 72 6F 6D 20 74 68 65 20 77 72 69 74 65 20 74 6F 20 74 . To convert from the write to t 00005EC0 68 65 20 72 65 61 64 2C 20 6A 75 73 74 20 61 64 64 20 38 30 20 68 65 78 2E 0D 0A 0D 0A 09 09 57 he read, just add 80 hex.♪◙♪◙○○W 00005EE0 72 69 74 65 20 20 20 20 52 65 61 64 20 20 20 20 20 57 69 64 74 68 20 20 20 44 65 73 63 72 69 70 rite Read Width Descrip 00005F00 74 69 6F 6E 0D 0A 09 09 20 20 30 20 20 20 20 20 20 20 38 30 20 20 20 20 20 20 20 20 38 20 20 20 tion♪◙○○ 0 80 8 00005F20 20 20 56 6F 69 63 65 20 43 6F 6E 74 72 6F 6C 0D 0A 09 09 20 20 31 20 20 20 20 20 20 20 38 31 20 Voice Control♪◙○○ 1 81 00005F40 20 20 20 20 20 20 31 36 20 20 20 20 20 46 72 65 71 75 65 6E 63 79 20 43 6F 6E 74 72 6F 6C 0D 0A 16 Frequency Control♪◙ 00005F60 09 09 20 20 32 20 20 20 20 20 20 20 38 32 20 20 20 20 20 20 20 31 36 20 20 20 20 20 53 74 61 72 ○○ 2 82 16 Star 00005F80 74 69 6E 67 20 41 64 64 72 65 73 73 20 28 48 49 47 48 29 0D 0A 09 09 20 20 33 20 20 20 20 20 20 ting Address (HIGH)♪◙○○ 3 00005FA0 20 38 33 20 20 20 20 20 20 20 31 36 20 20 20 20 20 53 74 61 72 74 69 6E 67 20 41 64 64 72 65 73 83 16 Starting Addres 00005FC0 73 20 28 4C 4F 57 29 0D 0A 09 09 20 20 34 20 20 20 20 20 20 20 38 34 20 20 20 20 20 20 20 31 36 s (LOW)♪◙○○ 4 84 16 00005FE0 20 20 20 20 20 45 6E 64 20 41 64 64 72 65 73 73 20 28 48 49 47 48 29 0D 0A 09 09 20 20 35 20 20 End Address (HIGH)♪◙○○ 5 00006000 20 20 20 20 20 38 35 20 20 20 20 20 20 20 31 36 20 20 20 20 20 45 6E 64 20 41 64 64 72 65 73 73 85 16 End Address 00006020 20 28 4C 4F 57 29 0D 0A 09 09 20 20 36 20 20 20 20 20 20 20 38 36 20 20 20 20 20 20 20 20 38 20 (LOW)♪◙○○ 6 86 8 00006040 20 20 20 20 56 6F 6C 75 6D 65 20 52 61 6D 70 20 52 61 74 65 0D 0A 09 09 20 20 37 20 20 20 20 20 Volume Ramp Rate♪◙○○ 7 00006060 20 20 38 37 20 20 20 20 20 20 20 20 38 20 20 20 20 20 56 6F 6C 75 6D 65 20 52 61 6D 70 20 53 74 87 8 Volume Ramp St 00006080 61 72 74 0D 0A 09 09 20 20 38 20 20 20 20 20 20 20 38 38 20 20 20 20 20 20 20 20 38 20 20 20 20 art♪◙○○ 8 88 8 000060A0 20 56 6F 6C 75 6D 65 20 52 61 6D 70 20 45 6E 64 0D 0A 09 09 20 20 39 20 20 20 20 20 20 20 38 39 Volume Ramp End♪◙○○ 9 89 000060C0 20 20 20 20 20 20 20 31 36 20 20 20 20 20 43 75 72 72 65 6E 74 20 56 6F 6C 75 6D 65 0D 0A 09 09 16 Current Volume♪◙○○ 000060E0 20 20 41 20 20 20 20 20 20 20 38 41 20 20 20 20 20 20 20 31 36 20 20 20 20 20 43 75 72 72 65 6E A 8A 16 Curren 00006100 74 20 41 64 64 72 65 73 73 20 28 48 49 47 48 29 0D 0A 09 09 20 20 42 20 20 20 20 20 20 20 38 42 t Address (HIGH)♪◙○○ B 8B 00006120 20 20 20 20 20 20 20 31 36 20 20 20 20 20 43 75 72 72 65 6E 74 20 41 64 64 72 65 73 73 20 28 4C 16 Current Address (L 00006140 4F 57 29 0D 0A 09 09 20 20 43 20 20 20 20 20 20 20 38 43 20 20 20 20 20 20 20 20 38 20 20 20 20 OW)♪◙○○ C 8C 8 00006160 20 50 61 6E 20 50 6F 73 69 74 69 6F 6E 0D 0A 09 09 20 20 44 20 20 20 20 20 20 20 38 44 20 20 20 Pan Position♪◙○○ D 8D 00006180 20 20 20 20 20 38 20 20 20 20 20 56 6F 6C 75 6D 65 20 43 6F 6E 74 72 6F 6C 0D 0A 09 09 20 20 45 8 Volume Control♪◙○○ E 000061A0 20 20 20 20 20 20 20 38 45 20 20 20 20 20 20 20 20 38 20 20 20 20 20 41 63 74 69 76 65 20 56 6F 8E 8 Active Vo 000061C0 69 63 65 73 20 28 56 6F 69 63 65 20 69 6E 64 65 70 65 6E 64 65 6E 74 29 0D 0A 09 09 20 20 2D 20 ices (Voice independent)♪◙○○ - 000061E0 20 20 20 20 20 20 38 46 20 20 20 20 20 20 20 20 38 20 20 20 20 20 49 52 51 20 53 74 61 74 75 73 8F 8 IRQ Status 00006200 20 28 56 6F 69 63 65 20 69 6E 64 65 70 65 6E 64 65 6E 74 29 0D 0A 0D 0A 54 68 65 72 65 20 61 72 (Voice independent)♪◙♪◙There ar 00006220 65 20 73 65 76 65 72 61 6C 20 27 73 65 6C 66 2D 6D 6F 64 69 66 79 69 6E 67 27 20 62 69 74 73 20 e several 'self-modifying' bits 00006240 64 65 66 69 6E 65 64 20 66 6F 72 20 74 68 65 73 65 20 72 65 67 69 73 74 65 72 73 2E 20 54 68 69 defined for these registers. Thi 00006260 73 20 6D 65 61 6E 73 20 74 68 61 74 20 74 68 65 20 47 46 31 20 6D 61 79 20 63 68 61 6E 67 65 20 s means that the GF1 may change 00006280 74 68 65 6D 20 61 74 20 61 6E 79 74 69 6D 65 20 6F 6E 20 69 74 73 20 6F 77 6E 2E 20 44 75 65 20 them at anytime on its own. Due 000062A0 74 6F 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 74 68 65 20 73 6F 66 74 77 61 72 65 20 6D 75 to the fact that the software mu 000062C0 73 74 20 61 63 63 6F 6D 6D 6F 64 61 74 65 20 74 68 69 73 20 70 68 65 6E 6F 6D 65 6E 61 2C 20 69 st accommodate this phenomena, i 000062E0 74 20 69 73 20 70 6F 73 73 69 62 6C 65 20 74 68 61 74 20 74 68 65 20 47 46 31 20 6D 61 79 20 63 t is possible that the GF1 may c 00006300 68 61 6E 67 65 20 73 6F 6D 65 74 68 69 6E 67 20 69 6D 6D 65 64 69 61 74 65 6C 79 20 61 66 74 65 hange something immediately afte 00006320 72 20 79 6F 75 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 68 61 73 20 73 65 74 2F 72 65 73 65 74 r your application has set/reset 00006340 20 6F 6E 65 20 6F 66 20 74 68 65 20 62 69 74 73 2E 20 54 68 69 73 20 69 73 20 64 75 65 20 74 6F one of the bits. This is due to 00006360 20 74 68 65 20 47 46 31 27 73 20 70 69 70 65 6C 69 6E 65 20 70 72 6F 63 65 73 73 6F 72 20 74 79 the GF1's pipeline processor ty 00006380 70 65 20 6F 66 20 61 72 63 68 69 74 65 63 74 75 72 65 3A 20 69 74 20 64 6F 65 73 20 61 20 72 65 pe of architecture: it does a re 000063A0 61 64 2D 6D 6F 64 69 66 79 2D 77 72 69 74 65 20 63 79 63 6C 65 2C 20 61 6E 64 20 69 66 20 79 6F ad-modify-write cycle, and if yo 000063C0 75 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 6D 6F 64 69 66 69 65 73 20 6F 6E 65 20 6F 66 20 74 ur application modifies one of t 000063E0 68 65 73 65 20 62 69 74 73 20 41 46 54 45 52 20 69 74 20 68 61 73 20 64 6F 6E 65 20 74 68 65 20 hese bits AFTER it has done the 00006400 72 65 61 64 20 70 6F 72 74 69 6F 6E 20 61 6E 64 20 42 45 46 4F 52 45 20 69 74 20 64 6F 65 73 20 read portion and BEFORE it does 00006420 74 68 65 20 77 72 69 74 65 20 70 6F 72 74 69 6F 6E 2C 20 69 74 27 73 20 70 6F 73 73 69 62 6C 65 the write portion, it's possible 00006440 20 66 6F 72 20 74 68 65 20 63 68 69 70 20 74 6F 20 70 65 72 66 6F 72 6D 20 69 6E 63 6F 72 72 65 for the chip to perform incorre 00006460 63 74 6C 79 2E 20 54 6F 20 6F 76 65 72 63 6F 6D 65 20 74 68 69 73 2C 20 79 6F 75 20 6E 65 65 64 ctly. To overcome this, you need 00006480 20 74 6F 20 64 6F 20 61 20 64 6F 75 62 6C 65 20 77 72 69 74 65 20 28 77 69 74 68 20 61 20 64 65 to do a double write (with a de 000064A0 6C 61 79 20 69 6E 20 62 65 74 77 65 65 6E 29 20 77 68 65 6E 20 74 68 6F 73 65 20 70 61 72 74 69 lay in between) when those parti 000064C0 63 75 6C 61 72 20 62 69 74 73 20 61 72 65 20 69 6E 76 6F 6C 76 65 64 2E 20 54 68 69 73 20 64 65 cular bits are involved. This de 000064E0 6C 61 79 20 6D 75 73 74 20 62 65 20 61 74 20 6C 65 61 73 74 20 33 20 74 69 6D 65 73 20 74 68 65 lay must be at least 3 times the 00006500 20 6C 65 6E 67 74 68 20 6F 66 20 74 69 6D 65 20 6E 65 63 65 73 73 61 72 79 20 74 6F 20 70 72 6F length of time necessary to pro 00006520 63 65 73 73 20 61 20 76 6F 69 63 65 2E 20 28 33 2A 31 2E 36 20 6D 69 63 72 6F 73 65 63 73 29 2E cess a voice. (3*1.6 microsecs). 00006540 20 49 6E 20 74 68 65 20 6C 6F 77 6C 65 76 65 6C 20 63 6F 64 65 2C 20 74 68 69 73 20 69 73 20 64 In the lowlevel code, this is d 00006560 6F 6E 65 20 77 69 74 68 20 61 20 66 75 6E 63 74 69 6F 6E 20 63 61 6C 6C 65 64 20 47 46 31 5F 44 one with a function called GF1_D 00006580 65 6C 61 79 2E 20 54 68 65 20 73 65 6C 66 2D 6D 6F 64 69 66 79 69 6E 67 20 62 69 74 73 20 61 72 elay. The self-modifying bits ar 000065A0 65 20 64 65 73 69 67 6E 61 74 65 64 20 77 69 74 68 20 61 6E 20 28 2A 29 20 61 66 74 65 72 20 74 e designated with an (*) after t 000065C0 68 65 20 70 61 72 74 69 63 75 6C 61 72 20 62 69 74 20 64 65 66 69 6E 69 74 69 6F 6E 2E 0D 0A 0D he particular bit definition.♪◙♪ 000065E0 0A 43 68 61 6E 67 69 6E 67 20 74 68 65 20 73 74 61 72 74 20 61 6E 64 20 65 6E 64 20 70 6F 69 6E ◙Changing the start and end poin 00006600 74 73 20 6F 66 20 61 20 76 6F 69 63 65 20 77 68 69 6C 65 20 69 74 73 20 70 6C 61 79 69 6E 67 20 ts of a voice while its playing 00006620 63 61 6E 20 68 61 76 65 20 73 6F 6D 65 20 73 74 72 61 6E 67 65 20 73 69 64 65 20 65 66 66 65 63 can have some strange side effec 00006640 74 73 2E 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 69 66 20 79 6F 75 20 63 68 61 6E 67 65 20 65 ts. For example, if you change e 00006660 6E 64 20 70 6F 69 73 74 69 6F 6E 20 74 6F 20 61 20 6C 6F 77 65 72 20 6C 6F 63 61 74 69 6F 6E 20 nd poistion to a lower location 00006680 74 68 61 6E 20 69 74 20 69 73 20 63 75 72 72 65 6E 74 6C 79 20 70 6C 61 79 69 6E 67 2C 20 79 6F than it is currently playing, yo 000066A0 75 20 77 69 6C 6C 20 67 65 74 20 61 6E 64 20 49 52 51 20 28 69 66 20 74 68 65 79 20 61 72 65 20 u will get and IRQ (if they are 000066C0 65 6E 61 62 6C 65 64 29 2E 20 41 6C 73 6F 2C 20 73 69 6E 63 65 20 74 68 65 20 68 69 67 68 20 61 enabled). Also, since the high a 000066E0 6E 64 20 6C 6F 77 20 62 79 74 65 73 20 61 72 65 20 73 65 74 20 69 6E 64 69 76 69 64 75 61 6C 6C nd low bytes are set individuall 00006700 79 20 61 6E 64 20 61 73 79 6E 63 68 72 6F 6E 6F 75 73 6C 79 20 74 6F 20 77 68 65 6E 20 74 68 65 y and asynchronously to when the 00006720 20 47 46 31 20 69 73 20 77 6F 72 6B 69 6E 67 20 6F 6E 20 61 20 76 6F 69 63 65 2C 20 69 74 20 69 GF1 is working on a voice, it i 00006740 73 20 70 6F 73 73 69 62 6C 65 20 74 6F 20 67 65 74 20 61 6E 20 75 6E 65 78 70 65 63 74 65 64 20 s possible to get an unexpected 00006760 49 52 51 20 69 66 20 74 68 65 20 63 75 72 72 65 6E 74 20 20 70 6F 73 69 74 69 6F 6E 20 61 6E 64 IRQ if the current position and 00006780 20 74 68 65 20 6E 65 77 20 65 6E 64 20 70 6F 73 69 74 69 6F 6E 20 63 72 6F 73 73 2E 0D 0A 0D 0A the new end position cross.♪◙♪◙ 000067A0 0D 0A 0D 0A 32 2E 36 2E 32 2E 31 20 20 56 6F 69 63 65 20 43 6F 6E 74 72 6F 6C 20 52 65 67 69 73 ♪◙♪◙2.6.2.1 Voice Control Regis 000067C0 74 65 72 20 2D 20 28 30 2C 38 30 29 0D 0A 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ter - (0,80)♪◙♪◙○=============== 000067E0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 ==================♪◙○| 7 | 6 | 5 00006800 20 7C 20 34 20 7C 20 33 20 7C 20 32 20 7C 20 31 20 7C 20 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D | 4 | 3 | 2 | 1 | 0 |♪◙○======= 00006820 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C ==========================♪◙○ | 00006840 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 | | | | | | |♪◙○ 00006860 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D | | | | | | | +-- 00006880 2D 2D 20 56 6F 69 63 65 20 53 74 6F 70 70 65 64 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 -- Voice Stopped♪◙○ | | | 000068A0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 53 74 6F 70 20 56 6F 69 63 | | | +-------- Stop Voic 000068C0 65 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D e♪◙○ | | | | | +----- 000068E0 2D 2D 2D 2D 2D 2D 2D 20 31 36 20 62 69 74 20 64 61 74 61 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 ------- 16 bit data♪◙○ | | 00006900 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4C 6F 6F 70 20 65 | | +---------------- Loop e 00006920 6E 61 62 6C 65 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D nable♪◙○ | | | +--------- 00006940 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 42 69 2D 64 69 72 65 63 74 69 6F 6E 61 6C 20 6C 6F 6F 70 20 ----------- Bi-directional loop 00006960 65 6E 61 62 6C 65 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D enable♪◙○ | | +------------ 00006980 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 57 61 76 65 20 74 61 62 6C 65 20 49 52 51 0D 0A 09 20 20 ------------ Wave table IRQ♪◙○ 000069A0 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | +--------------------------- 000069C0 2D 20 44 69 72 65 63 74 69 6F 6E 20 6F 66 20 6D 6F 76 65 6D 65 6E 74 0D 0A 09 20 20 2B 2D 2D 2D - Direction of movement♪◙○ +--- 000069E0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 49 52 ----------------------------- IR 00006A00 51 20 70 65 6E 64 69 6E 67 0D 0A 0D 0A 2A 09 42 69 74 20 30 2D 09 31 20 3D 20 56 6F 69 63 65 20 Q pending♪◙♪◙*○Bit 0-○1 = Voice 00006A20 69 73 20 73 74 6F 70 70 65 64 2E 20 54 68 69 73 20 67 65 74 73 20 73 65 74 20 62 79 20 68 69 74 is stopped. This gets set by hit 00006A40 74 69 6E 67 20 74 68 65 20 65 6E 64 20 61 64 64 72 65 73 73 20 28 6E 6F 74 20 6C 6F 6F 70 69 6E ting the end address (not loopin 00006A60 67 29 20 6F 72 20 62 79 20 73 65 74 74 69 6E 67 20 62 69 74 20 31 20 69 6E 20 74 68 69 73 20 72 g) or by setting bit 1 in this r 00006A80 65 67 2E 0D 0A 09 42 69 74 20 31 2D 09 31 20 3D 20 53 74 6F 70 20 56 6F 69 63 65 2E 20 4D 61 6E eg.♪◙○Bit 1-○1 = Stop Voice. Man 00006AA0 75 61 6C 6C 79 20 66 6F 72 63 65 20 76 6F 69 63 65 20 74 6F 20 73 74 6F 70 2E 0D 0A 09 42 69 74 ually force voice to stop.♪◙○Bit 00006AC0 20 32 2D 09 31 20 3D 20 31 36 20 62 69 74 20 77 61 76 65 20 64 61 74 61 2C 20 30 20 3D 20 38 20 2-○1 = 16 bit wave data, 0 = 8 00006AE0 62 69 74 20 64 61 74 61 0D 0A 09 42 69 74 20 33 2D 09 31 20 3D 20 4C 6F 6F 70 20 74 6F 20 62 65 bit data♪◙○Bit 3-○1 = Loop to be 00006B00 67 69 6E 20 61 64 64 72 65 73 73 20 77 68 65 6E 20 69 74 20 68 69 74 73 20 74 68 65 20 65 6E 64 gin address when it hits the end 00006B20 20 61 64 64 72 65 73 73 2E 0D 0A 09 42 69 74 20 34 2D 09 31 20 3D 20 42 69 2D 64 69 72 65 63 74 address.♪◙○Bit 4-○1 = Bi-direct 00006B40 69 6F 6E 61 6C 20 6C 6F 6F 70 69 6E 67 20 65 6E 61 62 6C 65 64 0D 0A 09 42 69 74 20 35 2D 09 31 ional looping enabled♪◙○Bit 5-○1 00006B60 20 3D 20 45 6E 61 62 6C 65 20 77 61 76 65 74 61 62 6C 65 20 49 52 51 2E 20 47 65 6E 65 72 61 74 = Enable wavetable IRQ. Generat 00006B80 65 20 61 6E 20 49 52 51 20 77 68 65 6E 20 74 68 65 20 76 6F 69 63 65 20 68 69 74 73 20 74 68 65 e an IRQ when the voice hits the 00006BA0 20 65 6E 64 20 61 64 64 72 65 73 73 2E 20 57 69 6C 6C 20 67 65 6E 65 72 61 74 65 20 49 52 51 20 end address. Will generate IRQ 00006BC0 65 76 65 6E 20 69 66 20 6C 6F 6F 70 69 6E 67 20 69 73 20 65 6E 61 62 6C 65 64 2E 0D 0A 2A 09 42 even if looping is enabled.♪◙*○B 00006BE0 69 74 20 36 2D 09 31 20 3D 20 44 65 63 72 65 61 73 69 6E 67 20 61 64 64 72 65 73 73 65 73 2C 20 it 6-○1 = Decreasing addresses, 00006C00 30 20 3D 20 69 6E 63 72 65 61 73 69 6E 67 20 61 64 64 72 65 73 73 65 73 2E 20 49 74 20 69 73 20 0 = increasing addresses. It is 00006C20 73 65 6C 66 2D 6D 6F 64 69 66 79 69 6E 67 20 62 65 63 61 75 73 65 20 69 74 20 6D 69 67 68 74 20 self-modifying because it might 00006C40 73 68 69 66 74 20 64 69 72 65 63 74 69 6F 6E 73 20 77 68 65 6E 20 69 74 20 68 69 74 73 20 6F 6E shift directions when it hits on 00006C60 65 20 6F 66 20 74 68 65 20 6C 6F 6F 70 20 62 6F 75 6E 64 61 72 69 65 73 20 61 6E 64 20 6C 6F 6F e of the loop boundaries and loo 00006C80 70 69 6E 67 20 69 73 20 65 6E 61 62 6C 65 64 2E 0D 0A 2A 09 42 69 74 20 37 2D 09 31 20 3D 20 57 ping is enabled.♪◙*○Bit 7-○1 = W 00006CA0 61 76 65 74 61 62 6C 65 20 49 52 51 20 70 65 6E 64 69 6E 67 2E 20 49 66 20 49 52 51 27 73 20 61 avetable IRQ pending. If IRQ's a 00006CC0 72 65 20 65 6E 61 62 6C 65 64 20 61 6E 64 20 6C 6F 6F 70 69 6E 67 20 69 73 20 4E 4F 54 20 65 6E re enabled and looping is NOT en 00006CE0 61 62 6C 65 64 2C 20 61 6E 20 49 52 51 20 77 69 6C 6C 20 62 65 20 63 6F 6E 73 74 61 6E 74 6C 79 abled, an IRQ will be constantly 00006D00 20 67 65 6E 65 72 61 74 65 64 20 75 6E 74 69 6C 20 74 68 65 20 76 6F 69 63 65 20 69 73 20 73 74 generated until the voice is st 00006D20 6F 70 70 65 64 2E 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 20 79 6F 75 20 6D 61 79 20 67 opped. This means that you may g 00006D40 65 74 20 6D 6F 72 65 20 74 68 61 6E 20 31 20 49 52 51 20 69 66 20 69 74 20 69 73 6E 27 74 20 68 et more than 1 IRQ if it isn't h 00006D60 61 6E 64 6C 65 64 20 70 72 6F 70 65 72 6C 79 2E 0D 0A 0D 0A 0C 32 2E 36 2E 32 2E 32 20 20 46 72 andled properly.♪◙♪◙♀2.6.2.2 Fr 00006D80 65 71 75 65 6E 63 79 20 43 6F 6E 74 72 6F 6C 20 52 65 67 69 73 74 65 72 20 2D 20 28 31 2C 38 31 equency Control Register - (1,81 00006DA0 29 0D 0A 0D 0A 09 42 69 74 73 20 31 35 2D 31 30 20 2D 20 49 6E 74 65 67 65 72 20 50 6F 72 74 69 )♪◙♪◙○Bits 15-10 - Integer Porti 00006DC0 6F 6E 0D 0A 09 42 69 74 73 20 39 2D 31 20 20 20 2D 20 46 72 61 63 74 69 6F 6E 61 6C 20 50 6F 72 on♪◙○Bits 9-1 - Fractional Por 00006DE0 74 69 6F 6E 0D 0A 09 42 69 74 20 30 20 20 20 20 20 20 2D 20 4E 6F 74 20 75 73 65 64 2E 0D 0A 0D tion♪◙○Bit 0 - Not used.♪◙♪ 00006E00 0A 54 68 69 73 20 72 65 67 69 73 74 65 72 20 64 65 74 65 72 6D 69 6E 65 73 20 74 68 65 20 61 6D ◙This register determines the am 00006E20 6F 75 6E 74 20 61 64 64 65 64 20 74 6F 20 28 6F 72 20 73 75 62 74 72 61 63 74 65 64 20 66 72 6F ount added to (or subtracted fro 00006E40 6D 29 20 74 68 65 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 68 65 20 76 m) the current position of the v 00006E60 6F 69 63 65 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 20 77 68 65 72 65 20 74 68 65 20 6E 65 78 74 oice to determine where the next 00006E80 20 70 6F 73 69 74 69 6F 6E 20 77 69 6C 6C 20 62 65 2E 20 54 68 69 73 20 69 73 20 68 6F 77 20 74 position will be. This is how t 00006EA0 68 65 20 69 6E 74 65 72 70 6F 6C 61 74 65 64 20 64 61 74 61 20 70 6F 69 6E 74 73 20 61 72 65 20 he interpolated data points are 00006EC0 64 65 74 65 72 6D 69 6E 65 64 2E 20 49 66 20 74 68 65 20 46 43 20 72 65 67 69 73 74 65 72 20 69 determined. If the FC register i 00006EE0 73 20 6C 65 73 73 20 74 68 61 6E 20 30 2C 20 74 68 65 20 47 46 31 20 77 69 6C 6C 20 69 6E 74 65 s less than 0, the GF1 will inte 00006F00 72 70 6F 6C 61 74 65 20 74 68 65 20 64 61 74 61 20 70 6F 69 6E 74 20 69 6E 20 62 65 74 77 65 65 rpolate the data point in betwee 00006F20 6E 20 74 68 65 20 74 77 6F 20 61 63 74 75 61 6C 20 64 61 74 61 20 70 6F 69 6E 74 73 2E 20 4E 6F n the two actual data points. No 00006F40 74 65 20 74 68 61 74 20 74 68 65 20 46 43 20 63 61 6E 20 62 65 20 67 72 65 61 74 65 72 20 74 68 te that the FC can be greater th 00006F60 61 6E 20 31 2E 20 54 68 69 73 20 61 6C 6C 6F 77 73 20 66 6F 72 20 73 6B 69 70 70 69 6E 67 20 6F an 1. This allows for skipping o 00006F80 76 65 72 20 64 61 74 61 20 62 79 74 65 73 2E 20 54 68 65 20 61 63 74 75 61 6C 20 66 72 65 71 75 ver data bytes. The actual frequ 00006FA0 65 6E 63 79 20 74 68 61 74 20 69 74 20 77 69 6C 6C 20 70 6C 61 79 20 62 61 63 6B 20 69 73 20 64 ency that it will play back is d 00006FC0 69 72 65 63 74 6C 79 20 72 65 6C 61 74 65 64 20 74 6F 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 irectly related to the number of 00006FE0 20 61 63 74 69 76 65 20 76 6F 69 63 65 20 73 70 65 63 69 66 69 65 64 20 28 72 65 67 69 73 74 65 active voice specified (registe 00007000 72 20 38 45 29 2E 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 36 2E 32 2E 33 20 20 53 74 61 72 74 69 6E 67 20 r 8E).♪◙♪◙♪◙♪◙2.6.2.3 Starting 00007020 6C 6F 63 61 74 69 6F 6E 20 48 49 47 48 20 2D 20 28 32 2C 38 32 29 0D 0A 0D 0A 42 69 74 73 20 31 location HIGH - (2,82)♪◙♪◙Bits 1 00007040 32 2D 30 09 61 72 65 20 74 68 65 20 48 49 47 48 20 31 33 20 62 69 74 73 20 6F 66 20 74 68 65 20 2-0○are the HIGH 13 bits of the 00007060 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 73 74 61 72 74 69 6E 67 20 6C 6F 63 61 74 69 6F 6E address of the starting location 00007080 20 6F 66 20 74 68 65 20 77 61 76 65 66 6F 72 6D 20 28 41 64 64 72 20 6C 69 6E 65 73 20 31 39 2D of the waveform (Addr lines 19- 000070A0 37 29 2E 0D 0A 42 69 74 73 20 31 35 2D 31 33 09 61 72 65 20 6E 6F 74 20 75 73 65 64 2E 0D 0A 0D 7).♪◙Bits 15-13○are not used.♪◙♪ 000070C0 0A 0D 0A 0D 0A 32 2E 36 2E 32 2E 34 20 20 53 74 61 72 74 69 6E 67 20 6C 6F 63 61 74 69 6F 6E 20 ◙♪◙♪◙2.6.2.4 Starting location 000070E0 4C 4F 57 20 2D 20 28 33 2C 38 33 29 0D 0A 0D 0A 42 69 74 73 20 31 35 2D 39 09 61 72 65 20 74 68 LOW - (3,83)♪◙♪◙Bits 15-9○are th 00007100 65 20 6C 6F 77 20 37 20 62 69 74 73 20 6F 66 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 e low 7 bits of the address of t 00007120 68 65 20 73 74 61 72 74 69 6E 67 20 6C 6F 63 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 77 61 76 65 he starting location of the wave 00007140 66 6F 72 6D 2E 20 28 41 64 64 72 20 6C 69 6E 65 73 20 36 2D 30 29 2E 0D 0A 42 69 74 73 20 38 2D form. (Addr lines 6-0).♪◙Bits 8- 00007160 35 09 61 72 65 20 74 68 65 20 66 72 61 63 74 69 6F 6E 61 6C 20 70 61 72 74 20 6F 66 20 74 68 65 5○are the fractional part of the 00007180 20 73 74 61 72 74 69 6E 67 20 61 64 64 72 65 73 73 2E 0D 0A 42 69 74 73 20 34 2D 30 09 61 72 65 starting address.♪◙Bits 4-0○are 000071A0 20 6E 6F 74 20 75 73 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 36 2E 32 2E 35 20 20 45 6E 64 20 41 not used.♪◙♪◙♪◙♪◙2.6.2.5 End A 000071C0 64 64 72 65 73 73 20 48 49 47 48 20 2D 20 28 34 2C 38 34 29 0D 0A 0D 0A 42 69 74 73 20 31 32 2D ddress HIGH - (4,84)♪◙♪◙Bits 12- 000071E0 30 09 61 72 65 20 74 68 65 20 68 69 67 68 20 31 33 20 62 69 74 73 20 6F 66 20 74 68 65 20 61 64 0○are the high 13 bits of the ad 00007200 64 72 65 73 73 20 6F 66 20 74 68 65 20 65 6E 64 69 6E 67 20 6C 6F 63 61 74 69 6F 6E 20 6F 66 20 dress of the ending location of 00007220 74 68 65 20 77 61 76 65 66 6F 72 6D 2E 20 28 41 64 64 72 20 6C 69 6E 65 73 20 31 39 2D 37 29 0D the waveform. (Addr lines 19-7)♪ 00007240 0A 42 69 74 73 20 31 35 2D 31 33 09 61 72 65 20 6E 6F 74 20 75 73 65 64 2E 0D 0A 0D 0A 0D 0A 0D ◙Bits 15-13○are not used.♪◙♪◙♪◙♪ 00007260 0A 32 2E 36 2E 32 2E 36 20 20 45 6E 64 20 41 64 64 72 65 73 73 20 4C 4F 57 20 2D 20 28 35 2C 38 ◙2.6.2.6 End Address LOW - (5,8 00007280 35 29 0D 0A 0D 0A 42 69 74 73 20 31 35 2D 39 09 61 72 65 20 74 68 65 20 6C 6F 77 20 37 20 62 69 5)♪◙♪◙Bits 15-9○are the low 7 bi 000072A0 74 73 20 6F 66 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 65 6E 64 69 6E 67 20 ts of the address of the ending 000072C0 6C 6F 63 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 77 61 76 65 66 6F 72 6D 2E 20 28 41 64 64 72 20 location of the waveform. (Addr 000072E0 6C 69 6E 65 73 20 36 2D 30 29 2E 0D 0A 42 69 74 73 20 38 2D 35 09 61 72 65 20 74 68 65 20 66 72 lines 6-0).♪◙Bits 8-5○are the fr 00007300 61 63 74 69 6F 6E 61 6C 20 70 61 72 74 20 6F 66 20 74 68 65 20 65 6E 64 69 6E 67 20 61 64 64 72 actional part of the ending addr 00007320 65 73 73 2E 0D 0A 42 69 74 73 20 34 2D 30 09 61 72 65 20 6E 6F 74 20 75 73 65 64 2E 0D 0A 0D 0A ess.♪◙Bits 4-0○are not used.♪◙♪◙ 00007340 0C 32 2E 36 2E 32 2E 37 20 20 56 6F 6C 75 6D 65 20 52 61 6D 70 20 52 61 74 65 20 2D 20 28 36 2C ♀2.6.2.7 Volume Ramp Rate - (6, 00007360 38 36 29 0D 0A 0D 0A 42 69 74 73 20 35 2D 30 09 69 73 20 74 68 65 20 61 6D 6F 75 6E 74 20 61 64 86)♪◙♪◙Bits 5-0○is the amount ad 00007380 64 65 64 20 74 6F 20 28 6F 72 20 73 75 62 74 72 61 63 74 65 64 20 66 72 6F 6D 29 20 74 68 65 20 ded to (or subtracted from) the 000073A0 63 75 72 72 65 6E 74 20 76 6F 6C 75 6D 65 20 74 6F 20 67 65 74 20 74 68 65 20 6E 65 78 74 20 76 current volume to get the next v 000073C0 6F 6C 75 6D 65 2E 20 54 68 65 20 72 61 6E 67 65 20 69 73 20 66 72 6F 6D 20 31 20 74 6F 20 36 33 olume. The range is from 1 to 63 000073E0 2E 20 54 68 65 20 6C 61 72 67 65 72 20 74 68 65 20 6E 75 6D 62 65 72 2C 20 74 68 65 20 67 72 65 . The larger the number, the gre 00007400 61 74 65 72 20 74 68 65 20 76 6F 6C 75 6D 65 20 73 74 65 70 2E 0D 0A 42 69 74 73 20 37 2D 36 09 ater the volume step.♪◙Bits 7-6○ 00007420 64 65 66 69 6E 65 73 20 74 68 65 20 72 61 74 65 20 61 74 20 77 68 69 63 68 20 74 68 65 20 69 6E defines the rate at which the in 00007440 63 72 65 6D 65 6E 74 20 69 73 20 61 70 70 6C 69 65 64 2E 0D 0A 0D 0A 50 6C 65 61 73 65 20 73 65 crement is applied.♪◙♪◙Please se 00007460 65 20 73 65 63 74 69 6F 6E 20 32 2E 31 36 20 66 6F 72 20 6D 6F 72 65 20 69 6E 66 6F 72 6D 61 74 e section 2.16 for more informat 00007480 69 6F 6E 20 6F 6E 20 68 61 72 64 77 61 72 65 20 76 6F 6C 75 6D 65 20 72 61 6D 70 69 6E 67 2E 0D ion on hardware volume ramping.♪ 000074A0 0A 0D 0A 0D 0A 0D 0A 32 2E 36 2E 32 2E 38 20 20 56 6F 6C 75 6D 65 20 52 61 6D 70 20 53 74 61 72 ◙♪◙♪◙♪◙2.6.2.8 Volume Ramp Star 000074C0 74 20 2D 20 28 37 2C 38 37 29 0D 0A 0D 0A 42 69 74 73 20 37 2D 34 09 45 78 70 6F 6E 65 6E 74 0D t - (7,87)♪◙♪◙Bits 7-4○Exponent♪ 000074E0 0A 42 69 74 73 20 33 2D 30 09 4D 61 6E 74 69 73 73 61 0D 0A 0D 0A 54 68 69 73 20 72 65 67 69 73 ◙Bits 3-0○Mantissa♪◙♪◙This regis 00007500 74 65 72 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 73 74 61 72 74 69 6E 67 20 70 6F 73 69 74 ter specifies the starting posit 00007520 69 6F 6E 20 6F 66 20 61 20 76 6F 6C 75 6D 65 20 72 61 6D 70 2E 20 53 65 65 20 74 68 65 20 73 70 ion of a volume ramp. See the sp 00007540 65 63 69 61 6C 20 73 65 63 74 69 6F 6E 20 6F 6E 20 76 6F 6C 75 6D 65 20 72 61 6D 70 69 6E 67 20 ecial section on volume ramping 00007560 66 6F 72 20 61 20 6D 6F 72 65 20 63 6F 6D 70 6C 65 74 65 20 65 78 70 6C 61 6E 61 74 69 6F 6E 20 for a more complete explanation 00007580 6F 66 20 68 6F 77 20 74 68 69 73 20 72 65 67 69 73 74 65 72 20 77 6F 72 6B 73 2E 0D 0A 0D 0A 50 of how this register works.♪◙♪◙P 000075A0 6C 65 61 73 65 20 73 65 65 20 73 65 63 74 69 6F 6E 20 32 2E 31 36 20 66 6F 72 20 6D 6F 72 65 20 lease see section 2.16 for more 000075C0 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 6E 20 68 61 72 64 77 61 72 65 20 76 6F 6C 75 6D 65 20 72 information on hardware volume r 000075E0 61 6D 70 69 6E 67 2E 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 36 2E 32 2E 39 20 20 56 6F 6C 75 6D 65 20 52 amping.♪◙♪◙♪◙♪◙2.6.2.9 Volume R 00007600 61 6D 70 20 45 6E 64 20 2D 20 28 38 2C 38 38 29 0D 0A 0D 0A 42 69 74 73 20 37 2D 34 09 45 78 70 amp End - (8,88)♪◙♪◙Bits 7-4○Exp 00007620 6F 6E 65 6E 74 0D 0A 42 69 74 73 20 33 2D 30 09 4D 61 6E 74 69 73 73 61 0D 0A 0D 0A 54 68 69 73 onent♪◙Bits 3-0○Mantissa♪◙♪◙This 00007640 20 72 65 67 69 73 74 65 72 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 65 6E 64 69 6E 67 20 70 register specifies the ending p 00007660 6F 73 69 74 69 6F 6E 20 6F 66 20 61 20 76 6F 6C 75 6D 65 20 72 61 6D 70 2E 20 20 53 65 65 20 74 osition of a volume ramp. See t 00007680 68 65 20 73 70 65 63 69 61 6C 20 73 65 63 74 69 6F 6E 20 6F 6E 20 76 6F 6C 75 6D 65 20 72 61 6D he special section on volume ram 000076A0 70 69 6E 67 20 66 6F 72 20 61 20 6D 6F 72 65 20 63 6F 6D 70 6C 65 74 65 20 65 78 70 6C 61 6E 61 ping for a more complete explana 000076C0 74 69 6F 6E 20 6F 66 20 68 6F 77 20 74 68 69 73 20 72 65 67 69 73 74 65 72 20 77 6F 72 6B 73 2E tion of how this register works. 000076E0 0D 0A 0D 0A 4E 6F 74 65 3A 09 54 68 65 20 73 74 61 72 74 69 6E 67 20 76 6F 6C 75 6D 65 20 6D 75 ♪◙♪◙Note:○The starting volume mu 00007700 73 74 20 61 6C 77 61 79 73 20 62 65 20 6C 65 73 73 20 74 68 61 6E 20 74 68 65 20 65 6E 64 69 6E st always be less than the endin 00007720 67 20 76 6F 6C 75 6D 65 2E 20 49 66 20 79 6F 75 20 77 61 6E 74 20 74 68 65 20 76 6F 6C 75 6D 65 g volume. If you want the volume 00007740 20 74 6F 20 72 61 6D 70 20 64 6F 77 6E 2C 20 74 75 72 6E 20 6F 6E 20 74 68 65 20 64 65 63 72 65 to ramp down, turn on the decre 00007760 61 73 69 6E 67 20 76 6F 6C 75 6D 65 20 62 69 74 20 69 6E 20 74 68 65 20 56 6F 6C 75 6D 65 20 43 asing volume bit in the Volume C 00007780 6F 6E 74 72 6F 6C 20 52 65 67 69 73 74 65 72 2E 0D 0A 0D 0A 50 6C 65 61 73 65 20 73 65 65 20 73 ontrol Register.♪◙♪◙Please see s 000077A0 65 63 74 69 6F 6E 20 32 2E 31 36 20 66 6F 72 20 6D 6F 72 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E ection 2.16 for more information 000077C0 20 6F 6E 20 68 61 72 64 77 61 72 65 20 76 6F 6C 75 6D 65 20 72 61 6D 70 69 6E 67 2E 0D 0A 0D 0A on hardware volume ramping.♪◙♪◙ 000077E0 0D 0A 0C 32 2E 36 2E 32 2E 31 30 20 20 43 75 72 72 65 6E 74 20 56 6F 6C 75 6D 65 20 2D 20 28 39 ♪◙♀2.6.2.10 Current Volume - (9 00007800 2C 38 39 29 0D 0A 0D 0A 2A 20 42 69 74 73 20 31 35 2D 31 32 09 45 78 70 6F 6E 65 6E 74 0D 0A 2A ,89)♪◙♪◙* Bits 15-12○Exponent♪◙* 00007820 20 42 69 74 73 20 31 31 2D 34 09 09 4D 61 6E 74 69 73 73 61 0D 0A 20 20 42 69 74 73 20 33 2D 30 Bits 11-4○○Mantissa♪◙ Bits 3-0 00007840 09 09 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 0D 0A 4E 6F 74 65 3A 20 09 ○○Reserved (Set to 0)♪◙♪◙Note: ○ 00007860 54 68 69 73 20 72 65 67 69 73 74 65 72 20 68 61 73 20 34 20 65 78 74 72 61 20 62 69 74 73 20 6F This register has 4 extra bits o 00007880 66 20 70 72 65 63 69 73 69 6F 6E 20 74 68 61 74 20 69 73 20 6E 65 63 65 73 73 61 72 79 20 66 6F f precision that is necessary fo 000078A0 72 20 66 69 6E 65 72 20 67 72 61 6E 75 6C 61 72 69 74 79 20 6F 66 20 76 6F 6C 75 6D 65 20 70 6C r finer granularity of volume pl 000078C0 61 63 65 6D 65 6E 74 2E 20 20 54 68 65 20 65 78 74 72 61 20 62 69 74 73 20 61 72 65 20 75 73 65 acement. The extra bits are use 000078E0 64 20 64 75 72 69 6E 67 20 61 20 76 6F 6C 75 6D 65 20 72 61 6D 70 2E 0D 0A 0D 0A 4E 6F 74 65 3A d during a volume ramp.♪◙♪◙Note: 00007900 20 09 54 68 69 73 20 69 73 20 61 20 73 65 6C 66 2D 6D 6F 64 69 66 79 69 6E 67 20 76 61 6C 75 65 ○This is a self-modifying value 00007920 2E 20 54 68 65 20 47 46 31 20 77 69 6C 6C 20 75 70 64 61 74 65 20 74 68 69 73 20 72 65 67 69 73 . The GF1 will update this regis 00007940 74 65 72 20 61 73 20 69 74 20 72 61 6D 70 73 2E 0D 0A 0D 0A 4E 6F 74 65 3A 20 09 59 6F 75 20 73 ter as it ramps.♪◙♪◙Note: ○You s 00007960 68 6F 75 6C 64 20 61 6C 77 61 79 73 20 73 65 74 20 74 68 69 73 20 72 65 67 69 73 74 65 72 20 65 hould always set this register e 00007980 71 75 61 6C 20 74 6F 20 74 68 65 20 76 61 6C 75 65 20 6F 66 20 74 68 65 20 62 65 67 69 6E 6E 69 qual to the value of the beginni 000079A0 6E 67 20 6F 66 20 74 68 65 20 76 6F 6C 75 6D 65 20 72 61 6D 70 20 28 73 74 61 72 74 20 4F 52 20 ng of the volume ramp (start OR 000079C0 65 6E 64 29 2E 0D 0A 0D 0A 50 6C 65 61 73 65 20 73 65 65 20 73 65 63 74 69 6F 6E 20 32 2E 31 36 end).♪◙♪◙Please see section 2.16 000079E0 20 66 6F 72 20 6D 6F 72 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 6E 20 68 61 72 64 77 61 72 for more information on hardwar 00007A00 65 20 76 6F 6C 75 6D 65 20 72 61 6D 70 69 6E 67 2E 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 36 2E 32 2E 31 e volume ramping.♪◙♪◙♪◙♪◙2.6.2.1 00007A20 31 20 20 43 75 72 72 65 6E 74 20 4C 6F 63 61 74 69 6F 6E 20 48 49 47 48 20 2D 20 28 41 2C 38 41 1 Current Location HIGH - (A,8A 00007A40 29 0D 0A 0D 0A 42 69 74 73 20 31 35 2D 31 33 09 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F )♪◙♪◙Bits 15-13○Reserved (Set to 00007A60 20 30 29 0D 0A 42 69 74 73 20 31 32 2D 30 09 48 69 67 68 20 31 33 20 62 69 74 73 20 6F 66 20 61 0)♪◙Bits 12-0○High 13 bits of a 00007A80 64 64 72 65 73 73 20 28 61 64 64 72 65 73 73 20 6C 69 6E 65 73 20 31 39 2D 37 29 0D 0A 0D 0A 0D ddress (address lines 19-7)♪◙♪◙♪ 00007AA0 0A 0D 0A 32 2E 36 2E 32 2E 31 32 20 20 43 75 72 72 65 6E 74 20 4C 6F 63 61 74 69 6F 6E 20 4C 4F ◙♪◙2.6.2.12 Current Location LO 00007AC0 57 20 2D 20 28 42 2C 38 42 29 0D 0A 0D 0A 42 69 74 73 20 31 35 2D 39 09 4C 6F 77 20 37 20 62 69 W - (B,8B)♪◙♪◙Bits 15-9○Low 7 bi 00007AE0 74 73 20 6F 66 20 61 64 64 72 65 73 73 2E 20 28 61 64 64 72 65 73 73 20 6C 69 6E 65 73 20 36 2D ts of address. (address lines 6- 00007B00 30 29 0D 0A 42 69 74 73 20 38 2D 30 09 39 20 62 69 74 20 66 72 61 63 74 69 6F 6E 61 6C 20 70 6F 0)♪◙Bits 8-0○9 bit fractional po 00007B20 73 69 74 69 6F 6E 2E 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 36 2E 32 2E 31 33 20 20 50 61 6E 20 50 6F 73 sition.♪◙♪◙♪◙♪◙2.6.2.13 Pan Pos 00007B40 69 74 69 6F 6E 20 2D 20 28 43 2C 38 43 29 0D 0A 0D 0A 42 69 74 73 20 38 2D 34 09 52 65 73 65 72 ition - (C,8C)♪◙♪◙Bits 8-4○Reser 00007B60 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 42 69 74 73 20 33 2D 30 09 50 61 6E 20 70 6F 73 ved (Set to 0)♪◙Bits 3-0○Pan pos 00007B80 69 74 69 6F 6E 2E 20 28 30 3D 66 75 6C 6C 20 6C 65 66 74 2C 20 31 35 3D 66 75 6C 6C 20 72 69 67 ition. (0=full left, 15=full rig 00007BA0 68 74 29 0D 0A 0D 0A 0D 0A 0C 32 2E 36 2E 32 2E 31 34 20 20 56 6F 6C 75 6D 65 20 52 61 6D 70 20 ht)♪◙♪◙♪◙♀2.6.2.14 Volume Ramp 00007BC0 43 6F 6E 74 72 6F 6C 20 52 65 67 69 73 74 65 72 20 2D 20 28 44 2C 38 44 29 0D 0A 0D 0A 09 3D 3D Control Register - (D,8D)♪◙♪◙○== 00007BE0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D ===============================♪ 00007C00 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 20 7C 20 32 20 7C 20 31 20 7C 20 ◙○| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 00007C20 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0 |♪◙○========================== 00007C40 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 =======♪◙○ | | | | | 00007C60 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 | | |♪◙○ | | | | | 00007C80 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 52 61 6D 70 20 53 74 6F 70 70 65 64 0D 0A 09 20 | | +---- Ramp Stopped♪◙○ 00007CA0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D | | | | | | +------ 00007CC0 2D 2D 20 53 74 6F 70 20 52 61 6D 70 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 -- Stop Ramp♪◙○ | | | | 00007CE0 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 6F 6C 6C 6F 76 65 72 20 63 6F 6E 64 | +------------ Rollover cond 00007D00 69 74 69 6F 6E 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D ition♪◙○ | | | | +----- 00007D20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4C 6F 6F 70 20 45 6E 61 62 6C 65 0D 0A 09 20 20 7C 20 20 20 ----------- Loop Enable♪◙○ | 00007D40 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 42 69 | | +-------------------- Bi 00007D60 2D 64 69 72 65 63 74 69 6F 6E 61 6C 20 6C 6F 6F 70 20 65 6E 61 62 6C 65 0D 0A 09 20 20 7C 20 20 -directional loop enable♪◙○ | 00007D80 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 56 | +------------------------ V 00007DA0 6F 6C 75 6D 65 20 72 61 6D 70 20 49 52 51 20 65 6E 61 62 6C 65 0D 0A 09 20 20 7C 20 20 20 2B 2D olume ramp IRQ enable♪◙○ | +- 00007DC0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 44 69 72 65 --------------------------- Dire 00007DE0 63 74 69 6F 6E 0D 0A 09 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ction♪◙○ +--------------------- 00007E00 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 49 52 51 20 70 65 6E 64 69 6E 67 0D 0A 0D 0A 2A 09 42 69 74 ----------- IRQ pending♪◙♪◙*○Bit 00007E20 20 30 2D 09 53 68 6F 77 20 74 68 65 20 72 61 6D 70 20 68 61 73 20 73 74 6F 70 70 65 64 0D 0A 09 0-○Show the ramp has stopped♪◙○ 00007E40 42 69 74 20 31 2D 09 4D 61 6E 75 61 6C 6C 79 20 73 74 6F 70 20 74 68 65 20 72 61 6D 70 2E 0D 0A Bit 1-○Manually stop the ramp.♪◙ 00007E60 09 42 69 74 20 32 2D 09 52 6F 6C 6C 20 6F 76 65 72 20 63 6F 6E 64 69 74 69 6F 6E 2E 20 54 68 69 ○Bit 2-○Roll over condition. Thi 00007E80 73 20 62 69 74 20 70 65 72 74 61 69 6E 73 20 6D 6F 72 65 20 74 6F 77 61 72 64 73 20 74 68 65 20 s bit pertains more towards the 00007EA0 6C 6F 63 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 76 6F 69 63 65 20 72 61 74 68 65 72 20 74 68 61 location of the voice rather tha 00007EC0 6E 20 69 74 73 20 76 6F 6C 75 6D 65 2E 20 49 74 73 20 70 75 72 70 6F 73 65 20 69 73 20 74 6F 20 n its volume. Its purpose is to 00007EE0 67 65 6E 65 72 61 74 65 20 61 6E 20 49 52 51 20 61 6E 64 20 4E 4F 54 20 73 74 6F 70 20 28 6F 72 generate an IRQ and NOT stop (or 00007F00 20 6C 6F 6F 70 29 2E 20 49 74 20 77 69 6C 6C 20 67 65 6E 65 72 61 74 65 20 61 6E 20 49 52 51 20 loop). It will generate an IRQ 00007F20 61 6E 64 20 74 68 65 20 76 6F 69 63 65 27 73 20 61 64 64 72 65 73 73 20 77 69 6C 6C 20 63 6F 6E and the voice's address will con 00007F40 74 69 6E 75 65 20 74 6F 20 6D 6F 76 65 20 74 68 72 75 20 44 52 41 4D 20 69 6E 20 74 68 65 20 73 tinue to move thru DRAM in the s 00007F60 61 6D 65 20 64 69 72 65 63 74 69 6F 6E 2E 20 54 68 69 73 20 63 61 6E 20 62 65 20 61 20 76 65 72 ame direction. This can be a ver 00007F80 79 20 70 6F 77 65 72 66 75 6C 20 66 65 61 74 75 72 65 2E 20 49 74 20 61 6C 6C 6F 77 73 20 74 68 y powerful feature. It allows th 00007FA0 65 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 74 6F 20 67 65 74 20 61 6E 20 69 6E 74 65 72 72 75 70 e application to get an interrup 00007FC0 74 20 77 69 74 68 6F 75 74 20 68 61 76 69 6E 67 20 74 68 65 20 73 6F 75 6E 64 20 73 74 6F 70 2E t without having the sound stop. 00007FE0 20 54 68 69 73 20 63 61 6E 20 62 65 20 65 61 73 69 6C 79 20 75 73 65 64 20 74 6F 20 69 6D 70 6C This can be easily used to impl 00008000 65 6D 65 6E 74 20 61 20 70 69 6E 67 2D 70 6F 6E 67 20 62 75 66 66 65 72 20 61 6C 67 6F 72 69 74 ement a ping-pong buffer algorit 00008020 68 6D 20 73 6F 20 61 6E 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 63 61 6E 20 6B 65 65 70 20 66 65 hm so an application can keep fe 00008040 65 64 69 6E 67 20 69 74 20 64 61 74 61 20 61 6E 64 20 74 68 65 72 65 20 77 69 6C 6C 20 62 65 20 eding it data and there will be 00008060 6E 6F 20 70 6F 70 73 2E 20 45 76 65 6E 20 69 66 20 6C 6F 6F 70 69 6E 67 20 69 73 20 65 6E 61 62 no pops. Even if looping is enab 00008080 6C 65 64 2C 20 69 74 20 77 69 6C 6C 20 6E 6F 74 20 6C 6F 6F 70 2E 0D 0A 09 42 69 74 20 33 2D 09 led, it will not loop.♪◙○Bit 3-○ 000080A0 45 6E 61 62 6C 65 20 6C 6F 6F 70 69 6E 67 2E 20 4C 6F 6F 70 20 66 72 6F 6D 20 65 6E 64 20 74 6F Enable looping. Loop from end to 000080C0 20 73 74 61 72 74 20 28 6F 72 20 73 74 61 72 74 20 74 6F 20 65 6E 64 29 2E 0D 0A 09 42 69 74 20 start (or start to end).♪◙○Bit 000080E0 34 2D 09 45 6E 61 62 6C 65 20 62 69 2D 64 69 72 65 63 74 69 6F 6E 61 6C 20 6C 6F 6F 70 69 6E 67 4-○Enable bi-directional looping 00008100 2E 20 57 68 65 6E 20 69 74 20 68 69 74 73 20 65 6E 64 20 28 6F 72 20 73 74 61 72 74 29 20 69 74 . When it hits end (or start) it 00008120 20 77 69 6C 6C 20 63 68 61 6E 67 65 20 64 69 72 65 63 74 69 6F 6E 73 20 61 6E 64 20 70 72 6F 63 will change directions and proc 00008140 65 65 64 20 74 6F 77 61 72 64 20 74 68 65 20 6F 74 68 65 72 20 6C 69 6D 69 74 2E 0D 0A 09 42 69 eed toward the other limit.♪◙○Bi 00008160 74 20 35 2D 09 45 6E 61 62 6C 65 20 67 65 74 74 69 6E 67 20 61 6E 20 49 52 51 20 77 68 65 6E 20 t 5-○Enable getting an IRQ when 00008180 72 61 6D 70 20 68 69 74 73 20 65 6E 64 2E 0D 0A 2A 09 42 69 74 20 36 2D 09 52 61 6D 70 20 64 69 ramp hits end.♪◙*○Bit 6-○Ramp di 000081A0 72 65 63 74 69 6F 6E 2E 20 30 3D 69 6E 63 72 65 61 73 69 6E 67 2C 20 31 3D 64 65 63 72 65 61 73 rection. 0=increasing, 1=decreas 000081C0 69 6E 67 2E 0D 0A 2A 09 42 69 74 20 37 2D 09 28 52 45 41 44 29 20 56 6F 6C 75 6D 65 20 72 61 6D ing.♪◙*○Bit 7-○(READ) Volume ram 000081E0 70 20 49 52 51 20 70 65 6E 64 69 6E 67 2E 0D 0A 0D 0A 50 6C 65 61 73 65 20 73 65 65 20 73 65 63 p IRQ pending.♪◙♪◙Please see sec 00008200 74 69 6F 6E 20 32 2E 31 36 20 66 6F 72 20 6D 6F 72 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F tion 2.16 for more information o 00008220 6E 20 68 61 72 64 77 61 72 65 20 76 6F 6C 75 6D 65 20 72 61 6D 70 69 6E 67 2E 0D 0A 0D 0A 0D 0A n hardware volume ramping.♪◙♪◙♪◙ 00008240 0D 0A 32 2E 36 2E 32 2E 31 35 20 20 41 63 74 69 76 65 20 56 6F 69 63 65 73 20 2D 20 28 45 2C 38 ♪◙2.6.2.15 Active Voices - (E,8 00008260 45 29 0D 0A 0D 0A 42 69 74 73 20 37 2D 36 09 4D 75 73 74 20 62 65 20 73 65 74 20 74 6F 20 61 20 E)♪◙♪◙Bits 7-6○Must be set to a 00008280 31 0D 0A 42 69 74 73 20 35 2D 30 09 23 20 6F 66 20 76 6F 69 63 65 73 20 74 6F 20 65 6E 61 62 6C 1♪◙Bits 5-0○# of voices to enabl 000082A0 65 20 2D 20 31 2E 0D 0A 0D 0A 54 68 65 20 72 61 6E 67 65 20 69 73 20 66 72 6F 6D 20 31 34 20 2D e - 1.♪◙♪◙The range is from 14 - 000082C0 20 33 32 2E 20 41 6E 79 20 76 61 6C 75 65 20 6C 65 73 73 20 74 68 61 6E 20 31 34 20 77 69 6C 6C 32. Any value less than 14 will 000082E0 20 62 65 20 66 6F 72 63 65 64 20 74 6F 20 31 34 2E 0D 0A 0D 0A 0D 0A 0C 32 2E 36 2E 32 2E 31 36 be forced to 14.♪◙♪◙♪◙♀2.6.2.16 00008300 20 20 49 52 51 20 53 6F 75 72 63 65 20 52 65 67 69 73 74 65 72 20 2D 20 28 46 2C 38 46 29 0D 0A IRQ Source Register - (F,8F)♪◙ 00008320 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ♪◙○============================= 00008340 3D 3D 3D 3D 0D 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 20 7C 20 32 20 7C ====♪◙○| 7 | 6 | 5 | 4 | 3 | 2 | 00008360 20 31 20 7C 20 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 1 | 0 |♪◙○===================== 00008380 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 ============♪◙○ | | | | 000083A0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C | | | |♪◙○ | | | | 000083C0 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 5C 0D 0A 09 20 20 7C 20 20 20 7C 20 | | | +----\♪◙○ | | 000083E0 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 5C 0D 0A 09 | | | | +-------- \♪◙○ 00008400 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D | | | | | +--------- 00008420 2D 2D 2D 20 20 2D 20 49 6E 74 65 72 72 75 70 74 69 6E 67 20 76 6F 69 63 65 20 23 0D 0A 09 20 20 --- - Interrupting voice #♪◙○ 00008440 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | | | | +--------------- 00008460 2D 20 2F 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D - /♪◙○ | | | +----------- 00008480 2D 2D 2D 2D 2D 2D 2D 2D 2D 2F 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D ---------/♪◙○ | | +-------- 000084A0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 31 0D 0A 09 20 20 7C 20 20 20 2B 2D 2D 2D 2D ---------------- 1♪◙○ | +---- 000084C0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 56 6F 6C 75 6D 65 20 ------------------------ Volume 000084E0 52 61 6D 70 20 49 52 51 20 70 65 6E 64 69 6E 67 0D 0A 09 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D Ramp IRQ pending♪◙○ +---------- 00008500 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 57 61 76 65 54 61 62 6C 65 ---------------------- WaveTable 00008520 20 49 52 51 20 70 65 6E 64 69 6E 67 0D 0A 0D 0A 42 69 74 20 34 2D 31 2D 09 56 6F 69 63 65 20 23 IRQ pending♪◙♪◙Bit 4-1-○Voice # 00008540 20 28 30 2D 33 31 29 20 6F 66 20 69 6E 74 65 72 72 75 70 74 69 6E 67 20 76 6F 69 63 65 0D 0A 42 (0-31) of interrupting voice♪◙B 00008560 69 74 20 35 2D 09 41 4C 57 41 59 53 20 61 20 31 0D 0A 42 69 74 20 36 2D 09 30 20 3D 20 56 6F 6C it 5-○ALWAYS a 1♪◙Bit 6-○0 = Vol 00008580 75 6D 65 20 52 61 6D 70 20 49 52 51 20 6F 63 63 75 72 72 65 64 0D 0A 42 69 74 20 37 2D 09 30 20 ume Ramp IRQ occurred♪◙Bit 7-○0 000085A0 3D 20 57 61 76 65 74 61 62 6C 65 20 49 52 51 20 6F 63 63 75 72 72 65 64 0D 0A 0D 0A 4E 6F 74 65 = Wavetable IRQ occurred♪◙♪◙Note 000085C0 3A 20 09 54 68 69 73 20 69 73 20 61 20 67 6C 6F 62 61 6C 20 72 65 61 64 20 6F 6E 6C 79 20 72 65 : ○This is a global read only re 000085E0 67 69 73 74 65 72 2E 20 54 68 65 72 65 20 69 73 20 6F 6E 6C 79 20 31 20 66 6F 72 20 41 4C 4C 20 gister. There is only 1 for ALL 00008600 76 6F 69 63 65 73 2E 20 59 6F 75 20 4D 55 53 54 20 73 65 72 76 69 63 65 20 61 6E 79 20 69 6E 64 voices. You MUST service any ind 00008620 69 63 61 74 65 64 20 49 52 51 27 73 20 73 69 6E 63 65 20 61 20 72 65 61 64 20 6F 66 20 74 68 69 icated IRQ's since a read of thi 00008640 73 20 70 6F 72 74 20 77 69 6C 6C 20 63 6C 65 61 72 20 74 68 65 20 61 73 73 6F 63 69 61 74 65 64 s port will clear the associated 00008660 20 49 52 51 20 62 69 74 73 20 69 6E 20 74 68 65 20 70 61 72 74 69 63 75 6C 61 72 20 76 6F 69 63 IRQ bits in the particular voic 00008680 65 27 73 20 63 6F 6E 74 72 6F 6C 20 61 6E 64 2F 6F 72 20 76 6F 6C 75 6D 65 20 63 6F 6E 74 72 6F e's control and/or volume contro 000086A0 6C 20 72 65 67 69 73 74 65 72 73 2E 0D 0A 0D 0A 4E 6F 74 65 3A 20 09 49 74 20 69 73 20 70 6F 73 l registers.♪◙♪◙Note: ○It is pos 000086C0 73 69 62 6C 65 20 74 68 61 74 20 6D 75 6C 74 69 70 6C 65 20 76 6F 69 63 65 73 20 63 6F 75 6C 64 sible that multiple voices could 000086E0 20 69 6E 74 65 72 72 75 70 74 20 61 74 20 76 69 72 74 75 61 6C 6C 79 20 74 68 65 20 73 61 6D 65 interrupt at virtually the same 00008700 20 74 69 6D 65 2E 20 49 6E 20 74 68 69 73 20 63 61 73 65 2C 20 74 68 69 73 20 72 65 67 69 73 74 time. In this case, this regist 00008720 65 72 20 77 69 6C 6C 20 62 65 68 61 76 65 20 6C 69 6B 65 20 61 20 66 69 66 6F 2E 20 57 68 65 6E er will behave like a fifo. When 00008740 20 69 6E 20 79 6F 75 72 20 49 52 51 20 68 61 6E 64 6C 65 72 2C 20 6B 65 65 70 20 72 65 61 64 69 in your IRQ handler, keep readi 00008760 6E 67 20 28 61 6E 64 20 73 65 72 76 69 63 69 6E 67 29 20 74 68 69 73 20 72 65 67 69 73 74 65 72 ng (and servicing) this register 00008780 20 75 6E 74 69 6C 20 79 6F 75 20 64 6F 20 61 20 72 65 61 64 20 77 69 74 68 20 62 6F 74 68 20 49 until you do a read with both I 000087A0 52 51 20 62 69 74 73 20 73 65 74 20 74 6F 20 61 20 31 2E 20 54 68 69 73 20 6D 65 61 6E 73 20 74 RQ bits set to a 1. This means t 000087C0 68 65 72 65 20 61 72 65 20 6E 6F 20 76 6F 69 63 65 20 49 52 51 73 20 6C 65 66 74 20 74 6F 20 64 here are no voice IRQs left to d 000087E0 65 61 6C 20 77 69 74 68 2E 0D 0A 0D 0A 4E 6F 74 65 3A 20 09 53 69 6E 63 65 20 69 74 20 69 73 20 eal with.♪◙♪◙Note: ○Since it is 00008800 70 6F 73 73 69 62 6C 65 20 74 6F 20 67 65 74 20 41 4E 4F 54 48 45 52 20 49 52 51 20 66 72 6F 6D possible to get ANOTHER IRQ from 00008820 20 74 68 65 20 73 61 6D 65 20 76 6F 69 63 65 20 66 6F 72 20 74 68 65 20 53 41 4D 45 20 72 65 61 the same voice for the SAME rea 00008840 73 6F 6E 2C 20 79 6F 75 20 6D 75 73 74 20 69 67 6E 6F 72 65 20 61 6E 79 20 73 75 62 73 65 71 75 son, you must ignore any subsequ 00008860 65 6E 74 20 49 52 51 20 66 72 6F 6D 20 74 68 61 74 20 76 6F 69 63 65 20 77 68 69 6C 65 20 69 6E ent IRQ from that voice while in 00008880 20 74 68 65 20 49 52 51 20 68 61 6E 64 6C 65 72 2E 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 77 the IRQ handler. For example, w 000088A0 68 65 6E 20 61 20 76 6F 69 63 65 20 68 69 74 73 20 69 74 73 20 65 6E 64 20 70 6F 73 69 74 69 6F hen a voice hits its end positio 000088C0 6E 20 61 6E 64 20 67 65 6E 65 72 61 74 65 73 20 61 6E 20 49 52 51 20 62 61 63 6B 20 74 6F 20 79 n and generates an IRQ back to y 000088E0 6F 75 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 2C 20 69 74 20 77 69 6C 6C 20 63 6F 6E 74 69 6E 75 our application, it will continu 00008900 65 20 74 6F 20 67 65 6E 65 72 61 74 65 20 49 52 51 27 73 20 75 6E 74 69 6C 20 65 69 74 68 65 72 e to generate IRQ's until either 00008920 20 74 68 65 20 76 6F 69 63 65 20 69 73 20 73 74 6F 70 70 65 64 2C 20 74 68 65 20 49 52 51 20 65 the voice is stopped, the IRQ e 00008940 6E 61 62 6C 65 20 69 73 20 74 75 72 6E 65 64 20 6F 66 66 2C 20 6F 72 20 74 68 65 20 65 6E 64 20 nable is turned off, or the end 00008960 6C 6F 63 61 74 69 6F 6E 20 69 73 20 6D 6F 76 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 37 20 20 47 location is moved.♪◙♪◙♪◙♪◙2.7 G 00008980 6C 6F 62 61 6C 20 44 61 74 61 20 4C 6F 77 20 2D 20 33 58 34 0D 0A 0D 0A 54 68 69 73 20 72 65 67 lobal Data Low - 3X4♪◙♪◙This reg 000089A0 69 73 74 65 72 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 64 6F 20 65 69 74 68 65 72 20 61 ister can be used to do either a 000089C0 20 31 36 20 62 69 74 20 74 72 61 6E 73 66 65 72 20 66 6F 72 20 6F 6E 65 20 6F 66 20 74 68 65 20 16 bit transfer for one of the 000089E0 31 36 20 62 69 74 20 77 69 64 65 20 47 46 31 20 72 65 67 69 73 74 65 72 73 20 28 53 74 61 72 74 16 bit wide GF1 registers (Start 00008A00 20 61 64 64 72 20 68 69 67 68 20 65 74 63 29 20 77 68 65 6E 20 75 73 69 6E 67 20 61 20 31 36 20 addr high etc) when using a 16 00008A20 62 69 74 20 49 2F 4F 20 69 6E 73 74 72 75 63 74 69 6F 6E 20 6F 72 20 74 68 65 20 6C 6F 77 20 70 bit I/O instruction or the low p 00008A40 61 72 74 20 6F 66 20 61 20 31 36 20 62 69 74 20 77 69 64 65 20 72 65 67 69 73 74 65 72 20 77 68 art of a 16 bit wide register wh 00008A60 65 6E 20 75 73 69 6E 67 20 61 6E 20 38 20 62 69 74 20 49 2F 4F 20 69 6E 73 74 72 75 63 74 69 6F en using an 8 bit I/O instructio 00008A80 6E 2E 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 38 20 20 47 6C 6F 62 61 6C 20 44 61 74 61 20 48 69 67 68 20 n.♪◙♪◙♪◙♪◙2.8 Global Data High 00008AA0 2D 20 33 58 35 0D 0A 0D 0A 54 68 69 73 20 72 65 67 69 73 74 65 72 20 69 73 20 75 73 65 64 20 74 - 3X5♪◙♪◙This register is used t 00008AC0 6F 20 64 6F 20 65 69 74 68 65 72 20 61 6E 20 38 20 62 69 74 20 74 72 61 6E 73 66 65 72 20 66 6F o do either an 8 bit transfer fo 00008AE0 72 20 6F 6E 65 20 6F 66 20 74 68 65 20 47 46 31 20 38 20 62 69 74 20 72 65 67 69 73 74 65 72 73 r one of the GF1 8 bit registers 00008B00 20 6F 72 20 74 6F 20 64 6F 20 74 68 65 20 68 69 67 68 20 70 61 72 74 20 6F 66 20 61 20 31 36 20 or to do the high part of a 16 00008B20 62 69 74 20 77 69 64 65 20 72 65 67 69 73 74 65 72 2E 0D 0A 0C 32 2E 39 20 20 49 52 51 20 53 74 bit wide register.♪◙♀2.9 IRQ St 00008B40 61 74 75 73 20 2D 20 32 58 36 0D 0A 0D 0A 43 41 55 54 49 4F 4E 3A 20 4E 6F 74 65 20 74 68 61 74 atus - 2X6♪◙♪◙CAUTION: Note that 00008B60 20 74 68 69 73 20 69 73 20 61 74 20 32 58 36 20 2A 2A 2A 20 4E 4F 54 20 33 58 36 20 2A 2A 2A 2E this is at 2X6 *** NOT 3X6 ***. 00008B80 0D 0A 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ♪◙♪◙○=========================== 00008BA0 3D 3D 3D 3D 3D 3D 0D 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 20 7C 20 32 ======♪◙○| 7 | 6 | 5 | 4 | 3 | 2 00008BC0 20 7C 20 31 20 7C 20 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | 1 | 0 |♪◙○=================== 00008BE0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C ==============♪◙○ | | | | 00008C00 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 | | | |♪◙○ | | | 00008C20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 4D 49 44 49 20 54 72 61 6E | | | | +---- MIDI Tran 00008C40 73 6D 69 74 20 49 52 51 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 smit IRQ♪◙○ | | | | | 00008C60 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 4D 49 44 49 20 52 65 63 65 69 76 65 20 49 52 51 0D | +-------- MIDI Receive IRQ♪ 00008C80 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D ◙○ | | | | | +------- 00008CA0 2D 2D 2D 2D 2D 20 54 69 6D 65 72 20 31 20 49 52 51 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 ----- Timer 1 IRQ♪◙○ | | | 00008CC0 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 54 69 6D 65 72 20 32 20 | +---------------- Timer 2 00008CE0 49 52 51 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D IRQ♪◙○ | | | +----------- 00008D00 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 --------- Reserved (Set to 0)♪◙○ 00008D20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | | +--------------------- 00008D40 2D 2D 2D 20 57 61 76 65 54 61 62 6C 65 20 49 52 51 20 28 61 6E 79 20 76 6F 69 63 65 29 0D 0A 09 --- WaveTable IRQ (any voice)♪◙○ 00008D60 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | +------------------------- 00008D80 2D 2D 2D 20 56 6F 6C 75 6D 65 20 52 61 6D 70 20 49 52 51 20 28 61 6E 79 20 76 6F 69 63 65 29 0D --- Volume Ramp IRQ (any voice)♪ 00008DA0 0A 09 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ◙○ +--------------------------- 00008DC0 2D 2D 2D 2D 2D 20 44 4D 41 20 54 43 20 49 52 51 20 28 44 52 41 4D 20 6F 72 20 53 61 6D 70 6C 65 ----- DMA TC IRQ (DRAM or Sample 00008DE0 29 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 31 30 20 20 54 69 6D 65 72 20 43 6F 6E 74 72 6F 6C 20 52 65 67 )♪◙♪◙♪◙♪◙2.10 Timer Control Reg 00008E00 69 73 74 65 72 20 2D 20 32 58 38 0D 0A 0D 0A 54 68 69 73 20 72 65 67 69 73 74 65 72 20 6D 61 70 ister - 2X8♪◙♪◙This register map 00008E20 73 20 74 6F 20 74 68 65 20 73 61 6D 65 20 6C 6F 63 61 74 69 6F 6E 20 61 73 20 74 68 65 20 41 44 s to the same location as the AD 00008E40 4C 49 42 20 62 6F 61 72 64 27 73 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 2E 20 57 72 LIB board's control register. Wr 00008E60 69 74 69 6E 67 20 61 20 34 20 68 65 72 65 20 73 65 6C 65 63 74 73 20 74 68 65 20 74 69 6D 65 72 iting a 4 here selects the timer 00008E80 20 73 74 75 66 66 2E 20 42 69 74 20 36 20 77 69 6C 6C 20 62 65 20 73 65 74 20 69 66 20 74 69 6D stuff. Bit 6 will be set if tim 00008EA0 65 72 20 23 31 20 68 61 73 20 65 78 70 69 72 65 64 2E 20 42 69 74 20 35 20 77 69 6C 6C 20 62 65 er #1 has expired. Bit 5 will be 00008EC0 20 73 65 74 20 69 74 20 74 69 6D 65 72 20 23 32 20 68 61 73 20 65 78 70 69 72 65 64 2E 0D 0A 0D set it timer #2 has expired.♪◙♪ 00008EE0 0A 0D 0A 0D 0A 32 2E 31 31 20 20 54 69 6D 65 72 20 44 61 74 61 20 52 65 67 69 73 74 65 72 20 2D ◙♪◙♪◙2.11 Timer Data Register - 00008F00 20 32 58 39 0D 0A 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 2X9♪◙♪◙○======================= 00008F20 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 ==========♪◙○| 7 | 6 | 5 | 4 | 3 00008F40 20 7C 20 32 20 7C 20 31 20 7C 20 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | 2 | 1 | 0 |♪◙○=============== 00008F60 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C ==================♪◙○ | | | 00008F80 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 20 7C 20 20 20 7C 20 20 | | | | |♪◙○ | | 00008FA0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 54 69 6D 65 72 | | | | | +---- Timer 00008FC0 20 31 20 53 74 61 72 74 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 1 Start♪◙○ | | | | | 00008FE0 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 54 69 6D 65 72 20 32 20 53 74 61 72 74 0D 0A 09 20 | +-------- Timer 2 Start♪◙○ 00009000 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | | | | | +---------- 00009020 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 20 20 7C 20 20 20 7C -- Reserved (Set to 0)♪◙○ | | 00009040 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 | | +---------------- Res 00009060 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 erved (Set to 0)♪◙○ | | | 00009080 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 +-------------------- Reserved 000090A0 28 53 65 74 20 74 6F 20 30 29 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D (Set to 0)♪◙○ | | +-------- 000090C0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4D 61 73 6B 20 54 69 6D 65 72 20 32 0D 0A 09 ---------------- Mask Timer 2♪◙○ 000090E0 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | +------------------------- 00009100 2D 2D 2D 20 4D 61 73 6B 20 54 69 6D 65 72 20 31 0D 0A 09 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D --- Mask Timer 1♪◙○ +---------- 00009120 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 74 20 54 69 6D ---------------------- Reset Tim 00009140 65 72 20 49 52 51 0D 0A 0D 0A 09 42 69 74 20 30 20 2D 20 53 74 61 72 74 20 75 70 20 74 69 6D 65 er IRQ♪◙♪◙○Bit 0 - Start up time 00009160 72 20 23 31 0D 0A 09 42 69 74 20 31 20 2D 20 53 74 61 72 74 20 75 70 20 74 69 6D 65 72 20 23 32 r #1♪◙○Bit 1 - Start up timer #2 00009180 0D 0A 09 42 69 74 20 35 20 2D 20 4D 61 73 6B 20 6F 66 66 20 74 69 6D 65 72 20 32 0D 0A 09 42 69 ♪◙○Bit 5 - Mask off timer 2♪◙○Bi 000091A0 74 20 36 20 2D 20 4D 61 73 6B 20 6F 66 66 20 74 69 6D 65 72 20 31 0D 0A 09 42 69 74 20 37 20 2D t 6 - Mask off timer 1♪◙○Bit 7 - 000091C0 20 43 6C 65 61 72 20 54 69 6D 65 72 20 49 52 51 0D 0A 0D 0A 0D 0A 32 2E 31 32 20 20 44 52 41 4D Clear Timer IRQ♪◙♪◙♪◙2.12 DRAM 000091E0 20 49 2F 4F 20 2D 20 33 58 37 0D 0A 0D 0A 54 68 69 73 20 72 65 67 69 73 74 65 72 20 69 73 20 75 I/O - 3X7♪◙♪◙This register is u 00009200 73 65 64 20 74 6F 20 72 65 61 64 20 6F 72 20 77 72 69 74 65 20 64 61 74 61 20 61 74 20 74 68 65 sed to read or write data at the 00009220 20 6C 6F 63 61 74 69 6F 6E 20 70 6F 69 6E 74 65 64 20 61 74 20 62 79 20 72 65 67 69 73 74 65 72 location pointed at by register 00009240 73 20 34 33 20 61 6E 64 20 34 34 2E 20 54 68 69 73 20 69 73 20 75 73 65 64 20 74 6F 20 70 65 65 s 43 and 44. This is used to pee 00009260 6B 20 61 6E 64 20 70 6F 6B 65 20 64 69 72 65 63 74 6C 79 20 74 6F 20 44 52 41 4D 2E 0D 0A 0C 32 k and poke directly to DRAM.♪◙♀2 00009280 2E 31 33 20 20 4D 69 78 20 43 6F 6E 74 72 6F 6C 20 52 65 67 69 73 74 65 72 20 2D 20 32 58 30 0D .13 Mix Control Register - 2X0♪ 000092A0 0A 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ◙♪◙○============================ 000092C0 3D 3D 3D 3D 3D 0D 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 20 7C 20 32 20 =====♪◙○| 7 | 6 | 5 | 4 | 3 | 2 000092E0 7C 20 31 20 7C 20 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | 1 | 0 |♪◙○==================== 00009300 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 =============♪◙○ | | | | 00009320 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 | | | |♪◙○ | | | 00009340 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 30 3D 45 6E 61 62 6C 65 20 4C | | | | +---- 0=Enable L 00009360 69 6E 65 20 49 4E 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C ine IN♪◙○ | | | | | | 00009380 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 30 3D 45 6E 61 62 6C 65 20 4C 69 6E 65 20 4F 55 54 0D 0A +-------- 0=Enable Line OUT♪◙ 000093A0 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D ○ | | | | | +-------- 000093C0 2D 2D 2D 2D 20 31 3D 45 6E 61 62 6C 65 20 4D 49 43 20 49 4E 0D 0A 09 20 20 7C 20 20 20 7C 20 20 ---- 1=Enable MIC IN♪◙○ | | 000093E0 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 45 6E 61 62 6C | | +---------------- Enabl 00009400 65 20 6C 61 74 63 68 65 73 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D e latches♪◙○ | | | +----- 00009420 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 43 6F 6D 62 69 6E 65 20 63 68 61 6E 31 20 49 52 --------------- Combine chan1 IR 00009440 51 20 77 69 74 68 20 43 68 61 6E 32 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D Q with Chan2♪◙○ | | +------ 00009460 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 45 6E 61 62 6C 65 20 4D 49 44 49 20 6C ------------------ Enable MIDI l 00009480 6F 6F 70 62 61 63 6B 20 54 78 44 20 74 6F 20 52 78 44 0D 0A 09 20 20 7C 20 20 20 2B 2D 2D 2D 2D oopback TxD to RxD♪◙○ | +---- 000094A0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 43 6F 6E 74 72 6F 6C ------------------------ Control 000094C0 20 52 65 67 20 53 65 6C 65 63 74 0D 0A 09 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D Reg Select♪◙○ +--------------- 000094E0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 ----------------- Reserved (Set 00009500 74 6F 20 30 29 0D 0A 0D 0A 42 69 74 20 30 20 2D 09 45 6E 61 62 6C 65 20 55 6C 74 72 61 53 6F 75 to 0)♪◙♪◙Bit 0 -○Enable UltraSou 00009520 6E 64 20 6C 69 6E 65 20 49 6E 70 75 74 0D 0A 42 69 74 20 31 20 2D 09 45 6E 61 62 6C 65 20 55 6C nd line Input♪◙Bit 1 -○Enable Ul 00009540 74 72 61 53 6F 75 6E 64 20 4C 69 6E 65 20 6F 75 74 70 75 74 0D 0A 42 69 74 20 32 20 2D 09 45 6E traSound Line output♪◙Bit 2 -○En 00009560 61 62 6C 65 20 53 74 65 72 65 6F 20 4D 69 63 20 49 6E 70 75 74 0D 0A 42 69 74 20 33 20 2D 09 45 able Stereo Mic Input♪◙Bit 3 -○E 00009580 6E 61 62 6C 65 20 6C 61 74 63 68 65 73 2E 54 68 69 73 20 70 72 6F 76 69 64 65 73 20 70 6F 77 65 nable latches.This provides powe 000095A0 72 20 74 6F 20 74 68 65 20 44 4D 41 2F 49 52 51 20 6C 61 74 63 68 65 73 2E 20 4F 6E 63 65 20 74 r to the DMA/IRQ latches. Once t 000095C0 68 65 73 65 20 61 72 65 20 65 6E 61 62 6C 65 64 2C 20 4E 45 56 45 52 20 64 69 73 61 62 6C 65 20 hese are enabled, NEVER disable 000095E0 74 68 65 6D 2E 20 20 44 69 73 61 62 6C 69 6E 67 20 74 68 65 6D 20 77 69 6C 6C 20 63 61 75 73 65 them. Disabling them will cause 00009600 20 72 61 6E 64 6F 6D 20 49 52 51 27 73 20 69 6E 20 74 68 65 20 50 43 20 73 69 6E 63 65 20 74 68 random IRQ's in the PC since th 00009620 65 20 44 4D 41 20 61 6E 64 20 49 52 51 20 6C 69 6E 65 73 20 61 72 65 20 6E 6F 74 20 62 65 69 6E e DMA and IRQ lines are not bein 00009640 67 20 64 72 69 76 65 6E 20 61 6E 79 20 6D 6F 72 65 2E 0D 0A 42 69 74 20 34 20 2D 09 43 6F 6D 62 g driven any more.♪◙Bit 4 -○Comb 00009660 69 6E 65 20 43 68 61 6E 6E 65 6C 20 31 20 28 47 46 31 29 20 49 52 51 27 73 20 77 69 74 68 20 43 ine Channel 1 (GF1) IRQ's with C 00009680 68 61 6E 6E 65 6C 20 32 20 28 4D 49 44 49 29 0D 0A 42 69 74 20 35 20 2D 09 45 6E 61 62 6C 65 20 hannel 2 (MIDI)♪◙Bit 5 -○Enable 000096A0 4D 49 44 49 20 6C 6F 6F 70 62 61 63 6B 2E 20 41 6E 79 20 64 61 74 61 20 73 65 6E 74 20 6F 75 74 MIDI loopback. Any data sent out 000096C0 20 54 72 61 6E 73 6D 69 74 20 70 6F 72 74 20 77 69 6C 6C 20 62 65 20 6C 6F 6F 70 65 64 20 62 61 Transmit port will be looped ba 000096E0 63 6B 20 69 6E 74 6F 20 74 68 65 20 69 6E 70 75 74 20 70 6F 72 74 2E 0D 0A 42 69 74 20 36 20 2D ck into the input port.♪◙Bit 6 - 00009700 09 43 6F 6E 74 72 6F 6C 20 52 65 67 69 73 74 65 72 20 53 65 6C 65 63 74 2E 20 57 68 65 6E 20 74 ○Control Register Select. When t 00009720 68 69 73 20 69 73 20 73 65 74 20 74 6F 20 61 20 31 2C 20 74 68 65 20 6E 65 78 74 20 49 4F 20 77 his is set to a 1, the next IO w 00009740 72 69 74 65 20 74 6F 20 32 58 42 20 77 69 6C 6C 20 62 65 20 74 6F 20 74 68 65 20 49 52 51 20 63 rite to 2XB will be to the IRQ c 00009760 6F 6E 74 72 6F 6C 20 6C 61 74 63 68 65 73 2E 20 57 68 65 6E 20 74 68 69 73 20 69 73 20 73 65 74 ontrol latches. When this is set 00009780 20 74 6F 20 61 20 30 2C 20 74 68 65 20 6E 65 78 74 20 49 4F 20 77 72 69 74 65 20 74 6F 20 32 58 to a 0, the next IO write to 2X 000097A0 42 20 77 69 6C 6C 20 62 65 20 74 6F 20 74 68 65 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 6C 61 74 B will be to the DMA channel lat 000097C0 63 68 65 73 2E 20 54 68 65 20 77 72 69 74 65 20 74 6F 20 32 58 42 20 66 6F 72 20 65 69 74 68 65 ches. The write to 2XB for eithe 000097E0 72 20 6F 66 20 74 68 65 73 65 20 4D 55 53 54 20 6F 63 63 75 72 20 61 73 20 74 68 65 20 4E 45 58 r of these MUST occur as the NEX 00009800 54 20 49 4F 57 20 6F 72 20 65 6C 73 65 20 74 68 65 20 77 72 69 74 65 20 74 6F 20 32 58 42 20 77 T IOW or else the write to 2XB w 00009820 69 6C 6C 20 62 65 20 6C 6F 63 6B 65 64 20 6F 75 74 20 61 6E 64 20 6E 6F 74 20 6F 63 63 75 72 2E ill be locked out and not occur. 00009840 20 54 68 69 73 20 69 73 20 74 6F 20 70 72 65 76 65 6E 74 20 61 6E 20 61 70 70 6C 69 63 61 74 69 This is to prevent an applicati 00009860 6F 6E 20 74 68 61 74 20 69 73 20 70 72 6F 62 69 6E 67 20 66 6F 72 20 63 61 72 64 73 20 74 6F 20 on that is probing for cards to 00009880 61 63 63 69 64 65 6E 74 61 6C 79 20 63 6F 72 72 75 70 74 20 74 68 65 20 6C 61 74 63 68 65 73 2E accidentaly corrupt the latches. 000098A0 0D 0A 0D 0A 0D 0A 0D 0A 32 2E 31 34 20 20 49 52 51 20 43 6F 6E 74 72 6F 6C 20 52 65 67 69 73 74 ♪◙♪◙♪◙♪◙2.14 IRQ Control Regist 000098C0 65 72 20 2D 20 32 58 42 0D 0A 0D 0A 20 20 20 20 20 49 52 51 20 20 63 6F 6E 74 72 6F 6C 20 72 65 er - 2XB♪◙♪◙ IRQ control re 000098E0 67 69 73 74 65 72 20 20 20 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 57 20 20 20 20 20 20 gister I/O W 00009900 20 20 20 32 58 42 0D 0A 20 20 20 20 20 28 32 58 30 2D 20 62 69 74 20 36 20 3D 20 31 29 0D 0A 0D 2XB♪◙ (2X0- bit 6 = 1)♪◙♪ 00009920 0A 20 20 20 20 20 42 69 74 73 20 32 2D 30 20 43 68 61 6E 6E 65 6C 20 31 20 28 47 46 31 29 20 49 ◙ Bits 2-0 Channel 1 (GF1) I 00009940 52 51 20 53 65 6C 65 63 74 6F 72 0D 0A 20 20 20 20 20 20 20 20 20 30 3D 4E 6F 20 49 6E 74 65 72 RQ Selector♪◙ 0=No Inter 00009960 72 75 70 74 0D 0A 20 20 20 20 20 20 20 20 20 31 3D 49 52 51 32 0D 0A 20 20 20 20 20 20 20 20 20 rupt♪◙ 1=IRQ2♪◙ 00009980 32 3D 49 52 51 35 0D 0A 20 20 20 20 20 20 20 20 20 33 3D 49 52 51 33 0D 0A 20 20 20 20 20 20 20 2=IRQ5♪◙ 3=IRQ3♪◙ 000099A0 20 20 34 3D 49 52 51 37 0D 0A 20 20 20 20 20 20 20 20 20 35 3D 49 52 51 31 31 0D 0A 20 20 20 20 4=IRQ7♪◙ 5=IRQ11♪◙ 000099C0 20 20 20 20 20 36 3D 49 52 51 31 32 0D 0A 20 20 20 20 20 20 20 20 20 37 3D 49 52 51 31 35 0D 0A 6=IRQ12♪◙ 7=IRQ15♪◙ 000099E0 0D 0A 0C 20 20 20 20 20 42 69 74 73 20 35 2D 33 20 43 68 61 6E 6E 65 6C 20 32 20 28 4D 49 44 49 ♪◙♀ Bits 5-3 Channel 2 (MIDI 00009A00 29 20 49 52 51 20 73 65 6C 65 63 74 6F 72 0D 0A 20 20 20 20 20 20 20 20 20 30 3D 4E 6F 20 49 6E ) IRQ selector♪◙ 0=No In 00009A20 74 65 72 72 75 70 74 0D 0A 20 20 20 20 20 20 20 20 20 31 3D 49 52 51 32 0D 0A 20 20 20 20 20 20 terrupt♪◙ 1=IRQ2♪◙ 00009A40 20 20 20 32 3D 49 52 51 35 0D 0A 20 20 20 20 20 20 20 20 20 33 3D 49 52 51 33 0D 0A 20 20 20 20 2=IRQ5♪◙ 3=IRQ3♪◙ 00009A60 20 20 20 20 20 34 3D 49 52 51 37 0D 0A 20 20 20 20 20 20 20 20 20 35 3D 49 52 51 31 31 0D 0A 20 4=IRQ7♪◙ 5=IRQ11♪◙ 00009A80 20 20 20 20 20 20 20 20 36 3D 49 52 51 31 32 0D 0A 20 20 20 20 20 20 20 20 20 37 3D 49 52 51 31 6=IRQ12♪◙ 7=IRQ1 00009AA0 35 0D 0A 0D 0A 20 20 20 20 42 69 74 20 36 20 31 20 3D 20 43 6F 6D 62 69 6E 65 20 42 6F 74 68 20 5♪◙♪◙ Bit 6 1 = Combine Both 00009AC0 49 52 51 53 20 75 73 69 6E 67 20 43 68 61 6E 6E 65 6C 20 31 27 73 20 49 52 51 0D 0A 20 20 20 20 IRQS using Channel 1's IRQ♪◙ 00009AE0 42 69 74 20 37 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 0D 0A 4E 6F 74 Bit 7 Reserved (Set to 0)♪◙♪◙Not 00009B00 65 3A 09 49 66 20 74 68 65 20 63 68 61 6E 6E 65 6C 73 20 61 72 65 20 73 68 61 72 69 6E 67 20 61 e:○If the channels are sharing a 00009B20 6E 20 49 52 51 2C 20 63 68 61 6E 6E 65 6C 20 32 27 73 20 49 52 51 20 6D 75 73 74 20 62 65 20 73 n IRQ, channel 2's IRQ must be s 00009B40 65 74 20 74 6F 20 30 20 61 6E 64 20 74 75 72 6E 20 6F 6E 20 62 69 74 20 36 2E 20 41 20 62 75 73 et to 0 and turn on bit 6. A bus 00009B60 20 63 6F 6E 66 6C 69 63 74 20 77 69 6C 6C 20 6F 63 63 75 72 20 69 66 20 62 6F 74 68 20 6C 61 74 conflict will occur if both lat 00009B80 63 68 65 73 20 61 72 65 20 70 72 6F 67 72 61 6D 6D 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6D ches are programmed with the sam 00009BA0 65 20 49 52 51 20 23 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 44 4D 41 20 63 6F 6E 74 72 6F 6C 20 72 e IRQ #.♪◙♪◙♪◙ DMA control r 00009BC0 65 67 69 73 74 65 72 20 20 20 20 20 20 20 20 20 20 49 2F 4F 20 20 20 20 20 20 20 57 20 20 20 20 egister I/O W 00009BE0 20 20 20 20 20 32 58 42 0D 0A 20 20 20 20 20 28 32 58 30 2D 20 62 69 74 20 36 20 3D 20 30 29 0D 2XB♪◙ (2X0- bit 6 = 0)♪ 00009C00 0A 0D 0A 20 20 20 20 20 42 69 74 73 20 32 2D 30 20 44 4D 41 20 53 65 6C 65 63 74 20 52 65 67 69 ◙♪◙ Bits 2-0 DMA Select Regi 00009C20 73 74 65 72 20 31 0D 0A 20 20 20 20 20 20 20 20 30 3D 4E 4F 20 44 4D 41 0D 0A 20 20 20 20 20 20 ster 1♪◙ 0=NO DMA♪◙ 00009C40 20 20 31 3D 44 4D 41 31 0D 0A 20 20 20 20 20 20 20 20 32 3D 44 4D 41 33 0D 0A 20 20 20 20 20 20 1=DMA1♪◙ 2=DMA3♪◙ 00009C60 20 20 33 3D 44 4D 41 35 0D 0A 20 20 20 20 20 20 20 20 34 3D 44 4D 41 36 0D 0A 20 20 20 20 20 20 3=DMA5♪◙ 4=DMA6♪◙ 00009C80 20 20 35 3D 44 4D 41 37 0D 0A 0D 0A 20 20 20 20 20 42 69 74 73 20 35 2D 33 20 44 4D 41 20 53 65 5=DMA7♪◙♪◙ Bits 5-3 DMA Se 00009CA0 6C 65 63 74 20 52 65 67 69 73 74 65 72 20 32 0D 0A 20 20 20 20 20 20 20 20 30 3D 4E 4F 20 44 4D lect Register 2♪◙ 0=NO DM 00009CC0 41 0D 0A 20 20 20 20 20 20 20 20 31 3D 44 4D 41 31 0D 0A 20 20 20 20 20 20 20 20 32 3D 44 4D 41 A♪◙ 1=DMA1♪◙ 2=DMA 00009CE0 33 0D 0A 20 20 20 20 20 20 20 20 33 3D 44 4D 41 35 0D 0A 20 20 20 20 20 20 20 20 34 3D 44 4D 41 3♪◙ 3=DMA5♪◙ 4=DMA 00009D00 36 0D 0A 20 20 20 20 20 20 20 20 35 3D 44 4D 41 37 0D 0A 0D 0A 20 20 20 20 42 69 74 20 36 20 2D 6♪◙ 5=DMA7♪◙♪◙ Bit 6 - 00009D20 20 43 6F 6D 62 69 6E 65 20 42 6F 74 68 20 6F 6E 20 74 68 65 20 73 61 6D 65 20 44 4D 41 20 63 68 Combine Both on the same DMA ch 00009D40 61 6E 6E 65 6C 2E 0D 0A 20 20 20 20 42 69 74 20 37 20 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 annel.♪◙ Bit 7 - Reserved (Se 00009D60 74 20 74 6F 20 30 29 2E 0D 0A 0D 0A 4E 6F 74 65 3A 09 49 66 20 74 68 65 20 63 68 61 6E 6E 65 6C t to 0).♪◙♪◙Note:○If the channel 00009D80 73 20 61 72 65 20 73 68 61 72 69 6E 67 20 61 6E 20 44 4D 41 2C 20 63 68 61 6E 6E 65 6C 20 32 27 s are sharing an DMA, channel 2' 00009DA0 73 20 44 4D 41 20 6D 75 73 74 20 62 65 20 73 65 74 20 74 6F 20 30 20 61 6E 64 20 74 75 72 6E 20 s DMA must be set to 0 and turn 00009DC0 6F 6E 20 62 69 74 20 36 2E 20 41 20 62 75 73 20 63 6F 6E 66 6C 69 63 74 20 77 69 6C 6C 20 6F 63 on bit 6. A bus conflict will oc 00009DE0 63 75 72 20 69 66 20 62 6F 74 68 20 6C 61 74 63 68 65 73 20 61 72 65 20 70 72 6F 67 72 61 6D 6D cur if both latches are programm 00009E00 65 64 20 77 69 74 68 20 74 68 65 20 73 61 6D 65 20 44 4D 41 20 23 2E 0D 0A 0D 0A 43 20 70 72 6F ed with the same DMA #.♪◙♪◙C pro 00009E20 67 72 61 6D 6D 65 72 73 20 63 61 6E 20 72 65 66 65 72 20 74 6F 20 74 68 65 20 55 6C 74 72 61 53 grammers can refer to the UltraS 00009E40 65 74 49 6E 74 65 72 66 61 63 65 20 72 6F 75 74 69 6E 65 20 69 6E 20 49 4E 49 54 2E 43 20 6F 66 etInterface routine in INIT.C of 00009E60 20 74 68 65 20 6C 6F 77 6C 65 76 65 6C 20 73 6F 75 72 63 65 20 63 6F 64 65 20 66 6F 72 20 74 68 the lowlevel source code for th 00009E80 65 20 70 72 6F 70 65 72 20 73 65 71 75 65 6E 63 65 20 66 6F 72 20 70 72 6F 67 72 61 6D 6D 69 6E e proper sequence for programmin 00009EA0 67 20 74 68 65 73 65 20 6C 61 74 63 68 65 73 2E 20 49 66 20 74 68 65 20 6F 72 64 65 72 20 69 73 g these latches. If the order is 00009EC0 20 6E 6F 74 20 72 69 67 68 74 2C 20 75 6E 70 72 65 64 69 63 74 61 62 6C 65 20 74 68 69 6E 67 73 not right, unpredictable things 00009EE0 20 6D 61 79 20 68 61 70 70 65 6E 2E 0D 0A 0D 0A 43 68 61 6E 67 69 6E 67 20 74 68 65 20 49 52 51 may happen.♪◙♪◙Changing the IRQ 00009F00 20 73 65 74 74 69 6E 67 73 20 77 69 6C 6C 20 75 73 75 61 6C 6C 79 20 63 61 75 73 65 20 61 6E 20 settings will usually cause an 00009F20 49 52 51 20 6F 6E 20 74 68 65 20 4F 4C 44 20 49 52 51 20 62 65 63 61 75 73 65 20 69 74 20 69 73 IRQ on the OLD IRQ because it is 00009F40 20 6E 6F 20 6C 6F 6E 67 65 72 20 62 65 69 6E 67 20 64 72 69 76 65 6E 20 6C 6F 77 20 62 79 20 74 no longer being driven low by t 00009F60 68 65 20 6C 61 74 63 68 65 73 20 61 6E 64 20 69 74 20 77 69 6C 6C 20 74 65 6E 64 20 74 6F 20 66 he latches and it will tend to f 00009F80 6C 6F 61 74 20 75 70 2E 20 54 68 61 74 20 6C 6F 77 20 74 6F 20 68 69 67 68 20 74 72 61 6E 73 69 loat up. That low to high transi 00009FA0 74 69 6F 6E 20 63 61 75 73 65 73 20 61 6E 20 49 52 51 20 6F 6E 20 74 68 65 20 50 43 2E 20 4E 6F tion causes an IRQ on the PC. No 00009FC0 72 6D 61 6C 6C 79 2C 20 74 68 69 73 20 69 73 20 6E 6F 74 20 61 20 70 72 6F 62 6C 65 6D 2C 20 62 rmally, this is not a problem, b 00009FE0 75 74 20 69 74 20 69 73 20 73 6F 6D 65 74 68 69 6E 67 20 74 6F 20 62 65 20 61 77 61 72 65 20 6F ut it is something to be aware o 0000A000 66 2E 0D 0A 0C 32 2E 31 35 20 52 65 67 69 73 74 65 72 20 43 6F 6E 74 72 6F 6C 20 2D 20 32 58 46 f.♪◙♀2.15 Register Control - 2XF 0000A020 0D 0A 0D 0A 54 68 69 73 20 72 65 67 69 73 74 65 72 20 69 73 20 6F 6E 6C 79 20 76 61 6C 69 64 20 ♪◙♪◙This register is only valid 0000A040 66 6F 72 20 55 6C 74 72 61 53 6F 75 6E 64 20 62 6F 61 72 64 73 20 74 68 61 74 20 61 72 65 20 61 for UltraSound boards that are a 0000A060 74 20 6F 72 20 61 62 6F 76 65 20 72 65 76 69 73 69 6F 6E 20 33 2E 34 2E 20 49 74 20 69 73 20 6E t or above revision 3.4. It is n 0000A080 6F 74 20 76 61 6C 69 64 20 66 6F 72 20 62 6F 61 72 64 73 20 77 68 69 63 68 20 68 61 76 65 20 61 ot valid for boards which have a 0000A0A0 20 70 72 69 6F 72 20 72 65 76 69 73 69 6F 6E 20 6E 75 6D 62 65 72 2E 0D 0A 0D 0A 4F 6E 20 33 2E prior revision number.♪◙♪◙On 3. 0000A0C0 34 20 61 6E 64 20 61 62 6F 76 65 20 62 6F 61 72 64 73 2C 20 74 68 65 72 65 20 69 73 20 61 20 62 4 and above boards, there is a b 0000A0E0 61 6E 6B 20 6F 66 20 36 20 72 65 67 69 73 74 65 72 73 20 74 68 61 74 20 65 78 69 73 74 20 61 74 ank of 6 registers that exist at 0000A100 20 6C 6F 63 61 74 69 6F 6E 20 32 58 42 2E 20 52 65 67 69 73 74 65 72 20 32 58 46 20 69 73 20 75 location 2XB. Register 2XF is u 0000A120 73 65 64 20 74 6F 20 73 65 6C 65 63 74 20 77 68 69 63 68 20 6F 6E 65 20 69 73 20 62 65 69 6E 67 sed to select which one is being 0000A140 20 74 61 6C 6B 65 64 20 74 6F 2E 20 0D 0A 0D 0A 52 65 67 69 73 74 65 72 20 23 09 55 73 65 0D 0A talked to. ♪◙♪◙Register #○Use♪◙ 0000A160 0D 0A 09 30 09 09 53 61 6D 65 20 61 73 20 70 72 65 2D 33 2E 34 20 62 6F 61 72 64 73 0D 0A 09 31 ♪◙○0○○Same as pre-3.4 boards♪◙○1 0000A180 2D 34 09 09 55 6E 75 73 65 64 20 2D 20 52 65 73 65 72 76 65 64 0D 0A 09 35 09 09 57 72 69 74 65 -4○○Unused - Reserved♪◙○5○○Write 0000A1A0 20 61 20 30 20 74 6F 20 63 6C 65 61 72 20 49 52 51 73 20 6F 6E 20 70 6F 77 65 72 2D 75 70 0D 0A a 0 to clear IRQs on power-up♪◙ 0000A1C0 09 36 09 09 27 4A 75 6D 70 65 72 20 72 65 67 69 73 74 65 72 27 0D 0A 0D 0A 0D 0A 20 20 20 4A 75 ○6○○'Jumper register'♪◙♪◙♪◙ Ju 0000A1E0 6D 70 65 72 20 72 65 67 69 73 74 65 72 20 64 65 66 69 6E 69 74 69 6F 6E 3A 0D 0A 0D 0A 09 3D 3D mper register definition:♪◙♪◙○== 0000A200 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D ===============================♪ 0000A220 0A 09 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 20 7C 20 32 20 7C 20 31 20 7C 20 ◙○| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0000A240 30 20 7C 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0 |♪◙○========================== 0000A260 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 =======♪◙○ | | | | | 0000A280 7C 20 20 20 7C 20 20 20 7C 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 | | |♪◙○ | | | | | 0000A2A0 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F | | +---- Reserved (Set to 0000A2C0 20 30 29 20 20 20 20 20 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 0) ♪◙○ | | | | | 0000A2E0 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 31 3D 45 6E 61 62 6C 65 20 4D 49 44 49 20 70 6F 72 | +-------- 1=Enable MIDI por 0000A300 74 20 61 64 64 72 20 64 65 63 6F 64 65 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 t addr decode♪◙○ | | | | 0000A320 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 31 3D 45 6E 61 62 6C 65 20 6A 6F 79 | +------------ 1=Enable joy 0000A340 73 74 69 63 6B 20 70 6F 72 74 20 64 65 63 6F 64 65 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 7C 20 stick port decode♪◙○ | | | 0000A360 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 | +---------------- Reserved 0000A380 20 28 53 65 74 20 74 6F 20 30 29 20 20 20 20 20 20 20 20 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 (Set to 0) ♪◙○ | | 0000A3A0 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 | +-------------------- Reserv 0000A3C0 65 64 20 28 53 65 74 20 74 6F 20 30 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ed (Set to 0) 0000A3E0 20 20 20 20 0D 0A 09 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ♪◙○ | | +-------------- 0000A400 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 20 20 ---------- Reserved (Set to 0) 0000A420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A 09 20 20 7C 20 20 20 ♪◙○ | 0000A440 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 +---------------------------- Re 0000A460 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 0A served (Set to 0) ♪◙ 0000A480 09 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ○ +---------------------------- 0000A4A0 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 20 28 53 65 74 20 74 6F 20 30 29 0D 0A 0D 0A 0D 0A 0D 0A ---- Reserved (Set to 0)♪◙♪◙♪◙♪◙ 0000A4C0 32 2E 31 36 20 56 6F 6C 75 6D 65 20 72 61 6D 70 69 6E 67 20 64 65 73 63 72 69 70 74 69 6F 6E 0D 2.16 Volume ramping description♪ 0000A4E0 0A 0D 0A 54 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 68 61 73 20 62 75 69 6C 74 2D 69 6E 20 76 ◙♪◙The UltraSound has built-in v 0000A500 6F 6C 75 6D 65 20 72 61 6D 70 69 6E 67 20 74 6F 20 66 61 63 69 6C 69 74 61 74 65 20 74 68 65 20 olume ramping to facilitate the 0000A520 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 61 74 74 61 63 6B 20 64 65 63 implementation of the attack dec 0000A540 61 79 20 73 75 73 74 61 69 6E 20 72 65 6C 65 61 73 65 20 65 6E 76 65 6C 6F 70 65 73 2E 20 20 54 ay sustain release envelopes. T 0000A560 68 69 73 20 72 61 6D 70 69 6E 67 20 75 73 65 73 20 74 68 65 20 73 61 6D 65 20 70 72 69 6E 63 69 his ramping uses the same princi 0000A580 70 6C 65 20 61 73 20 74 68 65 20 76 6F 69 63 65 73 20 66 6F 72 20 75 70 64 61 74 69 6E 67 20 74 ple as the voices for updating t 0000A5A0 68 65 20 76 6F 6C 75 6D 65 20 76 61 6C 75 65 73 2E 20 20 41 20 73 65 63 74 69 6F 6E 20 6F 66 20 he volume values. A section of 0000A5C0 74 68 65 20 65 6E 76 65 6C 6F 70 65 20 63 61 6E 20 62 65 20 70 72 6F 67 72 61 6D 6D 65 64 20 73 the envelope can be programmed s 0000A5E0 75 63 68 20 74 68 61 74 20 74 68 65 20 50 43 20 64 6F 65 73 20 6E 6F 74 20 6E 65 65 64 20 74 6F uch that the PC does not need to 0000A600 20 62 65 20 62 75 72 64 65 6E 65 64 20 77 69 74 68 20 74 68 65 20 74 61 73 6B 20 6F 66 20 63 68 be burdened with the task of ch 0000A620 61 6E 67 69 6E 67 20 65 61 63 68 20 76 6F 6C 75 6D 65 20 61 74 20 73 70 65 63 69 66 69 65 64 20 anging each volume at specified 0000A640 69 6E 74 65 72 76 61 6C 73 2E 20 20 41 74 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 61 74 20 70 intervals. At the end of that p 0000A660 61 72 74 69 63 75 6C 61 72 20 73 65 63 74 69 6F 6E 2C 20 61 6E 20 49 52 51 20 63 61 6E 20 62 65 articular section, an IRQ can be 0000A680 20 67 65 6E 65 72 61 74 65 64 20 73 6F 20 74 68 61 74 20 74 68 65 20 6E 65 78 74 20 73 65 63 74 generated so that the next sect 0000A6A0 69 6F 6E 20 63 61 6E 20 62 65 20 70 72 6F 67 72 61 6D 6D 65 64 20 69 6E 2E 20 20 0D 0A 0D 0A 54 ion can be programmed in. ♪◙♪◙T 0000A6C0 68 69 73 20 63 6F 6E 74 69 6E 75 65 73 20 75 6E 74 69 6C 20 74 68 65 20 65 6E 74 69 72 65 20 65 his continues until the entire e 0000A6E0 6E 76 65 6C 6F 70 65 20 68 61 73 20 62 65 65 6E 20 63 6F 6D 70 6C 65 74 65 64 2E 20 20 54 68 65 nvelope has been completed. The 0000A700 20 73 74 61 72 74 20 61 6E 64 20 65 6E 64 20 70 6F 69 6E 74 73 20 61 73 20 77 65 6C 6C 20 61 73 start and end points as well as 0000A720 20 74 68 65 20 69 6E 63 72 65 6D 65 6E 74 20 72 61 74 65 20 61 72 65 20 66 75 6C 6C 79 20 70 72 the increment rate are fully pr 0000A740 6F 67 72 61 6D 6D 61 62 6C 65 2E 0D 0A 0D 0A 54 68 65 20 68 61 72 64 77 61 72 65 20 76 6F 6C 75 ogrammable.♪◙♪◙The hardware volu 0000A760 6D 65 20 72 65 67 69 73 74 65 72 73 20 61 6E 64 20 62 69 74 20 64 65 66 69 6E 69 74 69 6F 6E 73 me registers and bit definitions 0000A780 20 61 72 65 3A 0D 0A 0D 0A 20 20 20 20 20 20 43 75 72 72 65 6E 74 20 56 6F 6C 75 6D 65 20 28 39 are:♪◙♪◙ Current Volume (9 0000A7A0 2C 38 39 29 20 20 20 20 45 45 45 45 4D 4D 4D 4D 4D 4D 4D 4D 20 20 20 20 28 42 69 74 73 20 31 35 ,89) EEEEMMMMMMMM (Bits 15 0000A7C0 2D 34 29 0D 0A 0D 0A 20 20 20 20 20 20 56 6F 6C 75 6D 65 20 53 74 61 72 74 20 20 20 28 37 2C 38 -4)♪◙♪◙ Volume Start (7,8 0000A7E0 37 29 20 20 20 20 45 45 45 45 4D 4D 4D 4D 20 20 20 20 20 20 20 20 28 42 69 74 73 20 37 2D 30 29 7) EEEEMMMM (Bits 7-0) 0000A800 0D 0A 0D 0A 20 20 20 20 20 20 56 6F 6C 75 6D 65 20 45 6E 64 20 20 20 20 20 28 38 2C 38 38 29 20 ♪◙♪◙ Volume End (8,88) 0000A820 20 20 20 45 45 45 45 4D 4D 4D 4D 20 20 20 20 20 20 20 20 28 42 69 74 73 20 37 2D 30 29 0D 0A 0D EEEEMMMM (Bits 7-0)♪◙♪ 0000A840 0A 20 20 20 20 20 20 56 6F 6C 75 6D 65 20 49 6E 63 72 20 20 20 20 28 36 2C 38 36 29 20 20 20 20 ◙ Volume Incr (6,86) 0000A860 52 52 4D 4D 4D 4D 4D 4D 20 20 20 20 20 20 20 20 28 42 69 74 73 20 37 2D 30 29 0D 0A 0D 0A 4F 6E RRMMMMMM (Bits 7-0)♪◙♪◙On 0000A880 63 65 20 74 68 65 20 63 75 72 72 65 6E 74 20 76 6F 6C 75 6D 65 2C 20 73 74 61 72 74 20 61 6E 64 ce the current volume, start and 0000A8A0 20 65 6E 64 20 76 6F 6C 75 6D 65 73 20 61 72 65 20 70 72 6F 67 72 61 6D 6D 65 64 2C 20 74 68 65 end volumes are programmed, the 0000A8C0 20 6F 6E 6C 79 20 74 68 69 6E 67 20 6C 65 66 74 20 69 73 20 74 6F 20 73 65 74 20 75 70 20 74 68 only thing left is to set up th 0000A8E0 65 20 76 6F 6C 75 6D 65 20 69 6E 63 72 65 6D 65 6E 74 20 72 65 67 69 73 74 65 72 2E 20 20 54 68 e volume increment register. Th 0000A900 69 73 20 72 65 67 69 73 74 65 72 20 64 65 74 65 72 6D 69 6E 65 73 20 68 6F 77 20 66 61 73 74 20 is register determines how fast 0000A920 74 68 65 20 72 61 6D 70 20 74 61 6B 65 73 20 70 6C 61 63 65 20 61 6E 64 20 77 69 74 68 20 77 68 the ramp takes place and with wh 0000A940 61 74 20 67 72 61 6E 75 6C 61 72 69 74 79 2E 20 20 54 68 65 20 66 69 6E 65 72 20 74 68 65 20 67 at granularity. The finer the g 0000A960 72 61 6E 75 6C 61 72 69 74 79 2C 20 74 68 65 20 73 6D 6F 6F 74 68 65 72 20 28 62 75 74 20 73 6C ranularity, the smoother (but sl 0000A980 6F 77 65 72 29 20 74 68 65 20 72 61 6D 70 2E 20 20 54 68 65 20 69 6E 63 72 65 6D 65 6E 74 20 72 ower) the ramp. The increment r 0000A9A0 65 67 69 73 74 65 72 20 68 61 73 20 32 20 66 69 65 6C 64 73 2E 20 20 54 68 65 20 66 69 72 73 74 egister has 2 fields. The first 0000A9C0 20 69 73 20 74 68 65 20 61 6D 6F 75 6E 74 20 61 64 64 65 64 20 74 6F 20 28 6F 72 20 73 75 62 74 is the amount added to (or subt 0000A9E0 72 61 63 74 65 64 20 66 72 6F 6D 29 20 74 68 65 20 63 75 72 72 65 6E 74 20 76 6F 6C 75 6D 65 20 racted from) the current volume 0000AA00 74 6F 20 67 65 74 20 74 6F 20 74 68 65 20 6E 65 78 74 20 6F 6E 65 2E 20 20 54 68 65 73 65 20 61 to get to the next one. These a 0000AA20 72 65 20 74 68 65 20 6C 6F 77 20 36 20 62 69 74 73 20 61 6E 64 20 63 61 6E 20 72 61 6E 67 65 20 re the low 6 bits and can range 0000AA40 66 72 6F 6D 20 31 20 74 6F 20 36 33 2E 20 20 41 20 31 20 69 73 20 61 20 6C 6F 6E 67 2C 20 73 6C from 1 to 63. A 1 is a long, sl 0000AA60 6F 77 20 72 61 6D 70 20 63 6F 6D 70 61 72 65 64 20 74 6F 20 61 20 36 33 2E 20 20 54 68 65 20 75 ow ramp compared to a 63. The u 0000AA80 70 70 65 72 20 32 20 62 69 74 73 20 64 65 74 65 72 6D 69 6E 65 20 68 6F 77 20 6F 66 74 65 6E 20 pper 2 bits determine how often 0000AAA0 74 68 65 20 69 6E 63 72 65 6D 65 6E 74 20 69 73 20 61 70 70 6C 69 65 64 20 74 6F 20 74 68 65 20 the increment is applied to the 0000AAC0 63 75 72 72 65 6E 74 20 76 6F 6C 75 6D 65 2E 20 20 54 68 65 20 72 61 74 65 20 62 69 74 73 20 61 current volume. The rate bits a 0000AAE0 72 65 20 64 65 66 69 6E 65 64 20 61 73 3A 0D 0A 0D 0A 20 52 61 74 65 20 42 69 74 73 20 20 20 20 re defined as:♪◙♪◙ Rate Bits 0000AB00 20 20 20 56 6F 6C 75 6D 65 20 55 70 64 61 74 65 20 52 61 74 65 0D 0A 20 20 20 20 20 30 30 20 20 Volume Update Rate♪◙ 00 0000AB20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 55 52 20 20 20 20 28 46 55 52 20 3D 20 31 2F 28 31 FUR (FUR = 1/(1 0000AB40 2E 36 2A 23 61 63 74 69 76 65 20 76 6F 69 63 65 73 29 29 0D 0A 20 20 20 20 20 30 31 20 20 20 20 .6*#active voices))♪◙ 01 0000AB60 20 20 20 20 20 20 20 20 20 20 20 20 46 55 52 2F 38 0D 0A 20 20 20 20 20 31 30 20 20 20 20 20 20 FUR/8♪◙ 10 0000AB80 20 20 20 20 20 20 20 20 20 20 46 55 52 2F 36 34 0D 0A 20 20 20 20 20 31 31 20 20 20 20 20 20 20 FUR/64♪◙ 11 0000ABA0 20 20 20 20 20 20 20 20 20 46 55 52 2F 35 31 32 0D 0A 0D 0A 45 61 63 68 20 72 61 74 65 20 69 6E FUR/512♪◙♪◙Each rate in 0000ABC0 63 72 65 6D 65 6E 74 20 69 73 20 38 20 74 69 6D 65 73 20 6C 6F 6E 67 65 72 20 74 68 61 6E 20 74 crement is 8 times longer than t 0000ABE0 68 65 20 70 72 65 63 65 64 69 6E 67 20 6F 6E 65 2E 20 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 he preceding one. This means th 0000AC00 61 74 20 74 68 65 20 76 61 6C 75 65 20 74 6F 20 73 74 6F 72 65 20 66 6F 72 20 74 68 65 20 66 61 at the value to store for the fa 0000AC20 73 74 65 73 74 20 70 6F 73 73 69 62 6C 65 20 72 61 6D 70 20 69 73 20 31 46 68 20 28 36 33 29 2C stest possible ramp is 1Fh (63), 0000AC40 20 61 6E 64 20 74 68 65 20 76 61 6C 75 65 20 66 6F 72 20 74 68 65 20 73 6C 6F 77 65 73 74 20 70 and the value for the slowest p 0000AC60 6F 73 73 69 62 6C 65 20 72 61 6D 70 20 69 73 20 31 43 68 20 28 31 39 33 29 2E 20 20 54 68 65 20 ossible ramp is 1Ch (193). The 0000AC80 61 70 70 72 6F 78 69 6D 61 74 65 20 74 69 6D 65 73 20 66 6F 72 20 61 20 66 75 6C 6C 20 73 63 61 approximate times for a full sca 0000ACA0 6C 65 20 76 6F 6C 75 6D 65 20 72 61 6D 70 20 28 30 2D 34 30 39 35 29 20 61 72 65 3A 0D 0A 0D 0A le volume ramp (0-4095) are:♪◙♪◙ 0000ACC0 52 61 74 65 20 20 20 20 56 6F 6C 20 49 6E 63 20 20 20 20 31 34 20 56 6F 69 63 65 73 20 20 20 20 Rate Vol Inc 14 Voices 0000ACE0 20 33 32 20 56 6F 69 63 65 73 0D 0A 2D 2D 2D 2D 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 20 20 20 20 2D 32 Voices♪◙---- ------- - 0000AD00 2D 2D 2D 2D 2D 2D 2D 2D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 20 30 20 20 20 20 20 20 -------- ---------♪◙ 0 0000AD20 20 36 33 20 20 20 20 20 20 20 20 20 31 2E 34 20 6D 73 20 20 20 20 20 20 20 20 33 2E 33 20 6D 73 63 1.4 ms 3.3 ms 0000AD40 20 0D 0A 20 30 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 20 39 31 2E 37 20 6D 73 20 20 20 ♪◙ 0 1 91.7 ms 0000AD60 20 20 20 32 30 39 2E 37 20 6D 73 20 0D 0A 20 31 20 20 20 20 20 20 20 36 33 20 20 20 20 20 20 20 209.7 ms ♪◙ 1 63 0000AD80 20 31 31 2E 35 20 6D 73 20 20 20 20 20 20 20 32 36 2E 32 20 6D 73 20 0D 0A 20 20 31 20 20 20 20 11.5 ms 26.2 ms ♪◙ 1 0000ADA0 20 20 20 20 31 20 20 20 20 20 20 20 37 33 33 2E 38 20 6D 73 20 20 20 20 20 20 20 20 31 2E 37 20 1 733.8 ms 1.7 0000ADC0 73 65 63 0D 0A 20 32 20 20 20 20 20 20 20 36 33 20 20 20 20 20 20 20 20 39 31 2E 38 20 6D 73 20 sec♪◙ 2 63 91.8 ms 0000ADE0 20 20 20 20 20 32 30 39 2E 37 20 6D 73 20 0D 0A 20 20 33 20 20 20 20 20 20 20 20 31 20 20 20 20 209.7 ms ♪◙ 3 1 0000AE00 20 20 20 20 20 35 2E 39 20 73 65 63 20 20 20 20 20 20 31 33 2E 34 20 73 65 63 0D 0A 20 20 33 20 5.9 sec 13.4 sec♪◙ 3 0000AE20 20 20 20 20 20 20 36 33 20 20 20 20 20 20 20 37 33 34 2E 30 20 6D 73 20 20 20 20 20 20 20 20 31 63 734.0 ms 1 0000AE40 2E 37 20 73 65 63 0D 0A 20 20 33 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 20 34 37 2E 30 .7 sec♪◙ 3 1 47.0 0000AE60 20 73 65 63 20 20 20 20 20 31 30 37 2E 33 20 73 65 63 0D 0A 0D 0A 4E 6F 74 65 20 74 68 61 74 20 sec 107.3 sec♪◙♪◙Note that 0000AE80 74 68 65 73 65 20 74 69 6D 65 73 20 61 72 65 20 66 6F 72 20 66 75 6C 6C 20 73 77 65 65 70 20 72 these times are for full sweep r 0000AEA0 61 6D 70 69 6E 67 2E 20 20 53 69 6E 63 65 20 61 20 76 6F 6C 75 6D 65 20 72 61 6D 70 20 75 73 75 amping. Since a volume ramp usu 0000AEC0 61 6C 6C 79 20 67 6F 65 73 20 62 65 74 77 65 65 6E 20 70 6F 69 6E 74 73 20 69 6E 20 62 65 74 77 ally goes between points in betw 0000AEE0 65 65 6E 20 74 68 65 20 6C 69 6D 69 74 73 2C 20 74 68 65 20 61 63 74 75 61 6C 20 72 61 6D 70 20 een the limits, the actual ramp 0000AF00 74 69 6D 65 73 20 77 69 6C 6C 20 62 65 20 6D 75 63 68 20 73 6D 61 6C 6C 65 72 2E 0D 0A 0D 0A 41 times will be much smaller.♪◙♪◙A 0000AF20 6C 6C 6F 77 69 6E 67 20 74 6F 20 6C 65 74 20 74 68 65 20 76 6F 6C 75 6D 65 20 72 61 6D 70 73 20 llowing to let the volume ramps 0000AF40 74 6F 20 67 6F 20 74 6F 20 74 68 65 20 65 78 74 72 65 6D 65 73 20 63 61 6E 20 63 61 75 73 65 20 to go to the extremes can cause 0000AF60 61 20 72 61 6E 64 6F 6D 20 6F 73 63 69 6C 6C 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 76 6F 6C 75 a random oscillation of the volu 0000AF80 6D 65 20 77 68 65 6E 20 69 74 20 72 65 61 63 68 65 73 20 74 68 65 20 6C 69 6D 69 74 73 2E 20 20 me when it reaches the limits. 0000AFA0 54 68 69 73 20 69 73 20 63 61 75 73 65 64 20 62 79 20 61 6E 20 6F 76 65 72 73 68 6F 6F 74 20 70 This is caused by an overshoot p 0000AFC0 61 73 74 20 74 68 65 20 6C 69 6D 69 74 20 64 75 65 20 74 6F 20 61 20 6C 61 72 67 65 20 73 74 65 ast the limit due to a large ste 0000AFE0 70 20 73 69 7A 65 2E 20 20 54 68 65 20 53 44 4B 20 72 6F 75 74 69 6E 65 73 20 70 72 6F 74 65 63 p size. The SDK routines protec 0000B000 74 20 61 67 61 69 6E 73 74 20 74 68 69 73 20 62 79 20 6C 69 6D 69 74 69 6E 67 20 68 6F 77 20 63 t against this by limiting how c 0000B020 6C 6F 73 65 20 74 6F 20 74 68 65 20 72 61 69 6C 73 20 79 6F 75 20 63 61 6E 20 67 65 74 2E 20 20 lose to the rails you can get. 0000B040 0D 0A 0D 0A 0C 43 68 61 70 74 65 72 20 33 20 2D 20 50 72 6F 67 72 61 6D 6D 69 6E 67 20 74 68 65 ♪◙♪◙♀Chapter 3 - Programming the 0000B060 20 55 6C 74 72 61 53 6F 75 6E 64 0D 0A 0D 0A 33 2E 30 20 49 6E 74 72 6F 64 75 63 74 69 6F 6E 20 UltraSound♪◙♪◙3.0 Introduction 0000B080 0D 0A 0D 0A 54 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 69 73 20 66 72 65 71 75 65 6E 74 6C 79 ♪◙♪◙The UltraSound is frequently 0000B0A0 20 72 65 66 65 72 72 65 64 20 74 6F 20 61 73 20 27 47 55 53 27 2C 20 66 6F 72 20 47 72 61 76 69 referred to as 'GUS', for Gravi 0000B0C0 73 27 20 55 6C 74 72 61 53 6F 75 6E 64 2E 20 20 54 68 65 20 63 61 72 64 20 68 61 73 20 61 20 76 s' UltraSound. The card has a v 0000B0E0 65 72 79 20 67 6F 6F 64 20 72 65 70 75 74 61 74 69 6F 6E 20 61 6D 6F 6E 67 20 70 72 6F 67 72 61 ery good reputation among progra 0000B100 6D 6D 65 72 73 2C 20 73 69 6E 63 65 20 69 74 20 69 73 20 76 65 72 79 20 65 61 73 79 20 74 6F 20 mmers, since it is very easy to 0000B120 70 72 6F 67 72 61 6D 20 75 73 69 6E 67 20 61 20 68 69 67 68 20 6C 65 76 65 6C 20 6C 61 6E 67 75 program using a high level langu 0000B140 61 67 65 2C 20 61 6E 64 20 70 72 6F 76 69 64 65 73 20 69 6E 63 72 65 64 69 62 6C 65 20 73 6F 75 age, and provides incredible sou 0000B160 6E 64 2E 20 20 48 6F 77 65 76 65 72 2C 20 74 68 65 72 65 20 61 72 65 20 73 6F 6D 65 20 74 68 69 nd. However, there are some thi 0000B180 6E 67 73 20 74 68 61 74 20 79 6F 75 20 6E 65 65 64 20 74 6F 20 62 65 20 61 77 61 72 65 20 6F 66 ngs that you need to be aware of 0000B1A0 20 74 6F 20 73 75 63 63 65 73 73 66 75 6C 6C 79 20 70 72 6F 67 72 61 6D 20 74 68 65 20 62 6F 61 to successfully program the boa 0000B1C0 72 64 2E 20 20 55 73 65 72 73 20 6F 66 20 65 69 74 68 65 72 20 6C 61 6E 67 75 61 67 65 20 73 68 rd. Users of either language sh 0000B1E0 6F 75 6C 64 20 63 6F 6E 73 75 6C 74 20 74 68 65 69 72 20 72 65 73 70 65 63 74 69 76 65 20 65 78 ould consult their respective ex 0000B200 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 73 20 62 65 66 6F 72 65 20 61 74 74 65 6D 70 74 69 6E 67 ample programs before attempting 0000B220 20 74 6F 20 75 73 65 20 74 68 65 20 63 61 72 64 2E 20 20 41 6C 73 6F 2C 20 43 20 75 73 65 72 73 to use the card. Also, C users 0000B240 20 73 68 6F 75 6C 64 20 63 6F 6E 73 75 6C 74 20 73 65 63 74 69 6F 6E 20 33 2E 31 32 2C 20 77 68 should consult section 3.12, wh 0000B260 69 6C 65 20 50 61 73 63 61 6C 20 75 73 65 72 73 20 73 68 6F 75 6C 64 20 63 6F 6E 73 75 6C 74 20 ile Pascal users should consult 0000B280 73 65 63 74 69 6F 6E 20 33 2E 31 33 2E 20 20 0D 0A 0D 0A 0D 0A 0D 0A 33 2E 31 20 53 6F 75 6E 64 section 3.13. ♪◙♪◙♪◙♪◙3.1 Sound 0000B2A0 0D 0A 0D 0A 41 20 73 6F 75 6E 64 20 69 73 20 73 6F 6D 65 74 68 69 6E 67 20 74 68 61 74 20 79 6F ♪◙♪◙A sound is something that yo 0000B2C0 75 20 68 65 61 72 2E 20 49 74 20 69 73 20 70 72 6F 64 75 63 65 64 20 62 79 20 61 20 73 6F 75 72 u hear. It is produced by a sour 0000B2E0 63 65 20 61 6E 64 20 72 65 63 65 69 76 65 64 20 62 79 20 74 68 65 20 65 61 72 73 20 6F 66 20 74 ce and received by the ears of t 0000B300 68 65 20 6C 69 73 74 65 6E 65 72 2E 20 20 54 68 65 72 65 20 61 72 65 20 73 65 76 65 72 61 6C 20 he listener. There are several 0000B320 6D 65 64 69 75 6D 73 20 66 6F 72 20 74 68 65 20 73 74 6F 72 61 67 65 20 6F 66 20 73 6F 75 6E 64 mediums for the storage of sound 0000B340 2C 20 69 6E 63 6C 75 64 69 6E 67 20 76 69 6E 79 6C 2C 20 6D 61 67 6E 65 74 69 63 20 73 75 72 66 , including vinyl, magnetic surf 0000B360 61 63 65 73 2C 20 61 6E 64 20 6D 6F 72 65 20 72 65 63 65 6E 74 6C 79 20 6F 70 74 69 63 61 6C 20 aces, and more recently optical 0000B380 64 69 73 6B 73 2E 0D 0A 0D 0A 57 68 65 6E 20 73 6F 6D 65 74 68 69 6E 67 20 6D 61 6B 65 73 20 61 disks.♪◙♪◙When something makes a 0000B3A0 20 73 6F 75 6E 64 2C 20 69 74 20 63 72 65 61 74 65 73 20 77 61 76 65 73 20 6F 66 20 64 69 66 66 sound, it creates waves of diff 0000B3C0 65 72 65 6E 74 20 61 69 72 20 69 6E 74 65 6E 73 69 74 79 2E 20 20 54 68 65 73 65 20 77 61 76 65 erent air intensity. These wave 0000B3E0 73 20 61 72 65 20 72 65 67 69 73 74 65 72 65 64 20 61 73 20 27 73 6F 75 6E 64 27 2C 20 61 6E 64 s are registered as 'sound', and 0000B400 20 74 68 65 20 61 6D 70 6C 69 74 75 64 65 20 61 6E 64 20 66 72 65 71 75 65 6E 63 79 20 6F 66 20 the amplitude and frequency of 0000B420 74 68 65 73 65 20 77 61 76 65 73 20 64 65 74 65 72 6D 69 6E 65 20 74 68 65 20 27 74 79 70 65 27 these waves determine the 'type' 0000B440 20 6F 66 20 73 6F 75 6E 64 2E 20 20 0D 0A 0D 0A 41 6D 70 6C 69 74 75 64 65 20 69 73 20 64 65 74 of sound. ♪◙♪◙Amplitude is det 0000B460 65 72 6D 69 6E 65 64 20 62 79 20 74 68 65 20 68 69 67 68 65 73 74 20 61 6E 64 20 6C 6F 77 65 73 ermined by the highest and lowes 0000B480 74 20 70 6F 69 6E 74 73 20 6F 66 20 74 68 65 20 77 61 76 65 2C 20 61 6E 64 20 69 73 20 72 65 67 t points of the wave, and is reg 0000B4A0 69 73 74 65 72 65 64 20 62 79 20 79 6F 75 72 20 65 61 72 20 61 73 20 74 68 65 20 76 6F 6C 75 6D istered by your ear as the volum 0000B4C0 65 20 6F 66 20 74 68 65 20 73 6F 75 6E 64 2E 20 20 54 68 65 72 65 66 6F 72 65 2C 20 74 68 65 20 e of the sound. Therefore, the 0000B4E0 6C 6F 75 64 6E 65 73 73 20 6F 66 20 61 20 73 6F 75 6E 64 20 69 73 20 63 68 61 6E 67 65 64 20 62 loudness of a sound is changed b 0000B500 79 20 76 61 72 79 69 6E 67 20 74 68 65 20 61 6D 70 6C 69 74 75 64 65 20 6F 66 20 74 68 65 20 73 y varying the amplitude of the s 0000B520 6F 75 6E 64 27 73 20 77 61 76 65 2E 20 20 46 72 65 71 75 65 6E 63 79 20 69 73 20 64 65 74 65 72 ound's wave. Frequency is deter 0000B540 6D 69 6E 65 64 20 62 79 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 70 75 6C 73 65 73 20 28 70 mined by the number of pulses (p 0000B560 61 73 73 65 73 20 6F 66 20 61 20 73 69 6E 67 6C 65 20 77 61 76 65 20 70 65 61 6B 20 61 6E 64 20 asses of a single wave peak and 0000B580 74 72 6F 75 67 68 29 20 77 68 69 63 68 20 70 61 73 73 20 61 20 63 65 72 74 61 69 6E 20 70 6F 69 trough) which pass a certain poi 0000B5A0 6E 74 20 69 6E 20 61 20 63 65 72 74 61 69 6E 20 61 6D 6F 75 6E 74 20 6F 66 20 74 69 6D 65 2E 20 nt in a certain amount of time. 0000B5C0 20 54 68 65 20 6D 65 61 73 75 72 65 20 6F 66 20 73 6F 75 6E 64 20 66 72 65 71 75 65 6E 63 79 20 The measure of sound frequency 0000B5E0 69 73 20 64 6F 6E 65 20 75 73 69 6E 67 20 74 68 65 20 73 74 61 6E 64 61 72 64 20 6D 65 61 73 75 is done using the standard measu 0000B600 72 65 20 66 6F 72 20 66 72 65 71 75 65 6E 63 79 20 2D 20 48 65 72 74 7A 20 28 48 7A 29 2E 20 20 re for frequency - Hertz (Hz). 0000B620 54 68 65 20 68 69 67 68 65 72 20 74 68 65 20 66 72 65 71 75 65 6E 63 79 2C 20 74 68 65 20 68 69 The higher the frequency, the hi 0000B640 67 68 65 72 20 74 68 65 20 70 69 74 63 68 20 6F 66 20 74 68 65 20 73 6F 75 6E 64 20 74 68 61 74 gher the pitch of the sound that 0000B660 20 69 73 20 68 65 61 72 64 2E 0D 0A 0D 0A 4E 6F 72 6D 61 6C 20 73 6F 75 6E 64 20 6C 69 6B 65 20 is heard.♪◙♪◙Normal sound like 0000B680 73 70 65 65 63 68 20 61 6E 64 20 73 6F 75 6E 64 20 74 68 61 74 20 63 6F 6D 65 73 20 66 72 6F 6D speech and sound that comes from 0000B6A0 20 6D 69 78 65 73 20 6F 66 20 64 69 66 66 65 72 65 6E 74 20 69 6E 73 74 72 75 6D 65 6E 74 73 20 mixes of different instruments 0000B6C0 69 73 20 61 20 76 65 72 79 20 63 6F 6D 70 6C 65 78 20 70 61 74 74 65 72 6E 20 6F 66 20 63 68 61 is a very complex pattern of cha 0000B6E0 6E 67 65 73 20 69 6E 20 61 6D 70 6C 69 74 75 64 65 20 61 6E 64 20 66 72 65 71 75 65 6E 63 79 2E nges in amplitude and frequency. 0000B700 20 20 54 6F 20 72 65 63 6F 72 64 20 74 68 65 20 77 61 76 65 27 73 20 70 61 74 74 65 72 6E 2C 20 To record the wave's pattern, 0000B720 61 20 63 6F 6D 70 75 74 65 72 20 74 61 6B 65 73 20 61 20 6C 61 72 67 65 20 6E 75 6D 62 65 72 20 a computer takes a large number 0000B740 6F 66 20 27 73 61 6D 70 6C 65 73 27 20 6F 66 20 74 68 65 20 77 61 76 65 20 70 72 6F 64 75 63 65 of 'samples' of the wave produce 0000B760 64 20 62 79 20 74 68 65 20 73 6F 75 6E 64 2E 20 20 54 68 65 6E 20 77 68 65 6E 20 69 74 20 67 6F d by the sound. Then when it go 0000B780 65 73 20 74 68 72 6F 75 67 68 20 74 68 65 20 69 6E 64 69 76 69 64 75 61 6C 20 27 73 61 6D 70 6C es through the individual 'sampl 0000B7A0 65 73 27 20 61 74 20 74 68 65 20 73 61 6D 65 20 72 61 74 65 20 74 68 65 79 20 77 65 72 65 20 72 es' at the same rate they were r 0000B7C0 65 63 6F 72 64 65 64 2C 20 69 74 20 63 61 6E 20 72 65 63 6F 6E 73 74 72 75 63 74 20 74 68 65 20 ecorded, it can reconstruct the 0000B7E0 6F 72 69 67 69 6E 61 6C 20 77 61 76 65 20 61 6E 64 20 70 72 6F 64 75 63 65 20 61 20 73 6F 75 6E original wave and produce a soun 0000B800 64 20 77 68 69 63 68 20 69 73 20 63 6C 6F 73 65 20 74 6F 20 74 68 65 20 6F 72 69 67 69 6E 61 6C d which is close to the original 0000B820 20 73 6F 75 6E 64 2E 20 20 49 66 20 74 68 65 20 73 61 6D 70 6C 65 20 72 61 74 65 20 69 73 20 6E sound. If the sample rate is n 0000B840 6F 74 20 68 69 67 68 20 65 6E 6F 75 67 68 2C 20 74 68 65 20 63 6F 6D 70 75 74 65 72 20 63 61 6E ot high enough, the computer can 0000B860 20 6D 69 73 73 20 63 68 61 6E 67 65 73 20 69 6E 20 74 68 65 20 61 6D 70 6C 69 74 75 64 65 20 61 miss changes in the amplitude a 0000B880 6E 64 20 66 72 65 71 75 65 6E 63 79 2C 20 61 6E 64 20 74 68 65 20 73 6F 75 6E 64 20 72 65 70 72 nd frequency, and the sound repr 0000B8A0 6F 64 75 63 65 64 20 77 69 6C 6C 20 6E 6F 74 20 73 6F 75 6E 64 20 65 78 61 63 74 6C 79 20 6C 69 oduced will not sound exactly li 0000B8C0 6B 65 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 73 6F 75 6E 64 2E 0D 0A 0D 0A 54 68 65 20 6E 75 ke the original sound.♪◙♪◙The nu 0000B8E0 6D 62 65 72 20 6F 66 20 73 61 6D 70 6C 65 73 20 74 61 6B 65 6E 20 65 61 63 68 20 73 65 63 6F 6E mber of samples taken each secon 0000B900 64 20 69 73 20 72 65 66 65 72 72 65 64 20 74 6F 20 61 73 20 74 68 65 20 27 73 61 6D 70 6C 69 6E d is referred to as the 'samplin 0000B920 67 20 72 61 74 65 27 2C 20 61 6E 64 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 73 61 6D 70 6C g rate', and the number of sampl 0000B940 65 73 20 70 6C 61 79 65 64 20 62 61 63 6B 20 65 61 63 68 20 73 65 63 6F 6E 64 20 69 73 20 72 65 es played back each second is re 0000B960 66 65 72 72 65 64 20 74 6F 20 61 73 20 74 68 65 20 27 70 6C 61 79 62 61 63 6B 20 72 61 74 65 27 ferred to as the 'playback rate' 0000B980 2E 20 20 57 68 65 6E 20 61 20 72 6F 63 6B 20 62 61 6E 64 20 70 6C 61 79 73 20 61 20 73 6F 6E 67 . When a rock band plays a song 0000B9A0 2C 20 74 68 65 20 63 6F 6D 62 69 6E 65 64 20 73 6F 75 6E 64 20 77 61 76 65 20 70 72 6F 64 75 63 , the combined sound wave produc 0000B9C0 65 64 20 62 79 20 74 68 65 20 73 69 6E 67 65 72 73 20 61 6E 64 20 69 6E 73 74 72 75 6D 65 6E 74 ed by the singers and instrument 0000B9E0 73 20 69 73 20 70 72 6F 64 75 63 65 64 2E 20 20 54 6F 20 72 65 63 6F 72 64 20 74 68 69 73 20 77 s is produced. To record this w 0000BA00 61 76 65 20 61 74 20 43 44 2D 71 75 61 6C 69 74 79 20 6F 6E 20 61 20 63 6F 6D 70 75 74 65 72 20 ave at CD-quality on a computer 0000BA20 6D 65 64 69 75 6D 20 28 6C 69 6B 65 20 6D 65 6D 6F 72 79 20 6F 72 20 61 20 68 61 72 64 20 64 69 medium (like memory or a hard di 0000BA40 73 6B 29 2C 20 74 68 65 20 77 61 76 65 20 69 73 20 27 73 61 6D 70 6C 65 64 27 20 34 34 31 30 30 sk), the wave is 'sampled' 44100 0000BA60 20 74 69 6D 65 73 20 65 61 63 68 20 73 65 63 6F 6E 64 2E 20 20 53 69 6E 63 65 20 74 68 65 20 6E times each second. Since the n 0000BA80 75 6D 62 65 72 20 6F 66 20 73 61 6D 70 6C 65 73 20 70 65 72 20 73 65 63 6F 6E 64 20 69 73 20 61 umber of samples per second is a 0000BAA0 20 66 72 65 71 75 65 6E 63 79 2C 20 74 68 69 73 20 72 61 74 65 20 69 73 20 6D 65 61 73 75 72 65 frequency, this rate is measure 0000BAC0 64 20 61 67 61 69 6E 20 69 6E 20 48 65 72 74 7A 2E 20 20 54 68 65 72 65 66 6F 72 65 2C 20 77 65 d again in Hertz. Therefore, we 0000BAE0 20 73 61 79 20 74 68 61 74 20 74 68 65 20 72 65 63 6F 72 64 69 6E 67 20 66 72 65 71 75 65 6E 63 say that the recording frequenc 0000BB00 79 20 69 73 20 34 34 2E 31 20 6B 48 7A 2E 0D 0A 0D 0A 49 66 20 49 20 72 65 63 6F 72 64 20 61 20 y is 44.1 kHz.♪◙♪◙If I record a 0000BB20 73 6F 75 6E 64 20 61 74 20 34 34 2E 31 20 6B 48 7A 20 66 6F 72 20 74 77 6F 20 73 65 63 6F 6E 64 sound at 44.1 kHz for two second 0000BB40 73 2C 20 49 20 77 69 6C 6C 20 68 61 76 65 20 38 38 32 30 30 20 69 6E 64 69 76 69 64 75 61 6C 20 s, I will have 88200 individual 0000BB60 27 73 61 6D 70 6C 65 73 27 2E 20 20 54 68 65 20 64 61 74 61 20 74 68 61 74 20 63 6F 6D 70 72 69 'samples'. The data that compri 0000BB80 73 65 73 20 74 68 65 73 65 20 27 73 61 6D 70 6C 65 73 27 20 69 73 20 74 79 70 69 63 61 6C 6C 79 ses these 'samples' is typically 0000BBA0 20 72 65 66 65 72 72 65 64 20 74 6F 20 61 73 20 61 20 27 73 61 6D 70 6C 65 27 20 69 74 73 65 6C referred to as a 'sample' itsel 0000BBC0 66 2E 0D 0A 0D 0A 57 68 65 6E 20 61 20 72 65 63 6F 72 64 69 6E 67 20 6D 61 64 65 20 61 74 20 34 f.♪◙♪◙When a recording made at 4 0000BBE0 34 2E 31 20 6B 48 7A 20 69 73 20 70 6C 61 79 65 64 20 62 61 63 6B 20 61 74 20 34 34 2E 31 20 6B 4.1 kHz is played back at 44.1 k 0000BC00 48 7A 2C 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 73 6F 75 6E 64 20 69 73 20 72 65 70 72 6F 64 Hz, the original sound is reprod 0000BC20 75 63 65 64 20 61 6C 6D 6F 73 74 20 65 78 61 63 74 6C 79 2E 20 20 4E 6F 74 65 20 74 68 61 74 20 uced almost exactly. Note that 0000BC40 74 68 65 20 72 65 63 6F 72 64 69 6E 67 20 61 6E 64 20 70 6C 61 79 62 61 63 6B 20 66 72 65 71 75 the recording and playback frequ 0000BC60 65 6E 63 79 20 61 72 65 20 64 69 66 66 65 72 65 6E 74 20 66 72 6F 6D 20 74 68 65 20 66 72 65 71 ency are different from the freq 0000BC80 75 65 6E 63 79 20 6F 66 20 74 68 65 20 73 6F 75 6E 64 20 69 74 73 65 6C 66 2E 0D 0A 0D 0A 4D 6F uency of the sound itself.♪◙♪◙Mo 0000BCA0 73 74 20 6F 74 68 65 72 20 73 6F 75 6E 64 20 63 61 72 64 73 20 64 6F 20 6E 6F 74 20 68 61 76 65 st other sound cards do not have 0000BCC0 20 61 6E 79 20 52 41 4D 20 6F 6E 20 74 68 65 6D 2C 20 61 6E 64 20 74 68 65 72 65 66 6F 72 65 20 any RAM on them, and therefore 0000BCE0 68 61 76 65 20 74 6F 20 75 73 65 20 74 68 65 20 50 43 27 73 20 52 41 4D 20 74 6F 20 73 74 6F 72 have to use the PC's RAM to stor 0000BD00 65 20 74 68 65 20 73 6F 75 6E 64 73 20 74 68 65 79 20 70 72 6F 64 75 63 65 2E 20 20 54 68 69 73 e the sounds they produce. This 0000BD20 20 6C 65 61 76 65 73 20 6C 65 73 73 20 72 6F 6F 6D 20 66 6F 72 20 61 70 70 6C 69 63 61 74 69 6F leaves less room for applicatio 0000BD40 6E 20 70 72 6F 67 72 61 6D 73 2C 20 61 6E 64 20 69 73 20 6A 75 73 74 20 61 6E 6F 74 68 65 72 20 n programs, and is just another 0000BD60 74 68 69 6E 67 20 74 68 61 74 20 74 68 65 20 43 50 55 20 68 61 73 20 74 6F 20 74 72 61 63 6B 20 thing that the CPU has to track 0000BD80 61 6E 64 20 70 72 6F 63 65 73 73 20 2D 20 73 6C 6F 77 69 6E 67 20 64 6F 77 6E 20 74 68 65 20 6D and process - slowing down the m 0000BDA0 61 63 68 69 6E 65 2E 20 20 0D 0A 0D 0A 4F 6E 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 2C 20 achine. ♪◙♪◙On the UltraSound, 0000BDC0 73 61 6D 70 6C 65 73 20 61 72 65 20 73 74 6F 72 65 64 20 6F 6E 20 74 68 65 20 63 61 72 64 20 69 samples are stored on the card i 0000BDE0 6E 20 69 74 27 73 20 44 52 41 4D 2E 20 20 54 68 69 73 20 6C 65 61 76 65 73 20 6D 6F 72 65 20 73 n it's DRAM. This leaves more s 0000BE00 70 61 63 65 20 69 6E 20 50 43 20 52 41 4D 20 66 6F 72 20 70 72 6F 67 72 61 6D 73 2E 20 20 41 6C pace in PC RAM for programs. Al 0000BE20 73 6F 2C 20 74 68 65 20 47 46 31 20 63 68 69 70 20 69 6E 20 74 68 65 20 55 6C 74 72 61 53 6F 75 so, the GF1 chip in the UltraSou 0000BE40 6E 64 20 63 61 6E 20 70 6C 61 79 20 33 32 20 69 6E 64 65 70 65 6E 64 65 6E 74 20 73 6F 75 6E 64 nd can play 32 independent sound 0000BE60 73 20 61 74 20 6F 6E 63 65 20 77 69 74 68 6F 75 74 20 75 73 69 6E 67 20 61 6E 79 20 43 50 55 20 s at once without using any CPU 0000BE80 74 69 6D 65 20 2D 20 73 6F 20 74 68 65 20 6D 61 63 68 69 6E 65 20 64 6F 65 73 6E 27 74 20 73 6C time - so the machine doesn't sl 0000BEA0 6F 77 20 64 6F 77 6E 20 61 74 20 61 6C 6C 21 0D 0A 0D 0A 0D 0A 0D 0A 33 2E 32 20 54 68 65 20 42 ow down at all!♪◙♪◙♪◙♪◙3.2 The B 0000BEC0 61 73 69 63 73 20 6F 66 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 0D 0A 0D 0A 54 68 65 20 6F asics of the UltraSound♪◙♪◙The o 0000BEE0 6E 6C 79 20 74 68 69 6E 67 73 20 79 6F 75 20 6E 65 65 64 20 74 6F 20 6B 6E 6F 77 20 74 6F 20 73 nly things you need to know to s 0000BF00 65 74 20 75 70 20 74 68 65 20 63 61 72 64 20 77 68 65 6E 20 79 6F 75 72 20 70 72 6F 67 72 61 6D et up the card when your program 0000BF20 20 73 74 61 72 74 73 20 69 73 20 74 68 65 20 6D 61 78 69 6D 75 6D 20 23 20 6F 66 20 76 6F 69 63 starts is the maximum # of voic 0000BF40 65 73 20 79 6F 75 20 61 72 65 20 67 6F 69 6E 67 20 74 6F 20 6E 65 65 64 20 61 6E 64 20 74 68 65 es you are going to need and the 0000BF60 20 6D 61 78 69 6D 75 6D 20 70 6C 61 79 62 61 63 6B 20 66 72 65 71 75 65 6E 63 79 20 79 6F 75 27 maximum playback frequency you' 0000BF80 72 65 20 67 6F 69 6E 67 20 74 6F 20 6E 65 65 64 20 66 6F 72 20 61 6E 79 20 73 61 6D 70 6C 65 2E re going to need for any sample. 0000BFA0 0D 0A 0D 0A 43 6F 6E 73 75 6C 74 20 74 68 65 20 66 72 65 71 75 65 6E 63 79 20 74 61 62 6C 65 20 ♪◙♪◙Consult the frequency table 0000BFC0 69 6E 20 73 65 63 74 69 6F 6E 20 31 2E 33 20 74 6F 20 73 65 65 20 68 6F 77 20 6D 61 6E 79 20 76 in section 1.3 to see how many v 0000BFE0 6F 69 63 65 73 20 79 6F 75 20 73 68 6F 75 6C 64 20 69 6E 69 74 69 61 6C 69 7A 65 20 74 68 65 20 oices you should initialize the 0000C000 63 61 72 64 20 77 69 74 68 2E 20 20 49 66 20 79 6F 75 20 64 6F 6E 27 74 20 6E 65 65 64 20 61 20 card with. If you don't need a 0000C020 6C 61 72 67 65 20 6E 75 6D 62 65 72 20 6F 66 20 76 6F 69 63 65 73 2C 20 69 6E 69 74 69 61 6C 69 large number of voices, initiali 0000C040 7A 69 6E 67 20 74 68 65 20 63 61 72 64 20 74 6F 20 75 73 65 20 66 65 77 65 72 20 76 6F 69 63 65 zing the card to use fewer voice 0000C060 73 20 6D 65 61 6E 73 20 74 68 61 74 20 73 6F 6D 65 20 27 6F 76 65 72 73 61 6D 70 6C 69 6E 67 27 s means that some 'oversampling' 0000C080 20 77 69 6C 6C 20 6F 63 63 75 72 2C 20 6D 61 6B 69 6E 67 20 74 68 65 20 73 6F 75 6E 64 20 62 65 will occur, making the sound be 0000C0A0 74 74 65 72 20 69 6E 20 71 75 61 6C 69 74 79 2E 20 20 59 6F 75 20 63 61 6E 6E 6F 74 20 69 6E 69 tter in quality. You cannot ini 0000C0C0 74 69 61 6C 69 7A 65 20 66 6F 72 20 66 65 77 65 72 20 74 68 61 6E 20 31 34 20 76 6F 69 63 65 73 tialize for fewer than 14 voices 0000C0E0 20 6F 72 20 6C 61 72 67 65 72 20 74 68 61 6E 20 33 32 2E 0D 0A 0D 0A 54 6F 20 6F 70 65 6E 20 74 or larger than 32.♪◙♪◙To open t 0000C100 68 65 20 63 61 72 64 2C 20 79 6F 75 20 63 61 6C 6C 20 74 68 65 20 55 6C 74 72 61 4F 70 65 6E 20 he card, you call the UltraOpen 0000C120 66 75 6E 63 74 69 6F 6E 2E 20 20 54 68 69 73 20 77 69 6C 6C 20 73 65 74 20 75 70 20 74 68 65 20 function. This will set up the 0000C140 69 6E 74 65 72 72 75 70 74 20 76 65 63 74 6F 72 73 20 61 6E 64 20 63 6F 6E 74 72 6F 6C 20 70 72 interrupt vectors and control pr 0000C160 6F 63 65 64 75 72 65 73 20 66 6F 72 20 74 68 65 20 63 61 72 64 2C 20 61 6E 64 20 74 68 65 6E 20 ocedures for the card, and then 0000C180 72 65 73 65 74 20 74 68 65 20 63 61 72 64 20 74 6F 20 75 73 65 20 74 68 65 20 6E 75 6D 62 65 72 reset the card to use the number 0000C1A0 20 6F 66 20 76 6F 69 63 65 73 20 79 6F 75 20 73 70 65 63 69 66 79 2E 20 20 57 68 65 6E 20 79 6F of voices you specify. When yo 0000C1C0 75 20 61 72 65 20 66 69 6E 69 73 68 65 64 20 77 69 74 68 20 74 68 65 20 63 61 72 64 2C 20 79 6F u are finished with the card, yo 0000C1E0 75 20 6E 65 65 64 20 74 6F 20 63 6C 6F 73 65 20 69 74 20 73 6F 20 74 68 61 74 20 74 68 65 20 69 u need to close it so that the i 0000C200 6E 74 65 72 72 75 70 74 20 70 72 6F 63 65 64 75 72 65 73 2C 20 76 6F 69 63 65 73 2C 20 61 6E 64 nterrupt procedures, voices, and 0000C220 20 76 6F 6C 75 6D 65 73 20 67 65 74 20 73 74 6F 70 70 65 64 20 61 6E 64 20 72 65 73 65 74 20 74 volumes get stopped and reset t 0000C240 6F 20 27 6E 6F 72 6D 61 6C 27 2E 20 20 54 6F 20 64 6F 20 74 68 69 73 2C 20 63 61 6C 6C 20 74 68 o 'normal'. To do this, call th 0000C260 65 20 55 6C 74 72 61 43 6C 6F 73 65 20 66 75 6E 63 74 69 6F 6E 2E 20 20 50 6C 65 61 73 65 20 73 e UltraClose function. Please s 0000C280 65 65 20 63 68 61 70 74 65 72 20 34 2C 20 74 68 65 20 72 65 66 65 72 65 6E 63 65 20 67 75 69 64 ee chapter 4, the reference guid 0000C2A0 65 2C 20 66 6F 72 20 6D 6F 72 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 6E 20 74 68 65 20 73 e, for more information on the s 0000C2C0 79 6E 74 61 78 20 61 6E 64 20 75 73 61 67 65 20 6F 66 20 74 68 65 73 65 20 72 6F 75 74 69 6E 65 yntax and usage of these routine 0000C2E0 73 2E 0D 0A 0D 0A 0D 0A 33 2E 33 20 55 73 69 6E 67 20 47 55 53 20 4D 65 6D 6F 72 79 0D 0A 0D 0A s.♪◙♪◙♪◙3.3 Using GUS Memory♪◙♪◙ 0000C300 54 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 68 61 73 20 61 20 64 65 66 61 75 6C 74 20 61 6D 6F The UltraSound has a default amo 0000C320 75 6E 74 20 6F 66 20 32 35 36 4B 20 6F 66 20 6D 65 6D 6F 72 79 20 6F 6E 20 74 68 65 20 63 61 72 unt of 256K of memory on the car 0000C340 64 20 74 68 61 74 20 63 61 6E 20 62 65 20 75 70 67 72 61 64 65 64 20 69 6E 20 32 35 36 4B 20 69 d that can be upgraded in 256K i 0000C360 6E 63 72 65 6D 65 6E 74 73 20 75 70 20 74 6F 20 31 20 4D 42 2E 20 20 49 66 20 79 6F 75 20 61 72 ncrements up to 1 MB. If you ar 0000C380 65 20 64 65 76 65 6C 6F 70 69 6E 67 20 66 6F 72 20 74 68 65 20 63 61 72 64 2C 20 79 6F 75 20 6D e developing for the card, you m 0000C3A0 61 79 20 77 61 6E 74 20 74 6F 20 75 70 67 72 61 64 65 20 74 6F 20 61 20 66 75 6C 6C 20 6D 65 67 ay want to upgrade to a full meg 0000C3C0 61 62 79 74 65 2E 20 20 41 6C 73 6F 2C 20 79 6F 75 20 73 68 6F 75 6C 64 20 62 65 20 61 77 61 72 abyte. Also, you should be awar 0000C3E0 65 20 74 68 61 74 20 6D 61 6E 79 20 75 73 65 72 73 20 6F 66 20 74 68 65 20 63 61 72 64 20 64 6F e that many users of the card do 0000C400 20 4E 4F 54 20 68 61 76 65 20 31 20 4D 42 20 6F 66 20 52 41 4D 20 69 6E 73 74 61 6C 6C 65 64 2C NOT have 1 MB of RAM installed, 0000C420 20 61 6E 64 20 74 68 61 74 20 69 66 20 79 6F 75 20 61 72 65 20 67 6F 69 6E 67 20 74 6F 20 6C 6F and that if you are going to lo 0000C440 61 64 20 73 61 6D 70 6C 65 73 20 69 6E 74 6F 20 74 68 65 20 63 61 72 64 27 73 20 6D 65 6D 6F 72 ad samples into the card's memor 0000C460 79 2C 20 79 6F 75 20 6E 65 65 64 20 74 6F 20 63 68 65 63 6B 20 74 6F 20 6D 61 6B 65 20 73 75 72 y, you need to check to make sur 0000C480 65 20 79 6F 75 20 68 61 76 65 20 65 6E 6F 75 67 68 20 72 6F 6F 6D 2E 20 20 54 68 65 20 66 75 6E e you have enough room. The fun 0000C4A0 63 74 69 6F 6E 20 55 6C 74 72 61 4D 61 78 41 6C 6C 6F 63 20 28 61 64 64 69 74 69 6F 6E 61 6C 6C ction UltraMaxAlloc (additionall 0000C4C0 79 20 66 6F 72 20 50 61 73 63 61 6C 20 75 73 65 72 73 20 74 68 65 20 66 75 6E 63 74 69 6F 6E 73 y for Pascal users the functions 0000C4E0 20 55 6C 74 72 61 4D 65 6D 41 76 61 69 6C 20 61 6E 64 20 55 6C 74 72 61 4D 61 78 41 76 61 69 6C UltraMemAvail and UltraMaxAvail 0000C500 29 20 77 69 6C 6C 20 74 65 6C 6C 20 79 6F 75 20 68 6F 77 20 6D 75 63 68 20 52 41 4D 20 79 6F 75 ) will tell you how much RAM you 0000C520 20 73 74 69 6C 6C 20 68 61 76 65 20 61 76 61 69 6C 61 62 6C 65 2E 20 20 42 65 63 61 75 73 65 20 still have available. Because 0000C540 6F 66 20 74 68 65 20 77 61 79 20 74 68 65 20 47 55 53 20 6D 65 6D 6F 72 79 20 69 73 20 73 74 72 of the way the GUS memory is str 0000C560 75 63 74 75 72 65 64 20 70 68 79 73 69 63 61 6C 6C 79 2C 20 79 6F 75 20 63 61 6E 6E 6F 74 20 61 uctured physically, you cannot a 0000C580 6C 6C 6F 63 61 74 65 20 63 68 75 6E 6B 73 20 6C 61 72 67 65 72 20 74 68 61 6E 20 32 35 36 6B 20 llocate chunks larger than 256k 0000C5A0 61 74 20 6F 6E 65 20 74 69 6D 65 2E 0D 0A 0D 0A 54 68 65 20 43 20 61 6E 64 20 50 61 73 63 61 6C at one time.♪◙♪◙The C and Pascal 0000C5C0 20 76 65 72 73 69 6F 6E 73 20 6F 66 20 74 68 65 20 53 44 4B 20 75 73 65 20 64 69 66 66 65 72 65 versions of the SDK use differe 0000C5E0 6E 74 20 6D 65 74 68 6F 64 73 20 66 6F 72 20 6B 65 65 70 69 6E 67 20 74 72 61 63 6B 20 6F 66 20 nt methods for keeping track of 0000C600 62 6C 6F 63 6B 73 20 6F 66 20 6D 65 6D 6F 72 79 20 74 68 61 74 20 68 61 76 65 20 62 65 65 6E 20 blocks of memory that have been 0000C620 61 6C 6C 6F 63 61 74 65 64 20 61 6E 64 20 62 6C 6F 63 6B 73 20 74 68 61 74 20 72 65 6D 61 69 6E allocated and blocks that remain 0000C640 20 66 72 65 65 2E 20 20 54 68 65 20 43 20 76 65 72 73 69 6F 6E 20 75 73 65 73 20 61 20 73 6D 61 free. The C version uses a sma 0000C660 6C 6C 20 70 6F 72 74 69 6F 6E 20 6F 66 20 47 55 53 20 52 41 4D 20 74 6F 20 6B 65 65 70 20 74 72 ll portion of GUS RAM to keep tr 0000C680 61 63 6B 20 6F 66 20 74 68 65 20 62 6C 6F 63 6B 73 2C 20 77 68 65 72 65 61 73 20 74 68 65 20 50 ack of the blocks, whereas the P 0000C6A0 61 73 63 61 6C 20 76 65 72 73 69 6F 6E 20 75 73 65 73 20 61 20 73 6D 61 6C 6C 20 61 6D 6F 75 6E ascal version uses a small amoun 0000C6C0 74 20 6F 66 20 6E 6F 72 6D 61 6C 20 68 65 61 70 20 73 70 61 63 65 2E 20 20 49 6E 20 61 6E 79 20 t of normal heap space. In any 0000C6E0 65 76 65 6E 74 2C 20 79 6F 75 20 64 6F 20 6E 6F 74 20 68 61 76 65 20 74 6F 20 77 6F 72 72 79 20 event, you do not have to worry 0000C700 61 62 6F 75 74 20 74 68 65 20 69 6E 74 65 72 6E 61 6C 20 6F 70 65 72 61 74 69 6F 6E 20 6F 66 20 about the internal operation of 0000C720 74 68 65 73 65 20 72 6F 75 74 69 6E 65 73 2E 20 20 54 6F 20 73 65 65 20 68 6F 77 20 74 68 65 20 these routines. To see how the 0000C740 50 61 73 63 61 6C 20 76 65 72 73 69 6F 6E 20 75 73 65 73 20 61 20 73 6D 61 6C 6C 20 61 6D 6F 75 Pascal version uses a small amou 0000C760 6E 74 20 6F 66 20 68 65 61 70 20 73 70 61 63 65 20 74 6F 20 6D 61 6E 61 67 65 20 47 55 53 20 6D nt of heap space to manage GUS m 0000C780 65 6D 6F 72 79 2C 20 73 65 65 20 73 65 63 74 69 6F 6E 20 33 2E 31 33 2E 33 2E 0D 0A 0D 0A 54 68 emory, see section 3.13.3.♪◙♪◙Th 0000C7A0 65 20 6D 65 6D 6F 72 79 20 61 6C 6C 6F 63 61 74 69 6F 6E 20 72 6F 75 74 69 6E 65 73 20 77 69 6C e memory allocation routines wil 0000C7C0 6C 20 4F 4E 4C 59 20 72 65 74 75 72 6E 20 33 32 20 62 79 74 65 20 61 6C 69 67 6E 65 64 20 61 64 l ONLY return 32 byte aligned ad 0000C7E0 64 72 65 73 73 65 73 2C 20 73 6F 20 69 66 20 79 6F 75 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 dresses, so if your application 0000C800 75 73 65 73 20 74 68 65 6D 2C 20 74 68 69 73 20 77 69 6C 6C 20 6E 6F 74 20 62 65 20 61 20 70 72 uses them, this will not be a pr 0000C820 6F 62 6C 65 6D 2E 20 49 66 20 79 6F 75 20 63 68 6F 73 65 20 6E 6F 74 20 74 6F 20 75 73 65 20 74 oblem. If you chose not to use t 0000C840 68 65 20 61 6C 6C 6F 63 61 74 69 6F 6E 20 72 6F 75 74 69 6E 65 73 20 70 72 6F 76 69 64 65 64 2C he allocation routines provided, 0000C860 20 62 65 20 73 75 72 65 20 61 6E 64 20 66 6F 6C 6C 6F 77 20 74 68 65 73 65 20 72 75 6C 65 73 2E be sure and follow these rules. 0000C880 20 20 54 6F 20 6F 62 74 61 69 6E 20 61 20 6C 65 67 61 6C 20 62 6C 6F 63 6B 20 6F 66 20 55 6C 74 To obtain a legal block of Ult 0000C8A0 72 61 53 6F 75 6E 64 20 52 41 4D 20 74 68 61 74 20 69 73 20 67 75 61 72 61 6E 74 65 65 64 20 74 raSound RAM that is guaranteed t 0000C8C0 6F 20 62 65 20 61 6C 69 67 6E 65 64 20 6F 6E 20 61 20 33 32 2D 62 79 74 65 20 62 6F 75 6E 64 61 o be aligned on a 32-byte bounda 0000C8E0 72 79 2C 20 75 73 65 20 74 68 65 20 55 6C 74 72 61 4D 65 6D 41 6C 6C 6F 63 20 66 75 6E 63 74 69 ry, use the UltraMemAlloc functi 0000C900 6F 6E 2E 20 20 54 6F 20 66 72 65 65 20 75 70 20 74 68 65 20 6D 65 6D 6F 72 79 20 61 66 74 65 72 on. To free up the memory after 0000C920 20 79 6F 75 20 68 61 76 65 20 75 73 65 64 20 69 74 2C 20 75 73 65 20 74 68 65 20 55 6C 74 72 61 you have used it, use the Ultra 0000C940 4D 65 6D 46 72 65 65 20 66 75 6E 63 74 69 6F 6E 2E 20 20 4F 6E 63 65 20 61 67 61 69 6E 2C 20 73 MemFree function. Once again, s 0000C960 65 65 20 63 68 61 70 74 65 72 20 34 2C 20 74 68 65 20 72 65 66 65 72 65 6E 63 65 20 67 75 69 64 ee chapter 4, the reference guid 0000C980 65 2C 20 66 6F 72 20 6D 6F 72 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 6E 20 74 68 65 20 73 e, for more information on the s 0000C9A0 79 6E 74 61 78 20 61 6E 64 20 75 73 61 67 65 20 6F 66 20 74 68 65 73 65 20 72 6F 75 74 69 6E 65 yntax and usage of these routine 0000C9C0 73 2E 0D 0A 0D 0A 59 6F 75 20 44 4F 20 4E 4F 54 20 6E 65 63 65 73 73 61 72 69 6C 79 20 6E 65 65 s.♪◙♪◙You DO NOT necessarily nee 0000C9E0 64 20 74 6F 20 75 73 65 20 74 68 65 20 6D 65 6D 6F 72 79 20 61 6C 6C 6F 63 61 74 69 6F 6E 20 61 d to use the memory allocation a 0000CA00 6E 64 20 64 65 61 6C 6C 6F 63 61 74 69 6F 6E 20 72 6F 75 74 69 6E 65 73 20 74 6F 20 70 72 6F 67 nd deallocation routines to prog 0000CA20 72 61 6D 20 74 68 65 20 63 61 72 64 2E 20 20 59 6F 75 20 44 4F 20 68 61 76 65 20 74 6F 20 62 65 ram the card. You DO have to be 0000CA40 20 63 61 72 65 66 75 6C 20 69 66 20 79 6F 75 20 63 68 6F 6F 73 65 20 74 6F 20 64 6F 20 77 69 74 careful if you choose to do wit 0000CA60 68 6F 75 74 20 74 68 65 6D 2E 20 20 54 68 65 20 44 4D 41 20 63 61 6E 20 6F 6E 6C 79 20 62 65 67 hout them. The DMA can only beg 0000CA80 69 6E 20 6F 6E 20 61 20 31 36 20 6F 72 20 33 32 20 62 79 74 65 20 62 6F 75 6E 64 61 72 79 2E 20 in on a 16 or 32 byte boundary. 0000CAA0 41 6E 20 38 20 62 69 74 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 28 30 2D 33 29 20 6D 75 73 74 20 An 8 bit DMA channel (0-3) must 0000CAC0 73 74 61 72 74 20 6F 6E 20 61 20 31 36 20 62 79 74 65 20 62 6F 75 6E 64 61 72 79 20 77 68 69 6C start on a 16 byte boundary whil 0000CAE0 65 20 61 20 31 36 20 62 69 74 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 28 34 2D 37 29 20 6D 75 73 e a 16 bit DMA channel (4-7) mus 0000CB00 74 20 73 74 61 72 74 20 6F 6E 20 61 20 33 32 20 62 79 74 65 20 62 6F 75 6E 64 61 72 79 2E 20 49 t start on a 32 byte boundary. I 0000CB20 66 20 61 6E 20 69 6D 70 72 6F 70 65 72 20 61 64 64 72 65 73 73 20 69 73 20 73 75 70 70 6C 69 65 f an improper address is supplie 0000CB40 64 2C 20 74 68 65 20 61 64 64 72 65 73 73 20 77 69 6C 6C 20 62 65 20 74 72 75 6E 63 61 74 65 64 d, the address will be truncated 0000CB60 20 64 6F 77 6E 20 77 68 65 6E 20 74 68 65 20 44 4D 41 20 6F 63 63 75 72 73 2E 20 20 41 20 44 4D down when the DMA occurs. A DM 0000CB80 41 20 74 6F 20 6F 72 20 66 72 6F 6D 20 74 68 65 20 63 61 72 64 20 63 61 6E 6E 6F 74 20 63 72 6F A to or from the card cannot cro 0000CBA0 73 73 20 61 20 32 35 36 4B 20 62 6F 75 6E 64 61 72 79 2E 20 20 0D 0A 0D 0A 54 6F 20 73 65 6E 64 ss a 256K boundary. ♪◙♪◙To send 0000CBC0 20 64 61 74 61 20 66 72 6F 6D 20 50 43 20 6D 65 6D 6F 72 79 20 74 6F 20 74 68 65 20 63 61 72 64 data from PC memory to the card 0000CBE0 2C 20 75 73 65 20 74 68 65 20 55 6C 74 72 61 44 6F 77 6E 6C 6F 61 64 20 66 75 6E 63 74 69 6F 6E , use the UltraDownload function 0000CC00 2E 20 20 54 6F 20 72 65 61 64 20 64 61 74 61 20 66 72 6F 6D 20 74 68 65 20 63 61 72 64 20 69 6E . To read data from the card in 0000CC20 74 6F 20 50 43 20 6D 65 6D 6F 72 79 2C 20 75 73 65 20 74 68 65 20 55 6C 74 72 61 55 70 6C 6F 61 to PC memory, use the UltraUploa 0000CC40 64 20 66 75 6E 63 74 69 6F 6E 2E 20 20 49 66 20 79 6F 75 20 64 6F 77 6E 6C 6F 61 64 20 64 61 74 d function. If you download dat 0000CC60 61 20 74 6F 20 74 68 65 20 63 61 72 64 2C 20 65 6E 73 75 72 65 20 74 68 61 74 20 69 66 20 74 68 a to the card, ensure that if th 0000CC80 65 20 64 61 74 61 20 69 73 20 6E 6F 74 20 69 6E 20 74 77 6F 27 73 20 63 6F 6D 70 6C 69 6D 65 6E e data is not in two's complimen 0000CCA0 74 20 66 6F 72 6D 20 79 6F 75 20 63 6F 6E 76 65 72 74 20 69 74 20 74 6F 20 74 77 6F 27 73 20 63 t form you convert it to two's c 0000CCC0 6F 6D 70 6C 69 6D 65 6E 74 20 6F 6E 20 74 68 65 20 64 6F 77 6E 6C 6F 61 64 2E 20 20 54 6F 20 64 ompliment on the download. To d 0000CCE0 6F 20 74 68 69 73 2C 20 75 73 65 20 74 68 65 20 44 4D 41 20 63 6F 6E 74 72 6F 6C 20 62 69 74 73 o this, use the DMA control bits 0000CD00 20 28 73 65 65 20 41 70 70 65 6E 64 69 78 20 44 29 2E 20 20 41 6E 79 20 64 61 74 61 20 79 6F 75 (see Appendix D). Any data you 0000CD20 20 55 70 6C 6F 61 64 20 66 72 6F 6D 20 74 68 65 20 63 61 72 64 20 74 68 61 74 20 69 73 20 70 6C Upload from the card that is pl 0000CD40 61 79 61 62 6C 65 20 77 69 6C 6C 20 62 65 20 69 6E 20 74 77 6F 27 73 20 63 6F 6D 70 6C 69 6D 65 ayable will be in two's complime 0000CD60 6E 74 20 66 6F 72 6D 61 74 2E 0D 0A 0D 0A 0D 0A 0D 0A 33 2E 34 20 57 68 61 74 20 61 72 65 20 53 nt format.♪◙♪◙♪◙♪◙3.4 What are S 0000CD80 61 6D 70 6C 65 73 3F 0D 0A 0D 0A 41 73 20 6D 65 6E 74 69 6F 6E 65 64 20 61 62 6F 76 65 2C 20 61 amples?♪◙♪◙As mentioned above, a 0000CDA0 20 27 73 61 6D 70 6C 65 27 20 69 73 20 72 61 77 20 64 61 74 61 20 74 68 61 74 20 68 61 73 20 62 'sample' is raw data that has b 0000CDC0 65 65 6E 20 72 65 63 6F 72 64 65 64 20 75 73 69 6E 67 20 74 68 65 20 47 55 53 20 6F 72 20 61 6E een recorded using the GUS or an 0000CDE0 6F 74 68 65 72 20 64 69 67 69 74 61 6C 20 73 6F 75 6E 64 20 72 65 63 6F 72 64 69 6E 67 20 64 65 other digital sound recording de 0000CE00 76 69 63 65 2E 20 20 4D 6F 73 74 20 6F 66 20 74 68 65 73 65 20 66 69 6C 65 73 20 77 69 6C 6C 20 vice. Most of these files will 0000CE20 68 61 76 65 20 65 78 74 65 6E 73 69 6F 6E 73 20 6F 66 20 2E 53 4E 44 20 6F 72 20 2E 57 41 56 2E have extensions of .SND or .WAV. 0000CE40 20 20 54 68 65 72 65 20 61 72 65 20 6F 74 68 65 72 20 65 78 74 65 6E 73 69 6F 6E 73 20 61 76 61 There are other extensions ava 0000CE60 69 6C 61 62 6C 65 2C 20 62 75 74 20 74 68 65 73 65 20 61 72 65 20 74 68 65 20 6D 6F 73 74 20 63 ilable, but these are the most c 0000CE80 6F 6D 6D 6F 6E 2E 0D 0A 0D 0A 41 20 74 65 63 68 6E 69 71 75 65 20 6B 6E 6F 77 6E 20 61 73 20 27 ommon.♪◙♪◙A technique known as ' 0000CEA0 66 72 65 71 75 65 6E 63 79 20 73 68 69 66 74 69 6E 67 27 20 69 73 20 73 6F 6D 65 74 69 6D 65 73 frequency shifting' is sometimes 0000CEC0 20 75 73 65 64 20 74 6F 20 70 72 6F 64 75 63 65 20 61 6C 74 65 72 6E 61 74 65 20 27 6E 6F 74 65 used to produce alternate 'note 0000CEE0 73 27 20 6F 66 20 61 20 73 70 65 63 69 66 69 65 64 20 69 6E 73 74 72 75 6D 65 6E 74 2E 20 20 41 s' of a specified instrument. A 0000CF00 6D 69 67 61 20 27 2E 4D 4F 44 27 20 66 69 6C 65 20 70 6C 61 79 65 72 73 20 75 73 65 20 74 68 69 miga '.MOD' file players use thi 0000CF20 73 20 74 65 63 68 6E 69 71 75 65 20 74 6F 20 6D 61 6B 65 20 61 20 73 69 6E 67 6C 65 20 69 6E 73 s technique to make a single ins 0000CF40 74 72 75 6D 65 6E 74 20 73 61 6D 70 6C 65 20 73 6F 75 6E 64 20 64 69 66 66 65 72 65 6E 74 6C 79 trument sample sound differently 0000CF60 20 66 6F 72 20 65 61 63 68 20 6E 6F 74 65 20 70 6C 61 79 65 64 20 6F 76 65 72 20 33 20 6F 63 74 for each note played over 3 oct 0000CF80 61 76 65 73 2E 20 20 45 73 73 65 6E 74 69 61 6C 6C 79 2C 20 74 68 65 20 74 65 63 68 6E 69 71 75 aves. Essentially, the techniqu 0000CFA0 65 20 75 74 69 6C 69 7A 65 73 20 74 68 65 20 31 32 2D 6E 6F 74 65 20 73 63 61 6C 65 20 77 69 74 e utilizes the 12-note scale wit 0000CFC0 68 20 74 68 65 20 70 72 69 6E 63 69 70 6C 65 20 74 68 61 74 20 65 61 63 68 20 68 61 6C 66 2D 73 h the principle that each half-s 0000CFE0 74 65 70 20 69 73 20 31 2F 31 32 20 72 6F 6F 74 20 6F 66 20 32 20 74 69 6D 65 73 20 74 68 65 20 tep is 1/12 root of 2 times the 0000D000 76 61 6C 75 65 20 6F 66 20 69 74 73 20 70 72 65 64 65 63 65 73 73 6F 72 20 69 6E 20 66 72 65 71 value of its predecessor in freq 0000D020 75 65 6E 63 79 20 28 77 6F 72 6B 69 6E 67 20 66 72 6F 6D 20 6C 65 66 74 20 74 6F 20 72 69 67 68 uency (working from left to righ 0000D040 74 29 2E 20 46 6F 72 20 69 6E 73 74 61 6E 63 65 2C 20 69 66 20 77 65 20 74 61 6B 65 20 43 20 61 t). For instance, if we take C a 0000D060 73 20 28 31 2A 66 72 65 71 75 65 6E 63 79 29 2C 20 43 23 20 77 6F 75 6C 64 20 62 65 20 28 31 2E s (1*frequency), C# would be (1. 0000D080 30 35 39 34 36 2A 66 72 65 71 75 65 6E 63 79 29 2E 20 20 53 69 6E 63 65 20 74 68 65 72 65 20 61 05946*frequency). Since there a 0000D0A0 72 65 20 31 32 20 6E 6F 74 65 73 20 69 6E 20 61 6E 20 6F 63 74 61 76 65 2C 20 77 68 65 6E 20 79 re 12 notes in an octave, when y 0000D0C0 6F 75 20 72 65 61 63 68 20 42 20 28 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 20 6F 63 74 61 76 ou reach B (the end of the octav 0000D0E0 65 29 2C 20 74 68 65 20 6E 65 78 74 20 6E 6F 74 65 20 69 73 20 28 32 2A 66 72 65 71 75 65 6E 63 e), the next note is (2*frequenc 0000D100 79 29 20 2D 20 73 6F 20 64 6F 75 62 6C 69 6E 67 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 66 72 y) - so doubling the original fr 0000D120 65 71 75 65 6E 63 79 20 6D 65 61 6E 73 20 79 6F 75 20 72 61 69 73 65 20 74 68 65 20 6E 6F 74 65 equency means you raise the note 0000D140 20 6F 6E 65 20 6F 63 74 61 76 65 2E 0D 0A 0D 0A 0C 54 68 65 72 65 20 69 73 20 61 20 64 72 61 77 one octave.♪◙♪◙♀There is a draw 0000D160 62 61 63 6B 20 74 6F 20 74 68 65 20 74 65 63 68 6E 69 71 75 65 20 6D 65 6E 74 69 6F 6E 65 64 20 back to the technique mentioned 0000D180 61 62 6F 76 65 2E 20 20 49 66 20 61 20 73 61 6D 70 6C 65 20 77 61 73 20 72 65 63 6F 72 64 65 64 above. If a sample was recorded 0000D1A0 20 61 74 20 31 31 6B 48 7A 20 66 6F 72 20 74 77 6F 20 73 65 63 6F 6E 64 73 2C 20 61 6E 64 20 74 at 11kHz for two seconds, and t 0000D1C0 68 65 6E 20 70 6C 61 79 65 64 20 62 61 63 6B 20 61 74 20 32 32 6B 48 7A 20 74 6F 20 72 61 69 73 hen played back at 22kHz to rais 0000D1E0 65 20 74 68 65 20 6E 6F 74 65 20 6F 6E 65 20 6F 63 74 61 76 65 2C 20 69 74 20 77 6F 75 6C 64 20 e the note one octave, it would 0000D200 6F 6E 6C 79 20 70 6C 61 79 20 66 6F 72 20 6F 6E 65 20 73 65 63 6F 6E 64 20 69 6E 73 74 65 61 64 only play for one second instead 0000D220 20 6F 66 20 74 77 6F 2E 20 20 54 68 69 73 20 69 73 20 62 65 63 61 75 73 65 20 79 6F 75 20 68 61 of two. This is because you ha 0000D240 76 65 20 28 31 31 30 32 35 20 2A 20 32 20 73 65 63 6F 6E 64 73 29 20 3D 20 32 32 30 35 30 20 62 ve (11025 * 2 seconds) = 22050 b 0000D260 79 74 65 73 20 6F 66 20 64 61 74 61 2E 20 20 49 66 20 79 6F 75 20 70 6C 61 79 20 74 68 69 73 20 ytes of data. If you play this 0000D280 61 74 20 32 32 30 35 30 20 48 7A 2C 20 6F 72 20 32 32 30 35 30 20 62 79 74 65 73 20 70 65 72 20 at 22050 Hz, or 22050 bytes per 0000D2A0 73 65 63 6F 6E 64 2C 20 79 6F 75 20 77 69 6C 6C 20 68 61 76 65 20 6F 6E 65 20 31 20 73 65 63 6F second, you will have one 1 seco 0000D2C0 6E 64 20 6F 66 20 73 6F 75 6E 64 2E 20 20 54 68 75 73 2C 20 69 66 20 79 6F 75 20 72 61 69 73 65 nd of sound. Thus, if you raise 0000D2E0 20 6F 72 20 6C 6F 77 65 72 20 74 68 65 20 66 72 65 71 75 65 6E 63 79 20 69 6E 20 74 68 69 73 20 or lower the frequency in this 0000D300 6D 61 6E 6E 65 72 2C 20 74 68 65 20 73 6F 75 6E 64 20 77 69 6C 6C 20 72 65 73 70 65 63 74 69 76 manner, the sound will respectiv 0000D320 65 6C 79 20 74 61 6B 65 20 61 20 73 68 6F 72 74 65 72 20 6F 72 20 6C 6F 6E 67 65 72 20 61 6D 6F ely take a shorter or longer amo 0000D340 75 6E 74 20 6F 66 20 74 69 6D 65 20 74 6F 20 70 6C 61 79 2E 0D 0A 0D 0A 41 20 63 6F 6D 6D 6F 6E unt of time to play.♪◙♪◙A common 0000D360 20 70 72 6F 62 6C 65 6D 20 77 69 74 68 20 73 61 6D 70 6C 65 73 20 69 73 20 74 68 61 74 20 74 68 problem with samples is that th 0000D380 65 20 73 74 61 72 74 20 61 6E 64 2F 6F 72 20 65 6E 64 20 6F 66 20 74 68 65 6D 20 69 73 20 61 74 e start and/or end of them is at 0000D3A0 20 61 20 72 65 61 73 6F 6E 61 62 6C 79 20 68 69 67 68 20 61 6D 70 6C 69 74 75 64 65 2E 20 20 57 a reasonably high amplitude. W 0000D3C0 68 65 6E 20 74 68 65 20 73 61 6D 70 6C 65 20 73 74 61 72 74 73 20 61 6E 64 2F 6F 72 20 73 74 6F hen the sample starts and/or sto 0000D3E0 70 73 2C 20 74 68 65 20 76 61 6C 75 65 73 20 66 6C 6F 77 69 6E 67 20 74 68 72 6F 75 67 68 20 74 ps, the values flowing through t 0000D400 68 65 20 44 41 43 73 20 6F 6E 20 74 68 65 20 63 61 72 64 20 63 68 61 6E 67 65 20 73 75 64 64 65 he DACs on the card change sudde 0000D420 6E 6C 79 2E 20 20 54 68 69 73 20 75 73 75 61 6C 6C 79 20 72 65 73 75 6C 74 73 20 69 6E 20 61 6E nly. This usually results in an 0000D440 20 61 75 64 69 62 6C 65 20 27 63 6C 69 63 6B 27 20 6F 72 20 27 70 6F 70 27 20 74 68 72 6F 75 67 audible 'click' or 'pop' throug 0000D460 68 20 74 68 65 20 73 70 65 61 6B 65 72 73 2E 20 20 53 65 63 74 69 6F 6E 20 33 2E 38 20 6C 6F 6F h the speakers. Section 3.8 loo 0000D480 6B 73 20 61 74 20 74 68 65 20 72 65 6D 6F 76 61 6C 20 6F 66 20 74 68 69 73 20 61 6E 64 20 6F 74 ks at the removal of this and ot 0000D4A0 68 65 72 20 74 79 70 65 73 20 6F 66 20 63 6C 69 63 6B 73 20 61 6E 64 20 70 6F 70 73 20 74 68 61 her types of clicks and pops tha 0000D4C0 6E 20 63 61 6E 20 6F 63 63 75 72 2E 0D 0A 0D 0A 0D 0A 0D 0A 33 2E 35 20 55 73 69 6E 67 20 56 6F n can occur.♪◙♪◙♪◙♪◙3.5 Using Vo 0000D4E0 69 63 65 73 0D 0A 0D 0A 44 65 70 65 6E 64 69 6E 67 20 6F 6E 20 74 68 65 20 6E 75 6D 62 65 72 20 ices♪◙♪◙Depending on the number 0000D500 79 6F 75 20 63 68 6F 6F 73 65 20 77 68 65 6E 20 6F 70 65 6E 69 6E 67 20 28 6F 72 20 69 6E 69 74 you choose when opening (or init 0000D520 69 61 6C 69 7A 69 6E 67 29 20 74 68 65 20 63 61 72 64 2C 20 79 6F 75 20 63 61 6E 20 75 73 65 20 ializing) the card, you can use 0000D540 61 6E 79 77 68 65 72 65 20 66 72 6F 6D 20 31 34 20 74 6F 20 33 32 20 76 6F 69 63 65 73 20 61 74 anywhere from 14 to 32 voices at 0000D560 20 6F 6E 63 65 2E 20 20 59 6F 75 20 63 61 6E 20 6C 6F 6F 6B 20 61 74 20 74 68 65 20 76 6F 69 63 once. You can look at the voic 0000D580 65 73 20 61 73 20 74 68 6F 73 65 20 6F 66 20 74 68 65 20 70 65 6F 70 6C 65 20 69 6E 20 61 20 63 es as those of the people in a c 0000D5A0 68 6F 69 72 2E 20 20 59 6F 75 20 63 61 6E 20 74 65 6C 6C 20 74 68 65 20 76 6F 69 63 65 73 20 74 hoir. You can tell the voices t 0000D5C0 6F 20 73 74 61 72 74 20 6F 72 20 73 74 6F 70 20 73 69 6E 67 69 6E 67 20 28 55 6C 74 72 61 53 74 o start or stop singing (UltraSt 0000D5E0 61 72 74 56 6F 69 63 65 2C 20 55 6C 74 72 61 53 74 6F 70 56 6F 69 63 65 29 2C 20 73 69 6E 67 20 artVoice, UltraStopVoice), sing 0000D600 61 74 20 61 20 73 70 65 63 69 66 69 65 64 20 70 69 74 63 68 20 6F 72 20 66 72 65 71 75 65 6E 63 at a specified pitch or frequenc 0000D620 79 20 28 55 6C 74 72 61 53 65 74 46 72 65 71 75 65 6E 63 79 29 2C 20 6C 6F 75 64 6C 79 20 6F 72 y (UltraSetFrequency), loudly or 0000D640 20 73 6F 66 74 6C 79 20 28 55 6C 74 72 61 53 65 74 56 6F 6C 75 6D 65 2C 20 55 6C 74 72 61 53 65 softly (UltraSetVolume, UltraSe 0000D660 74 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 29 2C 20 61 6E 64 20 61 74 20 61 20 73 70 65 63 69 66 69 tLinearVolume), and at a specifi 0000D680 65 64 20 62 61 6C 61 6E 63 65 20 28 55 6C 74 72 61 53 65 74 42 61 6C 61 6E 63 65 29 2E 0D 0A 0D ed balance (UltraSetBalance).♪◙♪ 0000D6A0 0A 54 68 65 20 65 78 63 69 74 69 6E 67 20 74 68 69 6E 67 20 61 62 6F 75 74 20 74 68 65 20 76 6F ◙The exciting thing about the vo 0000D6C0 69 63 65 73 20 69 73 20 74 68 61 74 20 61 6E 79 20 6E 75 6D 62 65 72 20 6F 66 20 74 68 65 6D 20 ices is that any number of them 0000D6E0 63 61 6E 20 62 65 20 70 6C 61 79 65 64 20 61 74 20 6F 6E 63 65 2C 20 61 6E 64 20 74 68 65 72 65 can be played at once, and there 0000D700 20 69 73 20 6E 6F 20 65 78 74 72 61 20 64 72 61 69 6E 20 6F 6E 20 74 68 65 20 43 50 55 20 69 66 is no extra drain on the CPU if 0000D720 20 79 6F 75 20 61 72 65 20 70 6C 61 79 69 6E 67 20 61 20 6C 61 72 67 65 72 20 6E 75 6D 62 65 72 you are playing a larger number 0000D740 20 6F 66 20 76 6F 69 63 65 73 20 61 73 20 6F 70 70 6F 73 65 64 20 74 6F 20 61 20 73 6D 61 6C 6C of voices as opposed to a small 0000D760 65 72 20 6F 6E 65 2E 20 20 41 6C 73 6F 2C 20 74 68 65 73 65 20 76 6F 69 63 65 73 20 63 61 6E 20 er one. Also, these voices can 0000D780 70 6C 61 79 20 61 6E 79 20 74 79 70 65 20 6F 66 20 73 61 6D 70 6C 65 64 20 73 6F 75 6E 64 2C 20 play any type of sampled sound, 0000D7A0 38 2D 20 6F 72 20 31 36 2D 62 69 74 2C 20 61 74 20 66 72 65 71 75 65 6E 63 69 65 73 20 75 70 20 8- or 16-bit, at frequencies up 0000D7C0 74 6F 20 34 34 2E 31 20 6B 48 7A 2E 20 20 41 6E 79 20 6E 75 6D 62 65 72 20 6F 66 20 76 6F 69 63 to 44.1 kHz. Any number of voic 0000D7E0 65 73 20 63 61 6E 20 65 76 65 6E 20 70 6C 61 79 20 74 68 65 20 73 61 6D 65 20 73 61 6D 70 6C 65 es can even play the same sample 0000D800 20 61 74 20 74 68 65 20 73 61 6D 65 20 74 69 6D 65 2E 20 20 0D 0A 0D 0A 54 6F 20 73 74 61 72 74 at the same time. ♪◙♪◙To start 0000D820 20 75 70 20 61 20 76 6F 69 63 65 2C 20 79 6F 75 20 75 73 65 20 74 68 65 20 55 6C 74 72 61 53 74 up a voice, you use the UltraSt 0000D840 61 72 74 56 6F 69 63 65 20 6F 72 20 55 6C 74 72 61 50 72 69 6D 65 56 6F 69 63 65 2F 20 55 6C 74 artVoice or UltraPrimeVoice/ Ult 0000D860 72 61 47 6F 56 6F 69 63 65 20 63 6F 6D 62 69 6E 61 74 69 6F 6E 2E 20 20 45 69 74 68 65 72 20 6F raGoVoice combination. Either o 0000D880 6E 65 20 6F 66 20 74 68 65 73 65 20 74 77 6F 20 72 6F 75 74 69 6E 65 73 20 77 69 6C 6C 20 61 73 ne of these two routines will as 0000D8A0 6B 20 66 6F 72 20 61 20 76 6F 69 63 65 20 6E 75 6D 62 65 72 2C 20 61 73 20 77 65 6C 6C 20 61 73 k for a voice number, as well as 0000D8C0 20 61 20 62 65 67 69 6E 2C 20 73 74 61 72 74 2C 20 61 6E 64 20 65 6E 64 20 6C 6F 63 61 74 69 6F a begin, start, and end locatio 0000D8E0 6E 2E 20 20 54 68 65 20 72 65 61 73 6F 6E 20 62 65 67 69 6E 20 61 6E 64 20 73 74 61 72 74 20 6C n. The reason begin and start l 0000D900 6F 63 61 74 69 6F 6E 73 20 61 72 65 20 62 6F 74 68 20 61 73 6B 65 64 20 66 6F 72 20 69 73 20 69 ocations are both asked for is i 0000D920 6E 20 63 61 73 65 20 79 6F 75 20 77 69 73 68 20 74 6F 20 70 6C 61 79 20 61 20 73 61 6D 70 6C 65 n case you wish to play a sample 0000D940 20 62 61 63 6B 77 61 72 64 73 20 6F 72 20 6C 6F 6F 70 20 61 74 20 61 20 73 70 65 63 69 66 69 63 backwards or loop at a specific 0000D960 20 70 6F 73 69 74 69 6F 6E 20 77 68 69 63 68 20 69 73 20 6E 6F 74 20 74 68 65 20 73 74 61 72 74 position which is not the start 0000D980 2E 20 20 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 64 69 61 67 72 61 6D 20 6D 61 79 20 6D 61 6B . The following diagram may mak 0000D9A0 65 20 74 68 69 73 20 63 6C 65 61 72 65 72 3A 0D 0A 0D 0A 46 6F 72 77 61 72 64 20 70 6C 61 79 69 e this clearer:♪◙♪◙Forward playi 0000D9C0 6E 67 3A 0D 0A 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 2D 2D 2D 2D 2D 2D 2D 2D 3E ng:♪◙================♪◙--------> 0000D9E0 2D 2D 2D 2D 2D 2D 2D 3E 2D 2D 2D 2D 2D 2D 2D 2D 3E 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 20 20 20 20 ------->-------->------|♪◙ 0000DA00 20 20 20 20 20 20 20 5E 2D 2D 2D 2D 2D 2D 2D 2D 2D 3C 2D 2D 2D 2D 2D 2D 3C 2D 7C 0D 0A 42 65 67 ^---------<------<-|♪◙Beg 0000DA20 69 6E 20 2E 2E 2E 2E 2E 2E 20 53 74 61 72 74 20 4C 6F 6F 70 2E 2E 2E 2E 2E 2E 2E 2E 2E 20 45 6E in ...... Start Loop......... En 0000DA40 64 20 4C 6F 6F 70 0D 0A 6C 6F 63 61 74 69 6F 6E 20 2E 2E 2E 20 6C 6F 63 61 74 69 6F 6E 20 20 2E d Loop♪◙location ... location . 0000DA60 2E 2E 2E 2E 2E 2E 2E 2E 20 6C 6F 63 61 74 69 6F 6E 0D 0A 0D 0A 42 61 63 6B 77 61 72 64 20 70 6C ........ location♪◙♪◙Backward pl 0000DA80 61 79 69 6E 67 3A 0D 0A 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 7C 2D 2D 2D 2D aying:♪◙=================♪◙|---- 0000DAA0 2D 2D 3C 2D 2D 2D 2D 2D 3C 2D 2D 2D 2D 2D 2D 3C 2D 2D 2D 2D 2D 2D 3C 2D 2D 2D 2D 2D 2D 2D 2D 2D --<-----<------<------<--------- 0000DAC0 2D 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 3E 2D 2D 2D 2D 2D 3E -♪◙ |--------->-----> 0000DAE0 2D 2D 2D 2D 3E 2D 2D 2D 5E 0D 0A 45 6E 64 20 4C 6F 6F 70 2E 2E 2E 2E 20 53 74 61 72 74 20 4C 6F ---->---^♪◙End Loop.... Start Lo 0000DB00 6F 70 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 20 42 65 67 69 6E 0D 0A 20 20 20 6C 6F 63 61 op............... Begin♪◙ loca 0000DB20 74 69 6F 6E 20 2E 2E 2E 2E 20 6C 6F 63 61 74 69 6F 6E 20 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E tion .... location ............. 0000DB40 2E 2E 2E 6C 6F 63 61 74 69 6F 6E 0D 0A 0D 0A 41 20 76 6F 69 63 65 20 73 74 61 72 74 73 20 61 74 ...location♪◙♪◙A voice starts at 0000DB60 20 74 68 65 20 27 62 65 67 69 6E 27 20 6C 6F 63 61 74 69 6F 6E 2C 20 61 6E 64 20 63 6F 6E 74 69 the 'begin' location, and conti 0000DB80 6E 75 65 73 20 70 6C 61 79 69 6E 67 20 75 6E 74 69 6C 20 69 74 20 68 69 74 73 20 74 68 65 20 27 nues playing until it hits the ' 0000DBA0 65 6E 64 27 20 6C 6F 63 61 74 69 6F 6E 2E 20 20 49 66 20 74 68 65 20 27 62 65 67 69 6E 27 20 69 end' location. If the 'begin' i 0000DBC0 73 20 61 20 67 72 65 61 74 65 72 20 6C 6F 63 61 74 69 6F 6E 20 74 68 61 6E 20 74 68 65 20 27 65 s a greater location than the 'e 0000DBE0 6E 64 27 2C 20 74 68 65 20 73 61 6D 70 6C 65 20 77 69 6C 6C 20 62 65 20 70 6C 61 79 65 64 20 62 nd', the sample will be played b 0000DC00 61 63 6B 77 61 72 64 73 2E 20 20 54 68 65 20 27 73 74 61 72 74 27 20 6C 6F 63 61 74 69 6F 6E 20 ackwards. The 'start' location 0000DC20 69 73 20 74 68 65 20 73 74 61 72 74 20 6F 66 20 74 68 65 20 6C 6F 6F 70 20 69 66 20 6C 6F 6F 70 is the start of the loop if loop 0000DC40 69 6E 67 20 69 73 20 65 6E 61 62 6C 65 64 20 66 6F 72 20 74 68 65 20 76 6F 69 63 65 20 62 65 67 ing is enabled for the voice beg 0000DC60 69 6E 20 70 6C 61 79 65 64 2E 20 20 44 65 70 65 6E 64 69 6E 67 20 6F 6E 20 77 68 65 74 68 65 72 in played. Depending on whether 0000DC80 20 61 6E 64 20 68 6F 77 20 79 6F 75 20 77 69 73 68 20 74 6F 20 6C 6F 6F 70 20 74 68 65 20 76 6F and how you wish to loop the vo 0000DCA0 69 63 65 2C 20 79 6F 75 20 63 61 6E 20 6D 61 6B 65 20 76 61 72 69 6F 75 73 20 65 66 66 65 63 74 ice, you can make various effect 0000DCC0 73 20 6F 63 63 75 72 2E 20 20 4C 6F 6F 70 69 6E 67 20 6F 66 20 74 68 65 20 76 6F 69 63 65 73 20 s occur. Looping of the voices 0000DCE0 69 73 20 64 69 73 63 75 73 73 65 64 20 69 6E 20 74 68 65 20 6E 65 78 74 20 73 65 63 74 69 6F 6E is discussed in the next section 0000DD00 2E 0D 0A 0D 0A 57 68 65 6E 20 79 6F 75 20 68 61 76 65 20 66 69 6E 69 73 68 65 64 20 77 69 74 68 .♪◙♪◙When you have finished with 0000DD20 20 61 20 76 6F 69 63 65 2C 20 59 6F 75 20 73 68 6F 75 6C 64 20 73 74 6F 70 20 69 74 20 28 55 6C a voice, You should stop it (Ul 0000DD40 74 72 61 53 74 6F 70 56 6F 69 63 65 29 2C 20 61 6E 64 20 64 65 61 6C 6C 6F 63 61 74 65 20 69 74 traStopVoice), and deallocate it 0000DD60 20 28 55 6C 74 72 61 46 72 65 65 56 6F 69 63 65 29 2E 20 20 50 6C 65 61 73 65 20 73 65 65 20 73 (UltraFreeVoice). Please see s 0000DD80 65 63 74 69 6F 6E 20 33 2E 38 20 6F 6E 20 63 6C 69 63 6B 20 72 65 6D 6F 76 61 6C 20 66 6F 72 20 ection 3.8 on click removal for 0000DDA0 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 6E 20 70 72 6F 62 6C 65 6D 73 20 77 69 74 68 20 73 74 6F information on problems with sto 0000DDC0 70 70 69 6E 67 20 61 20 76 6F 69 63 65 20 61 62 72 75 70 74 6C 79 2E 0D 0A 0D 0A 0D 0A 33 2E 36 pping a voice abruptly.♪◙♪◙♪◙3.6 0000DDE0 20 56 6F 6C 75 6D 65 73 0D 0A 0D 0A 41 20 76 6F 6C 75 6D 65 20 69 73 20 61 76 61 69 6C 61 62 6C Volumes♪◙♪◙A volume is availabl 0000DE00 65 20 66 6F 72 20 65 61 63 68 20 76 6F 69 63 65 2E 20 20 49 66 20 74 68 65 20 76 6F 6C 75 6D 65 e for each voice. If the volume 0000DE20 20 66 6F 72 20 61 20 76 6F 69 63 65 20 69 73 20 6E 6F 74 20 73 65 74 20 74 6F 20 7A 65 72 6F 2C for a voice is not set to zero, 0000DE40 20 74 68 65 20 64 61 74 61 20 61 74 20 74 68 65 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 68 65 the data at the position of the 0000DE60 20 76 6F 69 63 65 27 73 20 61 63 63 75 6D 75 6C 61 74 6F 72 20 77 69 6C 6C 20 62 65 20 73 75 6D voice's accumulator will be sum 0000DE80 6D 65 64 20 69 6E 74 6F 20 74 68 65 20 66 69 6E 61 6C 20 6F 75 74 70 75 74 2E 20 20 54 68 65 72 med into the final output. Ther 0000DEA0 65 66 6F 72 65 2C 20 69 74 20 69 73 20 69 6D 70 6F 72 74 61 6E 74 20 74 68 61 74 20 69 66 20 79 efore, it is important that if y 0000DEC0 6F 75 20 61 72 65 20 6E 6F 74 20 75 73 69 6E 67 20 61 20 76 6F 69 63 65 20 79 6F 75 20 73 68 6F ou are not using a voice you sho 0000DEE0 75 6C 64 20 73 65 74 20 69 74 27 73 20 76 6F 6C 75 6D 65 20 74 6F 20 7A 65 72 6F 2E 0D 0A 0D 0A uld set it's volume to zero.♪◙♪◙ 0000DF00 54 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 75 73 65 73 20 6C 6F 67 61 72 69 74 68 6D 69 63 20 The UltraSound uses logarithmic 0000DF20 76 6F 6C 75 6D 65 73 20 75 73 69 6E 67 20 61 6E 20 65 78 70 6F 6E 65 6E 74 20 61 6E 64 20 61 20 volumes using an exponent and a 0000DF40 6D 61 6E 74 69 73 73 61 2E 20 20 46 6F 72 20 64 65 74 61 69 6C 65 64 20 69 6E 66 6F 72 6D 61 74 mantissa. For detailed informat 0000DF60 69 6F 6E 20 61 62 6F 75 74 20 68 6F 77 20 74 68 65 20 76 6F 6C 75 6D 65 73 20 77 6F 72 6B 2C 20 ion about how the volumes work, 0000DF80 70 6C 65 61 73 65 20 73 65 65 20 73 65 63 74 69 6F 6E 20 32 2E 31 36 2E 20 20 41 73 20 61 6E 20 please see section 2.16. As an 0000DFA0 61 6C 74 65 72 6E 61 74 69 76 65 20 74 6F 20 75 73 69 6E 67 20 74 68 65 20 6C 6F 67 61 72 69 74 alternative to using the logarit 0000DFC0 68 6D 69 63 20 75 6E 69 74 73 2C 20 61 20 74 61 62 6C 65 20 68 61 73 20 62 65 65 6E 20 70 72 6F hmic units, a table has been pro 0000DFE0 76 69 64 65 64 20 69 6E 20 74 68 65 20 6C 6F 77 6C 65 76 65 6C 20 63 6F 64 65 20 77 68 69 63 68 vided in the lowlevel code which 0000E000 20 67 69 76 65 73 20 6C 69 6E 65 61 72 20 65 71 75 69 76 61 6C 65 6E 74 73 20 6F 66 20 74 68 65 gives linear equivalents of the 0000E020 20 66 75 6C 6C 20 76 6F 6C 75 6D 65 20 72 61 6E 67 65 2E 20 20 59 6F 75 20 63 61 6E 20 74 68 65 full volume range. You can the 0000E040 72 65 66 6F 72 65 20 75 73 65 20 74 68 65 20 6C 6F 67 61 72 69 74 68 6D 69 63 20 76 6F 6C 75 6D refore use the logarithmic volum 0000E060 65 20 72 6F 75 74 69 6E 65 73 20 6F 72 20 74 68 65 20 6C 69 6E 65 61 72 20 76 6F 6C 75 6D 65 20 e routines or the linear volume 0000E080 72 6F 75 74 69 6E 65 73 20 2D 20 77 68 69 63 68 65 76 65 72 20 79 6F 75 72 20 61 70 70 6C 69 63 routines - whichever your applic 0000E0A0 61 74 69 6F 6E 20 72 65 71 75 69 72 65 73 2E 0D 0A 0D 0A 56 6F 6C 75 6D 65 73 20 66 6F 72 20 65 ation requires.♪◙♪◙Volumes for e 0000E0C0 61 63 68 20 76 6F 69 63 65 20 6D 61 79 20 62 65 20 27 72 61 6D 70 65 64 27 2E 20 20 54 68 69 73 ach voice may be 'ramped'. This 0000E0E0 20 6D 65 61 6E 73 20 74 68 61 74 20 79 6F 75 20 63 61 6E 20 73 70 65 63 69 66 79 20 61 20 73 74 means that you can specify a st 0000E100 61 72 74 20 61 6E 64 20 65 6E 64 20 76 6F 6C 75 6D 65 2C 20 61 6E 64 20 74 68 65 20 63 61 72 64 art and end volume, and the card 0000E120 20 77 69 6C 6C 20 73 6D 6F 6F 74 68 6C 79 20 63 68 61 6E 67 65 20 74 68 65 20 76 6F 6C 75 6D 65 will smoothly change the volume 0000E140 20 66 72 6F 6D 20 74 68 65 20 62 65 67 69 6E 6E 69 6E 67 20 6C 65 76 65 6C 20 74 6F 20 74 68 65 from the beginning level to the 0000E160 20 65 6E 64 20 6C 65 76 65 6C 2E 20 20 49 6E 20 72 61 6D 70 69 6E 67 20 74 68 65 20 76 6F 6C 75 end level. In ramping the volu 0000E180 6D 65 73 2C 20 61 20 27 72 61 74 65 27 20 6D 75 73 74 20 62 65 20 73 70 65 63 69 66 69 65 64 20 mes, a 'rate' must be specified 0000E1A0 77 68 69 63 68 20 61 73 73 69 67 6E 73 20 68 6F 77 20 66 61 73 74 20 74 68 65 20 76 6F 6C 75 6D which assigns how fast the volum 0000E1C0 65 20 69 73 20 63 68 61 6E 67 65 64 2E 20 20 50 6C 65 61 73 65 20 73 65 65 20 73 65 63 74 69 6F e is changed. Please see sectio 0000E1E0 6E 20 32 2E 31 36 20 66 6F 72 20 64 65 74 61 69 6C 65 64 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 n 2.16 for detailed information 0000E200 6F 6E 20 68 6F 77 20 74 6F 20 73 65 74 20 75 70 20 61 20 76 6F 6C 75 6D 65 20 72 61 6D 70 20 72 on how to set up a volume ramp r 0000E220 61 74 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 33 2E 37 20 55 73 69 6E 67 20 4C 6F 6F 70 69 6E 67 0D 0A 0D ate.♪◙♪◙♪◙♪◙3.7 Using Looping♪◙♪ 0000E240 0A 59 6F 75 20 63 61 6E 20 6C 6F 6F 70 20 62 6F 74 68 20 76 6F 69 63 65 73 20 61 6E 64 20 76 6F ◙You can loop both voices and vo 0000E260 6C 75 6D 65 73 20 6F 6E 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 2E 20 20 4C 6F 6F 70 69 6E lumes on the UltraSound. Loopin 0000E280 67 20 61 20 76 6F 69 63 65 20 63 61 6E 20 72 65 73 75 6C 74 20 69 6E 20 73 75 73 74 61 69 6E 69 g a voice can result in sustaini 0000E2A0 6E 67 20 61 20 70 61 72 74 69 63 75 6C 61 72 20 6E 6F 74 65 2C 20 74 68 65 20 67 65 6E 65 72 61 ng a particular note, the genera 0000E2C0 74 69 6F 6E 20 6F 66 20 61 20 75 6E 69 71 75 65 20 73 6F 75 6E 64 2C 20 6F 72 20 61 6E 79 20 6E tion of a unique sound, or any n 0000E2E0 75 6D 62 65 72 20 6F 66 20 6F 74 68 65 72 20 27 73 70 65 63 69 61 6C 20 65 66 66 65 63 74 73 27 umber of other 'special effects' 0000E300 2E 20 20 4C 6F 6F 70 69 6E 67 20 74 68 65 20 76 6F 6C 75 6D 65 20 63 61 6E 20 72 65 73 75 6C 74 . Looping the volume can result 0000E320 20 69 6E 20 61 20 74 72 65 6D 65 6C 6F 20 65 66 66 65 63 74 20 61 74 20 76 61 72 69 6F 75 73 20 in a tremelo effect at various 0000E340 69 6E 74 65 72 76 61 6C 73 2E 0D 0A 0D 0A 4C 6F 6F 70 69 6E 67 20 61 20 73 61 6D 70 6C 65 20 69 intervals.♪◙♪◙Looping a sample i 0000E360 73 20 61 20 73 69 6D 70 6C 65 20 74 61 73 6B 20 6F 66 20 73 65 74 74 69 6E 67 20 74 68 65 20 6D s a simple task of setting the m 0000E380 6F 64 65 20 62 69 74 73 20 77 68 65 6E 20 73 70 65 63 69 66 79 69 6E 67 20 74 68 65 20 73 74 61 ode bits when specifying the sta 0000E3A0 72 74 20 6F 66 20 61 20 76 6F 69 63 65 20 28 74 68 72 6F 75 67 68 20 55 6C 74 72 61 50 72 69 6D rt of a voice (through UltraPrim 0000E3C0 65 56 6F 69 63 65 2C 20 55 6C 74 72 61 53 74 61 72 74 56 6F 69 63 65 29 2C 20 6F 72 20 77 68 65 eVoice, UltraStartVoice), or whe 0000E3E0 6E 20 75 73 69 6E 67 20 55 6C 74 72 61 53 65 74 4C 6F 6F 70 4D 6F 64 65 2E 20 20 53 65 65 20 61 n using UltraSetLoopMode. See a 0000E400 70 70 65 6E 64 69 78 20 43 20 66 6F 72 20 61 20 64 65 66 69 6E 69 74 69 6F 6E 20 6F 66 20 77 68 ppendix C for a definition of wh 0000E420 69 63 68 20 62 69 74 73 20 69 6E 20 74 68 65 20 6D 6F 64 65 20 62 79 74 65 20 63 6F 6E 74 72 6F ich bits in the mode byte contro 0000E440 6C 20 6C 6F 6F 70 69 6E 67 2E 20 20 41 6C 73 6F 2C 20 50 61 73 63 61 6C 20 75 73 65 72 73 20 73 l looping. Also, Pascal users s 0000E460 68 6F 75 6C 64 20 62 65 20 61 77 61 72 65 20 6F 66 20 74 68 65 20 63 6F 6E 73 74 61 6E 74 73 20 hould be aware of the constants 0000E480 74 68 61 74 20 61 72 65 20 61 76 61 69 6C 61 62 6C 65 20 66 6F 72 20 75 73 65 20 69 6E 73 74 65 that are available for use inste 0000E4A0 61 64 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20 33 2E 31 33 29 2E 0D 0A 0D 0A 4C 6F 6F 70 69 6E ad (see section 3.13).♪◙♪◙Loopin 0000E4C0 67 20 74 68 65 20 76 6F 6C 75 6D 65 20 69 73 20 65 73 73 65 6E 74 69 61 6C 6C 79 20 61 73 20 73 g the volume is essentially as s 0000E4E0 69 6D 70 6C 65 20 61 73 20 6C 6F 6F 70 69 6E 67 20 61 20 76 6F 69 63 65 2E 20 20 57 68 65 6E 20 imple as looping a voice. When 0000E500 73 70 65 63 69 66 79 69 6E 67 20 74 68 65 20 76 6F 6C 75 6D 65 20 66 6F 72 20 61 20 70 61 72 74 specifying the volume for a part 0000E520 69 63 75 6C 61 72 20 76 6F 69 63 65 20 28 75 73 69 6E 67 20 55 6C 74 72 61 53 65 74 56 6F 6C 75 icular voice (using UltraSetVolu 0000E540 6D 65 20 6F 72 20 55 6C 74 72 61 53 65 74 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 29 2C 20 79 6F 75 me or UltraSetLinearVolume), you 0000E560 20 73 65 74 20 74 68 65 20 76 6F 6C 75 6D 65 20 6D 6F 64 65 20 62 79 74 65 20 64 65 70 65 6E 64 set the volume mode byte depend 0000E580 69 6E 67 20 6F 6E 20 68 6F 77 20 79 6F 75 20 77 69 73 68 20 74 6F 20 6C 6F 6F 70 20 74 68 65 20 ing on how you wish to loop the 0000E5A0 76 6F 6C 75 6D 65 2E 20 20 53 65 65 20 61 70 70 65 6E 64 69 78 20 42 20 66 6F 72 20 61 20 64 65 volume. See appendix B for a de 0000E5C0 66 69 6E 69 74 69 6F 6E 20 6F 66 20 77 68 69 63 68 20 62 69 74 73 20 69 6E 20 74 68 65 20 6D 6F finition of which bits in the mo 0000E5E0 64 65 20 62 79 74 65 20 63 6F 6E 74 72 6F 6C 20 6C 6F 6F 70 69 6E 67 2E 0D 0A 0C 33 2E 38 20 43 de byte control looping.♪◙♀3.8 C 0000E600 6C 69 63 6B 73 20 61 6E 64 20 63 6C 69 63 6B 20 72 65 6D 6F 76 61 6C 0D 0A 0D 0A 41 73 20 77 61 licks and click removal♪◙♪◙As wa 0000E620 73 20 6D 65 6E 74 69 6F 6E 65 64 20 69 6E 20 61 20 66 65 77 20 6F 66 20 74 68 65 20 70 72 65 63 s mentioned in a few of the prec 0000E640 65 64 69 6E 67 20 73 65 63 74 69 6F 6E 73 2C 20 27 63 6C 69 63 6B 73 27 20 61 6E 64 20 27 70 6F eding sections, 'clicks' and 'po 0000E660 70 73 27 20 63 61 6E 20 6F 63 63 75 72 20 77 68 65 6E 20 74 68 65 20 6F 75 74 70 75 74 20 6F 66 ps' can occur when the output of 0000E680 20 74 68 65 20 44 41 43 20 63 68 61 6E 67 65 73 20 73 75 64 64 65 6E 6C 79 2E 20 20 54 68 69 73 the DAC changes suddenly. This 0000E6A0 20 69 73 20 74 68 65 20 6D 6F 73 74 20 66 72 65 71 75 65 6E 74 20 74 79 70 65 20 6F 66 20 63 6C is the most frequent type of cl 0000E6C0 69 63 6B 2C 20 73 69 6E 63 65 20 74 68 65 72 65 20 6D 61 79 20 6E 6F 74 20 62 65 20 61 20 77 61 ick, since there may not be a wa 0000E6E0 79 20 74 6F 20 63 6F 6E 74 72 6F 6C 20 74 68 65 20 64 61 74 61 20 76 61 6C 75 65 73 20 74 68 65 y to control the data values the 0000E700 20 76 6F 69 63 65 73 20 61 72 65 20 74 72 79 69 6E 67 20 74 6F 20 70 6C 61 79 2E 20 20 0D 0A 0D voices are trying to play. ♪◙♪ 0000E720 0A 49 6E 20 67 65 6E 65 72 61 6C 2C 20 69 74 20 69 73 20 6E 65 63 65 73 73 61 72 79 20 74 6F 20 ◙In general, it is necessary to 0000E740 72 65 6D 65 6D 62 65 72 20 74 68 61 74 20 61 6C 6C 20 76 6F 69 63 65 73 20 61 72 65 20 62 65 69 remember that all voices are bei 0000E760 6E 67 20 73 75 6D 6D 65 64 20 69 6E 20 74 6F 20 74 68 65 20 66 69 6E 61 6C 20 6F 75 74 70 75 74 ng summed in to the final output 0000E780 2C 20 65 76 65 6E 20 69 66 20 74 68 65 79 20 61 72 65 20 6E 6F 74 20 72 75 6E 6E 69 6E 67 2E 20 , even if they are not running. 0000E7A0 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 20 77 68 61 74 65 76 65 72 20 64 61 74 61 20 76 This means that whatever data v 0000E7C0 61 6C 75 65 20 74 68 61 74 20 74 68 65 20 76 6F 69 63 65 20 69 73 20 70 6F 69 6E 74 69 6E 67 20 alue that the voice is pointing 0000E7E0 61 74 20 69 73 20 63 6F 6E 74 72 69 62 75 74 69 6E 67 20 74 6F 20 74 68 65 20 73 75 6D 6D 61 74 at is contributing to the summat 0000E800 69 6F 6E 2E 20 20 49 74 20 69 73 20 69 6D 70 6F 72 74 61 6E 74 20 74 68 61 74 20 61 20 76 6F 69 ion. It is important that a voi 0000E820 63 65 20 62 65 20 70 6F 69 6E 74 65 64 20 74 6F 20 61 20 6B 6E 6F 77 6E 20 76 61 6C 75 65 20 61 ce be pointed to a known value a 0000E840 74 20 61 20 6B 6E 6F 77 6E 20 6C 6F 63 61 74 69 6F 6E 20 61 66 74 65 72 20 69 74 20 69 73 20 73 t a known location after it is s 0000E860 74 6F 70 70 65 64 20 73 6F 20 74 68 61 74 20 73 6F 6D 65 20 63 6F 6E 74 72 6F 6C 20 69 73 20 6B topped so that some control is k 0000E880 65 70 74 20 6F 76 65 72 20 69 74 2E 20 20 46 6F 72 20 69 6E 73 74 61 6E 63 65 2C 20 69 66 20 61 ept over it. For instance, if a 0000E8A0 20 76 6F 69 63 65 20 77 65 72 65 20 6C 65 66 74 20 61 74 20 77 68 65 72 65 65 76 65 72 20 74 68 voice were left at whereever th 0000E8C0 65 20 65 6E 64 20 70 6F 73 69 74 69 6F 6E 20 77 61 73 20 66 6F 72 20 74 68 65 20 6C 61 73 74 20 e end position was for the last 0000E8E0 74 69 6D 65 20 69 74 20 70 6C 61 79 65 64 2C 20 61 20 70 6F 70 20 63 6F 75 6C 64 20 6F 63 63 75 time it played, a pop could occu 0000E900 72 20 69 66 20 6E 65 77 20 64 61 74 61 20 77 65 72 65 20 65 69 74 68 65 72 20 44 4D 41 27 65 64 r if new data were either DMA'ed 0000E920 20 6F 72 20 70 6F 6B 65 64 20 6F 76 65 72 20 74 68 65 20 74 6F 70 20 6F 66 20 69 74 2E 20 20 46 or poked over the top of it. F 0000E940 6F 72 20 74 68 69 73 20 72 65 61 73 6F 6E 2C 20 69 74 20 69 73 20 72 65 63 6F 6D 6D 65 6E 64 65 or this reason, it is recommende 0000E960 64 20 74 68 61 74 20 61 20 76 6F 69 63 65 20 62 65 20 70 6F 69 6E 74 65 64 20 74 6F 20 61 20 6C d that a voice be pointed to a l 0000E980 6F 63 61 74 69 6F 6E 20 63 6F 6E 74 61 69 6E 69 6E 67 20 61 20 30 20 61 6E 64 20 74 68 61 74 20 ocation containing a 0 and that 0000E9A0 69 74 73 20 76 6F 6C 75 6D 65 20 62 65 20 73 65 74 20 74 6F 20 30 2E 20 20 41 74 20 74 68 61 74 its volume be set to 0. At that 0000E9C0 20 70 6F 69 6E 74 2C 20 74 68 65 20 76 6F 69 63 65 20 77 69 6C 6C 20 68 61 76 65 20 6E 6F 20 63 point, the voice will have no c 0000E9E0 6F 6E 74 72 69 62 75 74 69 6F 6E 20 74 6F 20 74 68 65 20 6F 75 74 70 75 74 2E 20 20 20 20 54 68 ontribution to the output. Th 0000EA00 65 72 65 20 61 72 65 20 73 6F 6D 65 20 70 61 72 74 69 63 75 6C 61 72 20 63 61 73 65 73 20 77 68 ere are some particular cases wh 0000EA20 65 72 65 20 63 6C 69 63 6B 73 20 6D 6F 73 74 20 66 72 65 71 75 65 6E 74 6C 79 20 6F 63 63 75 72 ere clicks most frequently occur 0000EA40 3A 0D 0A 0D 0A 44 75 72 69 6E 67 20 52 65 73 65 74 0D 0A 2D 09 42 65 63 61 75 73 65 20 6F 66 20 :♪◙♪◙During Reset♪◙-○Because of 0000EA60 74 68 65 20 77 61 79 20 74 68 65 20 63 61 72 64 20 69 73 20 72 65 73 65 74 2C 20 61 20 70 6F 70 the way the card is reset, a pop 0000EA80 20 63 61 6E 20 6F 63 63 75 72 20 74 68 72 6F 75 67 68 20 74 68 65 20 73 70 65 61 6B 65 72 73 20 can occur through the speakers 0000EAA0 77 68 65 6E 20 61 20 72 65 73 65 74 20 6F 63 63 75 72 73 2E 20 20 54 68 65 20 77 61 79 20 74 6F when a reset occurs. The way to 0000EAC0 20 72 65 6D 6F 76 65 20 74 68 69 73 20 70 6F 70 20 69 73 20 74 6F 20 64 69 73 61 62 6C 65 20 74 remove this pop is to disable t 0000EAE0 68 65 20 6F 75 74 70 75 74 2C 20 72 65 73 65 74 20 74 68 65 20 63 61 72 64 2C 20 61 6E 64 20 74 he output, reset the card, and t 0000EB00 68 65 6E 20 65 6E 61 62 6C 65 20 74 68 65 20 6F 75 74 70 75 74 20 61 67 61 69 6E 2E 0D 0A 0D 0A hen enable the output again.♪◙♪◙ 0000EB20 44 75 72 69 6E 67 20 61 20 62 61 6C 61 6E 63 65 20 73 77 65 65 70 0D 0A 2D 09 53 69 6E 63 65 20 During a balance sweep♪◙-○Since 0000EB40 74 68 65 72 65 20 61 72 65 20 6F 6E 6C 79 20 31 36 20 70 61 6E 20 70 6F 73 69 74 69 6F 6E 73 20 there are only 16 pan positions 0000EB60 61 6E 64 20 74 68 65 72 65 20 69 73 20 73 75 63 68 20 61 20 6C 61 72 67 65 20 6A 75 6D 70 20 62 and there is such a large jump b 0000EB80 65 74 77 65 65 6E 20 69 6E 64 69 76 69 64 75 61 6C 20 70 6F 73 69 74 69 6F 6E 73 2C 20 61 20 72 etween individual positions, a r 0000EBA0 65 6C 61 74 69 76 65 6C 79 20 66 61 73 74 20 62 61 6C 61 6E 63 65 20 73 77 65 65 70 20 66 72 6F elatively fast balance sweep fro 0000EBC0 6D 20 6F 6E 65 20 73 69 64 65 20 74 6F 20 61 6E 6F 74 68 65 72 20 6D 61 79 20 70 72 6F 64 75 63 m one side to another may produc 0000EBE0 65 20 63 6C 69 63 6B 73 2E 20 20 59 6F 75 20 63 61 6E 20 67 65 74 20 61 20 76 65 72 79 20 73 6D e clicks. You can get a very sm 0000EC00 6F 6F 74 68 20 62 61 6C 61 6E 63 65 20 73 77 65 65 70 20 75 73 69 6E 67 20 32 20 76 6F 69 63 65 ooth balance sweep using 2 voice 0000EC20 73 20 61 6E 64 20 76 6F 6C 75 6D 65 20 72 61 6D 70 69 6E 67 2E 20 20 53 65 74 20 6F 6E 65 20 76 s and volume ramping. Set one v 0000EC40 6F 69 63 65 20 75 70 20 74 6F 20 6F 6E 65 20 73 69 64 65 20 61 6E 64 20 6F 6E 65 20 74 6F 20 74 oice up to one side and one to t 0000EC60 68 65 20 6F 74 68 65 72 2C 20 61 6E 64 20 72 61 6D 70 20 6F 6E 65 20 64 6F 77 6E 20 66 72 6F 6D he other, and ramp one down from 0000EC80 20 76 6F 6C 75 6D 65 20 58 20 74 6F 20 7A 65 72 6F 20 61 74 20 74 68 65 20 73 61 6D 65 20 72 61 volume X to zero at the same ra 0000ECA0 74 65 20 61 73 20 79 6F 75 20 72 61 6D 70 20 74 68 65 20 6F 74 68 65 72 20 66 72 6F 6D 20 30 20 te as you ramp the other from 0 0000ECC0 75 70 20 74 6F 20 76 6F 6C 75 6D 65 20 58 2E 20 20 54 68 65 20 72 65 73 75 6C 74 20 69 73 20 61 up to volume X. The result is a 0000ECE0 20 76 65 72 79 20 73 6D 6F 6F 74 68 20 62 61 6C 61 6E 63 65 20 73 77 65 65 70 2E 0D 0A 0D 0A 57 very smooth balance sweep.♪◙♪◙W 0000ED00 68 65 6E 20 73 74 61 72 74 69 6E 67 20 61 6E 64 20 73 74 6F 70 70 69 6E 67 20 61 20 76 6F 69 63 hen starting and stopping a voic 0000ED20 65 0D 0A 2D 09 42 79 20 73 65 74 74 69 6E 67 20 75 70 20 66 61 69 72 6C 79 20 66 61 73 74 20 72 e♪◙-○By setting up fairly fast r 0000ED40 61 74 65 73 20 77 68 65 6E 20 61 20 73 61 6D 70 6C 65 20 73 74 61 72 74 20 6F 72 20 65 6E 64 73 ates when a sample start or ends 0000ED60 20 61 6E 64 20 72 61 6D 70 69 6E 67 20 75 70 20 6F 72 20 64 6F 77 6E 20 61 70 70 72 6F 70 72 69 and ramping up or down appropri 0000ED80 61 74 65 6C 79 2C 20 61 6E 79 20 70 6F 70 20 63 72 65 61 74 65 64 20 62 79 20 61 20 73 75 64 64 ately, any pop created by a sudd 0000EDA0 65 6E 20 63 68 61 6E 67 65 20 69 6E 20 74 68 65 20 44 41 43 20 76 61 6C 75 65 20 77 69 6C 6C 20 en change in the DAC value will 0000EDC0 62 65 20 73 75 6D 6D 65 64 20 69 6E 20 61 74 20 73 75 63 68 20 61 20 6C 6F 77 20 76 6F 6C 75 6D be summed in at such a low volum 0000EDE0 65 2C 20 69 74 20 77 69 6C 6C 20 6E 65 76 65 72 20 62 65 20 68 65 61 72 64 2E 0D 0A 0D 0A 45 6E e, it will never be heard.♪◙♪◙En 0000EE00 64 20 70 6F 69 6E 74 73 20 6E 6F 74 20 73 65 74 20 70 72 6F 70 65 72 6C 79 0D 0A 2D 09 4D 61 6B d points not set properly♪◙-○Mak 0000EE20 65 20 73 75 72 65 20 79 6F 75 72 20 65 6E 64 20 70 6F 69 6E 74 73 20 61 72 65 20 61 74 20 74 68 e sure your end points are at th 0000EE40 65 20 65 6E 64 73 20 6F 66 20 79 6F 75 72 20 73 61 6D 70 6C 65 73 2E 20 49 74 20 69 73 20 61 20 e ends of your samples. It is a 0000EE60 76 65 72 79 20 63 6F 6D 6D 6F 6E 20 6D 69 73 74 61 6B 65 20 74 6F 20 73 65 74 20 61 6E 20 65 6E very common mistake to set an en 0000EE80 64 20 70 6F 69 6E 74 20 74 6F 20 31 20 73 61 6D 70 6C 65 20 62 65 79 6F 6E 64 20 74 68 65 20 65 d point to 1 sample beyond the e 0000EEA0 6E 64 2E 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 69 66 20 61 20 73 61 6D 70 6C 65 20 69 73 20 nd. For example, if a sample is 0000EEC0 31 30 30 20 62 79 74 65 73 20 6C 6F 6E 67 20 61 6E 20 73 74 61 72 74 73 20 61 74 20 6C 6F 63 61 100 bytes long an starts at loca 0000EEE0 74 69 6F 6E 20 31 30 30 2C 20 74 68 65 20 65 6E 64 20 70 6F 69 6E 74 20 69 73 20 61 74 20 70 6F tion 100, the end point is at po 0000EF00 73 69 74 69 6F 6E 20 31 39 39 2C 20 4E 4F 54 20 70 6F 73 69 74 69 6F 6E 20 32 30 30 2E 20 20 41 sition 199, NOT position 200. A 0000EF20 6C 73 6F 2C 20 69 74 20 69 73 20 70 6F 73 73 69 62 6C 65 20 74 68 61 74 20 74 68 65 20 47 46 31 lso, it is possible that the GF1 0000EF40 20 77 69 6C 6C 20 69 6E 74 65 72 70 6F 6C 61 74 65 20 64 61 74 61 20 61 74 20 70 6F 69 6E 74 73 will interpolate data at points 0000EF60 20 62 65 79 6F 6E 64 20 74 68 65 20 65 6E 64 20 70 6F 69 6E 74 2E 20 20 54 6F 20 65 6E 73 75 72 beyond the end point. To ensur 0000EF80 65 20 74 68 61 74 20 74 68 69 73 20 64 6F 65 73 20 6E 6F 74 20 63 61 75 73 65 20 27 63 6C 69 63 e that this does not cause 'clic 0000EFA0 6B 73 27 2C 20 75 73 65 20 61 20 66 65 77 20 65 78 74 72 61 20 62 79 74 65 73 20 61 66 74 65 72 ks', use a few extra bytes after 0000EFC0 20 74 68 65 20 65 6E 64 20 70 6F 69 6E 74 20 6F 66 20 74 68 65 20 73 61 6D 70 6C 65 20 74 6F 20 the end point of the sample to 0000EFE0 6D 61 69 6E 74 61 69 6E 20 69 74 2E 0D 0A 0D 0A 4C 6F 6F 70 20 70 6F 69 6E 74 73 20 6E 6F 74 20 maintain it.♪◙♪◙Loop points not 0000F000 73 65 74 20 70 72 6F 70 65 72 6C 79 0D 0A 2D 09 54 68 65 20 73 61 6D 65 20 70 72 6F 62 6C 65 6D set properly♪◙-○The same problem 0000F020 20 61 73 20 73 74 61 74 65 64 20 61 62 6F 76 65 20 28 65 6E 64 20 70 6F 69 6E 74 73 29 20 69 73 as stated above (end points) is 0000F040 20 63 6F 6D 6D 6F 6E 20 66 6F 72 20 6C 6F 6F 70 20 73 74 61 72 74 20 61 6E 64 20 65 6E 64 20 70 common for loop start and end p 0000F060 6F 69 6E 74 73 2E 20 20 42 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 20 64 61 74 61 20 61 74 oints. Be sure that the data at 0000F080 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 20 6C 6F 6F 70 20 61 6E 64 20 74 68 65 20 62 65 67 the end of the loop and the beg 0000F0A0 69 6E 6E 69 6E 67 20 6F 66 20 74 68 65 20 6C 6F 6F 70 20 61 72 65 20 70 72 61 63 74 69 63 61 6C inning of the loop are practical 0000F0C0 6C 79 20 69 64 65 6E 74 69 63 61 6C 2C 20 73 69 6E 63 65 20 69 66 20 74 68 65 72 65 20 69 73 20 ly identical, since if there is 0000F0E0 61 20 6C 61 72 67 65 20 73 74 65 70 20 62 65 74 77 65 65 6E 20 74 68 65 6D 20 61 20 63 6C 69 63 a large step between them a clic 0000F100 6B 20 77 69 6C 6C 20 72 65 73 75 6C 74 20 62 65 63 61 75 73 65 20 74 68 65 20 44 41 43 20 76 61 k will result because the DAC va 0000F120 6C 75 65 20 77 69 6C 6C 20 63 68 61 6E 67 65 20 73 75 64 64 65 6E 6C 79 2E 0D 0A 0C 33 2E 39 20 lue will change suddenly.♪◙♀3.9 0000F140 49 6E 74 65 72 72 75 70 74 20 48 61 6E 64 6C 69 6E 67 20 46 75 6E 63 74 69 6F 6E 73 0D 0A 0D 0A Interrupt Handling Functions♪◙♪◙ 0000F160 54 68 65 72 65 20 61 72 65 20 39 20 66 75 6E 63 74 69 6F 6E 73 20 28 70 72 6F 63 65 64 75 72 65 There are 9 functions (procedure 0000F180 73 20 66 6F 72 20 50 61 73 63 61 6C 20 75 73 65 72 73 29 20 77 68 69 63 68 20 63 61 6E 20 62 65 s for Pascal users) which can be 0000F1A0 20 75 73 65 64 20 74 6F 20 64 65 66 69 6E 65 20 61 20 68 61 6E 64 6C 65 72 20 66 6F 72 20 65 76 used to define a handler for ev 0000F1C0 65 6E 74 73 20 74 68 61 74 20 68 61 70 70 65 6E 20 75 6E 64 65 72 20 69 6E 74 65 72 72 75 70 74 ents that happen under interrupt 0000F1E0 20 6F 6E 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 2E 20 20 54 68 65 73 65 20 61 72 65 20 4E on the UltraSound. These are N 0000F200 4F 54 20 69 6E 74 65 72 72 75 70 74 20 68 61 6E 64 6C 65 72 73 20 62 75 74 20 61 72 65 20 63 61 OT interrupt handlers but are ca 0000F220 6C 6C 62 61 63 6B 73 20 66 72 6F 6D 20 74 68 65 20 69 6E 74 65 72 72 75 70 74 20 68 61 6E 64 6C llbacks from the interrupt handl 0000F240 65 72 2E 20 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 20 74 68 65 79 20 73 68 6F 75 6C 64 er. This means that they should 0000F260 20 6E 6F 74 20 62 65 20 64 65 66 69 6E 65 64 20 61 73 20 69 6E 74 65 72 72 75 70 74 20 74 79 70 not be defined as interrupt typ 0000F280 65 20 66 75 6E 63 74 69 6F 6E 73 20 62 75 74 20 6D 75 73 74 20 61 64 68 65 72 65 20 74 6F 20 74 e functions but must adhere to t 0000F2A0 68 65 20 67 65 6E 65 72 61 6C 20 72 75 6C 65 73 20 6F 66 20 69 6E 74 65 72 72 75 70 74 20 63 6F he general rules of interrupt co 0000F2C0 64 65 2E 20 20 4E 6F 20 44 4F 53 20 63 61 6C 6C 73 20 73 68 6F 75 6C 64 20 62 65 20 6D 61 64 65 de. No DOS calls should be made 0000F2E0 20 61 6E 64 20 63 61 72 65 20 6D 75 73 74 20 62 65 20 74 61 6B 65 6E 20 6E 6F 74 20 74 6F 20 63 and care must be taken not to c 0000F300 61 75 73 65 20 70 72 6F 62 6C 65 6D 73 20 77 69 74 68 20 63 6F 64 65 20 72 75 6E 6E 69 6E 67 20 ause problems with code running 0000F320 69 6E 20 74 68 65 20 66 6F 72 65 67 72 6F 75 6E 64 2E 20 20 0D 0A 0D 0A 55 6C 74 72 61 44 72 61 in the foreground. ♪◙♪◙UltraDra 0000F340 6D 54 63 48 61 6E 64 6C 65 72 20 20 20 20 20 20 20 20 20 20 55 6C 74 72 61 52 65 63 6F 72 64 48 mTcHandler UltraRecordH 0000F360 61 6E 64 6C 65 72 20 20 0D 0A 20 20 55 6C 74 72 61 4D 49 44 49 58 6D 69 74 48 61 6E 64 6C 65 72 andler ♪◙ UltraMIDIXmitHandler 0000F380 20 20 20 20 20 20 20 20 55 6C 74 72 61 4D 49 44 49 52 65 63 76 48 61 6E 64 6C 65 72 0D 0A 55 6C UltraMIDIRecvHandler♪◙Ul 0000F3A0 74 72 61 54 69 6D 65 72 31 48 61 6E 64 6C 65 72 20 20 20 20 20 20 20 20 20 20 55 6C 74 72 61 54 traTimer1Handler UltraT 0000F3C0 69 6D 65 72 32 48 61 6E 64 6C 65 72 20 20 0D 0A 55 6C 74 72 61 57 61 76 65 48 61 6E 64 6C 65 72 imer2Handler ♪◙UltraWaveHandler 0000F3E0 20 20 20 20 20 20 20 20 20 20 20 20 55 6C 74 72 61 56 6F 6C 75 6D 65 48 61 6E 64 6C 65 72 20 20 UltraVolumeHandler 0000F400 0D 0A 55 6C 74 72 61 41 75 78 48 61 6E 64 6C 65 72 0D 0A 0D 0A 41 6C 6C 20 74 68 65 73 65 20 72 ♪◙UltraAuxHandler♪◙♪◙All these r 0000F420 6F 75 74 69 6E 65 73 20 72 65 74 75 72 6E 20 74 68 65 20 6F 6C 64 20 63 61 6C 6C 62 61 63 6B 20 outines return the old callback 0000F440 61 64 64 72 65 73 73 20 73 6F 20 63 68 61 69 6E 69 6E 67 20 63 6F 75 6C 64 20 62 65 20 64 6F 6E address so chaining could be don 0000F460 65 20 69 66 20 64 65 73 69 72 65 64 2E 20 20 54 68 69 73 20 6E 6F 74 20 75 73 75 61 6C 6C 79 20 e if desired. This not usually 0000F480 6E 65 63 65 73 73 61 72 79 2E 20 20 49 74 20 69 73 20 61 6C 73 6F 20 6E 6F 74 20 6E 65 63 65 73 necessary. It is also not neces 0000F4A0 73 61 72 79 20 74 6F 20 72 65 73 74 6F 72 65 20 74 68 65 20 68 61 6E 64 6C 65 72 20 62 61 63 6B sary to restore the handler back 0000F4C0 20 74 6F 20 74 68 65 20 6F 6C 64 20 6F 6E 65 20 77 68 65 6E 20 65 78 69 74 69 6E 67 20 79 6F 75 to the old one when exiting you 0000F4E0 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 2E 20 20 48 6F 77 65 76 65 72 2C 20 74 68 65 20 55 6C 74 r application. However, the Ult 0000F500 72 61 43 6C 6F 73 65 20 66 75 6E 63 74 69 6F 6E 20 4D 55 53 54 20 62 65 20 63 61 6C 6C 65 64 20 raClose function MUST be called 0000F520 74 6F 20 72 65 73 74 6F 72 65 20 74 68 65 20 61 63 74 75 61 6C 20 69 6E 74 65 72 72 75 70 74 20 to restore the actual interrupt 0000F540 68 61 6E 64 6C 65 72 2E 20 20 0D 0A 0D 0A 54 68 65 73 65 20 77 69 6C 6C 20 6F 6E 6C 79 20 62 65 handler. ♪◙♪◙These will only be 0000F560 20 43 41 4C 4C 45 44 20 69 66 20 74 68 65 20 69 6E 74 65 72 72 75 70 74 20 66 6F 72 20 74 68 65 CALLED if the interrupt for the 0000F580 20 70 61 72 74 69 63 75 6C 61 72 20 66 75 6E 63 74 69 6F 6E 20 69 73 20 65 6E 61 62 6C 65 64 20 particular function is enabled 0000F5A0 69 6E 20 74 68 65 20 6D 6F 64 65 20 70 61 72 61 6D 65 74 65 72 20 28 73 65 65 20 74 68 65 20 41 in the mode parameter (see the A 0000F5C0 70 70 65 6E 64 69 63 65 73 20 66 6F 72 20 74 68 65 20 62 69 74 20 64 65 66 69 6E 69 74 69 6F 6E ppendices for the bit definition 0000F5E0 73 2E 29 20 49 74 20 69 73 20 61 6C 73 6F 20 6E 6F 74 20 6E 65 63 65 73 73 61 72 79 20 74 6F 20 s.) It is also not necessary to 0000F600 73 65 74 20 75 70 20 61 20 63 61 6C 6C 62 61 63 6B 20 73 69 6E 63 65 20 69 74 20 68 61 73 20 61 set up a callback since it has a 0000F620 20 64 65 66 61 75 6C 74 20 61 73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 69 74 2E 0D 0A 0D 0A default associated with it.♪◙♪◙ 0000F640 59 6F 75 20 73 68 6F 75 6C 64 20 62 65 20 61 62 6C 65 20 74 6F 20 6D 61 6B 65 20 61 6E 79 20 53 You should be able to make any S 0000F660 44 4B 20 6C 69 62 72 61 72 79 20 63 61 6C 6C 73 20 66 72 6F 6D 20 77 69 74 68 69 6E 20 74 68 65 DK library calls from within the 0000F680 20 69 6E 74 65 72 72 75 70 74 20 68 61 6E 64 6C 65 72 73 2E 20 20 41 6C 6C 20 74 68 65 20 6C 69 interrupt handlers. All the li 0000F6A0 62 72 61 72 79 20 66 75 6E 63 74 69 6F 6E 73 20 70 72 6F 74 65 63 74 20 74 68 65 6D 73 65 6C 76 brary functions protect themselv 0000F6C0 65 73 20 66 72 6F 6D 20 62 65 69 6E 67 20 69 6E 74 65 72 72 75 70 74 65 64 20 77 68 69 6C 65 20 es from being interrupted while 0000F6E0 64 6F 69 6E 67 20 63 72 69 74 69 63 61 6C 20 6F 70 65 72 61 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A doing critical operations.♪◙♪◙♪◙ 0000F700 0D 0A 33 2E 31 30 20 52 6F 6C 6C 6F 76 65 72 20 66 65 61 74 75 72 65 0D 0A 0D 0A 45 61 63 68 20 ♪◙3.10 Rollover feature♪◙♪◙Each 0000F720 76 6F 69 63 65 20 68 61 73 20 61 20 27 72 6F 6C 6C 6F 76 65 72 27 20 66 65 61 74 75 72 65 20 74 voice has a 'rollover' feature t 0000F740 68 61 74 20 61 6C 6C 6F 77 73 20 61 6E 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 74 6F 20 62 65 20 hat allows an application to be 0000F760 6E 6F 74 69 66 69 65 64 20 77 68 65 6E 20 61 20 76 6F 69 63 65 27 73 20 70 6C 61 79 62 61 63 6B notified when a voice's playback 0000F780 20 70 6F 73 69 74 69 6F 6E 20 70 61 73 73 65 73 20 6F 76 65 72 20 61 20 70 61 72 74 69 63 75 6C position passes over a particul 0000F7A0 61 72 20 70 6C 61 63 65 20 69 6E 20 44 52 41 4D 2E 20 20 54 68 69 73 20 69 73 20 76 65 72 79 20 ar place in DRAM. This is very 0000F7C0 75 73 65 66 75 6C 20 66 6F 72 20 67 65 74 74 69 6E 67 20 73 65 61 6D 6C 65 73 73 20 64 69 67 69 useful for getting seamless digi 0000F7E0 74 61 6C 20 61 75 64 69 6F 20 70 6C 61 79 62 61 63 6B 2E 20 20 42 61 73 69 63 61 6C 6C 79 2C 20 tal audio playback. Basically, 0000F800 74 68 65 20 47 46 31 20 77 69 6C 6C 20 67 65 6E 65 72 61 74 65 20 61 6E 20 49 52 51 20 77 68 65 the GF1 will generate an IRQ whe 0000F820 6E 20 61 20 76 6F 69 63 65 27 73 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 69 73 20 n a voice's current position is 0000F840 20 65 71 75 61 6C 20 74 6F 20 74 68 65 20 65 6E 64 20 70 6F 73 69 74 69 6F 6E 2E 20 20 48 6F 77 equal to the end position. How 0000F860 65 76 65 72 2C 20 69 6E 73 74 65 61 64 20 6F 66 20 73 74 6F 70 70 69 6E 67 20 6F 72 20 6C 6F 6F ever, instead of stopping or loo 0000F880 70 69 6E 67 20 62 61 63 6B 20 74 6F 20 74 68 65 20 73 74 61 72 74 20 70 6F 73 69 74 69 6F 6E 2C ping back to the start position, 0000F8A0 20 74 68 65 20 76 6F 69 63 65 20 77 69 6C 6C 20 63 6F 6E 74 69 6E 75 65 20 70 6C 61 79 69 6E 67 the voice will continue playing 0000F8C0 20 69 6E 20 74 68 65 20 73 61 6D 65 20 64 69 72 65 63 74 69 6F 6E 2E 20 20 54 68 69 73 20 6D 65 in the same direction. This me 0000F8E0 61 6E 73 20 74 68 61 74 20 74 68 65 72 65 20 77 69 6C 6C 20 62 65 20 6E 6F 20 70 61 75 73 65 20 ans that there will be no pause 0000F900 28 6F 72 20 67 61 70 29 20 69 6E 20 74 68 65 20 70 6C 61 79 62 61 63 6B 2E 20 20 4E 6F 74 65 20 (or gap) in the playback. Note 0000F920 74 68 61 74 20 74 68 69 73 20 66 65 61 74 75 72 65 20 69 73 20 65 6E 61 62 6C 65 64 2F 64 69 73 that this feature is enabled/dis 0000F940 61 62 6C 65 64 20 74 68 72 75 20 74 68 65 20 76 6F 69 63 65 27 73 20 56 4F 4C 55 4D 45 20 63 6F abled thru the voice's VOLUME co 0000F960 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 28 73 69 6E 63 65 20 74 68 65 72 65 20 61 72 65 20 ntrol register (since there are 0000F980 6E 6F 20 6D 6F 72 65 20 62 69 74 73 20 61 76 61 69 6C 61 62 6C 65 20 69 6E 20 74 68 65 20 76 6F no more bits available in the vo 0000F9A0 69 63 65 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 73 29 2E 20 20 41 20 76 6F 69 63 65 ice control registers). A voice 0000F9C0 27 73 20 6C 6F 6F 70 20 65 6E 61 62 6C 65 20 62 69 74 20 74 61 6B 65 73 20 70 72 65 63 65 64 65 's loop enable bit takes precede 0000F9E0 6E 63 65 20 6F 76 65 72 20 74 68 65 20 72 6F 6C 6C 6F 76 65 72 2E 20 20 54 68 69 73 20 6D 65 61 nce over the rollover. This mea 0000FA00 6E 73 20 74 68 61 74 20 69 66 20 61 20 76 6F 69 63 65 27 73 20 6C 6F 6F 70 20 65 6E 61 62 6C 65 ns that if a voice's loop enable 0000FA20 20 69 73 20 6F 6E 2C 20 69 74 20 77 69 6C 6C 20 6C 6F 6F 70 20 77 68 65 6E 20 69 74 20 68 69 74 is on, it will loop when it hit 0000FA40 73 20 74 68 65 20 65 6E 64 20 70 6F 73 69 74 69 6F 6E 2C 20 72 65 67 61 72 64 6C 65 73 73 20 6F s the end position, regardless o 0000FA60 66 20 74 68 65 20 73 74 61 74 65 20 6F 66 20 74 68 65 20 72 6F 6C 6C 6F 76 65 72 20 65 6E 61 62 f the state of the rollover enab 0000FA80 6C 65 2E 0D 0A 0D 0A 41 20 73 69 6D 70 6C 65 20 65 78 61 6D 70 6C 65 20 6F 66 20 74 68 69 73 20 le.♪◙♪◙A simple example of this 0000FAA0 74 65 63 68 6E 69 71 75 65 20 69 73 3A 0D 0A 0D 0A 31 29 09 41 6C 6C 6F 63 61 74 65 20 61 20 63 technique is:♪◙♪◙1)○Allocate a c 0000FAC0 68 75 6E 6B 20 6F 66 20 44 52 41 4D 3A 20 32 30 4B 2C 20 66 6F 72 20 65 78 61 6D 70 6C 65 2E 0D hunk of DRAM: 20K, for example.♪ 0000FAE0 0A 32 29 09 4C 6F 61 64 20 74 68 65 20 65 6E 74 69 72 65 20 32 30 4B 20 77 69 74 68 20 77 61 76 ◙2)○Load the entire 20K with wav 0000FB00 65 20 64 61 74 61 2E 0D 0A 33 29 09 53 74 61 72 74 20 75 70 20 61 20 76 6F 69 63 65 20 77 69 74 e data.♪◙3)○Start up a voice wit 0000FB20 68 20 6C 6F 6F 70 69 6E 67 20 64 69 73 61 62 6C 65 64 20 61 6E 64 20 72 6F 6C 6C 6F 76 65 72 20 h looping disabled and rollover 0000FB40 65 6E 61 62 6C 65 64 2E 20 20 53 65 74 20 69 74 73 20 65 6E 64 20 70 6F 73 69 74 69 6F 6E 20 74 enabled. Set its end position t 0000FB60 6F 20 74 68 65 20 4D 49 44 44 4C 45 20 6F 66 20 74 68 65 20 62 75 66 66 65 72 2E 0D 0A 34 29 09 o the MIDDLE of the buffer.♪◙4)○ 0000FB80 57 68 65 6E 20 74 68 65 20 76 6F 69 63 65 20 68 69 74 73 20 74 68 65 20 6D 69 64 64 6C 65 2C 20 When the voice hits the middle, 0000FBA0 79 6F 75 20 77 69 6C 6C 20 67 65 74 20 61 6E 20 49 52 51 2C 20 62 75 74 20 74 68 65 20 76 6F 69 you will get an IRQ, but the voi 0000FBC0 63 65 20 77 69 6C 6C 20 63 6F 6E 74 69 6E 75 65 20 74 6F 20 70 6C 61 79 2E 0D 0A 35 29 09 41 74 ce will continue to play.♪◙5)○At 0000FBE0 20 74 68 69 73 20 70 6F 69 6E 74 2C 20 65 6E 61 62 6C 65 20 6C 6F 6F 70 69 6E 67 20 61 6E 64 20 this point, enable looping and 0000FC00 64 69 73 61 62 6C 65 20 74 68 65 20 72 6F 6C 6C 6F 76 65 72 2E 20 20 41 6C 73 6F 2C 20 73 65 74 disable the rollover. Also, set 0000FC20 20 74 68 65 20 65 6E 64 20 70 6F 73 69 74 69 6F 6E 20 74 6F 20 74 68 65 20 65 6E 64 20 6F 66 20 the end position to the end of 0000FC40 74 68 65 20 62 75 66 66 65 72 2E 20 54 68 69 73 20 77 69 6C 6C 20 6D 61 6B 65 20 74 68 65 20 76 the buffer. This will make the v 0000FC60 6F 69 63 65 20 6C 6F 6F 70 20 62 61 63 6B 20 74 6F 20 74 68 65 20 62 65 67 69 6E 6E 69 6E 67 20 oice loop back to the beginning 0000FC80 77 69 74 68 6F 75 74 20 73 74 6F 70 70 69 6E 67 2E 0D 0A 36 29 09 4E 6F 77 20 6C 6F 61 64 20 74 without stopping.♪◙6)○Now load t 0000FCA0 68 65 20 46 49 52 53 54 20 31 30 4B 20 77 69 74 68 20 6D 6F 72 65 20 77 61 76 65 20 64 61 74 61 he FIRST 10K with more wave data 0000FCC0 2E 20 54 68 69 73 20 77 69 6C 6C 20 6D 61 6B 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 72 65 . This will make sure that there 0000FCE0 20 69 73 20 63 6F 72 72 65 63 74 20 64 61 74 61 20 74 6F 20 70 6C 61 79 20 77 68 65 6E 20 74 68 is correct data to play when th 0000FD00 65 20 76 6F 69 63 65 20 6C 6F 6F 70 73 2E 0D 0A 37 29 09 57 68 65 6E 20 74 68 65 20 76 6F 69 63 e voice loops.♪◙7)○When the voic 0000FD20 65 20 6C 6F 6F 70 73 2C 20 79 6F 75 20 77 69 6C 6C 20 67 65 74 20 61 6E 64 20 49 52 51 2E 20 0D e loops, you will get and IRQ. ♪ 0000FD40 0A 38 29 09 41 74 20 74 68 69 73 20 70 6F 69 6E 74 2C 20 64 69 73 61 62 6C 65 20 6C 6F 6F 70 69 ◙8)○At this point, disable loopi 0000FD60 6E 67 2C 20 65 6E 61 62 6C 65 20 72 6F 6C 6C 6F 76 65 72 20 61 6E 64 20 73 65 74 20 74 68 65 20 ng, enable rollover and set the 0000FD80 65 6E 64 20 70 6F 73 69 74 69 6F 6E 20 62 61 63 6B 20 74 6F 20 74 68 65 20 6D 69 64 64 6C 65 20 end position back to the middle 0000FDA0 6F 66 20 74 68 65 20 62 75 66 66 65 72 2E 0D 0A 39 29 09 4E 6F 77 20 6C 6F 61 64 20 74 68 65 20 of the buffer.♪◙9)○Now load the 0000FDC0 53 45 43 4F 4E 44 20 31 30 4B 20 77 69 74 68 20 6D 6F 72 65 20 77 61 76 65 20 64 61 74 61 2E 20 SECOND 10K with more wave data. 0000FDE0 54 68 69 73 20 77 69 6C 6C 20 6D 61 6B 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 72 65 20 69 This will make sure that there i 0000FE00 73 20 63 6F 72 65 63 74 20 64 61 74 61 20 74 6F 20 70 6C 61 79 20 77 68 65 6E 20 74 68 65 20 72 s corect data to play when the r 0000FE20 6F 6C 6C 6F 76 65 72 20 6F 63 63 75 72 73 2E 0D 0A 31 30 29 09 43 6F 6E 74 69 6E 75 65 20 69 6E ollover occurs.♪◙10)○Continue in 0000FE40 20 61 20 6C 6F 6F 70 2C 20 73 74 61 72 74 69 6E 67 20 61 74 20 73 74 65 70 20 23 34 2E 0D 0A 0D a loop, starting at step #4.♪◙♪ 0000FE60 0A 4E 6F 74 65 3A 09 54 68 69 73 20 61 6C 67 6F 72 69 74 68 6D 20 64 6F 65 73 20 6E 6F 74 20 74 ◙Note:○This algorithm does not t 0000FE80 61 6B 65 20 63 61 72 65 20 6F 66 20 61 6E 20 69 6E 69 74 69 61 6C 20 63 6F 6E 64 69 74 69 6F 6E ake care of an initial condition 0000FEA0 20 77 68 65 72 65 20 6E 6F 74 20 65 6E 6F 75 67 68 20 64 61 74 61 20 65 78 69 73 74 73 20 74 6F where not enough data exists to 0000FEC0 20 66 69 6C 6C 20 6F 6E 65 20 63 6F 6D 70 6C 65 74 65 20 62 75 66 66 65 72 2E 20 49 74 20 61 6C fill one complete buffer. It al 0000FEE0 73 6F 20 64 6F 65 73 6E 27 74 20 61 64 64 72 65 73 73 20 68 6F 77 20 74 6F 20 66 69 6E 69 73 68 so doesn't address how to finish 0000FF00 20 70 6C 61 79 69 6E 67 20 74 68 65 20 6C 61 73 74 20 69 6E 63 6F 6D 70 6C 65 74 65 20 62 75 66 playing the last incomplete buf 0000FF20 66 65 72 2E 20 20 54 68 65 73 65 20 70 6F 69 6E 74 73 20 61 72 65 20 6C 65 66 74 20 75 70 20 74 fer. These points are left up t 0000FF40 6F 20 79 6F 75 72 20 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 74 6F 20 72 65 73 6F 6C 76 65 o your implementation to resolve 0000FF60 2E 0D 0A 0D 0A 0D 0A 0D 0A 33 2E 31 31 20 53 74 65 72 65 6F 20 70 6C 61 79 62 61 63 6B 0D 0A 0D .♪◙♪◙♪◙♪◙3.11 Stereo playback♪◙♪ 0000FF80 0A 53 74 65 72 65 6F 20 64 61 74 61 20 69 73 20 72 65 70 72 65 73 65 6E 74 65 64 20 69 6E 20 61 ◙Stereo data is represented in a 0000FFA0 6E 20 69 6E 74 65 72 6C 65 61 76 65 64 20 66 6F 72 6D 61 74 2C 20 6D 65 61 6E 69 6E 67 20 74 68 n interleaved format, meaning th 0000FFC0 61 74 20 74 68 65 20 64 61 74 61 20 61 6C 74 65 72 6E 61 74 65 73 20 62 65 74 77 65 65 6E 20 61 at the data alternates between a 0000FFE0 20 73 61 6D 70 6C 65 20 66 6F 72 20 74 68 65 20 6C 65 66 74 20 63 68 61 6E 6E 65 6C 20 61 6E 64 sample for the left channel and 00010000 20 61 20 73 61 6D 70 6C 65 20 66 6F 72 20 74 68 65 20 72 69 67 68 74 20 63 68 61 6E 6E 65 6C 2E a sample for the right channel. 00010020 20 20 49 74 20 69 73 20 65 69 74 68 65 72 20 74 68 65 20 72 65 73 70 6F 6E 73 69 62 69 6C 69 74 It is either the responsibilit 00010040 79 20 6F 66 20 74 68 65 20 68 61 72 64 77 61 72 65 20 6F 72 20 74 68 65 20 73 6F 66 74 77 61 72 y of the hardware or the softwar 00010060 65 20 74 6F 20 65 6E 73 75 72 65 20 74 68 61 74 20 74 68 65 20 64 61 74 61 20 67 65 74 73 20 75 e to ensure that the data gets u 00010080 73 65 64 20 70 72 6F 70 65 72 6C 79 2E 20 53 74 65 72 65 6F 20 64 61 74 61 20 63 61 6E 20 62 65 sed properly. Stereo data can be 000100A0 20 70 6C 61 79 65 64 20 62 61 63 6B 20 74 77 6F 20 63 6F 6D 70 6C 65 74 65 6C 79 20 64 69 66 66 played back two completely diff 000100C0 65 72 65 6E 74 20 77 61 79 73 2C 20 65 69 74 68 65 72 20 75 6E 64 65 72 20 73 6F 66 74 77 61 72 erent ways, either under softwar 000100E0 65 20 63 6F 6E 74 72 6F 6C 20 6F 72 20 68 61 72 64 77 61 72 65 20 63 6F 6E 74 72 6F 6C 3A 0D 0A e control or hardware control:♪◙ 00010100 0D 0A 53 6F 66 74 77 61 72 65 20 43 6F 6E 74 72 6F 6C 0D 0A 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D ♪◙Software Control♪◙============ 00010120 3D 3D 3D 3D 0D 0A 0D 0A 54 68 69 73 20 69 73 20 74 68 65 20 6D 6F 73 74 20 66 6C 65 78 69 62 6C ====♪◙♪◙This is the most flexibl 00010140 65 20 6D 65 74 68 6F 64 2C 20 73 69 6E 63 65 20 69 74 20 61 6C 6C 6F 77 73 20 66 6F 72 20 70 6C e method, since it allows for pl 00010160 61 79 62 61 63 6B 20 61 74 20 61 6E 79 20 66 72 65 71 75 65 6E 63 79 2E 20 20 54 68 65 20 62 61 ayback at any frequency. The ba 00010180 73 69 63 20 61 6C 67 6F 72 69 74 68 6D 20 69 73 20 74 6F 20 64 65 2D 69 6E 74 65 72 6C 65 61 76 sic algorithm is to de-interleav 000101A0 65 20 74 68 65 20 64 61 74 61 20 69 6E 74 6F 20 61 20 6C 65 66 74 20 63 68 61 6E 6E 65 6C 20 62 e the data into a left channel b 000101C0 75 66 66 65 72 20 61 6E 64 20 61 20 72 69 67 68 74 20 63 68 61 6E 6E 65 6C 20 62 75 66 66 65 72 uffer and a right channel buffer 000101E0 2C 20 74 68 65 6E 20 73 65 6E 64 20 74 68 65 20 64 61 74 61 20 74 6F 20 74 77 6F 20 69 6E 64 65 , then send the data to two inde 00010200 70 65 6E 64 65 6E 74 20 76 6F 69 63 65 73 20 6F 6E 20 74 68 65 20 63 61 72 64 2E 20 20 48 65 72 pendent voices on the card. Her 00010220 65 20 69 73 20 61 20 62 72 69 65 66 20 64 65 73 63 72 69 70 74 69 6F 6E 20 6F 66 20 74 68 65 20 e is a brief description of the 00010240 61 6C 67 6F 72 69 74 68 6D 20 74 68 61 74 20 77 6F 75 6C 64 20 62 65 20 75 73 65 64 3A 0D 0A 0D algorithm that would be used:♪◙♪ 00010260 0A 31 29 09 41 6C 6C 6F 63 61 74 65 20 32 20 76 6F 69 63 65 73 2E 20 4F 6E 65 20 66 6F 72 20 6C ◙1)○Allocate 2 voices. One for l 00010280 65 66 74 20 61 6E 64 20 6F 6E 65 20 66 6F 72 20 72 69 67 68 74 2E 0D 0A 32 29 09 53 65 74 20 74 eft and one for right.♪◙2)○Set t 000102A0 68 65 20 6C 65 66 74 20 76 6F 69 63 65 20 70 61 6E 20 70 6F 73 69 74 69 6F 6E 20 61 6C 6C 20 74 he left voice pan position all t 000102C0 68 65 20 77 61 79 20 6C 65 66 74 2E 0D 0A 33 29 09 53 65 74 20 74 68 65 20 72 69 67 68 74 20 76 he way left.♪◙3)○Set the right v 000102E0 6F 69 63 65 20 70 61 6E 20 70 6F 73 69 74 69 6F 6E 20 61 6C 6C 20 74 68 65 20 77 61 79 20 72 69 oice pan position all the way ri 00010300 67 68 74 2E 0D 0A 34 29 09 53 65 74 20 62 6F 74 68 20 76 6F 69 63 65 20 76 6F 6C 75 6D 65 73 20 ght.♪◙4)○Set both voice volumes 00010320 74 6F 20 74 68 65 20 73 61 6D 65 20 76 61 6C 75 65 2E 0D 0A 35 29 09 41 6C 6C 6F 63 61 74 65 20 to the same value.♪◙5)○Allocate 00010340 32 20 63 68 75 6E 6B 73 20 6F 66 20 55 6C 74 72 61 53 6F 75 6E 64 20 44 52 41 4D 20 6F 66 20 74 2 chunks of UltraSound DRAM of t 00010360 68 65 20 73 61 6D 65 20 73 69 7A 65 2C 20 73 61 79 20 32 30 4B 20 61 70 69 65 63 65 2E 0D 0A 36 he same size, say 20K apiece.♪◙6 00010380 29 09 52 65 61 64 20 69 6E 20 34 30 4B 20 6F 66 20 73 74 65 72 65 6F 20 64 61 74 61 2E 0D 0A 37 )○Read in 40K of stereo data.♪◙7 000103A0 29 09 44 65 2D 69 6E 74 65 72 6C 65 61 76 65 20 64 61 74 61 20 69 6E 74 6F 20 32 30 4B 20 6F 66 )○De-interleave data into 20K of 000103C0 20 6C 65 66 74 20 64 61 74 61 20 61 6E 64 20 32 30 4B 20 6F 66 20 72 69 67 68 74 20 64 61 74 61 left data and 20K of right data 000103E0 2E 0D 0A 38 29 09 44 4D 41 20 6C 65 66 74 20 62 75 66 66 65 72 20 69 6E 74 6F 20 44 52 41 4D 20 .♪◙8)○DMA left buffer into DRAM 00010400 62 75 66 66 65 72 20 23 31 2E 0D 0A 39 29 09 44 4D 41 20 72 69 67 68 74 20 62 75 66 66 65 72 20 buffer #1.♪◙9)○DMA right buffer 00010420 69 6E 74 6F 20 44 52 41 4D 20 62 75 66 66 65 72 20 23 32 2E 0D 0A 31 30 29 09 50 72 69 6D 65 20 into DRAM buffer #2.♪◙10)○Prime 00010440 72 69 67 68 74 20 76 6F 69 63 65 20 74 6F 20 6C 6F 6F 70 20 6F 6E 20 61 6C 6C 20 32 30 4B 20 6F right voice to loop on all 20K o 00010460 66 20 64 61 74 61 20 66 6F 72 65 76 65 72 2E 20 4E 6F 20 49 52 51 2E 0D 0A 31 31 29 09 50 72 69 f data forever. No IRQ.♪◙11)○Pri 00010480 6D 65 20 6C 65 66 74 20 76 6F 69 63 65 20 74 6F 20 70 6C 61 79 20 31 30 4B 20 6F 66 20 69 74 73 me left voice to play 10K of its 000104A0 20 64 61 74 61 20 77 69 74 68 20 74 68 65 20 72 6F 6C 6C 6F 76 65 72 20 66 65 61 74 75 72 65 20 data with the rollover feature 000104C0 65 6E 61 62 6C 65 64 20 28 53 65 65 20 64 69 73 63 75 73 73 69 6F 6E 20 6F 6E 20 73 65 61 6D 6C enabled (See discussion on seaml 000104E0 65 73 73 20 64 69 67 69 74 61 6C 20 70 6C 61 79 62 61 63 6B 20 61 62 6F 76 65 29 2E 0D 0A 31 32 ess digital playback above).♪◙12 00010500 29 09 53 74 61 72 74 20 62 6F 74 68 20 63 68 61 6E 6E 65 6C 73 20 75 70 20 61 73 20 63 6C 6F 73 )○Start both channels up as clos 00010520 65 20 74 6F 67 65 74 68 65 72 20 61 73 20 70 6F 73 73 69 62 6C 65 20 73 6F 20 74 68 65 79 20 74 e together as possible so they t 00010540 72 61 63 6B 20 74 6F 67 65 74 68 65 72 2E 20 54 68 65 20 72 69 67 68 74 20 63 68 61 6E 6E 65 6C rack together. The right channel 00010560 20 77 69 6C 6C 20 6E 6F 74 20 62 65 20 74 6F 75 63 68 65 64 2C 20 65 78 63 65 70 74 20 74 6F 20 will not be touched, except to 00010580 44 4D 41 20 6E 65 77 20 64 61 74 61 20 69 6E 74 6F 20 69 74 73 20 62 75 66 66 65 72 2E 0D 0A 31 DMA new data into its buffer.♪◙1 000105A0 33 29 09 41 74 20 74 68 69 73 20 70 6F 69 6E 74 20 74 68 65 20 73 6F 66 74 77 61 72 65 20 77 69 3)○At this point the software wi 000105C0 6C 6C 20 6C 6F 6F 70 20 6F 6E 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 73 74 65 70 73 20 75 ll loop on the following steps u 000105E0 6E 74 69 6C 20 74 68 65 20 64 61 74 61 20 69 73 20 65 78 68 61 75 73 74 65 64 2E 20 54 68 65 20 ntil the data is exhausted. The 00010600 72 6F 6C 6C 6F 76 65 72 20 77 69 6C 6C 20 61 6C 6C 6F 77 20 74 68 65 20 73 6F 66 74 77 61 72 65 rollover will allow the software 00010620 20 74 6F 20 70 6C 61 79 20 68 61 6C 66 20 74 68 65 20 62 75 66 66 65 72 20 61 6E 64 20 67 65 74 to play half the buffer and get 00010640 20 6E 6F 74 69 66 69 65 64 20 77 68 65 6E 20 69 74 20 68 61 73 20 66 69 6E 69 73 68 65 64 2C 20 notified when it has finished, 00010660 62 75 74 20 74 68 65 20 70 6C 61 79 62 61 63 6B 20 77 69 6C 6C 20 63 6F 6E 74 69 6E 75 65 20 75 but the playback will continue u 00010680 6E 69 6E 74 65 72 72 75 70 74 65 64 2E 20 57 68 65 6E 20 74 68 65 20 72 6F 6C 6C 6F 76 65 72 20 ninterrupted. When the rollover 000106A0 49 52 51 20 68 61 70 70 65 6E 73 2C 20 74 68 65 20 6C 65 66 74 20 76 6F 69 63 65 20 77 69 6C 6C IRQ happens, the left voice will 000106C0 20 62 65 20 63 68 61 6E 67 65 64 20 74 6F 20 6C 6F 6F 70 20 61 74 20 74 68 65 20 32 30 4B 20 70 be changed to loop at the 20K p 000106E0 6F 73 69 74 69 6F 6E 2E 20 41 74 20 74 68 69 73 20 70 6F 69 6E 74 20 74 68 65 20 73 6F 66 74 77 osition. At this point the softw 00010700 61 72 65 20 77 69 6C 6C 20 62 65 20 61 62 6C 65 20 74 6F 20 6C 6F 61 64 20 74 68 65 20 6E 65 78 are will be able to load the nex 00010720 74 20 31 30 4B 20 6F 66 20 6C 65 66 74 20 63 68 61 6E 6E 65 6C 20 64 61 74 61 20 69 6E 74 6F 20 t 10K of left channel data into 00010740 74 68 65 20 46 49 52 53 54 20 31 30 4B 20 6F 66 20 74 68 65 20 6C 65 66 74 20 63 68 61 6E 6E 65 the FIRST 10K of the left channe 00010760 6C 20 44 52 41 4D 2E 20 54 68 65 20 72 69 67 68 74 20 63 68 61 6E 6E 65 6C 20 69 73 20 61 6C 73 l DRAM. The right channel is als 00010780 6F 20 73 65 6E 74 20 31 30 4B 20 6F 66 20 64 61 74 61 20 69 6E 74 6F 20 69 74 73 20 46 49 52 53 o sent 10K of data into its FIRS 000107A0 54 20 31 30 4B 2E 0D 0A 31 34 29 09 4E 6F 77 20 65 61 63 68 20 63 68 61 6E 6E 65 6C 20 68 61 73 T 10K.♪◙14)○Now each channel has 000107C0 20 74 68 65 20 64 61 74 61 20 74 6F 20 70 6C 61 79 20 77 68 65 6E 20 74 68 65 79 20 6C 6F 6F 70 the data to play when they loop 000107E0 20 61 74 20 74 68 65 69 72 20 32 30 4B 20 6D 61 72 6B 73 2E 0D 0A 31 35 29 09 57 68 65 6E 20 74 at their 20K marks.♪◙15)○When t 00010800 68 65 20 6C 65 66 74 20 63 68 61 6E 6E 65 6C 27 73 20 6C 6F 6F 70 20 49 52 51 20 68 61 70 70 65 he left channel's loop IRQ happe 00010820 6E 73 2C 20 62 6F 74 68 20 74 68 65 20 6C 65 66 74 20 61 6E 64 20 72 69 67 68 74 20 63 68 61 6E ns, both the left and right chan 00010840 6E 65 6C 20 63 61 6E 20 62 65 20 73 65 6E 74 20 6D 6F 72 65 20 64 61 74 61 20 69 6E 74 6F 20 74 nel can be sent more data into t 00010860 68 65 69 72 20 53 45 43 4F 4E 44 20 31 30 4B 20 62 75 66 66 65 72 2E 20 41 6C 73 6F 2C 20 74 68 heir SECOND 10K buffer. Also, th 00010880 65 20 6C 65 66 74 20 63 68 61 6E 6E 65 6C 27 73 20 6C 6F 6F 70 69 6E 67 20 77 69 6C 6C 20 62 65 e left channel's looping will be 000108A0 20 74 75 72 6E 65 64 20 6F 66 66 20 61 6E 64 20 69 74 20 77 69 6C 6C 20 62 65 20 74 6F 6C 64 20 turned off and it will be told 000108C0 74 6F 20 72 6F 6C 6C 6F 76 65 72 20 61 74 20 69 74 73 20 31 30 4B 20 6D 61 72 6B 20 61 67 61 69 to rollover at its 10K mark agai 000108E0 6E 2E 20 4E 6F 77 20 62 6F 74 68 20 63 68 61 6E 6E 65 6C 27 73 20 61 72 65 20 72 65 61 64 79 20 n. Now both channel's are ready 00010900 74 6F 20 70 6C 61 79 20 74 68 72 75 20 74 68 65 69 72 20 31 30 4B 20 6D 61 72 6B 73 20 77 69 74 to play thru their 10K marks wit 00010920 68 20 6E 6F 20 69 6E 74 65 72 72 75 70 74 69 6F 6E 2E 0D 0A 31 36 29 09 47 6F 20 62 61 63 6B 20 h no interruption.♪◙16)○Go back 00010940 74 6F 20 73 74 65 70 20 31 33 20 61 6E 64 20 6C 6F 6F 70 0D 0A 0D 0A 54 68 65 20 61 62 6F 76 65 to step 13 and loop♪◙♪◙The above 00010960 20 61 6C 67 6F 72 69 74 68 6D 20 64 6F 65 73 20 6E 6F 74 20 64 65 74 61 69 6C 20 74 68 65 20 73 algorithm does not detail the s 00010980 74 61 72 74 75 70 20 63 6F 6E 64 69 74 69 6F 6E 73 20 6F 72 20 74 68 65 20 73 68 75 74 64 6F 77 tartup conditions or the shutdow 000109A0 6E 20 63 6F 6E 64 69 74 69 6F 6E 73 2E 20 0D 0A 0D 0A 54 68 69 6E 67 73 20 74 68 61 74 20 79 6F n conditions. ♪◙♪◙Things that yo 000109C0 75 20 77 69 6C 6C 20 6E 65 65 64 20 74 6F 20 61 63 63 6F 6D 6F 64 61 74 65 20 61 72 65 3A 0D 0A u will need to accomodate are:♪◙ 000109E0 0D 0A 31 29 09 4C 65 73 73 20 74 68 61 6E 20 31 20 62 75 66 66 65 72 20 66 75 6C 6C 20 6F 66 20 ♪◙1)○Less than 1 buffer full of 00010A00 64 61 74 61 2E 0D 0A 32 29 09 48 6F 77 20 74 6F 20 74 65 72 6D 69 6E 61 74 65 20 77 68 65 6E 20 data.♪◙2)○How to terminate when 00010A20 64 61 74 61 20 65 6E 64 73 20 69 6E 20 66 69 72 73 74 20 62 75 66 66 65 72 2E 20 59 6F 75 20 6D data ends in first buffer. You m 00010A40 75 73 74 20 61 6C 6C 6F 77 20 69 74 20 74 6F 20 6C 6F 6F 70 20 62 61 63 6B 20 66 72 6F 6D 20 74 ust allow it to loop back from t 00010A60 68 65 20 65 6E 64 20 61 6E 64 20 74 68 65 6E 20 73 74 6F 70 20 61 74 20 74 68 65 20 65 6E 64 20 he end and then stop at the end 00010A80 6F 66 20 74 68 65 20 64 61 74 61 20 69 6E 73 74 65 61 64 20 6F 66 20 72 6F 6C 6C 69 6E 67 20 6F of the data instead of rolling o 00010AA0 76 65 72 20 61 74 20 74 68 65 20 6D 69 64 64 6C 65 2E 20 42 6F 74 68 20 72 69 67 68 74 20 61 6E ver at the middle. Both right an 00010AC0 64 20 6C 65 66 74 20 6D 75 73 74 20 62 65 20 74 61 6B 65 6E 20 63 61 72 65 20 6F 66 2E 0D 0A 33 d left must be taken care of.♪◙3 00010AE0 29 09 48 6F 77 20 74 6F 20 74 65 72 6D 69 6E 61 74 65 20 77 68 65 6E 20 64 61 74 61 20 65 6E 64 )○How to terminate when data end 00010B00 73 20 69 6E 20 74 68 65 20 73 65 63 6F 6E 64 20 62 75 66 66 65 72 2E 20 20 41 66 74 65 72 20 66 s in the second buffer. After f 00010B20 69 6C 6C 69 6E 67 20 69 6E 20 74 68 65 20 64 61 74 61 20 69 6E 20 74 68 65 20 73 65 63 6F 6E 64 illing in the data in the second 00010B40 20 62 75 66 66 65 72 2C 20 79 6F 75 20 63 61 6E 20 74 75 72 6E 20 6F 66 66 20 74 68 65 20 72 6F buffer, you can turn off the ro 00010B60 6C 6C 69 6E 67 20 6F 76 65 72 20 61 74 20 74 68 65 20 6D 69 64 64 6C 65 20 61 6E 64 20 74 65 6C lling over at the middle and tel 00010B80 6C 20 69 74 20 74 6F 20 73 74 6F 70 20 61 74 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 20 64 l it to stop at the end of the d 00010BA0 61 74 61 20 69 6E 20 74 68 65 20 73 65 63 6F 6E 64 20 62 75 66 66 65 72 2E 0D 0A 0D 0A 42 65 20 ata in the second buffer.♪◙♪◙Be 00010BC0 73 75 72 65 20 79 6F 75 20 75 6E 64 65 72 73 74 61 6E 64 20 61 6C 6C 20 74 68 65 20 73 74 61 72 sure you understand all the star 00010BE0 74 69 6E 67 20 61 6E 64 20 65 6E 64 69 6E 67 20 70 6F 73 73 69 62 69 6C 74 69 65 73 20 77 68 65 ting and ending possibilties whe 00010C00 6E 20 63 6F 64 69 6E 67 20 79 6F 75 20 61 70 70 6C 69 63 61 74 69 6F 6E 2E 0D 0A 0D 0A 54 68 65 n coding you application.♪◙♪◙The 00010C20 20 62 61 73 69 63 20 69 64 65 61 20 69 73 20 74 6F 20 6C 65 74 20 74 68 65 20 72 69 67 68 74 20 basic idea is to let the right 00010C40 76 6F 69 63 65 20 6C 6F 6F 70 20 66 6F 72 65 76 65 72 20 6F 6E 20 61 20 62 75 66 66 65 72 20 6F voice loop forever on a buffer o 00010C60 66 20 64 61 74 61 20 61 6E 64 20 66 65 65 64 20 69 74 20 64 61 74 61 20 62 61 73 65 64 20 6F 6E f data and feed it data based on 00010C80 20 49 52 51 20 67 65 6E 65 72 61 74 65 64 20 66 72 6F 6D 20 74 68 65 20 6C 65 66 74 20 63 68 61 IRQ generated from the left cha 00010CA0 6E 6E 65 6C 2E 20 54 68 65 20 6C 65 66 74 20 63 68 61 6E 6E 65 6C 20 63 61 6E 20 62 65 20 6D 6F nnel. The left channel can be mo 00010CC0 6E 69 74 6F 72 65 64 20 76 69 61 20 74 68 65 20 72 6F 6C 6C 6F 76 65 72 20 66 65 61 74 75 72 65 nitored via the rollover feature 00010CE0 20 74 6F 20 67 65 6E 65 72 61 74 65 20 61 6E 64 20 49 52 51 20 61 74 20 74 68 65 20 68 61 6C 66 to generate and IRQ at the half 00010D00 77 61 79 20 70 6F 69 6E 74 20 61 6E 64 20 61 6E 20 49 52 51 20 61 74 20 74 68 65 20 6C 6F 6F 70 way point and an IRQ at the loop 00010D20 20 70 6F 69 6E 74 20 61 74 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 20 62 75 66 66 65 72 20 point at the end of the buffer 00010D40 74 6F 20 6B 6E 6F 77 20 77 68 65 6E 20 74 68 65 20 73 65 63 6F 6E 64 20 62 75 66 66 65 72 20 66 to know when the second buffer f 00010D60 69 6E 69 73 68 65 73 2E 20 44 61 74 61 20 77 69 6C 6C 20 74 68 65 6E 20 62 65 20 73 65 6E 74 20 inishes. Data will then be sent 00010D80 74 6F 20 42 4F 54 48 20 76 6F 69 63 65 73 20 66 6F 72 20 74 68 65 20 70 6F 72 74 69 6F 6E 20 6F to BOTH voices for the portion o 00010DA0 66 20 64 61 74 61 20 74 68 61 74 20 69 74 20 6A 75 73 74 20 66 69 6E 69 73 68 65 64 20 70 6C 61 f data that it just finished pla 00010DC0 79 69 6E 67 2E 0D 0A 0D 0A 0D 0A 48 61 72 64 77 61 72 65 20 43 6F 6E 74 72 6F 6C 0D 0A 3D 3D 3D ying.♪◙♪◙♪◙Hardware Control♪◙=== 00010DE0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 0D 0A 54 68 69 73 20 6D 65 74 68 6F 64 20 68 61 73 =============♪◙♪◙This method has 00010E00 20 74 68 65 20 61 64 76 61 6E 74 61 67 65 20 6F 66 20 6E 6F 74 20 6E 65 65 64 69 6E 67 20 74 6F the advantage of not needing to 00010E20 20 64 65 2D 69 6E 74 65 72 6C 65 61 76 65 20 74 68 65 20 64 61 74 61 20 62 65 66 6F 72 65 20 44 de-interleave the data before D 00010E40 4D 41 69 6E 67 20 69 74 20 69 6E 74 6F 20 55 6C 74 72 61 53 6F 75 6E 64 20 44 52 41 4D 3A 20 74 MAing it into UltraSound DRAM: t 00010E60 68 65 20 64 61 74 61 20 69 73 20 20 73 65 6E 74 20 74 6F 20 44 52 41 4D 20 69 6E 20 74 68 65 20 he data is sent to DRAM in the 00010E80 69 6E 74 65 72 6C 65 61 76 65 64 20 66 6F 72 6D 61 74 2E 20 54 68 69 73 20 6D 65 61 6E 73 20 74 interleaved format. This means t 00010EA0 68 61 74 20 61 20 76 6F 69 63 65 20 6D 75 73 74 20 62 65 20 61 62 6C 65 20 74 6F 20 70 6C 61 79 hat a voice must be able to play 00010EC0 20 65 76 65 72 79 20 6F 74 68 65 72 20 73 61 6D 70 6C 65 20 74 6F 20 63 6F 72 72 65 63 74 6C 79 every other sample to correctly 00010EE0 20 73 65 70 61 72 61 74 65 20 74 68 65 20 72 69 67 68 74 20 61 6E 64 20 6C 65 66 74 20 63 68 61 separate the right and left cha 00010F00 6E 6E 65 6C 2E 20 49 74 20 69 73 20 70 6F 73 73 69 62 6C 65 20 74 6F 20 73 65 74 20 75 70 20 74 nnel. It is possible to set up t 00010F20 68 65 20 47 46 31 20 61 6E 64 20 74 68 65 20 32 20 76 6F 69 63 65 73 20 74 6F 20 64 6F 20 74 68 he GF1 and the 2 voices to do th 00010F40 69 73 2C 20 68 6F 77 65 76 65 72 2C 20 69 74 20 77 69 6C 6C 20 6F 6E 6C 79 20 77 6F 72 6B 20 66 is, however, it will only work f 00010F60 6F 72 20 32 20 75 73 61 62 6C 65 20 66 72 65 71 65 6E 63 69 65 73 2E 20 28 34 34 31 30 30 20 61 or 2 usable freqencies. (44100 a 00010F80 6E 64 20 32 32 30 35 30 29 2E 20 41 6E 79 20 6F 74 68 65 72 20 66 72 65 71 75 65 6E 63 69 65 73 nd 22050). Any other frequencies 00010FA0 20 6D 75 73 74 20 62 65 20 64 6F 6E 65 20 75 73 69 6E 67 20 74 68 65 20 73 6F 66 74 77 61 72 65 must be done using the software 00010FC0 20 63 6F 6E 74 72 6F 6C 20 64 65 2D 69 6E 74 65 72 6C 65 61 76 69 6E 67 20 6D 65 74 68 6F 64 2E control de-interleaving method. 00010FE0 0D 0A 0D 0A 0C 54 68 65 20 74 68 65 6F 72 79 20 62 65 68 69 6E 64 20 68 6F 77 20 74 6F 20 61 63 ♪◙♪◙♀The theory behind how to ac 00011000 68 69 65 76 65 20 74 68 69 73 20 69 73 20 71 75 69 74 65 20 63 6F 6D 70 6C 65 78 2E 20 49 74 20 hieve this is quite complex. It 00011020 69 6E 76 6F 6C 76 65 73 20 75 73 69 6E 67 20 74 68 65 20 23 20 6F 66 20 61 63 74 69 76 65 20 76 involves using the # of active v 00011040 6F 69 63 65 73 20 61 6E 64 20 74 68 65 20 76 6F 69 63 65 27 73 20 66 72 65 71 75 65 6E 63 79 20 oices and the voice's frequency 00011060 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 74 6F 20 67 65 74 20 69 74 20 74 6F 20 67 72 control register to get it to gr 00011080 61 62 20 74 68 65 20 63 6F 72 72 65 63 74 20 73 61 6D 70 6C 65 73 20 61 74 20 74 68 65 20 70 72 ab the correct samples at the pr 000110A0 6F 70 65 72 20 66 72 65 71 75 65 6E 63 79 2E 20 20 48 65 72 65 20 69 73 20 74 68 65 20 73 65 74 oper frequency. Here is the set 000110C0 75 70 20 6E 65 63 65 73 73 61 72 79 20 74 6F 20 70 6C 61 79 62 61 63 6B 20 34 34 31 30 30 20 48 up necessary to playback 44100 H 000110E0 7A 20 73 74 65 72 65 6F 20 61 6E 64 20 32 32 30 35 30 20 48 7A 20 73 74 65 72 65 6F 20 64 61 74 z stereo and 22050 Hz stereo dat 00011100 61 3A 0D 0A 0D 0A 34 34 31 30 30 20 48 7A 3A 09 53 65 74 20 74 68 65 20 23 20 6F 66 20 61 63 74 a:♪◙♪◙44100 Hz:○Set the # of act 00011120 69 76 65 20 76 6F 69 63 65 73 20 74 6F 20 31 34 20 61 6E 64 20 73 65 74 20 62 6F 74 68 20 76 6F ive voices to 14 and set both vo 00011140 69 63 65 73 20 70 6C 61 79 62 61 63 6B 20 72 61 74 65 20 74 6F 20 38 38 32 30 30 20 68 7A 2E 0D ices playback rate to 88200 hz.♪ 00011160 0A 0D 0A 32 32 30 35 30 20 48 7A 3A 09 53 65 74 20 74 68 65 20 23 20 6F 66 20 61 63 74 69 76 65 ◙♪◙22050 Hz:○Set the # of active 00011180 20 76 6F 69 63 65 73 20 74 6F 20 32 38 20 61 6E 64 20 73 65 74 20 62 6F 74 68 20 76 6F 69 63 65 voices to 28 and set both voice 000111A0 73 20 70 6C 61 79 62 61 63 6B 20 72 61 74 65 20 74 6F 20 34 34 31 30 30 20 68 7A 0D 0A 0D 0A 54 s playback rate to 44100 hz♪◙♪◙T 000111C0 68 65 73 65 20 74 77 6F 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 73 20 77 69 6C 6C 20 6D 61 6B hese two configurations will mak 000111E0 65 20 62 6F 74 68 20 76 6F 69 63 65 73 20 68 61 76 65 20 61 20 66 72 65 71 75 65 6E 63 79 20 63 e both voices have a frequency c 00011200 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 65 71 75 61 6C 20 74 6F 20 32 2E 20 54 68 65 20 ontrol register equal to 2. The 00011220 66 72 65 71 75 65 6E 63 79 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 68 6F 6C 64 73 frequency control register holds 00011240 20 74 68 65 20 61 6D 6F 75 6E 74 20 61 64 64 65 64 20 74 6F 20 74 68 65 20 63 75 72 72 65 6E 74 the amount added to the current 00011260 20 76 6F 69 63 65 20 70 6C 61 79 62 61 63 6B 20 6C 6F 63 61 74 69 6F 6E 20 74 6F 20 67 65 74 20 voice playback location to get 00011280 74 68 65 20 6E 65 78 74 20 70 6C 61 79 62 61 63 6B 20 6C 6F 63 61 74 69 6F 6E 2E 0D 0A 0D 0A 4E the next playback location.♪◙♪◙N 000112A0 6F 72 6D 61 6C 6C 79 2C 20 74 68 69 73 20 6E 75 6D 62 65 72 20 69 73 20 61 20 66 72 61 63 74 69 ormally, this number is a fracti 000112C0 6F 6E 20 73 6F 20 69 6E 74 65 72 70 6F 6C 61 74 69 6F 6E 20 69 73 20 64 6F 6E 65 20 74 6F 20 67 on so interpolation is done to g 000112E0 65 6E 65 72 61 74 65 20 69 6E 74 65 72 6D 65 64 69 61 74 65 20 70 6F 69 6E 74 73 20 62 65 74 77 enerate intermediate points betw 00011300 65 65 6E 20 73 75 63 63 65 73 73 69 76 65 20 6C 6F 63 61 74 69 6F 6E 73 2E 20 57 69 74 68 20 69 een successive locations. With i 00011320 6E 74 65 72 6C 65 61 76 65 64 20 64 61 74 61 2C 20 77 65 20 64 6F 6E 27 74 20 77 61 6E 74 20 74 nterleaved data, we don't want t 00011340 6F 20 69 6E 74 65 72 70 6F 6C 61 74 65 20 73 69 6E 63 65 20 74 68 65 20 6E 65 69 67 68 62 6F 72 o interpolate since the neighbor 00011360 69 6E 67 20 64 61 74 61 20 70 6F 69 6E 74 73 20 62 65 6C 6F 6E 67 20 74 6F 20 74 68 65 20 6F 74 ing data points belong to the ot 00011380 68 65 72 20 63 68 61 6E 6E 65 6C 2E 20 20 57 65 20 77 61 6E 74 20 74 6F 20 63 6F 6D 70 6C 65 74 her channel. We want to complet 000113A0 65 6C 79 20 73 6B 69 70 20 6F 76 65 72 20 74 68 65 20 70 6F 69 6E 74 20 61 66 74 65 72 20 74 68 ely skip over the point after th 000113C0 65 20 63 75 72 72 65 6E 74 20 6F 6E 65 2C 20 61 6E 64 20 67 6F 20 74 6F 20 6F 75 72 20 63 75 72 e current one, and go to our cur 000113E0 72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 70 6C 75 73 20 32 2E 20 0D 0A 0D 0A 54 68 65 20 6E 75 rent position plus 2. ♪◙♪◙The nu 00011400 6D 62 65 72 20 6F 66 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 73 65 6C 65 63 74 65 64 20 77 mber of active voices selected w 00011420 69 6C 6C 20 64 65 74 65 72 6D 69 6E 65 20 74 68 65 20 75 70 64 61 74 65 20 72 61 74 65 2E 20 54 ill determine the update rate. T 00011440 68 65 20 6D 6F 72 65 20 76 6F 69 63 65 73 20 74 68 61 74 20 61 72 65 20 61 63 74 69 76 65 2C 20 he more voices that are active, 00011460 74 68 65 20 6C 6F 6E 67 65 72 20 74 69 6D 65 20 62 65 74 77 65 65 6E 20 75 70 64 61 74 65 73 2C the longer time between updates, 00011480 20 74 68 75 73 20 73 6C 6F 77 69 6E 67 20 64 6F 77 6E 20 74 68 65 20 66 72 65 71 75 65 6E 63 79 thus slowing down the frequency 000114A0 2E 20 31 34 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 77 69 6C 6C 20 67 69 76 65 20 61 6E 64 . 14 active voices will give and 000114C0 20 75 70 64 61 74 65 20 72 61 74 65 20 6F 66 20 61 62 6F 75 74 20 32 32 2E 35 20 6D 69 63 72 6F update rate of about 22.5 micro 000114E0 73 65 63 6F 6E 64 73 20 28 34 34 31 30 30 20 68 7A 29 2C 20 77 68 65 72 65 61 73 20 32 38 20 76 seconds (44100 hz), whereas 28 v 00011500 6F 69 63 65 73 20 77 69 6C 6C 20 67 69 76 65 20 61 6E 64 20 75 70 64 61 74 65 20 72 61 74 65 20 oices will give and update rate 00011520 6F 66 20 61 62 6F 75 74 20 34 35 20 6D 69 63 72 6F 73 65 63 6F 6E 64 73 20 28 32 32 30 35 30 20 of about 45 microseconds (22050 00011540 68 7A 29 2E 20 0D 0A 0D 0A 54 68 65 20 69 6E 74 69 61 6C 69 7A 61 74 69 6F 6E 20 6F 66 20 74 68 hz). ♪◙♪◙The intialization of th 00011560 65 20 76 6F 69 63 65 73 20 69 6E 20 74 68 69 73 20 6D 6F 64 65 20 77 69 6C 6C 20 6F 62 76 69 6F e voices in this mode will obvio 00011580 75 73 6C 79 20 62 65 20 64 69 66 66 65 72 65 6E 74 2E 20 45 73 73 65 6E 6E 74 69 61 6C 6C 79 2C usly be different. Essenntially, 000115A0 20 74 68 65 20 76 6F 69 63 65 73 20 6D 75 73 74 20 62 65 20 73 65 74 20 75 70 20 74 6F 20 70 6C the voices must be set up to pl 000115C0 61 79 20 74 68 65 20 73 61 6D 65 20 64 61 74 61 20 62 75 74 20 6F 66 66 73 65 74 20 74 68 65 69 ay the same data but offset thei 000115E0 72 20 73 74 61 72 74 20 61 6E 64 20 65 6E 64 20 70 6F 69 6E 74 73 20 62 79 20 6F 6E 65 20 6F 72 r start and end points by one or 00011600 20 74 77 6F 20 62 79 74 65 73 2C 20 64 65 70 65 6E 64 69 6E 67 20 6F 6E 20 77 68 65 74 68 65 72 two bytes, depending on whether 00011620 20 69 74 20 69 73 20 61 6E 20 38 2D 20 6F 72 20 31 36 2D 62 69 74 20 73 61 6D 70 6C 65 2E 20 0D it is an 8- or 16-bit sample. ♪ 00011640 0A 09 0D 0A 0D 0A 33 2E 31 32 20 43 2D 73 70 65 63 69 66 69 63 20 69 6E 66 6F 72 6D 61 74 69 6F ◙○♪◙♪◙3.12 C-specific informatio 00011660 6E 0D 0A 0D 0A 43 75 72 72 65 6E 74 6C 79 2C 20 31 30 20 64 69 66 66 65 72 65 6E 74 20 43 20 6D n♪◙♪◙Currently, 10 different C m 00011680 65 6D 6F 72 79 20 6D 6F 64 65 6C 2F 63 6F 6D 70 69 6C 65 72 20 63 6F 6E 66 69 67 75 72 61 74 69 emory model/compiler configurati 000116A0 6F 6E 73 20 61 72 65 20 73 75 70 70 6C 69 65 64 2E 20 20 4C 61 72 67 65 2C 20 6D 65 64 69 75 6D ons are supplied. Large, medium 000116C0 2C 20 73 6D 61 6C 6C 20 61 6E 64 20 74 69 6E 79 20 6D 6F 64 65 6C 73 20 66 6F 72 20 42 6F 72 6C , small and tiny models for Borl 000116E0 61 6E 64 20 61 6E 64 20 4D 69 63 72 6F 73 6F 66 74 20 63 6F 6D 70 69 6C 65 72 73 20 61 72 65 20 and and Microsoft compilers are 00011700 61 76 61 69 6C 61 62 6C 65 2C 20 61 73 20 77 65 6C 6C 20 61 73 20 66 6C 61 74 20 6D 6F 64 65 6C available, as well as flat model 00011720 20 66 6F 72 20 57 61 74 43 6F 6D 20 61 6E 64 20 4D 65 74 61 57 61 72 65 20 63 6F 6D 70 69 6C 65 for WatCom and MetaWare compile 00011740 72 73 2E 20 20 54 68 65 20 6C 65 76 65 6C 20 30 20 6C 69 62 72 61 72 79 20 63 6F 6E 74 61 69 6E rs. The level 0 library contain 00011760 73 20 74 68 65 20 6C 6F 77 65 73 74 20 6C 65 76 65 6C 20 66 75 6E 63 74 69 6F 6E 20 63 61 6C 6C s the lowest level function call 00011780 73 20 74 68 61 74 20 74 61 6C 6B 20 64 69 72 65 63 74 6C 79 20 74 6F 20 74 68 65 20 68 61 72 64 s that talk directly to the hard 000117A0 77 61 72 65 2E 20 20 54 68 65 20 6C 65 76 65 6C 20 31 20 6C 69 62 72 61 72 79 20 69 73 20 61 20 ware. The level 1 library is a 000117C0 6C 69 74 74 6C 65 20 68 69 67 68 65 72 20 61 6E 64 20 63 6F 6E 74 61 69 6E 73 20 66 75 6E 63 74 little higher and contains funct 000117E0 69 6F 6E 73 20 74 68 61 74 20 63 61 6C 6C 20 6C 65 76 65 6C 20 30 20 66 75 6E 63 74 69 6F 6E 73 ions that call level 0 functions 00011800 2E 20 20 54 68 65 20 33 44 20 6C 69 62 72 61 72 69 65 73 20 63 6F 6E 74 61 69 6E 20 74 68 65 20 . The 3D libraries contain the 00011820 66 75 6E 63 74 69 6F 6E 73 20 6E 65 63 65 73 73 61 72 79 20 66 6F 72 20 69 6D 70 6C 65 6D 65 6E functions necessary for implemen 00011840 74 69 6E 67 20 74 68 65 20 46 6F 63 61 6C 20 50 6F 69 6E 74 20 33 44 20 73 6F 75 6E 64 73 2E 20 ting the Focal Point 3D sounds. 00011860 20 42 6F 72 6C 61 6E 64 20 43 2B 2B 20 32 2E 30 20 61 6E 64 20 33 2E 31 2C 20 4D 69 63 72 6F 73 Borland C++ 2.0 and 3.1, Micros 00011880 6F 66 74 20 43 20 36 2E 30 2C 20 57 61 74 63 6F 6D 20 43 39 2E 30 2F 33 38 36 2C 20 61 6E 64 20 oft C 6.0, Watcom C9.0/386, and 000118A0 4D 65 74 61 77 61 72 65 20 48 69 67 68 20 43 2F 43 2B 2B 20 77 65 72 65 20 75 73 65 64 20 74 6F Metaware High C/C++ were used to 000118C0 20 74 65 73 74 20 74 68 65 20 6C 69 62 72 61 72 79 20 72 6F 75 74 69 6E 65 73 2E 20 20 54 68 65 test the library routines. The 000118E0 73 65 20 61 72 65 20 74 68 65 20 6E 61 6D 69 6E 67 20 63 6F 6E 76 65 6E 74 69 6F 6E 73 20 66 6F se are the naming conventions fo 00011900 72 20 74 68 65 20 43 20 6C 69 62 72 61 72 69 65 73 3A 0D 0A 0D 0A 09 75 6C 74 72 61 30 6C 62 2E r the C libraries:♪◙♪◙○ultra0lb. 00011920 6C 69 62 20 4C 65 76 65 6C 20 30 2C 20 6C 61 72 67 65 20 6D 6F 64 65 6C 2C 20 20 42 6F 72 6C 61 lib Level 0, large model, Borla 00011940 6E 64 20 43 0D 0A 09 75 6C 74 72 61 31 6C 62 2E 6C 69 62 20 4C 65 76 65 6C 20 31 2C 20 6C 61 72 nd C♪◙○ultra1lb.lib Level 1, lar 00011960 67 65 20 6D 6F 64 65 6C 2C 20 20 42 6F 72 6C 61 6E 64 20 43 0D 0A 09 75 6C 74 33 44 5F 6C 62 2E ge model, Borland C♪◙○ult3D_lb. 00011980 6C 69 62 20 20 20 20 20 20 33 44 2C 20 6C 61 72 67 65 20 6D 6F 64 65 6C 2C 20 20 42 6F 72 6C 61 lib 3D, large model, Borla 000119A0 6E 64 20 43 0D 0A 0D 0A 09 75 6C 74 72 61 30 6D 62 2E 6C 69 62 20 4C 65 76 65 6C 20 30 2C 20 6D nd C♪◙♪◙○ultra0mb.lib Level 0, m 000119C0 65 64 69 75 6D 20 6D 6F 64 65 6C 2C 20 42 6F 72 6C 61 6E 64 20 43 0D 0A 09 75 6C 74 72 61 31 6D edium model, Borland C♪◙○ultra1m 000119E0 62 2E 6C 69 62 20 4C 65 76 65 6C 20 31 2C 20 6D 65 64 69 75 6D 20 6D 6F 64 65 6C 2C 20 42 6F 72 b.lib Level 1, medium model, Bor 00011A00 6C 61 6E 64 20 43 0D 0A 09 75 6C 74 33 44 5F 6D 62 2E 6C 69 62 20 20 20 20 20 20 33 44 2C 20 6D land C♪◙○ult3D_mb.lib 3D, m 00011A20 65 64 69 75 6D 20 6D 6F 64 65 6C 2C 20 42 6F 72 6C 61 6E 64 20 43 0D 0A 0C 09 75 6C 74 72 61 30 edium model, Borland C♪◙♀○ultra0 00011A40 73 62 2E 6C 69 62 20 4C 65 76 65 6C 20 30 2C 20 73 6D 61 6C 6C 20 6D 6F 64 65 6C 2C 20 20 42 6F sb.lib Level 0, small model, Bo 00011A60 72 6C 61 6E 64 20 43 0D 0A 09 75 6C 74 72 61 31 73 62 2E 6C 69 62 20 4C 65 76 65 6C 20 31 2C 20 rland C♪◙○ultra1sb.lib Level 1, 00011A80 73 6D 61 6C 6C 20 6D 6F 64 65 6C 2C 20 20 42 6F 72 6C 61 6E 64 20 43 0D 0A 09 75 6C 74 33 44 5F small model, Borland C♪◙○ult3D_ 00011AA0 73 62 2E 6C 69 62 20 20 20 20 20 20 33 44 2C 20 73 6D 61 6C 6C 20 6D 6F 64 65 6C 2C 20 20 42 6F sb.lib 3D, small model, Bo 00011AC0 72 6C 61 6E 64 20 43 0D 0A 0D 0A 09 75 6C 74 72 61 30 74 62 2E 6C 69 62 20 4C 65 76 65 6C 20 30 rland C♪◙♪◙○ultra0tb.lib Level 0 00011AE0 2C 20 74 69 6E 79 20 6D 6F 64 65 6C 2C 20 20 20 42 6F 72 6C 61 6E 64 20 43 0D 0A 09 75 6C 74 72 , tiny model, Borland C♪◙○ultr 00011B00 61 31 74 62 2E 6C 69 62 20 4C 65 76 65 6C 20 31 2C 20 74 69 6E 79 20 6D 6F 64 65 6C 2C 20 20 20 a1tb.lib Level 1, tiny model, 00011B20 42 6F 72 6C 61 6E 64 20 43 0D 0A 09 75 6C 74 33 44 5F 74 62 2E 6C 69 62 20 20 20 20 20 20 33 44 Borland C♪◙○ult3D_tb.lib 3D 00011B40 2C 20 74 69 6E 79 20 6D 6F 64 65 6C 2C 20 20 20 42 6F 72 6C 61 6E 64 20 43 0D 0A 0D 0A 09 75 6C , tiny model, Borland C♪◙♪◙○ul 00011B60 74 72 61 30 6C 6D 2E 6C 69 62 20 4C 65 76 65 6C 20 30 2C 20 6C 61 72 67 65 20 6D 6F 64 65 6C 2C tra0lm.lib Level 0, large model, 00011B80 20 20 4D 69 63 72 6F 73 6F 66 74 20 43 0D 0A 09 75 6C 74 72 61 31 6C 6D 2E 6C 69 62 20 4C 65 76 Microsoft C♪◙○ultra1lm.lib Lev 00011BA0 65 6C 20 31 2C 20 6C 61 72 67 65 20 6D 6F 64 65 6C 2C 20 20 4D 69 63 72 6F 73 6F 66 74 20 43 0D el 1, large model, Microsoft C♪ 00011BC0 0A 09 75 6C 74 33 44 5F 6C 6D 2E 6C 69 62 20 20 20 20 20 20 33 44 2C 20 6C 61 72 67 65 20 6D 6F ◙○ult3D_lm.lib 3D, large mo 00011BE0 64 65 6C 2C 20 20 4D 69 63 72 6F 73 6F 66 74 20 43 0D 0A 0D 0A 09 75 6C 74 72 61 30 6D 6D 2E 6C del, Microsoft C♪◙♪◙○ultra0mm.l 00011C00 69 62 20 4C 65 76 65 6C 20 30 2C 20 6D 65 64 69 75 6D 20 6D 6F 64 65 6C 2C 20 4D 69 63 72 6F 73 ib Level 0, medium model, Micros 00011C20 6F 66 74 20 43 0D 0A 09 75 6C 74 72 61 31 6D 6D 2E 6C 69 62 20 4C 65 76 65 6C 20 31 2C 20 6D 65 oft C♪◙○ultra1mm.lib Level 1, me 00011C40 64 69 75 6D 20 6D 6F 64 65 6C 2C 20 4D 69 63 72 6F 73 6F 66 74 20 43 0D 0A 09 75 6C 74 33 44 5F dium model, Microsoft C♪◙○ult3D_ 00011C60 6D 6D 2E 6C 69 62 20 20 20 20 20 20 33 44 2C 20 6D 65 64 69 75 6D 20 6D 6F 64 65 6C 2C 20 4D 69 mm.lib 3D, medium model, Mi 00011C80 63 72 6F 73 6F 66 74 20 43 0D 0A 0D 0A 09 75 6C 74 72 61 30 73 6D 2E 6C 69 62 20 4C 65 76 65 6C crosoft C♪◙♪◙○ultra0sm.lib Level 00011CA0 20 30 2C 20 73 6D 61 6C 6C 20 6D 6F 64 65 6C 2C 20 20 4D 69 63 72 6F 73 6F 66 74 20 43 0D 0A 09 0, small model, Microsoft C♪◙○ 00011CC0 75 6C 74 72 61 31 73 6D 2E 6C 69 62 20 4C 65 76 65 6C 20 31 2C 20 73 6D 61 6C 6C 20 6D 6F 64 65 ultra1sm.lib Level 1, small mode 00011CE0 6C 2C 20 20 4D 69 63 72 6F 73 6F 66 74 20 43 0D 0A 09 75 6C 74 33 44 5F 73 6D 2E 6C 69 62 20 20 l, Microsoft C♪◙○ult3D_sm.lib 00011D00 20 20 20 20 33 44 2C 20 73 6D 61 6C 6C 20 6D 6F 64 65 6C 2C 20 20 4D 69 63 72 6F 73 6F 66 74 20 3D, small model, Microsoft 00011D20 43 0D 0A 0D 0A 09 75 6C 74 72 61 30 74 6D 2E 6C 69 62 20 4C 65 76 65 6C 20 30 2C 20 74 69 6E 79 C♪◙♪◙○ultra0tm.lib Level 0, tiny 00011D40 20 6D 6F 64 65 6C 2C 20 20 20 4D 69 63 72 6F 73 6F 66 74 20 43 0D 0A 09 75 6C 74 72 61 31 74 6D model, Microsoft C♪◙○ultra1tm 00011D60 2E 6C 69 62 20 4C 65 76 65 6C 20 31 2C 20 74 69 6E 79 20 6D 6F 64 65 6C 2C 20 20 20 4D 69 63 72 .lib Level 1, tiny model, Micr 00011D80 6F 73 6F 66 74 20 43 0D 0A 09 75 6C 74 33 44 5F 74 6D 2E 6C 69 62 20 20 20 20 20 20 33 44 2C 20 osoft C♪◙○ult3D_tm.lib 3D, 00011DA0 74 69 6E 79 20 6D 6F 64 65 6C 2C 20 20 20 4D 69 63 72 6F 73 6F 66 74 20 43 0D 0A 0D 0A 09 75 6C tiny model, Microsoft C♪◙♪◙○ul 00011DC0 74 72 61 30 77 63 2E 6C 69 62 20 4C 65 76 65 6C 20 30 2C 20 46 6C 61 74 20 6D 6F 64 65 6C 2C 20 tra0wc.lib Level 0, Flat model, 00011DE0 20 20 57 61 74 63 6F 6D 20 43 0D 0A 09 75 6C 74 72 61 31 77 63 2E 6C 69 62 20 4C 65 76 65 6C 20 Watcom C♪◙○ultra1wc.lib Level 00011E00 31 2C 20 46 6C 61 74 20 6D 6F 64 65 6C 2C 20 20 20 57 61 74 63 6F 6D 20 43 0D 0A 09 75 6C 74 33 1, Flat model, Watcom C♪◙○ult3 00011E20 44 5F 77 63 2E 6C 69 62 20 20 20 20 20 20 33 44 2C 20 46 6C 61 74 20 6D 6F 64 65 6C 2C 20 20 20 D_wc.lib 3D, Flat model, 00011E40 57 61 74 63 6F 6D 20 43 0D 0A 0D 0A 09 75 6C 74 72 61 30 6D 77 2E 6C 69 62 20 4C 65 76 65 6C 20 Watcom C♪◙♪◙○ultra0mw.lib Level 00011E60 30 2C 20 46 6C 61 74 20 6D 6F 64 65 6C 2C 20 20 20 4D 65 74 61 77 61 72 65 20 48 69 67 68 20 43 0, Flat model, Metaware High C 00011E80 2F 43 2B 2B 0D 0A 09 75 6C 74 72 61 31 6D 77 2E 6C 69 62 20 4C 65 76 65 6C 20 31 2C 20 46 6C 61 /C++♪◙○ultra1mw.lib Level 1, Fla 00011EA0 74 20 6D 6F 64 65 6C 2C 20 20 20 4D 65 74 61 77 61 72 65 20 48 69 67 68 20 43 2F 43 2B 2B 0D 0A t model, Metaware High C/C++♪◙ 00011EC0 09 75 6C 74 33 44 5F 6D 77 2E 6C 69 62 20 20 20 20 20 20 33 44 2C 20 46 6C 61 74 20 6D 6F 64 65 ○ult3D_mw.lib 3D, Flat mode 00011EE0 6C 2C 20 20 20 4D 65 74 61 77 61 72 65 20 48 69 67 68 20 43 2F 43 2B 2B 0D 0A 0D 0A 53 65 76 65 l, Metaware High C/C++♪◙♪◙Seve 00011F00 72 61 6C 20 65 78 61 6D 70 6C 65 20 61 70 70 6C 69 63 61 74 69 6F 6E 73 20 61 72 65 20 73 75 70 ral example applications are sup 00011F20 70 6C 69 65 64 20 6F 6E 20 74 68 65 20 74 6F 6F 6C 6B 69 74 20 64 69 73 6B 73 20 74 6F 20 73 68 plied on the toolkit disks to sh 00011F40 6F 77 20 79 6F 75 20 68 6F 77 20 74 6F 20 69 6E 74 65 72 66 61 63 65 20 74 6F 20 74 68 65 20 6C ow you how to interface to the l 00011F60 69 62 72 61 72 69 65 73 2E 20 20 50 6C 65 61 73 65 20 6C 6F 6F 6B 20 74 68 65 6D 20 6F 76 65 72 ibraries. Please look them over 00011F80 20 63 61 72 65 66 75 6C 6C 79 2E 20 54 68 65 79 20 61 72 65 20 74 68 65 20 62 65 73 74 20 77 61 carefully. They are the best wa 00011FA0 79 20 74 6F 20 67 65 74 20 61 20 68 61 6E 64 6C 65 20 6F 6E 20 74 68 65 20 77 61 79 20 74 68 65 y to get a handle on the way the 00011FC0 20 63 61 72 64 20 6F 70 65 72 61 74 65 73 2E 20 0D 0A 0D 0A 0D 0A 0D 0A 33 2E 31 33 20 50 41 53 card operates. ♪◙♪◙♪◙♪◙3.13 PAS 00011FE0 43 41 4C 2D 73 70 65 63 69 66 69 63 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 0D 0A 0D 0A 56 65 72 73 CAL-specific information♪◙♪◙Vers 00012000 69 6F 6E 20 32 2E 31 30 20 6F 66 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 53 44 4B 20 69 ion 2.10 of the UltraSound SDK i 00012020 73 20 74 68 65 20 66 69 72 73 74 20 76 65 72 73 69 6F 6E 20 77 68 69 63 68 20 68 61 73 20 66 75 s the first version which has fu 00012040 6C 6C 20 73 75 70 70 6F 72 74 20 66 6F 72 20 54 75 72 62 6F 20 50 61 73 63 61 6C 20 36 2E 30 20 ll support for Turbo Pascal 6.0 00012060 61 6E 64 20 37 2E 30 2C 20 61 73 20 77 65 6C 6C 20 61 73 20 42 6F 72 6C 61 6E 64 20 50 61 73 63 and 7.0, as well as Borland Pasc 00012080 61 6C 20 37 2E 30 2E 20 46 6F 72 20 74 68 6F 73 65 20 6F 66 20 79 6F 75 20 77 68 6F 20 61 72 65 al 7.0. For those of you who are 000120A0 20 63 75 72 69 6F 75 73 2C 20 42 6F 72 6C 61 6E 64 20 50 61 73 63 61 6C 20 37 2E 30 20 69 73 20 curious, Borland Pascal 7.0 is 000120C0 74 68 65 20 70 72 6F 66 65 73 73 69 6F 6E 61 6C 20 76 65 72 73 69 6F 6E 20 6F 66 20 54 75 72 62 the professional version of Turb 000120E0 6F 20 50 61 73 63 61 6C 20 37 2E 30 2E 20 20 49 74 20 63 6F 73 74 73 20 6D 6F 72 65 2C 20 62 75 o Pascal 7.0. It costs more, bu 00012100 74 20 69 6E 63 6C 75 64 65 73 20 61 20 6C 6F 74 20 6F 66 20 62 65 6C 6C 73 20 61 6E 64 20 77 68 t includes a lot of bells and wh 00012120 69 73 74 6C 65 73 20 74 68 61 74 20 61 72 65 20 6E 6F 74 20 69 6E 63 6C 75 64 65 64 20 69 6E 20 istles that are not included in 00012140 74 68 65 20 72 65 67 75 6C 61 72 20 27 54 75 72 62 6F 27 20 76 65 72 73 69 6F 6E 20 28 66 6F 72 the regular 'Turbo' version (for 00012160 20 6D 6F 72 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 2C 20 63 6F 6E 74 61 63 74 20 42 6F 72 6C 61 more information, contact Borla 00012180 6E 64 29 2E 0D 0A 0D 0A 54 68 65 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 77 61 73 20 64 6F 6E 65 nd).♪◙♪◙The translation was done 000121A0 20 65 6E 74 69 72 65 6C 79 20 62 79 20 4B 75 72 74 20 4B 65 6E 6E 65 74 74 20 6F 66 20 49 6E 67 entirely by Kurt Kennett of Ing 000121C0 65 6E 75 69 74 79 20 53 6F 66 74 77 61 72 65 2C 20 61 6E 64 20 69 73 20 61 20 64 69 72 65 63 74 enuity Software, and is a direct 000121E0 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 43 20 74 6F 6F 6C 6B 69 74 2E 20 20 translation of the C toolkit. 00012200 54 68 65 20 63 6F 64 65 20 77 61 73 20 77 72 69 74 74 65 6E 20 69 6E 20 42 6F 72 6C 61 6E 64 20 The code was written in Borland 00012220 50 61 73 63 61 6C 20 37 20 61 6E 64 20 74 68 65 6E 20 6D 69 6E 6F 72 20 61 64 6A 75 73 74 6D 65 Pascal 7 and then minor adjustme 00012240 6E 74 73 20 77 65 72 65 20 6D 61 64 65 20 74 6F 20 6D 61 6B 65 20 69 74 20 63 6F 6D 70 69 6C 65 nts were made to make it compile 00012260 20 75 6E 64 65 72 20 54 75 72 62 6F 20 36 20 61 6E 64 20 37 2E 20 20 0D 0A 0C 44 75 65 20 74 6F under Turbo 6 and 7. ♪◙♀Due to 00012280 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 74 68 65 20 50 61 73 63 61 6C 20 74 72 61 6E 73 6C the fact that the Pascal transl 000122A0 61 74 69 6F 6E 20 77 61 73 20 64 6F 6E 65 20 61 66 74 65 72 20 74 68 65 20 43 20 63 6F 64 65 20 ation was done after the C code 000122C0 77 61 73 20 66 69 6E 69 73 68 65 64 2C 20 73 6F 6D 65 20 6F 66 20 74 68 65 20 6E 61 6D 69 6E 67 was finished, some of the naming 000122E0 20 63 6F 6E 76 65 6E 74 69 6F 6E 73 20 66 6F 72 20 73 6F 6D 65 20 6F 66 20 74 68 65 20 66 75 6E conventions for some of the fun 00012300 63 74 69 6F 6E 73 20 61 6E 64 20 72 65 63 6F 72 64 20 74 79 70 65 73 20 72 65 66 6C 65 63 74 73 ctions and record types reflects 00012320 20 61 20 27 43 2D 6C 69 6B 65 27 20 73 79 6E 74 61 78 20 61 6E 64 20 73 74 79 6C 65 2E 20 20 53 a 'C-like' syntax and style. S 00012340 6F 6D 65 20 63 6F 6E 76 65 72 73 69 6F 6E 20 6F 66 20 66 75 6E 63 74 69 6F 6E 20 72 65 73 75 6C ome conversion of function resul 00012360 74 20 74 79 70 65 73 20 68 61 73 20 62 65 65 6E 20 64 6F 6E 65 20 74 6F 20 72 65 66 6C 65 63 74 t types has been done to reflect 00012380 20 61 20 6D 6F 72 65 20 50 61 73 63 61 6C 2D 6C 69 6B 65 20 73 74 72 75 63 74 75 72 65 2E 0D 0A a more Pascal-like structure.♪◙ 000123A0 0D 0A 41 66 74 65 72 20 69 6E 73 74 61 6C 6C 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 53 44 4B 2C ♪◙After installation of the SDK, 000123C0 20 74 68 65 72 65 20 77 69 6C 6C 20 62 65 20 74 77 6F 20 75 6E 69 74 73 20 61 6E 64 20 6F 6E 65 there will be two units and one 000123E0 20 69 6E 74 65 72 66 61 63 65 20 66 69 6C 65 20 61 76 61 69 6C 61 62 6C 65 20 69 6E 20 74 68 65 interface file available in the 00012400 20 50 41 53 43 41 4C 20 73 75 62 64 69 72 65 63 74 6F 72 79 3A 0D 0A 0D 0A 09 55 4C 54 52 41 44 PASCAL subdirectory:♪◙♪◙○ULTRAD 00012420 52 56 2E 56 36 30 20 20 54 75 72 62 6F 20 50 61 73 63 61 6C 20 36 2E 30 20 76 65 72 73 69 6F 6E RV.V60 Turbo Pascal 6.0 version 00012440 0D 0A 09 55 4C 54 52 41 44 52 56 2E 56 37 30 20 20 54 75 72 62 6F 2F 42 6F 72 6C 61 6E 64 20 50 ♪◙○ULTRADRV.V70 Turbo/Borland P 00012460 61 73 63 61 6C 20 37 2E 30 20 76 65 72 73 69 6F 6E 0D 0A 09 55 4C 54 52 41 44 52 56 2E 49 4E 54 ascal 7.0 version♪◙○ULTRADRV.INT 00012480 20 20 54 68 69 73 20 69 73 20 74 68 65 20 69 6E 74 65 72 66 61 63 65 20 73 65 63 74 69 6F 6E 20 This is the interface section 000124A0 66 6F 72 20 61 6C 6C 20 75 6E 69 74 73 2E 0D 0A 0D 0A 59 6F 75 20 73 68 6F 75 6C 64 20 63 6F 70 for all units.♪◙♪◙You should cop 000124C0 79 20 74 68 65 20 75 6E 69 74 20 79 6F 75 20 77 69 73 68 20 74 6F 20 75 73 65 20 74 6F 20 6F 6E y the unit you wish to use to on 000124E0 65 20 6F 66 20 79 6F 75 72 20 75 6E 69 74 20 64 69 72 65 63 74 6F 72 69 65 73 2C 20 61 6E 64 20 e of your unit directories, and 00012500 74 68 65 6E 20 72 65 6E 61 6D 65 20 74 68 65 20 75 6E 69 74 20 74 6F 20 27 55 4C 54 52 41 44 52 then rename the unit to 'ULTRADR 00012520 56 2E 54 50 55 27 2E 20 20 59 6F 75 20 6D 61 79 20 65 78 70 65 72 69 65 6E 63 65 20 63 6F 6D 70 V.TPU'. You may experience comp 00012540 69 6C 69 6E 67 20 70 72 6F 62 6C 65 6D 73 20 69 66 20 79 6F 75 20 64 6F 20 6E 6F 74 20 72 65 6E iling problems if you do not ren 00012560 61 6D 65 20 74 68 65 20 66 69 6C 65 2E 20 20 59 6F 75 20 6D 61 79 20 61 6C 73 6F 20 77 69 73 68 ame the file. You may also wish 00012580 20 74 6F 20 63 6F 70 79 20 74 68 65 20 69 6E 74 65 72 66 61 63 65 20 66 69 6C 65 20 74 6F 20 75 to copy the interface file to u 000125A0 73 65 20 61 73 20 61 20 71 75 69 63 6B 2D 72 65 66 65 72 65 6E 63 65 2E 0D 0A 0D 0A 46 6F 72 20 se as a quick-reference.♪◙♪◙For 000125C0 75 73 65 72 73 20 6F 66 20 54 75 72 62 6F 20 61 6E 64 20 42 6F 72 6C 61 6E 64 20 50 61 73 63 61 users of Turbo and Borland Pasca 000125E0 6C 20 37 2E 30 2C 20 61 20 68 65 6C 70 20 66 69 6C 65 20 68 61 73 20 62 65 65 6E 20 70 72 6F 76 l 7.0, a help file has been prov 00012600 69 64 65 64 20 74 6F 20 61 6C 6C 6F 77 20 71 75 69 63 6B 20 63 6F 6E 74 65 78 74 2D 73 65 6E 73 ided to allow quick context-sens 00012620 69 74 69 76 65 20 68 65 6C 70 20 66 72 6F 6D 20 69 6E 73 69 64 65 20 74 68 65 20 49 44 45 20 65 itive help from inside the IDE e 00012640 64 69 74 6F 72 2E 20 20 41 6C 73 6F 2C 20 61 20 4D 41 4B 45 48 45 4C 50 2E 54 58 54 20 76 65 72 ditor. Also, a MAKEHELP.TXT ver 00012660 73 69 6F 6E 20 6F 66 20 74 68 69 73 20 68 65 6C 70 20 66 69 6C 65 20 68 61 73 20 62 65 65 6E 20 sion of this help file has been 00012680 70 72 6F 76 69 64 65 64 20 66 6F 72 20 74 68 6F 73 65 20 75 73 65 72 73 20 77 68 6F 20 65 6D 70 provided for those users who emp 000126A0 6C 6F 79 20 54 75 72 62 6F 50 6F 77 65 72 27 73 20 63 6F 6E 74 65 78 74 2D 73 65 6E 73 69 74 69 loy TurboPower's context-sensiti 000126C0 76 65 20 68 65 6C 70 20 73 79 73 74 65 6D 2E 0D 0A 0D 0A 54 6F 20 69 6E 73 74 61 6C 6C 20 74 68 ve help system.♪◙♪◙To install th 000126E0 65 20 49 44 45 20 68 65 6C 70 20 66 69 6C 65 2C 20 6C 6F 61 64 20 54 75 72 62 6F 20 6F 72 20 42 e IDE help file, load Turbo or B 00012700 6F 72 6C 61 6E 64 20 50 61 73 63 61 6C 20 37 20 61 6E 64 20 73 65 6C 65 63 74 20 74 68 65 20 27 orland Pascal 7 and select the ' 00012720 48 65 6C 70 27 20 6D 65 6E 75 20 66 72 6F 6D 20 74 68 65 20 6D 65 6E 75 20 62 61 72 2E 20 20 43 Help' menu from the menu bar. C 00012740 68 6F 6F 73 65 20 74 68 65 20 27 46 69 6C 65 73 2E 2E 2E 27 20 6F 70 74 69 6F 6E 2C 20 61 6E 64 hoose the 'Files...' option, and 00012760 20 73 65 6C 65 63 74 20 74 68 65 20 27 41 64 64 27 20 62 75 74 74 6F 6E 2E 20 20 43 68 6F 6F 73 select the 'Add' button. Choos 00012780 65 20 74 68 65 20 66 69 6C 65 20 27 55 4C 54 52 41 44 52 56 2E 54 50 48 27 20 66 72 6F 6D 20 74 e the file 'ULTRADRV.TPH' from t 000127A0 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 50 41 53 43 41 4C 20 73 75 62 64 69 72 65 63 74 6F 72 he UltraSound PASCAL subdirector 000127C0 79 2E 20 20 41 66 74 65 72 20 79 6F 75 20 68 61 76 65 20 64 6F 6E 65 20 74 68 69 73 2C 20 79 6F y. After you have done this, yo 000127E0 75 20 6D 61 79 20 75 73 65 20 74 68 65 20 46 31 20 6B 65 79 20 61 6E 64 20 69 74 27 73 20 64 65 u may use the F1 key and it's de 00012800 72 69 76 61 74 69 76 65 73 20 74 6F 20 61 63 63 65 73 73 20 72 65 66 65 72 65 6E 63 65 20 69 6E rivatives to access reference in 00012820 66 6F 72 6D 61 74 69 6F 6E 20 66 6F 72 20 61 6E 79 20 6F 66 20 74 68 65 20 66 75 6E 63 74 69 6F formation for any of the functio 00012840 6E 73 20 61 6E 64 20 70 72 6F 63 65 64 75 72 65 73 20 69 6E 20 74 68 65 20 53 44 4B 20 72 65 66 ns and procedures in the SDK ref 00012860 65 72 65 6E 63 65 20 6D 61 6E 75 61 6C 20 28 63 68 61 70 74 65 72 20 33 29 2E 0D 0A 0D 0A 46 6F erence manual (chapter 3).♪◙♪◙Fo 00012880 72 20 65 78 61 6D 70 6C 65 2C 20 61 66 74 65 72 20 69 6E 73 74 61 6C 6C 69 6E 67 20 74 68 65 20 r example, after installing the 000128A0 68 65 6C 70 20 66 69 6C 65 2C 20 74 79 70 65 20 74 68 65 20 77 6F 72 64 20 27 55 6C 74 72 61 53 help file, type the word 'UltraS 000128C0 65 74 46 72 65 71 75 65 6E 63 79 27 20 69 6E 74 6F 20 74 68 65 20 49 44 45 2C 20 6D 6F 76 65 20 etFrequency' into the IDE, move 000128E0 74 68 65 20 63 75 72 73 6F 72 20 6F 6E 20 74 6F 70 20 6F 66 20 74 68 65 20 77 6F 72 64 2C 20 61 the cursor on top of the word, a 00012900 6E 64 20 70 72 65 73 73 20 43 54 52 4C 2D 46 31 2E 20 20 59 6F 75 20 77 69 6C 6C 20 62 65 20 67 nd press CTRL-F1. You will be g 00012920 69 76 65 6E 20 61 6E 20 65 78 70 6C 61 6E 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 73 79 6E 74 61 iven an explanation of the synta 00012940 78 20 61 6E 64 20 75 73 61 67 65 20 6F 66 20 74 68 65 20 50 72 6F 63 65 64 75 72 65 2C 20 61 73 x and usage of the Procedure, as 00012960 20 77 65 6C 6C 20 61 73 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 6E 20 72 65 6C 61 74 65 64 20 well as information on related 00012980 70 72 6F 63 65 64 75 72 65 73 2C 20 66 75 6E 63 74 69 6F 6E 73 2C 20 63 6F 6E 73 74 61 6E 74 73 procedures, functions, constants 000129A0 2C 20 61 6E 64 20 76 61 72 69 61 62 6C 65 73 2E 0D 0A 0D 0A 41 20 73 68 6F 72 74 20 73 65 63 74 , and variables.♪◙♪◙A short sect 000129C0 69 6F 6E 20 64 65 74 61 69 6C 69 6E 67 20 73 70 65 63 69 66 69 63 20 69 6E 66 6F 72 6D 61 74 69 ion detailing specific informati 000129E0 6F 6E 20 61 62 6F 75 74 20 74 79 70 65 73 20 61 6E 64 20 63 6F 6E 73 74 61 6E 74 73 20 61 76 61 on about types and constants ava 00012A00 69 6C 61 62 6C 65 20 66 6F 6C 6C 6F 77 73 2E 20 20 46 6F 72 20 6D 6F 72 65 20 69 6E 66 6F 72 6D ilable follows. For more inform 00012A20 61 74 69 6F 6E 2C 20 70 6C 65 61 73 65 20 73 65 65 20 74 68 65 20 69 6E 74 65 72 66 61 63 65 20 ation, please see the interface 00012A40 66 69 6C 65 20 55 4C 54 52 41 44 52 56 2E 49 4E 54 2E 0D 0A 0D 0A 0D 0A 0D 0A 33 2E 31 33 2E 31 file ULTRADRV.INT.♪◙♪◙♪◙♪◙3.13.1 00012A60 20 41 76 61 69 6C 61 62 6C 65 20 63 6F 6E 73 74 61 6E 74 73 20 61 6E 64 20 76 61 72 69 61 62 6C Available constants and variabl 00012A80 65 73 0D 0A 0D 0A 54 68 65 20 53 44 4B 20 54 50 55 20 28 6F 72 20 27 64 72 69 76 65 72 27 29 20 es♪◙♪◙The SDK TPU (or 'driver') 00012AA0 68 61 73 20 73 6F 6D 65 20 70 72 65 64 65 66 69 6E 65 64 20 63 6F 6E 73 74 61 6E 74 73 20 74 6F has some predefined constants to 00012AC0 20 61 73 73 69 73 74 20 79 6F 75 20 69 6E 20 70 72 6F 67 72 61 6D 6D 69 6E 67 20 76 61 72 69 6F assist you in programming vario 00012AE0 75 73 20 61 73 70 65 63 74 73 20 6F 66 20 74 68 65 20 63 61 72 64 2E 20 20 54 68 65 72 65 20 61 us aspects of the card. There a 00012B00 72 65 20 74 68 72 65 65 20 63 6F 6D 6D 6F 6E 20 66 72 65 71 75 65 6E 63 69 65 73 20 74 68 61 74 re three common frequencies that 00012B20 20 73 61 6D 70 6C 65 64 20 73 6F 75 6E 64 73 20 61 72 65 20 70 6C 61 79 65 64 20 61 74 3A 20 31 sampled sounds are played at: 1 00012B40 31 2C 20 32 32 2C 20 61 6E 64 20 34 34 20 4B 48 7A 3A 0D 0A 0D 0A 20 20 20 20 20 4B 68 7A 5F 31 1, 22, and 44 KHz:♪◙♪◙ Khz_1 00012B60 31 20 3D 20 31 31 30 32 35 3B 0D 0A 20 20 20 20 20 4B 68 7A 5F 32 32 20 3D 20 32 32 30 35 30 3B 1 = 11025;♪◙ Khz_22 = 22050; 00012B80 0D 0A 20 20 20 20 20 4B 68 7A 5F 34 34 20 3D 20 34 34 31 30 30 3B 0D 0A 0C 57 68 65 6E 65 76 65 ♪◙ Khz_44 = 44100;♪◙♀Wheneve 00012BA0 72 20 76 6F 6C 75 6D 65 20 69 73 20 73 70 65 63 69 66 69 65 64 2C 20 74 68 65 72 65 20 69 73 20 r volume is specified, there is 00012BC0 61 20 76 6F 6C 75 6D 65 20 63 6F 6E 74 72 6F 6C 20 62 79 74 65 2E 20 20 54 68 65 20 62 69 74 73 a volume control byte. The bits 00012BE0 20 69 6E 20 74 68 69 73 20 62 79 74 65 20 63 6F 6E 74 72 6F 6C 20 73 65 76 65 72 61 6C 20 69 6D in this byte control several im 00012C00 70 6F 72 74 61 6E 74 20 66 75 6E 63 74 69 6F 6E 73 2E 20 20 4F 52 20 74 68 65 20 66 6F 6C 6C 6F portant functions. OR the follo 00012C20 77 69 6E 67 20 63 6F 6E 73 74 61 6E 74 73 20 74 6F 67 65 74 68 65 72 20 77 69 74 68 20 7A 65 72 wing constants together with zer 00012C40 6F 20 69 66 20 79 6F 75 20 6E 65 65 64 20 74 68 65 6D 2E 20 20 49 66 20 79 6F 75 20 64 6F 6E 27 o if you need them. If you don' 00012C60 74 2C 20 6A 75 73 74 20 73 70 65 63 69 66 79 20 7A 65 72 6F 20 61 73 20 74 68 65 20 76 6F 6C 75 t, just specify zero as the volu 00012C80 6D 65 20 63 6F 6E 74 72 6F 6C 20 62 79 74 65 3A 0D 0A 0D 0A 20 20 20 20 20 4C 6F 6F 70 5F 56 6F me control byte:♪◙♪◙ Loop_Vo 00012CA0 6C 75 6D 65 20 20 20 20 20 20 20 20 20 20 20 3D 20 30 38 3B 0D 0A 20 20 20 20 20 42 69 5F 44 69 lume = 08;♪◙ Bi_Di 00012CC0 72 65 63 74 69 6F 6E 61 6C 5F 56 6F 6C 75 6D 65 20 3D 20 31 36 3B 0D 0A 20 20 20 20 20 45 6E 61 rectional_Volume = 16;♪◙ Ena 00012CE0 62 6C 65 5F 56 6F 6C 75 6D 65 5F 48 61 6E 64 6C 65 72 20 3D 20 33 32 3B 0D 0A 0D 0A 57 68 65 6E ble_Volume_Handler = 32;♪◙♪◙When 00012D00 65 76 65 72 20 61 20 76 6F 69 63 65 20 69 73 20 73 74 61 72 74 65 64 20 6F 72 20 63 68 61 6E 67 ever a voice is started or chang 00012D20 65 64 2C 20 74 68 65 72 65 20 69 73 20 61 20 76 6F 69 63 65 20 63 6F 6E 74 72 6F 6C 20 62 79 74 ed, there is a voice control byt 00012D40 65 2E 20 20 54 68 65 20 62 69 74 73 20 69 6E 20 74 68 69 73 20 62 79 74 65 20 63 6F 6E 74 72 6F e. The bits in this byte contro 00012D60 6C 20 73 65 76 65 72 61 6C 20 69 6D 70 6F 72 74 61 6E 74 20 66 75 6E 63 74 69 6F 6E 73 20 66 6F l several important functions fo 00012D80 72 20 65 61 63 68 20 76 6F 69 63 65 2E 20 20 4F 52 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 r each voice. OR the following 00012DA0 63 6F 6E 73 74 61 6E 74 73 20 74 6F 67 65 74 68 65 72 20 77 69 74 68 20 7A 65 72 6F 20 69 66 20 constants together with zero if 00012DC0 79 6F 75 20 6E 65 65 64 20 74 68 65 6D 2E 20 20 49 66 20 79 6F 75 20 64 6F 6E 27 74 2C 20 6A 75 you need them. If you don't, ju 00012DE0 73 74 20 73 70 65 63 69 66 79 20 7A 65 72 6F 20 61 73 20 74 68 65 20 76 6F 69 63 65 20 63 6F 6E st specify zero as the voice con 00012E00 74 72 6F 6C 20 62 79 74 65 3A 0D 0A 0D 0A 09 56 6F 69 63 65 5F 44 61 74 61 5F 31 36 42 69 74 20 trol byte:♪◙♪◙○Voice_Data_16Bit 00012E20 20 20 20 20 20 20 20 3D 20 30 34 3B 0D 0A 09 4C 6F 6F 70 5F 56 6F 69 63 65 20 20 20 20 20 20 20 = 04;♪◙○Loop_Voice 00012E40 20 20 20 20 20 20 20 3D 20 30 38 3B 0D 0A 09 42 69 5F 44 69 72 65 63 74 69 6F 6E 61 6C 5F 56 6F = 08;♪◙○Bi_Directional_Vo 00012E60 69 63 65 20 20 20 20 3D 20 31 36 3B 0D 0A 09 45 6E 61 62 6C 65 5F 56 6F 69 63 65 45 6E 64 5F 48 ice = 16;♪◙○Enable_VoiceEnd_H 00012E80 61 6E 64 6C 65 72 20 3D 20 33 32 3B 0D 0A 0D 0A 57 68 65 6E 20 61 20 44 4D 41 20 74 72 61 6E 73 andler = 32;♪◙♪◙When a DMA trans 00012EA0 66 65 72 20 69 73 20 73 74 61 72 74 65 64 2C 20 79 6F 75 20 6E 65 65 64 20 74 6F 20 74 65 6C 6C fer is started, you need to tell 00012EC0 20 74 68 65 20 44 4D 41 20 63 6F 6E 74 72 6F 6C 6C 65 72 20 77 68 61 74 20 74 79 70 65 20 6F 66 the DMA controller what type of 00012EE0 20 64 61 74 61 20 79 6F 75 20 61 72 65 20 73 65 6E 64 69 6E 67 20 74 6F 20 74 68 65 20 55 6C 74 data you are sending to the Ult 00012F00 72 61 53 6F 75 6E 64 2C 20 61 73 20 77 65 6C 6C 20 61 73 20 69 66 20 74 68 65 20 63 6F 6E 74 72 raSound, as well as if the contr 00012F20 6F 6C 6C 65 72 20 73 68 6F 75 6C 64 20 63 6F 6E 76 65 72 74 20 74 68 65 20 64 61 74 61 20 74 6F oller should convert the data to 00012F40 20 32 27 73 20 63 6F 6D 70 6C 65 6D 65 6E 74 2E 20 20 49 66 20 79 6F 75 20 61 72 65 20 64 6F 77 2's complement. If you are dow 00012F60 6E 6C 6F 61 64 69 6E 67 20 72 61 6D 20 2E 53 4E 44 20 66 69 6C 65 73 20 74 6F 20 74 68 65 20 63 nloading ram .SND files to the c 00012F80 61 72 64 2C 20 79 6F 75 20 6E 65 65 64 20 74 6F 20 4F 52 20 74 68 65 20 43 6F 6E 76 65 72 74 5F ard, you need to OR the Convert_ 00012FA0 44 61 74 61 20 63 6F 6E 73 74 61 6E 74 20 74 6F 20 30 20 61 73 20 74 68 65 20 63 6F 6E 74 72 6F Data constant to 0 as the contro 00012FC0 6C 20 62 79 74 65 2E 20 20 49 66 20 79 6F 75 20 61 72 65 20 64 6F 77 6E 6C 6F 61 64 69 6E 67 20 l byte. If you are downloading 00012FE0 31 36 20 42 69 74 20 64 61 74 61 2C 20 79 6F 75 20 6E 65 65 64 20 74 6F 20 4F 52 20 74 68 65 20 16 Bit data, you need to OR the 00013000 63 6F 6E 74 72 6F 6C 20 62 79 74 65 20 77 69 74 68 20 44 4D 41 5F 44 61 74 61 5F 31 36 42 69 74 control byte with DMA_Data_16Bit 00013020 2E 0D 0A 0D 0A 09 44 4D 41 5F 44 61 74 61 5F 31 36 42 69 74 20 3D 20 36 34 3B 0D 0A 09 43 6F 6E .♪◙♪◙○DMA_Data_16Bit = 64;♪◙○Con 00013040 76 65 72 74 5F 44 61 74 61 20 20 20 3D 20 31 32 38 3B 0D 0A 0D 0A 54 68 65 72 65 20 61 72 65 20 vert_Data = 128;♪◙♪◙There are 00013060 73 65 76 65 72 61 6C 20 70 72 65 64 65 66 69 6E 65 64 20 76 61 72 69 61 62 6C 65 73 20 74 6F 20 several predefined variables to 00013080 68 65 6C 70 20 79 6F 75 20 6D 61 6E 61 67 65 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 63 help you manage the UltraSound c 000130A0 61 72 64 20 61 73 20 79 6F 75 20 75 73 65 20 69 74 2E 20 20 54 68 65 73 65 20 76 61 72 69 61 62 ard as you use it. These variab 000130C0 6C 65 73 20 64 65 74 65 72 6D 69 6E 65 20 74 68 65 20 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 2C les determine the Configuration, 000130E0 20 65 72 72 6F 72 20 63 6F 64 65 73 2C 20 61 6E 64 20 77 68 65 74 68 65 72 20 6F 72 20 6E 6F 74 error codes, and whether or not 00013100 20 74 68 65 20 63 61 72 64 20 69 73 20 69 6E 73 74 61 6C 6C 65 64 3A 0D 0A 0D 0A 55 6C 74 72 61 the card is installed:♪◙♪◙Ultra 00013120 5F 49 6E 73 74 61 6C 6C 65 64 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 49 66 20 74 68 65 20 64 72 _Installed : BOOLEAN;♪◙If the dr 00013140 69 76 65 72 20 63 61 6E 6E 6F 74 20 72 65 61 64 20 74 68 65 20 65 6E 76 69 72 6F 6E 6D 65 6E 74 iver cannot read the environment 00013160 20 76 61 72 69 61 62 6C 65 20 27 55 4C 54 52 41 53 4E 44 27 20 77 68 65 6E 20 69 74 20 69 73 20 variable 'ULTRASND' when it is 00013180 69 6E 69 74 69 61 6C 69 7A 65 64 20 28 69 2E 65 2E 20 77 68 65 6E 20 79 6F 75 72 20 70 72 6F 67 initialized (i.e. when your prog 000131A0 72 61 6D 20 73 74 61 72 74 73 29 2C 20 74 68 69 73 20 42 4F 4F 4C 45 41 4E 20 77 69 6C 6C 20 72 ram starts), this BOOLEAN will r 000131C0 65 6D 61 69 6E 20 66 61 6C 73 65 2E 20 20 4F 74 68 65 72 77 69 73 65 2C 20 74 68 65 20 76 61 72 emain false. Otherwise, the var 000131E0 69 61 62 6C 65 20 55 6C 74 72 61 5F 43 6F 6E 66 69 67 20 28 73 65 65 20 62 65 6C 6F 77 29 20 77 iable Ultra_Config (see below) w 00013200 69 6C 6C 20 62 65 20 73 65 74 20 75 70 20 77 69 74 68 20 74 68 65 20 76 61 6C 75 65 73 20 66 6F ill be set up with the values fo 00013220 75 6E 64 20 69 6E 20 74 68 65 20 65 6E 76 69 72 6F 6E 6D 65 6E 74 20 76 61 72 69 61 62 6C 65 2E und in the environment variable. 00013240 0D 0A 0D 0A 55 6C 74 72 61 5F 43 6F 6E 66 69 67 20 20 3A 20 55 6C 74 72 61 5F 43 46 47 3B 0D 0A ♪◙♪◙Ultra_Config : Ultra_CFG;♪◙ 00013260 49 66 20 74 68 65 20 64 72 69 76 65 72 20 77 61 73 20 61 62 6C 65 20 74 6F 20 72 65 61 64 20 61 If the driver was able to read a 00013280 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 66 72 6F 6D 20 74 68 65 20 27 55 4C 54 52 41 53 4E configuration from the 'ULTRASN 000132A0 44 27 20 65 6E 76 69 72 6F 6E 6D 65 6E 74 20 76 61 72 69 61 62 6C 65 2C 20 74 68 69 73 20 76 61 D' environment variable, this va 000132C0 72 69 61 62 6C 65 20 72 65 63 6F 72 64 20 77 69 6C 6C 20 62 65 20 66 69 6C 6C 65 64 20 69 6E 20 riable record will be filled in 000132E0 77 69 74 68 20 74 68 65 20 61 70 70 72 6F 70 72 69 61 74 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E with the appropriate information 00013300 20 66 6F 75 6E 64 20 69 6E 20 74 68 65 20 65 6E 76 69 72 6F 6E 6D 65 6E 74 2E 20 20 49 66 20 74 found in the environment. If t 00013320 68 65 20 65 6E 76 69 72 6F 6E 6D 65 6E 74 20 73 74 72 69 6E 67 20 69 73 20 6E 6F 74 20 66 6F 75 he environment string is not fou 00013340 6E 64 2C 20 74 68 69 73 20 76 61 72 69 61 62 6C 65 20 77 69 6C 6C 20 61 73 73 75 6D 65 20 61 20 nd, this variable will assume a 00013360 64 65 66 61 75 6C 74 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 2E 20 20 41 6C 6C 20 6F 66 20 74 default configuration. All of t 00013380 68 65 20 66 75 6E 63 74 69 6F 6E 73 20 61 6E 64 20 70 72 6F 63 65 64 75 72 65 73 20 69 6E 20 74 he functions and procedures in t 000133A0 68 65 20 64 72 69 76 65 72 20 75 73 65 20 74 68 69 73 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E he driver use this configuration 000133C0 20 74 6F 20 69 6E 69 74 69 61 6C 69 7A 65 20 61 6E 64 20 75 73 65 20 74 68 65 20 63 61 72 64 2E to initialize and use the card. 000133E0 20 20 42 65 20 63 61 72 65 66 75 6C 20 69 66 20 79 6F 75 27 72 65 20 67 6F 69 6E 67 20 74 6F 20 Be careful if you're going to 00013400 67 6F 20 73 74 69 63 6B 69 6E 67 20 76 61 6C 75 65 73 20 69 6E 74 6F 20 74 68 69 73 20 72 65 63 go sticking values into this rec 00013420 6F 72 64 2E 20 20 54 68 65 20 6D 61 69 6E 20 75 73 65 20 6F 66 20 74 68 69 73 20 76 61 72 69 61 ord. The main use of this varia 00013440 62 6C 65 20 69 73 20 74 6F 20 64 69 73 70 6C 61 79 20 74 68 65 20 61 63 74 69 76 65 20 63 6F 6E ble is to display the active con 00013460 66 69 67 75 72 61 74 69 6F 6E 20 74 6F 20 74 68 65 20 75 73 65 72 2E 0D 0A 0C 54 68 65 20 64 72 figuration to the user.♪◙♀The dr 00013480 69 76 65 72 20 70 72 65 64 65 66 69 6E 65 73 20 74 68 72 65 65 20 76 61 72 69 61 62 6C 65 73 20 iver predefines three variables 000134A0 74 6F 20 68 65 6C 70 20 79 6F 75 20 77 69 74 68 20 65 72 72 6F 72 20 63 6F 6E 74 72 6F 6C 3A 0D to help you with error control:♪ 000134C0 0A 0D 0A 55 6C 74 72 61 4F 6B 20 20 20 20 20 20 20 3A 20 42 6F 6F 6C 65 61 6E 3B 0D 0A 54 68 69 ◙♪◙UltraOk : Boolean;♪◙Thi 000134E0 73 20 62 6F 6F 6C 65 61 6E 20 61 6C 77 61 79 73 20 6D 61 69 6E 74 61 69 6E 73 20 74 68 65 20 73 s boolean always maintains the s 00013500 74 61 74 75 73 20 6F 66 20 74 68 65 20 6C 61 73 74 20 55 6C 74 72 61 53 6F 75 6E 64 20 70 72 6F tatus of the last UltraSound pro 00013520 63 65 64 75 72 65 20 6F 72 20 66 75 6E 63 74 69 6F 6E 2E 20 20 49 66 20 74 68 65 72 65 20 77 61 cedure or function. If there wa 00013540 73 20 61 20 70 72 6F 62 6C 65 6D 20 77 69 74 68 20 74 68 65 20 72 6F 75 74 69 6E 65 2C 20 74 68 s a problem with the routine, th 00013560 69 73 20 76 61 72 69 61 62 6C 65 20 77 69 6C 6C 20 62 65 20 46 41 4C 53 45 2E 20 20 4F 74 68 65 is variable will be FALSE. Othe 00013580 72 77 69 73 65 2C 20 69 74 20 77 69 6C 6C 20 62 65 20 54 52 55 45 20 28 69 6E 64 69 63 61 74 69 rwise, it will be TRUE (indicati 000135A0 6E 67 20 6E 6F 20 65 72 72 6F 72 29 2E 0D 0A 0D 0A 55 6C 74 72 61 45 72 72 6F 72 20 20 20 20 3A ng no error).♪◙♪◙UltraError : 000135C0 20 49 6E 74 65 67 65 72 3B 0D 0A 54 68 69 73 20 69 73 20 74 68 65 20 22 45 72 72 6F 72 20 43 6F Integer;♪◙This is the "Error Co 000135E0 64 65 22 20 6F 66 20 74 68 65 20 45 72 72 6F 72 2E 20 20 54 68 69 73 20 76 61 72 69 61 62 6C 65 de" of the Error. This variable 00013600 20 69 73 20 73 65 74 20 74 6F 20 30 20 69 66 20 6E 6F 20 65 72 72 6F 72 20 68 61 73 20 6F 63 63 is set to 0 if no error has occ 00013620 75 72 72 65 64 2C 20 61 6E 64 20 69 73 20 6F 6E 6C 79 20 73 65 74 20 77 68 65 6E 20 55 6C 74 72 urred, and is only set when Ultr 00013640 61 4F 6B 20 62 65 63 6F 6D 65 73 20 46 41 4C 53 45 2E 0D 0A 0D 0A 55 6C 74 72 61 45 72 72 6F 72 aOk becomes FALSE.♪◙♪◙UltraError 00013660 53 74 72 20 3A 20 53 74 72 69 6E 67 3B 0D 0A 54 68 69 73 20 69 73 20 74 68 65 20 22 64 65 73 63 Str : String;♪◙This is the "desc 00013680 72 69 70 74 69 6F 6E 22 20 6F 66 20 74 68 65 20 65 72 72 6F 72 20 77 68 69 63 68 20 68 61 73 20 ription" of the error which has 000136A0 6F 63 63 75 72 72 65 64 2E 20 20 41 73 20 61 6E 20 61 64 64 65 64 20 62 6F 6E 75 73 20 74 6F 20 occurred. As an added bonus to 000136C0 79 6F 75 2C 20 74 68 65 20 70 72 6F 67 72 61 6D 6D 65 72 2C 20 74 68 69 73 20 73 74 72 69 6E 67 you, the programmer, this string 000136E0 20 69 73 20 73 65 74 20 77 69 74 68 20 61 20 28 64 65 73 63 72 69 70 74 69 76 65 29 20 65 72 72 is set with a (descriptive) err 00013700 6F 72 20 6D 65 73 73 61 67 65 20 77 68 65 6E 65 76 65 72 20 61 20 63 61 72 64 2D 72 65 6C 61 74 or message whenever a card-relat 00013720 65 64 20 65 72 72 6F 72 20 6F 63 63 75 72 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 33 2E 31 33 2E 32 20 45 ed error occurs.♪◙♪◙♪◙♪◙3.13.2 E 00013740 78 61 6D 70 6C 65 73 0D 0A 0D 0A 54 68 65 72 65 20 61 72 65 20 73 65 76 65 72 61 6C 20 65 78 61 xamples♪◙♪◙There are several exa 00013760 6D 70 6C 65 20 70 72 6F 67 72 61 6D 73 20 69 6E 63 6C 75 64 65 64 20 77 69 74 68 20 74 68 65 20 mple programs included with the 00013780 75 6E 69 74 73 20 64 65 73 63 72 69 62 65 64 20 69 6E 20 74 68 65 20 70 72 65 76 69 6F 75 73 20 units described in the previous 000137A0 73 65 63 74 69 6F 6E 3A 0D 0A 0D 0A 47 55 53 49 4E 49 54 2E 50 41 53 0D 0A 54 68 69 73 20 65 78 section:♪◙♪◙GUSINIT.PAS♪◙This ex 000137C0 61 6D 70 6C 65 20 66 69 6C 65 20 69 73 20 61 20 73 6D 61 6C 6C 20 75 6E 69 74 20 74 68 61 74 20 ample file is a small unit that 000137E0 79 6F 75 20 6D 61 79 20 77 61 6E 74 20 74 6F 20 75 73 65 20 74 6F 20 69 6E 69 74 69 61 6C 69 7A you may want to use to initializ 00013800 65 20 74 68 65 20 47 55 53 20 62 65 66 6F 72 65 20 79 6F 75 20 75 73 65 20 69 74 2E 20 20 54 68 e the GUS before you use it. Th 00013820 65 20 69 6D 70 6F 72 74 61 6E 74 20 74 68 69 6E 67 20 61 62 6F 75 74 20 74 68 69 73 20 75 6E 69 e important thing about this uni 00013840 74 20 69 73 20 74 68 61 74 20 69 74 20 69 6E 73 74 61 6C 6C 73 20 61 6E 20 27 45 78 69 74 20 50 t is that it installs an 'Exit P 00013860 72 6F 63 65 64 75 72 65 27 20 77 68 69 63 68 20 69 73 20 63 61 6C 6C 65 64 20 75 70 6F 6E 20 70 rocedure' which is called upon p 00013880 72 6F 67 72 61 6D 20 74 65 72 6D 69 6E 61 74 69 6F 6E 20 28 6E 6F 72 6D 61 6C 20 6F 72 20 63 72 rogram termination (normal or cr 000138A0 61 73 68 2D 6F 75 74 29 2E 20 20 54 68 65 20 65 78 69 74 20 70 72 6F 63 65 64 75 72 65 20 63 6C ash-out). The exit procedure cl 000138C0 6F 73 65 73 20 64 6F 77 6E 20 74 68 65 20 63 61 72 64 20 62 65 66 6F 72 65 20 72 65 74 75 72 6E oses down the card before return 000138E0 69 6E 67 20 74 6F 20 44 4F 53 20 28 6F 72 20 74 68 65 20 49 44 45 2C 20 64 65 70 65 6E 64 69 6E ing to DOS (or the IDE, dependin 00013900 67 20 75 70 6F 6E 20 77 68 65 72 65 20 79 6F 75 20 61 72 65 29 2E 20 20 49 6E 20 54 50 20 61 6E g upon where you are). In TP an 00013920 64 20 42 50 20 37 2C 20 79 6F 75 20 63 61 6E 20 74 79 70 65 20 27 45 78 69 74 50 72 6F 63 27 20 d BP 7, you can type 'ExitProc' 00013940 69 6E 74 6F 20 74 68 65 20 49 44 45 2C 20 6D 6F 76 65 20 74 68 65 20 63 75 72 73 6F 72 20 6F 6E into the IDE, move the cursor on 00013960 20 74 6F 70 20 6F 66 20 69 74 2C 20 61 6E 64 20 68 69 74 20 43 54 52 4C 2D 46 31 20 66 6F 72 20 top of it, and hit CTRL-F1 for 00013980 61 20 64 65 74 61 69 6C 65 64 20 65 78 70 6C 61 6E 61 74 69 6F 6E 20 6F 66 20 77 68 61 74 20 61 a detailed explanation of what a 000139A0 6E 20 65 78 69 74 20 70 72 6F 63 65 64 75 72 65 20 69 73 2E 20 20 41 66 74 65 72 20 69 6E 63 6C n exit procedure is. After incl 000139C0 75 64 69 6E 67 20 74 68 69 73 20 75 6E 69 74 20 69 6E 20 79 6F 75 72 20 27 75 73 65 73 27 20 63 uding this unit in your 'uses' c 000139E0 6C 61 75 73 65 2C 20 79 6F 75 72 20 6D 61 69 6E 20 70 72 6F 67 72 61 6D 20 63 61 6E 20 6A 75 73 lause, your main program can jus 00013A00 74 20 67 6F 20 61 68 65 61 64 20 61 6E 64 20 73 74 61 72 74 20 75 73 69 6E 67 20 69 74 2E 20 20 t go ahead and start using it. 00013A20 59 6F 75 20 64 6F 6E 27 74 20 6E 65 65 64 20 74 6F 20 63 61 6C 6C 20 55 6C 74 72 61 4F 70 65 6E You don't need to call UltraOpen 00013A40 2C 20 55 6C 74 72 61 52 65 73 65 74 2C 20 6F 72 20 65 76 65 6E 20 55 6C 74 72 61 43 6C 6F 73 65 , UltraReset, or even UltraClose 00013A60 20 77 68 65 6E 20 79 6F 75 27 72 65 20 66 69 6E 69 73 68 65 64 2E 20 0D 0A 0D 0A 47 55 53 31 2E when you're finished. ♪◙♪◙GUS1. 00013A80 50 41 53 0D 0A 54 68 69 73 20 69 73 20 74 68 65 20 70 72 69 6D 69 74 69 76 65 20 65 78 61 6D 70 PAS♪◙This is the primitive examp 00013AA0 6C 65 20 70 72 6F 67 72 61 6D 20 66 6F 72 20 74 68 65 20 63 61 72 64 20 77 68 69 63 68 20 6C 6F le program for the card which lo 00013AC0 61 64 73 20 74 68 72 65 65 20 73 6F 75 6E 64 73 20 28 61 20 6C 61 73 65 72 20 62 6C 61 73 74 2C ads three sounds (a laser blast, 00013AE0 20 61 20 70 68 6F 74 6F 6E 20 74 6F 72 70 65 64 6F 2C 20 61 6E 64 20 61 20 6D 69 73 73 69 6C 65 a photon torpedo, and a missile 00013B00 29 20 69 6E 74 6F 20 74 68 65 20 63 61 72 64 27 73 20 52 41 4D 20 61 6E 64 20 74 68 65 6E 20 61 ) into the card's RAM and then a 00013B20 6C 6C 6F 77 73 20 79 6F 75 20 74 6F 20 70 72 65 73 73 20 74 68 65 20 27 31 27 2E 2E 27 33 27 20 llows you to press the '1'..'3' 00013B40 6B 65 79 73 20 74 6F 20 70 6C 61 79 20 74 68 65 6D 2E 20 20 54 68 69 73 20 65 78 61 6D 70 6C 65 keys to play them. This example 00013B60 20 75 73 65 73 20 74 68 65 20 47 55 53 49 4E 49 54 20 75 6E 69 74 20 2D 20 73 68 6F 77 69 6E 67 uses the GUSINIT unit - showing 00013B80 20 79 6F 75 20 68 6F 77 20 65 61 73 79 20 69 74 20 69 73 20 74 6F 20 75 73 65 2E 0D 0A 0D 0A 4C you how easy it is to use.♪◙♪◙L 00013BA0 4F 41 44 4D 4F 44 2E 50 41 53 0D 0A 54 68 69 73 20 69 73 20 61 20 75 6E 69 74 20 77 68 69 63 68 OADMOD.PAS♪◙This is a unit which 00013BC0 20 70 72 6F 76 69 64 65 73 20 73 65 72 76 69 63 65 73 20 74 6F 20 6C 6F 61 64 20 41 6D 69 67 61 provides services to load Amiga 00013BE0 20 27 2E 4D 4F 44 27 20 66 69 6C 65 73 20 69 6E 74 6F 20 47 55 53 20 52 41 4D 20 61 6E 64 20 6D '.MOD' files into GUS RAM and m 00013C00 61 69 6E 20 6D 65 6D 6F 72 79 2E 20 20 41 66 74 65 72 20 63 61 6C 6C 69 6E 67 20 61 20 73 69 6E ain memory. After calling a sin 00013C20 67 6C 65 20 66 75 6E 63 74 69 6F 6E 2C 20 74 68 65 20 66 69 6C 65 20 77 69 6C 6C 20 68 61 76 65 gle function, the file will have 00013C40 20 62 65 65 6E 20 6C 6F 61 64 65 64 20 61 6E 64 20 74 68 65 20 73 61 6D 70 6C 65 73 20 63 6F 6E been loaded and the samples con 00013C60 74 61 69 6E 65 64 20 69 6E 20 69 74 20 73 65 74 20 75 70 20 74 6F 20 70 6C 61 79 2E 20 20 49 74 tained in it set up to play. It 00013C80 20 69 73 20 6C 65 66 74 20 75 70 20 74 6F 20 79 6F 75 20 74 6F 20 73 75 70 70 6C 79 20 70 6C 61 is left up to you to supply pla 00013CA0 79 62 61 63 6B 20 72 6F 75 74 69 6E 65 73 20 6F 72 20 74 72 69 76 69 61 6C 20 73 61 6D 70 6C 65 yback routines or trivial sample 00013CC0 2D 70 6C 61 79 69 6E 67 20 72 6F 75 74 69 6E 65 73 2E 0D 0A 0D 0A 0D 0A 0C 33 2E 31 33 2E 33 20 -playing routines.♪◙♪◙♪◙♀3.13.3 00013CE0 4D 61 6E 61 67 65 6D 65 6E 74 20 6F 66 20 47 55 53 20 52 41 4D 2E 0D 0A 0D 0A 54 68 65 20 50 61 Management of GUS RAM.♪◙♪◙The Pa 00013D00 73 63 61 6C 20 76 65 72 73 69 6F 6E 20 6F 66 20 74 68 65 20 53 44 4B 20 65 6D 70 6C 6F 79 73 20 scal version of the SDK employs 00013D20 61 20 64 69 66 66 65 72 65 6E 74 20 61 70 70 72 6F 61 63 68 20 74 6F 20 6D 65 6D 6F 72 79 20 63 a different approach to memory c 00013D40 6F 6E 74 72 6F 6C 20 74 68 61 6E 20 74 68 65 20 43 20 74 6F 6F 6C 6B 69 74 2E 20 20 49 6E 20 74 ontrol than the C toolkit. In t 00013D60 68 65 20 43 20 53 44 4B 2C 20 61 20 73 6D 61 6C 6C 20 61 6D 6F 75 6E 74 20 6F 66 20 74 68 65 20 he C SDK, a small amount of the 00013D80 47 55 53 20 52 41 4D 20 69 73 20 75 73 65 64 20 74 6F 20 6B 65 65 70 20 74 72 61 63 6B 20 6F 66 GUS RAM is used to keep track of 00013DA0 20 61 6C 6C 6F 63 61 74 65 64 20 62 6C 6F 63 6B 73 2E 20 20 49 6E 20 74 68 65 20 50 61 73 63 61 allocated blocks. In the Pasca 00013DC0 6C 20 53 44 4B 2C 20 61 20 76 65 72 79 20 73 6D 61 6C 6C 20 61 6D 6F 75 6E 74 20 6F 66 20 68 65 l SDK, a very small amount of he 00013DE0 61 70 20 73 70 61 63 65 20 69 73 20 75 73 65 64 20 74 6F 20 6B 65 65 70 20 74 72 61 63 6B 20 6F ap space is used to keep track o 00013E00 66 20 74 68 65 20 62 6C 6F 63 6B 73 2E 0D 0A 0D 0A 42 65 63 61 75 73 65 20 6F 66 20 74 68 65 20 f the blocks.♪◙♪◙Because of the 00013E20 77 61 79 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 52 41 4D 20 69 73 20 73 74 72 75 63 74 way the UltraSound RAM is struct 00013E40 75 72 65 64 2C 20 61 6E 79 20 70 61 72 74 69 63 75 6C 61 72 20 63 61 72 64 20 68 61 73 20 61 20 ured, any particular card has a 00013E60 74 6F 74 61 6C 20 61 6D 6F 75 6E 74 20 6F 66 20 69 6E 73 74 61 6C 6C 65 64 20 52 41 4D 20 74 68 total amount of installed RAM th 00013E80 61 74 20 69 73 20 61 20 6D 75 6C 74 69 70 6C 65 20 6F 66 20 32 35 36 6B 2E 20 20 53 69 6E 63 65 at is a multiple of 256k. Since 00013EA0 20 73 61 6D 70 6C 65 73 20 63 61 6E 6E 6F 74 20 62 65 20 70 6C 61 79 65 64 20 61 63 72 6F 73 73 samples cannot be played across 00013EC0 20 74 68 65 73 65 20 62 6F 75 6E 64 61 72 69 65 73 2C 20 74 68 65 20 64 72 69 76 65 72 20 75 6E these boundaries, the driver un 00013EE0 69 74 20 64 69 76 69 64 65 73 20 74 68 65 20 74 6F 74 61 6C 20 52 41 4D 20 62 79 20 32 35 36 6B it divides the total RAM by 256k 00013F00 20 69 6E 74 6F 20 31 20 74 6F 20 34 20 27 70 6F 6F 6C 73 27 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 into 1 to 4 'pools'.♪◙♪◙ 00013F20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |------------------------------ 00013F40 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 --------|♪◙ | 00013F60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 32 35 36 6B | 256k 00013F80 20 28 61 20 73 69 6E 67 6C 65 20 27 70 6F 6F 6C 27 29 0D 0A 20 20 20 20 20 20 20 20 7C 2D 2D 2D (a single 'pool')♪◙ |--- 00013FA0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -------------------------------- 00013FC0 2D 2D 2D 7C 0D 0A 0D 0A 45 61 63 68 20 6F 66 20 74 68 65 73 65 20 70 6F 6F 6C 73 20 69 73 20 73 ---|♪◙♪◙Each of these pools is s 00013FE0 65 65 6E 20 61 73 20 61 20 73 69 6E 67 6C 65 20 75 6E 69 74 20 77 68 69 63 68 20 63 61 6E 20 62 een as a single unit which can b 00014000 65 20 73 75 62 64 69 76 69 64 65 64 2E 20 20 46 6F 72 20 74 68 65 20 70 75 72 70 6F 73 65 73 20 e subdivided. For the purposes 00014020 6F 66 20 74 68 69 73 20 65 78 61 6D 70 6C 65 2C 20 77 65 20 77 69 6C 6C 20 75 73 65 20 61 20 47 of this example, we will use a G 00014040 55 53 20 77 68 69 63 68 20 68 61 73 20 35 31 32 6B 20 69 6E 73 74 61 6C 6C 65 64 2E 20 49 66 20 US which has 512k installed. If 00014060 74 68 69 73 20 69 73 20 74 68 65 20 63 61 73 65 2C 20 74 68 65 72 65 20 77 69 6C 6C 20 62 65 20 this is the case, there will be 00014080 74 77 6F 20 70 6F 6F 6C 73 20 6F 66 20 52 41 4D 20 61 76 61 69 6C 61 62 6C 65 3A 0D 0A 0D 0A 20 two pools of RAM available:♪◙♪◙ 000140A0 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |------------------------ 000140C0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 --------------|♪◙ | 000140E0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00014100 7C 20 50 6F 6F 6C 20 31 0D 0A 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | Pool 1♪◙ |------------- 00014120 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 20 20 -------------------------|♪◙ 00014140 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 00014160 20 20 20 20 20 20 20 20 20 20 20 7C 20 50 6F 6F 6C 20 32 0D 0A 20 20 20 20 20 20 20 20 7C 2D 2D | Pool 2♪◙ |-- 00014180 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -------------------------------- 000141A0 2D 2D 2D 2D 7C 0D 0A 0D 0A 4F 6E 63 65 20 74 68 65 20 63 61 72 64 20 68 61 73 20 62 65 65 6E 20 ----|♪◙♪◙Once the card has been 000141C0 69 6E 69 74 69 61 6C 69 7A 65 64 2C 20 74 68 65 72 65 20 77 69 6C 6C 20 62 65 20 61 20 73 6D 61 initialized, there will be a sma 000141E0 6C 6C 20 61 6D 6F 75 6E 74 20 6F 66 20 68 65 61 70 20 73 70 61 63 65 20 62 65 69 6E 67 20 75 73 ll amount of heap space being us 00014200 65 64 20 74 6F 20 6B 65 65 70 20 74 72 61 63 6B 20 6F 66 20 74 68 65 73 65 20 70 6F 6F 6C 73 20 ed to keep track of these pools 00014220 28 75 73 75 61 6C 6C 79 20 6C 65 73 73 20 74 68 61 6E 20 31 30 30 20 62 79 74 65 73 29 2E 20 20 (usually less than 100 bytes). 00014240 41 74 20 74 68 69 73 20 70 6F 69 6E 74 2C 20 74 68 65 20 55 6C 74 72 61 4D 61 78 46 72 65 65 20 At this point, the UltraMaxFree 00014260 66 75 6E 63 74 69 6F 6E 20 77 69 6C 6C 20 72 65 74 75 72 6E 20 32 35 36 6B 2C 20 73 69 6E 63 65 function will return 256k, since 00014280 20 74 68 65 20 73 69 7A 65 20 6F 66 20 74 68 65 20 6C 61 72 67 65 73 74 20 62 6C 6F 63 6B 20 74 the size of the largest block t 000142A0 68 61 74 20 63 61 6E 20 62 65 20 61 6C 6C 6F 63 61 74 65 64 20 69 73 20 6F 6E 65 20 65 6E 74 69 hat can be allocated is one enti 000142C0 72 65 20 70 6F 6F 6C 2E 20 20 54 68 65 20 55 6C 72 61 4D 65 6D 41 76 61 69 6C 20 66 75 6E 63 74 re pool. The UlraMemAvail funct 000142E0 69 6F 6E 20 77 69 6C 6C 20 72 65 74 75 72 6E 20 35 31 32 6B 20 68 6F 77 65 76 65 72 2C 20 72 65 ion will return 512k however, re 00014300 66 6C 65 63 74 69 6E 67 20 74 68 65 20 74 6F 74 61 6C 20 61 6D 6F 75 6E 74 20 6F 66 20 6D 65 6D flecting the total amount of mem 00014320 6F 72 79 20 73 74 69 6C 6C 20 61 76 61 69 6C 61 62 6C 65 2E 0D 0A 0D 0A 49 66 20 61 20 75 73 65 ory still available.♪◙♪◙If a use 00014340 72 20 77 65 72 65 20 74 6F 20 61 6C 6C 6F 63 61 74 65 20 61 20 31 32 38 6B 20 63 68 75 6E 6B 20 r were to allocate a 128k chunk 00014360 6F 66 20 6D 65 6D 6F 72 79 2C 20 74 68 65 20 61 6C 6C 6F 63 61 74 69 6F 6E 20 72 6F 75 74 69 6E of memory, the allocation routin 00014380 65 73 20 77 6F 75 6C 64 20 6C 6F 6F 6B 20 69 6E 20 65 61 63 68 20 70 6F 6F 6C 20 73 65 71 75 65 es would look in each pool seque 000143A0 6E 74 69 61 6C 6C 79 20 75 6E 74 69 6C 20 61 20 70 6F 6F 6C 20 69 73 20 66 6F 75 6E 64 20 77 69 ntially until a pool is found wi 000143C0 74 68 20 65 6E 6F 75 67 68 20 72 6F 6F 6D 20 66 6F 72 20 74 68 65 20 6E 65 77 20 62 6C 6F 63 6B th enough room for the new block 000143E0 2E 20 20 41 74 20 74 68 69 73 20 70 6F 69 6E 74 20 69 6E 20 6F 75 72 20 65 78 61 6D 70 6C 65 2C . At this point in our example, 00014400 20 69 74 20 77 6F 75 6C 64 20 75 73 65 20 50 6F 6F 6C 20 31 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 it would use Pool 1.♪◙♪◙ 00014420 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |------------------------------ 00014440 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 20 20 20 20 20 20 7C 58 58 58 58 58 58 58 58 58 58 ----------|♪◙ |XXXXXXXXXX 00014460 58 58 58 58 58 58 58 58 58 58 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 XXXXXXXXXX | 00014480 50 6F 6F 6C 20 31 0D 0A 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D Pool 1♪◙ |--------------- 000144A0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 20 20 -------------------------|♪◙ 000144C0 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 000144E0 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 50 6F 6F 6C 20 32 0D 0A 20 20 20 20 20 20 20 20 7C | Pool 2♪◙ | 00014500 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -------------------------------- 00014520 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 0D 0A 54 68 65 20 58 27 73 20 69 6E 20 74 68 65 20 64 69 61 67 --------|♪◙♪◙The X's in the diag 00014540 72 61 6D 20 61 62 6F 76 65 20 72 65 66 6C 65 63 74 20 75 73 65 64 20 73 70 61 63 65 2E 20 20 49 ram above reflect used space. I 00014560 66 20 74 68 65 20 73 69 7A 65 20 6F 66 20 74 68 65 20 62 6C 6F 63 6B 20 62 65 69 6E 67 20 61 6C f the size of the block being al 00014580 6C 6F 63 61 74 65 64 20 69 73 20 6E 6F 74 20 64 69 76 69 73 69 62 6C 65 20 62 79 20 33 32 2C 20 located is not divisible by 32, 000145A0 74 68 65 20 61 63 74 75 61 6C 20 73 69 7A 65 20 6F 66 20 74 68 65 20 62 6C 6F 63 6B 20 69 6E 20 the actual size of the block in 000145C0 6D 65 6D 6F 72 79 20 69 73 20 69 6E 63 72 65 61 73 65 64 20 74 6F 20 74 68 65 20 6E 65 78 74 20 memory is increased to the next 000145E0 6D 75 6C 74 69 70 6C 65 20 6F 66 20 33 32 2E 20 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 69 66 multiple of 32. For example, if 00014600 20 49 20 77 65 72 65 20 74 6F 20 61 73 6B 20 66 6F 72 20 61 20 35 30 20 62 79 74 65 20 63 68 75 I were to ask for a 50 byte chu 00014620 6E 6B 20 6F 66 20 52 41 4D 2C 20 74 68 65 20 61 63 74 75 61 6C 20 73 69 7A 65 20 6F 66 20 72 61 nk of RAM, the actual size of ra 00014640 6D 20 74 68 61 74 20 49 20 77 6F 75 6C 64 20 62 65 20 75 73 69 6E 67 20 77 6F 75 6C 64 20 62 65 m that I would be using would be 00014660 20 36 34 20 62 79 74 65 73 20 69 6E 20 73 69 7A 65 2E 20 20 54 68 69 73 20 69 73 20 73 6F 20 74 64 bytes in size. This is so t 00014680 68 61 74 20 61 6C 6C 20 6D 65 6D 6F 72 79 20 6C 6F 63 61 74 69 6F 6E 73 20 72 65 74 75 72 6E 65 hat all memory locations returne 000146A0 64 20 77 69 6C 6C 20 62 65 20 61 6C 69 67 6E 65 64 20 6F 6E 20 61 20 33 32 2D 62 79 74 65 20 62 d will be aligned on a 32-byte b 000146C0 6F 75 6E 64 61 72 79 2E 20 20 41 74 20 74 68 69 73 20 70 6F 69 6E 74 2C 20 74 68 65 20 55 6C 74 oundary. At this point, the Ult 000146E0 72 61 4D 61 78 46 72 65 65 20 66 75 6E 63 74 69 6F 6E 20 77 69 6C 6C 20 72 65 74 75 72 6E 20 32 raMaxFree function will return 2 00014700 35 36 6B 2C 20 73 69 6E 63 65 20 74 68 65 20 73 69 7A 65 20 6F 66 20 74 68 65 20 6C 61 72 67 65 56k, since the size of the large 00014720 73 74 20 62 6C 6F 63 6B 20 74 68 61 74 20 63 61 6E 20 62 65 20 61 6C 6C 6F 63 61 74 65 64 20 69 st block that can be allocated i 00014740 73 20 73 74 69 6C 6C 20 6F 6E 65 20 65 6E 74 69 72 65 20 70 6F 6F 6C 20 28 50 6F 6F 6C 20 32 29 s still one entire pool (Pool 2) 00014760 2E 20 20 54 68 65 20 55 6C 74 72 61 4D 65 6D 41 76 61 69 6C 20 66 75 6E 63 74 69 6F 6E 20 77 69 . The UltraMemAvail function wi 00014780 6C 6C 20 72 65 74 75 72 6E 20 33 38 34 6B 2C 20 72 65 66 6C 65 63 74 69 6E 67 20 74 68 65 20 74 ll return 384k, reflecting the t 000147A0 6F 74 61 6C 20 61 6D 6F 75 6E 74 20 6F 66 20 6D 65 6D 6F 72 79 20 73 74 69 6C 6C 20 61 76 61 69 otal amount of memory still avai 000147C0 6C 61 62 6C 65 2E 0D 0A 0D 0A 49 66 20 61 20 75 73 65 72 20 77 65 72 65 20 74 6F 20 6E 6F 77 20 lable.♪◙♪◙If a user were to now 000147E0 61 6C 6C 6F 63 61 74 65 20 61 20 32 30 30 6B 20 63 68 75 6E 6B 20 6F 66 20 6D 65 6D 6F 72 79 2C allocate a 200k chunk of memory, 00014800 20 74 68 65 20 61 6C 6C 6F 63 61 74 69 6F 6E 20 72 6F 75 74 69 6E 65 73 20 77 6F 75 6C 64 20 6F the allocation routines would o 00014820 6E 63 65 20 61 67 61 69 6E 20 6C 6F 6F 6B 20 69 6E 20 65 61 63 68 20 70 6F 6F 6C 20 73 65 71 75 nce again look in each pool sequ 00014840 65 6E 74 69 61 6C 6C 79 20 75 6E 74 69 6C 20 61 20 70 6F 6F 6C 20 69 73 20 66 6F 75 6E 64 20 77 entially until a pool is found w 00014860 69 74 68 20 65 6E 6F 75 67 68 20 72 6F 6F 6D 20 66 6F 72 20 74 68 65 20 6E 65 77 20 62 6C 6F 63 ith enough room for the new bloc 00014880 6B 2E 20 20 41 74 20 74 68 69 73 20 70 6F 69 6E 74 20 69 6E 20 6F 75 72 20 65 78 61 6D 70 6C 65 k. At this point in our example 000148A0 2C 20 69 74 20 77 6F 75 6C 64 20 68 61 76 65 20 74 6F 20 75 73 65 20 50 6F 6F 6C 20 32 2C 20 73 , it would have to use Pool 2, s 000148C0 69 6E 63 65 20 74 68 65 72 65 20 69 73 20 6E 6F 74 20 65 6E 6F 75 67 68 20 72 6F 6F 6D 20 6C 65 ince there is not enough room le 000148E0 66 74 20 69 6E 20 50 6F 6F 6C 20 31 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D ft in Pool 1.♪◙♪◙ |------ 00014900 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -------------------------------- 00014920 2D 2D 7C 0D 0A 20 20 20 20 20 20 20 20 7C 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 --|♪◙ |XXXXXXXXXXXXXXXXXX 00014940 58 58 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 50 6F 6F 6C 20 31 0D 0A XX | Pool 1♪◙ 00014960 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |----------------------- 00014980 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 20 20 20 20 20 20 7C 59 59 59 -----------------|♪◙ |YYY 000149A0 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 20 20 20 20 YYYYYYYYYYYYYYYYYYYYYYYYYYYY 000149C0 20 20 20 20 20 7C 20 50 6F 6F 6C 20 32 0D 0A 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D | Pool 2♪◙ |-------- 000149E0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -------------------------------- 00014A00 7C 0D 0A 0D 0A 41 74 20 74 68 69 73 20 70 6F 69 6E 74 2C 20 74 68 65 20 55 6C 74 72 61 4D 61 78 |♪◙♪◙At this point, the UltraMax 00014A20 46 72 65 65 20 66 75 6E 63 74 69 6F 6E 20 77 6F 75 6C 64 20 72 65 74 75 72 6E 20 31 32 38 6B 2C Free function would return 128k, 00014A40 20 73 69 6E 63 65 20 74 68 65 20 6C 61 72 67 65 73 74 20 62 6C 6F 63 6B 20 66 72 65 65 20 69 73 since the largest block free is 00014A60 20 69 6E 20 50 6F 6F 6C 20 31 2E 20 20 55 6C 74 72 61 4D 65 6D 46 72 65 65 20 77 6F 75 6C 64 20 in Pool 1. UltraMemFree would 00014A80 6E 6F 77 20 72 65 74 75 72 6E 20 31 38 34 6B 2E 20 20 49 66 20 77 65 20 77 65 72 65 20 74 6F 20 now return 184k. If we were to 00014AA0 61 6C 6C 6F 63 61 74 65 20 61 20 74 68 69 72 64 20 62 6C 6F 63 6B 20 6F 66 20 37 30 6B 2C 20 74 allocate a third block of 70k, t 00014AC0 68 65 20 64 69 61 67 72 61 6D 20 77 6F 75 6C 64 20 6C 6F 6F 6B 20 6C 69 6B 65 3A 0D 0A 0D 0A 20 he diagram would look like:♪◙♪◙ 00014AE0 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |------------------------ 00014B00 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 20 20 20 20 20 20 7C 58 58 58 58 ----------------|♪◙ |XXXX 00014B20 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 58 5A 5A 5A 5A 5A 5A 5A 5A 5A 5A 20 20 20 20 20 20 XXXXXXXXXXXXXXXXZZZZZZZZZZ 00014B40 20 20 20 20 7C 20 50 6F 6F 6C 20 31 0D 0A 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D | Pool 1♪◙ |--------- 00014B60 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C -------------------------------| 00014B80 0D 0A 20 20 20 20 20 20 20 20 7C 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 ♪◙ |YYYYYYYYYYYYYYYYYYYYY 00014BA0 59 59 59 59 59 59 59 59 59 59 20 20 20 20 20 20 20 20 20 7C 20 50 6F 6F 6C 20 32 0D 0A 20 20 20 YYYYYYYYYY | Pool 2♪◙ 00014BC0 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D |-------------------------- 00014BE0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 0D 0A 49 66 20 77 65 20 77 65 72 65 20 74 6F --------------|♪◙♪◙If we were to 00014C00 20 6E 6F 77 20 44 45 61 6C 6C 6F 63 61 74 65 20 74 68 65 20 66 69 72 73 74 20 62 6C 6F 63 6B 20 now DEallocate the first block 00014C20 28 74 68 65 20 58 27 73 20 69 6E 20 74 68 65 20 64 69 61 67 72 61 6D 29 2C 20 77 65 20 77 6F 75 (the X's in the diagram), we wou 00014C40 6C 64 20 62 65 20 6C 65 66 74 20 77 69 74 68 20 61 20 27 68 6F 6C 65 27 20 69 6E 20 74 68 65 20 ld be left with a 'hole' in the 00014C60 72 61 6D 2E 20 20 54 68 69 73 20 69 73 20 72 65 6D 69 6E 69 73 63 65 6E 74 20 6F 66 20 61 20 68 ram. This is reminiscent of a h 00014C80 61 72 64 20 64 69 73 6B 27 73 20 66 72 65 65 20 73 70 61 63 65 20 66 72 61 67 6D 65 6E 74 61 74 ard disk's free space fragmentat 00014CA0 69 6F 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ion.♪◙♪◙ |--------------- 00014CC0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 20 20 -------------------------|♪◙ 00014CE0 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5A 5A 5A 5A 5A 5A 5A | ZZZZZZZ 00014D00 5A 5A 5A 20 20 20 20 20 20 20 20 20 20 7C 20 50 6F 6F 6C 20 31 0D 0A 20 20 20 20 20 20 20 20 7C ZZZ | Pool 1♪◙ | 00014D20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -------------------------------- 00014D40 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20 20 20 20 20 20 20 7C 59 59 59 59 59 59 59 59 59 59 59 59 --------|♪◙ |YYYYYYYYYYYY 00014D60 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 59 20 20 20 20 20 20 20 20 20 7C 20 50 6F YYYYYYYYYYYYYYYYYYY | Po 00014D80 6F 6C 20 32 0D 0A 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ol 2♪◙ |----------------- 00014DA0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 0D 0A 4E 6F 74 65 -----------------------|♪◙♪◙Note 00014DC0 20 74 68 61 74 20 74 68 65 20 53 44 4B 27 73 20 6D 65 6D 6F 72 79 20 61 6C 6C 6F 63 61 74 69 6F that the SDK's memory allocatio 00014DE0 6E 20 72 6F 75 74 69 6E 65 73 20 64 6F 20 4E 4F 54 20 72 65 6C 6F 63 61 74 65 20 73 61 6D 70 6C n routines do NOT relocate sampl 00014E00 65 73 20 74 6F 20 66 65 6E 64 20 6F 66 66 20 66 72 61 67 6D 65 6E 74 61 74 69 6F 6E 2E 20 20 4E es to fend off fragmentation. N 00014E20 6F 74 65 20 61 6C 73 6F 20 74 68 61 74 20 74 68 65 20 6D 65 6D 6F 72 79 20 72 6F 75 74 69 6E 65 ote also that the memory routine 00014E40 73 20 61 72 65 20 73 65 74 20 75 70 20 61 6E 64 20 61 72 65 20 72 65 61 64 79 20 74 6F 20 62 65 s are set up and are ready to be 00014E60 20 75 73 65 64 20 61 73 20 73 6F 6F 6E 20 61 73 20 79 6F 75 20 63 61 6C 6C 20 55 6C 74 72 61 4F used as soon as you call UltraO 00014E80 70 65 6E 2C 20 61 6E 64 20 61 72 65 20 63 6C 6F 73 65 64 20 64 6F 77 6E 20 61 75 74 6F 6D 61 74 pen, and are closed down automat 00014EA0 69 63 61 6C 6C 79 20 28 61 6E 64 20 74 68 65 20 68 65 61 70 20 73 70 61 63 65 20 74 68 65 79 20 ically (and the heap space they 00014EC0 75 73 65 20 64 65 61 6C 6C 6F 63 61 74 65 64 29 20 77 68 65 6E 20 79 6F 75 20 63 61 6C 6C 20 55 use deallocated) when you call U 00014EE0 6C 74 72 61 43 6C 6F 73 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 33 2E 31 34 20 43 6F 6D 69 6E 67 20 41 74 ltraClose.♪◙♪◙♪◙♪◙3.14 Coming At 00014F00 74 72 61 63 74 69 6F 6E 73 0D 0A 0D 0A 54 68 65 72 65 20 61 72 65 20 61 20 63 6F 75 70 6C 65 20 tractions♪◙♪◙There are a couple 00014F20 6F 66 20 61 64 64 65 6E 64 75 6D 73 20 74 6F 20 74 68 65 20 53 44 4B 20 74 68 61 74 20 77 69 6C of addendums to the SDK that wil 00014F40 6C 20 62 65 20 72 65 6C 65 61 73 65 64 20 61 73 20 74 68 65 79 20 61 72 65 20 63 6F 6D 70 6C 65 l be released as they are comple 00014F60 74 65 64 2E 20 20 54 68 65 79 20 64 65 61 6C 20 77 69 74 68 20 68 61 72 64 77 61 72 65 20 74 68 ted. They deal with hardware th 00014F80 61 74 20 69 73 20 69 6E 20 74 68 65 20 70 72 6F 63 65 73 73 20 6F 66 20 62 65 69 6E 67 20 20 69 at is in the process of being i 00014FA0 6D 70 6C 65 6D 65 6E 74 65 64 2E 20 20 43 6F 64 65 20 61 6E 64 20 64 6F 63 75 6D 65 6E 74 61 74 mplemented. Code and documentat 00014FC0 69 6F 6E 20 6E 65 63 65 73 73 61 72 79 20 74 6F 20 6D 61 6B 65 20 74 68 65 6D 20 6F 70 65 72 61 ion necessary to make them opera 00014FE0 74 65 20 77 69 6C 6C 20 62 65 20 6D 61 64 65 20 61 76 61 69 6C 61 62 6C 65 20 61 73 20 73 6F 6F te will be made available as soo 00015000 6E 20 61 73 20 70 6F 73 73 69 62 6C 65 2E 0D 0A 0D 0A 31 29 20 4E 65 77 20 6D 69 78 65 72 2E 20 n as possible.♪◙♪◙1) New mixer. 00015020 41 6C 6C 20 55 6C 74 72 61 53 6F 75 6E 64 73 20 74 68 61 74 20 61 72 65 20 6D 61 64 65 20 74 68 All UltraSounds that are made th 00015040 61 74 20 68 61 76 65 20 61 20 62 6F 61 72 64 20 72 65 76 69 73 69 6F 6E 20 6E 75 6D 62 65 72 20 at have a board revision number 00015060 67 72 65 61 74 65 72 20 74 68 61 6E 20 33 2E 36 20 77 69 6C 6C 20 69 6E 63 6F 72 70 6F 72 61 74 greater than 3.6 will incorporat 00015080 65 20 61 20 6E 65 77 20 6D 69 78 65 72 2E 20 20 42 61 73 69 63 61 6C 6C 79 2C 20 74 68 69 73 20 e a new mixer. Basically, this 000150A0 6D 69 78 65 72 20 61 6C 6C 6F 77 73 20 73 6F 66 74 77 61 72 65 20 63 6F 6E 74 72 6F 6C 20 6F 76 mixer allows software control ov 000150C0 65 72 20 74 68 65 20 6C 65 76 65 6C 73 20 6F 66 20 74 68 65 20 69 6E 70 75 74 20 61 6E 64 20 6F er the levels of the input and o 000150E0 75 74 70 75 74 20 73 69 67 6E 61 6C 73 2E 20 20 54 68 69 73 20 69 73 20 61 20 31 20 63 68 69 70 utput signals. This is a 1 chip 00015100 20 6D 69 78 65 72 3A 20 47 72 61 76 69 73 20 77 69 6C 6C 20 6D 61 6B 65 20 73 70 65 63 73 20 61 mixer: Gravis will make specs a 00015120 6E 64 20 62 6C 6F 63 6B 20 64 69 61 67 72 61 6D 73 20 61 76 61 69 6C 61 62 6C 65 20 61 73 20 73 nd block diagrams available as s 00015140 6F 6F 6E 20 61 73 20 77 65 20 63 61 6E 2E 0D 0A 0C 32 29 20 31 36 20 62 69 74 20 72 65 63 6F 72 oon as we can.♪◙♀2) 16 bit recor 00015160 64 69 6E 67 20 73 75 70 70 6F 72 74 2E 20 54 68 69 73 20 66 61 6C 6C 73 20 69 6E 74 6F 20 32 20 ding support. This falls into 2 00015180 63 61 74 65 67 6F 72 69 65 73 3A 20 64 61 75 67 68 74 65 72 20 63 61 72 64 20 73 75 70 70 6F 72 categories: daughter card suppor 000151A0 74 20 61 6E 64 20 55 6C 74 72 61 4D 61 78 20 73 75 70 70 6F 72 74 2E 20 20 42 6F 74 68 20 6F 66 t and UltraMax support. Both of 000151C0 20 74 68 65 73 65 20 75 73 65 20 74 68 65 20 73 61 6D 65 20 63 68 69 70 20 28 43 72 79 73 74 61 these use the same chip (Crysta 000151E0 6C 20 53 65 6D 69 63 6F 6E 64 75 63 74 6F 72 73 20 43 53 34 32 33 31 20 43 4F 44 45 43 29 2E 20 l Semiconductors CS4231 CODEC). 00015200 20 43 6F 6E 74 61 63 74 20 43 72 79 73 74 61 6C 20 74 6F 20 67 65 74 20 61 20 64 61 74 61 20 73 Contact Crystal to get a data s 00015220 68 65 65 74 20 66 6F 72 20 73 70 65 63 73 20 6F 6E 20 68 6F 77 20 74 6F 20 70 72 6F 67 72 61 6D heet for specs on how to program 00015240 20 69 74 3A 20 74 68 65 69 72 20 74 65 6C 65 70 68 6F 6E 65 20 6E 75 6D 62 65 72 20 69 73 20 28 it: their telephone number is ( 00015260 35 31 32 29 20 34 34 35 2D 37 32 32 32 2E 20 54 68 65 20 6F 6E 6C 79 20 64 69 66 66 65 72 65 6E 512) 445-7222. The only differen 00015280 63 65 20 69 6E 20 74 68 65 20 31 36 20 62 69 74 20 72 65 63 6F 72 64 69 6E 67 20 63 61 70 61 62 ce in the 16 bit recording capab 000152A0 69 6C 69 74 69 65 73 20 6F 66 20 74 68 65 20 32 20 63 61 72 64 73 20 69 73 20 69 6E 20 68 6F 77 ilities of the 2 cards is in how 000152C0 20 69 74 20 69 6E 74 65 72 66 61 63 65 73 20 74 6F 20 74 68 65 20 72 65 73 74 20 6F 66 20 74 68 it interfaces to the rest of th 000152E0 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 63 61 72 64 2E 20 20 42 6C 6F 63 6B 20 64 69 61 67 72 61 e UltraSound card. Block diagra 00015300 6D 73 20 66 6F 72 20 62 6F 74 68 20 6F 66 20 74 68 65 73 65 20 62 6F 61 72 64 73 20 77 69 6C 6C ms for both of these boards will 00015320 20 62 65 20 6D 61 64 65 20 61 76 61 69 6C 61 62 6C 65 20 77 68 65 6E 20 74 68 65 20 74 6F 6F 6C be made available when the tool 00015340 6B 69 74 20 66 6F 72 20 74 68 65 20 63 6F 64 65 63 20 69 73 20 72 65 6C 65 61 73 65 64 2E 0D 0A kit for the codec is released.♪◙ 00015360 0D 0A 0D 0A 0D 0A 33 2E 31 35 20 54 65 63 68 6E 69 63 61 6C 20 53 75 70 70 6F 72 74 0D 0A 0D 0A ♪◙♪◙♪◙3.15 Technical Support♪◙♪◙ 00015380 51 75 65 73 74 69 6F 6E 73 20 72 65 67 61 72 64 69 6E 67 20 74 68 65 20 53 44 4B 20 63 61 6E 20 Questions regarding the SDK can 000153A0 62 65 20 73 65 6E 74 20 74 6F 3A 0D 0A 0D 0A 53 44 4B 20 54 65 63 68 6E 69 63 61 6C 20 53 75 70 be sent to:♪◙♪◙SDK Technical Sup 000153C0 70 6F 72 74 0D 0A 41 64 76 61 6E 63 65 64 20 47 72 61 76 69 73 0D 0A 31 30 31 2D 33 37 35 30 20 port♪◙Advanced Gravis♪◙101-3750 000153E0 4E 6F 72 74 68 20 46 72 61 73 65 72 20 57 61 79 0D 0A 42 75 72 6E 61 62 79 2C 20 42 72 69 74 69 North Fraser Way♪◙Burnaby, Briti 00015400 73 68 20 43 6F 6C 75 6D 62 69 61 20 56 35 4A 20 35 45 39 0D 0A 46 41 58 20 28 36 30 34 29 20 34 sh Columbia V5J 5E9♪◙FAX (604) 4 00015420 33 31 2D 35 31 35 35 0D 0A 0D 0A 49 66 20 79 6F 75 20 68 61 76 65 20 61 63 63 65 73 73 20 74 6F 31-5155♪◙♪◙If you have access to 00015440 20 61 20 6D 6F 64 65 6D 2C 20 79 6F 75 20 63 61 6E 20 63 6F 6E 74 61 63 74 20 47 72 61 76 69 73 a modem, you can contact Gravis 00015460 27 20 42 42 53 20 61 74 3A 0D 0A 28 36 30 34 29 20 34 33 31 2D 35 39 32 37 0D 0A 0D 0A 49 66 20 ' BBS at:♪◙(604) 431-5927♪◙♪◙If 00015480 79 6F 75 20 68 61 76 65 20 61 63 63 65 73 73 20 74 6F 20 69 6E 74 65 72 6E 65 74 20 6D 61 69 6C you have access to internet mail 000154A0 20 73 65 72 76 69 63 65 73 2C 20 79 6F 75 20 63 61 6E 20 73 65 6E 64 20 6D 61 69 6C 20 74 6F 20 services, you can send mail to 000154C0 27 6A 6F 68 6E 2E 73 6D 69 74 68 40 67 72 61 76 69 73 2E 63 6F 6D 27 20 66 6F 72 20 67 65 6E 65 'john.smith@gravis.com' for gene 000154E0 72 61 6C 20 71 75 65 73 74 69 6F 6E 73 2C 20 6F 72 20 27 6B 75 72 74 2E 6B 65 6E 6E 65 74 74 40 ral questions, or 'kurt.kennett@ 00015500 67 72 61 76 69 73 2E 63 6F 6D 27 20 66 6F 72 20 71 75 65 73 74 69 6F 6E 73 20 72 65 67 61 72 64 gravis.com' for questions regard 00015520 69 6E 67 20 74 68 65 20 50 61 73 63 61 6C 20 76 65 72 73 69 6F 6E 20 6F 66 20 74 68 65 20 53 44 ing the Pascal version of the SD 00015540 4B 2E 0D 0A 0D 0A 50 6C 65 61 73 65 20 6D 61 6B 65 20 73 75 72 65 20 79 6F 75 20 68 61 76 65 20 K.♪◙♪◙Please make sure you have 00015560 63 6F 6E 73 75 6C 74 65 64 20 74 68 69 73 20 64 6F 63 75 6D 65 6E 74 61 74 69 6F 6E 20 62 65 66 consulted this documentation bef 00015580 6F 72 65 20 63 6F 6E 74 61 63 74 69 6E 67 20 54 65 63 68 6E 69 63 61 6C 20 73 75 70 70 6F 72 74 ore contacting Technical support 000155A0 2E 20 28 52 54 46 4D 21 29 0D 0A 0D 0A 0D 0A 0C 43 68 61 70 74 65 72 20 34 20 2D 20 52 65 66 65 . (RTFM!)♪◙♪◙♪◙♀Chapter 4 - Refe 000155C0 72 65 6E 63 65 20 47 75 69 64 65 0D 0A 0D 0A 54 68 69 73 20 63 68 61 70 74 65 72 20 69 73 20 61 rence Guide♪◙♪◙This chapter is a 000155E0 20 72 65 66 65 72 65 6E 63 65 20 67 75 69 64 65 20 66 6F 72 20 74 68 65 20 72 6F 75 74 69 6E 65 reference guide for the routine 00015600 73 20 74 68 61 74 20 63 6F 6D 70 72 6F 6D 69 73 65 20 62 6F 74 68 20 74 68 65 20 43 20 61 6E 64 s that compromise both the C and 00015620 20 50 61 73 63 61 6C 20 76 65 72 73 69 6F 6E 73 20 6F 66 20 74 68 65 20 53 44 4B 2E 20 20 50 6C Pascal versions of the SDK. Pl 00015640 65 61 73 65 20 73 65 65 20 74 68 65 20 74 61 62 6C 65 20 6F 66 20 63 6F 6E 74 65 6E 74 73 20 74 ease see the table of contents t 00015660 6F 20 6C 6F 6F 6B 20 75 70 20 61 20 70 61 72 74 69 63 75 6C 61 72 20 72 6F 75 74 69 6E 65 20 71 o look up a particular routine q 00015680 75 69 63 6B 6C 79 20 62 79 20 6E 61 6D 65 2E 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 43 61 6C 63 52 61 uickly by name.♪◙♪◙♪◙UltraCalcRa 000156A0 74 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F te♪◙____________________________ 000156C0 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 63 61 6C 63 75 6C 61 74 65 20 74 _____♪◙♪◙Purpose:○To calculate t 000156E0 68 65 20 72 61 74 65 20 66 6F 72 20 61 20 76 6F 6C 75 6D 65 20 72 61 6D 70 2E 0D 0A 0D 0A 43 3A he rate for a volume ramp.♪◙♪◙C: 00015700 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 55 6C 74 72 61 43 61 6C 63 52 61 74 65 28 73 ○○○unsigned char UltraCalcRate(s 00015720 74 61 72 74 2C 65 6E 64 2C 6D 69 6C 5F 73 65 63 73 29 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 tart,end,mil_secs);♪◙○○○unsigned 00015740 20 69 6E 74 20 73 74 61 72 74 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 65 6E 64 int start;♪◙○○○unsigned int end 00015760 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 6D 69 6C 5F 73 65 63 73 3B 0D 0A 0D ;♪◙○○○unsigned long mil_secs;♪◙♪ 00015780 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 43 61 6C 63 52 61 74 65 28 ◙PASCAL:○FUNCTION UltraCalcRate( 000157A0 53 74 61 72 74 56 20 20 20 3A 20 57 4F 52 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 StartV : WORD;♪◙○○○ 000157C0 20 20 20 20 20 20 20 20 20 20 20 20 45 6E 64 56 20 20 20 20 20 3A 20 57 4F 52 44 3B 0D 0A 09 09 EndV : WORD;♪◙○○ 000157E0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4D 69 6C 5F 53 65 63 73 ○ Mil_Secs 00015800 20 3A 20 4C 4F 4E 47 49 4E 54 29 20 3A 20 42 59 54 45 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 : LONGINT) : BYTE;♪◙♪◙Remarks:○ 00015820 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6C 63 75 6C 61 74 65 73 20 74 68 65 20 72 61 74 65 This routine calculates the rate 00015840 20 6E 65 63 65 73 73 61 72 79 20 74 6F 20 72 61 6D 70 20 74 68 65 20 76 6F 6C 75 6D 65 20 66 72 necessary to ramp the volume fr 00015860 6F 6D 20 53 74 61 72 74 56 20 76 6F 6C 75 6D 65 20 28 6C 6F 67 61 72 69 74 68 6D 69 63 29 20 74 om StartV volume (logarithmic) t 00015880 6F 20 45 6E 64 56 20 76 6F 6C 75 6D 65 20 28 6C 6F 67 61 72 69 74 68 6D 69 63 29 20 69 6E 20 61 o EndV volume (logarithmic) in a 000158A0 20 64 65 73 69 72 65 64 20 23 20 6F 66 20 6D 69 6C 6C 69 73 65 63 6F 6E 64 73 2E 20 20 54 68 69 desired # of milliseconds. Thi 000158C0 73 20 76 61 6C 75 65 20 73 68 6F 75 6C 64 20 62 65 20 70 61 73 73 65 64 20 74 6F 20 55 6C 74 72 s value should be passed to Ultr 000158E0 61 52 61 6D 70 56 6F 6C 75 6D 65 2E 20 20 54 68 69 73 20 69 73 20 6F 6E 6C 79 20 61 6E 20 61 70 aRampVolume. This is only an ap 00015900 70 72 6F 78 69 6D 61 74 69 6F 6E 2E 20 20 54 68 65 20 6C 6F 6E 67 65 72 20 74 68 65 20 74 69 6D proximation. The longer the tim 00015920 65 20 73 70 61 6E 2C 20 74 68 65 20 6C 65 73 73 20 70 72 65 63 69 73 65 20 74 68 65 20 72 65 73 e span, the less precise the res 00015940 75 6C 74 20 69 73 20 6C 69 6B 65 6C 79 20 74 6F 20 62 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A ult is likely to be.♪◙♪◙Returns: 00015960 09 41 20 76 61 6C 75 65 20 77 68 69 63 68 20 63 61 6E 20 62 65 20 70 61 73 73 65 64 20 74 6F 20 ○A value which can be passed to 00015980 55 6C 74 72 61 52 61 6D 70 56 6F 6C 75 6D 65 20 6F 72 20 55 6C 74 72 61 52 61 6D 70 4C 69 6E 65 UltraRampVolume or UltraRampLine 000159A0 61 72 56 6F 6C 75 6D 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 52 61 6D 70 arVolume.♪◙♪◙See also:○UltraRamp 000159C0 56 6F 6C 75 6D 65 2C 20 55 6C 74 72 61 52 61 6D 70 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 0D 0A 0D Volume, UltraRampLinearVolume♪◙♪ 000159E0 0A 0D 0A 0D 0A 55 6C 74 72 61 43 6C 6F 73 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ◙♪◙♪◙UltraClose♪◙_______________ 00015A00 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 __________________♪◙♪◙Purpose:○T 00015A20 6F 20 63 6C 6F 73 65 20 6F 75 74 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 63 61 72 64 2E o close out the UltraSound card. 00015A40 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 43 6C 6F 73 65 28 76 6F 69 64 29 3B 0D 0A ♪◙♪◙C:○○○int UltraClose(void);♪◙ 00015A60 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 43 6C 6F 73 65 20 3A 20 ♪◙PASCAL:○FUNCTION UltraClose : 00015A80 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E BOOLEAN;♪◙♪◙Remarks:○This routin 00015AA0 65 20 73 68 6F 75 6C 64 20 62 65 20 63 61 6C 6C 65 64 20 62 65 66 6F 72 65 20 79 6F 75 72 20 61 e should be called before your a 00015AC0 70 70 6C 69 63 61 74 69 6F 6E 20 65 78 69 74 73 2E 20 20 49 74 20 73 68 75 74 73 20 64 6F 77 6E pplication exits. It shuts down 00015AE0 20 61 6C 6C 20 61 75 64 69 6F 20 61 6E 64 20 70 75 74 73 20 74 68 65 20 63 61 72 64 20 69 6E 20 all audio and puts the card in 00015B00 61 20 73 74 61 62 6C 65 20 73 74 61 74 65 2E 20 20 49 74 20 61 6C 73 6F 20 70 75 74 73 20 74 68 a stable state. It also puts th 00015B20 65 20 50 43 20 62 61 63 6B 20 74 6F 20 74 68 65 20 73 74 61 74 65 20 70 72 69 6F 72 20 74 6F 20 e PC back to the state prior to 00015B40 72 75 6E 6E 69 6E 67 20 79 6F 75 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 28 72 65 73 65 74 73 running your application (resets 00015B60 20 69 6E 74 65 72 72 75 70 74 20 76 65 63 74 6F 72 73 20 65 74 63 29 2E 0D 0A 0D 0A 52 65 74 75 interrupt vectors etc).♪◙♪◙Retu 00015B80 72 6E 73 3A 09 54 52 55 45 20 69 66 20 43 6C 6F 73 65 20 77 61 73 20 73 75 63 63 65 73 73 66 75 rns:○TRUE if Close was successfu 00015BA0 6C 2C 20 46 41 4C 53 45 20 6F 74 68 65 72 77 69 73 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A l, FALSE otherwise.♪◙♪◙See also: 00015BC0 09 55 6C 74 72 61 4F 70 65 6E 2C 20 55 6C 74 72 61 52 65 73 65 74 0D 0A 0D 0A 0C 55 6C 74 72 61 ○UltraOpen, UltraReset♪◙♪◙♀Ultra 00015BE0 44 6F 77 6E 6C 6F 61 64 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F Download♪◙______________________ 00015C00 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 44 6F 77 6E 6C 6F 61 64 ___________♪◙♪◙Purpose:○Download 00015C20 20 61 20 63 68 75 6E 6B 20 6F 66 20 64 61 74 61 20 69 6E 74 6F 20 55 6C 74 72 61 53 6F 75 6E 64 a chunk of data into UltraSound 00015C40 20 44 52 41 4D 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 44 6F 77 6E 6C 6F 61 64 DRAM.♪◙♪◙C:○○○int UltraDownload 00015C60 28 64 61 74 61 70 74 72 2C 63 6F 6E 74 72 6F 6C 2C 64 72 61 6D 5F 6C 6F 63 2C 6C 65 6E 2C 77 61 (dataptr,control,dram_loc,len,wa 00015C80 69 74 29 3B 0D 0A 09 09 09 76 6F 69 64 20 2A 64 61 74 61 70 74 72 3B 0D 0A 09 09 09 75 6E 73 69 it);♪◙○○○void *dataptr;♪◙○○○unsi 00015CA0 67 6E 65 64 20 63 68 61 72 20 63 6F 6E 74 72 6F 6C 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 gned char control;♪◙○○○unsigned 00015CC0 6C 6F 6E 67 20 64 72 61 6D 5F 6C 6F 63 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 long dram_loc;♪◙○○○unsigned int 00015CE0 6C 65 6E 3B 0D 0A 09 09 09 69 6E 74 20 77 61 69 74 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 len;♪◙○○○int wait;♪◙♪◙PASCAL:○FU 00015D00 4E 43 54 49 4F 4E 20 55 6C 74 72 61 44 6F 77 6E 4C 6F 61 64 28 44 61 74 61 50 74 72 20 20 3A 20 NCTION UltraDownLoad(DataPtr : 00015D20 50 4F 49 4E 54 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 POINTER;♪◙○○○ 00015D40 20 20 20 20 43 6F 6E 74 72 6F 6C 20 20 3A 20 42 59 54 45 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 Control : BYTE;♪◙○○○ 00015D60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 52 41 4D 5F 4C 6F 63 20 3A 20 4C 4F 4E 47 49 DRAM_Loc : LONGI 00015D80 4E 54 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4C NT;♪◙○○○ L 00015DA0 65 6E 20 20 20 20 20 20 3A 20 57 4F 52 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 en : WORD;♪◙○○○ 00015DC0 20 20 20 20 20 20 20 20 20 20 20 57 61 69 74 20 20 20 20 20 3A 20 42 4F 4F 4C 45 41 4E 29 20 3A Wait : BOOLEAN) : 00015DE0 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 BOOLEAN;♪◙♪◙Remarks:○This routi 00015E00 6E 65 20 77 69 6C 6C 20 74 72 61 6E 73 66 65 72 20 61 20 63 68 75 6E 6B 20 6F 66 20 64 61 74 61 ne will transfer a chunk of data 00015E20 20 66 72 6F 6D 20 74 68 65 20 50 43 27 73 20 52 41 4D 20 74 6F 20 74 68 65 20 55 6C 74 72 61 53 from the PC's RAM to the UltraS 00015E40 6F 75 6E 64 27 73 20 44 52 41 4D 2E 20 20 49 74 20 77 69 6C 6C 20 74 72 61 6E 73 66 65 72 20 27 ound's DRAM. It will transfer ' 00015E60 4C 65 6E 27 20 23 20 6F 66 20 62 79 74 65 73 20 66 72 6F 6D 20 44 61 74 61 50 74 72 20 28 69 6E Len' # of bytes from DataPtr (in 00015E80 20 50 43 29 20 74 6F 20 44 52 41 4D 5F 4C 6F 63 20 28 69 6E 20 55 6C 74 72 61 53 6F 75 6E 64 29 PC) to DRAM_Loc (in UltraSound) 00015EA0 2E 20 20 49 66 20 27 57 61 69 74 27 20 69 73 20 54 52 55 45 2C 20 74 68 65 6E 20 69 74 20 77 69 . If 'Wait' is TRUE, then it wi 00015EC0 6C 6C 20 77 61 69 74 20 75 6E 74 69 6C 20 74 68 65 20 74 72 61 6E 73 66 65 72 20 69 73 20 63 6F ll wait until the transfer is co 00015EE0 6D 70 6C 65 74 65 2E 20 20 49 66 20 27 57 61 69 74 27 20 69 73 20 46 41 4C 53 45 2C 20 69 74 20 mplete. If 'Wait' is FALSE, it 00015F00 77 69 6C 6C 20 72 65 74 75 72 6E 20 61 73 20 73 6F 6F 6E 20 61 73 20 74 72 61 6E 73 66 65 72 20 will return as soon as transfer 00015F20 69 73 20 73 74 61 72 74 65 64 2E 20 20 49 6E 20 73 6F 6D 65 20 63 61 73 65 73 20 77 68 65 72 65 is started. In some cases where 00015F40 20 79 6F 75 20 6E 65 65 64 20 74 6F 20 67 65 74 20 6F 75 74 70 75 74 20 71 75 69 63 6B 6C 79 2C you need to get output quickly, 00015F60 20 79 6F 75 20 63 61 6E 20 73 74 61 72 74 20 74 68 65 20 64 6F 77 6E 6C 6F 61 64 20 61 6E 64 20 you can start the download and 00015F80 74 68 65 6E 20 69 6D 6D 65 64 69 61 74 65 6C 79 20 73 74 61 72 74 20 61 20 76 6F 69 63 65 20 70 then immediately start a voice p 00015FA0 6C 61 79 69 6E 67 20 74 68 65 20 64 61 74 61 2E 20 20 54 68 65 20 44 4D 41 20 74 72 61 6E 73 66 laying the data. The DMA transf 00015FC0 65 72 20 69 73 20 4D 55 43 48 20 66 61 73 74 65 72 20 74 68 61 6E 20 74 68 65 20 76 6F 69 63 65 er is MUCH faster than the voice 00015FE0 20 70 6C 61 79 62 61 63 6B 2C 20 73 6F 20 69 74 20 77 69 6C 6C 20 62 65 20 61 62 6C 65 20 74 6F playback, so it will be able to 00016000 20 64 6F 77 6E 6C 6F 61 64 20 64 61 74 61 20 61 68 65 61 64 20 6F 66 20 74 68 65 20 70 6C 61 79 download data ahead of the play 00016020 62 61 63 6B 2E 20 20 46 6F 72 20 6F 62 76 69 6F 75 73 20 72 65 61 73 6F 6E 73 2C 20 74 68 69 73 back. For obvious reasons, this 00016040 20 77 69 6C 6C 20 6E 6F 74 20 77 6F 72 6B 20 69 66 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 70 6C will not work if you want to pl 00016060 61 79 20 74 68 65 20 64 61 74 61 20 62 61 63 6B 77 61 72 64 73 2E 20 20 53 65 65 20 41 70 70 65 ay the data backwards. See Appe 00016080 6E 64 69 78 20 44 20 66 6F 72 20 61 20 64 65 66 69 6E 69 74 69 6F 6E 20 6F 66 20 74 68 65 20 63 ndix D for a definition of the c 000160A0 6F 6E 74 72 6F 6C 20 62 69 74 73 2E 20 20 54 68 65 79 20 73 70 65 63 69 66 79 20 74 68 65 20 74 ontrol bits. They specify the t 000160C0 79 70 65 20 6F 66 20 64 61 74 61 20 62 65 69 6E 67 20 74 72 61 6E 73 66 65 72 72 65 64 2E 0D 0A ype of data being transferred.♪◙ 000160E0 0D 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 20 69 66 20 6E ♪◙Returns:○C: ULTRA_OK if n 00016100 6F 20 70 72 6F 62 6C 65 6D 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 44 4D 41 5F 42 55 53 59 20 o problem.♪◙○○○ DMA_BUSY 00016120 69 66 20 44 4D 41 20 43 68 61 6E 6E 65 6C 20 69 73 20 62 75 73 79 2E 0D 0A 0D 0A 09 09 09 50 41 if DMA Channel is busy.♪◙♪◙○○○PA 00016140 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 74 72 61 6E 73 66 65 72 20 77 61 73 20 73 75 63 63 65 SCAL: TRUE if transfer was succe 00016160 73 73 66 75 6C 2E 20 20 20 46 41 4C 53 45 20 6F 74 68 65 72 77 69 73 65 2E 0D 0A 09 09 09 20 20 ssful. FALSE otherwise.♪◙○○○ 00016180 20 20 20 20 20 20 49 66 20 75 6E 73 75 63 63 65 73 73 66 75 6C 2C 20 63 68 65 63 6B 20 55 6C 74 If unsuccessful, check Ult 000161A0 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 53 65 raErrorStr for the reason.♪◙♪◙Se 000161C0 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 55 70 6C 6F 61 64 2C 20 55 6C 74 72 61 44 52 41 4D 44 4D e also:○UltraUpload, UltraDRAMDM 000161E0 41 42 75 73 79 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 44 52 41 4D 44 4D 41 42 75 73 79 0D 0A 5F 5F ABusy♪◙♪◙♪◙♀UltraDRAMDMABusy♪◙__ 00016200 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D _______________________________♪ 00016220 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 65 73 74 20 74 6F 20 73 65 65 20 69 66 20 74 68 65 20 44 ◙♪◙Purpose:○Test to see if the D 00016240 4D 41 20 63 68 61 6E 6E 65 6C 20 69 73 20 62 75 73 79 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 MA channel is busy.♪◙♪◙C:○○○int 00016260 55 6C 74 72 61 44 72 61 6D 44 4D 41 42 75 73 79 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 UltraDramDMABusy(void);♪◙♪◙PASCA 00016280 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 44 52 41 4D 44 4D 41 42 75 73 79 20 3A 20 42 L:○FUNCTION UltraDRAMDMABusy : B 000162A0 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 OOLEAN;♪◙♪◙Remarks:○This routine 000162C0 20 77 69 6C 6C 20 63 68 65 63 6B 20 74 6F 20 73 65 65 20 69 66 20 74 68 65 20 74 6F 2F 66 72 6F will check to see if the to/fro 000162E0 6D 20 44 52 41 4D 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 69 73 20 62 75 73 79 2E 20 20 49 74 20 m DRAM DMA channel is busy. It 00016300 6D 69 67 68 74 20 62 65 20 75 73 65 66 75 6C 20 73 6F 20 79 6F 75 72 20 61 70 70 6C 69 63 61 74 might be useful so your applicat 00016320 69 6F 6E 20 64 6F 65 73 6E 27 74 20 68 61 6E 67 20 61 72 6F 75 6E 64 20 77 68 69 6C 65 20 77 61 ion doesn't hang around while wa 00016340 69 74 69 6E 67 20 66 6F 72 20 61 20 44 4D 41 20 74 72 61 6E 73 66 65 72 20 74 6F 20 63 6F 6D 70 iting for a DMA transfer to comp 00016360 6C 65 74 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 20 69 66 20 74 68 65 20 63 68 lete.♪◙♪◙Returns:○TRUE if the ch 00016380 61 6E 6E 65 6C 20 69 73 20 73 74 69 6C 6C 20 62 75 73 79 2E 20 20 20 46 41 4C 53 45 20 69 66 20 annel is still busy. FALSE if 000163A0 69 74 27 73 20 66 72 65 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 57 61 69 it's free.♪◙♪◙See also:○UltraWai 000163C0 74 44 52 41 4D 44 4D 41 2C 20 55 6C 74 72 61 44 6F 77 6E 6C 6F 61 64 2C 20 55 6C 74 72 61 55 70 tDRAMDMA, UltraDownload, UltraUp 000163E0 6C 6F 61 64 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 47 6F 52 65 63 6F 72 64 0D 0A 5F 5F 5F 5F 5F load♪◙♪◙♪◙♪◙UltraGoRecord♪◙_____ 00016400 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A ____________________________♪◙♪◙ 00016420 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 74 61 72 74 20 75 70 20 61 20 70 72 65 2D 73 65 74 20 72 Purpose:○To start up a pre-set r 00016440 65 63 6F 72 64 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 47 6F 52 65 63 6F 72 64 ecord.♪◙♪◙C:○○○int UltraGoRecord 00016460 28 63 6F 6E 74 72 6F 6C 29 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 63 6F 6E (control);♪◙○○○unsigned char con 00016480 74 72 6F 6C 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 47 trol;♪◙♪◙PASCAL:○FUNCTION UltraG 000164A0 6F 52 65 63 6F 72 64 28 43 6F 6E 74 72 6F 6C 20 3A 20 42 59 54 45 29 20 3A 20 42 4F 4F 4C 45 41 oRecord(Control : BYTE) : BOOLEA 000164C0 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C N;♪◙♪◙Remarks:○This routine will 000164E0 20 73 74 61 72 74 20 75 70 20 61 20 70 72 65 2D 70 72 69 6D 65 64 20 72 65 63 6F 72 64 20 28 64 start up a pre-primed record (d 00016500 6F 6E 65 20 77 69 74 68 20 55 6C 74 72 61 50 72 69 6D 65 52 65 63 6F 72 64 29 2E 20 20 49 74 20 one with UltraPrimeRecord). It 00016520 63 61 6E 20 61 6C 73 6F 20 62 65 20 75 73 65 64 20 74 6F 20 72 65 73 74 61 72 74 20 61 20 69 6E can also be used to restart a in 00016540 64 65 66 69 6E 69 74 65 20 72 65 63 6F 72 64 69 6E 67 20 70 72 6F 63 65 73 73 20 66 72 6F 6D 20 definite recording process from 00016560 74 68 65 20 72 65 63 6F 72 64 69 6E 67 20 68 61 6E 64 6C 65 72 20 63 61 6C 6C 62 61 63 6B 2E 0D the recording handler callback.♪ 00016580 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 20 69 66 20 ◙♪◙Returns:○C: ULTRA_OK if 000165A0 6E 6F 20 65 72 72 6F 72 0D 0A 09 09 09 20 20 20 20 20 20 20 20 44 4D 41 5F 42 55 53 59 20 69 66 no error♪◙○○○ DMA_BUSY if 000165C0 20 74 68 65 20 63 68 61 6E 6E 65 6C 20 69 73 20 62 75 73 79 0D 0A 0D 0A 09 09 09 50 41 53 43 41 the channel is busy♪◙♪◙○○○PASCA 000165E0 4C 3A 20 54 52 55 45 20 69 66 20 52 65 63 6F 72 64 20 73 74 61 72 74 65 64 20 6F 6B 2E 20 20 46 L: TRUE if Record started ok. F 00016600 41 4C 53 45 20 6F 74 68 65 72 77 69 73 65 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 49 66 20 46 ALSE otherwise.♪◙○○○ If F 00016620 41 4C 53 45 20 63 68 65 63 6B 20 74 68 65 20 55 6C 74 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 ALSE check the UltraErrorStr for 00016640 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 52 the reason.♪◙♪◙See also:○UltraR 00016660 65 63 6F 72 64 44 61 74 61 2C 20 55 6C 74 72 61 50 72 69 6D 65 52 65 63 6F 72 64 2C 20 55 6C 74 ecordData, UltraPrimeRecord, Ult 00016680 72 61 52 65 63 6F 72 64 48 61 6E 64 6C 65 72 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 47 6F 56 6F 69 raRecordHandler♪◙♪◙♪◙♀UltraGoVoi 000166A0 63 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ce♪◙____________________________ 000166C0 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 74 61 72 74 20 61 20 76 6F 69 _____♪◙♪◙Purpose:○To start a voi 000166E0 63 65 20 74 68 61 74 20 68 61 73 20 61 6C 72 65 61 64 79 20 62 65 65 6E 20 70 72 69 6D 65 64 2E ce that has already been primed. 00016700 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 47 6F 56 6F 69 63 65 28 76 6F 69 63 65 ♪◙♪◙C:○○○void UltraGoVoice(voice 00016720 2C 6D 6F 64 65 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 75 6E 73 69 67 ,mode);♪◙○○○int voice;♪◙○○○unsig 00016740 6E 65 64 20 63 68 61 72 20 6D 6F 64 65 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 ned char mode;♪◙♪◙PASCAL:○PROCED 00016760 55 52 45 20 55 6C 74 72 61 47 6F 56 6F 69 63 65 28 56 6F 69 63 65 20 3A 20 49 4E 54 45 47 45 52 URE UltraGoVoice(Voice : INTEGER 00016780 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 4D 6F ;♪◙○○○ VMo 000167A0 64 65 20 3A 20 42 59 54 45 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 de : BYTE);♪◙♪◙Remarks:○This rou 000167C0 74 69 6E 65 20 77 69 6C 6C 20 73 74 61 72 74 20 75 70 20 61 20 76 6F 69 63 65 20 74 68 61 74 20 tine will start up a voice that 000167E0 68 61 73 20 61 6C 72 65 61 64 79 20 62 65 65 6E 20 70 72 69 6D 65 64 20 77 69 74 68 20 73 65 74 has already been primed with set 00016800 2D 75 70 20 76 61 6C 75 65 73 20 62 79 20 55 6C 74 72 61 50 72 69 6D 65 56 6F 69 63 65 2E 20 20 -up values by UltraPrimeVoice. 00016820 54 68 69 73 20 63 61 6E 20 62 65 20 75 73 65 66 75 6C 20 69 66 20 79 6F 75 20 6E 65 65 64 20 74 This can be useful if you need t 00016840 6F 20 73 74 61 72 74 20 6D 75 6C 74 69 70 6C 65 20 76 6F 69 63 65 73 20 61 73 20 63 6C 6F 73 65 o start multiple voices as close 00016860 20 74 6F 67 65 74 68 65 72 20 61 73 20 70 6F 73 73 69 62 6C 65 2E 20 20 53 65 65 20 41 70 70 65 together as possible. See Appe 00016880 6E 64 69 78 20 43 20 66 6F 72 20 74 68 65 20 6D 6F 64 65 20 62 69 74 20 64 65 66 69 6E 69 74 69 ndix C for the mode bit definiti 000168A0 6F 6E 73 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 50 72 69 6D 65 56 6F 69 63 ons.♪◙♪◙See also:○UltraPrimeVoic 000168C0 65 2C 20 55 6C 74 72 61 53 74 61 72 74 56 6F 69 63 65 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 44 e, UltraStartVoice♪◙♪◙♪◙♪◙UltraD 000168E0 69 73 61 62 6C 65 4C 69 6E 65 49 6E 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F isableLineIn♪◙__________________ 00016900 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 64 _______________♪◙♪◙Purpose:○To d 00016920 69 73 61 62 6C 65 20 6C 69 6E 65 20 6C 65 76 65 6C 20 69 6E 70 75 74 2E 0D 0A 0D 0A 43 3A 09 09 isable line level input.♪◙♪◙C:○○ 00016940 09 76 6F 69 64 20 55 6C 74 72 61 44 69 73 61 62 6C 65 4C 69 6E 65 49 6E 28 76 6F 69 64 29 3B 0D ○void UltraDisableLineIn(void);♪ 00016960 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 44 69 73 61 62 6C ◙♪◙PASCAL:○PROCEDURE UltraDisabl 00016980 65 4C 69 6E 65 49 6E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 49 66 20 6C 69 6E 65 20 6C 65 76 eLineIn;♪◙♪◙Remarks:○If line lev 000169A0 65 6C 20 69 6E 70 75 74 20 69 73 20 65 6E 61 62 6C 65 64 20 61 6E 64 20 6F 75 74 70 75 74 20 69 el input is enabled and output i 000169C0 73 20 65 6E 61 62 6C 65 64 2C 20 74 68 65 20 69 6E 70 75 74 20 69 73 20 72 6F 75 74 65 64 20 64 s enabled, the input is routed d 000169E0 69 72 65 63 74 6C 79 20 74 6F 20 74 68 65 20 6F 75 74 70 75 74 20 61 6E 64 20 61 75 64 69 6F 20 irectly to the output and audio 00016A00 77 69 6C 6C 20 62 65 20 68 65 61 72 64 2E 20 20 49 66 20 74 68 69 73 20 69 73 20 6E 6F 74 20 64 will be heard. If this is not d 00016A20 65 73 69 72 65 64 2C 20 75 73 65 20 74 68 69 73 20 74 6F 20 64 69 73 61 62 6C 65 20 6C 69 6E 65 esired, use this to disable line 00016A40 20 69 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 45 6E 61 62 6C 65 4C 69 6E in.♪◙♪◙See also:○UltraEnableLin 00016A60 65 49 6E 2C 20 55 6C 74 72 61 47 65 74 4C 69 6E 65 49 6E 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 eIn, UltraGetLineIn♪◙♪◙♪◙♪◙Ultra 00016A80 44 69 73 61 62 6C 65 4D 69 63 49 6E 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F DisableMicIn♪◙__________________ 00016AA0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 64 _______________♪◙♪◙Purpose:○To d 00016AC0 69 73 61 62 6C 65 20 6D 69 63 72 6F 70 68 6F 6E 65 20 69 6E 70 75 74 2E 0D 0A 0D 0A 43 3A 09 09 isable microphone input.♪◙♪◙C:○○ 00016AE0 09 76 6F 69 64 20 55 6C 74 72 61 44 69 73 61 62 6C 65 4D 69 63 49 6E 28 76 6F 69 64 29 3B 0D 0A ○void UltraDisableMicIn(void);♪◙ 00016B00 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 44 69 73 61 62 6C 65 ♪◙PASCAL:○PROCEDURE UltraDisable 00016B20 4D 69 63 49 6E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 49 66 20 6D 69 63 72 6F 70 68 6F 6E 65 MicIn;♪◙♪◙Remarks:○If microphone 00016B40 20 69 6E 70 75 74 20 69 73 20 65 6E 61 62 6C 65 64 20 61 6E 64 20 6F 75 74 70 75 74 20 69 73 20 input is enabled and output is 00016B60 65 6E 61 62 6C 65 64 2C 20 74 68 65 20 69 6E 70 75 74 20 69 73 20 72 6F 75 74 65 64 20 64 69 72 enabled, the input is routed dir 00016B80 65 63 74 6C 79 20 74 6F 20 74 68 65 20 6F 75 74 70 75 74 20 61 6E 64 20 61 75 64 69 6F 20 77 69 ectly to the output and audio wi 00016BA0 6C 6C 20 62 65 20 68 65 61 72 64 2E 20 20 49 66 20 74 68 69 73 20 69 73 20 6E 6F 74 20 64 65 73 ll be heard. If this is not des 00016BC0 69 72 65 64 2C 20 75 73 65 20 74 68 69 73 20 74 6F 20 64 69 73 61 62 6C 65 20 6D 69 63 72 6F 70 ired, use this to disable microp 00016BE0 68 6F 6E 65 20 69 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 45 6E 61 62 6C hone in.♪◙♪◙See also:○UltraEnabl 00016C00 65 4D 69 63 49 6E 2C 20 55 6C 74 72 61 47 65 74 4D 69 63 49 6E 0D 0A 0C 55 6C 74 72 61 44 69 73 eMicIn, UltraGetMicIn♪◙♀UltraDis 00016C20 61 62 6C 65 4F 75 74 70 75 74 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ableOutput♪◙____________________ 00016C40 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 74 75 72 _____________♪◙♪◙Purpose:○To tur 00016C60 6E 20 6F 66 66 20 61 6C 6C 20 6F 75 74 70 75 74 20 66 72 6F 6D 20 74 68 65 20 55 6C 74 72 61 53 n off all output from the UltraS 00016C80 6F 75 6E 64 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 44 69 73 61 62 6C 65 4F ound.♪◙♪◙C:○○○void UltraDisableO 00016CA0 75 74 70 75 74 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 utput(void);♪◙♪◙PASCAL:○PROCEDUR 00016CC0 45 20 55 6C 74 72 61 44 69 73 61 62 6C 65 4F 75 74 70 75 74 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 E UltraDisableOutput;♪◙♪◙Remarks 00016CE0 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 64 69 73 61 62 6C 65 20 61 6C 6C 20 :○This routine will disable all 00016D00 6F 75 74 70 75 74 20 66 72 6F 6D 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 2E 20 20 54 68 69 output from the UltraSound. Thi 00016D20 73 20 63 61 6E 20 62 65 20 75 73 65 64 20 64 75 72 69 6E 67 20 72 65 63 6F 72 64 69 6E 67 20 73 s can be used during recording s 00016D40 6F 20 74 68 61 74 20 74 68 65 20 69 6E 70 75 74 20 77 69 6C 6C 20 6E 6F 74 20 62 65 20 6C 6F 6F o that the input will not be loo 00016D60 70 65 64 20 62 61 63 6B 20 74 6F 20 74 68 65 20 6F 75 74 70 75 74 2E 20 20 49 74 20 69 73 20 61 ped back to the output. It is a 00016D80 6C 73 6F 20 75 73 65 66 75 6C 20 74 6F 20 64 69 73 61 62 6C 65 20 6F 75 74 70 75 74 20 64 75 72 lso useful to disable output dur 00016DA0 69 6E 67 20 72 65 73 65 74 73 20 73 69 6E 63 65 20 74 68 61 74 20 77 69 6C 6C 20 68 65 6C 70 20 ing resets since that will help 00016DC0 65 6C 69 6D 69 6E 61 74 65 20 27 70 6F 70 73 27 20 64 75 72 69 6E 67 20 69 6E 69 74 69 61 6C 69 eliminate 'pops' during initiali 00016DE0 7A 61 74 69 6F 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 45 6E 61 62 6C 65 zation.♪◙♪◙See also:○UltraEnable 00016E00 4F 75 74 70 75 74 2C 20 55 6C 74 72 61 47 65 74 4F 75 74 70 75 74 0D 0A 0D 0A 0D 0A 0D 0A 55 6C Output, UltraGetOutput♪◙♪◙♪◙♪◙Ul 00016E20 74 72 61 45 6E 61 62 6C 65 4C 69 6E 65 49 6E 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F traEnableLineIn♪◙_______________ 00016E40 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 __________________♪◙♪◙Purpose:○T 00016E60 6F 20 65 6E 61 62 6C 65 20 6C 69 6E 65 20 6C 65 76 65 6C 20 69 6E 70 75 74 2E 0D 0A 0D 0A 43 3A o enable line level input.♪◙♪◙C: 00016E80 09 09 09 76 6F 69 64 20 55 6C 74 72 61 45 6E 61 62 6C 65 4C 69 6E 65 49 6E 28 76 6F 69 64 29 3B ○○○void UltraEnableLineIn(void); 00016EA0 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 45 6E 61 62 6C ♪◙♪◙PASCAL:○PROCEDURE UltraEnabl 00016EC0 65 4C 69 6E 65 49 6E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 75 72 6E 73 20 6F 6E 20 74 68 eLineIn;♪◙♪◙Remarks:○Turns on th 00016EE0 65 20 6C 69 6E 65 20 6C 65 76 65 6C 20 69 6E 70 75 74 2E 20 20 49 66 20 79 6F 75 20 61 72 65 20 e line level input. If you are 00016F00 6E 6F 74 20 72 65 63 6F 72 64 69 6E 67 20 66 72 6F 6D 20 74 68 65 20 6C 69 6E 65 20 69 6E 70 75 not recording from the line inpu 00016F20 74 2C 20 69 74 20 69 73 20 70 72 6F 62 61 62 6C 79 20 6E 6F 74 20 64 65 73 69 72 61 62 6C 65 20 t, it is probably not desirable 00016F40 74 6F 20 68 61 76 65 20 74 68 69 73 20 65 6E 61 62 6C 65 64 20 73 69 6E 63 65 20 69 74 20 77 69 to have this enabled since it wi 00016F60 6C 6C 20 62 65 20 6C 6F 6F 70 65 64 20 62 61 63 6B 20 74 6F 20 74 68 65 20 6F 75 74 70 75 74 20 ll be looped back to the output 00016F80 28 69 66 20 6F 75 74 70 75 74 20 69 73 20 65 6E 61 62 6C 65 64 29 2E 0D 0A 0D 0A 53 65 65 20 61 (if output is enabled).♪◙♪◙See a 00016FA0 6C 73 6F 3A 09 55 6C 74 72 61 44 69 73 61 62 6C 65 4C 69 6E 65 49 6E 2C 20 55 6C 74 72 61 47 65 lso:○UltraDisableLineIn, UltraGe 00016FC0 74 4C 69 6E 65 49 6E 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 45 6E 61 62 6C 65 4D 69 63 49 6E 0D tLineIn♪◙♪◙♪◙♪◙UltraEnableMicIn♪ 00016FE0 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ◙_______________________________ 00017000 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 74 75 72 6E 20 6F 6E 20 74 68 65 20 6D 69 __♪◙♪◙Purpose:○To turn on the mi 00017020 63 72 6F 70 68 6F 6E 65 20 69 6E 70 75 74 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 crophone input.♪◙♪◙C:○○○void Ult 00017040 72 61 45 6E 61 62 6C 65 4D 69 63 49 6E 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 raEnableMicIn(void);♪◙♪◙PASCAL:○ 00017060 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 45 6E 61 62 6C 65 4D 69 63 49 6E 3B 0D 0A 0D 0A 52 PROCEDURE UltraEnableMicIn;♪◙♪◙R 00017080 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73 68 6F 75 6C 64 20 62 65 20 63 emarks:○This routine should be c 000170A0 61 6C 6C 65 64 20 77 68 65 6E 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 72 65 63 6F 72 64 20 66 72 alled when you want to record fr 000170C0 6F 6D 20 74 68 65 20 6D 69 63 72 6F 70 68 6F 6E 65 2E 20 20 49 74 20 69 73 20 70 6F 73 73 69 62 om the microphone. It is possib 000170E0 6C 65 20 74 6F 20 68 61 76 65 20 62 6F 74 68 20 74 68 65 20 6D 69 63 72 6F 70 68 6F 6E 65 20 69 le to have both the microphone i 00017100 6E 70 75 74 20 65 6E 61 62 6C 65 64 20 61 6E 64 20 6C 69 6E 65 20 6C 65 76 65 6C 20 69 6E 70 75 nput enabled and line level inpu 00017120 74 20 65 6E 61 62 6C 65 64 2E 20 20 49 66 20 79 6F 75 20 61 72 65 20 6E 6F 74 20 72 65 63 6F 72 t enabled. If you are not recor 00017140 64 69 6E 67 20 66 72 6F 6D 20 74 68 65 20 6D 69 63 72 6F 70 68 6F 6E 65 2C 20 69 74 20 69 73 20 ding from the microphone, it is 00017160 72 65 63 6F 6D 6D 65 6E 64 65 64 20 74 68 61 74 20 69 74 20 62 65 20 64 69 73 61 62 6C 65 64 2C recommended that it be disabled, 00017180 20 73 69 6E 63 65 20 69 74 20 77 69 6C 6C 20 72 65 64 75 63 65 20 6E 6F 69 73 65 20 6F 6E 20 74 since it will reduce noise on t 000171A0 68 65 20 6F 75 74 70 75 74 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 44 69 73 he output.♪◙♪◙See also:○UltraDis 000171C0 61 62 6C 65 4D 69 63 49 6E 2C 20 55 6C 74 72 61 47 65 74 4D 69 63 49 6E 0D 0A 0C 55 6C 74 72 61 ableMicIn, UltraGetMicIn♪◙♀Ultra 000171E0 45 6E 61 62 6C 65 4F 75 74 70 75 74 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F EnableOutput♪◙__________________ 00017200 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 65 _______________♪◙♪◙Purpose:○To e 00017220 6E 61 62 6C 65 20 6F 75 74 70 75 74 20 66 72 6F 6D 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 nable output from the UltraSound 00017240 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 45 6E 61 62 6C 65 4F 75 74 70 75 74 .♪◙♪◙C:○○○void UltraEnableOutput 00017260 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 (void);♪◙♪◙PASCAL:○PROCEDURE Ult 00017280 72 61 45 6E 61 62 6C 65 4F 75 74 70 75 74 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 raEnableOutput;♪◙♪◙Remarks:○This 000172A0 20 72 6F 75 74 69 6E 65 20 6D 75 73 74 20 62 65 20 63 61 6C 6C 65 64 20 74 6F 20 65 6E 61 62 6C routine must be called to enabl 000172C0 65 20 61 6E 79 20 6F 75 74 70 75 74 20 66 72 6F 6D 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 e any output from the UltraSound 000172E0 2E 20 20 54 68 69 73 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 74 75 72 6E 20 6F 6E 20 6F . This can be used to turn on o 00017300 75 74 70 75 74 20 61 66 74 65 72 20 6D 75 74 69 6E 67 20 69 74 20 77 69 74 68 20 55 6C 74 72 61 utput after muting it with Ultra 00017320 44 69 73 61 62 6C 65 4F 75 74 70 75 74 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 DisableOutput.♪◙♪◙See also:○Ultr 00017340 61 44 69 73 61 62 6C 65 4F 75 74 70 75 74 2C 20 55 6C 74 72 61 47 65 74 4F 75 74 70 75 74 0D 0A aDisableOutput, UltraGetOutput♪◙ 00017360 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 47 65 74 4C 69 6E 65 49 6E 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ♪◙♪◙♪◙UltraGetLineIn♪◙__________ 00017380 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F _______________________♪◙♪◙Purpo 000173A0 73 65 3A 09 54 6F 20 72 65 74 75 72 6E 20 74 68 65 20 63 75 72 72 65 6E 74 20 73 74 61 74 65 20 se:○To return the current state 000173C0 6F 66 20 6C 69 6E 65 20 6C 65 76 65 6C 20 69 6E 70 75 74 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 of line level input♪◙♪◙C:○○○int 000173E0 55 6C 74 72 61 47 65 74 4C 69 6E 65 49 6E 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A UltraGetLineIn(void);♪◙♪◙PASCAL: 00017400 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 47 65 74 4C 69 6E 65 49 6E 20 3A 20 42 4F 4F 4C 45 ○FUNCTION UltraGetLineIn : BOOLE 00017420 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 63 61 6E 20 62 65 20 75 73 65 66 AN;♪◙♪◙Remarks:○This can be usef 00017440 75 6C 20 69 66 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 63 68 61 6E 67 65 20 74 68 65 20 73 74 61 ul if you want to change the sta 00017460 74 65 20 6F 66 20 74 68 65 20 6C 69 6E 65 20 6C 65 76 65 6C 20 69 6E 70 75 74 20 61 6E 64 20 74 te of the line level input and t 00017480 68 65 6E 20 72 65 73 74 6F 72 65 20 69 74 20 62 61 63 6B 20 74 6F 20 74 68 65 20 6F 72 69 67 69 hen restore it back to the origi 000174A0 6E 61 6C 20 73 74 61 74 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 20 69 66 20 4C nal state.♪◙♪◙Returns:○TRUE if L 000174C0 69 6E 65 49 6E 20 69 73 20 45 6E 61 62 6C 65 64 2C 20 46 41 4C 53 45 20 6F 74 68 65 72 77 69 73 ineIn is Enabled, FALSE otherwis 000174E0 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 45 6E 61 62 6C 65 4C 69 6E 65 49 e.♪◙♪◙See also:○UltraEnableLineI 00017500 6E 2C 20 55 6C 74 72 61 44 69 73 61 62 6C 65 4C 69 6E 65 49 6E 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 n, UltraDisableLineIn♪◙♪◙♪◙♪◙Ult 00017520 72 61 47 65 74 4F 75 74 70 75 74 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F raGetOutput♪◙___________________ 00017540 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 65 ______________♪◙♪◙Purpose:○To re 00017560 74 75 72 6E 20 74 68 65 20 63 75 72 72 65 6E 74 20 6F 75 74 70 75 74 20 65 6E 61 62 6C 65 64 20 turn the current output enabled 00017580 73 74 61 74 65 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 47 65 74 4F 75 74 70 75 state.♪◙♪◙C:○○○int UltraGetOutpu 000175A0 74 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 t(void);♪◙♪◙PASCAL:○FUNCTION Ult 000175C0 72 61 47 65 74 4F 75 74 70 75 74 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 63 61 raGetOutput;♪◙♪◙Remarks:○This ca 000175E0 6E 20 62 65 20 75 73 65 66 75 6C 20 69 66 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 63 68 61 6E 67 n be useful if you want to chang 00017600 65 20 74 68 65 20 73 74 61 74 65 20 6F 66 20 74 68 65 20 6F 75 74 70 75 74 20 61 6E 64 20 74 68 e the state of the output and th 00017620 65 6E 20 72 65 73 74 6F 72 65 20 69 74 20 62 61 63 6B 20 74 6F 20 74 68 65 20 6F 72 69 67 69 6E en restore it back to the origin 00017640 61 6C 20 73 74 61 74 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 20 69 66 20 4F 75 al state.♪◙♪◙Returns:○TRUE if Ou 00017660 74 70 75 74 20 69 73 20 45 6E 61 62 6C 65 64 2C 20 46 41 4C 53 45 20 6F 74 68 65 72 77 69 73 65 tput is Enabled, FALSE otherwise 00017680 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 45 6E 61 62 6C 65 4F 75 74 70 75 74 .♪◙♪◙See also:○UltraEnableOutput 000176A0 2C 20 55 6C 74 72 61 44 69 73 61 62 6C 65 4F 75 74 70 75 74 0D 0A 0C 55 6C 74 72 61 47 65 74 4D , UltraDisableOutput♪◙♀UltraGetM 000176C0 69 63 49 6E 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F icIn♪◙__________________________ 000176E0 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 65 74 75 72 6E 20 74 68 _______♪◙♪◙Purpose:○To return th 00017700 65 20 63 75 72 72 65 6E 74 20 73 74 61 74 65 20 6F 66 20 74 68 65 20 6D 69 63 72 6F 70 68 6F 6E e current state of the microphon 00017720 65 20 69 6E 70 75 74 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 47 65 74 4D 69 63 e input.♪◙♪◙C:○○○int UltraGetMic 00017740 49 6E 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C In(void);♪◙♪◙PASCAL:○FUNCTION Ul 00017760 74 72 61 47 65 74 4D 69 63 49 6E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 63 61 traGetMicIn;♪◙♪◙Remarks:○This ca 00017780 6E 20 62 65 20 75 73 65 66 75 6C 20 69 66 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 63 68 61 6E 67 n be useful if you want to chang 000177A0 65 20 74 68 65 20 73 74 61 74 65 20 6F 66 20 74 68 65 20 6D 69 63 72 6F 70 68 6F 6E 65 20 69 6E e the state of the microphone in 000177C0 70 75 74 20 61 6E 64 20 74 68 65 6E 20 72 65 73 74 6F 72 65 20 69 74 20 62 61 63 6B 20 74 6F 20 put and then restore it back to 000177E0 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 73 74 61 74 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 the original state.♪◙♪◙Returns:○ 00017800 54 52 55 45 20 69 66 20 4F 75 74 70 75 74 20 69 73 20 45 6E 61 62 6C 65 64 2C 20 46 41 4C 53 45 TRUE if Output is Enabled, FALSE 00017820 20 6F 74 68 65 72 77 69 73 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 45 6E otherwise.♪◙♪◙See also:○UltraEn 00017840 61 62 6C 65 4D 69 63 49 6E 2C 20 55 6C 74 72 61 44 69 73 61 62 6C 65 4D 69 63 49 6E 0D 0A 0D 0A ableMicIn, UltraDisableMicIn♪◙♪◙ 00017860 0D 0A 0C 55 6C 74 72 61 44 52 41 4D 54 63 48 61 6E 64 6C 65 72 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F ♪◙♀UltraDRAMTcHandler♪◙_________ 00017880 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 ________________________♪◙♪◙Purp 000178A0 6F 73 65 3A 09 54 6F 20 64 65 66 69 6E 65 20 61 20 63 61 6C 6C 62 61 63 6B 20 66 6F 72 20 61 20 ose:○To define a callback for a 000178C0 44 4D 41 20 74 72 61 6E 73 66 65 72 20 63 6F 6D 70 6C 65 74 69 6F 6E 2E 0D 0A 0D 0A 43 3A 09 09 DMA transfer completion.♪◙♪◙C:○○ 000178E0 09 50 46 56 20 2A 28 55 6C 74 72 61 44 72 61 6D 54 63 48 61 6E 64 6C 65 72 28 68 61 6E 64 6C 65 ○PFV *(UltraDramTcHandler(handle 00017900 72 29 29 3B 0D 0A 09 09 09 50 46 56 20 2A 68 61 6E 64 6C 65 72 3B 0D 0A 0D 0A 50 41 53 43 41 4C r));♪◙○○○PFV *handler;♪◙♪◙PASCAL 00017920 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 44 52 41 4D 54 63 48 61 6E 64 6C 65 72 28 56 :○PROCEDURE UltraDRAMTcHandler(V 00017940 41 52 20 48 61 6E 64 6C 65 72 20 3A 20 50 46 56 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 AR Handler : PFV);♪◙♪◙Remarks:○T 00017960 68 69 73 20 70 72 6F 63 65 64 75 72 65 20 64 65 66 69 6E 65 73 20 61 20 63 61 6C 6C 62 61 63 6B his procedure defines a callback 00017980 20 66 6F 72 20 77 68 65 6E 65 76 65 72 20 61 20 44 4D 41 20 74 72 61 6E 73 66 65 72 20 74 6F 20 for whenever a DMA transfer to 000179A0 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 68 61 73 20 62 65 65 6E 20 63 6F 6D 70 6C 65 74 65 the UltraSound has been complete 000179C0 64 2E 20 20 54 68 65 20 72 6F 75 74 69 6E 65 20 61 64 64 72 65 73 73 20 70 61 73 73 65 64 20 61 d. The routine address passed a 000179E0 73 20 61 20 70 61 72 61 6D 65 74 65 72 20 69 73 20 73 65 74 20 61 73 20 74 68 65 20 6E 65 77 20 s a parameter is set as the new 00017A00 68 61 6E 64 6C 65 72 2E 20 20 4E 6F 20 70 61 72 61 6D 65 74 65 72 73 20 61 72 65 20 70 61 73 73 handler. No parameters are pass 00017A20 65 64 20 74 6F 20 79 6F 75 72 20 6E 65 77 20 68 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 ed to your new handler.♪◙♪◙Retur 00017A40 6E 73 3A 09 46 6F 72 20 43 20 75 73 65 72 73 2C 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 ns:○For C users, this routine re 00017A60 74 75 72 6E 73 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 6F 6C 64 20 68 61 6E turns the address of the old han 00017A80 64 6C 65 72 2E 0D 0A 0D 0A 50 41 53 43 41 4C 0D 0A 45 78 61 6D 70 6C 65 3A 09 53 69 6E 63 65 20 dler.♪◙♪◙PASCAL♪◙Example:○Since 00017AA0 50 41 53 43 41 4C 20 63 61 6E 6E 6F 74 20 72 65 74 75 72 6E 20 66 75 6E 63 74 69 6F 6E 20 6F 72 PASCAL cannot return function or 00017AC0 20 70 72 6F 63 65 64 75 72 65 20 74 79 70 65 20 76 61 6C 75 65 73 20 66 72 6F 6D 20 66 75 6E 63 procedure type values from func 00017AE0 74 69 6F 6E 73 2C 20 74 68 65 20 65 71 75 69 76 61 6C 65 6E 74 20 72 6F 75 74 69 6E 65 20 77 61 tions, the equivalent routine wa 00017B00 73 20 6D 61 64 65 20 69 6E 74 6F 20 61 20 70 72 6F 63 65 64 75 72 65 20 77 68 69 63 68 20 74 6F s made into a procedure which to 00017B20 6F 6B 20 61 20 73 69 6E 67 6C 65 20 56 41 52 20 70 61 72 61 6D 65 74 65 72 2E 20 20 54 68 75 73 ok a single VAR parameter. Thus 00017B40 2C 20 77 68 65 6E 20 79 6F 75 20 61 72 65 20 67 6F 69 6E 67 20 74 6F 20 63 68 61 6E 67 65 20 74 , when you are going to change t 00017B60 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 61 20 63 61 6C 6C 62 61 63 6B 20 72 6F 75 74 69 6E 65 he address of a callback routine 00017B80 2C 20 79 6F 75 20 70 75 74 20 74 68 65 20 6E 65 77 20 61 64 64 72 65 73 73 20 69 6E 74 6F 20 61 , you put the new address into a 00017BA0 20 76 61 72 69 61 62 6C 65 2C 20 72 75 6E 20 69 74 20 74 68 72 6F 75 67 68 20 74 68 65 20 70 72 variable, run it through the pr 00017BC0 6F 63 65 64 75 72 65 2C 20 61 6E 64 20 77 68 61 74 20 77 69 6C 6C 20 74 68 65 6E 20 62 65 20 69 ocedure, and what will then be i 00017BE0 6E 20 74 68 65 20 76 61 72 69 61 62 6C 65 20 69 73 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 n the variable is the address of 00017C00 20 74 68 65 20 6F 6C 64 20 68 61 6E 64 6C 65 72 3A 0D 0A 0D 0A 09 09 09 56 41 52 0D 0A 09 09 09 the old handler:♪◙♪◙○○○VAR♪◙○○○ 00017C20 20 20 4F 6C 64 50 72 6F 63 20 3A 20 50 46 56 3B 0D 0A 0D 0A 09 09 09 50 72 6F 63 65 64 75 72 65 OldProc : PFV;♪◙♪◙○○○Procedure 00017C40 20 4D 79 4E 65 77 50 72 6F 63 3B 0D 0A 09 09 09 20 20 7B 20 54 68 65 20 6E 65 77 20 68 61 6E 64 MyNewProc;♪◙○○○ { The new hand 00017C60 6C 65 72 20 2D 20 64 65 66 69 6E 65 64 20 61 73 20 61 20 6E 6F 72 6D 61 6C 20 70 72 6F 63 65 64 ler - defined as a normal proced 00017C80 75 72 65 20 7D 0D 0A 09 09 09 20 20 62 65 67 69 6E 0D 0A 09 09 09 20 20 20 20 2E 2E 2E 0D 0A 09 ure }♪◙○○○ begin♪◙○○○ ...♪◙○ 00017CA0 09 09 20 20 65 6E 64 3B 0D 0A 0D 0A 09 09 09 2E 2E 2E 0D 0A 09 09 09 7B 20 53 65 74 20 4F 6C 64 ○○ end;♪◙♪◙○○○...♪◙○○○{ Set Old 00017CC0 50 72 6F 63 20 74 6F 20 61 64 64 72 65 73 73 20 6F 66 20 6E 65 77 20 68 61 6E 64 6C 65 72 20 7D Proc to address of new handler } 00017CE0 0D 0A 09 09 09 4F 6C 64 50 72 6F 63 20 3A 3D 20 4D 79 4E 65 77 50 72 6F 63 3B 20 0D 0A 09 09 09 ♪◙○○○OldProc := MyNewProc; ♪◙○○○ 00017D00 7B 20 4E 6F 77 20 73 65 74 20 74 68 65 20 6E 65 77 20 68 61 6E 64 6C 65 72 20 61 6E 64 20 72 65 { Now set the new handler and re 00017D20 74 75 72 6E 20 74 68 65 20 6F 6C 64 20 6F 6E 65 20 7D 0D 0A 09 09 09 55 6C 74 72 61 44 52 41 4D turn the old one }♪◙○○○UltraDRAM 00017D40 54 63 48 61 6E 64 6C 65 72 28 4F 6C 64 50 72 6F 63 29 3B 0D 0A 09 09 09 2E 2E 2E 0D 0A 0D 0A 09 TcHandler(OldProc);♪◙○○○...♪◙♪◙○ 00017D60 09 09 41 74 20 74 68 69 73 20 70 6F 69 6E 74 2C 20 4F 6C 64 50 72 6F 63 20 68 6F 6C 64 73 20 74 ○○At this point, OldProc holds t 00017D80 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 6F 6C 64 20 72 6F 75 74 69 6E 65 2E 20 20 he address of the old routine. 00017DA0 54 68 65 72 65 66 6F 72 65 2C 20 74 6F 20 63 68 61 69 6E 20 74 6F 20 74 68 65 20 6F 6C 64 20 72 Therefore, to chain to the old r 00017DC0 6F 75 74 69 6E 65 2C 20 79 6F 75 20 77 6F 75 6C 64 20 73 69 6D 70 6C 79 20 68 61 76 65 20 74 6F outine, you would simply have to 00017DE0 20 63 61 6C 6C 20 4F 6C 64 50 72 6F 63 20 66 72 6F 6D 20 79 6F 75 72 20 68 61 6E 64 6C 65 72 2E call OldProc from your handler. 00017E00 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 4D 49 44 49 58 6D 69 74 48 61 6E 64 6C 65 72 0D 0A 5F 5F 5F ♪◙♪◙♪◙♀UltraMIDIXmitHandler♪◙___ 00017E20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A ______________________________♪◙ 00017E40 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 64 65 66 69 6E 65 20 61 20 63 61 6C 6C 62 61 63 6B 20 ♪◙Purpose:○To define a callback 00017E60 66 6F 72 20 4D 49 44 49 20 74 72 61 6E 73 6D 69 74 20 69 6E 74 65 72 72 75 70 74 2E 0D 0A 0D 0A for MIDI transmit interrupt.♪◙♪◙ 00017E80 43 3A 09 09 09 50 46 56 20 2A 28 55 6C 74 72 61 4D 49 44 49 58 6D 69 74 48 61 6E 64 6C 65 72 28 C:○○○PFV *(UltraMIDIXmitHandler( 00017EA0 68 61 6E 64 6C 65 72 29 29 3B 0D 0A 09 09 09 50 46 56 20 2A 68 61 6E 64 6C 65 72 3B 0D 0A 0D 0A handler));♪◙○○○PFV *handler;♪◙♪◙ 00017EC0 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 4D 49 44 49 58 4D 69 74 48 PASCAL:○PROCEDURE UltraMIDIXMitH 00017EE0 61 6E 64 6C 65 72 28 56 41 52 20 48 61 6E 64 6C 65 72 20 3A 20 57 4F 52 44 5F 50 52 4F 43 29 3B andler(VAR Handler : WORD_PROC); 00017F00 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 70 72 6F 63 65 64 75 72 65 20 64 65 66 69 ♪◙♪◙Remarks:○This procedure defi 00017F20 6E 65 73 20 61 20 63 61 6C 6C 62 61 63 6B 20 66 6F 72 20 77 68 65 6E 65 76 65 72 20 61 20 4D 49 nes a callback for whenever a MI 00017F40 44 49 20 74 72 61 6E 73 6D 69 74 20 65 6D 70 74 79 20 69 6E 74 65 72 72 75 70 74 20 6F 63 63 75 DI transmit empty interrupt occu 00017F60 72 73 2E 20 20 54 68 69 73 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 73 65 6E 64 20 6F 75 rs. This can be used to send ou 00017F80 74 20 4D 49 44 49 20 64 61 74 61 20 75 6E 64 65 72 20 69 6E 74 65 72 72 75 70 74 20 63 6F 6E 74 t MIDI data under interrupt cont 00017FA0 72 6F 6C 2E 20 20 54 68 65 20 72 6F 75 74 69 6E 65 20 61 64 64 72 65 73 73 20 70 61 73 73 65 64 rol. The routine address passed 00017FC0 20 61 73 20 61 20 70 61 72 61 6D 65 74 65 72 20 69 73 20 73 65 74 20 61 73 20 74 68 65 20 6E 65 as a parameter is set as the ne 00017FE0 77 20 68 61 6E 64 6C 65 72 2E 20 20 54 68 65 20 4D 49 44 49 20 53 74 61 74 75 73 20 42 79 74 65 w handler. The MIDI Status Byte 00018000 20 69 73 20 70 61 73 73 65 64 20 74 6F 20 74 68 65 20 6E 65 77 20 68 61 6E 64 6C 65 72 20 64 65 is passed to the new handler de 00018020 66 69 6E 65 64 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 46 6F 72 20 43 20 75 73 65 72 73 2C 20 fined.♪◙♪◙Returns:○For C users, 00018040 74 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73 20 74 68 65 20 61 64 64 72 65 73 73 this routine returns the address 00018060 20 6F 66 20 74 68 65 20 6F 6C 64 20 68 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 50 41 53 43 41 4C 0D 0A of the old handler.♪◙♪◙PASCAL♪◙ 00018080 45 78 61 6D 70 6C 65 3A 09 53 65 65 20 74 68 65 20 65 78 61 6D 70 6C 65 20 66 6F 72 20 55 6C 74 Example:○See the example for Ult 000180A0 72 61 44 52 41 4D 54 63 48 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C raDRAMTcHandler.♪◙♪◙See also:○Ul 000180C0 74 72 61 4D 49 44 49 52 65 63 76 48 61 6E 64 6C 65 72 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 4D traMIDIRecvHandler♪◙♪◙♪◙♪◙UltraM 000180E0 49 44 49 52 65 63 76 48 61 6E 64 6C 65 72 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F IDIRecvHandler♪◙________________ 00018100 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F _________________♪◙♪◙Purpose:○To 00018120 20 64 65 66 69 6E 65 20 61 20 63 61 6C 6C 62 61 63 6B 20 66 6F 72 20 61 20 4D 49 44 49 20 72 65 define a callback for a MIDI re 00018140 63 65 69 76 65 20 69 6E 74 65 72 72 75 70 74 2E 0D 0A 0D 0A 43 3A 09 09 09 50 46 56 20 2A 28 55 ceive interrupt.♪◙♪◙C:○○○PFV *(U 00018160 6C 74 72 61 4D 49 44 49 52 65 63 76 48 61 6E 64 6C 65 72 28 68 61 6E 64 6C 65 72 29 29 3B 0D 0A ltraMIDIRecvHandler(handler));♪◙ 00018180 09 09 09 50 46 56 20 2A 68 61 6E 64 6C 65 72 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 ○○○PFV *handler;♪◙♪◙PASCAL:○PROC 000181A0 45 44 55 52 45 20 55 6C 74 72 61 4D 49 44 49 52 65 63 76 48 61 6E 64 6C 65 72 28 56 41 52 20 48 EDURE UltraMIDIRecvHandler(VAR H 000181C0 61 6E 64 6C 65 72 20 3A 20 54 57 4F 57 4F 52 44 5F 50 52 4F 43 29 3B 0D 0A 0D 0A 52 65 6D 61 72 andler : TWOWORD_PROC);♪◙♪◙Remar 000181E0 6B 73 3A 09 54 68 69 73 20 70 72 6F 63 65 64 75 72 65 20 64 65 66 69 6E 65 73 20 61 20 63 61 6C ks:○This procedure defines a cal 00018200 6C 62 61 63 6B 20 66 6F 72 20 77 68 65 6E 65 76 65 72 20 61 20 62 79 74 65 20 69 73 20 72 65 63 lback for whenever a byte is rec 00018220 65 69 76 65 64 20 69 6E 20 74 68 65 20 4D 49 44 49 20 69 6E 70 75 74 20 70 6F 72 74 2E 20 20 54 eived in the MIDI input port. T 00018240 68 69 73 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 67 65 74 20 64 61 74 61 20 66 72 6F 6D his can be used to get data from 00018260 20 74 68 65 20 4D 49 44 49 20 70 6F 72 74 20 75 6E 64 65 72 20 69 6E 74 65 72 72 75 70 74 20 63 the MIDI port under interrupt c 00018280 6F 6E 74 6F 6C 2E 20 20 54 68 65 20 72 6F 75 74 69 6E 65 20 61 64 64 72 65 73 73 20 70 61 73 73 ontol. The routine address pass 000182A0 65 64 20 61 73 20 61 20 70 61 72 61 6D 65 74 65 72 20 69 73 20 73 65 74 20 61 73 20 74 68 65 20 ed as a parameter is set as the 000182C0 6E 65 77 20 68 61 6E 64 6C 65 72 2E 20 20 54 68 65 20 4D 49 44 49 20 70 6F 72 74 20 73 74 61 74 new handler. The MIDI port stat 000182E0 75 73 20 61 6E 64 20 4D 49 44 49 20 64 61 74 61 20 61 72 65 20 70 61 73 73 65 64 20 74 6F 20 79 us and MIDI data are passed to y 00018300 6F 75 72 20 68 61 6E 64 6C 65 72 2E 20 20 54 68 65 20 73 74 61 74 75 73 20 62 69 74 73 20 61 72 our handler. The status bits ar 00018320 65 20 64 65 66 69 6E 65 64 20 69 6E 20 41 70 70 65 6E 64 69 78 20 44 2E 0D 0A 0D 0A 52 65 74 75 e defined in Appendix D.♪◙♪◙Retu 00018340 72 6E 73 3A 09 46 6F 72 20 43 20 75 73 65 72 73 2C 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 72 rns:○For C users, this routine r 00018360 65 74 75 72 6E 73 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 6F 6C 64 20 68 61 eturns the address of the old ha 00018380 6E 64 6C 65 72 2E 0D 0A 0D 0A 50 41 53 43 41 4C 0D 0A 45 78 61 6D 70 6C 65 3A 09 53 65 65 20 74 ndler.♪◙♪◙PASCAL♪◙Example:○See t 000183A0 68 65 20 65 78 61 6D 70 6C 65 20 66 6F 72 20 55 6C 74 72 61 44 52 41 4D 54 63 48 61 6E 64 6C 65 he example for UltraDRAMTcHandle 000183C0 72 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 49 44 49 58 6D 69 74 48 61 6E r.♪◙♪◙See also:○UltraMIDIXmitHan 000183E0 64 6C 65 72 0D 0A 0D 0A 0C 55 6C 74 72 61 54 69 6D 65 72 31 48 61 6E 64 6C 65 72 0D 0A 5F 5F 5F dler♪◙♪◙♀UltraTimer1Handler♪◙___ 00018400 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A ______________________________♪◙ 00018420 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 64 65 66 69 6E 65 20 61 20 63 61 6C 6C 62 61 63 6B 20 ♪◙Purpose:○To define a callback 00018440 66 72 6F 6D 20 54 69 6D 65 72 20 23 31 2E 0D 0A 0D 0A 43 3A 09 09 09 50 46 56 20 2A 28 55 6C 74 from Timer #1.♪◙♪◙C:○○○PFV *(Ult 00018460 72 61 54 69 6D 65 72 31 48 61 6E 64 6C 65 72 28 68 61 6E 64 6C 65 72 29 29 3B 0D 0A 09 09 09 50 raTimer1Handler(handler));♪◙○○○P 00018480 46 56 20 2A 68 61 6E 64 6C 65 72 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 FV *handler;♪◙♪◙PASCAL:○PROCEDUR 000184A0 45 20 55 6C 74 72 61 54 69 6D 65 72 31 48 61 6E 64 6C 65 72 28 56 41 52 20 48 61 6E 64 6C 65 72 E UltraTimer1Handler(VAR Handler 000184C0 20 3A 20 50 46 56 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 70 72 6F 63 65 64 : PFV);♪◙♪◙Remarks:○This proced 000184E0 75 72 65 20 64 65 66 69 6E 65 73 20 61 20 63 61 6C 6C 62 61 63 6B 20 66 6F 72 20 77 68 65 6E 65 ure defines a callback for whene 00018500 76 65 72 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 27 73 20 54 69 6D 65 72 20 31 20 27 54 69 ver the UltraSound's Timer 1 'Ti 00018520 63 6B 73 27 2E 20 20 54 68 65 20 72 6F 75 74 69 6E 65 20 61 64 64 72 65 73 73 20 70 61 73 73 65 cks'. The routine address passe 00018540 64 20 61 73 20 61 20 70 61 72 61 6D 65 74 65 72 20 69 73 20 73 65 74 20 61 73 20 74 68 65 20 6E d as a parameter is set as the n 00018560 65 77 20 68 61 6E 64 6C 65 72 2E 20 20 4E 6F 20 70 61 72 61 6D 65 74 65 72 73 20 61 72 65 20 70 ew handler. No parameters are p 00018580 61 73 73 65 64 20 74 6F 20 74 68 69 73 20 68 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 6E assed to this handler.♪◙♪◙Return 000185A0 73 3A 09 46 6F 72 20 43 20 75 73 65 72 73 2C 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 s:○For C users, this routine ret 000185C0 75 72 6E 73 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 6F 6C 64 20 68 61 6E 64 urns the address of the old hand 000185E0 6C 65 72 2E 0D 0A 0D 0A 50 41 53 43 41 4C 0D 0A 45 78 61 6D 70 6C 65 3A 09 53 65 65 20 74 68 65 ler.♪◙♪◙PASCAL♪◙Example:○See the 00018600 20 65 78 61 6D 70 6C 65 20 66 6F 72 20 55 6C 74 72 61 44 52 41 4D 54 63 48 61 6E 64 6C 65 72 2E example for UltraDRAMTcHandler. 00018620 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 54 69 6D 65 72 32 48 61 6E 64 6C 65 72 ♪◙♪◙See also:○UltraTimer2Handler 00018640 2C 20 55 6C 74 72 61 53 74 61 72 74 54 69 6D 65 72 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 54 69 , UltraStartTimer♪◙♪◙♪◙♪◙UltraTi 00018660 6D 65 72 32 48 61 6E 64 6C 65 72 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F mer2Handler♪◙___________________ 00018680 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 64 65 ______________♪◙♪◙Purpose:○To de 000186A0 66 69 6E 65 20 61 20 63 61 6C 6C 62 61 63 6B 20 66 6F 72 20 54 69 6D 65 72 20 23 32 2E 0D 0A 0D fine a callback for Timer #2.♪◙♪ 000186C0 0A 43 3A 09 09 09 50 46 56 20 2A 28 55 6C 74 72 61 54 69 6D 65 72 32 48 61 6E 64 6C 65 72 28 68 ◙C:○○○PFV *(UltraTimer2Handler(h 000186E0 61 6E 64 6C 65 72 29 29 3B 0D 0A 09 09 09 50 46 56 20 2A 68 61 6E 64 6C 65 72 3B 0D 0A 0D 0A 50 andler));♪◙○○○PFV *handler;♪◙♪◙P 00018700 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 54 69 6D 65 72 32 48 61 6E 64 ASCAL:○PROCEDURE UltraTimer2Hand 00018720 6C 65 72 28 56 41 52 20 48 61 6E 64 6C 65 72 20 3A 20 50 46 56 29 3B 0D 0A 0D 0A 52 65 6D 61 72 ler(VAR Handler : PFV);♪◙♪◙Remar 00018740 6B 73 3A 09 54 68 69 73 20 70 72 6F 63 65 64 75 72 65 20 64 65 66 69 6E 65 73 20 61 20 63 61 6C ks:○This procedure defines a cal 00018760 6C 62 61 63 6B 20 66 6F 72 20 77 68 65 6E 65 76 65 72 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E lback for whenever the UltraSoun 00018780 64 27 73 20 54 69 6D 65 72 20 32 20 27 54 69 63 6B 73 27 2E 20 20 54 68 65 20 72 6F 75 74 69 6E d's Timer 2 'Ticks'. The routin 000187A0 65 20 61 64 64 72 65 73 73 20 70 61 73 73 65 64 20 61 73 20 61 20 70 61 72 61 6D 65 74 65 72 20 e address passed as a parameter 000187C0 69 73 20 73 65 74 20 61 73 20 74 68 65 20 6E 65 77 20 68 61 6E 64 6C 65 72 2E 20 20 4E 6F 20 70 is set as the new handler. No p 000187E0 61 72 61 6D 65 74 65 72 73 20 61 72 65 20 70 61 73 73 65 64 20 74 6F 20 74 68 69 73 20 68 61 6E arameters are passed to this han 00018800 64 6C 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 46 6F 72 20 43 20 75 73 65 72 73 2C 20 74 dler.♪◙♪◙Returns:○For C users, t 00018820 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73 20 74 68 65 20 61 64 64 72 65 73 73 20 his routine returns the address 00018840 6F 66 20 74 68 65 20 6F 6C 64 20 68 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 50 41 53 43 41 4C 0D 0A 45 of the old handler.♪◙♪◙PASCAL♪◙E 00018860 78 61 6D 70 6C 65 3A 09 53 65 65 20 74 68 65 20 65 78 61 6D 70 6C 65 20 66 6F 72 20 55 6C 74 72 xample:○See the example for Ultr 00018880 61 44 52 41 4D 54 63 48 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 aDRAMTcHandler.♪◙♪◙See also:○Ult 000188A0 72 61 54 69 6D 65 72 31 48 61 6E 64 6C 65 72 2C 20 55 6C 74 72 61 53 74 61 72 74 54 69 6D 65 72 raTimer1Handler, UltraStartTimer 000188C0 0D 0A 0D 0A 0C 55 6C 74 72 61 57 61 76 65 48 61 6E 64 6C 65 72 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F ♪◙♪◙♀UltraWaveHandler♪◙_________ 000188E0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 ________________________♪◙♪◙Purp 00018900 6F 73 65 3A 09 54 6F 20 64 65 66 69 6E 65 20 61 20 63 61 6C 6C 62 61 63 6B 20 66 6F 72 20 61 6E ose:○To define a callback for an 00018920 20 65 6E 64 2D 6F 66 2D 77 61 76 65 20 69 6E 74 65 72 72 75 70 74 2E 0D 0A 0D 0A 43 3A 09 09 09 end-of-wave interrupt.♪◙♪◙C:○○○ 00018940 50 46 56 20 2A 28 55 6C 74 72 61 57 61 76 65 48 61 6E 64 6C 65 72 28 68 61 6E 64 6C 65 72 29 29 PFV *(UltraWaveHandler(handler)) 00018960 3B 0D 0A 09 09 09 50 46 56 20 2A 68 61 6E 64 6C 65 72 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 ;♪◙○○○PFV *handler;♪◙♪◙PASCAL:○P 00018980 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 57 61 76 65 48 61 6E 64 6C 65 72 28 56 41 52 20 48 61 ROCEDURE UltraWaveHandler(VAR Ha 000189A0 6E 64 6C 65 72 20 3A 20 49 4E 54 5F 50 52 4F 43 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 ndler : INT_PROC);♪◙♪◙Remarks:○T 000189C0 68 69 73 20 70 72 6F 63 65 64 75 72 65 20 64 65 66 69 6E 65 73 20 61 20 63 61 6C 6C 62 61 63 6B his procedure defines a callback 000189E0 20 66 6F 72 20 77 68 65 6E 65 76 65 72 20 61 20 76 6F 69 63 65 20 67 65 6E 65 72 61 74 65 73 20 for whenever a voice generates 00018A00 61 20 77 61 76 65 74 61 62 6C 65 20 69 6E 74 65 72 72 75 70 74 2E 20 20 54 68 69 73 20 68 61 70 a wavetable interrupt. This hap 00018A20 70 65 6E 73 20 77 68 65 6E 20 61 20 76 6F 69 63 65 20 68 69 74 73 20 69 74 27 73 20 65 6E 64 20 pens when a voice hits it's end 00018A40 61 6E 64 20 69 6E 74 65 72 72 75 70 74 73 20 61 72 65 20 65 6E 61 62 6C 65 64 2E 20 20 49 74 20 and interrupts are enabled. It 00018A60 77 69 6C 6C 20 68 61 70 70 65 6E 20 65 76 65 6E 20 69 66 20 6C 6F 6F 70 69 6E 67 20 69 73 20 6F will happen even if looping is o 00018A80 6E 20 28 69 2E 65 2E 20 20 74 68 65 20 76 6F 69 63 65 20 6B 65 65 70 73 20 70 6C 61 79 69 6E 67 n (i.e. the voice keeps playing 00018AA0 29 2E 20 20 54 68 65 20 72 6F 75 74 69 6E 65 20 61 64 64 72 65 73 73 20 70 61 73 73 65 64 20 61 ). The routine address passed a 00018AC0 73 20 61 20 70 61 72 61 6D 65 74 65 72 20 69 73 20 73 65 74 20 61 73 20 74 68 65 20 6E 65 77 20 s a parameter is set as the new 00018AE0 68 61 6E 64 6C 65 72 2E 0D 0A 09 09 09 4E 6F 72 6D 61 6C 6C 79 2C 20 54 68 69 73 20 70 72 6F 63 handler.♪◙○○○Normally, This proc 00018B00 65 64 75 72 65 20 69 73 20 75 73 65 64 20 74 6F 20 73 69 67 6E 69 66 79 20 74 68 61 74 20 61 20 edure is used to signify that a 00018B20 76 6F 69 63 65 20 69 73 20 64 6F 6E 65 20 70 6C 61 79 69 6E 67 2E 20 20 54 68 69 73 20 68 61 6E voice is done playing. This han 00018B40 64 6C 65 72 20 63 61 6E 20 62 65 20 75 73 65 66 75 6C 20 66 6F 72 20 73 74 61 72 74 69 6E 67 20 dler can be useful for starting 00018B60 61 6E 6F 74 68 65 72 20 76 6F 69 63 65 20 6F 72 20 63 6F 75 6E 74 69 6E 67 20 74 68 65 20 23 20 another voice or counting the # 00018B80 6F 66 20 74 69 6D 65 73 20 74 68 61 74 20 61 20 76 6F 69 63 65 20 67 6F 65 73 20 74 68 72 6F 75 of times that a voice goes throu 00018BA0 67 68 20 61 20 6C 6F 6F 70 2E 20 20 54 68 65 20 76 6F 69 63 65 20 23 20 74 68 61 74 20 67 65 6E gh a loop. The voice # that gen 00018BC0 65 72 61 74 65 64 20 74 68 65 20 69 6E 74 65 72 72 75 70 74 20 69 73 20 70 61 73 73 65 64 20 62 erated the interrupt is passed b 00018BE0 61 63 6B 20 74 6F 20 79 6F 75 72 20 68 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A ack to your handler.♪◙♪◙Returns: 00018C00 09 46 6F 72 20 43 20 75 73 65 72 73 2C 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 75 72 ○For C users, this routine retur 00018C20 6E 73 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 6F 6C 64 20 68 61 6E 64 6C 65 ns the address of the old handle 00018C40 72 2E 0D 0A 0D 0A 50 41 53 43 41 4C 0D 0A 45 78 61 6D 70 6C 65 3A 09 53 65 65 20 74 68 65 20 65 r.♪◙♪◙PASCAL♪◙Example:○See the e 00018C60 78 61 6D 70 6C 65 20 66 6F 72 20 55 6C 74 72 61 44 52 41 4D 54 63 48 61 6E 64 6C 65 72 2E 0D 0A xample for UltraDRAMTcHandler.♪◙ 00018C80 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 56 6F 6C 75 6D 65 48 61 6E 64 6C 65 72 0D 0A 5F 5F 5F 5F 5F 5F ♪◙♪◙♪◙UltraVolumeHandler♪◙______ 00018CA0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 ___________________________♪◙♪◙P 00018CC0 75 72 70 6F 73 65 3A 09 54 6F 20 64 65 66 69 6E 65 20 61 20 63 61 6C 6C 62 61 63 6B 20 66 6F 72 urpose:○To define a callback for 00018CE0 20 76 6F 6C 75 6D 65 20 72 61 6D 70 20 63 6F 6D 70 6C 65 74 65 20 69 6E 74 65 72 72 75 70 74 2E volume ramp complete interrupt. 00018D00 0D 0A 0D 0A 43 3A 09 09 09 50 46 56 20 2A 28 55 6C 74 72 61 56 6F 6C 75 6D 65 48 61 6E 64 6C 65 ♪◙♪◙C:○○○PFV *(UltraVolumeHandle 00018D20 72 28 68 61 6E 64 6C 65 72 29 29 3B 0D 0A 09 09 09 50 46 56 20 2A 68 61 6E 64 6C 65 72 3B 0D 0A r(handler));♪◙○○○PFV *handler;♪◙ 00018D40 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 56 6F 6C 75 6D 65 48 ♪◙PASCAL:○PROCEDURE UltraVolumeH 00018D60 61 6E 64 6C 65 72 28 56 41 52 20 48 61 6E 64 6C 65 72 20 3A 20 49 4E 54 5F 50 52 4F 43 29 3B 0D andler(VAR Handler : INT_PROC);♪ 00018D80 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 70 72 6F 63 65 64 75 72 65 20 64 65 66 69 6E ◙♪◙Remarks:○This procedure defin 00018DA0 65 73 20 61 20 63 61 6C 6C 62 61 63 6B 20 66 6F 72 20 77 68 65 6E 65 76 65 72 20 61 20 76 6F 6C es a callback for whenever a vol 00018DC0 75 6D 65 20 72 61 6D 70 20 65 6E 64 73 2E 20 20 54 68 65 20 72 6F 75 74 69 6E 65 20 61 64 64 72 ume ramp ends. The routine addr 00018DE0 65 73 73 20 70 61 73 73 65 64 20 61 73 20 61 20 70 61 72 61 6D 65 74 65 72 20 69 73 20 73 65 74 ess passed as a parameter is set 00018E00 20 61 73 20 74 68 65 20 6E 65 77 20 68 61 6E 64 6C 65 72 2E 20 20 54 68 69 73 20 72 6F 75 74 69 as the new handler. This routi 00018E20 6E 65 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 67 65 6E 65 72 61 74 65 20 61 20 76 6F 6C ne can be used to generate a vol 00018E40 75 6D 65 20 65 6E 76 65 6C 6F 70 65 20 28 61 74 74 61 63 6B 2C 20 64 65 63 61 79 2C 20 73 75 73 ume envelope (attack, decay, sus 00018E60 74 61 69 6E 2C 20 72 65 6C 65 61 73 65 29 2E 20 20 54 68 69 73 20 69 73 20 64 6F 6E 65 20 62 79 tain, release). This is done by 00018E80 20 63 68 61 6E 67 69 6E 67 20 74 6F 20 74 68 65 20 61 70 70 72 6F 70 72 69 61 74 65 20 76 6F 6C changing to the appropriate vol 00018EA0 75 6D 65 20 72 61 6D 70 73 20 69 6E 20 74 68 65 20 68 61 6E 64 6C 65 72 20 74 6F 20 68 61 6E 64 ume ramps in the handler to hand 00018EC0 6C 65 20 74 68 65 20 6E 65 78 74 20 70 61 72 74 20 6F 66 20 74 68 65 20 65 6E 76 65 6C 6F 70 65 le the next part of the envelope 00018EE0 2E 20 20 54 68 65 20 76 6F 69 63 65 20 23 20 63 61 75 73 69 6E 67 20 74 68 65 20 69 6E 74 65 72 . The voice # causing the inter 00018F00 72 75 70 74 20 77 69 6C 6C 20 62 65 20 70 61 73 73 65 64 20 62 61 63 6B 20 74 6F 20 79 6F 75 72 rupt will be passed back to your 00018F20 20 68 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 46 6F 72 20 43 20 75 73 65 72 handler.♪◙♪◙Returns:○For C user 00018F40 73 2C 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73 20 74 68 65 20 61 64 64 72 s, this routine returns the addr 00018F60 65 73 73 20 6F 66 20 74 68 65 20 6F 6C 64 20 68 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 50 41 53 43 41 ess of the old handler.♪◙♪◙PASCA 00018F80 4C 0D 0A 45 78 61 6D 70 6C 65 3A 09 53 65 65 20 74 68 65 20 65 78 61 6D 70 6C 65 20 66 6F 72 20 L♪◙Example:○See the example for 00018FA0 55 6C 74 72 61 44 52 41 4D 54 63 48 61 6E 64 6C 65 72 2E 0D 0A 0C 55 6C 74 72 61 52 65 63 6F 72 UltraDRAMTcHandler.♪◙♀UltraRecor 00018FC0 64 48 61 6E 64 6C 65 72 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F dHandler♪◙______________________ 00018FE0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 64 65 66 69 6E ___________♪◙♪◙Purpose:○To defin 00019000 65 20 61 20 63 61 6C 6C 62 61 63 6B 20 66 6F 72 20 61 20 44 4D 41 20 72 65 63 6F 72 64 20 63 6F e a callback for a DMA record co 00019020 6D 70 6C 65 74 65 20 69 6E 74 65 72 72 75 70 74 2E 0D 0A 0D 0A 43 3A 09 09 09 50 46 56 20 2A 28 mplete interrupt.♪◙♪◙C:○○○PFV *( 00019040 55 6C 74 72 61 55 6C 74 72 61 52 65 63 6F 72 64 48 61 6E 64 6C 65 72 28 68 61 6E 64 6C 65 72 29 UltraUltraRecordHandler(handler) 00019060 29 3B 0D 0A 09 09 09 50 46 56 20 2A 68 61 6E 64 6C 65 72 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 );♪◙○○○PFV *handler;♪◙♪◙PASCAL:○ 00019080 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 52 65 63 6F 72 64 48 61 6E 64 6C 65 72 28 56 41 52 PROCEDURE UltraRecordHandler(VAR 000190A0 20 48 61 6E 64 6C 65 72 20 3A 20 50 46 56 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 Handler : PFV);♪◙♪◙Remarks:○Thi 000190C0 73 20 72 6F 75 74 69 6E 65 20 69 73 20 63 61 6C 6C 65 64 20 77 68 65 6E 20 61 20 62 75 66 66 65 s routine is called when a buffe 000190E0 72 20 74 68 61 74 20 77 61 73 20 62 65 69 6E 67 20 72 65 63 6F 72 64 65 64 20 69 6E 74 6F 20 69 r that was being recorded into i 00019100 73 20 66 75 6C 6C 2E 20 20 54 68 65 20 72 6F 75 74 69 6E 65 20 61 64 64 72 65 73 73 20 70 61 73 s full. The routine address pas 00019120 73 65 64 20 61 73 20 61 20 70 61 72 61 6D 65 74 65 72 20 69 73 20 73 65 74 20 61 73 20 74 68 65 sed as a parameter is set as the 00019140 20 6E 65 77 20 68 61 6E 64 6C 65 72 2E 20 20 4E 6F 72 6D 61 6C 6C 79 2C 20 74 68 69 73 20 70 72 new handler. Normally, this pr 00019160 6F 63 65 64 75 72 65 20 77 6F 75 6C 64 20 62 65 20 75 73 65 64 20 74 6F 20 6C 65 74 20 74 68 65 ocedure would be used to let the 00019180 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 73 74 61 72 74 20 75 70 20 61 6E 6F 74 68 65 72 20 72 65 application start up another re 000191A0 63 6F 72 64 2E 20 20 41 20 64 6F 75 62 6C 65 20 62 75 66 66 65 72 69 6E 67 20 73 63 68 65 6D 65 cord. A double buffering scheme 000191C0 20 63 6F 75 6C 64 20 62 65 20 75 73 65 64 20 74 6F 20 72 65 63 6F 72 64 20 64 61 74 61 20 63 6F could be used to record data co 000191E0 6E 74 69 6E 75 6F 75 73 6C 79 2E 20 20 4E 6F 20 70 61 72 61 6D 65 74 65 72 73 20 61 72 65 20 70 ntinuously. No parameters are p 00019200 61 73 73 65 64 20 74 6F 20 74 68 69 73 20 68 61 6E 64 6C 65 72 2E 0D 0A 09 09 09 41 73 20 6C 6F assed to this handler.♪◙○○○As lo 00019220 6E 67 20 61 73 20 74 68 65 20 44 4D 41 20 63 68 61 6E 6E 65 6C 73 20 66 6F 72 20 72 65 63 6F 72 ng as the DMA channels for recor 00019240 64 69 6E 67 20 61 6E 64 20 70 6C 61 79 62 61 63 6B 20 61 72 65 20 64 69 66 66 65 72 65 6E 74 2C ding and playback are different, 00019260 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 69 73 20 63 61 70 61 62 6C 65 20 6F 66 20 73 69 the UltraSound is capable of si 00019280 6D 75 6C 74 61 6E 65 6F 75 73 6C 79 20 72 65 63 6F 72 64 69 6E 67 20 61 6E 64 20 70 6C 61 79 62 multaneously recording and playb 000192A0 61 63 6B 2E 20 20 41 74 20 68 69 67 68 20 64 61 74 61 20 72 61 74 65 73 20 79 6F 75 72 20 61 70 ack. At high data rates your ap 000192C0 70 6C 69 63 61 74 69 6F 6E 20 6D 61 79 20 68 61 76 65 20 61 20 70 72 6F 62 6C 65 6D 20 77 69 74 plication may have a problem wit 000192E0 68 20 74 68 72 6F 75 67 68 70 75 74 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 46 6F 72 20 43 20 h throughput.♪◙♪◙Returns:○For C 00019300 75 73 65 72 73 2C 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73 20 74 68 65 20 users, this routine returns the 00019320 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 6F 6C 64 20 68 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 50 address of the old handler.♪◙♪◙P 00019340 41 53 43 41 4C 0D 0A 45 78 61 6D 70 6C 65 3A 09 53 65 65 20 74 68 65 20 65 78 61 6D 70 6C 65 20 ASCAL♪◙Example:○See the example 00019360 66 6F 72 20 55 6C 74 72 61 44 52 41 4D 54 63 48 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 0D 0A 0D 0A 55 for UltraDRAMTcHandler.♪◙♪◙♪◙♪◙U 00019380 6C 74 72 61 41 75 78 48 61 6E 64 6C 65 72 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ltraAuxHandler♪◙________________ 000193A0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F _________________♪◙♪◙Purpose:○To 000193C0 20 64 65 66 69 6E 65 20 61 20 63 61 6C 6C 62 61 63 6B 20 66 6F 72 20 61 6E 20 61 75 78 69 6C 69 define a callback for an auxili 000193E0 61 72 79 20 69 6E 74 65 72 72 75 70 74 2E 0D 0A 0D 0A 43 3A 09 09 09 50 46 56 20 2A 28 55 6C 74 ary interrupt.♪◙♪◙C:○○○PFV *(Ult 00019400 72 61 55 6C 74 72 61 41 75 78 48 61 6E 64 6C 65 72 28 68 61 6E 64 6C 65 72 29 29 3B 0D 0A 09 09 raUltraAuxHandler(handler));♪◙○○ 00019420 09 50 46 56 20 2A 68 61 6E 64 6C 65 72 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 ○PFV *handler;♪◙♪◙PASCAL:○PROCED 00019440 55 52 45 20 55 6C 74 72 61 41 75 78 48 61 6E 64 6C 65 72 28 56 41 52 20 48 61 6E 64 6C 65 72 20 URE UltraAuxHandler(VAR Handler 00019460 3A 20 50 46 56 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 68 61 6E 64 6C 65 72 : PFV);♪◙♪◙Remarks:○This handler 00019480 20 77 69 6C 6C 20 62 65 20 63 61 6C 6C 65 64 20 61 74 20 74 68 65 20 65 6E 64 20 6F 66 20 41 4C will be called at the end of AL 000194A0 4C 20 69 6E 74 65 72 72 75 70 74 73 20 74 68 61 74 20 68 61 70 70 65 6E 20 6F 6E 20 74 68 65 20 L interrupts that happen on the 000194C0 55 6C 74 72 61 53 6F 75 6E 64 2E 20 20 49 74 73 20 70 72 69 6D 61 72 79 20 70 75 72 70 6F 73 65 UltraSound. Its primary purpose 000194E0 20 69 73 20 66 6F 72 20 75 73 65 20 77 69 74 68 20 74 68 65 20 6E 65 77 20 55 6C 74 72 61 4D 61 is for use with the new UltraMa 00019500 78 20 63 61 72 64 20 73 69 6E 63 65 20 69 74 73 20 73 68 61 72 65 73 20 69 74 73 20 49 52 51 20 x card since its shares its IRQ 00019520 77 69 74 68 20 74 68 65 20 47 46 31 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 46 6F 72 20 43 20 with the GF1.♪◙♪◙Returns:○For C 00019540 75 73 65 72 73 2C 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73 20 74 68 65 20 users, this routine returns the 00019560 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 6F 6C 64 20 68 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 50 address of the old handler.♪◙♪◙P 00019580 41 53 43 41 4C 0D 0A 45 78 61 6D 70 6C 65 3A 09 53 65 65 20 74 68 65 20 65 78 61 6D 70 6C 65 20 ASCAL♪◙Example:○See the example 000195A0 66 6F 72 20 55 6C 74 72 61 44 52 41 4D 54 63 48 61 6E 64 6C 65 72 2E 0D 0A 0D 0A 0C 55 6C 74 72 for UltraDRAMTcHandler.♪◙♪◙♀Ultr 000195C0 61 4D 61 78 41 6C 6C 6F 63 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F aMaxAlloc♪◙_____________________ 000195E0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 66 69 6E 64 ____________♪◙♪◙Purpose:○To find 00019600 20 74 68 65 20 73 69 7A 65 20 6F 66 20 74 68 65 20 6C 61 72 67 65 73 74 20 61 6C 6C 6F 63 61 74 the size of the largest allocat 00019620 61 62 6C 65 20 62 6C 6F 63 6B 20 6F 66 20 55 6C 74 72 61 53 6F 75 6E 64 20 44 52 41 4D 2E 0D 0A able block of UltraSound DRAM.♪◙ 00019640 0D 0A 43 3A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 55 6C 74 72 61 4D 61 78 41 6C 6C ♪◙C:○○○unsigned long UltraMaxAll 00019660 6F 63 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C oc(void);♪◙♪◙PASCAL:○FUNCTION Ul 00019680 74 72 61 4D 61 78 41 6C 6C 6F 63 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 0D 0A 52 65 6D 61 72 6B traMaxAlloc : LONGINT;♪◙♪◙Remark 000196A0 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 72 65 74 75 72 6E 20 74 68 65 20 s:○This routine will return the 000196C0 6C 61 72 67 65 73 74 20 62 6C 6F 63 6B 20 6F 66 20 44 52 41 4D 20 28 69 6E 20 62 79 74 65 73 29 largest block of DRAM (in bytes) 000196E0 20 74 68 61 74 20 63 61 6E 20 73 74 69 6C 6C 20 62 65 20 61 6C 6C 6F 63 61 74 65 64 2E 20 20 54 that can still be allocated. T 00019700 68 69 73 20 63 61 6E 20 62 65 20 75 73 65 66 75 6C 20 66 6F 72 20 64 65 74 65 72 6D 69 6E 69 6E his can be useful for determinin 00019720 67 20 77 68 65 74 68 65 72 20 6F 72 20 6E 6F 74 20 61 20 70 61 74 63 68 20 6F 72 20 73 61 6D 70 g whether or not a patch or samp 00019740 6C 65 20 63 61 6E 20 62 65 20 6C 6F 61 64 65 64 2E 20 20 54 68 65 20 6D 61 78 69 6D 75 6D 20 73 le can be loaded. The maximum s 00019760 69 7A 65 20 6F 66 20 61 20 62 6C 6F 63 6B 20 69 73 20 32 35 36 4B 2E 0D 0A 0D 0A 52 65 74 75 72 ize of a block is 256K.♪◙♪◙Retur 00019780 6E 73 3A 09 23 20 6F 66 20 62 79 74 65 73 20 69 6E 20 6C 61 72 67 65 73 74 20 61 76 61 69 6C 61 ns:○# of bytes in largest availa 000197A0 62 6C 65 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 65 6D ble block.♪◙♪◙See also:○UltraMem 000197C0 41 6C 6C 6F 63 2C 20 55 6C 74 72 61 4D 65 6D 46 72 65 65 2C 20 0D 0A 09 09 09 66 6F 72 20 43 20 Alloc, UltraMemFree, ♪◙○○○for C 000197E0 75 73 65 72 73 20 55 6C 74 72 61 4D 65 6D 49 6E 69 74 0D 0A 09 09 09 61 6E 64 20 66 6F 72 20 50 users UltraMemInit♪◙○○○and for P 00019800 41 53 43 41 4C 20 75 73 65 72 73 20 55 6C 74 72 61 4D 65 6D 41 76 61 69 6C 20 61 6E 64 20 55 6C ASCAL users UltraMemAvail and Ul 00019820 74 72 61 4D 61 78 41 76 61 69 6C 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 4D 61 78 41 76 61 traMaxAvail♪◙♪◙♪◙♪◙♪◙UltraMaxAva 00019840 69 6C 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F il♪◙____________________________ 00019860 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 66 69 6E 64 20 74 68 65 20 73 69 _____♪◙♪◙Purpose:○To find the si 00019880 7A 65 20 6F 66 20 74 68 65 20 6C 61 72 67 65 73 74 20 61 6C 6C 6F 63 61 74 61 62 6C 65 20 62 6C ze of the largest allocatable bl 000198A0 6F 63 6B 20 6F 66 20 55 6C 74 72 61 53 6F 75 6E 64 20 44 52 41 4D 2E 0D 0A 0D 0A 43 3A 09 09 09 ock of UltraSound DRAM.♪◙♪◙C:○○○ 000198C0 55 73 65 20 74 68 65 20 55 6C 74 72 61 4D 61 78 41 6C 6C 6F 63 20 66 75 6E 63 74 69 6F 6E 2E 0D Use the UltraMaxAlloc function.♪ 000198E0 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 4D 61 78 41 76 61 69 ◙♪◙PASCAL:○FUNCTION UltraMaxAvai 00019900 6C 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F l : LONGINT;♪◙♪◙Remarks:○This ro 00019920 75 74 69 6E 65 20 77 69 6C 6C 20 72 65 74 75 72 6E 20 74 68 65 20 6C 61 72 67 65 73 74 20 62 6C utine will return the largest bl 00019940 6F 63 6B 20 6F 66 20 44 52 41 4D 20 28 69 6E 20 62 79 74 65 73 29 20 74 68 61 74 20 63 61 6E 20 ock of DRAM (in bytes) that can 00019960 73 74 69 6C 6C 20 62 65 20 61 6C 6C 6F 63 61 74 65 64 2E 20 20 54 68 69 73 20 63 61 6E 20 62 65 still be allocated. This can be 00019980 20 75 73 65 66 75 6C 20 66 6F 72 20 64 65 74 65 72 6D 69 6E 69 6E 67 20 77 68 65 74 68 65 72 20 useful for determining whether 000199A0 6F 72 20 6E 6F 74 20 61 20 70 61 74 63 68 20 6F 72 20 73 61 6D 70 6C 65 20 63 61 6E 20 62 65 20 or not a patch or sample can be 000199C0 6C 6F 61 64 65 64 2E 20 20 54 68 65 20 6D 61 78 69 6D 75 6D 20 73 69 7A 65 20 6F 66 20 61 20 62 loaded. The maximum size of a b 000199E0 6C 6F 63 6B 20 69 73 20 32 35 36 4B 2E 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 69 lock is 256K. This routine is i 00019A00 6E 63 6C 75 64 65 64 20 74 6F 20 70 72 6F 76 69 64 65 20 63 6F 6E 73 69 73 74 65 6E 63 79 20 6F ncluded to provide consistency o 00019A20 66 20 6E 61 6D 69 6E 67 20 66 6F 72 20 50 41 53 43 41 4C 20 50 72 6F 67 72 61 6D 6D 65 72 73 2E f naming for PASCAL Programmers. 00019A40 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 23 20 6F 66 20 62 79 74 65 73 20 69 6E 20 6C 61 72 67 65 ♪◙♪◙Returns:○# of bytes in large 00019A60 73 74 20 61 76 61 69 6C 61 62 6C 65 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A st available block.♪◙♪◙See also: 00019A80 09 55 6C 74 72 61 4D 65 6D 41 6C 6C 6F 63 2C 20 55 6C 74 72 61 4D 65 6D 46 72 65 65 2C 20 0D 0A ○UltraMemAlloc, UltraMemFree, ♪◙ 00019AA0 09 09 09 66 6F 72 20 43 20 75 73 65 72 73 20 55 6C 74 72 61 4D 65 6D 49 6E 69 74 0D 0A 09 09 09 ○○○for C users UltraMemInit♪◙○○○ 00019AC0 61 6E 64 20 66 6F 72 20 50 41 53 43 41 4C 20 75 73 65 72 73 20 55 6C 74 72 61 4D 65 6D 41 76 61 and for PASCAL users UltraMemAva 00019AE0 69 6C 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 4D 65 6D 41 76 61 69 6C 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F il♪◙♪◙♪◙♀UltraMemAvail♪◙________ 00019B00 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 _________________________♪◙♪◙Pur 00019B20 70 6F 73 65 3A 09 54 6F 20 66 69 6E 64 20 74 68 65 20 74 6F 74 61 6C 20 61 6D 6F 75 6E 74 20 6F pose:○To find the total amount o 00019B40 66 20 66 72 65 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 44 52 41 4D 2E 0D 0A 0D 0A 43 3A 09 09 09 f free UltraSound DRAM.♪◙♪◙C:○○○ 00019B60 54 68 69 73 20 66 75 6E 63 74 69 6F 6E 20 69 73 20 6E 6F 74 20 61 76 61 69 6C 61 62 6C 65 2E 0D This function is not available.♪ 00019B80 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 4D 65 6D 41 76 61 69 ◙♪◙PASCAL:○FUNCTION UltraMemAvai 00019BA0 6C 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 46 6F 72 20 50 41 53 l : LONGINT;♪◙♪◙Remarks:○For PAS 00019BC0 43 41 4C 20 75 73 65 72 73 2C 20 74 68 69 73 20 77 69 6C 6C 20 72 65 74 75 72 6E 20 74 68 65 20 CAL users, this will return the 00019BE0 74 6F 74 61 6C 20 61 6D 6F 75 6E 74 20 6F 66 20 44 52 41 4D 20 73 74 69 6C 6C 20 61 76 61 69 6C total amount of DRAM still avail 00019C00 61 62 6C 65 20 66 6F 72 20 75 73 65 20 6F 6E 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 2E 0D able for use on the UltraSound.♪ 00019C20 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 23 20 6F 66 20 62 79 74 65 73 20 69 6E 20 6C 65 66 74 20 61 ◙♪◙Returns:○# of bytes in left a 00019C40 76 61 69 6C 61 62 6C 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 65 6D 41 vailable.♪◙♪◙See also:○UltraMemA 00019C60 6C 6C 6F 63 2C 20 55 6C 74 72 61 4D 65 6D 46 72 65 65 2C 20 55 6C 74 72 61 4D 61 78 41 6C 6C 6F lloc, UltraMemFree, UltraMaxAllo 00019C80 63 0D 0A 09 09 09 66 6F 72 20 43 20 75 73 65 72 73 20 55 6C 74 72 61 4D 65 6D 49 6E 69 74 0D 0A c♪◙○○○for C users UltraMemInit♪◙ 00019CA0 09 09 09 61 6E 64 20 66 6F 72 20 50 41 53 43 41 4C 20 75 73 65 72 73 20 55 6C 74 72 61 4D 61 78 ○○○and for PASCAL users UltraMax 00019CC0 41 76 61 69 6C 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 4D 65 6D 41 6C 6C 6F 63 0D 0A 5F 5F 5F 5F Avail♪◙♪◙♪◙♪◙UltraMemAlloc♪◙____ 00019CE0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D _____________________________♪◙♪ 00019D00 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 61 66 65 6C 79 20 61 6C 6C 6F 63 61 74 65 20 61 20 63 ◙Purpose:○To safely allocate a c 00019D20 68 75 6E 6B 20 6F 66 20 55 6C 74 72 61 53 6F 75 6E 64 20 44 52 41 4D 2E 0D 0A 0D 0A 43 3A 09 09 hunk of UltraSound DRAM.♪◙♪◙C:○○ 00019D40 09 69 6E 74 20 55 6C 74 72 61 4D 65 6D 41 6C 6C 6F 63 28 73 69 7A 65 2C 20 6C 6F 63 61 74 69 6F ○int UltraMemAlloc(size, locatio 00019D60 6E 29 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 73 69 7A 65 3B 0D 0A 09 09 09 n);♪◙○○○unsigned long size;♪◙○○○ 00019D80 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 2A 6C 6F 63 61 74 69 6F 6E 3B 0D 0A 0D 0A 50 41 53 43 unsigned long *location;♪◙♪◙PASC 00019DA0 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 4D 65 6D 41 6C 6C 6F 63 28 20 20 20 20 53 AL:○FUNCTION UltraMemAlloc( S 00019DC0 69 7A 65 20 20 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 ize : LONGINT;♪◙○○○ 00019DE0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 41 52 20 4C 6F 63 61 74 69 6F 6E 20 3A 20 4C 4F 4E VAR Location : LON 00019E00 47 49 4E 54 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 GINT) : BOOLEAN;♪◙♪◙Remarks:○Thi 00019E20 73 20 72 6F 75 74 69 6E 65 20 61 6C 6C 6F 63 61 74 65 73 20 61 20 63 68 75 6E 6B 20 6F 66 20 44 s routine allocates a chunk of D 00019E40 52 41 4D 20 6F 66 20 27 53 69 7A 65 27 20 62 79 74 65 73 20 66 72 6F 6D 20 74 68 65 20 55 6C 74 RAM of 'Size' bytes from the Ult 00019E60 72 61 53 6F 75 6E 64 27 73 20 44 52 41 4D 2E 20 20 54 68 65 20 6D 65 6D 6F 72 79 20 61 6C 6C 6F raSound's DRAM. The memory allo 00019E80 63 61 74 69 6F 6E 20 73 74 72 75 63 74 75 72 65 73 20 61 72 65 20 73 65 74 20 75 70 20 62 79 20 cation structures are set up by 00019EA0 55 6C 74 72 61 4F 70 65 6E 2E 20 20 27 4C 6F 63 61 74 69 6F 6E 27 20 69 73 20 66 69 6C 6C 65 64 UltraOpen. 'Location' is filled 00019EC0 20 69 6E 20 77 69 74 68 20 74 68 65 20 44 52 41 4D 20 6C 6F 63 61 74 69 6F 6E 20 6F 66 20 74 68 in with the DRAM location of th 00019EE0 65 20 73 74 61 72 74 20 6F 66 20 74 68 65 20 63 68 75 6E 6B 20 6F 66 20 6D 65 6D 6F 72 79 2E 20 e start of the chunk of memory. 00019F00 20 54 68 65 20 6D 65 6D 6F 72 79 20 61 64 64 72 65 73 73 20 72 65 74 75 72 6E 65 64 20 77 69 6C The memory address returned wil 00019F20 6C 20 41 4C 57 41 59 53 20 62 65 20 61 6C 69 67 6E 65 64 20 6F 6E 20 61 20 33 32 20 62 79 74 65 l ALWAYS be aligned on a 32 byte 00019F40 20 62 6F 75 6E 64 61 72 79 20 73 6F 20 74 68 61 74 20 74 68 65 20 44 52 41 4D 20 63 61 6E 20 62 boundary so that the DRAM can b 00019F60 65 20 44 4D 41 27 65 64 20 69 6E 74 6F 20 77 69 74 68 6F 75 74 20 65 72 72 6F 72 2E 20 20 41 6C e DMA'ed into without error. Al 00019F80 73 6F 2C 20 74 68 65 20 73 69 7A 65 20 77 69 6C 6C 20 62 65 20 72 6F 75 6E 64 65 64 20 55 50 20 so, the size will be rounded UP 00019FA0 74 6F 20 74 68 65 20 6E 65 78 74 20 33 32 20 62 79 74 65 20 62 6F 75 6E 64 61 72 79 2E 20 20 50 to the next 32 byte boundary. P 00019FC0 41 53 43 41 4C 20 75 73 65 72 73 20 63 61 6E 20 72 65 66 65 72 65 6E 63 65 20 73 65 63 74 69 6F ASCAL users can reference sectio 00019FE0 6E 20 31 2E 38 2E 33 20 66 6F 72 20 61 20 64 65 74 61 69 6C 65 64 20 6C 6F 6F 6B 20 61 74 20 68 n 1.8.3 for a detailed look at h 0001A000 6F 77 20 74 68 65 20 6D 65 6D 6F 72 79 20 69 73 20 6D 61 6E 61 67 65 64 2E 0D 0A 0D 0A 52 65 74 ow the memory is managed.♪◙♪◙Ret 0001A020 75 72 6E 73 3A 09 43 3A 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 20 69 66 20 6E 6F 20 70 72 6F urns:○C: ULTRA_OK if no pro 0001A040 62 6C 65 6D 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 4E 4F 5F 4D 45 4D 4F 52 59 20 69 66 20 74 blem.♪◙○○○ NO_MEMORY if t 0001A060 68 65 72 65 20 69 73 20 6E 6F 20 63 68 75 6E 6B 20 6F 66 20 44 52 41 4D 20 6C 61 72 67 65 20 65 here is no chunk of DRAM large e 0001A080 6E 6F 75 67 68 2E 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 74 68 65 nough.♪◙♪◙○○○PASCAL: TRUE if the 0001A0A0 20 61 6C 6C 6F 63 61 74 69 6F 6E 20 77 61 73 20 73 75 63 63 65 73 73 66 75 6C 2E 09 09 09 20 20 allocation was successful.○○○ 0001A0C0 20 20 20 20 0D 0A 09 09 09 20 20 20 20 20 20 20 20 49 66 20 46 41 4C 53 45 2C 20 63 68 65 63 6B ♪◙○○○ If FALSE, check 0001A0E0 20 55 6C 74 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A UltraErrorStr for the reason.♪◙ 0001A100 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 65 6D 46 72 65 65 2C 20 55 6C 74 72 61 4D ♪◙See also:○UltraMemFree, UltraM 0001A120 61 78 41 6C 6C 6F 63 2C 0D 0A 09 09 09 66 6F 72 20 43 20 75 73 65 72 73 20 55 6C 74 72 61 4D 65 axAlloc,♪◙○○○for C users UltraMe 0001A140 6D 49 6E 69 74 0D 0A 09 09 09 61 6E 64 20 66 6F 72 20 50 41 53 43 41 4C 20 75 73 65 72 73 20 55 mInit♪◙○○○and for PASCAL users U 0001A160 6C 74 72 61 4D 61 78 41 76 61 69 6C 20 61 6E 64 20 55 6C 74 72 61 4D 65 6D 41 76 61 69 6C 0D 0A ltraMaxAvail and UltraMemAvail♪◙ 0001A180 0C 55 6C 74 72 61 4D 65 6D 46 72 65 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ♀UltraMemFree♪◙_________________ 0001A1A0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 ________________♪◙♪◙Purpose:○To 0001A1C0 66 72 65 65 20 61 20 63 68 75 6E 6B 20 6F 66 20 44 52 41 4D 20 70 72 65 76 69 6F 75 73 6C 79 20 free a chunk of DRAM previously 0001A1E0 61 6C 6C 6F 63 61 74 65 64 20 77 69 74 68 20 55 6C 74 72 61 4D 65 6D 41 6C 6C 6F 63 2E 0D 0A 0D allocated with UltraMemAlloc.♪◙♪ 0001A200 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 4D 65 6D 46 72 65 65 28 73 69 7A 65 2C 6C 6F 63 61 ◙C:○○○int UltraMemFree(size,loca 0001A220 74 69 6F 6E 29 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 73 69 7A 65 3B 0D 0A tion);♪◙○○○unsigned long size;♪◙ 0001A240 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 6C 6F 63 61 74 69 6F 6E 3B 0D 0A 0D 0A 50 41 ○○○unsigned long location;♪◙♪◙PA 0001A260 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 20 55 6C 74 72 61 4D 65 6D 46 72 65 65 28 53 69 7A SCAL:○FUNCTION UltraMemFree(Siz 0001A280 65 20 20 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 e : LONGINT;♪◙○○○ 0001A2A0 20 20 20 20 20 20 20 20 20 20 20 20 4C 6F 63 61 74 69 6F 6E 20 3A 20 4C 4F 4E 47 49 4E 54 29 20 Location : LONGINT) 0001A2C0 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 46 72 65 65 73 20 61 20 70 : BOOLEAN;♪◙♪◙Remarks:○Frees a p 0001A2E0 72 65 76 69 6F 75 73 6C 79 20 61 6C 6C 6F 63 61 74 65 64 20 63 68 75 6E 6B 20 6F 66 20 55 6C 74 reviously allocated chunk of Ult 0001A300 72 61 53 6F 75 6E 64 20 6D 65 6D 6F 72 79 2E 20 20 54 68 65 20 73 69 7A 65 20 77 69 6C 6C 20 61 raSound memory. The size will a 0001A320 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 62 65 20 72 6F 75 6E 64 65 64 20 55 50 20 74 6F 20 74 68 utomatically be rounded UP to th 0001A340 65 20 6E 65 78 74 20 33 32 20 62 79 74 65 20 62 6F 75 6E 64 61 72 79 2E 0D 0A 0D 0A 52 65 74 75 e next 32 byte boundary.♪◙♪◙Retu 0001A360 72 6E 73 3A 09 43 3A 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 20 69 66 20 6E 6F 20 70 72 6F 62 rns:○C: ULTRA_OK if no prob 0001A380 6C 65 6D 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 43 4F 52 52 55 50 54 5F 4D 45 4D 20 69 66 20 lem.♪◙○○○ CORRUPT_MEM if 0001A3A0 74 68 65 20 6D 65 6D 6F 72 79 20 73 74 72 75 63 74 75 72 65 73 20 61 72 65 20 63 6F 72 72 75 70 the memory structures are corrup 0001A3C0 74 65 64 2E 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 64 65 61 6C 6C ted.♪◙♪◙○○○PASCAL: TRUE if deall 0001A3E0 6F 63 61 74 69 6F 6E 20 77 61 73 20 73 75 63 63 65 73 73 66 75 6C 2E 09 09 09 20 20 20 20 20 20 ocation was successful.○○○ 0001A400 20 0D 0A 09 09 09 20 20 20 20 20 20 20 20 49 66 20 46 41 4C 53 45 2C 20 63 68 65 63 6B 20 55 6C ♪◙○○○ If FALSE, check Ul 0001A420 74 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 53 traErrorStr for the reason.♪◙♪◙S 0001A440 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 65 6D 49 6E 69 74 2C 20 55 6C 74 72 61 4D 65 6D 41 ee also:○UltraMemInit, UltraMemA 0001A460 6C 6C 6F 63 0D 0A 09 09 09 66 6F 72 20 43 20 75 73 65 72 73 20 55 6C 74 72 61 4D 65 6D 49 6E 69 lloc♪◙○○○for C users UltraMemIni 0001A480 74 0D 0A 09 09 09 61 6E 64 20 66 6F 72 20 50 41 53 43 41 4C 20 75 73 65 72 73 20 55 6C 74 72 61 t♪◙○○○and for PASCAL users Ultra 0001A4A0 4D 61 78 41 76 61 69 6C 20 61 6E 64 20 55 6C 74 72 61 4D 65 6D 41 76 61 69 6C 0D 0A 0D 0A 0D 0A MaxAvail and UltraMemAvail♪◙♪◙♪◙ 0001A4C0 0D 0A 55 6C 74 72 61 4D 65 6D 49 6E 69 74 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ♪◙UltraMemInit♪◙________________ 0001A4E0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F _________________♪◙♪◙Purpose:○To 0001A500 20 69 6E 69 74 69 61 6C 69 7A 65 20 6F 72 20 72 65 2D 69 6E 69 74 69 61 6C 69 7A 65 20 74 68 65 initialize or re-initialize the 0001A520 20 6D 65 6D 6F 72 79 20 70 6F 6F 6C 20 73 74 72 75 63 74 75 72 65 73 2E 0D 0A 0D 0A 43 3A 09 09 memory pool structures.♪◙♪◙C:○○ 0001A540 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 55 6C 74 72 61 4D 65 6D 49 6E 69 74 28 76 6F 69 64 ○unsigned long UltraMemInit(void 0001A560 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 6E 6F );♪◙♪◙PASCAL:○This routine is no 0001A580 74 20 75 73 65 64 2E 20 20 54 68 65 20 75 6E 69 74 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 t used. The unit automatically 0001A5A0 63 61 6C 6C 73 20 74 68 65 73 65 20 72 6F 75 74 69 6E 65 73 20 77 68 65 6E 20 79 6F 75 72 20 70 calls these routines when your p 0001A5C0 72 6F 67 72 61 6D 20 73 74 61 72 74 73 2E 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 rogram starts.♪◙♪◙Remarks:○This 0001A5E0 72 6F 75 74 69 6E 65 20 73 65 74 73 20 75 70 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 44 routine sets up the UltraSound D 0001A600 52 41 4D 20 73 6F 20 74 68 61 74 20 55 6C 74 72 61 4D 65 6D 41 6C 6C 6F 63 20 61 6E 64 20 55 6C RAM so that UltraMemAlloc and Ul 0001A620 74 72 61 4D 65 6D 46 72 65 65 20 77 69 6C 6C 20 77 6F 72 6B 2E 20 20 49 74 20 69 73 20 63 61 6C traMemFree will work. It is cal 0001A640 6C 65 64 20 69 6E 20 55 6C 74 72 61 4F 70 65 6E 2E 20 20 49 74 20 63 61 6E 20 62 65 20 63 61 6C led in UltraOpen. It can be cal 0001A660 6C 65 64 20 61 74 20 61 6E 79 20 74 69 6D 65 20 69 66 20 61 6E 20 61 70 70 6C 69 63 61 74 69 6F led at any time if an applicatio 0001A680 6E 20 77 61 6E 74 73 20 74 6F 20 63 6C 65 61 6E 20 75 70 20 61 6C 6C 20 69 74 73 20 61 6C 6C 6F n wants to clean up all its allo 0001A6A0 63 61 74 65 64 20 6F 72 20 63 6F 72 72 75 70 74 65 64 20 6D 65 6D 6F 72 79 20 73 74 72 75 63 74 cated or corrupted memory struct 0001A6C0 75 72 65 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4E 75 6D 62 65 72 20 6F 66 20 4B 20 6F 66 ures.♪◙♪◙Returns:○Number of K of 0001A6E0 20 44 52 41 4D 20 66 6F 75 6E 64 20 6F 6E 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 2E 20 20 DRAM found on the UltraSound. 0001A700 49 66 20 61 6E 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 77 69 73 68 65 73 20 74 6F 20 72 65 73 65 If an application wishes to rese 0001A720 72 76 65 20 61 20 63 68 75 6E 6B 20 6F 66 20 44 52 41 4D 20 6F 75 74 73 69 64 65 20 6F 66 20 74 rve a chunk of DRAM outside of t 0001A740 68 65 20 6D 65 6D 6F 72 79 20 70 6F 6F 6C 2C 20 61 20 76 61 72 69 61 62 6C 65 20 63 61 6C 6C 65 he memory pool, a variable calle 0001A760 64 20 5F 75 6C 74 72 61 5F 72 65 73 65 72 76 65 64 5F 64 72 61 6D 20 6D 75 73 74 20 62 65 20 73 d _ultra_reserved_dram must be s 0001A780 65 74 20 75 70 20 77 69 74 68 20 74 68 65 20 23 20 6F 66 20 62 79 74 65 73 20 74 6F 20 72 65 73 et up with the # of bytes to res 0001A7A0 65 72 76 65 20 42 45 46 4F 52 45 20 55 6C 74 72 61 4D 65 6D 49 6E 69 74 20 69 73 20 63 61 6C 6C erve BEFORE UltraMemInit is call 0001A7C0 65 64 2E 20 20 54 68 69 73 20 72 65 73 65 72 76 65 64 20 63 68 75 6E 6B 20 77 69 6C 6C 20 73 74 ed. This reserved chunk will st 0001A7E0 61 72 74 20 61 74 20 30 2E 20 20 54 68 65 20 72 65 73 65 72 76 65 64 20 63 68 75 6E 6B 20 6D 75 art at 0. The reserved chunk mu 0001A800 73 74 20 62 65 20 67 72 65 61 74 65 72 20 74 68 61 6E 20 33 32 20 62 79 74 65 73 20 61 6E 64 20 st be greater than 32 bytes and 0001A820 6C 65 73 73 20 74 68 61 6E 20 32 35 36 4B 20 69 6E 20 73 69 7A 65 2E 0D 0A 0D 0A 53 65 65 20 61 less than 256K in size.♪◙♪◙See a 0001A840 6C 73 6F 3A 09 55 6C 74 72 61 4D 65 6D 41 6C 6C 6F 63 2C 20 55 6C 74 72 61 4D 65 6D 46 72 65 65 lso:○UltraMemAlloc, UltraMemFree 0001A860 2C 20 61 6E 64 20 55 6C 74 72 61 4D 61 78 41 6C 6C 6F 63 0D 0A 0C 55 6C 74 72 61 4D 49 44 49 44 , and UltraMaxAlloc♪◙♀UltraMIDID 0001A880 69 73 61 62 6C 65 52 65 63 76 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F isableRecv♪◙____________________ 0001A8A0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 64 69 73 _____________♪◙♪◙Purpose:○To dis 0001A8C0 61 62 6C 65 20 74 68 65 20 4D 49 44 49 20 72 65 63 65 69 76 65 20 64 61 74 61 20 69 6E 74 65 72 able the MIDI receive data inter 0001A8E0 72 75 70 74 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 4D 49 44 49 44 69 73 61 rupt.♪◙♪◙C:○○○void UltraMIDIDisa 0001A900 62 6C 65 52 65 63 76 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 bleRecv(void);♪◙♪◙PASCAL:○PROCED 0001A920 55 52 45 20 55 6C 74 72 61 4D 49 44 49 44 69 73 61 62 6C 65 52 65 63 76 3B 0D 0A 0D 0A 52 65 6D URE UltraMIDIDisableRecv;♪◙♪◙Rem 0001A940 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 64 69 73 61 62 6C 65 20 arks:○This routine will disable 0001A960 74 68 65 20 72 65 63 65 69 76 65 20 64 61 74 61 20 69 6E 74 65 72 72 75 70 74 73 20 66 72 6F 6D the receive data interrupts from 0001A980 20 74 68 65 20 4D 49 44 49 2E 20 20 49 66 20 74 68 65 20 69 6E 74 65 72 72 75 70 74 20 69 73 20 the MIDI. If the interrupt is 0001A9A0 65 6E 61 62 6C 65 64 2C 20 69 74 20 73 68 6F 75 6C 64 20 62 65 20 64 69 73 61 62 6C 65 64 20 62 enabled, it should be disabled b 0001A9C0 65 66 6F 72 65 20 6C 65 61 76 69 6E 67 20 79 6F 75 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 2E 0D efore leaving your application.♪ 0001A9E0 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 49 44 49 45 6E 61 62 6C 65 52 65 63 76 ◙♪◙See also:○UltraMIDIEnableRecv 0001AA00 2C 20 55 6C 74 72 61 4D 49 44 49 52 65 63 76 48 61 6E 64 6C 65 72 0D 0A 0D 0A 0D 0A 0D 0A 55 6C , UltraMIDIRecvHandler♪◙♪◙♪◙♪◙Ul 0001AA20 74 72 61 44 69 73 61 62 6C 65 4D 49 44 49 58 6D 69 74 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F traDisableMIDIXmit♪◙____________ 0001AA40 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 _____________________♪◙♪◙Purpose 0001AA60 3A 09 54 6F 20 64 69 73 61 62 6C 65 20 4D 49 44 49 20 74 72 61 6E 73 6D 69 74 20 69 6E 74 65 72 :○To disable MIDI transmit inter 0001AA80 72 75 70 74 73 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 44 69 73 61 62 6C 65 rupts.♪◙♪◙C:○○○void UltraDisable 0001AAA0 4D 49 44 49 58 6D 69 74 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 MIDIXmit(void);♪◙♪◙PASCAL:○PROCE 0001AAC0 44 55 52 45 20 55 6C 74 72 61 44 69 73 61 62 6C 65 4D 49 44 49 58 6D 69 74 3B 0D 0A 0D 0A 52 65 DURE UltraDisableMIDIXmit;♪◙♪◙Re 0001AAE0 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 74 75 72 6E 20 6F 66 marks:○This routine will turn of 0001AB00 66 20 4D 49 44 49 20 74 72 61 6E 73 6D 69 74 20 69 6E 74 65 72 72 75 70 74 73 2E 20 20 49 74 20 f MIDI transmit interrupts. It 0001AB20 4D 55 53 54 20 62 65 20 63 61 6C 6C 65 64 20 77 68 65 6E 20 79 6F 75 20 61 72 65 20 74 68 72 6F MUST be called when you are thro 0001AB40 75 67 68 20 73 65 6E 64 69 6E 67 20 64 61 74 61 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 ugh sending data.♪◙♪◙See also:○U 0001AB60 6C 74 72 61 4D 49 44 49 58 6D 69 74 48 61 6E 64 6C 65 72 2C 20 55 6C 74 72 61 4D 49 44 49 45 6E ltraMIDIXmitHandler, UltraMIDIEn 0001AB80 61 62 6C 65 58 6D 69 74 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 4D 49 44 49 45 6E 61 62 6C 65 52 ableXmit♪◙♪◙♪◙♪◙UltraMIDIEnableR 0001ABA0 65 63 76 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ecv♪◙___________________________ 0001ABC0 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 65 6E 61 62 6C 65 20 72 65 63 ______♪◙♪◙Purpose:○To enable rec 0001ABE0 65 69 76 65 20 64 61 74 61 20 69 6E 74 65 72 72 75 70 74 73 20 66 6F 72 20 4D 49 44 49 20 70 6F eive data interrupts for MIDI po 0001AC00 72 74 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 4D 49 44 49 45 6E 61 62 6C 65 rt.♪◙♪◙C:○○○void UltraMIDIEnable 0001AC20 52 65 63 76 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 Recv(void);♪◙♪◙PASCAL:○PROCEDURE 0001AC40 20 55 6C 74 72 61 4D 49 44 49 45 6E 61 62 6C 65 52 65 63 76 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 UltraMIDIEnableRecv;♪◙♪◙Remarks 0001AC60 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 65 6E 61 62 6C 65 20 72 65 63 65 69 :○This routine will enable recei 0001AC80 76 65 20 64 61 74 61 20 69 6E 74 65 72 72 75 70 74 73 20 66 72 6F 6D 20 74 68 65 20 4D 49 44 49 ve data interrupts from the MIDI 0001ACA0 20 70 6F 72 74 2E 20 20 49 74 20 69 73 20 6E 65 63 65 73 73 61 72 79 20 74 6F 20 73 65 74 20 75 port. It is necessary to set u 0001ACC0 70 20 61 20 63 61 6C 6C 62 61 63 6B 20 72 6F 75 74 69 6E 65 20 66 6F 72 20 79 6F 75 72 20 61 70 p a callback routine for your ap 0001ACE0 70 6C 69 63 61 74 69 6F 6E 20 74 6F 20 70 72 6F 63 65 73 73 20 74 68 65 20 64 61 74 61 2E 0D 0A plication to process the data.♪◙ 0001AD00 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 49 44 49 52 65 63 76 68 61 6E 64 6C 65 72 ♪◙See also:○UltraMIDIRecvhandler 0001AD20 2C 20 55 6C 74 72 61 4D 49 44 49 44 69 73 61 62 6C 65 52 65 63 76 0D 0A 0D 0A 0C 55 6C 74 72 61 , UltraMIDIDisableRecv♪◙♪◙♀Ultra 0001AD40 45 6E 61 62 6C 65 4D 49 44 49 58 6D 69 74 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F EnableMIDIXmit♪◙________________ 0001AD60 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F _________________♪◙♪◙Purpose:○To 0001AD80 20 65 6E 61 62 6C 65 20 74 72 61 6E 73 6D 69 74 20 69 6E 74 65 72 72 75 70 74 73 20 66 72 6F 6D enable transmit interrupts from 0001ADA0 20 4D 49 44 49 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 45 6E 61 62 6C 65 4D MIDI.♪◙♪◙C:○○○void UltraEnableM 0001ADC0 49 44 49 58 6D 69 74 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 IDIXmit(void);♪◙♪◙PASCAL:○PROCED 0001ADE0 55 52 45 20 55 6C 74 72 61 45 6E 61 62 6C 65 4D 49 44 49 58 6D 69 74 3B 0D 0A 0D 0A 52 65 6D 61 URE UltraEnableMIDIXmit;♪◙♪◙Rema 0001AE00 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 65 6E 61 62 6C 65 20 74 72 rks:○This routine will enable tr 0001AE20 61 6E 73 6D 69 74 20 64 61 74 61 20 69 6E 74 65 72 72 75 70 74 73 20 74 6F 20 62 65 20 67 65 6E ansmit data interrupts to be gen 0001AE40 65 72 61 74 65 64 20 61 73 20 65 61 63 68 20 62 79 74 65 20 69 73 20 74 72 61 6E 73 6D 69 74 74 erated as each byte is transmitt 0001AE60 65 64 20 6F 75 74 20 74 68 65 20 4D 49 44 49 20 70 6F 72 74 2E 20 20 4E 6F 74 65 20 74 68 61 74 ed out the MIDI port. Note that 0001AE80 20 61 20 74 72 61 6E 73 6D 69 74 20 69 6E 74 65 72 72 75 70 74 20 77 69 6C 6C 20 62 65 20 67 65 a transmit interrupt will be ge 0001AEA0 6E 65 72 61 74 65 64 20 61 73 20 73 6F 6F 6E 20 61 73 20 74 68 65 20 49 52 51 20 69 73 20 65 6E nerated as soon as the IRQ is en 0001AEC0 61 62 6C 65 64 20 75 6E 6C 65 73 73 20 61 20 62 79 74 65 20 69 73 20 73 65 6E 74 20 6F 75 74 20 abled unless a byte is sent out 0001AEE0 69 6D 6D 65 64 69 61 74 65 6C 79 20 70 72 69 6F 72 20 74 6F 20 65 6E 61 62 6C 69 6E 67 20 69 74 immediately prior to enabling it 0001AF00 2E 20 20 54 68 69 73 20 69 73 20 62 65 63 61 75 73 65 20 74 68 65 20 78 6D 69 74 20 62 75 66 66 . This is because the xmit buff 0001AF20 65 72 20 69 73 20 69 6E 69 74 69 61 6C 6C 79 20 65 6D 70 74 79 20 28 75 6E 6C 65 73 73 20 70 72 er is initially empty (unless pr 0001AF40 69 6D 65 64 29 20 73 6F 20 69 74 20 77 69 6C 6C 20 70 6F 70 20 61 6E 20 69 6E 74 65 72 72 75 70 imed) so it will pop an interrup 0001AF60 74 2E 20 20 41 6C 73 6F 20 6E 6F 74 65 20 74 68 61 74 20 79 6F 75 20 4D 55 53 54 20 64 69 73 61 t. Also note that you MUST disa 0001AF80 62 6C 65 20 74 68 69 73 20 69 6E 74 65 72 72 75 70 74 20 77 68 65 6E 20 79 6F 75 20 61 72 65 20 ble this interrupt when you are 0001AFA0 6E 6F 74 20 73 65 6E 64 69 6E 67 20 61 6E 79 20 6D 6F 72 65 20 64 61 74 61 20 6F 72 20 65 6C 73 not sending any more data or els 0001AFC0 65 20 79 6F 75 20 77 69 6C 6C 20 62 65 20 68 75 6E 67 20 75 70 20 67 65 74 74 69 6E 67 20 74 72 e you will be hung up getting tr 0001AFE0 61 6E 73 6D 69 74 20 72 65 61 64 79 20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D 0A 53 65 65 20 ansmit ready interrupts.♪◙♪◙See 0001B000 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 49 44 49 58 6D 69 74 48 61 6E 64 6C 65 72 2C 20 55 6C 74 72 also:○UltraMIDIXmitHandler, Ultr 0001B020 61 4D 49 44 49 44 69 73 61 62 6C 65 58 6D 69 74 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 4D 49 44 aMIDIDisableXmit♪◙♪◙♪◙♪◙UltraMID 0001B040 49 52 65 63 76 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F IRecv♪◙_________________________ 0001B060 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 65 61 64 20 61 20 62 ________♪◙♪◙Purpose:○To read a b 0001B080 79 74 65 20 66 72 6F 6D 20 74 68 65 20 4D 49 44 49 20 70 6F 72 74 2E 0D 0A 0D 0A 43 3A 09 09 09 yte from the MIDI port.♪◙♪◙C:○○○ 0001B0A0 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 55 6C 74 72 61 4D 49 44 49 52 65 63 76 28 76 6F 69 64 unsigned char UltraMIDIRecv(void 0001B0C0 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 4D 49 44 49 );♪◙♪◙PASCAL:○FUNCTION UltraMIDI 0001B0E0 52 65 63 76 20 3A 20 42 59 54 45 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F Recv : BYTE;♪◙♪◙Remarks:○This ro 0001B100 75 74 69 6E 65 20 69 73 20 75 73 65 64 20 74 6F 20 72 65 61 64 20 61 20 62 79 74 65 20 66 72 6F utine is used to read a byte fro 0001B120 6D 20 74 68 65 20 4D 49 44 49 20 70 6F 72 74 2E 20 20 49 74 20 61 73 73 75 6D 65 73 20 74 68 61 m the MIDI port. It assumes tha 0001B140 74 20 74 68 65 20 62 79 74 65 20 69 73 20 77 61 69 74 69 6E 67 2E 20 20 54 68 65 20 42 79 74 65 t the byte is waiting. The Byte 0001B160 20 69 73 20 74 68 65 72 65 20 69 66 20 69 74 20 67 6F 74 20 74 6F 20 74 68 65 20 4D 49 44 49 20 is there if it got to the MIDI 0001B180 72 65 63 65 69 76 65 20 69 6E 74 65 72 72 75 70 74 20 63 61 6C 6C 62 61 63 6B 20 72 6F 75 74 69 receive interrupt callback routi 0001B1A0 6E 65 20 6F 72 20 69 66 20 79 6F 75 20 68 61 76 65 20 70 6F 6C 6C 65 64 20 74 68 65 20 73 74 61 ne or if you have polled the sta 0001B1C0 74 75 73 20 61 6E 64 20 64 65 74 65 72 6D 69 6E 65 64 20 74 68 65 20 72 65 63 65 69 76 65 20 62 tus and determined the receive b 0001B1E0 75 66 66 65 72 20 69 73 20 66 75 6C 6C 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4D 49 44 49 20 uffer is full.♪◙♪◙Returns:○MIDI 0001B200 64 61 74 61 20 62 79 74 65 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 49 44 49 data byte♪◙♪◙See also:○UltraMIDI 0001B220 52 65 63 76 48 61 6E 64 6C 65 72 2C 20 55 6C 74 72 61 4D 49 44 49 53 74 61 74 75 73 0D 0A 0D 0A RecvHandler, UltraMIDIStatus♪◙♪◙ 0001B240 0D 0A 0C 55 6C 74 72 61 4D 49 44 49 52 65 73 65 74 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ♪◙♀UltraMIDIReset♪◙_____________ 0001B260 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A ____________________♪◙♪◙Purpose: 0001B280 09 54 6F 20 72 65 73 65 74 20 74 68 65 20 4D 49 44 49 20 70 6F 72 74 2E 0D 0A 0D 0A 43 3A 09 09 ○To reset the MIDI port.♪◙♪◙C:○○ 0001B2A0 09 76 6F 69 64 20 55 6C 74 72 61 4D 49 44 49 52 65 73 65 74 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 ○void UltraMIDIReset(void);♪◙♪◙P 0001B2C0 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 4D 49 44 49 52 65 73 65 74 3B ASCAL:○PROCEDURE UltraMIDIReset; 0001B2E0 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73 68 6F 75 6C 64 ♪◙♪◙Remarks:○This routine should 0001B300 20 62 65 20 75 73 65 64 20 74 6F 20 65 6E 73 75 72 65 20 74 68 61 74 20 74 68 65 20 4D 49 44 49 be used to ensure that the MIDI 0001B320 20 70 6F 72 74 20 69 73 20 72 65 61 64 79 20 74 6F 20 75 73 65 2E 20 20 41 6C 6C 20 4D 49 44 49 port is ready to use. All MIDI 0001B340 20 69 6E 74 65 72 72 75 70 74 73 20 77 69 6C 6C 20 62 65 20 64 69 73 61 62 6C 65 64 20 62 79 20 interrupts will be disabled by 0001B360 74 68 69 73 20 63 61 6C 6C 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 45 6E 61 this call.♪◙♪◙See also:○UltraEna 0001B380 62 6C 65 4D 49 44 49 58 6D 69 74 2C 20 55 6C 74 72 61 45 6E 61 62 6C 65 4D 49 44 49 52 65 63 76 bleMIDIXmit, UltraEnableMIDIRecv 0001B3A0 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 4D 49 44 49 53 74 61 74 75 73 0D 0A 5F 5F 5F 5F 5F 5F 5F ♪◙♪◙♪◙♪◙UltraMIDIStatus♪◙_______ 0001B3C0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 __________________________♪◙♪◙Pu 0001B3E0 72 70 6F 73 65 3A 09 54 6F 20 72 65 61 64 20 74 68 65 20 4D 49 44 49 20 73 74 61 74 75 73 20 62 rpose:○To read the MIDI status b 0001B400 79 74 65 2E 0D 0A 0D 0A 43 3A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 55 6C 74 72 61 yte.♪◙♪◙C:○○○unsigned char Ultra 0001B420 4D 49 44 49 53 74 61 74 75 73 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E MIDIStatus(void);♪◙♪◙PASCAL:○FUN 0001B440 43 54 49 4F 4E 20 55 6C 74 72 61 4D 49 44 49 53 74 61 74 75 73 20 3A 20 42 59 54 45 3B 0D 0A 0D CTION UltraMIDIStatus : BYTE;♪◙♪ 0001B460 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73 20 74 ◙Remarks:○This routine returns t 0001B480 68 65 20 63 75 72 72 65 6E 74 20 4D 49 44 49 20 70 6F 72 74 20 73 74 61 74 75 73 20 62 69 74 73 he current MIDI port status bits 0001B4A0 2E 20 20 54 68 69 73 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 . This can be used to determine 0001B4C0 20 69 66 20 61 6E 20 65 72 72 6F 72 20 68 61 73 20 6F 63 63 75 72 72 65 64 20 6F 72 20 69 66 20 if an error has occurred or if 0001B4E0 74 68 65 20 70 6F 72 74 20 69 73 20 72 65 61 64 79 20 74 6F 20 62 65 20 72 65 61 64 20 6F 72 20 the port is ready to be read or 0001B500 77 72 69 74 74 65 6E 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 4D 49 44 49 20 73 74 written.♪◙♪◙Returns:○The MIDI st 0001B520 61 74 75 73 20 62 79 74 65 2E 20 20 53 65 65 20 63 68 61 70 74 65 72 20 32 2E 0D 0A 0D 0A 53 65 atus byte. See chapter 2.♪◙♪◙Se 0001B540 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 49 44 49 58 6D 69 74 2C 20 55 6C 74 72 61 4D 49 44 49 e also:○UltraMIDIXmit, UltraMIDI 0001B560 52 65 63 76 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 4D 49 44 49 58 6D 69 74 0D 0A 5F 5F 5F Recv♪◙♪◙♪◙♪◙♪◙UltraMIDIXmit♪◙___ 0001B580 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A ______________________________♪◙ 0001B5A0 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 65 6E 64 20 61 20 62 79 74 65 20 6F 75 74 20 74 68 ♪◙Purpose:○To send a byte out th 0001B5C0 65 20 4D 49 44 49 20 70 6F 72 74 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 4D e MIDI port.♪◙♪◙C:○○○void UltraM 0001B5E0 49 44 49 58 6D 69 74 28 64 61 74 61 29 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 IDIXmit(data);♪◙○○○unsigned char 0001B600 20 64 61 74 61 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 data;♪◙♪◙PASCAL:○PROCEDURE Ultr 0001B620 61 4D 49 44 49 58 6D 69 74 28 44 61 74 61 20 3A 20 42 59 54 45 29 3B 0D 0A 0D 0A 52 65 6D 61 72 aMIDIXmit(Data : BYTE);♪◙♪◙Remar 0001B640 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 73 65 6E 64 20 74 68 65 20 27 ks:○This routine will send the ' 0001B660 44 61 74 61 27 20 62 79 74 65 20 6F 75 74 20 74 68 65 20 4D 49 44 49 20 64 61 74 61 20 70 6F 72 Data' byte out the MIDI data por 0001B680 74 2E 20 20 49 66 20 69 6E 74 65 72 72 75 70 74 73 20 61 72 65 20 65 6E 61 62 6C 65 64 2C 20 61 t. If interrupts are enabled, a 0001B6A0 6E 20 69 6E 74 65 72 72 75 70 74 20 77 69 6C 6C 20 62 65 20 67 65 6E 65 72 61 74 65 64 20 77 68 n interrupt will be generated wh 0001B6C0 65 6E 20 74 68 65 20 42 79 74 65 20 68 61 73 20 62 65 65 6E 20 74 72 61 6E 73 6D 69 74 74 65 64 en the Byte has been transmitted 0001B6E0 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 49 44 49 58 6D 69 74 48 61 6E 64 .♪◙♪◙See also:○UltraMIDIXmitHand 0001B700 6C 65 72 0D 0A 0C 55 6C 74 72 61 4F 70 65 6E 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ler♪◙♀UltraOpen♪◙_______________ 0001B720 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 __________________♪◙♪◙Purpose:○T 0001B740 6F 20 6F 70 65 6E 20 61 6E 64 20 69 6E 69 74 69 61 6C 69 7A 65 20 74 68 65 20 55 6C 74 72 61 53 o open and initialize the UltraS 0001B760 6F 75 6E 64 20 63 61 72 64 20 61 6E 64 20 74 68 65 20 53 44 4B 20 63 6F 64 65 2E 0D 0A 0D 0A 43 ound card and the SDK code.♪◙♪◙C 0001B780 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 4F 70 65 6E 28 63 6F 6E 66 69 67 2C 76 6F 69 63 65 73 29 :○○○int UltraOpen(config,voices) 0001B7A0 3B 0D 0A 09 09 09 55 4C 54 52 41 5F 43 46 47 20 2A 63 6F 6E 66 69 67 3B 0D 0A 09 09 09 69 6E 74 ;♪◙○○○ULTRA_CFG *config;♪◙○○○int 0001B7C0 20 76 6F 69 63 65 73 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 20 55 6C voices;♪◙♪◙PASCAL:○FUNCTION Ul 0001B7E0 74 72 61 4F 70 65 6E 28 56 41 52 20 43 6F 6E 66 69 67 20 3A 20 55 6C 74 72 61 5F 43 46 47 3B 0D traOpen(VAR Config : Ultra_CFG;♪ 0001B800 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 6F 69 63 ◙○○○ Voic 0001B820 65 73 20 3A 20 49 4E 54 45 47 45 52 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 es : INTEGER) : BOOLEAN;♪◙♪◙Rema 0001B840 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73 68 6F 75 6C 64 20 41 4C 57 41 59 53 20 rks:○This routine should ALWAYS 0001B860 62 65 20 63 61 6C 6C 65 64 20 74 6F 20 69 6E 69 74 69 61 6C 69 7A 65 20 74 68 65 20 55 6C 74 72 be called to initialize the Ultr 0001B880 61 53 6F 75 6E 64 2E 20 20 49 74 20 77 69 6C 6C 20 70 72 6F 62 65 20 66 6F 72 20 74 68 65 20 63 aSound. It will probe for the c 0001B8A0 61 72 64 20 61 6E 64 20 70 72 6F 67 72 61 6D 20 74 68 65 20 49 52 51 20 61 6E 64 20 44 4D 41 20 ard and program the IRQ and DMA 0001B8C0 6C 61 74 63 68 65 73 2E 20 20 49 74 20 77 69 6C 6C 20 74 68 65 6E 20 64 69 73 61 62 6C 65 20 6C latches. It will then disable l 0001B8E0 69 6E 65 20 61 6E 64 20 6D 69 63 72 6F 70 68 6F 6E 65 20 69 6E 70 75 74 20 61 6E 64 20 65 6E 61 ine and microphone input and ena 0001B900 62 6C 65 20 6F 75 74 70 75 74 2E 20 20 49 74 20 61 6C 73 6F 20 69 6E 69 74 69 61 6C 69 7A 65 73 ble output. It also initializes 0001B920 20 74 68 65 20 6D 65 6D 6F 72 79 20 73 74 72 75 63 74 75 72 65 73 2E 20 20 54 68 65 20 23 20 6F the memory structures. The # o 0001B940 66 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 69 73 20 61 6E 20 69 6D 70 6F 72 74 61 6E 74 20 f active voices is an important 0001B960 70 61 72 61 6D 65 74 65 72 20 74 6F 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 3A 20 74 68 65 parameter to the UltraSound: the 0001B980 20 66 65 77 65 72 20 74 68 65 20 23 20 6F 66 20 76 6F 69 63 65 73 2C 20 74 68 65 20 6D 6F 72 65 fewer the # of voices, the more 0001B9A0 20 6F 76 65 72 73 61 6D 70 6C 69 6E 67 20 74 68 61 74 20 6F 63 63 75 72 73 20 6F 6E 20 70 6C 61 oversampling that occurs on pla 0001B9C0 79 62 61 63 6B 2E 20 20 54 68 69 73 20 77 69 6C 6C 20 6D 61 6B 65 20 74 68 65 20 73 6F 75 6E 64 yback. This will make the sound 0001B9E0 20 6D 75 63 68 20 27 63 6C 65 61 6E 65 72 27 2E 20 20 49 66 20 79 6F 75 20 73 70 65 63 69 66 79 much 'cleaner'. If you specify 0001BA00 20 61 20 6E 75 6D 62 65 72 20 6F 66 20 76 6F 69 63 65 73 20 6C 65 73 73 20 74 68 61 6E 20 31 34 a number of voices less than 14 0001BA20 2C 20 74 68 65 20 63 61 72 64 20 77 69 6C 6C 20 73 74 69 6C 6C 20 62 65 20 69 6E 69 74 69 61 6C , the card will still be initial 0001BA40 69 7A 65 64 20 74 6F 20 75 73 65 20 31 34 20 76 6F 69 63 65 73 2E 20 20 4C 69 6B 65 77 69 73 65 ized to use 14 voices. Likewise 0001BA60 2C 20 69 66 20 79 6F 75 20 73 65 6C 65 63 74 20 6C 61 72 67 65 72 20 74 68 61 6E 20 33 32 20 76 , if you select larger than 32 v 0001BA80 6F 69 63 65 73 2C 20 79 6F 75 20 77 69 6C 6C 20 73 74 69 6C 6C 20 6F 6E 6C 79 20 68 61 76 65 20 oices, you will still only have 0001BAA0 33 32 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 32.♪◙♪◙Returns:○C: ULTRA_OK 0001BAC0 20 69 66 20 6E 6F 20 70 72 6F 62 6C 65 6D 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 4E 4F 5F 55 if no problem.♪◙○○○ NO_U 0001BAE0 4C 54 52 41 20 69 66 20 6E 6F 20 55 6C 74 72 61 53 6F 75 6E 64 20 63 61 72 64 20 66 6F 75 6E 64 LTRA if no UltraSound card found 0001BB00 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 42 41 44 5F 4E 55 4D 5F 4F 46 5F 56 4F 49 43 45 53 20 .♪◙○○○ BAD_NUM_OF_VOICES 0001BB20 69 66 20 23 20 6F 66 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 6F 75 74 20 6F 66 20 72 61 6E if # of active voices out of ran 0001BB40 67 65 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 74 68 65 20 63 61 72 ge♪◙♪◙○○○PASCAL: TRUE if the car 0001BB60 64 20 77 61 73 20 73 75 63 63 65 73 73 66 75 6C 6C 79 20 6F 70 65 6E 65 64 2E 0D 0A 09 09 09 20 d was successfully opened.♪◙○○○ 0001BB80 20 20 20 20 20 20 20 49 66 20 46 41 4C 53 45 2C 20 63 68 65 63 6B 20 55 6C 74 72 61 45 72 72 6F If FALSE, check UltraErro 0001BBA0 72 53 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F rStr for the reason.♪◙♪◙See also 0001BBC0 3A 09 55 6C 74 72 61 43 6C 6F 73 65 2C 20 55 6C 74 72 61 50 72 6F 62 65 0D 0A 0D 0A 0D 0A 0C 55 :○UltraClose, UltraProbe♪◙♪◙♪◙♀U 0001BBE0 6C 74 72 61 50 65 65 6B 44 61 74 61 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ltraPeekData♪◙__________________ 0001BC00 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 65 _______________♪◙♪◙Purpose:○To e 0001BC20 78 61 6D 69 6E 65 20 61 6E 79 20 44 52 41 4D 20 6C 6F 63 61 74 69 6F 6E 20 6F 6E 20 74 68 65 20 xamine any DRAM location on the 0001BC40 55 6C 74 72 61 53 6F 75 6E 64 2E 0D 0A 0D 0A 43 3A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 UltraSound.♪◙♪◙C:○○○unsigned cha 0001BC60 72 20 55 6C 74 72 61 50 65 65 6B 44 61 74 61 28 62 61 73 65 70 6F 72 74 2C 6C 6F 63 61 74 69 6F r UltraPeekData(baseport,locatio 0001BC80 6E 29 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 62 61 73 65 70 6F 72 74 3B 0D 0A n);♪◙○○○unsigned int baseport;♪◙ 0001BCA0 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 6C 6F 63 61 74 69 6F 6E 3B 0D 0A 0D 0A 50 41 ○○○unsigned long location;♪◙♪◙PA 0001BCC0 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 50 65 65 6B 44 61 74 61 28 50 50 6F SCAL:○FUNCTION UltraPeekData(PPo 0001BCE0 72 74 20 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 rt : INTEGER;♪◙○○○ 0001BD00 20 20 20 20 20 20 20 20 20 20 20 41 64 64 72 65 73 73 20 3A 20 4C 4F 4E 47 49 4E 54 29 20 3A 20 Address : LONGINT) : 0001BD20 42 59 54 45 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 BYTE;♪◙♪◙Remarks:○This routine i 0001BD40 73 20 75 73 65 64 20 74 6F 20 61 6C 6C 6F 77 20 61 6E 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 74 s used to allow an application t 0001BD60 6F 20 6C 6F 6F 6B 20 61 74 20 61 6E 79 20 6C 6F 63 61 74 69 6F 6E 20 69 6E 20 55 6C 74 72 61 53 o look at any location in UltraS 0001BD80 6F 75 6E 64 27 73 20 44 52 41 4D 2E 20 20 54 68 69 73 20 63 61 6E 20 62 65 20 68 61 6E 64 79 20 ound's DRAM. This can be handy 0001BDA0 66 6F 72 20 6F 62 74 61 69 6E 69 6E 67 20 56 55 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 72 20 for obtaining VU information or 0001BDC0 61 6E 79 20 6F 74 68 65 72 20 74 69 6D 65 20 69 74 20 69 73 20 6E 69 63 65 20 74 6F 20 6B 6E 6F any other time it is nice to kno 0001BDE0 77 20 77 68 61 74 20 69 73 20 69 6E 20 44 52 41 4D 2E 20 20 42 65 20 61 77 61 72 65 20 74 68 61 w what is in DRAM. Be aware tha 0001BE00 74 20 69 66 20 74 68 65 20 64 61 74 61 20 69 73 20 70 6C 61 79 61 62 6C 65 20 69 74 20 77 69 6C t if the data is playable it wil 0001BE20 6C 20 62 65 20 69 6E 20 74 77 6F 73 20 63 6F 6D 70 6C 69 6D 65 6E 74 20 66 6F 72 6D 2E 20 20 49 l be in twos compliment form. I 0001BE40 66 20 74 68 65 20 64 61 74 61 20 74 68 61 74 20 79 6F 75 20 77 61 6E 74 20 69 73 20 31 36 20 62 f the data that you want is 16 b 0001BE60 69 74 20 64 61 74 61 2C 20 79 6F 75 20 77 69 6C 6C 20 6E 65 65 64 20 74 6F 20 70 65 65 6B 20 62 it data, you will need to peek b 0001BE80 6F 74 68 20 6C 6F 63 61 74 69 6F 6E 73 20 61 6E 64 20 64 6F 20 61 6E 79 20 61 70 70 72 6F 70 72 oth locations and do any appropr 0001BEA0 69 61 74 65 20 63 6F 6E 76 65 72 73 69 6F 6E 73 2E 20 20 54 68 65 20 64 61 74 61 20 77 69 6C 6C iate conversions. The data will 0001BEC0 20 62 65 20 69 6E 20 6C 6F 77 2F 68 69 67 68 20 66 6F 72 6D 61 74 2E 20 20 54 68 61 74 20 6D 65 be in low/high format. That me 0001BEE0 61 6E 73 20 74 68 61 74 20 74 68 65 20 6C 6F 77 20 62 79 74 65 20 6F 66 20 74 68 65 20 64 61 74 ans that the low byte of the dat 0001BF00 61 20 77 69 6C 6C 20 62 65 20 69 6E 20 74 68 65 20 65 76 65 6E 20 62 79 74 65 20 61 6E 64 20 74 a will be in the even byte and t 0001BF20 68 65 20 68 69 67 68 20 62 79 74 65 20 77 69 6C 6C 20 62 65 20 69 6E 20 74 68 65 20 6F 64 64 20 he high byte will be in the odd 0001BF40 62 79 74 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 44 61 74 61 20 62 79 74 65 20 61 74 20 6C byte.♪◙♪◙Returns:○Data byte at l 0001BF60 6F 63 61 74 69 6F 6E 20 73 70 65 63 69 66 69 65 64 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 ocation specified.♪◙♪◙See also:○ 0001BF80 55 6C 74 72 61 50 6F 6B 65 44 61 74 61 2C 20 55 6C 74 72 61 55 70 6C 6F 61 64 0D 0A 0D 0A 0D 0A UltraPokeData, UltraUpload♪◙♪◙♪◙ 0001BFA0 0D 0A 55 6C 74 72 61 50 69 6E 67 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ♪◙UltraPing♪◙___________________ 0001BFC0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 71 75 ______________♪◙♪◙Purpose:○To qu 0001BFE0 69 63 6B 6C 79 20 63 68 65 63 6B 20 74 6F 20 73 65 65 20 69 66 20 61 6E 20 55 6C 74 72 61 53 6F ickly check to see if an UltraSo 0001C000 75 6E 64 20 69 73 20 70 72 65 73 65 6E 74 20 61 74 20 61 20 73 70 65 63 69 66 69 65 64 20 70 6F und is present at a specified po 0001C020 72 74 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 50 69 6E 67 28 62 61 73 65 70 6F rt.♪◙♪◙C:○○○int UltraPing(basepo 0001C040 72 74 29 3B 0D 0A 09 09 09 69 6E 74 20 62 61 73 65 70 6F 72 74 3B 0D 0A 0D 0A 50 41 53 43 41 4C rt);♪◙○○○int baseport;♪◙♪◙PASCAL 0001C060 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 50 69 6E 67 28 50 50 6F 72 74 20 3A 20 57 4F 52 :○FUNCTION UltraPing(PPort : WOR 0001C080 44 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 D) : BOOLEAN;♪◙♪◙Remarks:○This r 0001C0A0 6F 75 74 69 6E 65 20 77 69 6C 6C 20 64 65 74 65 72 6D 69 6E 65 20 69 66 20 61 6E 20 55 6C 74 72 outine will determine if an Ultr 0001C0C0 61 53 6F 75 6E 64 20 69 73 20 70 72 65 73 65 6E 74 20 62 79 20 61 74 74 65 6D 70 74 69 6E 67 20 aSound is present by attempting 0001C0E0 74 6F 20 72 65 61 64 20 61 6E 64 20 77 72 69 74 65 20 74 6F 20 69 74 73 20 44 52 41 4D 2E 20 20 to read and write to its DRAM. 0001C100 54 68 69 73 20 72 6F 75 74 69 6E 65 20 61 73 73 75 6D 65 73 20 74 68 61 74 20 61 74 20 6C 65 61 This routine assumes that at lea 0001C120 73 74 20 61 20 73 69 6D 70 6C 65 20 72 65 73 65 74 20 68 61 73 20 62 65 65 6E 20 64 6F 6E 65 20 st a simple reset has been done 0001C140 73 69 6E 63 65 20 70 6F 77 65 72 2D 75 70 20 73 6F 20 74 68 61 74 20 74 68 65 20 62 6F 61 72 64 since power-up so that the board 0001C160 20 69 73 20 6E 6F 20 6C 6F 6E 67 65 72 20 69 6E 20 61 20 72 65 73 65 74 20 73 74 61 74 65 2E 20 is no longer in a reset state. 0001C180 20 49 66 20 69 74 20 69 73 20 6F 6E 20 61 20 72 65 73 65 74 20 73 74 61 74 65 2C 20 74 68 69 73 If it is on a reset state, this 0001C1A0 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 41 4C 57 41 59 53 20 66 61 69 6C 2E 20 20 55 6C 74 72 routine will ALWAYS fail. Ultr 0001C1C0 61 50 72 6F 62 65 20 70 75 6C 6C 73 20 61 20 71 75 69 63 6B 20 72 65 73 65 74 20 61 6E 64 20 74 aProbe pulls a quick reset and t 0001C1E0 68 65 6E 20 63 61 6C 6C 73 20 55 6C 74 72 61 50 69 6E 67 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A hen calls UltraPing.♪◙♪◙Returns: 0001C200 09 43 3A 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 20 69 66 20 6E 6F 20 70 72 6F 62 6C 65 6D 2E ○C: ULTRA_OK if no problem. 0001C220 0D 0A 09 09 09 20 20 20 20 20 20 20 20 4E 4F 5F 55 4C 54 52 41 20 69 66 20 6E 6F 20 62 6F 61 72 ♪◙○○○ NO_ULTRA if no boar 0001C240 64 20 69 73 20 66 6F 75 6E 64 20 61 74 20 73 70 65 63 69 66 69 65 64 20 49 2F 4F 20 70 6F 72 74 d is found at specified I/O port 0001C260 2E 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 74 68 65 20 63 61 72 64 .♪◙♪◙○○○PASCAL: TRUE if the card 0001C280 20 77 61 73 20 66 6F 75 6E 64 2E 20 20 20 46 41 4C 53 45 20 6F 74 68 65 72 77 69 73 65 2E 0D 0A was found. FALSE otherwise.♪◙ 0001C2A0 09 09 09 20 20 20 20 20 20 20 20 49 66 20 75 6E 73 75 63 63 65 73 73 66 75 6C 2C 20 63 68 65 63 ○○○ If unsuccessful, chec 0001C2C0 6B 20 55 6C 74 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D k UltraErrorStr for the reason.♪ 0001C2E0 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 50 72 6F 62 65 0D 0A 0C 55 6C 74 72 61 50 ◙♪◙See also:○UltraProbe♪◙♀UltraP 0001C300 6F 6B 65 44 61 74 61 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F okeData♪◙_______________________ 0001C320 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 70 6F 6B 65 20 61 __________♪◙♪◙Purpose:○To poke a 0001C340 20 62 79 74 65 20 69 6E 74 6F 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 27 73 20 44 52 41 4D byte into the UltraSound's DRAM 0001C360 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 50 6F 6B 65 44 61 74 61 28 62 61 73 .♪◙♪◙C:○○○void UltraPokeData(bas 0001C380 65 70 6F 72 74 2C 6C 6F 63 61 74 69 6F 6E 2C 64 61 74 61 29 3B 0D 0A 09 09 09 75 6E 73 69 67 6E eport,location,data);♪◙○○○unsign 0001C3A0 65 64 20 69 6E 74 20 62 61 73 65 70 6F 72 74 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F ed int baseport;♪◙○○○unsigned lo 0001C3C0 6E 67 20 6C 6F 63 61 74 69 6F 6E 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 64 ng location;♪◙○○○unsigned char d 0001C3E0 61 74 61 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 50 ata;♪◙♪◙PASCAL:○PROCEDURE UltraP 0001C400 6F 6B 65 44 61 74 61 28 50 50 6F 72 74 20 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 okeData(PPort : INTEGER;♪◙○○○ 0001C420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 64 64 72 65 73 73 20 3A Address : 0001C440 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 LONGINT;♪◙○○○ 0001C460 20 20 20 20 20 20 44 61 74 61 20 20 20 20 3A 20 42 59 54 45 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B Data : BYTE);♪◙♪◙Remark 0001C480 73 3A 09 50 6F 6B 65 20 61 6E 20 38 20 62 69 74 20 76 61 6C 75 65 20 64 69 72 65 63 74 6C 79 20 s:○Poke an 8 bit value directly 0001C4A0 69 6E 74 6F 20 55 6C 74 72 61 53 6F 75 6E 64 20 44 52 41 4D 2E 20 20 54 68 69 73 20 63 61 6E 20 into UltraSound DRAM. This can 0001C4C0 62 65 20 75 73 65 66 75 6C 20 74 6F 20 73 65 74 20 74 68 65 20 76 61 6C 75 65 20 6F 66 20 74 68 be useful to set the value of th 0001C4E0 65 20 6C 6F 63 61 74 69 6F 6E 20 74 68 61 74 20 61 20 76 6F 69 63 65 20 69 73 20 70 6F 69 6E 74 e location that a voice is point 0001C500 69 6E 67 20 74 6F 2E 20 20 49 74 20 69 73 20 6F 66 74 65 6E 20 64 65 73 69 72 61 62 6C 65 20 74 ing to. It is often desirable t 0001C520 6F 20 70 6F 69 6E 74 20 61 20 76 6F 69 63 65 20 74 6F 20 61 20 6B 6E 6F 77 6E 20 76 61 6C 75 65 o point a voice to a known value 0001C540 20 73 69 6E 63 65 20 69 74 73 20 6F 75 74 70 75 74 20 69 73 20 41 4C 57 41 59 53 20 73 75 6D 6D since its output is ALWAYS summ 0001C560 65 64 20 69 6E 20 74 6F 20 74 68 65 20 6F 75 74 70 75 74 20 65 76 65 6E 20 69 66 20 74 68 65 20 ed in to the output even if the 0001C580 76 6F 69 63 65 20 69 73 20 6E 6F 74 20 72 75 6E 6E 69 6E 67 2E 20 20 42 65 20 61 77 61 72 65 20 voice is not running. Be aware 0001C5A0 74 68 61 74 20 74 68 65 72 65 20 69 73 20 6E 6F 20 61 75 74 6F 6D 61 74 69 63 20 63 6F 6E 76 65 that there is no automatic conve 0001C5C0 72 73 69 6F 6E 20 6F 66 20 64 61 74 61 20 70 6F 6B 65 64 20 69 6E 74 6F 20 44 52 41 4D 2E 20 20 rsion of data poked into DRAM. 0001C5E0 53 69 6E 63 65 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 63 61 6E 20 6F 6E 6C 79 20 70 6C Since the UltraSound can only pl 0001C600 61 79 20 74 77 6F 73 20 63 6F 6D 70 6C 69 6D 65 6E 74 20 64 61 74 61 2C 20 6D 61 6B 65 20 73 75 ay twos compliment data, make su 0001C620 72 65 20 74 68 61 74 20 74 68 65 20 64 61 74 61 20 79 6F 75 20 61 72 65 20 70 6F 6B 69 6E 67 20 re that the data you are poking 0001C640 69 73 20 69 6E 20 74 68 61 74 20 66 6F 72 6D 61 74 2E 20 20 41 6C 73 6F 20 62 65 20 63 61 72 65 is in that format. Also be care 0001C660 66 75 6C 20 77 69 74 68 20 31 36 20 62 69 74 20 64 61 74 61 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 ful with 16 bit data.♪◙♪◙See als 0001C680 6F 3A 09 55 6C 74 72 61 50 65 65 6B 44 61 74 61 2C 20 55 6C 74 72 61 44 6F 77 6E 6C 6F 61 64 0D o:○UltraPeekData, UltraDownload♪ 0001C6A0 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 50 72 69 6D 65 52 65 63 6F 72 64 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F ◙♪◙♪◙♀UltraPrimeRecord♪◙________ 0001C6C0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 _________________________♪◙♪◙Pur 0001C6E0 70 6F 73 65 3A 09 54 6F 20 70 72 69 6D 65 20 74 68 65 20 72 65 63 6F 72 64 20 44 4D 41 20 63 68 pose:○To prime the record DMA ch 0001C700 61 6E 6E 65 6C 20 66 6F 72 20 75 73 65 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 annel for use.♪◙♪◙C:○○○int Ultra 0001C720 50 72 69 6D 65 52 65 63 6F 72 64 28 70 63 5F 70 74 72 2C 73 69 7A 65 2C 72 65 70 65 61 74 29 3B PrimeRecord(pc_ptr,size,repeat); 0001C740 0D 0A 09 09 09 76 6F 69 64 20 66 61 72 20 2A 70 63 5F 70 74 72 3B 0D 0A 09 09 09 75 6E 73 69 67 ♪◙○○○void far *pc_ptr;♪◙○○○unsig 0001C760 6E 65 64 20 69 6E 74 20 73 69 7A 65 3B 0D 0A 09 09 09 69 6E 74 20 72 65 70 65 61 74 3B 0D 0A 0D ned int size;♪◙○○○int repeat;♪◙♪ 0001C780 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 50 72 69 6D 65 52 65 63 6F ◙PASCAL:○FUNCTION UltraPrimeReco 0001C7A0 72 64 28 50 43 5F 50 74 72 20 20 3A 20 50 4F 49 4E 54 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 rd(PC_Ptr : POINTER;♪◙○○○ 0001C7C0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 69 7A 65 20 20 20 20 3A 20 57 4F Size : WO 0001C7E0 52 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RD;♪◙○○○ 0001C800 20 20 52 52 65 70 65 61 74 20 3A 20 42 4F 4F 4C 45 41 4E 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D RRepeat : BOOLEAN) : BOOLEAN;♪ 0001C820 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 73 65 ◙♪◙Remarks:○This routine will se 0001C840 74 75 70 20 74 68 65 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 74 6F 20 64 6F 20 61 20 72 65 63 6F tup the DMA channel to do a reco 0001C860 72 64 2C 20 62 75 74 20 64 6F 65 73 20 6E 6F 74 20 73 74 61 72 74 20 69 74 2E 20 20 54 68 69 73 rd, but does not start it. This 0001C880 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 68 65 6C 70 20 73 79 6E 63 68 72 6F 6E 69 7A 65 can be used to help synchronize 0001C8A0 20 65 76 65 6E 74 73 2E 20 20 50 72 6F 67 72 61 6D 6D 69 6E 67 20 74 68 65 20 44 4D 41 20 63 68 events. Programming the DMA ch 0001C8C0 61 6E 6E 65 6C 20 63 61 6E 20 74 61 6B 65 20 65 6E 6F 75 67 68 20 74 69 6D 65 20 73 6F 20 74 68 annel can take enough time so th 0001C8E0 61 74 20 61 20 66 65 77 20 73 61 6D 70 6C 65 73 20 6D 61 79 20 62 65 20 6C 6F 73 74 2E 20 20 28 at a few samples may be lost. ( 0001C900 44 65 70 65 6E 64 69 6E 67 20 6F 6E 20 73 61 6D 70 6C 65 20 72 61 74 65 29 2E 20 20 54 68 69 73 Depending on sample rate). This 0001C920 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 68 65 6C 70 20 61 6C 6C 65 76 69 61 74 65 20 74 68 69 routine will help alleviate thi 0001C940 73 20 70 72 6F 62 6C 65 6D 20 62 79 20 64 6F 69 6E 67 20 74 68 65 20 70 72 6F 67 72 61 6D 6D 69 s problem by doing the programmi 0001C960 6E 67 20 61 68 65 61 64 20 6F 66 20 74 69 6D 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 43 3A ng ahead of time.♪◙♪◙Returns:○C: 0001C980 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 20 69 66 20 6E 6F 20 70 72 6F 62 6C 65 6D 2E 0D 0A 09 ULTRA_OK if no problem.♪◙○ 0001C9A0 09 09 20 20 20 20 20 20 20 20 44 4D 41 5F 42 55 53 59 20 69 66 20 44 4D 41 20 43 68 61 6E 6E 65 ○○ DMA_BUSY if DMA Channe 0001C9C0 6C 20 69 73 20 62 75 73 79 2E 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 l is busy.♪◙♪◙○○○PASCAL: TRUE if 0001C9E0 20 73 65 74 75 70 20 77 61 73 20 73 75 63 63 65 73 73 66 75 6C 2E 20 20 20 46 41 4C 53 45 20 6F setup was successful. FALSE o 0001CA00 74 68 65 72 77 69 73 65 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 49 66 20 75 6E 73 75 63 63 65 therwise.♪◙○○○ If unsucce 0001CA20 73 73 66 75 6C 2C 20 63 68 65 63 6B 20 55 6C 74 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 20 74 ssful, check UltraErrorStr for t 0001CA40 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 47 6F 52 he reason.♪◙♪◙See also:○UltraGoR 0001CA60 65 63 6F 72 64 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 50 72 69 6D 65 56 6F 69 63 65 0D 0A 5F 5F 5F ecord♪◙♪◙♪◙♀UltraPrimeVoice♪◙___ 0001CA80 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A ______________________________♪◙ 0001CAA0 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 70 72 69 6D 65 20 61 20 76 6F 69 63 65 20 77 69 74 68 ♪◙Purpose:○To prime a voice with 0001CAC0 20 76 61 6C 75 65 73 20 62 75 74 20 4E 4F 54 20 73 74 61 72 74 20 69 74 2E 0D 0A 0D 0A 43 3A 09 values but NOT start it.♪◙♪◙C:○ 0001CAE0 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 55 6C 74 72 61 50 72 69 6D 65 56 6F 69 63 65 28 ○○unsigned char UltraPrimeVoice( 0001CB00 76 6F 69 63 65 2C 62 65 67 69 6E 2C 73 74 61 72 74 2C 65 6E 64 2C 6D 6F 64 65 29 3B 0D 0A 09 09 voice,begin,start,end,mode);♪◙○○ 0001CB20 09 69 6E 74 20 76 6F 69 63 65 3B 09 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 62 ○int voice;○♪◙○○○unsigned long b 0001CB40 65 67 69 6E 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 73 74 61 72 74 3B 0D 0A egin;♪◙○○○unsigned long start;♪◙ 0001CB60 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 65 6E 64 3B 20 20 0D 0A 09 09 09 75 6E 73 69 ○○○unsigned long end; ♪◙○○○unsi 0001CB80 67 6E 65 64 20 63 68 61 72 20 6D 6F 64 65 3B 20 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 gned char mode; ♪◙♪◙PASCAL:○FUNC 0001CBA0 54 49 4F 4E 20 55 6C 74 72 61 50 72 69 6D 65 56 6F 69 63 65 28 56 6F 69 63 65 20 20 20 20 3A 20 TION UltraPrimeVoice(Voice : 0001CBC0 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 INTEGER;♪◙○○○ 0001CBE0 20 20 20 20 20 20 56 42 65 67 69 6E 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 20 VBegin : LONGINT;♪◙○○○ 0001CC00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 53 74 61 72 74 20 20 20 VStart 0001CC20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : LONGINT;♪◙○○○ 0001CC40 20 20 20 20 20 20 20 20 56 45 6E 64 20 20 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 VEnd : LONGINT;♪◙○○○ 0001CC60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 4D 6F 64 65 20 20 VMode 0001CC80 20 20 3A 20 42 59 54 45 29 20 3A 20 42 59 54 45 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 : BYTE) : BYTE;♪◙♪◙Remarks:○Th 0001CCA0 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 75 73 65 64 20 74 6F 20 64 6F 20 61 6C 6C 20 74 68 65 is routine is used to do all the 0001CCC0 20 73 65 74 75 70 20 6E 65 63 65 73 73 61 72 79 20 74 6F 20 73 74 61 72 74 20 61 20 76 6F 69 63 setup necessary to start a voic 0001CCE0 65 20 62 75 74 20 64 6F 65 73 20 4E 4F 54 20 73 74 61 72 74 20 69 74 20 75 70 2E 20 20 54 68 69 e but does NOT start it up. Thi 0001CD00 73 20 63 61 6E 20 62 65 20 75 73 65 66 75 6C 20 69 66 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 73 s can be useful if you want to s 0001CD20 74 61 72 74 20 6D 6F 72 65 20 74 68 61 6E 20 31 20 76 6F 69 63 65 20 61 74 20 74 68 65 20 73 61 tart more than 1 voice at the sa 0001CD40 6D 65 20 74 69 6D 65 2E 20 20 55 73 65 20 55 6C 74 72 61 50 72 69 6D 65 56 6F 69 63 65 20 74 6F me time. Use UltraPrimeVoice to 0001CD60 20 64 6F 20 61 6C 6C 20 74 68 65 20 6E 65 63 65 73 73 61 72 79 20 73 65 74 75 70 20 61 6E 64 20 do all the necessary setup and 0001CD80 74 68 65 6E 20 75 73 65 20 55 6C 74 72 61 47 6F 56 6F 69 63 65 20 74 6F 20 73 74 61 72 74 20 74 then use UltraGoVoice to start t 0001CDA0 68 65 20 76 6F 69 63 65 73 2E 20 20 55 6C 74 72 61 53 74 61 72 74 56 6F 69 63 65 20 63 61 6C 6C he voices. UltraStartVoice call 0001CDC0 73 20 55 6C 74 72 61 50 72 69 6D 65 56 6F 69 63 65 20 61 6E 64 20 74 68 65 6E 20 69 6D 6D 65 64 s UltraPrimeVoice and then immed 0001CDE0 69 61 74 65 6C 79 20 55 6C 74 72 61 47 6F 56 6F 69 63 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A iately UltraGoVoice.♪◙♪◙Returns: 0001CE00 09 41 6E 20 75 70 64 61 74 65 64 20 6D 6F 64 65 20 76 61 6C 75 65 2E 20 20 54 68 65 20 6D 6F 64 ○An updated mode value. The mod 0001CE20 65 20 6D 61 79 20 62 65 20 6D 6F 64 69 66 69 65 64 20 6F 6E 20 74 68 65 20 62 61 73 69 73 20 6F e may be modified on the basis o 0001CE40 66 20 74 68 65 20 6C 6F 63 61 74 69 6F 6E 20 70 61 72 61 6D 65 74 65 72 73 2E 20 20 54 68 69 73 f the location parameters. This 0001CE60 20 61 6C 74 65 72 65 64 20 76 61 6C 75 65 20 73 68 6F 75 6C 64 20 62 65 20 74 68 65 20 6F 6E 65 altered value should be the one 0001CE80 20 70 61 73 73 65 64 20 74 6F 20 55 6C 74 72 61 47 6F 56 6F 69 63 65 2E 0D 0A 0D 0A 53 65 65 20 passed to UltraGoVoice.♪◙♪◙See 0001CEA0 61 6C 73 6F 3A 09 55 6C 74 72 61 53 74 61 72 74 56 6F 69 63 65 2C 20 55 6C 74 72 61 47 6F 56 6F also:○UltraStartVoice, UltraGoVo 0001CEC0 69 63 65 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 50 72 6F 62 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ice♪◙♪◙♪◙♀UltraProbe♪◙__________ 0001CEE0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F _______________________♪◙♪◙Purpo 0001CF00 73 65 3A 09 54 6F 20 70 72 6F 62 65 20 66 6F 72 20 74 68 65 20 65 78 69 73 74 65 6E 63 65 20 6F se:○To probe for the existence o 0001CF20 66 20 61 6E 20 55 6C 74 72 61 53 6F 75 6E 64 20 61 74 20 61 20 73 70 65 63 69 66 69 65 64 20 70 f an UltraSound at a specified p 0001CF40 6F 72 74 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 50 72 6F 62 65 28 62 61 73 65 ort.♪◙♪◙C:○○○int UltraProbe(base 0001CF60 5F 70 6F 72 74 29 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 62 61 73 65 5F 70 6F _port);♪◙○○○unsigned int base_po 0001CF80 72 74 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 50 72 6F rt;♪◙♪◙PASCAL:○FUNCTION UltraPro 0001CFA0 62 65 28 50 50 6F 72 74 20 3A 20 57 4F 52 44 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 be(PPort : WORD) : BOOLEAN;♪◙♪◙R 0001CFC0 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 70 72 6F 62 65 73 20 66 6F 72 20 emarks:○This routine probes for 0001CFE0 74 68 65 20 65 78 69 73 74 65 6E 63 65 20 6F 66 20 61 6E 20 55 6C 74 72 61 53 6F 75 6E 64 20 63 the existence of an UltraSound c 0001D000 61 72 64 20 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 62 61 73 65 20 70 6F 72 74 2E 20 ard at the specified base port. 0001D020 20 41 6E 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 63 6F 75 6C 64 20 63 61 6C 6C 20 74 68 69 73 20 An application could call this 0001D040 62 65 66 6F 72 65 20 63 61 6C 6C 69 6E 67 20 55 6C 74 72 61 4F 70 65 6E 20 74 6F 20 73 65 65 20 before calling UltraOpen to see 0001D060 69 66 20 61 20 63 61 72 64 20 69 73 20 70 72 65 73 65 6E 74 2E 20 20 55 6C 74 72 61 4F 70 65 6E if a card is present. UltraOpen 0001D080 20 63 61 6C 6C 73 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 61 6C 73 6F 2E 20 20 54 68 65 20 64 calls this routine also. The d 0001D0A0 69 66 66 65 72 65 6E 63 65 20 62 65 74 77 65 65 6E 20 55 6C 74 72 61 50 72 6F 62 65 20 61 6E 64 ifference between UltraProbe and 0001D0C0 20 55 6C 74 72 61 50 69 6E 67 20 69 73 20 74 68 61 74 20 55 6C 74 72 61 50 72 6F 62 65 20 77 69 UltraPing is that UltraProbe wi 0001D0E0 6C 6C 20 70 75 6C 6C 20 61 20 72 65 73 65 74 20 74 6F 20 6D 61 6B 65 20 73 75 72 65 20 74 68 65 ll pull a reset to make sure the 0001D100 20 62 6F 61 72 64 20 69 73 20 72 75 6E 6E 69 6E 67 2E 20 20 55 6C 74 72 61 50 69 6E 67 20 61 73 board is running. UltraPing as 0001D120 73 75 6D 65 73 20 74 68 69 73 20 68 61 73 20 61 6C 72 65 61 64 79 20 62 65 65 6E 20 64 6F 6E 65 sumes this has already been done 0001D140 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 20 69 .♪◙♪◙Returns:○C: ULTRA_OK i 0001D160 66 20 6E 6F 20 70 72 6F 62 6C 65 6D 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 4E 4F 5F 55 4C 54 f no problem.♪◙○○○ NO_ULT 0001D180 52 41 20 69 66 20 6E 6F 20 63 61 72 64 20 77 61 73 20 66 6F 75 6E 64 20 61 74 20 74 68 65 20 70 RA if no card was found at the p 0001D1A0 6F 72 74 20 73 70 65 63 69 66 69 65 64 2E 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 ort specified.♪◙♪◙○○○PASCAL: TRU 0001D1C0 45 20 69 66 20 74 68 65 20 63 61 72 64 20 69 73 20 66 6F 75 6E 64 2E 20 20 20 46 41 4C 53 45 20 E if the card is found. FALSE 0001D1E0 6F 74 68 65 72 77 69 73 65 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 49 66 20 75 6E 73 75 63 63 otherwise.♪◙○○○ If unsucc 0001D200 65 73 73 66 75 6C 2C 20 63 68 65 63 6B 20 55 6C 74 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 20 essful, check UltraErrorStr for 0001D220 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4F 70 the reason.♪◙♪◙See also:○UltraOp 0001D240 65 6E 2C 20 55 6C 74 72 61 50 69 6E 67 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 52 61 6D 70 56 6F 6C en, UltraPing♪◙♪◙♪◙♀UltraRampVol 0001D260 75 6D 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ume♪◙___________________________ 0001D280 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 61 6D 70 20 61 20 76 6F 69 ______♪◙♪◙Purpose:○To ramp a voi 0001D2A0 63 65 27 73 20 76 6F 6C 75 6D 65 20 75 70 20 6F 72 20 64 6F 77 6E 2E 0D 0A 0D 0A 43 3A 09 09 09 ce's volume up or down.♪◙♪◙C:○○○ 0001D2C0 76 6F 69 64 20 55 6C 74 72 61 52 61 6D 70 56 6F 6C 75 6D 65 28 76 6F 69 63 65 2C 73 74 61 72 74 void UltraRampVolume(voice,start 0001D2E0 2C 65 6E 64 2C 72 61 74 65 2C 6D 6F 64 65 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D ,end,rate,mode);♪◙○○○int voice;♪ 0001D300 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 73 74 61 72 74 3B 0D 0A 09 09 09 75 6E 73 69 ◙○○○unsigned int start;♪◙○○○unsi 0001D320 67 6E 65 64 20 69 6E 74 20 65 6E 64 3B 20 20 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 gned int end; ♪◙○○○unsigned cha 0001D340 72 20 72 61 74 65 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 6D 6F 64 65 3B 0D r rate;♪◙○○○unsigned char mode;♪ 0001D360 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 52 61 6D 70 56 6F ◙♪◙PASCAL:○PROCEDURE UltraRampVo 0001D380 6C 75 6D 65 28 56 6F 69 63 65 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 lume(Voice : INTEGER;♪◙○○○ 0001D3A0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 61 72 74 56 20 3A 20 57 4F StartV : WO 0001D3C0 52 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RD;♪◙○○○ 0001D3E0 20 20 45 6E 64 56 20 20 20 3A 20 57 4F 52 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 EndV : WORD;♪◙○○○ 0001D400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 52 61 74 65 20 20 3A 20 42 59 54 45 3B 0D 0A 09 VRate : BYTE;♪◙○ 0001D420 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 4D 6F 64 ○○ VMod 0001D440 65 20 20 3A 20 42 59 54 45 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 53 74 61 72 74 20 61 20 e : BYTE);♪◙♪◙Remarks:○Start a 0001D460 76 6F 6C 75 6D 65 20 72 61 6D 70 20 66 72 6F 6D 20 61 20 73 74 61 72 74 69 6E 67 20 76 6F 6C 75 volume ramp from a starting volu 0001D480 6D 65 20 74 6F 20 74 68 65 20 65 6E 64 69 6E 67 20 76 6F 6C 75 6D 65 2E 20 20 54 68 65 20 72 61 me to the ending volume. The ra 0001D4A0 74 65 20 61 74 20 77 68 69 63 68 20 74 68 65 20 72 61 6D 70 20 6F 63 63 75 72 73 20 63 61 6E 20 te at which the ramp occurs can 0001D4C0 62 65 20 63 61 6C 63 75 6C 61 74 65 64 20 75 73 69 6E 67 20 55 6C 74 72 61 43 61 6C 63 52 61 74 be calculated using UltraCalcRat 0001D4E0 65 2E 20 20 54 68 65 20 6D 6F 64 65 20 64 65 74 65 72 6D 69 6E 65 73 20 74 68 65 20 6C 6F 6F 70 e. The mode determines the loop 0001D500 69 6E 67 20 61 6E 64 20 69 6E 74 65 72 72 75 70 74 69 6E 67 20 63 68 61 72 61 63 74 65 72 69 73 ing and interrupting characteris 0001D520 74 69 63 73 20 6F 66 20 74 68 65 20 72 61 6D 70 2E 20 20 49 66 20 79 6F 75 20 63 68 6F 6F 73 65 tics of the ramp. If you choose 0001D540 20 74 6F 20 68 61 76 65 20 69 74 20 69 6E 74 65 72 72 75 70 74 20 61 74 20 74 68 65 20 65 6E 64 to have it interrupt at the end 0001D560 20 6F 66 20 74 68 65 20 72 61 6D 70 2C 20 79 6F 75 20 73 68 6F 75 6C 64 20 73 65 74 20 75 70 20 of the ramp, you should set up 0001D580 61 6E 20 72 6F 75 74 69 6E 65 20 74 6F 20 63 61 6C 6C 20 66 6F 72 20 61 20 76 6F 6C 75 6D 65 20 an routine to call for a volume 0001D5A0 69 6E 74 65 72 72 75 70 74 2E 20 20 54 68 69 73 20 69 73 20 64 6F 6E 65 20 77 69 74 68 20 74 68 interrupt. This is done with th 0001D5C0 65 20 72 6F 75 74 69 6E 65 20 55 6C 74 72 61 56 6F 6C 75 6D 65 48 61 6E 64 6C 65 72 2E 20 20 54 e routine UltraVolumeHandler. T 0001D5E0 68 65 20 76 6F 6C 75 6D 65 20 6D 6F 64 65 20 62 69 74 73 20 61 72 65 20 64 65 66 69 6E 65 64 20 he volume mode bits are defined 0001D600 69 6E 20 41 70 70 65 6E 64 69 78 20 42 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 in Appendix B.♪◙♪◙See also:○Ultr 0001D620 61 43 61 6C 63 52 61 74 65 2C 20 55 6C 74 72 61 56 6F 6C 75 6D 65 48 61 6E 64 6C 65 72 0D 0A 0D aCalcRate, UltraVolumeHandler♪◙♪ 0001D640 0A 0D 0A 0D 0A 55 6C 74 72 61 52 65 61 64 52 65 63 6F 72 64 50 6F 73 69 74 69 6F 6E 0D 0A 5F 5F ◙♪◙♪◙UltraReadRecordPosition♪◙__ 0001D660 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D _______________________________♪ 0001D680 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 65 74 75 72 6E 20 74 68 65 20 23 20 6F 66 20 62 ◙♪◙Purpose:○To return the # of b 0001D6A0 79 74 65 73 20 72 65 63 6F 72 64 65 64 20 73 6F 20 66 61 72 20 69 6E 20 61 20 72 65 63 6F 72 64 ytes recorded so far in a record 0001D6C0 2E 0D 0A 0D 0A 43 3A 09 09 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 55 6C 74 72 61 52 65 61 64 .♪◙♪◙C:○○○unsigned int UltraRead 0001D6E0 52 65 63 6F 72 64 50 6F 73 69 74 69 6F 6E 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A RecordPosition(void);♪◙♪◙PASCAL: 0001D700 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 52 65 61 64 52 65 63 6F 72 64 50 6F 73 69 74 69 6F ○FUNCTION UltraReadRecordPositio 0001D720 6E 20 3A 20 57 4F 52 44 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 n : WORD;♪◙♪◙Remarks:○This routi 0001D740 6E 65 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 6D 6F 6E 69 74 6F 72 20 74 68 65 20 61 6D ne can be used to monitor the am 0001D760 6F 75 6E 74 20 64 61 74 61 20 72 65 63 6F 72 64 65 64 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 ount data recorded.♪◙♪◙Returns:○ 0001D780 4E 75 6D 62 65 72 20 6F 66 20 42 59 54 45 53 20 72 65 63 6F 72 64 65 64 20 73 6F 20 66 61 72 2E Number of BYTES recorded so far. 0001D7A0 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 52 65 63 6F 72 64 44 61 74 61 0D 0A 0D ♪◙♪◙See also:○UltraRecordData♪◙♪ 0001D7C0 0A 0D 0A 0C 55 6C 74 72 61 52 65 61 64 56 6F 69 63 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ◙♪◙♀UltraReadVoice♪◙____________ 0001D7E0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 _____________________♪◙♪◙Purpose 0001D800 3A 09 54 6F 20 72 65 61 64 20 61 20 76 6F 69 63 65 27 73 20 63 75 72 72 65 6E 74 20 6C 6F 63 61 :○To read a voice's current loca 0001D820 74 69 6F 6E 2E 0D 0A 0D 0A 43 3A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 55 6C 74 72 tion.♪◙♪◙C:○○○unsigned long Ultr 0001D840 61 52 65 61 64 56 6F 69 63 65 28 76 6F 69 63 65 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 aReadVoice(voice);♪◙○○○int voice 0001D860 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 52 65 61 64 56 ;♪◙♪◙PASCAL:○FUNCTION UltraReadV 0001D880 6F 69 63 65 28 56 6F 69 63 65 20 3A 20 49 4E 54 45 47 45 52 29 20 3A 20 4C 4F 4E 47 49 4E 54 3B oice(Voice : INTEGER) : LONGINT; 0001D8A0 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6E 20 62 65 ♪◙♪◙Remarks:○This routine can be 0001D8C0 20 75 73 65 64 20 74 6F 20 6D 6F 6E 69 74 6F 72 20 61 20 76 6F 69 63 65 27 73 20 70 72 6F 67 72 used to monitor a voice's progr 0001D8E0 65 73 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 68 65 20 76 6F 69 63 65 27 73 20 63 75 72 ess.♪◙♪◙Returns:○The voice's cur 0001D900 72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 69 6E 20 44 52 41 4D 2E 0D 0A 0D 0A 53 65 65 20 61 6C rent position in DRAM.♪◙♪◙See al 0001D920 73 6F 3A 09 55 6C 74 72 61 53 65 74 56 6F 69 63 65 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 52 65 so:○UltraSetVoice♪◙♪◙♪◙♪◙UltraRe 0001D940 61 64 56 6F 6C 75 6D 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F adVolume♪◙______________________ 0001D960 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 65 61 64 20 ___________♪◙♪◙Purpose:○To read 0001D980 61 20 76 6F 69 63 65 27 73 20 63 75 72 72 65 6E 74 20 76 6F 6C 75 6D 65 2E 0D 0A 0D 0A 43 3A 09 a voice's current volume.♪◙♪◙C:○ 0001D9A0 09 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 55 6C 74 72 61 52 65 61 64 56 6F 6C 75 6D 65 28 76 ○○unsigned int UltraReadVolume(v 0001D9C0 6F 69 63 65 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A oice);♪◙○○○int voice;♪◙♪◙PASCAL: 0001D9E0 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 52 65 61 64 56 6F 6C 75 6D 65 28 56 6F 69 63 65 20 ○FUNCTION UltraReadVolume(Voice 0001DA00 3A 20 49 4E 54 45 47 45 52 29 20 3A 20 57 4F 52 44 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 : INTEGER) : WORD;♪◙♪◙Remarks:○T 0001DA20 68 69 73 20 72 6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73 20 74 68 65 20 63 75 72 72 65 6E 74 20 his routine returns the current 0001DA40 76 6F 6C 75 6D 65 20 6F 66 20 61 20 76 6F 69 63 65 2E 20 20 54 68 69 73 20 63 61 6E 20 62 65 20 volume of a voice. This can be 0001DA60 75 73 65 66 75 6C 20 77 68 65 6E 20 75 73 65 64 20 69 6E 20 63 6F 6E 6A 75 6E 63 74 69 6F 6E 20 useful when used in conjunction 0001DA80 77 69 74 68 20 76 6F 6C 75 6D 65 20 72 61 6D 70 73 2E 20 20 54 68 65 20 76 61 6C 75 65 20 72 65 with volume ramps. The value re 0001DAA0 74 75 72 6E 65 64 20 69 73 20 6C 6F 67 61 72 69 74 68 6D 69 63 2C 20 6E 6F 74 20 6C 69 6E 65 61 turned is logarithmic, not linea 0001DAC0 72 2E 20 20 50 41 53 43 41 4C 20 75 73 65 72 73 20 63 61 6E 20 75 73 65 20 55 6C 74 72 61 52 65 r. PASCAL users can use UltraRe 0001DAE0 61 64 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 30 2D 34 30 adLinearVolume.♪◙♪◙Returns:○0-40 0001DB00 39 35 20 76 61 6C 75 65 2C 20 74 68 65 20 63 75 72 72 65 6E 74 20 6C 6F 67 61 72 69 74 68 6D 69 95 value, the current logarithmi 0001DB20 63 20 76 6F 6C 75 6D 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 53 65 74 56 c volume.♪◙♪◙See also:○UltraSetV 0001DB40 6F 6C 75 6D 65 2C 20 55 6C 74 72 61 52 61 6D 70 56 6F 6C 75 6D 65 0D 0A 0D 0A 0D 0A 0C 55 6C 74 olume, UltraRampVolume♪◙♪◙♪◙♀Ult 0001DB60 72 61 52 65 63 6F 72 64 44 61 74 61 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F raRecordData♪◙__________________ 0001DB80 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 _______________♪◙♪◙Purpose:○To r 0001DBA0 65 63 6F 72 64 20 73 6F 6D 65 20 64 61 74 61 20 77 69 74 68 20 74 68 65 20 55 6C 74 72 61 53 6F ecord some data with the UltraSo 0001DBC0 75 6E 64 20 66 72 6F 6D 20 74 68 65 20 61 63 74 69 76 65 20 27 49 6E 27 20 70 6F 72 74 73 2E 0D und from the active 'In' ports.♪ 0001DBE0 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 52 65 63 6F 72 64 44 61 74 61 28 70 63 5F 70 ◙♪◙C:○○○int UltraRecordData(pc_p 0001DC00 74 72 2C 63 6F 6E 74 72 6F 6C 2C 73 69 7A 65 2C 77 61 69 74 2C 72 65 70 65 61 74 29 3B 0D 0A 09 tr,control,size,wait,repeat);♪◙○ 0001DC20 09 09 76 6F 69 64 20 66 61 72 20 2A 70 63 5F 70 74 72 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 ○○void far *pc_ptr;♪◙○○○unsigned 0001DC40 20 63 68 61 72 20 63 6F 6E 74 72 6F 6C 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 char control;♪◙○○○unsigned int 0001DC60 73 69 7A 65 3B 0D 0A 09 09 09 69 6E 74 20 77 61 69 74 3B 0D 0A 09 09 09 69 6E 74 20 72 65 70 65 size;♪◙○○○int wait;♪◙○○○int repe 0001DC80 61 74 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 52 65 63 at;♪◙♪◙PASCAL:○FUNCTION UltraRec 0001DCA0 6F 72 64 44 61 74 61 28 50 43 5F 50 74 72 20 20 3A 20 50 4F 49 4E 54 45 52 3B 0D 0A 09 09 09 20 ordData(PC_Ptr : POINTER;♪◙○○○ 0001DCC0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6F 6E 74 72 6F 6C 20 Control 0001DCE0 3A 20 42 59 54 45 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : BYTE;♪◙○○○ 0001DD00 20 20 20 20 20 53 69 7A 65 20 20 20 20 3A 20 57 4F 52 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 Size : WORD;♪◙○○○ 0001DD20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 61 69 74 20 20 20 20 3A 20 42 4F 4F 4C Wait : BOOL 0001DD40 45 41 4E 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 EAN;♪◙○○○ 0001DD60 20 20 52 52 65 70 65 61 74 20 3A 20 42 4F 4F 4C 45 41 4E 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D RRepeat : BOOLEAN) : BOOLEAN;♪ 0001DD80 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 72 65 ◙♪◙Remarks:○This routine will re 0001DDA0 63 6F 72 64 20 61 20 62 75 66 66 65 72 20 6F 66 20 64 61 74 61 20 66 72 6F 6D 20 55 6C 74 72 61 cord a buffer of data from Ultra 0001DDC0 53 6F 75 6E 64 2E 20 20 49 74 20 63 61 6E 20 62 65 20 69 6E 20 65 69 74 68 65 72 20 38 2D 62 69 Sound. It can be in either 8-bi 0001DDE0 74 20 6D 6F 6E 6F 20 6F 72 20 73 74 65 72 65 6F 2E 20 20 49 6E 20 73 74 65 72 65 6F 2C 20 74 68 t mono or stereo. In stereo, th 0001DE00 65 72 65 20 61 72 65 20 74 77 6F 20 62 79 74 65 73 20 61 6E 64 20 74 68 65 20 6C 65 66 74 20 62 ere are two bytes and the left b 0001DE20 79 74 65 20 69 73 20 66 69 72 73 74 2E 20 20 49 66 20 6D 6F 6E 6F 20 69 73 20 62 65 69 6E 67 20 yte is first. If mono is being 0001DE40 75 73 65 64 2C 20 74 68 65 20 6C 65 66 74 20 63 68 61 6E 6E 65 6C 20 69 73 20 74 68 65 20 6F 6E used, the left channel is the on 0001DE60 65 20 74 68 61 74 20 69 73 20 73 61 6D 70 6C 65 64 2E 20 20 53 65 65 20 41 70 70 65 6E 64 69 78 e that is sampled. See Appendix 0001DE80 20 45 20 66 6F 72 20 74 68 65 20 61 20 64 65 73 63 72 69 70 74 69 6F 6E 20 6F 66 20 74 68 65 20 E for the a description of the 0001DEA0 72 65 63 6F 72 64 69 6E 67 20 63 6F 6E 74 72 6F 6C 20 62 69 74 73 2E 20 20 49 66 20 27 77 61 69 recording control bits. If 'wai 0001DEC0 74 27 20 69 73 20 73 65 74 20 74 6F 20 61 20 6E 6F 6E 2D 7A 65 72 6F 20 76 61 6C 75 65 2C 20 74 t' is set to a non-zero value, t 0001DEE0 68 65 6E 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 6E 6F 74 20 72 65 74 75 72 6E hen this routine will not return 0001DF00 20 75 6E 74 69 6C 20 74 68 65 20 62 75 66 66 65 72 20 68 61 73 20 62 65 65 6E 20 66 69 6C 6C 65 until the buffer has been fille 0001DF20 64 2E 20 20 49 66 20 27 72 65 70 65 61 74 27 20 69 73 20 54 52 55 45 2C 20 74 68 65 6E 20 74 68 d. If 'repeat' is TRUE, then th 0001DF40 65 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 77 69 6C 6C 20 62 65 20 73 65 74 20 75 70 20 69 6E 20 e DMA channel will be set up in 0001DF60 61 75 74 6F 2D 69 6E 69 74 20 6D 6F 64 65 20 73 6F 20 74 68 61 74 20 74 68 65 20 72 65 63 6F 72 auto-init mode so that the recor 0001DF80 64 69 6E 67 20 69 73 20 64 6F 6E 65 20 69 6E 64 65 66 69 6E 69 74 65 6C 79 2E 20 20 49 66 20 74 ding is done indefinitely. If t 0001DFA0 68 69 73 20 69 73 20 64 6F 6E 65 2C 20 74 68 65 6E 20 74 68 65 20 62 75 66 66 65 72 20 4D 55 53 his is done, then the buffer MUS 0001DFC0 54 20 72 65 73 69 64 65 20 63 6F 6D 70 6C 65 74 65 6C 79 20 69 6E 20 31 20 36 34 4B 20 70 61 67 T reside completely in 1 64K pag 0001DFE0 65 20 6F 66 20 50 43 20 52 41 4D 2E 20 20 41 6C 73 6F 2C 20 69 74 20 69 73 20 70 72 6F 62 61 62 e of PC RAM. Also, it is probab 0001E000 6C 79 20 6E 65 63 65 73 73 61 72 79 20 74 68 61 74 20 79 6F 75 72 20 61 70 70 6C 69 63 61 74 69 ly necessary that your applicati 0001E020 6F 6E 20 68 6F 6F 6B 73 20 74 6F 20 74 68 65 20 72 65 63 6F 72 64 20 68 61 6E 64 6C 65 72 20 73 on hooks to the record handler s 0001E040 6F 20 74 68 61 74 20 74 68 65 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 6F 6E 20 74 o that the control register on t 0001E060 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 63 61 6E 20 62 65 20 68 69 74 20 74 6F 20 72 65 73 74 he UltraSound can be hit to rest 0001E080 61 72 74 20 74 68 65 20 72 65 63 6F 72 64 69 6E 67 20 70 72 6F 63 65 73 73 20 28 55 6C 74 72 61 art the recording process (Ultra 0001E0A0 47 6F 52 65 63 6F 72 64 29 2E 20 20 54 68 69 73 20 77 69 6C 6C 20 62 65 20 76 65 72 79 20 71 75 GoRecord). This will be very qu 0001E0C0 69 63 6B 20 73 69 6E 63 65 20 74 68 65 20 50 43 20 44 4D 41 20 63 6F 6E 74 72 6F 6C 6C 65 72 20 ick since the PC DMA controller 0001E0E0 77 69 6C 6C 20 6E 6F 74 20 62 65 20 72 65 2D 70 72 6F 67 72 61 6D 6D 65 64 2E 0D 0A 0D 0A 52 65 will not be re-programmed.♪◙♪◙Re 0001E100 74 75 72 6E 73 3A 09 43 3A 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 20 69 66 20 6E 6F 20 70 72 turns:○C: ULTRA_OK if no pr 0001E120 6F 62 6C 65 6D 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 44 4D 41 5F 42 55 53 59 20 69 66 20 73 oblem.♪◙○○○ DMA_BUSY if s 0001E140 61 6D 70 6C 69 6E 67 20 44 4D 41 20 43 68 61 6E 6E 65 6C 20 69 73 20 62 75 73 79 2E 0D 0A 09 09 ampling DMA Channel is busy.♪◙○○ 0001E160 09 20 20 20 20 20 20 20 20 42 41 44 5F 44 4D 41 5F 41 44 44 52 20 69 66 20 61 75 74 6F 69 6E 69 ○ BAD_DMA_ADDR if autoini 0001E180 74 20 62 75 66 66 65 72 20 63 72 6F 73 73 65 73 20 36 34 6B 20 70 61 67 65 2E 0D 0A 0D 0A 09 09 t buffer crosses 64k page.♪◙♪◙○○ 0001E1A0 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 73 75 63 63 65 73 73 66 75 6C 2E 20 20 20 46 ○PASCAL: TRUE if successful. F 0001E1C0 41 4C 53 45 20 6F 74 68 65 72 77 69 73 65 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 49 66 20 75 ALSE otherwise.♪◙○○○ If u 0001E1E0 6E 73 75 63 63 65 73 73 66 75 6C 2C 20 63 68 65 63 6B 20 55 6C 74 72 61 45 72 72 6F 72 53 74 72 nsuccessful, check UltraErrorStr 0001E200 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C for the reason.♪◙♪◙See also:○Ul 0001E220 74 72 61 57 61 69 74 52 65 63 6F 72 64 44 4D 41 2C 20 55 6C 74 72 61 53 65 74 52 65 63 6F 72 64 traWaitRecordDMA, UltraSetRecord 0001E240 46 72 65 71 75 65 6E 63 79 0D 0A 09 09 09 55 6C 74 72 61 47 6F 52 65 63 6F 72 64 0D 0A 0D 0A 0C Frequency♪◙○○○UltraGoRecord♪◙♪◙♀ 0001E260 55 6C 74 72 61 52 65 63 6F 72 64 44 4D 41 42 75 73 79 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F UltraRecordDMABusy♪◙____________ 0001E280 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 _____________________♪◙♪◙Purpose 0001E2A0 3A 09 54 6F 20 73 65 65 20 69 66 20 74 68 65 20 72 65 63 6F 72 64 20 44 4D 41 20 63 68 61 6E 6E :○To see if the record DMA chann 0001E2C0 65 6C 20 69 73 20 62 75 73 79 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 52 65 63 el is busy.♪◙♪◙C:○○○int UltraRec 0001E2E0 6F 72 64 44 4D 41 42 75 73 79 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E ordDMABusy(void);♪◙♪◙PASCAL:○FUN 0001E300 43 54 49 4F 4E 20 55 6C 74 72 61 52 65 63 6F 72 64 44 4D 41 42 75 73 79 20 3A 20 42 4F 4F 4C 45 CTION UltraRecordDMABusy : BOOLE 0001E320 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 68 65 AN;♪◙♪◙Remarks:○This routine che 0001E340 63 6B 73 20 74 6F 20 73 65 65 20 69 66 20 74 68 65 20 72 65 63 6F 72 64 20 44 4D 41 20 63 68 61 cks to see if the record DMA cha 0001E360 6E 6E 65 6C 20 69 73 20 62 75 73 79 2E 20 20 49 74 20 6D 69 67 68 74 20 62 65 20 62 75 73 79 20 nnel is busy. It might be busy 0001E380 64 6F 69 6E 67 20 61 20 72 65 63 6F 72 64 20 28 6F 72 20 70 6C 61 79 62 61 63 6B 20 69 66 20 74 doing a record (or playback if t 0001E3A0 68 65 20 72 65 63 6F 72 64 20 26 20 70 6C 61 79 62 61 63 6B 20 63 68 61 6E 6E 65 6C 73 20 61 72 he record & playback channels ar 0001E3C0 65 20 74 68 65 20 73 61 6D 65 29 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 20 20 20 20 e the same).♪◙♪◙Returns:○C: 0001E3E0 20 30 20 3D 20 43 68 61 6E 6E 65 6C 20 6E 6F 74 20 42 75 73 79 0D 0A 09 09 09 20 20 20 20 20 20 0 = Channel not Busy♪◙○○○ 0001E400 20 20 32 20 3D 20 43 68 61 6E 6E 65 6C 20 42 75 73 79 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 2 = Channel Busy♪◙♪◙○○○PASCAL: 0001E420 20 54 52 55 45 20 69 66 20 74 68 65 20 63 68 61 6E 6E 65 6C 20 69 73 20 6E 6F 74 20 61 76 61 69 TRUE if the channel is not avai 0001E440 6C 61 62 6C 65 2E 20 46 41 4C 53 45 20 69 66 20 69 74 20 69 73 2E 0D 0A 0D 0A 53 65 65 20 61 6C lable. FALSE if it is.♪◙♪◙See al 0001E460 73 6F 3A 09 55 6C 74 72 61 52 65 63 6F 72 64 44 61 74 61 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 so:○UltraRecordData♪◙♪◙♪◙♪◙Ultra 0001E480 52 65 73 65 74 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F Reset♪◙_________________________ 0001E4A0 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 65 73 65 74 20 74 68 ________♪◙♪◙Purpose:○To reset th 0001E4C0 65 20 55 6C 74 72 61 53 6F 75 6E 64 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 52 e UltraSound.♪◙♪◙C:○○○int UltraR 0001E4E0 65 73 65 74 28 76 6F 69 63 65 73 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 73 3B 0D 0A 0D eset(voices);♪◙○○○int voices;♪◙♪ 0001E500 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 52 65 73 65 74 28 56 6F 69 ◙PASCAL:○FUNCTION UltraReset(Voi 0001E520 63 65 73 20 3A 20 49 4E 54 45 47 45 52 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D ces : INTEGER) : BOOLEAN;♪◙♪◙Rem 0001E540 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 63 61 6C 6C 65 64 20 62 79 20 arks:○This routine is called by 0001E560 55 6C 74 72 61 4F 70 65 6E 20 74 6F 20 6D 61 6B 65 20 73 75 72 65 20 74 68 65 20 63 61 72 64 20 UltraOpen to make sure the card 0001E580 69 73 20 69 6E 20 61 20 6B 6E 6F 77 6E 20 73 74 61 74 65 2E 20 20 55 6C 74 72 61 43 6C 6F 73 65 is in a known state. UltraClose 0001E5A0 20 61 6C 73 6F 20 63 61 6C 6C 73 20 74 68 69 73 20 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 52 65 74 also calls this routine.♪◙♪◙Ret 0001E5C0 75 72 6E 73 3A 09 43 3A 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 20 69 66 20 6E 6F 20 70 72 6F urns:○C: ULTRA_OK if no pro 0001E5E0 62 6C 65 6D 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 42 41 44 5F 4E 55 4D 5F 4F 46 5F 56 4F 49 blem.♪◙○○○ BAD_NUM_OF_VOI 0001E600 43 45 53 20 69 66 20 23 20 6F 66 20 76 6F 69 63 65 73 20 6E 6F 74 20 69 6E 20 72 61 6E 67 65 2E CES if # of voices not in range. 0001E620 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 63 61 72 64 20 69 73 20 73 ♪◙♪◙○○○PASCAL: TRUE if card is s 0001E640 75 63 63 65 73 73 66 75 6C 6C 79 20 72 65 73 65 74 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 49 uccessfully reset.♪◙○○○ I 0001E660 66 20 46 41 4C 53 45 2C 20 63 68 65 63 6B 20 55 6C 74 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 f FALSE, check UltraErrorStr for 0001E680 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4F the reason.♪◙♪◙See also:○UltraO 0001E6A0 70 65 6E 2C 20 55 6C 74 72 61 43 6C 6F 73 65 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 53 65 74 42 61 pen, UltraClose♪◙♪◙♪◙♀UltraSetBa 0001E6C0 6C 61 6E 63 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F lance♪◙_________________________ 0001E6E0 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 65 74 20 61 20 76 6F ________♪◙♪◙Purpose:○To set a vo 0001E700 69 63 65 27 73 20 70 61 6E 20 70 6F 73 69 74 69 6F 6E 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 ice's pan position.♪◙♪◙C:○○○void 0001E720 20 55 6C 74 72 61 53 65 74 42 61 6C 61 6E 63 65 28 76 6F 69 63 65 2C 64 61 74 61 29 3B 0D 0A 09 UltraSetBalance(voice,data);♪◙○ 0001E740 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 69 6E 74 20 64 61 74 61 3B 0D 0A 0D 0A 50 41 ○○int voice;♪◙○○○int data;♪◙♪◙PA 0001E760 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 53 65 74 42 61 6C 61 6E 63 65 28 SCAL:○PROCEDURE UltraSetBalance( 0001E780 56 6F 69 63 65 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 Voice : INTEGER;♪◙○○○ 0001E7A0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 74 61 20 20 3A 20 42 59 54 45 29 3B 0D 0A 0D Data : BYTE);♪◙♪ 0001E7C0 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73 65 74 73 20 74 68 65 20 ◙Remarks:○This routine sets the 0001E7E0 76 6F 69 63 65 27 73 20 70 6F 73 69 74 69 6F 6E 20 62 65 74 77 65 65 6E 20 72 69 67 68 74 20 61 voice's position between right a 0001E800 6E 64 20 6C 65 66 74 20 73 70 65 61 6B 65 72 73 2E 20 20 41 20 30 20 77 69 6C 6C 20 70 6C 61 63 nd left speakers. A 0 will plac 0001E820 65 20 74 68 65 20 61 75 64 69 6F 20 61 6C 6C 20 74 68 65 20 77 61 79 20 74 6F 20 74 68 65 20 6C e the audio all the way to the l 0001E840 65 66 74 20 77 68 65 72 65 61 73 20 61 20 31 35 20 77 69 6C 6C 20 70 75 74 20 74 68 65 20 73 6F eft whereas a 15 will put the so 0001E860 75 6E 64 20 61 6C 6C 20 74 68 65 20 77 61 79 20 74 6F 20 74 68 65 20 72 69 67 68 74 2E 20 20 56 und all the way to the right. V 0001E880 61 6C 75 65 73 20 74 68 61 74 20 61 72 65 20 6F 75 74 20 6F 66 20 72 61 6E 67 65 20 77 69 6C 6C alues that are out of range will 0001E8A0 20 6D 6F 76 65 20 74 68 65 20 62 61 6C 61 6E 63 65 20 74 6F 20 74 68 65 20 6E 65 61 72 65 73 74 move the balance to the nearest 0001E8C0 20 65 78 74 72 65 6D 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 53 65 74 46 72 65 71 75 65 6E extreme.♪◙♪◙♪◙♪◙UltraSetFrequen 0001E8E0 63 79 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F cy♪◙____________________________ 0001E900 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 65 74 20 61 20 76 6F 69 63 65 _____♪◙♪◙Purpose:○To set a voice 0001E920 27 73 20 70 6C 61 79 62 61 63 6B 20 66 72 65 71 75 65 6E 63 79 2E 0D 0A 0D 0A 43 3A 09 09 09 76 's playback frequency.♪◙♪◙C:○○○v 0001E940 6F 69 64 20 55 6C 74 72 61 53 65 74 46 72 65 71 75 65 6E 63 79 28 76 6F 69 63 65 2C 73 70 65 65 oid UltraSetFrequency(voice,spee 0001E960 64 5F 68 7A 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 75 6E 73 69 67 6E d_hz);♪◙○○○int voice;♪◙○○○unsign 0001E980 65 64 20 6C 6F 6E 67 20 73 70 65 65 64 5F 68 7A 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F ed long speed_hz;♪◙♪◙PASCAL:○PRO 0001E9A0 43 45 44 55 52 45 20 55 6C 74 72 61 53 65 74 46 72 65 71 75 65 6E 63 79 28 56 6F 69 63 65 20 20 CEDURE UltraSetFrequency(Voice 0001E9C0 20 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : INTEGER;♪◙○○○ 0001E9E0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 70 65 65 64 5F 4B 68 7A 20 3A 20 4C 4F 4E 47 49 4E Speed_Khz : LONGIN 0001EA00 54 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73 65 74 T);♪◙♪◙Remarks:○This routine set 0001EA20 73 20 74 68 65 20 76 6F 69 63 65 27 73 20 70 6C 61 79 62 61 63 6B 20 72 61 74 65 20 74 6F 20 74 s the voice's playback rate to t 0001EA40 68 65 20 73 70 65 63 69 66 69 65 64 20 61 62 73 6F 6C 75 74 65 20 66 72 65 71 75 65 6E 63 79 2E he specified absolute frequency. 0001EA60 20 20 54 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 69 73 The number of active voices is 0001EA80 20 74 61 6B 65 6E 20 69 6E 74 6F 20 61 63 63 6F 75 6E 74 20 77 68 65 6E 20 6D 61 6B 69 6E 67 20 taken into account when making 0001EAA0 74 68 65 20 61 70 70 72 6F 70 72 69 61 74 65 20 63 61 6C 63 75 6C 61 74 69 6F 6E 73 2E 0D 0A 0D the appropriate calculations.♪◙♪ 0001EAC0 0A 0D 0A 0D 0A 55 6C 74 72 61 53 65 74 4C 6F 6F 70 4D 6F 64 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F ◙♪◙♪◙UltraSetLoopMode♪◙_________ 0001EAE0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 ________________________♪◙♪◙Purp 0001EB00 6F 73 65 3A 09 54 6F 20 73 65 74 20 61 20 76 6F 69 63 65 27 73 20 6C 6F 6F 70 20 6D 6F 64 65 2E ose:○To set a voice's loop mode. 0001EB20 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 53 65 74 4C 6F 6F 70 4D 6F 64 65 28 76 ♪◙♪◙C:○○○void UltraSetLoopMode(v 0001EB40 6F 69 63 65 2C 6D 6F 64 65 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 75 oice,mode);♪◙○○○int voice;♪◙○○○u 0001EB60 6E 73 69 67 6E 65 64 20 63 68 61 72 20 6D 6F 64 65 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 nsigned char mode;♪◙♪◙PASCAL:○PR 0001EB80 4F 43 45 44 55 52 45 20 55 6C 74 72 61 53 65 74 4C 6F 6F 70 4D 6F 64 65 28 56 6F 69 63 65 20 3A OCEDURE UltraSetLoopMode(Voice : 0001EBA0 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 INTEGER;♪◙○○○ 0001EBC0 20 20 20 20 20 20 20 20 20 56 4D 6F 64 65 20 3A 20 42 59 54 45 29 3B 0D 0A 0D 0A 52 65 6D 61 72 VMode : BYTE);♪◙♪◙Remar 0001EBE0 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 73 65 74 20 74 68 69 73 20 76 ks:○This routine will set this v 0001EC00 6F 69 63 65 27 73 20 6C 6F 6F 70 69 6E 67 20 6D 6F 64 65 20 74 6F 20 74 68 65 20 73 70 65 63 69 oice's looping mode to the speci 0001EC20 66 69 65 64 20 6D 6F 64 65 2E 20 20 53 65 65 20 41 70 70 65 6E 64 69 78 20 43 20 66 6F 72 20 74 fied mode. See Appendix C for t 0001EC40 68 65 20 64 65 66 69 6E 69 74 69 6F 6E 20 6F 66 20 74 68 65 73 65 20 62 69 74 73 2E 0D 0A 0C 55 he definition of these bits.♪◙♀U 0001EC60 6C 74 72 61 53 65 74 52 65 63 6F 72 64 46 72 65 71 75 65 6E 63 79 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F ltraSetRecordFrequency♪◙________ 0001EC80 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 _________________________♪◙♪◙Pur 0001ECA0 70 6F 73 65 3A 09 54 6F 20 73 65 74 20 74 68 65 20 72 65 63 6F 72 64 69 6E 67 20 72 61 74 65 2E pose:○To set the recording rate. 0001ECC0 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 53 65 74 52 65 63 6F 72 64 46 72 65 71 ♪◙♪◙C:○○○void UltraSetRecordFreq 0001ECE0 75 65 6E 63 79 28 72 61 74 65 29 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 72 uency(rate);♪◙○○○unsigned long r 0001ED00 61 74 65 3B 20 20 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 ate; ♪◙♪◙PASCAL:○PROCEDURE Ultr 0001ED20 61 53 65 74 52 65 63 6F 72 64 46 72 65 71 75 65 6E 63 79 28 52 61 74 65 20 3A 20 4C 4F 4E 47 49 aSetRecordFrequency(Rate : LONGI 0001ED40 4E 54 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73 65 NT);♪◙♪◙Remarks:○This routine se 0001ED60 74 73 20 74 68 65 20 72 65 63 6F 72 64 20 72 61 74 65 20 74 6F 20 74 68 65 20 73 70 65 63 69 66 ts the record rate to the specif 0001ED80 69 65 64 20 66 72 65 71 75 65 6E 63 79 2E 20 20 53 69 6E 63 65 20 74 68 65 20 55 6C 74 72 61 53 ied frequency. Since the UltraS 0001EDA0 6F 75 6E 64 20 75 73 65 73 20 74 68 65 20 50 43 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 74 6F 20 ound uses the PC DMA channel to 0001EDC0 64 6F 20 74 68 65 20 73 61 6D 70 6C 69 6E 67 20 64 69 72 65 63 74 6C 79 20 69 6E 74 6F 20 50 43 do the sampling directly into PC 0001EDE0 20 52 41 4D 2C 20 6E 6F 20 76 6F 69 63 65 20 73 70 65 63 69 66 69 63 61 74 69 6F 6E 20 69 73 20 RAM, no voice specification is 0001EE00 6E 65 63 65 73 73 61 72 79 2E 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 53 65 74 56 6F 69 63 65 0D necessary.♪◙♪◙♪◙♪◙UltraSetVoice♪ 0001EE20 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ◙_______________________________ 0001EE40 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 65 74 20 61 20 76 6F 69 63 65 20 74 6F __♪◙♪◙Purpose:○To set a voice to 0001EE60 20 61 6E 20 61 62 73 6F 6C 75 74 65 20 70 6F 73 69 74 69 6F 6E 20 69 6E 20 44 52 41 4D 2E 0D 0A an absolute position in DRAM.♪◙ 0001EE80 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 53 65 74 56 6F 69 63 65 28 76 6F 69 63 65 2C ♪◙C:○○○void UltraSetVoice(voice, 0001EEA0 6C 6F 63 61 74 69 6F 6E 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 75 6E location);♪◙○○○int voice;♪◙○○○un 0001EEC0 73 69 67 6E 65 64 20 6C 6F 6E 67 20 6C 6F 63 61 74 69 6F 6E 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A signed long location;♪◙♪◙PASCAL: 0001EEE0 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 53 65 74 56 6F 69 63 65 28 56 6F 69 63 65 20 20 ○PROCEDURE UltraSetVoice(Voice 0001EF00 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : INTEGER;♪◙○○○ 0001EF20 20 20 20 20 20 20 20 20 20 4C 6F 63 61 74 69 6F 6E 20 3A 20 4C 4F 4E 47 49 4E 54 29 3B 0D 0A 0D Location : LONGINT);♪◙♪ 0001EF40 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73 65 74 73 20 61 20 76 6F ◙Remarks:○This routine sets a vo 0001EF60 69 63 65 27 73 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 74 6F 20 61 6E 20 61 62 73 ice's current position to an abs 0001EF80 6F 6C 75 74 65 20 6C 6F 63 61 74 69 6F 6E 2E 20 20 54 68 69 73 20 63 61 6E 20 62 65 20 75 73 65 olute location. This can be use 0001EFA0 66 75 6C 20 74 6F 20 73 65 74 20 61 20 76 6F 69 63 65 20 74 6F 20 61 20 6C 6F 63 61 74 69 6F 6E ful to set a voice to a location 0001EFC0 20 77 69 74 68 20 61 20 6B 6E 6F 77 6E 20 76 61 6C 75 65 20 73 69 6E 63 65 20 61 6C 6C 20 76 6F with a known value since all vo 0001EFE0 69 63 65 73 27 20 63 75 72 72 65 6E 74 20 6C 6F 63 61 74 69 6F 6E 73 20 61 72 65 20 73 75 6D 6D ices' current locations are summ 0001F000 65 64 20 69 6E 20 74 6F 20 74 68 65 20 6F 75 74 70 75 74 20 65 76 65 6E 20 69 66 20 74 68 65 20 ed in to the output even if the 0001F020 76 6F 69 63 65 20 69 73 20 6E 6F 74 20 72 75 6E 6E 69 6E 67 2E 20 20 27 50 6F 70 73 27 20 69 6E voice is not running. 'Pops' in 0001F040 20 74 68 65 20 61 75 64 69 6F 20 6D 61 79 20 72 65 73 75 6C 74 20 69 66 20 61 20 76 6F 69 63 65 the audio may result if a voice 0001F060 20 69 73 20 73 65 74 20 74 6F 20 61 20 6C 6F 63 61 74 69 6F 6E 20 74 68 61 74 20 63 6F 6E 74 61 is set to a location that conta 0001F080 69 6E 73 20 61 20 73 69 67 6E 69 66 69 63 61 6E 74 20 76 61 6C 75 65 2E 0D 0A 0D 0A 0D 0A 55 6C ins a significant value.♪◙♪◙♪◙Ul 0001F0A0 74 72 61 53 65 74 56 6F 69 63 65 45 6E 64 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F traSetVoiceEnd♪◙________________ 0001F0C0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F _________________♪◙♪◙Purpose:○To 0001F0E0 20 73 65 74 20 61 20 76 6F 69 63 65 27 73 20 65 6E 64 20 70 6F 73 69 74 69 6F 6E 2E 0D 0A 0D 0A set a voice's end position.♪◙♪◙ 0001F100 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 53 65 74 56 6F 69 63 65 45 6E 64 28 76 6F 69 63 65 C:○○○void UltraSetVoiceEnd(voice 0001F120 2C 65 6E 64 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 75 6E 73 69 67 6E ,end);♪◙○○○int voice;♪◙○○○unsign 0001F140 65 64 20 6C 6F 6E 67 20 65 6E 64 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 ed long end;♪◙♪◙PASCAL:○PROCEDUR 0001F160 45 20 55 6C 74 72 61 53 65 74 56 6F 69 63 65 45 6E 64 28 56 6F 69 63 65 20 20 20 20 3A 20 49 4E E UltraSetVoiceEnd(Voice : IN 0001F180 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 TEGER;♪◙○○○ 0001F1A0 20 20 20 20 20 20 56 45 6E 64 20 20 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 29 3B 0D 0A 0D 0A 52 65 VEnd : LONGINT);♪◙♪◙Re 0001F1C0 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73 65 74 73 20 61 20 6E 65 77 20 65 marks:○This routine sets a new e 0001F1E0 6E 64 70 6F 69 6E 74 20 66 6F 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 76 6F 69 63 65 2E ndpoint for the specified voice. 0001F200 20 20 55 73 65 64 20 69 6E 20 63 6F 6E 6A 75 6E 63 74 69 6F 6E 20 77 69 74 68 20 55 6C 74 72 61 Used in conjunction with Ultra 0001F220 53 65 74 4C 6F 6F 70 4D 6F 64 65 20 74 6F 20 74 75 72 6E 20 6C 6F 6F 70 69 6E 67 20 6F 66 66 2C SetLoopMode to turn looping off, 0001F240 20 61 20 73 61 6D 70 6C 65 64 20 64 65 63 61 79 20 63 61 6E 20 62 65 20 69 6D 70 6C 65 6D 65 6E a sampled decay can be implemen 0001F260 74 65 64 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 53 65 74 4C 6F 6F 70 4D 6F ted.♪◙♪◙See also:○UltraSetLoopMo 0001F280 64 65 0D 0A 0C 55 6C 74 72 61 53 65 74 56 6F 6C 75 6D 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F de♪◙♀UltraSetVolume♪◙___________ 0001F2A0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 ______________________♪◙♪◙Purpos 0001F2C0 65 3A 09 54 6F 20 73 65 74 20 61 20 76 6F 69 63 65 27 73 20 63 75 72 72 65 6E 74 20 6C 6F 67 61 e:○To set a voice's current loga 0001F2E0 72 69 74 68 6D 69 63 20 76 6F 6C 75 6D 65 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 rithmic volume.♪◙♪◙C:○○○void Ult 0001F300 72 61 53 65 74 56 6F 6C 75 6D 65 28 76 6F 69 63 65 2C 76 6F 6C 75 6D 65 29 3B 0D 0A 09 09 09 69 raSetVolume(voice,volume);♪◙○○○i 0001F320 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 76 6F 6C 75 6D nt voice;♪◙○○○unsigned int volum 0001F340 65 3B 20 20 20 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 e; ♪◙♪◙PASCAL:○PROCEDURE Ultra 0001F360 53 65 74 56 6F 6C 75 6D 65 28 56 6F 69 63 65 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 SetVolume(Voice : INTEGER;♪◙○○○ 0001F380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 6F 6C 75 6D 65 20 Volume 0001F3A0 3A 20 57 4F 52 44 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E : WORD);♪◙♪◙Remarks:○This routin 0001F3C0 65 20 73 65 74 73 20 74 68 65 20 76 6F 6C 75 6D 65 20 6F 66 20 74 68 65 20 76 6F 69 63 65 20 74 e sets the volume of the voice t 0001F3E0 6F 20 61 20 73 70 65 63 69 66 69 63 20 6C 6F 67 61 72 69 74 68 6D 69 63 20 76 61 6C 75 65 2E 20 o a specific logarithmic value. 0001F400 20 54 68 65 20 72 61 6E 67 65 20 69 73 20 66 72 6F 6D 20 30 20 74 6F 20 34 30 39 35 2E 20 20 55 The range is from 0 to 4095. U 0001F420 73 65 20 55 6C 74 72 61 53 65 74 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 20 74 6F 20 64 6F 20 6C 69 se UltraSetLinearVolume to do li 0001F440 6E 65 61 72 20 76 6F 6C 75 6D 65 73 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 near volumes.♪◙♪◙See also:○Ultra 0001F460 53 65 74 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 53 69 7A 65 SetLinearVolume♪◙♪◙♪◙♪◙UltraSize 0001F480 44 52 41 4D 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F DRAM♪◙__________________________ 0001F4A0 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 46 69 6E 64 20 74 68 65 20 _______♪◙♪◙Purpose:○To Find the 0001F4C0 61 6D 6F 75 6E 74 20 6F 66 20 44 52 41 4D 20 61 76 61 69 6C 61 62 6C 65 20 6F 6E 20 74 68 65 20 amount of DRAM available on the 0001F4E0 55 6C 74 72 61 53 6F 75 6E 64 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 53 69 7A UltraSound.♪◙♪◙C:○○○int UltraSiz 0001F500 65 44 72 61 6D 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E eDram(void);♪◙♪◙PASCAL:○FUNCTION 0001F520 20 55 6C 74 72 61 53 69 7A 65 44 52 41 4D 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 4E 6F UltraSizeDRAM : INTEGER;♪◙○○○No 0001F540 74 65 3A 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 61 6C 77 61 79 73 20 72 65 te: This routine will always re 0001F560 74 75 72 6E 20 74 68 65 20 73 61 6D 65 20 76 61 6C 75 65 2C 20 77 68 69 63 68 20 69 73 20 74 68 turn the same value, which is th 0001F580 65 20 61 6D 6F 75 6E 74 20 6F 66 20 44 52 41 4D 20 74 68 61 74 20 68 61 73 20 62 65 65 6E 20 69 e amount of DRAM that has been i 0001F5A0 6E 73 74 61 6C 6C 65 64 20 6F 6E 20 74 68 65 20 63 61 72 64 2E 20 20 55 73 65 20 55 6C 74 72 61 nstalled on the card. Use Ultra 0001F5C0 4D 65 6D 41 76 61 69 6C 20 74 6F 20 73 65 65 20 68 6F 77 20 6D 75 63 68 20 44 52 41 4D 20 69 73 MemAvail to see how much DRAM is 0001F5E0 20 73 74 69 6C 6C 20 66 72 65 65 2E 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 46 6F 72 20 43 20 75 still free.♪◙♪◙Remarks:○For C u 0001F600 73 65 72 73 2C 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 63 6F 75 6C 64 20 62 65 20 75 73 65 64 sers, this routine could be used 0001F620 20 62 79 20 61 6E 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 20 by an application to determine 0001F640 68 6F 77 20 6D 75 63 68 20 69 74 20 63 61 6E 20 6C 6F 61 64 20 69 6E 74 6F 20 74 68 65 20 55 6C how much it can load into the Ul 0001F660 74 72 61 53 6F 75 6E 64 2E 20 20 55 6C 74 72 61 4D 65 6D 49 6E 69 74 20 63 61 6C 6C 73 20 74 68 traSound. UltraMemInit calls th 0001F680 69 73 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 20 68 6F 77 20 6D 75 63 68 20 63 61 6E 20 62 65 20 is to determine how much can be 0001F6A0 75 73 65 64 20 66 6F 72 20 69 74 73 20 6D 65 6D 6F 72 79 20 70 6F 6F 6C 2E 0D 0A 0D 0A 52 65 74 used for its memory pool.♪◙♪◙Ret 0001F6C0 75 72 6E 73 3A 09 23 20 6F 66 20 6B 69 6C 6F 62 79 74 65 73 20 66 6F 75 6E 64 20 6F 6E 20 74 68 urns:○# of kilobytes found on th 0001F6E0 65 20 55 6C 74 72 61 53 6F 75 6E 64 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 e UltraSound.♪◙♪◙See also:○Ultra 0001F700 4D 65 6D 49 6E 69 74 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 53 74 61 72 74 54 69 6D 65 72 0D 0A 5F MemInit♪◙♪◙♪◙♀UltraStartTimer♪◙_ 0001F720 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ________________________________ 0001F740 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 65 74 20 75 70 20 61 6E 64 20 73 74 61 72 74 ♪◙♪◙Purpose:○To set up and start 0001F760 20 65 69 74 68 65 72 20 54 69 6D 65 72 20 31 20 6F 72 20 54 69 6D 65 72 20 32 2E 0D 0A 0D 0A 43 either Timer 1 or Timer 2.♪◙♪◙C 0001F780 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 53 74 61 72 74 54 69 6D 65 72 28 74 69 6D 65 72 2C 64 :○○○void UltraStartTimer(timer,d 0001F7A0 75 72 61 74 69 6F 6E 29 3B 0D 0A 09 09 09 69 6E 74 20 74 69 6D 65 72 3B 0D 0A 09 09 09 75 6E 73 uration);♪◙○○○int timer;♪◙○○○uns 0001F7C0 69 67 6E 65 64 20 63 68 61 72 20 64 75 72 61 74 69 6F 6E 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 igned char duration;♪◙♪◙PASCAL:○ 0001F7E0 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 53 74 61 72 74 54 69 6D 65 72 28 54 69 6D 65 72 20 PROCEDURE UltraStartTimer(Timer 0001F800 20 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : INTEGER;♪◙○○○ 0001F820 20 20 20 20 20 20 20 20 20 20 20 20 44 75 72 61 74 69 6F 6E 20 3A 20 42 59 54 45 29 3B 0D 0A 0D Duration : BYTE);♪◙♪ 0001F840 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6E 20 62 65 20 75 73 ◙Remarks:○This routine can be us 0001F860 65 64 20 74 6F 20 73 74 61 72 74 20 75 70 20 6F 6E 65 20 6F 66 20 74 77 6F 20 61 76 61 69 6C 61 ed to start up one of two availa 0001F880 62 6C 65 20 68 61 72 64 77 61 72 65 20 74 69 6D 65 72 73 2E 20 20 54 69 6D 65 72 20 23 31 20 69 ble hardware timers. Timer #1 i 0001F8A0 73 20 61 6E 20 38 30 20 6D 69 63 72 6F 73 65 63 6F 6E 64 20 28 2E 30 30 30 30 38 73 29 20 74 69 s an 80 microsecond (.00008s) ti 0001F8C0 6D 65 72 2E 20 20 54 69 6D 65 72 20 23 32 20 69 73 20 61 20 33 32 30 20 6D 69 63 72 6F 73 65 63 mer. Timer #2 is a 320 microsec 0001F8E0 6F 6E 64 20 28 2E 30 30 30 33 32 73 29 20 74 69 6D 65 72 2E 20 20 57 68 65 6E 20 73 74 61 72 74 ond (.00032s) timer. When start 0001F900 69 6E 67 20 65 69 74 68 65 72 20 74 69 6D 65 72 2C 20 79 6F 75 20 73 75 70 70 6C 79 20 74 68 65 ing either timer, you supply the 0001F920 20 23 20 6F 66 20 63 6F 75 6E 74 73 20 62 65 66 6F 72 65 20 74 68 65 20 74 69 6D 65 72 20 27 74 # of counts before the timer 't 0001F940 69 63 6B 73 27 2E 20 20 57 68 65 6E 20 74 68 65 20 74 69 6D 65 72 20 27 74 69 63 6B 73 27 2C 20 icks'. When the timer 'ticks', 0001F960 69 74 20 41 4C 57 41 59 53 20 63 61 6C 6C 73 20 74 68 65 20 63 61 6C 6C 62 61 63 6B 20 72 6F 75 it ALWAYS calls the callback rou 0001F980 74 69 6E 65 20 64 65 66 69 6E 65 64 20 66 6F 72 20 69 74 2E 20 20 49 66 20 79 6F 75 20 64 6F 6E tine defined for it. If you don 0001F9A0 27 74 20 73 75 70 70 6C 79 20 6F 6E 65 2C 20 61 20 64 65 66 61 75 6C 74 20 69 73 20 75 73 65 64 't supply one, a default is used 0001F9C0 2E 20 20 0D 0A 09 09 09 54 68 65 73 65 20 74 69 6D 65 72 73 20 63 61 6E 20 62 65 20 75 73 65 64 . ♪◙○○○These timers can be used 0001F9E0 20 74 6F 20 74 72 69 67 67 65 72 20 76 61 72 69 6F 75 73 20 72 65 61 6C 20 74 69 6D 65 20 65 76 to trigger various real time ev 0001FA00 65 6E 74 73 2E 20 20 54 68 65 79 20 61 72 65 20 75 73 65 64 20 65 78 74 65 6E 73 69 76 65 6C 79 ents. They are used extensively 0001FA20 20 69 6E 20 6D 75 73 69 63 20 63 6F 6D 70 6F 73 74 69 74 69 6F 6E 20 70 72 6F 67 72 61 6D 73 2E in music compostition programs. 0001FA40 20 20 50 6C 65 61 73 65 20 72 65 6D 65 6D 62 65 72 20 74 68 61 74 20 74 68 65 20 63 61 6C 6C 62 Please remember that the callb 0001FA60 61 63 6B 20 72 6F 75 74 69 6E 65 20 69 73 20 63 61 6C 6C 65 64 20 64 69 72 65 63 74 6C 79 20 66 ack routine is called directly f 0001FA80 72 6F 6D 20 74 68 65 20 69 6E 74 65 72 72 75 70 74 20 68 61 6E 64 6C 65 72 2C 20 73 6F 20 79 6F rom the interrupt handler, so yo 0001FAA0 75 20 6D 75 73 74 20 62 65 20 63 61 72 65 66 75 6C 20 77 68 61 74 20 79 6F 75 20 64 6F 20 69 6E u must be careful what you do in 0001FAC0 20 74 68 65 20 63 61 6C 6C 62 61 63 6B 20 72 6F 75 74 69 6E 65 2E 20 20 0D 0A 09 09 09 4E 6F 74 the callback routine. ♪◙○○○Not 0001FAE0 65 20 74 68 61 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 74 69 6D 65 72 20 69 73 20 61 75 e that the specified timer is au 0001FB00 74 6F 6D 61 74 69 63 61 6C 6C 79 20 72 65 73 74 61 72 74 65 64 20 61 66 74 65 72 20 69 74 20 74 tomatically restarted after it t 0001FB20 69 63 6B 73 2E 20 20 59 6F 75 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 6D 75 73 74 20 65 78 70 icks. Your application must exp 0001FB40 6C 69 63 69 74 6C 79 20 63 61 6C 6C 20 55 6C 74 72 61 53 74 6F 70 54 69 6D 65 72 20 74 6F 20 73 licitly call UltraStopTimer to s 0001FB60 68 75 74 20 69 74 20 6F 66 66 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 53 74 hut it off.♪◙♪◙See also:○UltraSt 0001FB80 6F 70 54 69 6D 65 72 2C 20 55 6C 74 72 61 54 69 6D 65 72 53 74 6F 70 70 65 64 0D 0A 09 09 09 55 opTimer, UltraTimerStopped♪◙○○○U 0001FBA0 6C 74 72 61 54 69 6D 65 72 31 48 61 6E 64 6C 65 72 2C 20 55 6C 74 72 61 54 69 6D 65 72 32 48 61 ltraTimer1Handler, UltraTimer2Ha 0001FBC0 6E 64 6C 65 72 2E 0D 0A 0D 0A 45 78 61 6D 70 6C 65 3A 09 47 69 76 69 6E 67 20 54 69 6D 65 72 20 ndler.♪◙♪◙Example:○Giving Timer 0001FBE0 31 20 61 20 64 75 72 61 74 69 6F 6E 20 6F 66 20 31 30 20 63 6F 75 6E 74 73 20 77 6F 75 6C 64 20 1 a duration of 10 counts would 0001FC00 6D 61 6B 65 20 74 68 65 20 74 69 6D 65 72 20 74 69 63 6B 20 65 76 65 72 79 20 38 30 30 20 6D 69 make the timer tick every 800 mi 0001FC20 63 72 6F 73 65 63 6F 6E 64 73 20 28 2E 30 30 30 38 73 29 2E 20 20 54 68 69 73 20 77 6F 75 6C 64 croseconds (.0008s). This would 0001FC40 20 6D 65 61 6E 20 79 6F 75 72 20 63 61 6C 6C 62 61 63 6B 20 72 6F 75 74 69 6E 65 20 69 73 20 63 mean your callback routine is c 0001FC60 61 6C 6C 65 64 20 31 32 35 30 20 74 69 6D 65 73 20 61 20 73 65 63 6F 6E 64 2E 0D 0A 0D 0A 0D 0A alled 1250 times a second.♪◙♪◙♪◙ 0001FC80 0C 55 6C 74 72 61 53 74 61 72 74 56 6F 69 63 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ♀UltraStartVoice♪◙______________ 0001FCA0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 ___________________♪◙♪◙Purpose:○ 0001FCC0 54 6F 20 73 65 74 20 75 70 20 61 6E 64 20 73 74 61 72 74 20 61 20 76 6F 69 63 65 20 70 6C 61 79 To set up and start a voice play 0001FCE0 69 6E 67 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 53 74 61 72 74 56 6F 69 63 ing.♪◙♪◙C:○○○void UltraStartVoic 0001FD00 65 28 76 6F 69 63 65 2C 62 65 67 69 6E 2C 73 74 61 72 74 2C 65 6E 64 2C 6D 6F 64 65 29 3B 0D 0A e(voice,begin,start,end,mode);♪◙ 0001FD20 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 ○○○int voice;♪◙○○○unsigned long 0001FD40 62 65 67 69 6E 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 73 74 61 72 74 3B 0D begin;♪◙○○○unsigned long start;♪ 0001FD60 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 65 6E 64 3B 20 20 0D 0A 09 09 09 75 6E 73 ◙○○○unsigned long end; ♪◙○○○uns 0001FD80 69 67 6E 65 64 20 63 68 61 72 20 6D 6F 64 65 3B 20 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F igned char mode; ♪◙♪◙PASCAL:○PRO 0001FDA0 43 45 44 55 52 45 20 55 6C 74 72 61 53 74 61 72 74 56 6F 69 63 65 28 56 6F 69 63 65 20 20 3A 20 CEDURE UltraStartVoice(Voice : 0001FDC0 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 INTEGER;♪◙○○○ 0001FDE0 20 20 20 20 20 20 20 56 42 65 67 69 6E 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 20 20 VBegin : LONGINT;♪◙○○○ 0001FE00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 53 74 61 72 74 20 3A 20 VStart : 0001FE20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 LONGINT;♪◙○○○ 0001FE40 20 20 20 20 20 20 20 56 45 6E 64 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 20 20 VEnd : LONGINT;♪◙○○○ 0001FE60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 4D 6F 64 65 20 20 3A 20 VMode : 0001FE80 42 59 54 45 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 BYTE);♪◙♪◙Remarks:○This routine 0001FEA0 77 69 6C 6C 20 73 65 74 20 75 70 20 61 6E 64 20 73 74 61 72 74 20 75 70 20 61 20 76 6F 69 63 65 will set up and start up a voice 0001FEC0 2E 20 20 54 68 65 20 76 6F 69 63 65 20 77 69 6C 6C 20 62 65 67 69 6E 20 70 6C 61 79 62 61 63 6B . The voice will begin playback 0001FEE0 20 61 74 20 74 68 65 20 27 62 65 67 69 6E 27 20 61 6E 64 20 63 6F 6E 74 69 6E 75 65 20 74 6F 20 at the 'begin' and continue to 0001FF00 27 65 6E 64 27 2E 20 20 49 66 20 6C 6F 6F 70 69 6E 67 20 69 73 20 65 6E 61 62 6C 65 64 20 66 6F 'end'. If looping is enabled fo 0001FF20 72 20 74 68 69 73 20 76 6F 69 63 65 2C 20 74 68 65 6E 20 69 74 20 77 69 6C 6C 20 74 68 65 6E 20 r this voice, then it will then 0001FF40 6A 75 6D 70 20 74 6F 20 27 73 74 61 72 74 27 20 61 6E 64 20 74 68 65 6E 20 63 6F 6E 74 69 6E 75 jump to 'start' and then continu 0001FF60 65 20 74 6F 20 27 65 6E 64 27 2E 20 20 54 68 65 20 6D 65 74 68 6F 64 20 6F 66 20 6C 6F 6F 70 69 e to 'end'. The method of loopi 0001FF80 6E 67 20 69 73 20 64 65 74 65 72 6D 69 6E 65 64 20 62 79 20 27 6D 6F 64 65 27 2E 20 20 53 65 65 ng is determined by 'mode'. See 0001FFA0 20 41 70 70 65 6E 64 69 78 20 43 20 66 6F 72 20 74 68 65 20 64 65 66 69 6E 69 74 69 6F 6E 20 6F Appendix C for the definition o 0001FFC0 66 20 74 68 65 73 65 20 62 69 74 73 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 f these bits.♪◙♪◙See also:○Ultra 0001FFE0 53 65 74 56 6F 69 63 65 45 6E 64 2C 20 55 6C 74 72 61 53 65 74 4C 6F 6F 70 4D 6F 64 65 0D 0A 0D SetVoiceEnd, UltraSetLoopMode♪◙♪ 00020000 0A 0D 0A 0D 0A 55 6C 74 72 61 53 74 6F 70 54 69 6D 65 72 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ◙♪◙♪◙UltraStopTimer♪◙___________ 00020020 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 ______________________♪◙♪◙Purpos 00020040 65 3A 09 54 6F 20 73 74 6F 70 20 61 20 74 69 6D 65 72 20 77 68 69 63 68 20 68 61 73 20 62 65 65 e:○To stop a timer which has bee 00020060 6E 20 70 72 65 76 69 6F 75 73 6C 79 20 61 63 74 69 76 61 74 65 64 2E 0D 0A 0D 0A 43 3A 09 09 09 n previously activated.♪◙♪◙C:○○○ 00020080 76 6F 69 64 20 55 6C 74 72 61 53 74 6F 70 54 69 6D 65 72 28 74 69 6D 65 72 29 3B 0D 0A 09 09 09 void UltraStopTimer(timer);♪◙○○○ 000200A0 69 6E 74 20 74 69 6D 65 72 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 int timer;♪◙♪◙PASCAL:○PROCEDURE 000200C0 55 6C 74 72 61 53 74 6F 70 54 69 6D 65 72 28 54 69 6D 65 72 20 3A 20 49 4E 54 45 47 45 52 29 3B UltraStopTimer(Timer : INTEGER); 000200E0 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 49 66 20 79 6F 75 20 68 61 76 65 20 73 74 61 72 74 65 64 ♪◙♪◙Remarks:○If you have started 00020100 20 61 20 74 69 6D 65 72 20 77 69 74 68 20 55 6C 74 72 61 53 74 61 72 74 54 69 6D 65 72 2C 20 79 a timer with UltraStartTimer, y 00020120 6F 75 20 77 69 6C 6C 20 70 72 6F 62 61 62 6C 79 20 77 61 6E 74 20 74 6F 20 73 68 75 74 20 69 74 ou will probably want to shut it 00020140 20 6F 66 66 20 62 65 66 6F 72 65 20 73 68 75 74 74 69 6E 67 20 64 6F 77 6E 20 79 6F 75 72 20 61 off before shutting down your a 00020160 70 70 6C 69 63 61 74 69 6F 6E 2E 20 20 49 66 20 79 6F 75 20 66 6F 72 67 65 74 2C 20 55 6C 74 72 pplication. If you forget, Ultr 00020180 61 43 6C 6F 73 65 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 73 68 75 74 73 20 69 74 20 64 6F aClose automatically shuts it do 000201A0 77 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 53 74 61 72 74 54 69 6D 65 72 wn.♪◙♪◙See also:○UltraStartTimer 000201C0 0D 0A 0D 0A 0C 55 6C 74 72 61 53 74 6F 70 56 6F 69 63 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ♪◙♪◙♀UltraStopVoice♪◙___________ 000201E0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 ______________________♪◙♪◙Purpos 00020200 65 3A 09 54 6F 20 73 74 6F 70 20 61 20 76 6F 69 63 65 20 77 68 69 63 68 20 69 73 20 70 6C 61 79 e:○To stop a voice which is play 00020220 69 6E 67 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 53 74 6F 70 56 6F 69 63 65 ing.♪◙♪◙C:○○○void UltraStopVoice 00020240 28 76 6F 69 63 65 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 0D 0A 50 41 53 43 41 (voice);♪◙○○○int voice;♪◙♪◙PASCA 00020260 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 53 74 6F 70 56 6F 69 63 65 28 56 6F 69 63 L:○PROCEDURE UltraStopVoice(Voic 00020280 65 20 3A 20 49 4E 54 45 47 45 52 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 e : INTEGER);♪◙♪◙Remarks:○This r 000202A0 6F 75 74 69 6E 65 20 77 69 6C 6C 20 73 74 6F 70 20 61 20 76 6F 69 63 65 20 77 68 69 63 68 20 69 outine will stop a voice which i 000202C0 73 20 70 6C 61 79 69 6E 67 20 61 74 20 69 74 27 73 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74 69 s playing at it's current positi 000202E0 6F 6E 2E 20 20 44 6F 6E 27 74 20 66 6F 72 67 65 74 20 74 68 61 74 20 69 66 20 61 20 76 6F 69 63 on. Don't forget that if a voic 00020300 65 20 69 73 20 6C 65 66 74 20 61 74 20 61 6E 20 75 6E 6B 6E 6F 77 6E 20 70 6F 73 69 74 69 6F 6E e is left at an unknown position 00020320 2C 20 74 68 65 20 64 61 74 61 20 74 68 61 74 20 69 73 20 61 74 20 74 68 61 74 20 70 6F 73 69 74 , the data that is at that posit 00020340 69 6F 6E 20 77 69 6C 6C 20 73 74 69 6C 6C 20 62 65 20 73 75 6D 6D 65 64 20 69 6E 74 6F 20 74 68 ion will still be summed into th 00020360 65 20 66 69 6E 61 6C 20 6F 75 74 70 75 74 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 e final output.♪◙♪◙See also:○Ult 00020380 72 61 53 74 61 72 74 56 6F 69 63 65 2C 20 55 6C 74 72 61 53 65 74 56 6F 69 63 65 45 6E 64 0D 0A raStartVoice, UltraSetVoiceEnd♪◙ 000203A0 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 53 74 6F 70 56 6F 6C 75 6D 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F ♪◙♪◙♪◙UltraStopVolume♪◙_________ 000203C0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 ________________________♪◙♪◙Purp 000203E0 6F 73 65 3A 09 54 6F 20 73 74 6F 70 20 61 20 63 75 72 72 65 6E 74 6C 79 20 61 63 74 69 76 65 20 ose:○To stop a currently active 00020400 76 6F 6C 75 6D 65 20 72 61 6D 70 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 53 volume ramp.♪◙♪◙C:○○○void UltraS 00020420 74 6F 70 56 6F 6C 75 6D 65 28 76 6F 69 63 65 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B topVolume(voice);♪◙○○○int voice; 00020440 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 53 74 6F 70 56 ♪◙♪◙PASCAL:○PROCEDURE UltraStopV 00020460 6F 6C 75 6D 65 28 56 6F 69 63 65 20 3A 20 49 4E 54 45 47 45 52 29 3B 0D 0A 0D 0A 52 65 6D 61 72 olume(Voice : INTEGER);♪◙♪◙Remar 00020480 6B 73 3A 09 59 6F 75 20 63 61 6E 20 75 73 65 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 69 66 20 ks:○You can use this routine if 000204A0 79 6F 75 20 77 69 73 68 20 74 6F 20 73 74 6F 70 20 61 6E 20 76 6F 6C 75 6D 65 20 72 61 6D 70 20 you wish to stop an volume ramp 000204C0 61 66 74 65 72 20 61 20 73 70 65 63 69 66 69 65 64 20 70 65 72 69 6F 64 20 6F 66 20 74 69 6D 65 after a specified period of time 000204E0 2C 20 6F 72 20 79 6F 75 20 77 69 73 68 20 74 6F 20 6D 61 6B 65 20 73 75 72 65 20 74 68 61 74 20 , or you wish to make sure that 00020500 61 20 76 6F 6C 75 6D 65 20 72 61 6D 70 20 68 61 73 20 73 74 6F 70 70 65 64 2E 0D 0A 0D 0A 53 65 a volume ramp has stopped.♪◙♪◙Se 00020520 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 52 61 6D 70 56 6F 6C 75 6D 65 2C 20 55 6C 74 72 61 52 61 e also:○UltraRampVolume, UltraRa 00020540 6D 70 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 54 69 6D 65 72 mpLinearVolume♪◙♪◙♪◙♪◙UltraTimer 00020560 53 74 6F 70 70 65 64 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F Stopped♪◙_______________________ 00020580 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 63 68 65 63 6B 20 __________♪◙♪◙Purpose:○To check 000205A0 74 6F 20 73 65 65 20 69 66 20 61 20 74 69 6D 65 72 20 69 73 20 72 75 6E 6E 69 6E 67 2E 0D 0A 0D to see if a timer is running.♪◙♪ 000205C0 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 54 69 6D 65 72 53 74 6F 70 70 65 64 28 74 69 6D 65 ◙C:○○○int UltraTimerStopped(time 000205E0 72 29 3B 0D 0A 09 09 09 69 6E 74 20 74 69 6D 65 72 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 r);♪◙○○○int timer;♪◙♪◙PASCAL:○FU 00020600 4E 43 54 49 4F 4E 20 55 6C 74 72 61 54 69 6D 65 72 53 74 6F 70 70 65 64 28 54 69 6D 65 72 20 3A NCTION UltraTimerStopped(Timer : 00020620 20 49 4E 54 45 47 45 52 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A INTEGER) : BOOLEAN;♪◙♪◙Remarks: 00020640 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 73 65 65 ○This routine can be used to see 00020660 20 69 66 20 61 20 74 69 6D 65 72 20 69 73 20 63 75 72 72 65 6E 74 6C 79 20 62 65 69 6E 67 20 75 if a timer is currently being u 00020680 73 65 64 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 46 41 4C 53 45 20 69 66 20 73 74 69 6C 6C 20 sed.♪◙♪◙Returns:○FALSE if still 000206A0 72 75 6E 6E 69 6E 67 2C 20 54 52 55 45 20 69 66 20 73 74 6F 70 70 65 64 2E 0D 0A 0D 0A 53 65 65 running, TRUE if stopped.♪◙♪◙See 000206C0 20 61 6C 73 6F 3A 09 55 6C 74 72 61 53 74 61 72 74 54 69 6D 65 72 2C 20 55 6C 74 72 61 53 74 6F also:○UltraStartTimer, UltraSto 000206E0 70 54 69 6D 65 72 0D 0A 0C 55 6C 74 72 61 54 72 69 6D 4A 6F 79 73 74 69 63 6B 0D 0A 5F 5F 5F 5F pTimer♪◙♀UltraTrimJoystick♪◙____ 00020700 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D _____________________________♪◙♪ 00020720 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 65 74 20 74 68 65 20 74 72 69 6D 20 76 6F 6C 74 61 67 ◙Purpose:○To set the trim voltag 00020740 65 20 6F 6E 20 74 68 65 20 6A 6F 79 73 74 69 63 6B 20 70 6F 72 74 2E 0D 0A 0D 0A 43 3A 09 09 09 e on the joystick port.♪◙♪◙C:○○○ 00020760 76 6F 69 64 20 55 6C 74 72 61 54 72 69 6D 4A 6F 79 73 74 69 63 6B 28 76 61 6C 75 65 29 3B 0D 0A void UltraTrimJoystick(value);♪◙ 00020780 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 76 61 6C 75 65 3B 0D 0A 0D 0A 50 41 53 43 41 ○○○unsigned char value;♪◙♪◙PASCA 000207A0 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 54 72 69 6D 4A 6F 79 73 74 69 63 6B 28 4A L:○PROCEDURE UltraTrimJoystick(J 000207C0 6F 79 56 61 6C 20 3A 20 42 59 54 45 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 oyVal : BYTE);♪◙♪◙Remarks:○This 000207E0 72 6F 75 74 69 6E 65 20 69 73 20 75 73 65 64 20 74 6F 20 73 65 74 20 74 68 65 20 73 70 65 65 64 routine is used to set the speed 00020800 20 63 6F 6D 70 65 6E 73 61 74 69 6F 6E 20 76 61 6C 75 65 20 6F 6E 20 74 68 65 20 6A 6F 79 73 74 compensation value on the joyst 00020820 69 63 6B 20 70 6F 72 74 20 6F 6E 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 2E 20 20 54 68 65 ick port on the UltraSound. The 00020840 20 66 61 73 74 65 72 20 74 68 65 20 63 6F 6D 70 75 74 65 72 2C 20 74 68 65 20 73 6D 61 6C 6C 65 faster the computer, the smalle 00020860 72 20 74 68 69 73 20 76 61 6C 75 65 20 73 68 6F 75 6C 64 20 62 65 2E 20 20 54 68 69 73 20 61 6C r this value should be. This al 00020880 6C 6F 77 73 20 61 6C 6C 20 73 6F 66 74 77 61 72 65 20 74 68 61 74 20 72 65 61 64 73 20 74 68 65 lows all software that reads the 000208A0 20 6A 6F 79 73 74 69 63 6B 20 74 6F 20 72 65 74 75 72 6E 20 63 6F 6E 73 69 73 74 65 6E 74 20 6A joystick to return consistent j 000208C0 6F 79 73 74 69 63 6B 20 70 6F 73 69 74 69 6F 6E 73 20 72 65 67 61 72 64 6C 65 73 73 20 6F 66 20 oystick positions regardless of 000208E0 74 68 65 20 73 70 65 65 64 20 6F 66 20 74 68 65 20 6D 61 63 68 69 6E 65 2E 20 20 54 68 69 73 20 the speed of the machine. This 00020900 69 73 20 6E 6F 72 6D 61 6C 6C 79 20 6E 6F 74 20 6E 65 65 64 65 64 20 61 6E 64 20 70 72 6F 62 61 is normally not needed and proba 00020920 62 6C 79 20 73 68 6F 75 6C 64 20 6E 65 76 65 72 20 62 65 20 75 73 65 64 20 69 6E 20 79 6F 75 72 bly should never be used in your 00020940 20 61 70 70 6C 69 63 61 74 69 6F 6E 2E 20 20 54 68 65 20 75 74 69 6C 69 74 79 20 55 4C 54 52 41 application. The utility ULTRA 00020960 4A 4F 59 2E 45 58 45 20 77 68 69 63 68 20 69 73 20 69 6E 63 6C 75 64 65 64 20 77 69 74 68 20 61 JOY.EXE which is included with a 00020980 6C 6C 20 55 6C 74 72 61 53 6F 75 6E 64 20 73 74 6F 63 6B 20 73 6F 66 74 77 61 72 65 20 69 73 20 ll UltraSound stock software is 000209A0 75 73 65 64 20 74 6F 20 73 65 74 20 74 68 69 73 20 76 61 6C 75 65 2E 0D 0A 0D 0A 0D 0A 55 6C 74 used to set this value.♪◙♪◙♪◙Ult 000209C0 72 61 55 70 6C 6F 61 64 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F raUpload♪◙______________________ 000209E0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 74 72 61 6E 73 ___________♪◙♪◙Purpose:○To trans 00020A00 66 65 72 20 74 68 65 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 61 20 62 6C 6F 63 6B 20 6F 66 20 44 fer the contents of a block of D 00020A20 52 41 4D 20 74 6F 20 50 43 20 52 41 4D 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 RAM to PC RAM.♪◙♪◙C:○○○int Ultra 00020A40 55 70 6C 6F 61 64 28 64 61 74 61 70 74 72 2C 63 6F 6E 74 72 6F 6C 2C 64 72 61 6D 5F 6C 6F 63 2C Upload(dataptr,control,dram_loc, 00020A60 6C 65 6E 2C 77 61 69 74 29 3B 0D 0A 09 09 09 76 6F 69 64 20 2A 64 61 74 61 70 74 72 3B 09 0D 0A len,wait);♪◙○○○void *dataptr;○♪◙ 00020A80 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 63 6F 6E 74 72 6F 6C 3B 0D 0A 09 09 09 75 6E ○○○unsigned char control;♪◙○○○un 00020AA0 73 69 67 6E 65 64 20 6C 6F 6E 67 20 64 72 61 6D 5F 6C 6F 63 3B 0D 0A 09 09 09 75 6E 73 69 67 6E signed long dram_loc;♪◙○○○unsign 00020AC0 65 64 20 69 6E 74 20 6C 65 6E 3B 09 0D 0A 09 09 09 69 6E 74 20 77 61 69 74 3B 09 09 0D 0A 0D 0A ed int len;○♪◙○○○int wait;○○♪◙♪◙ 00020AE0 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 55 70 6C 6F 61 64 28 44 61 74 PASCAL:○FUNCTION UltraUpload(Dat 00020B00 61 50 74 72 20 20 3A 20 50 4F 49 4E 54 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 aPtr : POINTER;♪◙○○○ 00020B20 20 20 20 20 20 20 20 20 20 20 43 6F 6E 74 72 6F 6C 20 20 3A 20 42 59 54 45 3B 0D 0A 09 09 09 20 Control : BYTE;♪◙○○○ 00020B40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 52 41 4D 5F 4C 6F 63 20 3A 20 4C DRAM_Loc : L 00020B60 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ONGINT;♪◙○○○ 00020B80 20 4C 65 6E 20 20 20 20 20 20 3A 20 57 4F 52 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 Len : WORD;♪◙○○○ 00020BA0 20 20 20 20 20 20 20 20 20 20 20 57 61 69 74 20 20 20 20 20 3A 20 42 4F 4F 4C 45 41 4E 29 20 3A Wait : BOOLEAN) : 00020BC0 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 BOOLEAN;♪◙♪◙Remarks:○This routi 00020BE0 6E 65 20 77 69 6C 6C 20 72 65 74 72 69 65 76 65 20 61 20 63 68 75 6E 6B 20 6F 66 20 64 61 74 61 ne will retrieve a chunk of data 00020C00 20 66 72 6F 6D 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 27 73 20 44 52 41 4D 2E 20 20 49 74 from the UltraSound's DRAM. It 00020C20 20 77 69 6C 6C 20 74 72 61 6E 73 66 65 72 20 27 6C 65 6E 27 20 23 20 6F 66 20 62 79 74 65 73 20 will transfer 'len' # of bytes 00020C40 74 6F 20 44 61 74 61 50 74 72 20 28 69 6E 20 50 43 29 20 66 72 6F 6D 20 44 52 41 4D 5F 6C 6F 63 to DataPtr (in PC) from DRAM_loc 00020C60 20 28 69 6E 20 55 6C 74 72 61 53 6F 75 6E 64 29 2E 20 20 49 66 20 27 57 61 69 74 27 20 69 73 20 (in UltraSound). If 'Wait' is 00020C80 54 52 55 45 2C 20 74 68 65 6E 20 69 74 20 77 69 6C 6C 20 77 61 69 74 20 75 6E 74 69 6C 20 74 68 TRUE, then it will wait until th 00020CA0 65 20 74 72 61 6E 73 66 65 72 20 69 73 20 63 6F 6D 70 6C 65 74 65 2E 20 20 49 66 20 27 57 61 69 e transfer is complete. If 'Wai 00020CC0 74 27 20 69 73 20 46 41 4C 53 45 2C 20 69 74 20 77 69 6C 6C 20 72 65 74 75 72 6E 20 61 73 20 73 t' is FALSE, it will return as s 00020CE0 6F 6F 6E 20 61 73 20 74 72 61 6E 73 66 65 72 20 69 73 20 73 74 61 72 74 65 64 2E 20 20 53 65 65 oon as transfer is started. See 00020D00 20 41 70 70 65 6E 64 69 78 20 44 20 66 6F 72 20 61 20 64 65 66 69 6E 69 74 69 6F 6E 20 6F 66 20 Appendix D for a definition of 00020D20 74 68 65 20 63 6F 6E 74 72 6F 6C 20 62 69 74 73 2E 20 20 54 68 65 79 20 73 70 65 63 69 66 79 20 the control bits. They specify 00020D40 74 68 65 20 74 79 70 65 20 6F 66 20 64 61 74 61 20 62 65 69 6E 67 20 72 65 74 72 69 65 76 65 64 the type of data being retrieved 00020D60 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 20 20 20 20 20 55 4C 54 52 41 5F 4F 4B 20 69 .♪◙♪◙Returns:○C: ULTRA_OK i 00020D80 66 20 6E 6F 20 70 72 6F 62 6C 65 6D 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 44 4D 41 5F 42 55 f no problem.♪◙○○○ DMA_BU 00020DA0 53 59 20 69 66 20 44 4D 41 20 43 68 61 6E 6E 65 6C 20 69 73 20 62 75 73 79 2E 0D 0A 0D 0A 09 09 SY if DMA Channel is busy.♪◙♪◙○○ 00020DC0 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 74 72 61 6E 73 66 65 72 20 77 61 73 20 73 75 ○PASCAL: TRUE if transfer was su 00020DE0 63 63 65 73 73 66 75 6C 2E 20 20 20 46 41 4C 53 45 20 6F 74 68 65 72 77 69 73 65 2E 0D 0A 09 09 ccessful. FALSE otherwise.♪◙○○ 00020E00 09 20 20 20 20 20 20 20 20 49 66 20 75 6E 73 75 63 63 65 73 73 66 75 6C 2C 20 63 68 65 63 6B 20 ○ If unsuccessful, check 00020E20 55 6C 74 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D UltraErrorStr for the reason.♪◙♪ 00020E40 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 44 6F 77 6E 6C 6F 61 64 2C 20 55 6C 74 72 61 44 ◙See also:○UltraDownload, UltraD 00020E60 52 41 4D 44 4D 41 57 61 69 74 0D 0A 0C 55 6C 74 72 61 56 65 63 74 6F 72 56 6F 6C 75 6D 65 20 0D RAMDMAWait♪◙♀UltraVectorVolume ♪ 00020E80 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ◙_______________________________ 00020EA0 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 61 6D 70 20 61 20 76 6F 6C 75 6D 65 20 __♪◙♪◙Purpose:○To ramp a volume 00020EC0 66 72 6F 6D 20 69 74 27 73 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 74 6F 20 61 20 from it's current position to a 00020EE0 6E 65 77 20 76 61 6C 75 65 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 56 65 63 new value.♪◙♪◙C:○○○void UltraVec 00020F00 74 6F 72 56 6F 6C 75 6D 65 28 76 6F 69 63 65 2C 65 6E 64 5F 69 64 78 2C 72 61 74 65 2C 6D 6F 64 torVolume(voice,end_idx,rate,mod 00020F20 65 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 e);♪◙○○○int voice;♪◙○○○unsigned 00020F40 69 6E 74 20 65 6E 64 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 72 61 74 65 3B int end;♪◙○○○unsigned char rate; 00020F60 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 6D 6F 64 65 3B 0D 0A 0D 0A 50 41 53 43 ♪◙○○○unsigned char mode;♪◙♪◙PASC 00020F80 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 56 65 63 74 6F 72 56 6F 6C 75 6D 65 28 AL:○PROCEDURE UltraVectorVolume( 00020FA0 56 6F 69 63 65 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 Voice : INTEGER;♪◙○○○ 00020FC0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 45 6E 64 20 20 3A 20 57 4F 52 44 3B 0D 0A VEnd : WORD;♪◙ 00020FE0 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 ○○○ V 00021000 52 61 74 65 20 3A 20 42 59 54 45 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Rate : BYTE;♪◙○○○ 00021020 20 20 20 20 20 20 20 20 20 20 20 20 20 56 4D 6F 64 65 20 3A 20 42 59 54 45 29 3B 0D 0A 0D 0A 52 VMode : BYTE);♪◙♪◙R 00021040 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6E 20 62 65 20 75 73 65 64 emarks:○This routine can be used 00021060 20 74 6F 20 72 61 6D 70 20 66 72 6F 6D 20 61 6E 20 75 6E 6B 6E 6F 77 6E 20 76 6F 6C 75 6D 65 20 to ramp from an unknown volume 00021080 76 61 6C 75 65 20 74 6F 20 61 20 6E 65 77 20 76 61 6C 75 65 2E 20 20 49 74 20 69 73 20 75 73 65 value to a new value. It is use 000210A0 66 75 6C 20 69 66 20 79 6F 75 20 61 72 65 20 64 6F 69 6E 67 20 76 6F 6C 75 6D 65 20 65 6E 76 65 ful if you are doing volume enve 000210C0 6C 6F 70 65 73 20 61 6E 64 20 6E 65 65 64 20 74 6F 20 72 65 73 74 61 72 74 20 74 68 65 20 61 74 lopes and need to restart the at 000210E0 74 61 63 6B 2F 64 65 63 61 79 20 73 65 71 75 65 6E 63 65 20 61 74 20 61 6E 79 20 74 69 6D 65 2E tack/decay sequence at any time. 00021100 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 52 61 6D 70 56 6F 6C 75 6D 65 2C 20 55 ♪◙♪◙See also:○UltraRampVolume, U 00021120 6C 74 72 61 53 74 6F 70 56 6F 6C 75 6D 65 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 56 65 72 73 69 ltraStopVolume♪◙♪◙♪◙♪◙UltraVersi 00021140 6F 6E 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F on♪◙____________________________ 00021160 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 65 74 75 72 6E 20 74 68 65 20 _____♪◙♪◙Purpose:○To return the 00021180 76 65 72 73 69 6F 6E 20 6F 66 20 74 68 65 20 53 44 4B 20 63 6F 64 65 20 62 65 69 6E 67 20 75 73 version of the SDK code being us 000211A0 65 64 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 56 65 72 73 69 6F 6E 28 6D 61 ed.♪◙♪◙C:○○○void UltraVersion(ma 000211C0 6A 6F 72 2C 6D 69 6E 6F 72 29 3B 0D 0A 09 09 09 69 6E 74 20 2A 6D 61 6A 6F 72 3B 0D 0A 09 09 09 jor,minor);♪◙○○○int *major;♪◙○○○ 000211E0 69 6E 74 20 2A 6D 69 6E 6F 72 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 int *minor;♪◙♪◙PASCAL:○PROCEDURE 00021200 20 55 6C 74 72 61 56 65 72 73 69 6F 6E 28 56 41 52 20 4D 61 6A 6F 72 20 3A 20 42 59 54 45 3B 0D UltraVersion(VAR Major : BYTE;♪ 00021220 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 41 52 20 4D ◙○○○ VAR M 00021240 69 6E 6F 72 20 3A 20 42 59 54 45 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 inor : BYTE);♪◙♪◙Remarks:○This r 00021260 6F 75 74 69 6E 65 20 63 61 6E 20 62 65 20 75 73 65 66 75 6C 20 74 6F 20 74 72 61 63 6B 20 74 68 outine can be useful to track th 00021280 65 20 76 65 72 73 69 6F 6E 20 6F 66 20 74 68 65 20 53 44 4B 20 74 68 61 74 20 77 61 73 20 75 73 e version of the SDK that was us 000212A0 65 64 20 69 6E 20 63 6F 6D 70 69 6C 69 6E 67 20 79 6F 75 72 20 73 6F 75 72 63 65 20 63 6F 64 65 ed in compiling your source code 000212C0 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4D 61 6A 6F 72 20 28 31 20 64 69 67 69 74 29 20 61 6E .♪◙♪◙Returns:○Major (1 digit) an 000212E0 64 20 6D 69 6E 6F 72 20 28 32 20 64 69 67 69 74 73 29 20 76 65 72 73 69 6F 6E 20 6F 66 20 74 68 d minor (2 digits) version of th 00021300 65 20 75 6E 69 74 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 56 65 72 73 69 6F e unit.♪◙♪◙See also:○UltraVersio 00021320 6E 53 74 72 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 56 65 72 73 69 6F 6E 53 74 72 0D 0A 5F 5F 5F 5F nStr♪◙♪◙♪◙♀UltraVersionStr♪◙____ 00021340 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D _____________________________♪◙♪ 00021360 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 65 74 75 72 6E 20 74 68 65 20 76 65 72 73 69 6F 6E 20 ◙Purpose:○To return the version 00021380 6F 66 20 74 68 65 20 53 44 4B 20 63 6F 64 65 20 62 65 69 6E 67 20 75 73 65 64 20 69 6E 20 61 20 of the SDK code being used in a 000213A0 73 74 72 69 6E 67 2E 0D 0A 0D 0A 43 3A 09 09 09 54 68 69 73 20 66 75 6E 63 74 69 6F 6E 20 69 73 string.♪◙♪◙C:○○○This function is 000213C0 20 6E 6F 74 20 61 76 61 69 6C 61 62 6C 65 2E 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 not available.♪◙♪◙PASCAL:○FUNCT 000213E0 49 4F 4E 20 55 6C 74 72 61 56 65 72 73 69 6F 6E 53 74 72 20 3A 20 53 74 72 69 6E 67 3B 0D 0A 0D ION UltraVersionStr : String;♪◙♪ 00021400 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6E 20 62 65 20 75 73 ◙Remarks:○This routine can be us 00021420 65 66 75 6C 20 74 6F 20 74 72 61 63 6B 20 74 68 65 20 76 65 72 73 69 6F 6E 20 6F 66 20 74 68 65 eful to track the version of the 00021440 20 53 44 4B 20 74 68 61 74 20 77 61 73 20 75 73 65 64 20 69 6E 20 63 6F 6D 70 69 6C 69 6E 67 20 SDK that was used in compiling 00021460 79 6F 75 72 20 73 6F 75 72 63 65 20 63 6F 64 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4D 61 your source code.♪◙♪◙Returns:○Ma 00021480 6A 6F 72 20 61 6E 64 20 6D 69 6E 6F 72 20 76 65 72 73 69 6F 6E 20 6F 66 20 74 68 65 20 75 6E 69 jor and minor version of the uni 000214A0 74 2C 20 69 6E 20 73 74 72 69 6E 67 20 66 6F 72 6D 61 74 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F t, in string format.♪◙♪◙See also 000214C0 3A 09 55 6C 74 72 61 56 65 72 73 69 6F 6E 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 56 6F 69 63 65 :○UltraVersion♪◙♪◙♪◙♪◙UltraVoice 000214E0 53 74 6F 70 70 65 64 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F Stopped♪◙_______________________ 00021500 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 65 74 75 72 6E __________♪◙♪◙Purpose:○To return 00021520 20 77 68 65 74 68 65 72 20 61 20 76 6F 69 63 65 20 69 73 20 70 6C 61 79 69 6E 67 2E 0D 0A 0D 0A whether a voice is playing.♪◙♪◙ 00021540 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 56 6F 69 63 65 53 74 6F 70 70 65 64 28 76 6F 69 63 65 C:○○○int UltraVoiceStopped(voice 00021560 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E );♪◙○○○int voice;♪◙♪◙PASCAL:○FUN 00021580 43 54 49 4F 4E 20 55 6C 74 72 61 56 6F 69 63 65 53 74 6F 70 70 65 64 28 56 6F 69 63 65 20 3A 20 CTION UltraVoiceStopped(Voice : 000215A0 49 4E 54 45 47 45 52 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 INTEGER) : BOOLEAN;♪◙♪◙Remarks:○ 000215C0 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 73 65 65 20 This routine can be used to see 000215E0 69 66 20 61 20 73 61 6D 70 6C 65 20 68 61 73 20 66 69 6E 69 73 68 65 64 20 70 6C 61 79 69 6E 67 if a sample has finished playing 00021600 20 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 54 52 55 45 20 69 66 20 74 68 65 20 76 6F 69 63 65 .♪◙♪◙Returns:○TRUE if the voice 00021620 20 69 73 20 73 74 6F 70 70 65 64 2C 20 46 41 4C 53 45 20 6F 74 68 65 72 77 69 73 65 2E 0D 0A 0D is stopped, FALSE otherwise.♪◙♪ 00021640 0A 0D 0A 0D 0A 55 6C 74 72 61 56 6F 6C 75 6D 65 53 74 6F 70 70 65 64 0D 0A 5F 5F 5F 5F 5F 5F 5F ◙♪◙♪◙UltraVolumeStopped♪◙_______ 00021660 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 __________________________♪◙♪◙Pu 00021680 72 70 6F 73 65 3A 09 54 6F 20 64 65 74 65 72 6D 69 6E 65 20 69 66 20 61 20 76 6F 6C 75 6D 65 20 rpose:○To determine if a volume 000216A0 72 61 6D 70 20 69 73 20 72 75 6E 6E 69 6E 67 20 66 6F 72 20 61 20 70 61 72 74 69 63 75 6C 61 72 ramp is running for a particular 000216C0 20 76 6F 69 63 65 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 72 61 56 6F 6C 75 6D 65 53 voice.♪◙♪◙C:○○○int UltraVolumeS 000216E0 74 6F 70 70 65 64 28 76 6F 69 63 65 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 0D topped(voice);♪◙○○○int voice;♪◙♪ 00021700 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 56 6F 6C 75 6D 65 53 74 6F ◙PASCAL:○FUNCTION UltraVolumeSto 00021720 70 70 65 64 28 56 6F 69 63 65 20 3A 20 49 4E 54 45 47 45 52 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B pped(Voice : INTEGER) : BOOLEAN; 00021740 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 75 73 65 ♪◙♪◙Remarks:○This routine is use 00021760 64 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 20 74 68 65 20 63 75 72 72 65 6E 74 20 73 74 61 74 65 d to determine the current state 00021780 20 6F 66 20 74 68 65 20 76 6F 6C 75 6D 65 20 6F 66 20 74 68 65 20 76 6F 69 63 65 2E 20 20 49 74 of the volume of the voice. It 000217A0 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 73 65 65 20 69 66 20 61 20 76 6F 6C 75 6D 65 20 can be used to see if a volume 000217C0 72 61 6D 70 20 69 73 20 73 74 69 6C 6C 20 72 75 6E 6E 69 6E 67 2E 0D 0A 0D 0A 52 65 74 75 72 6E ramp is still running.♪◙♪◙Return 000217E0 73 3A 09 54 52 55 45 20 69 66 20 6E 6F 20 76 6F 6C 75 6D 65 20 72 61 6D 70 20 69 73 20 72 75 6E s:○TRUE if no volume ramp is run 00021800 6E 69 6E 67 2C 20 46 41 4C 53 45 20 6F 74 68 65 72 77 69 73 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C ning, FALSE otherwise.♪◙♪◙See al 00021820 73 6F 3A 09 55 6C 74 72 61 52 61 6D 70 56 6F 6C 75 6D 65 2C 20 55 6C 74 72 61 52 61 6D 70 4C 69 so:○UltraRampVolume, UltraRampLi 00021840 6E 65 61 72 56 6F 6C 75 6D 65 0D 0A 0C 55 6C 74 72 61 57 61 69 74 44 52 41 4D 44 4D 41 0D 0A 5F nearVolume♪◙♀UltraWaitDRAMDMA♪◙_ 00021860 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ________________________________ 00021880 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 77 61 69 74 20 66 6F 72 20 61 20 44 52 41 4D 20 ♪◙♪◙Purpose:○To wait for a DRAM 000218A0 44 4D 41 20 74 72 61 6E 73 66 65 72 20 74 6F 20 63 6F 6D 70 6C 65 74 65 2E 0D 0A 0D 0A 43 3A 09 DMA transfer to complete.♪◙♪◙C:○ 000218C0 09 09 76 6F 69 64 20 55 6C 74 72 61 57 61 69 74 44 72 61 6D 44 4D 41 28 76 6F 69 64 29 3B 0D 0A ○○void UltraWaitDramDMA(void);♪◙ 000218E0 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 57 61 69 74 44 52 41 ♪◙PASCAL:○PROCEDURE UltraWaitDRA 00021900 4D 44 4D 41 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 49 66 20 61 20 44 4D 41 20 74 72 61 6E 73 MDMA;♪◙♪◙Remarks:○If a DMA trans 00021920 66 65 72 20 74 6F 2F 66 72 6F 6D 20 44 52 41 4D 20 69 73 20 73 74 61 72 74 65 64 20 62 75 74 20 fer to/from DRAM is started but 00021940 74 6F 6C 64 20 6E 6F 74 20 74 6F 20 77 61 69 74 20 66 6F 72 20 69 74 20 74 6F 20 63 6F 6D 70 6C told not to wait for it to compl 00021960 65 74 65 2C 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F ete, this routine can be used to 00021980 20 77 61 69 74 20 75 6E 74 69 6C 20 69 74 20 68 61 73 20 63 6F 6D 70 6C 65 74 65 64 2E 0D 0A 0D wait until it has completed.♪◙♪ 000219A0 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 44 6F 77 6E 6C 6F 61 64 2C 20 55 6C 74 72 61 55 ◙See also:○UltraDownload, UltraU 000219C0 70 6C 6F 61 64 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 57 61 69 74 52 65 63 6F 72 64 44 4D 41 0D pload♪◙♪◙♪◙♪◙UltraWaitRecordDMA♪ 000219E0 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ◙_______________________________ 00021A00 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 77 61 69 74 20 66 6F 72 20 61 20 72 65 63 __♪◙♪◙Purpose:○To wait for a rec 00021A20 6F 72 64 69 6E 67 20 44 4D 41 20 74 72 61 6E 73 66 65 72 20 74 6F 20 63 6F 6D 70 6C 65 74 65 2E ording DMA transfer to complete. 00021A40 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 57 61 69 74 52 65 63 6F 72 64 44 4D 41 ♪◙♪◙C:○○○void UltraWaitRecordDMA 00021A60 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 (void);♪◙♪◙PASCAL:○PROCEDURE Ult 00021A80 72 61 57 61 69 74 52 65 63 6F 72 64 44 4D 41 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 raWaitRecordDMA;♪◙♪◙Remarks:○Thi 00021AA0 73 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 6C 65 74 20 61 6E 20 61 70 70 6C 69 63 61 74 s can be used to let an applicat 00021AC0 69 6F 6E 20 77 61 69 74 20 75 6E 74 69 6C 20 61 20 63 6F 6D 70 6C 65 74 65 20 73 61 6D 70 6C 65 ion wait until a complete sample 00021AE0 20 69 73 20 66 69 6E 69 73 68 65 64 20 62 65 69 6E 67 20 61 63 71 75 69 72 65 64 2E 0D 0A 0D 0A is finished being acquired.♪◙♪◙ 00021B00 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 52 65 63 6F 72 64 44 61 74 61 0D 0A 0D 0A 0D 0A 0C See also:○UltraRecordData♪◙♪◙♪◙♀ 00021B20 55 6C 74 72 61 41 6C 6C 6F 63 56 6F 69 63 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F UltraAllocVoice♪◙_______________ 00021B40 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 __________________♪◙♪◙Purpose:○T 00021B60 6F 20 61 6C 6C 6F 63 61 74 65 20 61 20 6E 65 77 20 76 6F 69 63 65 20 6E 6F 74 20 63 75 72 72 65 o allocate a new voice not curre 00021B80 6E 74 6C 79 20 62 65 69 6E 67 20 75 73 65 64 2E 0D 0A 0D 0A 43 3A 09 09 09 69 6E 74 20 55 6C 74 ntly being used.♪◙♪◙C:○○○int Ult 00021BA0 72 61 41 6C 6C 6F 63 56 6F 69 63 65 28 76 6F 69 63 65 5F 6E 75 6D 2C 6E 65 77 5F 6E 75 6D 29 3B raAllocVoice(voice_num,new_num); 00021BC0 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 5F 6E 75 6D 3B 0D 0A 09 09 09 69 6E 74 20 2A 6E 65 77 ♪◙○○○int voice_num;♪◙○○○int *new 00021BE0 5F 6E 75 6D 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 41 _num;♪◙♪◙PASCAL:○FUNCTION UltraA 00021C00 6C 6C 6F 63 56 6F 69 63 65 28 56 41 52 20 56 6F 69 63 65 5F 4E 75 6D 20 3A 20 49 4E 54 45 47 45 llocVoice(VAR Voice_Num : INTEGE 00021C20 52 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 R) : BOOLEAN;♪◙♪◙Remarks:○This r 00021C40 6F 75 74 69 6E 65 20 77 69 6C 6C 20 72 65 74 75 72 6E 20 61 20 76 6F 69 63 65 20 66 6F 72 20 79 outine will return a voice for y 00021C60 6F 75 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 74 6F 20 75 73 65 2E 20 49 66 20 79 6F 75 20 73 our application to use. If you s 00021C80 75 70 70 6C 79 20 61 20 76 6F 69 63 65 20 6E 75 6D 62 65 72 2C 20 69 74 20 77 69 6C 6C 20 61 74 upply a voice number, it will at 00021CA0 74 65 6D 70 74 20 74 6F 20 61 6C 6C 6F 63 61 74 65 20 74 68 61 74 20 70 61 72 74 69 63 75 6C 61 tempt to allocate that particula 00021CC0 72 20 76 6F 69 63 65 2E 20 49 66 20 79 6F 75 20 70 61 73 73 20 61 20 2D 31 20 66 6F 72 20 74 68 r voice. If you pass a -1 for th 00021CE0 65 20 76 6F 69 63 65 20 6E 75 6D 62 65 72 2C 20 69 74 20 77 69 6C 6C 20 72 65 74 75 72 6E 20 74 e voice number, it will return t 00021D00 68 65 20 6E 65 78 74 20 66 72 65 65 20 76 6F 69 63 65 2E 20 54 68 69 73 20 72 6F 75 74 69 6E 65 he next free voice. This routine 00021D20 20 77 69 6C 6C 20 6F 6E 6C 79 20 61 6C 6C 6F 63 61 74 65 20 76 6F 69 63 65 73 20 75 70 20 74 6F will only allocate voices up to 00021D40 20 74 68 65 20 23 20 6F 66 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 73 70 65 63 69 66 69 65 the # of active voices specifie 00021D60 64 20 69 6E 20 74 68 65 20 55 6C 74 72 61 4F 70 65 6E 20 66 75 6E 63 74 69 6F 6E 2E 20 0D 0A 0D d in the UltraOpen function. ♪◙♪ 00021D80 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 55 4C 54 52 41 5F 4F 4B 20 20 20 20 20 20 20 20 20 20 20 ◙Returns:○C: ULTRA_OK 00021DA0 20 20 47 6F 74 20 61 20 76 6F 69 63 65 20 6F 6B 0D 0A 09 09 09 20 20 20 56 4F 49 43 45 5F 4E 4F Got a voice ok♪◙○○○ VOICE_NO 00021DC0 54 5F 46 52 45 45 20 20 20 20 20 20 20 43 61 6E 27 74 20 67 65 74 20 74 68 65 20 76 6F 69 63 65 T_FREE Can't get the voice 00021DE0 20 6F 72 20 6E 6F 6E 65 20 6C 65 66 74 2E 0D 0A 09 09 09 20 20 20 56 4F 49 43 45 5F 4F 55 54 5F or none left.♪◙○○○ VOICE_OUT_ 00021E00 4F 46 5F 52 41 4E 47 45 20 20 20 53 70 65 63 69 66 69 65 64 20 76 6F 69 63 65 20 6F 75 74 20 6F OF_RANGE Specified voice out o 00021E20 66 20 72 61 6E 67 65 2E 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 74 f range.♪◙♪◙○○○PASCAL: TRUE if t 00021E40 68 65 72 65 20 77 61 73 20 6E 6F 20 70 72 6F 62 6C 65 6D 20 61 6C 6C 6F 63 61 74 69 6E 67 20 74 here was no problem allocating t 00021E60 68 65 20 76 6F 69 63 65 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 49 66 20 46 41 4C 53 45 2C 20 he voice.♪◙○○○ If FALSE, 00021E80 63 68 65 63 6B 20 55 6C 74 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 check UltraErrorStr for the reas 00021EA0 6F 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 43 6C 65 61 72 56 6F 69 63 65 on.♪◙♪◙See also:○UltraClearVoice 00021EC0 73 2C 20 55 6C 74 72 61 46 72 65 65 56 6F 69 63 65 73 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 43 s, UltraFreeVoices♪◙♪◙♪◙♪◙UltraC 00021EE0 6C 65 61 72 56 6F 69 63 65 73 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F learVoices♪◙____________________ 00021F00 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 65 73 _____________♪◙♪◙Purpose:○To res 00021F20 65 74 20 61 6C 6C 20 76 6F 69 63 65 73 20 74 6F 20 61 6E 20 75 6E 2D 61 6C 6C 6F 63 61 74 65 64 et all voices to an un-allocated 00021F40 20 73 74 61 74 65 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 43 6C 65 61 72 56 state.♪◙♪◙C:○○○void UltraClearV 00021F60 6F 69 63 65 73 28 76 6F 69 64 29 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 oices(void);♪◙♪◙PASCAL:○PROCEDUR 00021F80 45 20 55 6C 74 72 61 43 6C 65 61 72 56 6F 69 63 65 73 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 E UltraClearVoices;♪◙♪◙Remarks:○ 00021FA0 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 64 65 61 6C 6C 6F 63 61 74 65 20 61 6C 6C This routine will deallocate all 00021FC0 20 70 72 65 76 69 6F 75 73 6C 79 20 61 6C 6C 6F 63 61 74 65 64 20 76 6F 69 63 65 73 2E 20 49 74 previously allocated voices. It 00021FE0 20 77 6F 75 6C 64 20 62 65 20 61 64 76 69 73 61 62 6C 65 20 74 6F 20 63 61 6C 6C 20 74 68 69 73 would be advisable to call this 00022000 20 62 65 66 6F 72 65 20 75 73 69 6E 67 20 65 69 74 68 65 72 20 55 6C 74 72 61 41 6C 6C 6F 63 56 before using either UltraAllocV 00022020 6F 69 63 65 20 6F 72 20 55 6C 74 72 61 46 72 65 65 56 6F 69 63 65 2E 0D 0A 0D 0A 53 65 65 20 61 oice or UltraFreeVoice.♪◙♪◙See a 00022040 6C 73 6F 3A 09 55 6C 74 72 61 41 6C 6C 6F 63 56 6F 69 63 65 2C 20 55 6C 74 72 61 46 72 65 65 56 lso:○UltraAllocVoice, UltraFreeV 00022060 6F 69 63 65 2E 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 46 72 65 65 56 6F 69 63 65 0D 0A 5F 5F 5F 5F oice.♪◙♪◙♪◙♀UltraFreeVoice♪◙____ 00022080 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D _____________________________♪◙♪ 000220A0 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 66 72 65 65 20 75 70 20 61 6E 20 61 6C 6C 6F 63 61 74 65 ◙Purpose:○To free up an allocate 000220C0 64 20 76 6F 69 63 65 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 46 72 65 65 56 d voice.♪◙♪◙C:○○○void UltraFreeV 000220E0 6F 69 63 65 28 76 6F 69 63 65 5F 6E 75 6D 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 5F 6E oice(voice_num);♪◙○○○int voice_n 00022100 75 6D 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 46 72 um;♪◙♪◙PASCAL:○PROCEDURE UltraFr 00022120 65 65 56 6F 69 63 65 28 56 6F 69 63 65 5F 4E 75 6D 20 3A 20 49 4E 54 45 47 45 52 29 3B 0D 0A 0D eeVoice(Voice_Num : INTEGER);♪◙♪ 00022140 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 66 72 65 65 ◙Remarks:○This routine will free 00022160 20 75 70 20 61 20 70 72 65 76 69 6F 75 73 6C 79 20 61 6C 6C 6F 63 61 74 65 64 20 76 6F 69 63 65 up a previously allocated voice 00022180 2E 20 54 68 69 73 20 73 68 6F 75 6C 64 20 62 65 20 75 73 65 64 20 77 68 65 6E 20 79 6F 75 72 20 . This should be used when your 000221A0 61 70 70 6C 69 63 61 74 69 6F 6E 20 6E 6F 20 6C 6F 6E 67 65 72 20 6E 65 65 64 73 20 74 68 65 20 application no longer needs the 000221C0 76 6F 69 63 65 20 73 6F 20 69 74 20 63 61 6E 20 62 65 20 72 65 2D 61 6C 6C 6F 63 61 74 65 64 20 voice so it can be re-allocated 000221E0 61 74 20 61 6E 6F 74 68 65 72 20 74 69 6D 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C at another time.♪◙♪◙See also:○Ul 00022200 74 72 61 43 6C 65 61 72 56 6F 69 63 65 73 2C 20 55 6C 74 72 61 41 6C 6C 6F 63 56 6F 69 63 65 2E traClearVoices, UltraAllocVoice. 00022220 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 56 6F 69 63 65 4F 66 66 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F ♪◙♪◙♪◙♪◙UltraVoiceOff♪◙_________ 00022240 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 ________________________♪◙♪◙Purp 00022260 6F 73 65 3A 09 54 6F 20 61 6C 6C 6F 77 20 66 6C 65 78 69 62 69 6C 69 74 79 20 69 6E 20 73 74 6F ose:○To allow flexibility in sto 00022280 70 70 69 6E 67 20 61 20 76 6F 69 63 65 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 pping a voice.♪◙♪◙C:○○○void Ultr 000222A0 61 56 6F 69 63 65 4F 66 66 28 76 6F 69 63 65 2C 65 6E 64 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F aVoiceOff(voice,end);♪◙○○○int vo 000222C0 69 63 65 3B 0D 0A 09 09 09 69 6E 74 20 65 6E 64 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F ice;♪◙○○○int end;♪◙♪◙PASCAL:○PRO 000222E0 43 45 44 55 52 45 20 55 6C 74 72 61 56 6F 69 63 65 4F 66 66 28 56 6F 69 63 65 20 3A 20 49 4E 54 CEDURE UltraVoiceOff(Voice : INT 00022300 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 EGER;♪◙○○○ 00022320 20 20 56 45 6E 64 20 20 3A 20 42 4F 4F 4C 45 41 4E 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 VEnd : BOOLEAN);♪◙♪◙Remarks:○ 00022340 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 65 69 74 68 65 72 20 73 74 6F 70 20 61 20 This routine will either stop a 00022360 76 6F 69 63 65 20 69 6D 6D 65 64 69 61 74 65 6C 79 20 6F 72 20 6C 65 74 20 69 74 20 66 69 6E 69 voice immediately or let it fini 00022380 73 68 20 69 74 73 20 63 75 72 72 65 6E 74 20 6C 6F 6F 70 2E 20 20 49 66 20 27 56 45 6E 64 27 20 sh its current loop. If 'VEnd' 000223A0 69 73 20 46 41 4C 53 45 20 74 68 65 6E 20 69 74 20 77 69 6C 6C 20 73 74 6F 70 20 61 62 72 75 70 is FALSE then it will stop abrup 000223C0 74 6C 79 2C 20 6F 74 68 65 72 77 69 73 65 20 69 74 20 77 69 6C 6C 20 66 69 6E 69 73 68 20 74 68 tly, otherwise it will finish th 000223E0 65 20 63 75 72 72 65 6E 74 20 6C 6F 6F 70 2E 20 20 55 6C 74 72 61 52 65 61 64 56 6F 69 63 65 20 e current loop. UltraReadVoice 00022400 63 6F 75 6C 64 20 62 65 20 63 61 6C 6C 65 64 20 61 66 74 65 72 77 61 72 64 73 20 69 66 20 79 6F could be called afterwards if yo 00022420 75 20 6E 65 65 64 20 74 6F 20 6B 6E 6F 77 20 77 68 65 72 65 20 74 68 65 20 6C 6F 6F 70 20 66 69 u need to know where the loop fi 00022440 6E 69 73 68 65 64 2E 20 20 0D 0A 09 09 09 49 66 20 75 73 65 64 20 77 69 74 68 20 55 6C 74 72 61 nished. ♪◙○○○If used with Ultra 00022460 53 65 74 56 6F 69 63 65 45 6E 64 2C 20 79 6F 75 20 63 6F 75 6C 64 20 69 6D 70 6C 65 6D 65 6E 74 SetVoiceEnd, you could implement 00022480 20 61 20 73 61 6D 70 6C 65 64 20 64 65 63 61 79 20 6F 6E 20 74 68 65 20 65 6E 64 20 6F 66 20 79 a sampled decay on the end of y 000224A0 6F 75 72 20 73 61 6D 70 6C 65 2E 20 20 54 68 69 73 20 77 6F 75 6C 64 20 6F 63 63 75 72 20 69 66 our sample. This would occur if 000224C0 20 79 6F 75 72 20 6C 6F 6F 70 20 70 6F 69 6E 74 20 77 61 73 20 6E 6F 74 20 61 74 20 74 68 65 20 your loop point was not at the 000224E0 65 6E 64 20 6F 66 20 79 6F 75 72 20 64 61 74 61 2C 20 61 6E 64 20 79 6F 75 20 63 68 61 6E 67 65 end of your data, and you change 00022500 64 20 74 68 65 20 65 6E 64 20 70 6F 69 6E 74 20 74 6F 20 74 68 65 20 72 65 61 6C 20 65 6E 64 20 d the end point to the real end 00022520 70 6F 69 6E 74 20 6F 66 20 79 6F 75 72 20 64 61 74 61 20 61 6E 64 20 74 68 65 6E 20 63 61 6C 6C point of your data and then call 00022540 65 64 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 74 68 20 56 45 6E 64 20 73 65 74 20 74 6F ed this routine with VEnd set to 00022560 20 54 52 55 45 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 52 65 61 64 56 6F 69 TRUE.♪◙♪◙See also:○UltraReadVoi 00022580 63 65 2C 20 55 6C 74 72 61 53 65 74 56 6F 69 63 65 45 6E 64 0D 0A 0D 0A 0D 0A 0C 55 6C 74 72 61 ce, UltraSetVoiceEnd♪◙♪◙♪◙♀Ultra 000225A0 56 6F 69 63 65 4F 6E 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F VoiceOn♪◙_______________________ 000225C0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 74 75 72 6E 20 61 __________♪◙♪◙Purpose:○To turn a 000225E0 20 76 6F 69 63 65 20 6F 6E 20 61 74 20 61 20 67 69 76 65 6E 20 66 72 65 71 75 65 6E 63 79 2E 0D voice on at a given frequency.♪ 00022600 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 56 6F 69 63 65 4F 6E 28 76 6F 69 63 65 2C ◙♪◙C:○○○void UltraVoiceOn(voice, 00022620 62 65 67 69 6E 2C 73 5F 6C 6F 6F 70 2C 65 5F 6C 6F 6F 70 2C 63 6F 6E 74 72 6F 6C 2C 66 72 65 71 begin,s_loop,e_loop,control,freq 00022640 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C );♪◙○○○int voice;♪◙○○○unsigned l 00022660 6F 6E 67 20 62 65 67 69 6E 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 73 5F 6C ong begin;♪◙○○○unsigned long s_l 00022680 6F 6F 70 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 65 5F 6C 6F 6F 70 3B 0D 0A oop;♪◙○○○unsigned long e_loop;♪◙ 000226A0 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 63 6F 6E 74 72 6F 6C 3B 0D 0A 09 09 09 75 6E ○○○unsigned char control;♪◙○○○un 000226C0 73 69 67 6E 65 64 20 6C 6F 6E 67 20 66 72 65 71 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F signed long freq;♪◙♪◙PASCAL:○PRO 000226E0 43 45 44 55 52 45 20 55 6C 74 72 61 56 6F 69 63 65 4F 6E 28 56 6F 69 63 65 20 20 20 20 20 20 3A CEDURE UltraVoiceOn(Voice : 00022700 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 INTEGER;♪◙○○○ 00022720 20 20 20 20 20 56 42 65 67 69 6E 20 20 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 VBegin : LONGINT;♪◙○○○ 00022740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 61 72 74 5F 4C 6F 6F 70 Start_Loop 00022760 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : LONGINT;♪◙○○○ 00022780 20 20 20 20 20 20 20 45 6E 64 5F 4C 6F 6F 70 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 09 09 End_Loop : LONGINT;♪◙○○ 000227A0 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6F 6E 74 72 6F 6C 20 ○ Control 000227C0 20 20 20 3A 20 42 59 54 45 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : BYTE;♪◙○○○ 000227E0 20 20 20 20 20 20 46 72 65 71 20 20 20 20 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 29 3B 0D 0A 0D 0A Freq : LONGINT);♪◙♪◙ 00022800 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 6A 75 73 74 20 73 65 74 73 20 Remarks:○This routine just sets 00022820 74 68 65 20 66 72 65 71 75 65 6E 63 79 20 77 69 74 68 20 55 6C 74 72 61 53 65 74 46 72 65 71 75 the frequency with UltraSetFrequ 00022840 65 6E 63 79 20 61 6E 64 20 74 68 65 6E 20 63 61 6C 6C 73 20 55 6C 74 72 61 53 74 61 72 74 56 6F ency and then calls UltraStartVo 00022860 69 63 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 53 65 74 46 72 65 71 75 65 ice.♪◙♪◙See also:○UltraSetFreque 00022880 6E 63 79 2C 20 55 6C 74 72 61 53 74 61 72 74 56 6F 69 63 65 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 ncy, UltraStartVoice♪◙♪◙♪◙♪◙Ultr 000228A0 61 53 65 74 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F aSetLinearVolume♪◙______________ 000228C0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 ___________________♪◙♪◙Purpose:○ 000228E0 54 6F 20 73 65 74 20 61 20 76 6F 69 63 65 27 73 20 76 6F 6C 75 6D 65 20 74 6F 20 61 20 6C 69 6E To set a voice's volume to a lin 00022900 65 61 72 69 7A 65 64 20 76 61 6C 75 65 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 earized value.♪◙♪◙C:○○○void Ultr 00022920 61 53 65 74 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 28 76 6F 69 63 65 2C 69 6E 64 65 78 29 3B 0D 0A aSetLinearVolume(voice,index);♪◙ 00022940 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 69 6E 74 20 69 6E 64 65 78 3B 0D 0A 0D 0A ○○○int voice;♪◙○○○int index;♪◙♪◙ 00022960 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 53 65 74 4C 69 6E 65 61 72 PASCAL:○PROCEDURE UltraSetLinear 00022980 56 6F 6C 75 6D 65 28 56 6F 69 63 65 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 Volume(Voice : INTEGER;♪◙○○○ 000229A0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6E 64 65 78 Index 000229C0 20 3A 20 49 4E 54 45 47 45 52 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F : INTEGER);♪◙♪◙Remarks:○This ro 000229E0 75 74 69 6E 65 20 69 6E 64 65 78 65 73 20 69 6E 74 6F 20 61 20 74 61 62 6C 65 20 74 6F 20 74 72 utine indexes into a table to tr 00022A00 61 6E 73 6C 61 74 65 20 61 20 6C 69 6E 65 61 72 20 76 6F 6C 75 6D 65 20 28 30 2D 35 31 31 29 20 anslate a linear volume (0-511) 00022A20 74 6F 20 61 20 6C 6F 67 61 72 69 74 68 6D 69 63 20 6F 6E 65 20 28 30 2D 34 30 39 35 29 2C 20 61 to a logarithmic one (0-4095), a 00022A40 6E 64 20 74 68 65 6E 20 63 61 6C 6C 73 20 55 6C 74 72 61 53 65 74 56 6F 6C 75 6D 65 2E 0D 0A 0D nd then calls UltraSetVolume.♪◙♪ 00022A60 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 53 65 74 56 6F 6C 75 6D 65 0D 0A 0D 0A 0D 0A 0C ◙See also:○UltraSetVolume♪◙♪◙♪◙♀ 00022A80 55 6C 74 72 61 52 65 61 64 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F UltraReadLinearVolume♪◙_________ 00022AA0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 ________________________♪◙♪◙Purp 00022AC0 6F 73 65 3A 09 54 6F 20 72 65 61 64 20 61 20 76 6F 69 63 65 27 73 20 76 6F 6C 75 6D 65 20 61 73 ose:○To read a voice's volume as 00022AE0 20 61 20 6C 69 6E 65 61 72 20 76 61 6C 75 65 2E 0D 0A 0D 0A 43 3A 09 09 09 54 68 69 73 20 66 75 a linear value.♪◙♪◙C:○○○This fu 00022B00 6E 63 74 69 6F 6E 20 69 73 20 6E 6F 74 20 61 76 61 69 6C 61 62 6C 65 2E 0D 0A 0D 0A 50 41 53 43 nction is not available.♪◙♪◙PASC 00022B20 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 52 65 61 64 4C 69 6E 65 61 72 56 6F 6C 75 AL:○FUNCTION UltraReadLinearVolu 00022B40 6D 65 28 56 6F 69 63 65 20 3A 20 49 4E 54 45 47 45 52 29 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A me(Voice : INTEGER) : INTEGER;♪◙ 00022B60 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 6E 64 65 78 65 73 20 ♪◙Remarks:○This routine indexes 00022B80 69 6E 74 6F 20 61 20 74 61 62 6C 65 20 74 6F 20 74 72 61 6E 73 6C 61 74 65 20 61 20 30 2D 34 30 into a table to translate a 0-40 00022BA0 39 35 20 6C 6F 67 61 72 69 74 68 6D 69 63 20 76 6F 6C 75 6D 65 20 74 6F 20 61 20 30 2D 35 31 31 95 logarithmic volume to a 0-511 00022BC0 20 6C 69 6E 65 61 72 20 76 6F 6C 75 6D 65 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 4C 69 6E 65 linear volume.♪◙♪◙Returns:○Line 00022BE0 61 72 20 56 6F 6C 75 6D 65 20 56 61 6C 75 65 20 28 30 2D 35 31 31 29 2E 0D 0A 0D 0A 53 65 65 20 ar Volume Value (0-511).♪◙♪◙See 00022C00 61 6C 73 6F 3A 09 55 6C 74 72 61 53 65 74 56 6F 6C 75 6D 65 2C 20 55 6C 74 72 61 53 65 74 4C 69 also:○UltraSetVolume, UltraSetLi 00022C20 6E 65 61 72 56 6F 6C 75 6D 65 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 52 61 6D 70 4C 69 6E 65 61 nearVolume♪◙♪◙♪◙♪◙UltraRampLinea 00022C40 72 56 6F 6C 75 6D 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F rVolume♪◙_______________________ 00022C60 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 72 61 6D 70 20 61 __________♪◙♪◙Purpose:○To ramp a 00022C80 20 76 6F 69 63 65 27 73 20 76 6F 6C 75 6D 65 20 62 65 74 77 65 65 6E 20 6C 69 6E 65 61 72 20 76 voice's volume between linear v 00022CA0 6F 6C 75 6D 65 20 76 61 6C 75 65 73 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 olume values.♪◙♪◙C:○○○void Ultra 00022CC0 52 61 6D 70 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 28 76 6F 69 63 65 2C 73 74 61 72 74 2C 65 6E 64 RampLinearVolume(voice,start,end 00022CE0 2C 6D 73 65 63 73 2C 6D 6F 64 65 29 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 ,msecs,mode);♪◙○○○int voice;♪◙○○ 00022D00 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 73 74 61 72 74 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 ○unsigned int start;♪◙○○○unsigne 00022D20 64 20 69 6E 74 20 65 6E 64 3B 20 20 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 6D d int end; ♪◙○○○unsigned long m 00022D40 73 65 63 73 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 6D 6F 64 65 3B 0D 0A 0D secs;♪◙○○○unsigned char mode;♪◙♪ 00022D60 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 52 61 6D 70 4C 69 6E 65 ◙PASCAL:○PROCEDURE UltraRampLine 00022D80 61 72 56 6F 6C 75 6D 65 28 56 6F 69 63 65 20 20 20 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 arVolume(Voice : INTEGER;♪◙○ 00022DA0 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ○○ 00022DC0 20 20 53 74 61 72 74 5F 49 64 78 20 3A 20 57 4F 52 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 Start_Idx : WORD;♪◙○○○ 00022DE0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 6E 64 5F 49 64 78 20 End_Idx 00022E00 20 20 3A 20 57 4F 52 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : WORD;♪◙○○○ 00022E20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4D 73 65 63 73 20 20 20 20 20 3A 20 4C 4F 4E 47 49 4E Msecs : LONGIN 00022E40 54 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 T;♪◙○○○ 00022E60 20 20 20 20 20 20 20 56 4D 6F 64 65 20 20 20 20 20 3A 20 42 59 54 45 29 3B 0D 0A 0D 0A 52 65 6D VMode : BYTE);♪◙♪◙Rem 00022E80 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 75 73 65 64 20 74 6F 20 72 61 arks:○This routine is used to ra 00022EA0 6D 70 20 62 65 74 77 65 65 6E 20 6C 69 6E 65 61 72 20 76 6F 6C 75 6D 65 20 73 65 74 74 69 6E 67 mp between linear volume setting 00022EC0 73 2E 20 20 49 74 20 75 73 65 73 20 74 68 65 20 73 61 6D 65 20 6D 65 74 68 6F 64 20 61 73 20 55 s. It uses the same method as U 00022EE0 6C 74 72 61 53 65 74 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 ltraSetLinearVolume to determine 00022F00 20 74 68 65 20 61 63 74 75 61 6C 20 76 6F 6C 75 6D 65 20 73 65 74 74 69 6E 67 73 20 74 6F 20 75 the actual volume settings to u 00022F20 73 65 2C 20 61 6E 64 20 74 68 65 6E 20 63 61 6C 6C 73 20 55 6C 74 72 61 52 61 6D 70 56 6F 6C 75 se, and then calls UltraRampVolu 00022F40 6D 65 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 52 61 6D 70 56 6F 6C 75 6D 65 me.♪◙♪◙See also:○UltraRampVolume 00022F60 2C 20 55 6C 74 72 61 53 65 74 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 0D 0A 0D 0A 0D 0A 0C 55 6C 74 , UltraSetLinearVolume♪◙♪◙♪◙♀Ult 00022F80 72 61 56 65 63 74 6F 72 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F raVectorLinearVolume♪◙__________ 00022FA0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F _______________________♪◙♪◙Purpo 00022FC0 73 65 3A 09 54 6F 20 72 61 6D 70 20 61 20 6C 69 6E 65 61 72 20 76 6F 6C 75 6D 65 20 66 72 6F 6D se:○To ramp a linear volume from 00022FE0 20 69 74 27 73 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 74 6F 20 61 20 6B 6E 6F 77 it's current position to a know 00023000 6E 20 65 6E 64 20 70 6F 69 6E 74 2E 0D 0A 0D 0A 43 3A 09 09 09 76 6F 69 64 20 55 6C 74 72 61 56 n end point.♪◙♪◙C:○○○void UltraV 00023020 65 63 74 6F 72 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 28 76 6F 69 63 65 2C 65 6E 64 2C 72 61 74 65 ectorLinearVolume(voice,end,rate 00023040 2C 6D 6F 64 65 29 0D 0A 09 09 09 69 6E 74 20 76 6F 69 63 65 3B 0D 0A 09 09 09 75 6E 73 69 67 6E ,mode)♪◙○○○int voice;♪◙○○○unsign 00023060 65 64 20 69 6E 74 20 65 6E 64 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 72 61 ed int end;♪◙○○○unsigned char ra 00023080 74 65 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 63 68 61 72 20 6D 6F 64 65 3B 0D 0A 0D 0A 50 te;♪◙○○○unsigned char mode;♪◙♪◙P 000230A0 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 56 65 63 74 6F 72 4C 69 6E 65 ASCAL:○PROCEDURE UltraVectorLine 000230C0 61 72 56 6F 6C 75 6D 65 28 56 6F 69 63 65 20 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 arVolume(Voice : INTEGER;♪◙○○○ 000230E0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00023100 20 20 45 6E 64 5F 49 64 78 20 3A 20 57 4F 52 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 End_Idx : WORD;♪◙○○○ 00023120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 52 61 74 65 20 20 20 VRate 00023140 3A 20 42 59 54 45 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : BYTE;♪◙○○○ 00023160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 4D 6F 64 65 20 20 20 3A 20 42 59 54 45 29 3B 0D 0A VMode : BYTE);♪◙ 00023180 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6E 20 62 65 20 75 ♪◙Remarks:○This routine can be u 000231A0 73 65 64 20 74 6F 20 72 61 6D 70 20 66 72 6F 6D 20 61 6E 20 75 6E 6B 6E 6F 77 6E 20 76 6F 6C 75 sed to ramp from an unknown volu 000231C0 6D 65 20 74 6F 20 61 20 6E 65 77 20 6C 69 6E 65 61 72 20 76 6F 6C 75 6D 65 2E 20 20 49 74 20 69 me to a new linear volume. It i 000231E0 73 20 75 73 65 66 75 6C 20 69 66 20 79 6F 75 20 61 72 65 20 64 6F 69 6E 67 20 76 6F 6C 75 6D 65 s useful if you are doing volume 00023200 20 65 6E 76 65 6C 6F 70 65 73 20 61 6E 64 20 6E 65 65 64 20 74 6F 20 72 65 73 74 61 72 74 20 74 envelopes and need to restart t 00023220 68 65 20 61 74 74 61 63 6B 2F 64 65 63 61 79 20 73 65 71 75 65 6E 63 65 20 61 74 20 61 6E 79 20 he attack/decay sequence at any 00023240 74 69 6D 65 2E 20 20 49 74 20 63 61 6E 20 61 6C 73 6F 20 70 72 6F 64 75 63 65 20 61 20 73 6D 6F time. It can also produce a smo 00023260 6F 74 68 65 72 20 72 61 6D 70 20 66 72 6F 6D 20 6F 6E 65 20 76 6F 6C 75 6D 65 20 74 6F 20 61 6E other ramp from one volume to an 00023280 6F 74 68 65 72 2C 20 73 69 6E 63 65 20 61 72 62 69 74 72 61 72 69 6C 79 20 73 65 74 74 69 6E 67 other, since arbitrarily setting 000232A0 20 61 20 76 6F 6C 75 6D 65 20 74 68 61 74 20 69 73 20 66 61 72 20 61 77 61 79 20 66 72 6F 6D 20 a volume that is far away from 000232C0 74 68 65 20 63 75 72 72 65 6E 74 20 76 6F 6C 75 6D 65 20 63 61 6E 20 63 61 75 73 65 20 27 70 6F the current volume can cause 'po 000232E0 70 73 27 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 53 65 74 4C 69 6E 65 61 72 ps'.♪◙♪◙See also:○UltraSetLinear 00023300 56 6F 6C 75 6D 65 2C 20 55 6C 74 72 61 52 65 61 64 4C 69 6E 65 61 72 56 6F 6C 75 6D 65 0D 0A 0D Volume, UltraReadLinearVolume♪◙♪ 00023320 0A 0D 0A 0C 43 68 61 70 74 65 72 20 35 20 2D 20 46 6F 63 61 6C 20 50 6F 69 6E 74 20 33 44 20 53 ◙♪◙♀Chapter 5 - Focal Point 3D S 00023340 6F 75 6E 64 0D 0A 0D 0A 35 2E 30 20 49 6E 74 72 6F 64 75 63 74 69 6F 6E 0D 0A 0D 0A 54 68 72 65 ound♪◙♪◙5.0 Introduction♪◙♪◙Thre 00023360 65 20 64 69 6D 65 6E 73 69 6F 6E 61 6C 20 61 75 64 69 6F 20 6F 6E 20 74 68 65 20 55 6C 74 72 61 e dimensional audio on the Ultra 00023380 53 6F 75 6E 64 20 69 73 20 61 63 68 69 65 76 65 64 20 62 79 20 61 20 74 65 63 68 6E 69 71 75 65 Sound is achieved by a technique 000233A0 20 63 61 6C 6C 65 64 20 62 69 6E 61 75 72 61 6C 20 72 65 70 72 65 73 65 6E 74 61 74 69 6F 6E 2E called binaural representation. 000233C0 20 20 42 61 73 69 63 61 6C 6C 79 2C 20 74 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 20 61 20 6D Basically, this means that a m 000233E0 6F 6E 6F 20 73 6F 75 6E 64 20 69 73 20 27 73 68 61 70 65 64 27 20 69 6E 20 73 75 63 68 20 61 20 ono sound is 'shaped' in such a 00023400 77 61 79 20 74 68 61 74 20 77 68 65 6E 20 69 74 20 69 73 20 70 72 65 73 65 6E 74 65 64 20 74 6F way that when it is presented to 00023420 20 74 68 65 20 72 69 67 68 74 20 61 6E 64 20 6C 65 66 74 20 65 61 72 73 20 70 72 6F 70 65 72 6C the right and left ears properl 00023440 79 2C 20 74 68 65 20 73 6F 75 6E 64 20 73 65 65 6D 73 20 74 6F 20 63 6F 6D 65 20 66 72 6F 6D 20 y, the sound seems to come from 00023460 74 68 65 20 70 72 6F 70 65 72 20 70 6C 61 63 65 20 69 6E 20 73 70 61 63 65 2E 20 20 54 68 69 73 the proper place in space. This 00023480 20 74 65 63 68 6E 69 71 75 65 20 69 73 20 61 6C 73 6F 20 63 61 6C 6C 65 64 20 63 6F 6E 76 6F 6C technique is also called convol 000234A0 75 74 69 6F 6E 2E 20 20 54 68 69 73 20 69 73 20 64 6F 6E 65 20 74 68 72 75 20 61 6C 67 6F 72 69 ution. This is done thru algori 000234C0 74 68 6D 73 20 64 65 76 65 6C 6F 70 65 64 20 62 79 20 46 6F 63 61 6C 20 50 6F 69 6E 74 28 74 6D thms developed by Focal Point(tm 000234E0 29 20 33 44 20 41 75 64 69 6F 2E 20 20 46 6F 63 61 6C 20 50 6F 69 6E 74 20 68 61 73 20 70 72 6F ) 3D Audio. Focal Point has pro 00023500 76 69 64 65 64 20 61 20 75 74 69 6C 69 74 79 20 28 63 61 6C 6C 65 64 20 46 50 33 44 2E 45 58 45 vided a utility (called FP3D.EXE 00023520 29 20 74 6F 20 63 6F 6E 76 65 72 74 20 61 20 6D 6F 6E 6F 20 73 6F 75 6E 64 20 66 69 6C 65 20 74 ) to convert a mono sound file t 00023540 6F 20 61 20 33 44 20 66 69 6C 65 20 63 61 70 61 62 6C 65 20 6F 66 20 62 65 69 6E 67 20 70 6C 61 o a 3D file capable of being pla 00023560 79 65 64 20 6F 6E 20 61 6E 20 55 6C 74 72 61 53 6F 75 6E 64 2E 20 20 54 68 65 20 62 61 73 69 63 yed on an UltraSound. The basic 00023580 20 63 6F 6E 63 65 70 74 20 69 73 20 74 68 61 74 20 74 68 65 20 6D 6F 6E 6F 20 73 6F 75 6E 64 20 concept is that the mono sound 000235A0 69 73 20 70 72 6F 63 65 73 73 65 64 20 69 6E 20 73 75 63 68 20 61 20 77 61 79 20 74 68 61 74 20 is processed in such a way that 000235C0 74 68 65 20 66 69 6C 65 20 74 68 61 74 20 69 73 20 6F 75 74 70 75 74 20 63 6F 6E 74 61 69 6E 73 the file that is output contains 000235E0 20 75 70 20 74 6F 20 36 20 74 72 61 63 6B 73 20 6F 66 20 73 6F 75 6E 64 2E 20 20 57 68 65 6E 20 up to 6 tracks of sound. When 00023600 74 68 65 20 73 6F 75 6E 64 20 69 73 20 70 6C 61 79 65 64 20 62 61 63 6B 2C 20 74 68 65 20 76 6F the sound is played back, the vo 00023620 6C 75 6D 65 73 20 61 6E 64 20 62 61 6C 61 6E 63 65 73 20 61 72 65 20 61 64 6A 75 73 74 65 64 20 lumes and balances are adjusted 00023640 74 6F 20 6D 61 6B 65 20 74 68 65 20 73 6F 75 6E 64 20 61 70 70 65 61 72 20 74 6F 20 6F 72 69 67 to make the sound appear to orig 00023660 69 6E 61 74 65 20 66 72 6F 6D 20 61 6E 79 77 68 65 72 65 20 69 6E 20 74 68 65 20 33 44 20 73 70 inate from anywhere in the 3D sp 00023680 61 63 65 2E 20 20 49 74 20 69 73 20 70 6F 73 73 69 62 6C 65 20 74 6F 20 63 72 65 61 74 65 20 66 ace. It is possible to create f 000236A0 69 6C 65 73 20 74 68 61 74 20 6F 6E 6C 79 20 68 61 76 65 20 34 20 74 72 61 63 6B 73 20 61 6E 64 iles that only have 4 tracks and 000236C0 20 63 61 6E 20 74 68 65 72 65 66 6F 72 65 20 6F 6E 6C 79 20 62 65 20 70 6F 73 69 74 69 6F 6E 65 can therefore only be positione 000236E0 64 20 69 6E 20 32 20 64 69 6D 65 6E 73 69 6F 6E 73 2E 20 20 54 68 69 73 20 6D 61 79 20 62 65 20 d in 2 dimensions. This may be 00023700 61 64 65 71 75 61 74 65 20 66 6F 72 20 6D 61 6E 79 20 61 70 70 6C 69 63 61 74 69 6F 6E 73 20 61 adequate for many applications a 00023720 6E 64 20 69 74 20 77 69 6C 6C 20 6D 61 6B 65 20 74 68 65 20 72 65 73 75 6C 74 61 6E 74 20 66 69 nd it will make the resultant fi 00023740 6C 65 20 73 6D 61 6C 6C 65 72 2E 0D 0A 0D 0A 54 68 65 72 65 20 61 72 65 20 32 20 74 79 70 65 73 le smaller.♪◙♪◙There are 2 types 00023760 20 6F 66 20 33 44 20 73 6F 75 6E 64 20 74 68 61 74 20 61 6E 20 61 70 70 6C 69 63 61 74 69 6F 6E of 3D sound that an application 00023780 20 6D 69 67 68 74 20 77 61 6E 74 20 74 6F 20 75 73 65 2E 20 20 54 68 65 20 66 69 72 73 74 20 69 might want to use. The first i 000237A0 73 20 61 20 73 6F 75 6E 64 20 65 66 66 65 63 74 2E 20 20 54 68 69 73 20 69 73 20 61 20 73 6F 75 s a sound effect. This is a sou 000237C0 6E 64 20 74 68 61 74 20 63 61 6E 20 62 65 20 63 6F 6D 70 6C 65 74 65 6C 79 20 6C 6F 61 64 65 64 nd that can be completely loaded 000237E0 20 69 6E 74 6F 20 44 52 41 4D 20 61 6E 64 20 70 6C 61 79 65 64 20 61 6E 64 20 70 6F 73 69 74 69 into DRAM and played and positi 00023800 6F 6E 65 64 20 61 74 20 61 6E 79 20 74 69 6D 65 2E 20 20 49 74 20 69 73 20 75 73 65 64 20 66 6F oned at any time. It is used fo 00023820 72 20 74 68 69 6E 67 73 20 6C 69 6B 65 20 67 75 6E 73 68 6F 74 73 2C 20 63 61 72 73 20 65 74 63 r things like gunshots, cars etc 00023840 2E 20 20 54 68 65 73 65 20 63 61 6E 20 62 65 20 6C 6F 6F 70 65 64 20 6F 72 20 6E 6F 6E 2D 6C 6F . These can be looped or non-lo 00023860 6F 70 65 64 2E 20 20 54 68 65 20 6F 74 68 65 72 20 74 79 70 65 20 6F 66 20 73 6F 75 6E 64 20 69 oped. The other type of sound i 00023880 73 20 61 20 73 6F 75 6E 64 20 74 72 61 63 6B 2E 20 20 54 68 69 73 20 69 73 20 66 6F 72 20 61 20 s a sound track. This is for a 000238A0 76 65 72 79 20 6C 6F 6E 67 20 73 6F 75 6E 64 20 74 68 61 74 20 63 61 6E 6E 6F 74 20 62 65 20 6C very long sound that cannot be l 000238C0 6F 61 64 65 64 20 69 6E 20 44 52 41 4D 20 61 6C 6C 20 61 74 20 6F 6E 63 65 2E 20 20 54 68 65 20 oaded in DRAM all at once. The 000238E0 69 6D 70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 6F 66 20 65 61 63 68 20 6F 66 20 74 68 65 73 65 20 implementation of each of these 00023900 6D 65 74 68 6F 64 73 20 69 73 20 76 65 72 79 20 64 69 66 66 65 72 65 6E 74 2E 20 20 41 20 73 6F methods is very different. A so 00023920 75 6E 64 20 65 66 66 65 63 74 20 69 73 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 75 73 69 6E 67 20 und effect is implemented using 00023940 61 20 62 6C 6F 63 6B 65 64 20 64 61 74 61 20 66 6F 72 6D 61 74 2E 20 20 54 68 69 73 20 6D 65 61 a blocked data format. This mea 00023960 6E 73 20 74 68 61 74 20 65 61 63 68 20 74 72 61 63 6B 27 73 20 64 61 74 61 20 69 73 20 69 6E 20 ns that each track's data is in 00023980 61 20 62 6C 6F 63 6B 20 6F 66 20 69 74 73 20 6F 77 6E 2E 20 20 41 20 73 6F 75 6E 64 20 74 72 61 a block of its own. A sound tra 000239A0 63 6B 20 75 73 65 73 20 69 6E 74 65 72 6C 65 61 76 65 64 20 64 61 74 61 2E 20 20 54 68 69 73 20 ck uses interleaved data. This 000239C0 6D 65 61 6E 73 20 74 68 61 74 20 61 6C 6C 20 74 68 65 20 74 72 61 63 6B 27 73 20 64 61 74 61 20 means that all the track's data 000239E0 69 73 20 69 6E 74 65 72 6C 65 61 76 65 64 20 74 6F 67 65 74 68 65 72 2E 20 20 46 6F 72 20 65 78 is interleaved together. For ex 00023A00 61 6D 70 6C 65 2C 20 61 20 62 6C 6F 63 6B 65 64 20 66 69 6C 65 20 77 6F 75 6C 64 20 6C 6F 6F 6B ample, a blocked file would look 00023A20 20 6C 69 6B 65 20 74 68 69 73 3A 0D 0A 0D 0A 48 45 41 44 45 52 20 46 46 46 46 46 52 52 52 52 52 like this:♪◙♪◙HEADER FFFFFRRRRR 00023A40 42 42 42 42 42 4C 4C 4C 4C 4C 55 55 55 55 55 44 44 44 44 44 2E 2E 2E 2E 0D 0A 0D 0A 77 68 65 72 BBBBBLLLLLUUUUUDDDDD....♪◙♪◙wher 00023A60 65 61 73 20 61 6E 20 69 6E 74 65 72 6C 65 61 76 65 64 20 66 69 6C 65 20 77 6F 75 6C 64 20 6C 6F eas an interleaved file would lo 00023A80 6F 6B 20 6C 69 6B 65 20 74 68 69 73 3A 0D 0A 0D 0A 48 45 41 44 45 52 20 46 52 42 4C 55 44 46 52 ok like this:♪◙♪◙HEADER FRBLUDFR 00023AA0 42 4C 55 44 46 52 42 4C 55 44 46 52 42 4C 55 44 46 52 42 4C 55 44 2E 2E 2E 0D 0A 0D 0A 77 68 65 BLUDFRBLUDFRBLUDFRBLUD...♪◙♪◙whe 00023AC0 72 65 0D 0A 0D 0A 46 20 3D 20 46 72 6F 6E 74 20 54 72 61 63 6B 20 20 20 20 20 4C 20 3D 20 4C 65 re♪◙♪◙F = Front Track L = Le 00023AE0 66 74 20 54 72 61 63 6B 0D 0A 52 20 3D 20 52 69 67 68 74 20 54 72 61 63 6B 20 20 20 55 20 3D 20 ft Track♪◙R = Right Track U = 00023B00 55 70 20 54 72 61 63 6B 0D 0A 42 20 3D 20 42 65 68 69 6E 64 20 54 72 61 63 6B 20 20 20 44 20 3D Up Track♪◙B = Behind Track D = 00023B20 20 44 6F 77 6E 20 54 72 61 63 6B 0D 0A 0D 0A 42 6F 74 68 20 6F 66 20 74 68 65 73 65 20 6D 65 74 Down Track♪◙♪◙Both of these met 00023B40 68 6F 64 73 20 68 61 76 65 20 74 68 65 69 72 20 69 6E 64 69 76 69 64 75 61 6C 20 61 64 76 61 6E hods have their individual advan 00023B60 74 61 67 65 73 20 61 6E 64 20 64 69 73 61 64 76 61 6E 74 61 67 65 73 2E 20 20 46 69 72 73 74 2C tages and disadvantages. First, 00023B80 20 74 68 65 20 69 6E 74 65 72 6C 65 61 76 65 64 20 6D 65 74 68 6F 64 20 6D 61 6B 65 73 20 69 74 the interleaved method makes it 00023BA0 20 76 65 72 79 20 65 61 73 79 20 74 6F 20 72 65 61 64 20 69 6E 20 74 68 65 20 64 61 74 61 20 69 very easy to read in the data i 00023BC0 6E 20 61 20 63 6F 6E 74 69 6E 75 6F 75 73 20 73 74 72 65 61 6D 20 73 69 6E 63 65 20 69 74 20 77 n a continuous stream since it w 00023BE0 69 6C 6C 20 6C 6F 6F 6B 20 74 68 65 20 73 61 6D 65 20 61 6C 6C 20 74 68 65 20 77 61 79 20 74 68 ill look the same all the way th 00023C00 72 6F 75 67 68 20 74 68 65 20 66 69 6C 65 2E 20 20 49 74 20 69 73 20 61 6C 73 6F 20 66 61 73 74 rough the file. It is also fast 00023C20 65 72 20 74 6F 20 72 65 61 64 20 36 30 4B 20 6F 66 20 64 61 74 61 20 6F 6E 63 65 20 72 61 74 68 er to read 60K of data once rath 00023C40 65 72 20 74 68 61 6E 20 36 20 31 30 4B 20 72 65 61 64 73 2E 20 20 54 68 69 73 20 6D 61 6B 65 73 er than 6 10K reads. This makes 00023C60 20 69 74 20 76 65 72 79 20 75 73 65 66 75 6C 20 66 6F 72 20 61 20 73 6F 75 6E 64 20 74 72 61 63 it very useful for a sound trac 00023C80 6B 2E 20 20 48 6F 77 65 76 65 72 2C 20 6F 6E 65 20 64 72 61 77 62 61 63 6B 20 69 73 20 74 68 61 k. However, one drawback is tha 00023CA0 74 20 69 74 20 68 61 73 20 61 20 76 65 72 79 20 6C 69 6D 69 74 65 64 20 6E 75 6D 62 65 72 20 6F t it has a very limited number o 00023CC0 66 20 66 72 65 71 75 65 6E 63 69 65 73 20 74 68 61 74 20 69 74 20 77 69 6C 6C 20 72 75 6E 20 61 f frequencies that it will run a 00023CE0 74 2E 20 20 54 68 65 20 72 65 61 73 6F 6E 20 66 6F 72 20 74 68 69 73 20 69 73 20 72 61 74 68 65 t. The reason for this is rathe 00023D00 72 20 64 69 66 66 69 63 75 6C 74 20 74 6F 20 65 78 70 6C 61 69 6E 2C 20 62 75 74 20 69 74 20 70 r difficult to explain, but it p 00023D20 65 72 74 61 69 6E 73 20 74 6F 20 67 65 74 74 69 6E 67 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E ertains to getting the UltraSoun 00023D40 64 27 73 20 76 6F 69 63 65 73 20 74 6F 20 70 6C 61 79 20 65 76 65 72 79 20 34 74 68 20 28 6F 72 d's voices to play every 4th (or 00023D60 20 35 74 68 2C 20 65 74 63 29 20 73 61 6D 70 6C 65 2E 20 20 54 68 65 20 55 6C 74 72 61 53 6F 75 5th, etc) sample. The UltraSou 00023D80 6E 64 20 6E 6F 72 6D 61 6C 6C 79 20 77 6F 75 6C 64 20 69 6E 74 65 72 70 6F 6C 61 74 65 20 62 65 nd normally would interpolate be 00023DA0 74 77 65 65 6E 20 64 61 74 61 20 70 6F 69 6E 74 73 20 62 75 74 20 69 74 20 63 61 6E 27 74 20 64 tween data points but it can't d 00023DC0 6F 20 74 68 61 74 20 68 65 72 65 20 62 65 63 61 75 73 65 20 74 68 65 20 61 64 6A 61 63 65 6E 74 o that here because the adjacent 00023DE0 20 64 61 74 61 20 70 6F 69 6E 74 73 20 61 72 65 20 6E 6F 74 20 69 6E 20 74 68 65 20 73 61 6D 65 data points are not in the same 00023E00 20 74 72 61 63 6B 2E 20 20 0D 0A 0D 0A 49 66 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 72 75 6E 20 track. ♪◙♪◙If you want to run 00023E20 61 74 20 32 32 30 35 30 20 48 7A 2C 20 74 68 65 6E 20 79 6F 75 20 6E 65 65 64 20 74 6F 20 68 61 at 22050 Hz, then you need to ha 00023E40 76 65 20 6F 6E 6C 79 20 32 38 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 20 74 6F 20 61 63 63 6F ve only 28 active voices to acco 00023E60 6D 70 6C 69 73 68 20 74 68 69 73 2E 20 20 49 66 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 70 6C 61 mplish this. If you want to pla 00023E80 79 20 61 20 74 72 61 63 6B 20 61 74 20 34 34 31 30 30 20 48 7A 2C 20 79 6F 75 20 6D 75 73 74 20 y a track at 44100 Hz, you must 00023EA0 68 61 76 65 20 6F 6E 6C 79 20 31 34 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 2E 20 20 42 6C 6F have only 14 active voices. Blo 00023EC0 63 6B 65 64 20 64 61 74 61 20 64 6F 65 73 6E 27 74 20 68 61 76 65 20 74 68 69 73 20 70 72 6F 62 cked data doesn't have this prob 00023EE0 6C 65 6D 2E 20 20 53 69 6E 63 65 20 74 68 65 20 64 61 74 61 20 69 73 20 4E 4F 54 20 69 6E 74 65 lem. Since the data is NOT inte 00023F00 72 6C 65 61 76 65 64 2C 20 62 75 74 20 69 6E 20 61 20 62 6C 6F 63 6B 20 6F 66 20 63 6F 6E 74 69 rleaved, but in a block of conti 00023F20 67 75 6F 75 73 20 44 52 41 4D 2C 20 69 74 73 20 66 72 65 71 75 65 6E 63 79 20 63 61 6E 20 62 65 guous DRAM, its frequency can be 00023F40 20 61 64 6A 75 73 74 65 64 20 74 6F 20 61 6E 79 20 76 61 6C 75 65 2E 20 20 54 68 69 73 20 69 73 adjusted to any value. This is 00023F60 20 75 73 75 61 6C 6C 79 20 76 65 72 79 20 75 73 65 66 75 6C 20 66 6F 72 20 73 6F 75 6E 64 20 65 usually very useful for sound e 00023F80 66 66 65 63 74 73 20 28 72 65 76 27 69 6E 67 20 65 6E 67 69 6E 65 73 20 65 74 63 29 2E 20 20 41 ffects (rev'ing engines etc). A 00023FA0 6C 73 6F 2C 20 73 69 6E 63 65 20 74 68 65 20 64 61 74 61 20 69 73 20 62 6C 6F 63 6B 65 64 2C 20 lso, since the data is blocked, 00023FC0 65 61 63 68 20 74 72 61 63 6B 27 73 20 64 61 74 61 20 63 61 6E 20 62 65 20 61 6C 6C 6F 63 61 74 each track's data can be allocat 00023FE0 65 64 20 73 65 70 61 72 61 74 65 6C 79 20 61 6E 64 20 63 61 6E 20 74 68 65 72 65 66 6F 72 65 20 ed separately and can therefore 00024000 62 65 20 75 70 20 74 6F 20 32 35 36 4B 2E 20 20 41 6E 20 69 6E 74 65 72 6C 65 61 76 65 64 20 66 be up to 256K. An interleaved f 00024020 69 6C 65 20 6D 75 73 74 20 66 69 74 20 69 6E 74 6F 20 31 20 32 35 36 4B 20 62 61 6E 6B 20 73 69 ile must fit into 1 256K bank si 00024040 6E 63 65 20 77 65 20 63 61 6E 6E 6F 74 20 70 6C 61 79 20 31 36 62 69 74 20 64 61 74 61 20 61 63 nce we cannot play 16bit data ac 00024060 72 6F 73 73 20 61 20 32 35 36 4B 20 62 61 6E 6B 2E 20 20 53 65 65 20 74 68 65 20 74 77 6F 20 65 ross a 256K bank. See the two e 00024080 78 61 6D 70 6C 65 20 33 44 20 70 72 6F 67 72 61 6D 73 20 70 72 6F 76 69 64 65 64 20 28 50 4C 41 xample 3D programs provided (PLA 000240A0 59 33 44 20 61 6E 64 20 50 4C 41 59 33 44 49 29 20 66 6F 72 20 69 64 65 61 73 20 6F 6E 20 68 6F Y3D and PLAY3DI) for ideas on ho 000240C0 77 20 74 6F 20 69 6D 70 6C 65 6D 65 6E 74 20 33 44 20 73 6F 75 6E 64 20 69 6E 74 6F 20 79 6F 75 w to implement 3D sound into you 000240E0 20 61 70 70 6C 69 63 61 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 35 2E 31 20 20 43 72 65 61 74 69 6E applications.♪◙♪◙♪◙5.1 Creatin 00024100 67 20 33 44 20 66 69 6C 65 0D 0A 0D 0A 50 6C 65 61 73 65 20 72 65 61 64 20 74 68 65 20 72 65 61 g 3D file♪◙♪◙Please read the rea 00024120 64 6D 65 2E 33 44 20 66 69 6C 65 20 66 6F 72 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 6E 20 63 dme.3D file for information on c 00024140 72 65 61 74 69 6E 67 20 61 20 33 44 20 66 69 6C 65 2E 0D 0A 0D 0A 0D 0A 35 2E 32 20 20 33 44 20 reating a 3D file.♪◙♪◙♪◙5.2 3D 00024160 53 6F 75 6E 64 20 52 6F 75 74 69 6E 65 73 0D 0A 0D 0A 55 6C 74 72 61 41 62 73 50 6F 73 69 74 69 Sound Routines♪◙♪◙UltraAbsPositi 00024180 6F 6E 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F on♪◙____________________________ 000241A0 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 70 6C 61 63 65 20 61 20 73 6F 75 _____♪◙♪◙Purpose:○To place a sou 000241C0 6E 64 20 75 73 69 6E 67 20 69 6E 74 65 67 65 72 20 43 61 72 74 65 73 69 61 6E 20 63 6F 6F 72 64 nd using integer Cartesian coord 000241E0 69 6E 61 74 65 73 2E 0D 0A 0D 0A 43 3A 20 20 20 20 20 09 76 6F 69 64 20 55 6C 74 72 61 41 62 73 inates.♪◙♪◙C: ○void UltraAbs 00024200 50 6F 73 69 74 69 6F 6E 33 44 28 73 6F 75 6E 64 2C 78 70 6F 73 2C 79 70 6F 73 2C 7A 70 6F 73 29 Position3D(sound,xpos,ypos,zpos) 00024220 3B 0D 0A 09 09 09 53 4F 55 4E 44 5F 33 44 20 2A 73 6F 75 6E 64 3B 20 0D 0A 09 09 09 69 6E 74 20 ;♪◙○○○SOUND_3D *sound; ♪◙○○○int 00024240 78 70 6F 73 3B 20 0D 0A 09 09 09 69 6E 74 20 79 70 6F 73 3B 20 0D 0A 09 09 09 69 6E 74 20 7A 70 xpos; ♪◙○○○int ypos; ♪◙○○○int zp 00024260 6F 73 3B 20 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 41 os; ♪◙♪◙PASCAL:○PROCEDURE UltraA 00024280 62 73 50 6F 73 69 74 69 6F 6E 33 44 28 56 41 52 20 53 6F 75 6E 64 20 3A 20 53 4F 55 4E 44 5F 33 bsPosition3D(VAR Sound : SOUND_3 000242A0 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 D;♪◙○○○ 000242C0 20 20 20 20 20 20 20 20 58 50 6F 73 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 XPos : INTEGER;♪◙○○○ 000242E0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 50 YP 00024300 6F 73 20 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 os : INTEGER;♪◙○○○ 00024320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5A 50 6F 73 20 20 3A 20 49 4E 54 45 ZPos : INTE 00024340 47 45 52 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 GER);♪◙♪◙Remarks:○This routine w 00024360 69 6C 6C 20 70 6F 73 69 74 69 6F 6E 20 61 20 73 6F 75 6E 64 20 75 73 69 6E 67 20 73 74 61 6E 64 ill position a sound using stand 00024380 61 72 64 20 63 61 72 74 65 73 69 61 6E 20 63 6F 6F 72 64 69 6E 61 74 65 73 2E 20 54 68 65 20 58 ard cartesian coordinates. The X 000243A0 20 70 6F 73 69 74 69 6F 6E 20 72 61 6E 67 65 20 69 73 20 66 72 6F 6D 20 2D 35 31 31 20 28 6C 65 position range is from -511 (le 000243C0 66 74 29 20 74 6F 20 2B 35 31 31 20 28 72 69 67 68 74 29 2E 20 54 68 65 20 59 20 70 6F 73 69 74 ft) to +511 (right). The Y posit 000243E0 69 6F 6E 20 69 73 20 66 72 6F 6D 20 2D 35 31 31 20 28 62 65 6C 6F 77 29 20 74 6F 20 2B 35 31 31 ion is from -511 (below) to +511 00024400 20 28 61 62 6F 76 65 29 2E 20 54 68 65 20 5A 20 70 6F 73 69 74 69 6F 6E 20 69 73 20 66 72 6F 6D (above). The Z position is from 00024420 20 2D 35 31 31 20 28 62 65 68 69 6E 64 29 20 74 6F 20 2B 35 31 31 20 28 61 68 65 61 64 29 2E 20 -511 (behind) to +511 (ahead). 00024440 54 68 65 20 58 20 61 6E 64 20 5A 20 70 6F 73 69 74 69 6F 6E 73 20 64 65 74 65 72 6D 69 6E 65 20 The X and Z positions determine 00024460 74 68 65 20 61 7A 69 6D 75 74 68 20 70 6F 73 69 74 69 6F 6E 20 61 6E 64 20 59 20 64 65 74 65 72 the azimuth position and Y deter 00024480 6D 69 6E 65 73 20 74 68 65 20 65 6C 65 76 61 74 69 6F 6E 2E 20 54 68 65 20 64 69 73 74 61 6E 63 mines the elevation. The distanc 000244A0 65 20 61 77 61 79 20 66 72 6F 6D 20 74 68 65 20 6C 69 73 74 65 6E 65 72 20 69 73 20 64 65 74 65 e away from the listener is dete 000244C0 72 6D 69 6E 65 64 20 75 73 69 6E 67 20 74 72 69 67 6F 6E 6F 6D 65 74 72 79 2E 20 4F 6E 63 65 20 rmined using trigonometry. Once 000244E0 74 68 65 73 65 20 61 72 65 20 64 65 74 65 72 6D 69 6E 65 64 2C 20 55 6C 74 72 61 41 6E 67 50 6F these are determined, UltraAngPo 00024500 73 69 74 69 6F 6E 33 44 20 69 73 20 63 61 6C 6C 65 64 2E 20 0D 0A 0D 0A 09 09 09 49 66 20 74 68 sition3D is called. ♪◙♪◙○○○If th 00024520 65 20 64 69 73 74 61 6E 63 65 20 69 73 20 63 61 6C 63 75 6C 61 74 65 64 20 74 6F 20 62 65 20 67 e distance is calculated to be g 00024540 72 65 61 74 65 72 20 74 68 61 6E 20 35 31 31 2C 20 69 74 20 69 73 20 63 6C 69 70 70 65 64 20 74 reater than 511, it is clipped t 00024560 6F 20 35 31 31 2E 20 41 6C 73 6F 2C 20 69 66 20 74 68 65 20 64 69 73 74 61 6E 63 65 20 69 73 20 o 511. Also, if the distance is 00024580 63 61 6C 63 75 6C 61 74 65 64 20 74 6F 20 62 65 20 30 2C 20 6E 6F 20 70 6F 73 69 74 69 6F 6E 69 calculated to be 0, no positioni 000245A0 6E 67 20 69 73 20 64 6F 6E 65 20 73 69 6E 63 65 20 74 68 65 20 6F 72 69 67 69 6E 20 69 73 20 75 ng is done since the origin is u 000245C0 6E 64 65 66 69 6E 65 64 2E 20 28 69 2E 65 2E 20 41 20 73 6F 75 6E 64 20 63 61 6E 6E 6F 74 20 62 ndefined. (i.e. A sound cannot b 000245E0 65 20 67 65 6E 65 72 61 74 65 64 20 49 4E 53 49 44 45 20 79 6F 75 72 20 68 65 61 64 20 28 6F 72 e generated INSIDE your head (or 00024600 69 67 69 6E 29 29 2E 0D 0A 0D 0A 09 09 09 43 20 75 73 65 72 73 20 73 68 6F 75 6C 64 20 62 65 20 igin)).♪◙♪◙○○○C users should be 00024620 63 61 72 65 66 75 6C 20 77 68 65 6E 20 75 73 69 6E 67 20 74 68 69 73 20 72 6F 75 74 69 6E 65 2C careful when using this routine, 00024640 20 73 69 6E 63 65 20 74 68 65 20 74 72 69 67 20 66 75 6E 63 74 69 6F 6E 73 20 77 69 6C 6C 20 62 since the trig functions will b 00024660 65 20 6E 65 65 64 65 64 20 66 72 6F 6D 20 74 68 65 20 43 20 6C 69 62 72 61 72 69 65 73 2E 20 0D e needed from the C libraries. ♪ 00024680 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 41 6E 67 50 6F 73 69 74 69 6F 6E 33 44 0D ◙♪◙See also:○UltraAngPosition3D♪ 000246A0 0A 0C 55 6C 74 72 61 41 6E 67 50 6F 73 69 74 69 6F 6E 33 44 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ◙♀UltraAngPosition3D♪◙__________ 000246C0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F _______________________♪◙♪◙Purpo 000246E0 73 65 3A 09 54 6F 20 70 6F 73 69 74 69 6F 6E 20 61 20 73 6F 75 6E 64 20 75 73 69 6E 67 20 69 6E se:○To position a sound using in 00024700 74 65 67 65 72 20 70 6F 6C 61 72 20 63 6F 6F 72 64 69 6E 61 74 65 73 2E 0D 0A 0D 0A 43 3A 20 20 teger polar coordinates.♪◙♪◙C: 00024720 20 20 20 09 76 6F 69 64 20 55 6C 74 72 61 41 6E 67 50 6F 73 69 74 69 6F 6E 33 44 28 73 6F 75 6E ○void UltraAngPosition3D(soun 00024740 64 2C 61 7A 69 6D 75 74 68 2C 65 6C 65 76 61 74 69 6F 6E 2C 76 6F 6C 75 6D 65 29 3B 0D 0A 09 09 d,azimuth,elevation,volume);♪◙○○ 00024760 09 53 4F 55 4E 44 5F 33 44 20 2A 73 6F 75 6E 64 3B 0D 0A 09 09 09 69 6E 74 20 61 7A 69 6D 75 74 ○SOUND_3D *sound;♪◙○○○int azimut 00024780 68 3B 20 0D 0A 09 09 09 69 6E 74 20 65 6C 65 76 61 74 69 6F 6E 3B 20 0D 0A 09 09 09 69 6E 74 20 h; ♪◙○○○int elevation; ♪◙○○○int 000247A0 76 6F 6C 75 6D 65 3B 20 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C volume; ♪◙♪◙PASCAL:○PROCEDURE Ul 000247C0 74 72 61 41 6E 67 50 6F 73 69 74 69 6F 6E 33 44 28 56 41 52 20 53 6F 75 6E 64 20 20 20 20 20 3A traAngPosition3D(VAR Sound : 000247E0 20 53 4F 55 4E 44 5F 33 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 SOUND_3D;♪◙○○○ 00024800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 5A 49 4D 75 74 68 20 20 20 3A 20 49 4E 54 45 AZIMuth : INTE 00024820 47 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 GER;♪◙○○○ 00024840 20 20 20 20 20 20 20 20 20 20 45 6C 65 76 61 74 69 6F 6E 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A Elevation : INTEGER;♪◙ 00024860 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ○○○ 00024880 20 20 20 20 56 6F 6C 5F 44 69 73 74 20 20 3A 20 49 4E 54 45 47 45 52 29 3B 0D 0A 0D 0A 52 65 6D Vol_Dist : INTEGER);♪◙♪◙Rem 000248A0 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 70 6F 73 69 74 69 6F 6E arks:○This routine will position 000248C0 20 61 20 33 44 20 73 6F 75 6E 64 20 75 73 69 6E 67 20 70 6F 6C 61 72 20 63 6F 6F 72 64 69 6E 61 a 3D sound using polar coordina 000248E0 74 65 73 2E 20 54 68 65 20 61 7A 69 6D 75 74 68 20 61 6E 64 20 65 6C 65 76 61 74 69 6F 6E 20 61 tes. The azimuth and elevation a 00024900 72 65 20 73 70 65 63 69 66 69 65 64 20 69 6E 20 64 65 67 72 65 65 73 2E 20 41 7A 69 6D 75 74 68 re specified in degrees. Azimuth 00024920 20 69 73 20 74 68 65 20 61 6E 67 6C 65 20 69 6E 20 74 68 65 20 68 6F 72 69 7A 6F 6E 74 61 6C 20 is the angle in the horizontal 00024940 70 6C 61 6E 65 2E 20 53 74 72 61 69 67 68 74 20 61 68 65 61 64 20 69 73 20 30 20 64 65 67 72 65 plane. Straight ahead is 0 degre 00024960 65 73 2C 20 39 30 20 64 65 67 72 65 65 73 20 69 73 20 74 6F 20 74 68 65 20 72 69 67 68 74 2C 20 es, 90 degrees is to the right, 00024980 2D 39 30 20 64 65 67 72 65 65 73 20 69 73 20 74 6F 20 74 68 65 20 6C 65 66 74 20 61 6E 64 20 31 -90 degrees is to the left and 1 000249A0 38 30 20 28 6F 72 20 2D 31 38 30 29 20 69 73 20 64 69 72 65 63 74 6C 79 20 62 65 68 69 6E 64 20 80 (or -180) is directly behind 000249C0 79 6F 75 2E 20 49 66 20 61 6E 20 61 6E 67 6C 65 20 6C 61 72 67 65 72 20 74 68 61 6E 20 31 38 30 you. If an angle larger than 180 000249E0 20 6F 72 20 73 6D 61 6C 6C 65 72 20 74 68 61 74 20 2D 31 38 30 20 69 73 20 73 70 65 63 69 66 69 or smaller that -180 is specifi 00024A00 65 64 2C 20 69 74 20 69 73 20 63 6F 6E 76 65 72 74 65 64 20 74 6F 20 69 74 73 20 2D 31 38 30 20 ed, it is converted to its -180 00024A20 74 6F 20 31 38 30 20 65 71 75 69 76 61 6C 65 6E 74 2E 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 to 180 equivalent. For example, 00024A40 32 37 30 20 64 65 67 72 65 65 73 20 69 73 20 65 71 75 69 76 61 6C 65 6E 74 20 74 6F 20 2D 39 30 270 degrees is equivalent to -90 00024A60 20 64 65 67 72 65 65 73 2E 20 45 6C 65 76 61 74 69 6F 6E 20 69 73 20 74 68 65 20 61 6E 67 6C 65 degrees. Elevation is the angle 00024A80 20 6F 66 20 65 6C 65 76 61 74 69 6F 6E 20 61 62 6F 76 65 20 6F 72 20 62 65 6C 6F 77 20 74 68 65 of elevation above or below the 00024AA0 20 68 6F 72 69 7A 6F 6E 74 61 6C 20 70 6C 61 6E 65 2E 20 30 20 64 65 67 72 65 65 73 20 69 73 20 horizontal plane. 0 degrees is 00024AC0 6E 6F 20 65 6C 65 76 61 74 69 6F 6E 2C 20 39 30 20 64 65 67 72 65 65 73 20 69 73 20 73 74 72 61 no elevation, 90 degrees is stra 00024AE0 69 67 68 74 20 75 70 2C 20 61 6E 64 20 2D 39 30 20 69 73 20 73 74 72 61 69 67 68 74 20 64 6F 77 ight up, and -90 is straight dow 00024B00 6E 2E 20 41 6E 79 20 61 6E 67 6C 65 20 6C 61 72 67 65 72 20 74 68 61 6E 20 39 30 20 6F 72 20 73 n. Any angle larger than 90 or s 00024B20 6D 61 6C 6C 65 72 20 74 68 61 74 20 2D 39 30 20 69 73 20 69 67 6E 6F 72 65 64 2E 0D 0A 0D 0A 09 maller that -90 is ignored.♪◙♪◙○ 00024B40 09 09 49 66 20 6D 6F 72 65 20 70 72 65 63 69 73 69 6F 6E 20 69 73 20 6E 65 65 64 65 64 2C 20 75 ○○If more precision is needed, u 00024B60 73 65 20 55 6C 74 72 61 41 6E 67 46 6C 74 50 6F 73 69 74 69 6F 6E 33 44 20 73 6F 20 74 68 61 74 se UltraAngFltPosition3D so that 00024B80 20 66 6C 6F 61 74 69 6E 67 20 70 6F 69 6E 74 20 61 72 69 74 68 6D 65 74 69 63 20 69 73 20 75 73 floating point arithmetic is us 00024BA0 65 64 2E 20 20 53 69 6E 63 65 20 74 68 61 74 20 72 6F 75 74 69 6E 65 20 75 73 65 73 20 66 6C 6F ed. Since that routine uses flo 00024BC0 61 74 69 6E 67 20 70 6F 69 6E 74 20 66 75 6E 63 74 69 6F 6E 73 20 28 73 6C 6F 77 29 2C 20 79 6F ating point functions (slow), yo 00024BE0 75 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 6D 61 79 20 6E 6F 74 20 77 61 6E 74 20 74 6F 20 75 ur application may not want to u 00024C00 73 65 20 69 74 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 41 62 73 50 6F 73 69 se it.♪◙♪◙See also:○UltraAbsPosi 00024C20 74 69 6F 6E 33 44 0D 0A 0D 0A 0C 55 6C 74 72 61 41 6E 67 46 6C 74 50 6F 73 69 74 69 6F 6E 33 44 tion3D♪◙♪◙♀UltraAngFltPosition3D 00024C40 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ♪◙______________________________ 00024C60 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 70 6F 73 69 74 69 6F 6E 20 61 20 73 6F ___♪◙♪◙Purpose:○To position a so 00024C80 75 6E 64 20 75 73 69 6E 67 20 66 6C 6F 61 74 69 6E 67 20 70 6F 69 6E 74 20 70 6F 6C 61 72 20 63 und using floating point polar c 00024CA0 6F 6F 72 64 69 6E 61 74 65 73 2E 0D 0A 0D 0A 43 3A 20 20 20 20 20 09 76 6F 69 64 20 55 6C 74 72 oordinates.♪◙♪◙C: ○void Ultr 00024CC0 61 41 6E 67 46 6C 74 50 6F 73 69 74 69 6F 6E 33 44 28 73 6F 75 6E 64 2C 61 7A 69 6D 75 74 68 2C aAngFltPosition3D(sound,azimuth, 00024CE0 65 6C 65 76 61 74 69 6F 6E 2C 76 6F 6C 75 6D 65 29 3B 0D 0A 09 09 09 53 4F 55 4E 44 5F 33 44 20 elevation,volume);♪◙○○○SOUND_3D 00024D00 2A 73 6F 75 6E 64 3B 0D 0A 09 09 09 64 6F 75 62 6C 65 20 61 7A 69 6D 75 74 68 3B 0D 0A 09 09 09 *sound;♪◙○○○double azimuth;♪◙○○○ 00024D20 64 6F 75 62 6C 65 20 65 6C 65 76 61 74 69 6F 6E 3B 0D 0A 09 09 09 69 6E 74 20 76 6F 6C 75 6D 65 double elevation;♪◙○○○int volume 00024D40 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 41 6E 67 46 ;♪◙♪◙PASCAL:○PROCEDURE UltraAngF 00024D60 6C 74 50 6F 73 69 74 69 6F 6E 33 44 28 56 41 52 20 53 6F 75 6E 64 20 20 20 20 20 3A 20 53 4F 55 ltPosition3D(VAR Sound : SOU 00024D80 4E 44 5F 33 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ND_3D;♪◙○○○ 00024DA0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 5A 49 4D 75 74 68 20 20 20 3A 20 44 4F 55 42 4C AZIMuth : DOUBL 00024DC0 45 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 E;♪◙○○○ 00024DE0 20 20 20 20 20 20 20 20 20 20 20 45 6C 65 76 61 74 69 6F 6E 20 3A 20 44 4F 55 42 4C 45 3B 0D 0A Elevation : DOUBLE;♪◙ 00024E00 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ○○○ 00024E20 20 20 20 20 20 20 20 56 6F 6C 5F 44 69 73 74 20 20 3A 20 49 4E 54 45 47 45 52 29 3B 0D 0A 0D 0A Vol_Dist : INTEGER);♪◙♪◙ 00024E40 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 70 6F 73 69 74 Remarks:○This routine will posit 00024E60 69 6F 6E 20 61 20 33 44 20 73 6F 75 6E 64 20 75 73 69 6E 67 20 70 6F 6C 61 72 20 63 6F 6F 72 64 ion a 3D sound using polar coord 00024E80 69 6E 61 74 65 73 2E 20 54 68 65 20 61 7A 69 6D 75 74 68 20 61 6E 64 20 65 6C 65 76 61 74 69 6F inates. The azimuth and elevatio 00024EA0 6E 20 61 72 65 20 73 70 65 63 69 66 69 65 64 20 61 73 20 20 66 6C 6F 61 74 69 6E 67 20 70 6F 69 n are specified as floating poi 00024EC0 6E 74 20 6E 75 6D 62 65 72 73 20 69 6E 20 64 65 67 72 65 65 73 2E 20 46 6F 72 20 65 78 61 6D 70 nt numbers in degrees. For examp 00024EE0 6C 65 2C 20 34 35 20 61 6E 64 20 6F 6E 65 20 68 61 6C 66 20 64 65 67 72 65 65 73 20 77 6F 75 6C le, 45 and one half degrees woul 00024F00 64 20 62 65 20 73 70 65 63 69 66 69 65 64 20 61 73 20 34 35 2E 35 2E 20 41 7A 69 6D 75 74 68 20 d be specified as 45.5. Azimuth 00024F20 69 73 20 74 68 65 20 61 6E 67 6C 65 20 69 6E 20 74 68 65 20 68 6F 72 69 7A 6F 6E 74 61 6C 20 70 is the angle in the horizontal p 00024F40 6C 61 6E 65 2E 20 53 74 72 61 69 67 68 74 20 61 68 65 61 64 20 69 73 20 30 20 64 65 67 72 65 65 lane. Straight ahead is 0 degree 00024F60 73 2C 20 39 30 20 64 65 67 72 65 65 73 20 69 73 20 74 6F 20 74 68 65 20 72 69 67 68 74 2C 20 2D s, 90 degrees is to the right, - 00024F80 39 30 20 64 65 67 72 65 65 73 20 69 73 20 74 6F 20 74 68 65 20 6C 65 66 74 20 61 6E 64 20 31 38 90 degrees is to the left and 18 00024FA0 30 20 28 6F 72 20 2D 31 38 30 29 20 69 73 20 64 69 72 65 63 74 6C 79 20 62 65 68 69 6E 64 20 79 0 (or -180) is directly behind y 00024FC0 6F 75 2E 20 49 66 20 61 6E 20 61 6E 67 6C 65 20 6C 61 72 67 65 72 20 74 68 61 6E 20 31 38 30 20 ou. If an angle larger than 180 00024FE0 6F 72 20 73 6D 61 6C 6C 65 72 20 74 68 61 74 20 2D 31 38 30 20 69 73 20 73 70 65 63 69 66 69 65 or smaller that -180 is specifie 00025000 64 2C 20 69 74 20 69 73 20 63 6F 6E 76 65 72 74 65 64 20 74 6F 20 69 74 73 20 2D 31 38 30 20 74 d, it is converted to its -180 t 00025020 6F 20 31 38 30 20 65 71 75 69 76 61 6C 65 6E 74 2E 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 32 o 180 equivalent. For example, 2 00025040 37 30 20 64 65 67 72 65 65 73 20 69 73 20 65 71 75 69 76 61 6C 65 6E 74 20 74 6F 20 2D 39 30 20 70 degrees is equivalent to -90 00025060 64 65 67 72 65 65 73 2E 20 45 6C 65 76 61 74 69 6F 6E 20 69 73 20 74 68 65 20 61 6E 67 6C 65 20 degrees. Elevation is the angle 00025080 61 62 6F 76 65 20 6F 72 20 62 65 6C 6F 77 20 74 68 65 20 68 6F 72 69 7A 6F 6E 74 61 6C 20 70 6C above or below the horizontal pl 000250A0 61 6E 65 2E 20 30 20 64 65 67 72 65 65 73 20 69 73 20 6E 6F 20 65 6C 65 76 61 74 69 6F 6E 2C 20 ane. 0 degrees is no elevation, 000250C0 39 30 20 64 65 67 72 65 65 73 20 69 73 20 73 74 72 61 69 67 68 74 20 75 70 2C 20 61 6E 64 20 2D 90 degrees is straight up, and - 000250E0 39 30 20 69 73 20 73 74 72 61 69 67 68 74 20 64 6F 77 6E 2E 20 41 6E 79 20 61 6E 67 6C 65 20 6C 90 is straight down. Any angle l 00025100 61 72 67 65 72 20 74 68 61 6E 20 39 30 20 6F 72 20 73 6D 61 6C 6C 65 72 20 74 68 61 74 20 2D 39 arger than 90 or smaller that -9 00025120 30 20 69 73 20 69 67 6E 6F 72 65 64 2E 0D 0A 0D 0A 09 09 09 49 66 20 79 6F 75 72 20 61 70 70 6C 0 is ignored.♪◙♪◙○○○If your appl 00025140 69 63 61 74 69 6F 6E 20 64 6F 65 73 20 6E 6F 74 20 6E 65 65 64 20 74 6F 20 75 73 65 20 74 68 65 ication does not need to use the 00025160 20 66 6C 6F 61 74 69 6E 67 20 70 6F 69 6E 74 20 72 6F 75 74 69 6E 65 2C 20 69 74 20 69 73 20 61 floating point routine, it is a 00025180 64 76 69 73 61 62 6C 65 20 74 6F 20 75 73 65 20 55 6C 74 72 61 41 6E 67 50 6F 73 69 74 69 6F 6E dvisable to use UltraAngPosition 000251A0 20 62 65 63 61 75 73 65 20 69 74 20 61 76 6F 69 64 73 20 75 73 69 6E 67 20 73 6F 6D 65 20 66 6C because it avoids using some fl 000251C0 6F 61 74 69 6E 67 2D 70 6F 69 6E 74 20 66 75 6E 63 74 69 6F 6E 73 20 28 77 68 69 63 68 20 61 72 oating-point functions (which ar 000251E0 65 20 73 6C 6F 77 29 2E 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 43 6C 6F 73 65 44 75 70 33 44 0D e slow).♪◙♪◙♪◙♪◙UltraCloseDup3D♪ 00025200 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ◙_______________________________ 00025220 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 63 6C 6F 73 65 20 61 20 64 75 70 6C 69 63 __♪◙♪◙Purpose:○To close a duplic 00025240 61 74 65 64 20 33 44 20 73 6F 75 6E 64 20 65 66 66 65 63 74 2E 0D 0A 0D 0A 43 3A 20 20 20 20 20 ated 3D sound effect.♪◙♪◙C: 00025260 09 76 6F 69 64 20 55 6C 74 72 61 43 6C 6F 73 65 44 75 70 33 44 28 73 6F 75 6E 64 29 3B 0D 0A 09 ○void UltraCloseDup3D(sound);♪◙○ 00025280 09 09 53 4F 55 4E 44 5F 33 44 20 2A 73 6F 75 6E 64 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 ○○SOUND_3D *sound;♪◙♪◙PASCAL:○PR 000252A0 4F 43 45 44 55 52 45 20 55 6C 74 72 61 43 6C 6F 73 65 44 75 70 33 44 28 56 41 52 20 53 6F 75 6E OCEDURE UltraCloseDup3D(VAR Soun 000252C0 64 20 3A 20 53 4F 55 4E 44 5F 33 44 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 d : SOUND_3D);♪◙♪◙Remarks:○This 000252E0 72 6F 75 74 69 6E 65 20 6D 75 73 74 20 62 65 20 75 73 65 64 20 74 6F 20 66 72 65 65 20 75 70 20 routine must be used to free up 00025300 74 68 65 20 72 65 73 6F 75 72 63 65 73 20 61 73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 61 20 the resources associated with a 00025320 64 75 70 6C 69 63 61 74 65 64 20 33 44 20 65 66 66 65 63 74 2E 20 54 68 69 73 20 72 6F 75 74 69 duplicated 3D effect. This routi 00025340 6E 65 20 77 69 6C 6C 20 6F 6E 6C 79 20 72 65 6C 65 61 73 65 20 74 68 65 20 76 6F 69 63 65 73 20 ne will only release the voices 00025360 75 73 65 64 20 62 79 20 74 68 65 20 64 75 70 6C 69 63 61 74 65 64 20 65 66 66 65 63 74 2C 20 6E used by the duplicated effect, n 00025380 6F 74 20 74 68 65 20 44 52 41 4D 20 61 6C 6C 6F 63 61 74 65 64 20 62 79 20 74 68 65 20 6F 72 69 ot the DRAM allocated by the ori 000253A0 67 69 6E 61 6C 20 65 66 66 65 63 74 2E 20 54 68 65 20 6F 72 69 67 69 6E 61 6C 20 65 66 66 65 63 ginal effect. The original effec 000253C0 74 20 73 68 6F 75 6C 64 20 62 65 20 63 6C 6F 73 65 64 20 77 69 74 68 20 55 6C 74 72 61 55 6E 4C t should be closed with UltraUnL 000253E0 6F 61 64 33 44 45 66 66 65 63 74 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 44 oad3DEffect.♪◙♪◙See also:○UltraD 00025400 75 70 33 44 2C 20 55 6C 74 72 61 55 6E 4C 6F 61 64 33 44 45 66 66 65 63 74 2E 0D 0A 0C 55 6C 74 up3D, UltraUnLoad3DEffect.♪◙♀Ult 00025420 72 44 75 70 33 44 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F rDup3D♪◙________________________ 00025440 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 63 6F 70 79 20 61 20 _________♪◙♪◙Purpose:○To copy a 00025460 33 44 20 73 6F 75 6E 64 20 65 66 66 65 63 74 2E 0D 0A 0D 0A 43 3A 20 20 20 20 20 09 69 6E 74 20 3D sound effect.♪◙♪◙C: ○int 00025480 55 6C 74 72 61 44 75 70 33 44 28 6F 6C 64 2C 6E 65 77 29 3B 0D 0A 09 09 09 53 4F 55 4E 44 5F 33 UltraDup3D(old,new);♪◙○○○SOUND_3 000254A0 44 20 2A 6F 6C 64 3B 0D 0A 09 09 09 53 4F 55 4E 44 5F 33 44 20 2A 6E 65 77 3B 0D 0A 0D 0A 50 41 D *old;♪◙○○○SOUND_3D *new;♪◙♪◙PA 000254C0 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 20 55 6C 74 72 61 44 75 70 33 44 28 56 41 52 20 43 SCAL:○FUNCTION UltraDup3D(VAR C 000254E0 75 72 72 65 6E 74 20 3A 20 53 4F 55 4E 44 5F 33 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 urrent : SOUND_3D;♪◙○○○ 00025500 20 20 20 20 20 20 20 20 20 20 20 20 56 41 52 20 53 6F 75 6E 64 20 20 20 3A 20 53 4F 55 4E 44 5F VAR Sound : SOUND_ 00025520 33 44 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 3D) : BOOLEAN;♪◙♪◙Remarks:○This 00025540 72 6F 75 74 69 6E 65 20 69 73 20 76 65 72 79 20 75 73 65 66 75 6C 20 69 66 20 79 6F 75 20 77 61 routine is very useful if you wa 00025560 6E 74 20 74 6F 20 75 73 65 20 74 68 65 20 73 61 6D 65 20 73 6F 75 6E 64 20 65 66 66 65 63 74 20 nt to use the same sound effect 00025580 69 6E 20 6D 75 6C 74 69 70 6C 65 20 70 6C 61 63 65 73 20 61 74 20 6F 6E 63 65 2E 20 54 68 69 73 in multiple places at once. This 000255A0 20 61 6C 6C 6F 77 73 20 79 6F 75 20 74 6F 20 75 73 65 20 74 68 65 20 73 61 6D 65 20 44 52 41 4D allows you to use the same DRAM 000255C0 20 64 61 74 61 20 61 6E 64 20 6A 75 73 74 20 61 6C 6C 6F 63 61 74 65 20 73 6F 6D 65 20 6D 6F 72 data and just allocate some mor 000255E0 65 20 76 6F 69 63 65 73 20 74 6F 20 6D 6F 76 65 20 74 68 65 20 73 6F 75 6E 64 2E 20 54 68 69 73 e voices to move the sound. This 00025600 20 68 65 6C 70 73 20 74 6F 20 73 61 76 65 20 44 52 41 4D 20 73 70 61 63 65 2E 20 4D 61 6B 65 20 helps to save DRAM space. Make 00025620 73 75 72 65 20 74 68 61 74 20 79 6F 75 20 75 73 65 20 55 6C 74 72 61 43 6C 6F 73 65 44 75 70 33 sure that you use UltraCloseDup3 00025640 44 20 74 6F 20 66 72 65 65 20 74 68 65 20 76 6F 69 63 65 73 2C 20 4E 4F 54 20 55 6C 74 72 61 55 D to free the voices, NOT UltraU 00025660 6E 4C 6F 61 64 33 44 45 66 66 65 63 74 2E 20 55 6C 74 72 61 55 6E 4C 6F 61 64 33 44 45 66 66 65 nLoad3DEffect. UltraUnLoad3DEffe 00025680 63 74 20 77 69 6C 6C 20 72 65 6C 65 61 73 65 20 61 6C 6C 20 74 68 65 20 44 52 41 4D 20 66 6F 72 ct will release all the DRAM for 000256A0 20 74 68 65 20 73 6F 75 6E 64 2E 20 54 68 69 73 20 6E 65 77 20 65 66 66 65 63 74 20 63 61 6E 20 the sound. This new effect can 000256C0 62 65 20 70 61 73 73 65 64 20 74 6F 20 61 6E 79 20 6F 74 68 65 72 20 72 6F 75 74 69 6E 65 73 20 be passed to any other routines 000256E0 74 68 65 20 73 61 6D 65 20 77 61 79 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 65 66 66 65 63 74 the same way the original effect 00025700 20 69 73 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 20 55 4C 54 52 41 5F 4F 4B 20 20 20 is.♪◙♪◙Returns:○C: ULTRA_OK 00025720 20 20 20 20 20 4E 6F 20 45 72 72 6F 72 0D 0A 09 09 09 20 20 20 20 4E 4F 5F 46 52 45 45 5F 56 4F No Error♪◙○○○ NO_FREE_VO 00025740 49 43 45 53 20 20 4E 6F 74 20 65 6E 6F 75 67 68 20 76 6F 69 63 65 73 20 74 6F 20 6D 61 6B 65 20 ICES Not enough voices to make 00025760 6E 65 77 20 68 61 6E 64 6C 65 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 new handle♪◙♪◙○○○PASCAL: TRUE if 00025780 20 64 75 70 6C 69 63 61 74 69 6F 6E 20 73 75 63 63 65 73 73 66 75 6C 2E 0D 0A 09 09 09 20 20 20 duplication successful.♪◙○○○ 000257A0 20 20 20 20 20 49 66 20 46 41 4C 53 45 2C 20 63 68 65 63 6B 20 55 6C 74 72 61 45 72 72 6F 72 53 If FALSE, check UltraErrorS 000257C0 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 tr for the reason.♪◙♪◙See also:○ 000257E0 55 6C 74 72 61 43 6C 6F 73 65 44 75 70 33 44 0D 0A 0D 0A 0C 55 6C 74 72 61 4C 6F 61 64 33 44 45 UltraCloseDup3D♪◙♪◙♀UltraLoad3DE 00025800 66 66 65 63 74 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ffect♪◙_________________________ 00025820 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 6C 6F 61 64 20 61 20 33 ________♪◙♪◙Purpose:○To load a 3 00025840 44 20 65 66 66 65 63 74 20 66 72 6F 6D 20 74 68 65 20 64 69 73 6B 20 69 6E 74 6F 20 44 52 41 4D D effect from the disk into DRAM 00025860 2E 0D 0A 0D 0A 43 3A 20 20 20 20 20 09 69 6E 74 20 55 6C 74 72 61 4C 6F 61 64 33 44 45 66 66 65 .♪◙♪◙C: ○int UltraLoad3DEffe 00025880 63 74 28 73 6F 75 6E 64 2C 66 69 6C 65 6E 61 6D 65 2C 70 63 5F 62 75 66 66 65 72 2C 73 69 7A 65 ct(sound,filename,pc_buffer,size 000258A0 29 3B 0D 0A 09 09 09 53 4F 55 4E 44 5F 33 44 20 2A 73 6F 75 6E 64 3B 0D 0A 09 09 09 63 68 61 72 );♪◙○○○SOUND_3D *sound;♪◙○○○char 000258C0 20 2A 66 69 6C 65 6E 61 6D 65 3B 0D 0A 09 09 09 76 6F 69 64 20 66 61 72 20 2A 70 63 5F 62 75 66 *filename;♪◙○○○void far *pc_buf 000258E0 66 65 72 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 73 69 7A 65 3B 0D 0A 0D 0A 50 fer;♪◙○○○unsigned int size;♪◙♪◙P 00025900 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 20 55 6C 74 72 61 4C 6F 61 64 33 44 45 66 66 65 ASCAL:○FUNCTION UltraLoad3DEffe 00025920 63 74 28 56 41 52 20 53 6F 75 6E 64 20 20 20 20 20 3A 20 53 4F 55 4E 44 5F 33 44 3B 0D 0A 09 09 ct(VAR Sound : SOUND_3D;♪◙○○ 00025940 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 41 52 ○ VAR 00025960 20 46 69 6C 65 4E 61 6D 65 20 20 3A 20 53 54 52 49 4E 47 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 FileName : STRING;♪◙○○○ 00025980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 43 5F 42 75 66 66 PC_Buff 000259A0 65 72 20 3A 20 50 4F 49 4E 54 45 52 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 er : POINTER;♪◙○○○ 000259C0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 69 7A 65 20 20 20 20 20 20 3A 20 57 4F Size : WO 000259E0 52 44 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 RD) : BOOLEAN;♪◙♪◙Remarks:○This 00025A00 72 6F 75 74 69 6E 65 20 69 73 20 75 73 65 64 20 74 6F 20 6C 6F 61 64 20 61 20 33 44 20 73 6F 75 routine is used to load a 3D sou 00025A20 6E 64 20 69 6E 74 6F 20 74 68 65 20 44 52 41 4D 20 6F 6E 20 74 68 65 20 55 6C 74 72 61 53 6F 75 nd into the DRAM on the UltraSou 00025A40 6E 64 2E 20 49 74 20 77 69 6C 6C 20 61 6C 6C 6F 63 61 74 65 20 61 6C 6C 20 6E 65 63 65 73 73 61 nd. It will allocate all necessa 00025A60 72 79 20 72 65 73 6F 75 72 63 65 73 20 73 6F 20 74 68 61 74 20 55 6C 74 72 61 53 74 61 72 74 33 ry resources so that UltraStart3 00025A80 44 20 63 61 6E 20 62 65 20 63 61 6C 6C 65 64 20 6C 61 74 65 72 2E 20 41 73 20 6D 61 6E 79 20 62 D can be called later. As many b 00025AA0 75 66 66 65 72 73 20 6F 66 20 44 52 41 4D 20 61 73 20 6E 65 65 64 65 64 20 77 69 6C 6C 20 62 65 uffers of DRAM as needed will be 00025AC0 20 61 6C 6C 6F 63 61 74 65 64 20 61 6C 6F 6E 67 20 77 69 74 68 20 74 68 65 20 70 72 6F 70 65 72 allocated along with the proper 00025AE0 20 6E 75 6D 62 65 72 20 6F 66 20 76 6F 69 63 65 73 2E 20 54 68 65 73 65 20 72 65 73 6F 75 72 63 number of voices. These resourc 00025B00 65 73 20 77 69 6C 6C 20 62 65 20 66 72 65 65 64 20 75 70 20 77 68 65 6E 20 79 6F 75 20 63 61 6C es will be freed up when you cal 00025B20 6C 20 55 6C 74 72 61 55 6E 4C 6F 61 64 33 44 45 66 66 65 63 74 2E 20 54 68 65 20 66 69 6C 65 20 l UltraUnLoad3DEffect. The file 00025B40 73 70 65 63 69 66 69 65 64 20 4D 55 53 54 20 62 65 20 61 20 70 72 6F 70 65 72 6C 79 20 66 6F 72 specified MUST be a properly for 00025B60 6D 61 74 74 65 64 20 6F 72 20 74 68 65 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 66 61 69 6C 2E matted or the routine will fail. 00025B80 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 20 69 74 20 6D 75 73 74 20 68 61 76 65 20 74 68 This means that it must have th 00025BA0 65 20 70 72 6F 70 65 72 20 68 65 61 64 65 72 20 61 6E 64 20 33 44 20 64 61 74 61 20 69 6E 20 69 e proper header and 3D data in i 00025BC0 74 2E 20 54 68 65 20 27 70 63 5F 62 75 66 66 65 72 27 20 69 73 20 61 20 62 75 66 66 65 72 20 73 t. The 'pc_buffer' is a buffer s 00025BE0 75 70 70 6C 69 65 64 20 62 79 20 79 6F 75 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 66 6F 72 20 upplied by your application for 00025C00 74 68 69 73 20 72 6F 75 74 69 6E 65 27 73 20 75 73 65 20 74 6F 20 64 6F 77 6E 6C 6F 61 64 20 64 this routine's use to download d 00025C20 61 74 61 20 69 6E 74 6F 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 2E 20 54 68 65 20 27 73 69 ata into the UltraSound. The 'si 00025C40 7A 65 27 20 70 61 72 61 6D 65 74 65 72 20 69 73 20 74 68 65 20 73 69 7A 65 20 6F 66 20 74 68 65 ze' parameter is the size of the 00025C60 20 27 70 63 5F 62 75 66 66 65 72 27 2E 20 54 68 65 20 6C 61 72 67 65 72 20 74 68 69 73 20 62 75 'pc_buffer'. The larger this bu 00025C80 66 66 65 72 20 69 73 2C 20 74 68 65 20 66 61 73 74 65 72 20 69 74 20 77 69 6C 6C 20 64 6F 77 6E ffer is, the faster it will down 00025CA0 6C 6F 61 64 2E 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 55 4C 54 52 41 5F 4F 4B 20 20 20 load.♪◙♪◙Returns:○C: ULTRA_OK 00025CC0 20 20 20 20 20 20 4E 6F 20 65 72 72 6F 72 0D 0A 09 09 09 20 20 20 4E 4F 5F 33 44 5F 46 49 4C 45 No error♪◙○○○ NO_3D_FILE 00025CE0 20 20 20 20 20 20 20 33 44 20 66 69 6C 65 20 6E 6F 74 20 66 6F 75 6E 64 0D 0A 09 09 09 20 20 20 3D file not found♪◙○○○ 00025D00 42 41 44 5F 33 44 5F 48 44 52 20 20 20 20 20 20 20 33 44 20 68 65 61 64 65 72 20 69 73 20 62 61 BAD_3D_HDR 3D header is ba 00025D20 64 0D 0A 09 09 09 20 20 20 4E 4F 5F 33 44 5F 48 44 52 20 20 20 20 20 20 20 20 46 69 6C 65 20 64 d♪◙○○○ NO_3D_HDR File d 00025D40 6F 65 73 6E 27 74 20 68 61 76 65 20 61 20 76 61 6C 69 64 20 68 65 61 64 65 72 0D 0A 09 09 09 20 oesn't have a valid header♪◙○○○ 00025D60 20 20 4E 4F 54 5F 42 4C 4F 43 4B 5F 44 41 54 41 20 20 20 46 69 6C 65 20 69 73 20 6E 6F 74 20 69 NOT_BLOCK_DATA File is not i 00025D80 6E 20 62 6C 6F 63 6B 65 64 20 66 6F 72 6D 61 74 0D 0A 09 09 09 20 20 20 4E 4F 5F 46 52 45 45 5F n blocked format♪◙○○○ NO_FREE_ 00025DA0 56 4F 49 43 45 53 20 20 20 4E 6F 74 20 65 6E 6F 75 67 68 20 66 72 65 65 20 76 6F 69 63 65 73 0D VOICES Not enough free voices♪ 00025DC0 0A 09 09 09 20 20 20 42 41 44 5F 46 49 4C 45 5F 44 41 54 41 20 20 20 20 4E 6F 74 20 65 6E 6F 75 ◙○○○ BAD_FILE_DATA Not enou 00025DE0 67 68 20 64 61 74 61 20 6F 72 20 62 61 64 20 66 69 6C 65 0D 0A 09 09 09 20 20 20 43 4F 52 52 55 gh data or bad file♪◙○○○ CORRU 00025E00 50 54 5F 4D 45 4D 20 20 20 20 20 20 4D 65 6D 6F 72 79 20 73 74 72 75 63 74 73 20 68 61 76 65 20 PT_MEM Memory structs have 00025E20 62 65 65 6E 20 63 6F 72 72 75 70 74 65 64 0D 0A 09 09 09 20 20 20 44 4D 41 5F 42 55 53 59 20 20 been corrupted♪◙○○○ DMA_BUSY 00025E40 20 20 20 20 20 20 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 62 75 73 79 0D 0A 0D 0A 09 09 09 50 41 DMA channel busy♪◙♪◙○○○PA 00025E60 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 74 68 65 20 66 69 6C 65 20 63 6F 75 6C 64 20 62 65 20 SCAL: TRUE if the file could be 00025E80 6C 6F 61 64 65 64 2E 0D 0A 09 09 09 20 20 20 20 20 20 20 20 49 66 20 46 41 4C 53 45 20 63 68 65 loaded.♪◙○○○ If FALSE che 00025EA0 63 6B 20 55 6C 74 72 61 45 72 72 6F 72 53 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E ck UltraErrorStr for the reason. 00025EC0 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 4D 65 6D 41 6C 6C 6F 63 2C 20 55 6C 74 ♪◙♪◙See also:○UltraMemAlloc, Ult 00025EE0 72 61 56 6F 69 63 65 41 6C 6C 6F 63 2C 20 55 6C 74 72 61 44 6F 77 6E 6C 6F 61 64 0D 0A 0D 0A 0C raVoiceAlloc, UltraDownload♪◙♪◙♀ 00025F00 55 6C 74 72 61 53 65 74 46 72 65 71 33 44 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F UltraSetFreq3D♪◙________________ 00025F20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F _________________♪◙♪◙Purpose:○To 00025F40 20 73 65 74 20 74 68 65 20 66 72 65 71 75 65 6E 63 79 20 6F 66 20 61 20 33 44 20 73 6F 75 6E 64 set the frequency of a 3D sound 00025F60 20 65 66 66 65 63 74 2E 0D 0A 0D 0A 43 3A 20 20 20 20 20 09 76 6F 69 64 20 55 6C 74 72 61 53 65 effect.♪◙♪◙C: ○void UltraSe 00025F80 74 46 72 65 71 33 44 28 73 6F 75 6E 64 2C 66 72 65 71 75 65 6E 63 79 29 3B 0D 0A 09 09 09 53 4F tFreq3D(sound,frequency);♪◙○○○SO 00025FA0 55 4E 44 5F 33 44 20 2A 73 6F 75 6E 64 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 UND_3D *sound;♪◙○○○unsigned long 00025FC0 20 66 72 65 71 75 65 6E 63 79 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 frequency;♪◙♪◙PASCAL:○FUNCTION 00025FE0 20 55 6C 74 72 61 53 65 74 46 72 65 71 33 44 28 56 41 52 20 53 6F 75 6E 64 20 20 20 20 20 3A 20 UltraSetFreq3D(VAR Sound : 00026000 53 4F 55 4E 44 5F 33 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 SOUND_3D;♪◙○○○ 00026020 20 20 20 20 20 20 20 20 20 20 20 46 72 65 71 75 65 6E 63 79 20 3A 20 4C 4F 4E 47 49 4E 54 29 20 Frequency : LONGINT) 00026040 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 : BOOLEAN;♪◙♪◙Remarks:○This rout 00026060 69 6E 65 20 77 69 6C 6C 20 61 6C 6C 6F 77 20 79 6F 75 20 74 6F 20 61 6C 74 65 72 20 74 68 65 20 ine will allow you to alter the 00026080 66 72 65 71 75 65 6E 63 79 20 74 68 61 74 20 74 68 65 20 33 44 20 73 6F 75 6E 64 20 69 73 20 75 frequency that the 3D sound is u 000260A0 73 69 6E 67 2E 20 54 68 69 73 20 61 6C 6C 6F 77 73 20 79 6F 75 20 74 6F 20 64 6F 20 70 69 74 63 sing. This allows you to do pitc 000260C0 68 20 73 68 69 66 74 69 6E 67 20 74 6F 20 67 65 74 20 61 20 64 6F 70 70 6C 65 72 20 73 68 69 66 h shifting to get a doppler shif 000260E0 74 20 74 79 70 65 20 65 66 66 65 63 74 2E 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6E 20 t type effect. This routine can 00026100 6F 6E 6C 79 20 62 65 20 64 6F 6E 65 20 6F 6E 20 62 6C 6F 63 6B 65 64 20 64 61 74 61 2E 0D 0A 0D only be done on blocked data.♪◙♪ 00026120 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 55 4C 54 52 41 5F 4F 4B 20 20 20 20 20 20 20 20 20 20 4E ◙Returns:○C: ULTRA_OK N 00026140 6F 20 70 72 6F 62 6C 65 6D 0D 0A 09 09 09 20 20 20 4E 4F 54 5F 42 4C 4F 43 4B 45 44 5F 44 41 54 o problem♪◙○○○ NOT_BLOCKED_DAT 00026160 41 20 20 43 61 6E 27 74 20 63 68 61 6E 67 65 20 66 72 65 71 20 6F 66 20 69 6E 74 65 72 6C 65 61 A Can't change freq of interlea 00026180 76 65 64 20 64 61 74 61 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 74 ved data♪◙♪◙○○○PASCAL: TRUE if t 000261A0 68 65 20 66 72 65 71 75 65 6E 63 79 20 77 61 73 20 63 68 61 6E 67 65 64 20 6F 6B 2E 0D 0A 09 09 he frequency was changed ok.♪◙○○ 000261C0 09 20 20 20 20 20 20 20 20 49 66 20 46 41 4C 53 45 2C 20 63 68 65 63 6B 20 55 6C 74 72 61 45 72 ○ If FALSE, check UltraEr 000261E0 72 6F 72 53 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 0D 0A 0D 0A 55 6C rorStr for the reason.♪◙♪◙♪◙♪◙Ul 00026200 74 72 61 52 65 6C 65 61 73 65 33 44 49 6E 74 65 72 6C 65 61 76 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F traRelease3DInterleave♪◙________ 00026220 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 _________________________♪◙♪◙Pur 00026240 70 6F 73 65 3A 09 54 6F 20 72 65 6C 65 61 73 65 20 33 44 20 72 65 73 6F 75 72 63 65 73 20 66 6F pose:○To release 3D resources fo 00026260 72 20 61 6E 20 69 6E 74 65 72 6C 65 61 76 65 64 20 65 66 66 65 63 74 2E 0D 0A 0D 0A 43 3A 20 20 r an interleaved effect.♪◙♪◙C: 00026280 20 20 20 09 76 6F 69 64 20 55 6C 74 72 61 52 65 6C 65 61 73 65 33 44 49 6E 74 65 72 6C 65 61 76 ○void UltraRelease3DInterleav 000262A0 65 28 73 6F 75 6E 64 29 0D 0A 09 09 09 53 4F 55 4E 44 5F 33 44 20 2A 73 6F 75 6E 64 3B 0D 0A 0D e(sound)♪◙○○○SOUND_3D *sound;♪◙♪ 000262C0 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 52 65 6C 65 61 73 65 33 ◙PASCAL:○PROCEDURE UltraRelease3 000262E0 44 49 6E 74 65 72 6C 65 61 76 65 28 56 41 52 20 53 6F 75 6E 64 20 3A 20 53 4F 55 4E 44 5F 33 44 DInterleave(VAR Sound : SOUND_3D 00026300 29 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 73 20 77 69 6C );♪◙♪◙Remarks:○This routines wil 00026320 6C 20 72 65 6C 65 61 73 65 20 74 68 65 20 44 52 41 4D 20 61 6E 64 20 76 6F 69 63 65 73 20 61 6C l release the DRAM and voices al 00026340 6C 6F 63 61 74 65 64 20 66 6F 72 20 61 6E 20 69 6E 74 65 72 6C 65 61 76 65 64 20 73 6F 75 6E 64 located for an interleaved sound 00026360 20 74 72 61 63 6B 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 53 65 74 75 70 33 track.♪◙♪◙See also:○UltraSetup3 00026380 44 49 6E 74 65 72 6C 65 61 76 65 0D 0A 0D 0A 0C 55 6C 74 72 61 53 65 74 75 70 33 44 49 6E 74 65 DInterleave♪◙♪◙♀UltraSetup3DInte 000263A0 72 6C 65 61 76 65 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F rleave♪◙________________________ 000263C0 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 65 74 20 75 70 20 _________♪◙♪◙Purpose:○To set up 000263E0 66 6F 72 20 61 6E 20 69 6E 74 65 72 6C 65 61 76 65 64 20 33 44 20 73 6F 75 6E 64 20 65 66 66 65 for an interleaved 3D sound effe 00026400 63 74 2E 0D 0A 0D 0A 43 3A 20 20 20 20 20 09 69 6E 74 20 55 6C 74 72 61 53 65 74 75 70 33 44 49 ct.♪◙♪◙C: ○int UltraSetup3DI 00026420 6E 74 65 72 6C 65 61 76 65 28 73 6F 75 6E 64 2C 66 69 6C 65 6E 61 6D 65 2C 73 69 7A 65 29 3B 0D nterleave(sound,filename,size);♪ 00026440 0A 09 09 09 53 4F 55 4E 44 5F 33 44 20 2A 73 6F 75 6E 64 3B 0D 0A 09 09 09 63 68 61 72 20 2A 66 ◙○○○SOUND_3D *sound;♪◙○○○char *f 00026460 69 6C 65 6E 61 6D 65 3B 0D 0A 09 09 09 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 73 69 7A 65 3B ilename;♪◙○○○unsigned long size; 00026480 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 46 55 4E 43 54 49 4F 4E 20 55 6C 74 72 61 53 65 74 75 70 33 ♪◙♪◙PASCAL:○FUNCTION UltraSetup3 000264A0 44 49 6E 74 65 72 6C 65 61 76 65 28 56 41 52 20 53 6F 75 6E 64 20 20 20 20 3A 20 53 4F 55 4E 44 DInterleave(VAR Sound : SOUND 000264C0 5F 33 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _3D;♪◙○○○ 000264E0 20 20 20 20 20 20 20 20 20 56 41 52 20 46 69 6C 65 4E 61 6D 65 20 3A 20 53 54 52 49 4E 47 3B 0D VAR FileName : STRING;♪ 00026500 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ◙○○○ 00026520 20 20 20 20 53 69 7A 65 20 3A 20 4C 4F 4E 47 49 4E 54 29 20 3A 20 42 4F 4F 4C 45 41 4E 3B 0D 0A Size : LONGINT) : BOOLEAN;♪◙ 00026540 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 61 6C 6C ♪◙Remarks:○This routine will all 00026560 6F 63 61 74 65 20 74 68 65 20 76 6F 69 63 65 73 20 61 6E 64 20 6D 65 6D 6F 72 79 20 6E 65 63 65 ocate the voices and memory nece 00026580 73 73 61 72 79 20 74 6F 20 70 6C 61 79 20 62 61 63 6B 20 61 6E 20 69 6E 74 65 72 6C 65 61 76 65 ssary to play back an interleave 000265A0 64 20 33 44 20 73 6F 75 6E 64 2E 20 49 74 20 77 69 6C 6C 20 4E 4F 54 20 6C 6F 61 64 20 61 6E 79 d 3D sound. It will NOT load any 000265C0 20 6F 66 20 74 68 65 20 66 69 6C 65 20 64 61 74 61 20 69 6E 74 6F 20 44 52 41 4D 2E 20 59 6F 75 of the file data into DRAM. You 000265E0 72 20 61 70 70 6C 69 63 61 74 69 6F 6E 20 69 73 20 72 65 73 70 6F 6E 73 69 62 6C 65 20 66 6F 72 r application is responsible for 00026600 20 74 68 61 74 2E 20 49 74 20 77 69 6C 6C 20 6F 70 65 6E 20 74 68 65 20 66 69 6C 65 2C 20 72 65 that. It will open the file, re 00026620 61 64 20 74 68 65 20 68 65 61 64 65 72 2C 20 61 6C 6C 6F 63 61 74 65 20 74 68 65 20 61 70 70 72 ad the header, allocate the appr 00026640 6F 70 72 69 61 74 65 20 72 65 73 6F 75 72 63 65 73 2C 20 61 6E 64 20 73 65 74 20 75 70 20 74 68 opriate resources, and set up th 00026660 65 20 62 65 67 69 6E 2C 20 73 74 61 72 74 20 61 6E 64 20 65 6E 64 20 6C 6F 6F 70 20 70 6F 69 6E e begin, start and end loop poin 00026680 74 73 20 66 6F 72 20 65 61 63 68 20 76 6F 69 63 65 2E 20 53 69 6E 63 65 20 74 68 65 20 73 6F 75 ts for each voice. Since the sou 000266A0 6E 64 20 69 73 20 20 69 6E 74 65 72 6C 65 61 76 65 64 2C 20 74 68 65 20 6C 6F 6F 70 20 70 6F 69 nd is interleaved, the loop poi 000266C0 6E 74 73 20 61 72 65 20 73 74 61 67 67 61 72 65 64 20 61 70 70 72 6F 70 72 69 61 74 65 6C 79 2E nts are staggared appropriately. 000266E0 0D 0A 0D 0A 52 65 74 75 72 6E 73 3A 09 43 3A 20 55 4C 54 52 41 5F 4F 4B 20 20 20 20 20 20 20 20 ♪◙♪◙Returns:○C: ULTRA_OK 00026700 20 20 20 20 20 4E 6F 20 65 72 72 6F 72 0D 0A 09 09 09 20 20 20 4E 4F 5F 33 44 5F 46 49 4C 45 20 No error♪◙○○○ NO_3D_FILE 00026720 20 20 20 20 20 20 20 20 20 20 33 44 20 66 69 6C 65 20 6E 6F 74 20 66 6F 75 6E 64 0D 0A 09 09 09 3D file not found♪◙○○○ 00026740 20 20 20 42 41 44 5F 33 44 5F 48 44 52 20 20 20 20 20 20 20 20 20 20 20 33 44 20 68 65 61 64 65 BAD_3D_HDR 3D heade 00026760 72 20 69 73 20 62 61 64 0D 0A 09 09 09 20 20 20 4E 4F 5F 33 44 5F 48 44 52 20 20 20 20 20 20 20 r is bad♪◙○○○ NO_3D_HDR 00026780 20 20 20 20 20 46 69 6C 65 20 64 6F 65 73 6E 27 74 20 68 61 76 65 20 61 20 76 61 6C 69 64 20 68 File doesn't have a valid h 000267A0 65 61 64 65 72 0D 0A 09 09 09 20 20 20 4E 4F 54 5F 49 4E 54 45 52 4C 45 41 56 45 44 5F 44 41 54 eader♪◙○○○ NOT_INTERLEAVED_DAT 000267C0 41 20 46 69 6C 65 20 69 6E 20 62 6C 6F 63 6B 65 64 20 66 6F 72 6D 61 74 0D 0A 09 09 09 20 20 20 A File in blocked format♪◙○○○ 000267E0 4E 4F 5F 46 52 45 45 5F 56 4F 49 43 45 53 20 20 20 20 20 20 20 4E 6F 74 20 65 6E 6F 75 67 68 20 NO_FREE_VOICES Not enough 00026800 66 72 65 65 20 76 6F 69 63 65 73 0D 0A 09 09 09 20 20 20 42 41 44 5F 46 49 4C 45 5F 44 41 54 41 free voices♪◙○○○ BAD_FILE_DATA 00026820 20 20 20 20 20 20 20 20 4E 6F 74 20 65 6E 6F 75 67 68 20 64 61 74 61 20 6F 72 20 62 61 64 20 66 Not enough data or bad f 00026840 69 6C 65 0D 0A 09 09 09 20 20 20 43 4F 52 52 55 50 54 5F 4D 45 4D 20 20 20 20 20 20 20 20 20 20 ile♪◙○○○ CORRUPT_MEM 00026860 4D 65 6D 6F 72 79 20 73 74 72 75 63 74 73 20 68 61 76 65 20 62 65 65 6E 20 63 6F 72 72 75 70 74 Memory structs have been corrupt 00026880 65 64 0D 0A 0D 0A 09 09 09 50 41 53 43 41 4C 3A 20 54 52 55 45 20 69 66 20 74 68 65 20 66 69 6C ed♪◙♪◙○○○PASCAL: TRUE if the fil 000268A0 65 20 63 6F 75 6C 64 20 62 65 20 72 65 61 64 20 73 75 63 63 65 73 73 66 75 6C 6C 79 2E 0D 0A 09 e could be read successfully.♪◙○ 000268C0 09 09 20 20 20 20 20 20 20 20 49 66 20 46 41 4C 53 45 2C 20 63 68 65 63 6B 20 55 6C 74 72 61 45 ○○ If FALSE, check UltraE 000268E0 72 72 6F 72 53 74 72 20 66 6F 72 20 74 68 65 20 72 65 61 73 6F 6E 2E 0D 0A 0D 0A 53 65 65 20 61 rrorStr for the reason.♪◙♪◙See a 00026900 6C 73 6F 3A 09 55 6C 74 72 61 4C 6F 61 64 33 44 45 66 66 65 63 74 0D 0A 0D 0A 0D 0A 0D 0A 55 6C lso:○UltraLoad3DEffect♪◙♪◙♪◙♪◙Ul 00026920 74 72 61 53 74 61 72 74 33 44 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F traStart3D♪◙____________________ 00026940 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 74 61 _____________♪◙♪◙Purpose:○To sta 00026960 72 74 20 61 20 33 44 20 73 6F 75 6E 64 20 77 68 69 63 68 20 68 61 73 20 62 65 65 6E 20 6C 6F 61 rt a 3D sound which has been loa 00026980 64 65 64 2E 0D 0A 0D 0A 43 3A 20 20 20 20 20 09 76 6F 69 64 20 55 6C 74 72 61 53 74 61 72 74 33 ded.♪◙♪◙C: ○void UltraStart3 000269A0 44 28 73 6F 75 6E 64 29 3B 0D 0A 09 09 09 53 4F 55 4E 44 5F 33 44 20 2A 73 6F 75 6E 64 3B 0D 0A D(sound);♪◙○○○SOUND_3D *sound;♪◙ 000269C0 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 53 74 61 72 74 33 44 ♪◙PASCAL:○PROCEDURE UltraStart3D 000269E0 28 56 41 52 20 53 6F 75 6E 64 20 3A 20 53 4F 55 4E 44 5F 33 44 29 3B 0D 0A 0D 0A 52 65 6D 61 72 (VAR Sound : SOUND_3D);♪◙♪◙Remar 00026A00 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 73 74 61 72 74 20 61 20 33 44 ks:○This routine will start a 3D 00026A20 20 73 6F 75 6E 64 2E 20 49 66 20 79 6F 75 20 77 61 6E 74 20 69 74 20 74 6F 20 62 65 67 69 6E 20 sound. If you want it to begin 00026A40 61 74 20 61 20 73 70 65 63 69 66 69 63 20 70 6F 69 6E 74 20 69 6E 20 73 70 61 63 65 2C 20 62 65 at a specific point in space, be 00026A60 20 73 75 72 65 20 74 68 61 74 20 79 6F 75 20 70 6F 73 69 74 69 6F 6E 20 69 74 20 66 69 72 73 74 sure that you position it first 00026A80 2E 20 49 74 20 69 73 20 6E 6F 74 20 6E 65 63 65 73 73 61 72 79 20 74 6F 20 73 74 6F 70 20 74 68 . It is not necessary to stop th 00026AA0 65 20 73 6F 75 6E 64 20 62 65 66 6F 72 65 20 73 74 61 72 74 69 6E 67 20 69 74 20 61 67 61 69 6E e sound before starting it again 00026AC0 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 6F 3A 09 55 6C 74 72 61 53 74 61 72 74 33 44 0D 0A 0C 55 6C .♪◙♪◙See also:○UltraStart3D♪◙♀Ul 00026AE0 74 72 61 53 74 6F 70 33 44 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F traStop3D♪◙_____________________ 00026B00 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 73 74 6F 70 ____________♪◙♪◙Purpose:○To stop 00026B20 20 61 20 33 44 20 73 6F 75 6E 64 20 77 68 69 63 68 20 69 73 20 70 6C 61 79 69 6E 67 2E 0D 0A 0D a 3D sound which is playing.♪◙♪ 00026B40 0A 43 3A 20 20 20 20 20 09 76 6F 69 64 20 55 6C 74 72 61 53 74 6F 70 33 44 28 73 6F 75 6E 64 2C ◙C: ○void UltraStop3D(sound, 00026B60 61 62 72 75 70 74 6C 79 29 3B 0D 0A 09 09 09 53 4F 55 4E 44 5F 33 44 20 2A 73 6F 75 6E 64 3B 0D abruptly);♪◙○○○SOUND_3D *sound;♪ 00026B80 0A 09 09 09 69 6E 74 20 61 62 72 75 70 74 6C 79 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F ◙○○○int abruptly;♪◙♪◙PASCAL:○PRO 00026BA0 43 45 44 55 52 45 20 55 6C 74 72 61 53 74 6F 70 33 44 28 56 41 52 20 53 6F 75 6E 64 20 20 20 20 CEDURE UltraStop3D(VAR Sound 00026BC0 3A 20 53 4F 55 4E 44 5F 33 44 3B 0D 0A 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : SOUND_3D;♪◙○○○ 00026BE0 20 20 20 20 20 20 20 20 20 20 41 62 72 75 70 74 6C 79 20 3A 20 42 4F 4F 4C 45 41 4E 29 3B 0D 0A Abruptly : BOOLEAN);♪◙ 00026C00 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 73 74 6F ♪◙Remarks:○This routine will sto 00026C20 70 20 61 20 33 44 20 73 6F 75 6E 64 2E 20 54 68 65 72 65 20 61 72 65 20 74 77 6F 20 77 61 79 73 p a 3D sound. There are two ways 00026C40 20 74 6F 20 73 74 6F 70 20 61 20 73 6F 75 6E 64 3A 20 69 66 20 74 68 65 20 27 61 62 72 75 70 74 to stop a sound: if the 'abrupt 00026C60 6C 79 27 20 66 6C 61 67 20 69 73 20 54 52 55 45 2C 20 74 68 65 6E 20 74 68 65 20 73 6F 75 6E 64 ly' flag is TRUE, then the sound 00026C80 20 77 69 6C 6C 20 73 68 75 74 20 6F 66 66 20 69 6D 6D 65 64 69 61 74 65 6C 79 3B 20 69 66 20 69 will shut off immediately; if i 00026CA0 74 20 69 73 20 46 41 4C 53 45 2C 20 74 68 65 6E 20 74 68 65 20 73 6F 75 6E 64 20 77 69 6C 6C 20 t is FALSE, then the sound will 00026CC0 62 65 20 72 61 6D 70 65 64 20 64 6F 77 6E 20 76 65 72 79 20 71 75 69 63 6B 6C 79 2E 20 54 68 65 be ramped down very quickly. The 00026CE0 20 73 65 63 6F 6E 64 20 6D 65 74 68 6F 64 20 77 69 6C 6C 20 67 69 76 65 20 61 20 73 6D 6F 6F 74 second method will give a smoot 00026D00 68 65 72 20 74 72 61 6E 73 69 74 69 6F 6E 2E 0D 0A 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 55 6E 4C 6F her transition.♪◙♪◙♪◙♪◙UltraUnLo 00026D20 61 64 33 44 45 66 66 65 63 74 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ad3DEffect♪◙____________________ 00026D40 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 50 75 72 70 6F 73 65 3A 09 54 6F 20 66 72 65 _____________♪◙♪◙Purpose:○To fre 00026D60 65 20 72 65 73 6F 75 72 63 65 73 20 75 73 65 64 20 62 79 20 61 20 33 44 20 65 66 66 65 63 74 2E e resources used by a 3D effect. 00026D80 0D 0A 0D 0A 43 3A 20 20 20 20 20 09 76 6F 69 64 20 55 6C 74 72 61 55 6E 4C 6F 61 64 33 44 45 66 ♪◙♪◙C: ○void UltraUnLoad3DEf 00026DA0 66 65 63 74 28 73 6F 75 6E 64 29 3B 0D 0A 09 09 09 53 4F 55 4E 44 5F 33 44 20 2A 73 6F 75 6E 64 fect(sound);♪◙○○○SOUND_3D *sound 00026DC0 3B 0D 0A 0D 0A 50 41 53 43 41 4C 3A 09 50 52 4F 43 45 44 55 52 45 20 55 6C 74 72 61 55 6E 4C 6F ;♪◙♪◙PASCAL:○PROCEDURE UltraUnLo 00026DE0 61 64 33 44 45 66 66 65 63 74 28 56 41 52 20 53 6F 75 6E 64 20 3A 20 53 4F 55 4E 44 5F 33 44 29 ad3DEffect(VAR Sound : SOUND_3D) 00026E00 3B 0D 0A 0D 0A 52 65 6D 61 72 6B 73 3A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 75 73 ;♪◙♪◙Remarks:○This routine is us 00026E20 65 64 20 74 6F 20 66 72 65 65 20 75 70 20 61 6C 6C 20 74 68 65 20 72 65 73 6F 75 72 63 65 73 20 ed to free up all the resources 00026E40 28 76 6F 69 63 65 73 20 26 20 44 52 41 4D 29 20 74 68 61 74 20 61 20 33 44 20 20 73 6F 75 6E 64 (voices & DRAM) that a 3D sound 00026E60 20 20 75 73 65 73 2E 20 20 53 69 6E 63 65 20 61 20 33 44 20 73 6F 75 6E 64 20 63 61 6E 20 75 73 uses. Since a 3D sound can us 00026E80 65 20 61 20 6C 6F 74 20 6F 66 20 20 74 68 65 20 20 76 6F 69 63 65 73 20 20 26 20 44 52 41 4D 2C e a lot of the voices & DRAM, 00026EA0 20 79 6F 75 20 73 68 6F 75 6C 64 20 66 72 65 65 20 75 70 20 74 68 65 20 20 72 65 73 6F 75 72 63 you should free up the resourc 00026EC0 65 73 20 20 77 68 65 6E 65 76 65 72 20 79 6F 75 20 63 61 6E 2E 0D 0A 0D 0A 53 65 65 20 61 6C 73 es whenever you can.♪◙♪◙See als 00026EE0 6F 3A 09 55 6C 74 72 61 4C 6F 61 64 33 44 45 66 66 65 63 74 0D 0A 0D 0A 0D 0A 0C 41 70 70 65 6E o:○UltraLoad3DEffect♪◙♪◙♪◙♀Appen 00026F00 64 69 78 20 41 20 2D 20 45 72 72 6F 72 20 43 6F 64 65 73 0D 0A 0D 0A 3D 3D 3D 3D 3D 3D 0D 0A 20 dix A - Error Codes♪◙♪◙======♪◙ 00026F20 20 43 3A 20 20 0D 0A 3D 3D 3D 3D 3D 3D 0D 0A 0D 0A 4D 61 69 6E 20 72 6F 75 74 69 6E 65 73 3A 20 C: ♪◙======♪◙♪◙Main routines: 00026F40 28 74 68 65 73 65 20 61 72 65 20 64 65 66 69 6E 65 64 20 69 6E 20 55 4C 54 52 41 45 52 52 2E 48 (these are defined in ULTRAERR.H 00026F60 29 0D 0A 0D 0A 20 20 55 4C 54 52 41 5F 4F 4B 20 20 20 20 20 20 20 20 20 20 20 31 20 20 20 4E 6F )♪◙♪◙ ULTRA_OK 1 No 00026F80 20 65 72 72 6F 72 0D 0A 20 20 42 41 44 5F 4E 55 4D 5F 4F 46 5F 56 4F 49 43 45 53 20 20 32 20 20 error♪◙ BAD_NUM_OF_VOICES 2 00026FA0 20 6D 75 73 74 20 62 65 20 31 34 2D 33 32 0D 0A 20 20 4E 4F 5F 4D 45 4D 4F 52 59 20 20 20 20 20 must be 14-32♪◙ NO_MEMORY 00026FC0 20 20 20 20 20 33 20 20 20 4E 6F 74 20 65 6E 6F 75 67 68 20 66 72 65 65 20 44 52 41 4D 20 6C 65 3 Not enough free DRAM le 00026FE0 66 74 0D 0A 20 20 43 4F 52 52 55 50 54 5F 4D 45 4D 20 20 20 20 20 20 20 20 34 20 20 20 6D 65 6D ft♪◙ CORRUPT_MEM 4 mem 00027000 6F 72 79 20 73 74 72 75 63 74 75 72 65 73 20 61 72 65 20 63 6F 72 72 75 70 74 0D 0A 20 20 4E 4F ory structures are corrupt♪◙ NO 00027020 5F 55 4C 54 52 41 20 20 20 20 20 20 20 20 20 20 20 35 20 20 20 43 61 6E 27 74 20 66 69 6E 64 20 _ULTRA 5 Can't find 00027040 61 6E 20 55 6C 74 72 61 53 6F 75 6E 64 0D 0A 20 20 44 4D 41 5F 42 55 53 59 20 20 20 20 20 20 20 an UltraSound♪◙ DMA_BUSY 00027060 20 20 20 20 36 20 20 20 54 68 69 73 20 44 4D 41 20 63 68 61 6E 6E 65 6C 20 69 73 20 73 74 69 6C 6 This DMA channel is stil 00027080 6C 20 62 75 73 79 0D 0A 20 20 42 41 44 5F 44 4D 41 5F 41 44 44 52 20 20 20 20 20 20 20 37 20 20 l busy♪◙ BAD_DMA_ADDR 7 000270A0 20 61 75 74 6F 20 69 6E 69 74 20 61 63 72 6F 73 73 20 70 61 67 65 20 62 6F 75 6E 64 61 72 69 65 auto init across page boundarie 000270C0 73 0D 0A 20 20 56 4F 49 43 45 5F 4F 55 54 5F 4F 46 5F 52 41 4E 47 45 20 38 20 20 20 61 6C 6C 6F s♪◙ VOICE_OUT_OF_RANGE 8 allo 000270E0 63 61 74 65 20 61 20 76 6F 69 63 65 20 70 61 73 74 20 23 20 61 63 74 69 76 65 0D 0A 20 20 56 4F cate a voice past # active♪◙ VO 00027100 49 43 45 5F 4E 4F 54 5F 46 52 45 45 20 20 20 20 20 39 20 20 20 76 6F 69 63 65 20 68 61 73 20 61 ICE_NOT_FREE 9 voice has a 00027120 6C 72 65 61 64 79 20 62 65 65 6E 20 61 6C 6C 6F 63 61 74 65 64 0D 0A 20 20 4E 4F 5F 46 52 45 45 lready been allocated♪◙ NO_FREE 00027140 5F 56 4F 49 43 45 53 20 20 20 20 20 31 30 20 20 20 6E 6F 74 20 61 6E 79 20 76 6F 69 63 65 73 20 _VOICES 10 not any voices 00027160 66 72 65 65 0D 0A 0D 0A 33 44 20 66 75 6E 63 74 69 6F 6E 73 3A 20 28 74 68 65 73 65 20 61 72 65 free♪◙♪◙3D functions: (these are 00027180 20 64 65 66 69 6E 65 64 20 69 6E 20 54 48 52 45 45 44 2E 48 29 0D 0A 0D 0A 20 20 4E 4F 5F 33 44 defined in THREED.H)♪◙♪◙ NO_3D 000271A0 5F 46 49 4C 45 09 09 09 31 30 31 20 20 20 43 61 6E 27 74 20 6F 70 65 6E 20 66 69 6C 65 0D 0A 20 _FILE○○○101 Can't open file♪◙ 000271C0 20 42 41 44 5F 33 44 5F 48 44 52 09 09 09 31 30 32 20 20 20 48 65 61 64 65 72 20 66 6F 72 20 66 BAD_3D_HDR○○○102 Header for f 000271E0 69 6C 65 20 69 73 20 63 6F 72 72 75 70 74 2F 6E 6F 6E 2D 65 78 69 73 74 65 6E 74 0D 0A 20 20 4E ile is corrupt/non-existent♪◙ N 00027200 4F 5F 44 52 41 4D 5F 33 44 09 09 09 31 30 33 20 20 20 4E 6F 74 20 65 6E 6F 75 67 68 20 72 6F 6F O_DRAM_3D○○○103 Not enough roo 00027220 6D 20 66 6F 72 20 74 68 69 73 20 73 6F 75 6E 64 0D 0A 20 20 4E 4F 5F 33 44 5F 48 44 52 09 09 09 m for this sound♪◙ NO_3D_HDR○○○ 00027240 31 30 34 20 20 20 4E 6F 20 68 65 61 64 65 72 20 6F 6E 20 74 68 69 73 20 66 69 6C 65 0D 0A 20 20 104 No header on this file♪◙ 00027260 4E 4F 54 5F 42 4C 4F 43 4B 5F 44 41 54 41 09 09 31 30 35 20 20 20 64 61 74 61 20 6E 6F 74 20 69 NOT_BLOCK_DATA○○105 data not i 00027280 6E 20 62 6C 6F 63 6B 20 66 6F 72 6D 61 74 0D 0A 20 20 42 41 44 5F 46 49 4C 45 5F 44 41 54 41 09 n block format♪◙ BAD_FILE_DATA○ 000272A0 09 31 30 36 20 20 20 6E 6F 74 20 65 6E 6F 75 67 68 20 64 61 74 61 20 61 73 20 68 65 61 64 65 72 ○106 not enough data as header 000272C0 20 73 61 79 73 0D 0A 20 20 4E 4F 54 5F 49 4E 54 45 52 4C 45 41 56 45 44 5F 44 41 54 41 09 31 30 says♪◙ NOT_INTERLEAVED_DATA○10 000272E0 37 09 64 61 74 61 20 6E 6F 74 20 69 6E 20 69 6E 74 65 72 6C 65 61 76 65 64 20 66 6F 72 6D 61 74 7○data not in interleaved format 00027300 0D 0A 20 20 42 41 44 5F 33 44 5F 46 52 45 51 09 09 09 31 30 38 09 69 6E 76 61 6C 69 64 20 66 72 ♪◙ BAD_3D_FREQ○○○108○invalid fr 00027320 65 71 2E 20 66 6F 72 20 69 6E 74 65 72 6C 65 61 76 65 64 20 33 44 20 64 61 74 61 0D 0A 0D 0A 0D eq. for interleaved 3D data♪◙♪◙♪ 00027340 0A 0D 0A 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 20 50 41 53 43 41 4C 3A 0D 0A 3D 3D 3D 3D 3D 3D 3D 3D ◙♪◙=========♪◙ PASCAL:♪◙======== 00027360 3D 0D 0A 0D 0A 50 6C 65 61 73 65 20 73 65 65 20 74 68 65 20 64 69 73 63 75 73 73 69 6F 6E 20 6F =♪◙♪◙Please see the discussion o 00027380 66 20 74 68 65 20 50 41 53 43 41 4C 20 65 72 72 6F 72 20 68 61 6E 64 6C 69 6E 67 20 74 65 63 68 f the PASCAL error handling tech 000273A0 6E 69 71 75 65 73 20 61 74 20 74 68 65 20 65 6E 64 20 6F 66 20 73 65 63 74 69 6F 6E 20 31 2E 38 niques at the end of section 1.8 000273C0 2E 31 2E 0D 0A 0D 0A 0D 0A 0C 41 70 70 65 6E 64 69 78 20 42 20 2D 20 56 6F 6C 75 6D 65 20 43 6F .1.♪◙♪◙♪◙♀Appendix B - Volume Co 000273E0 6E 74 72 6F 6C 0D 0A 0D 0A 48 65 72 65 20 61 72 65 20 74 68 65 20 76 6F 6C 75 6D 65 20 72 61 6D ntrol♪◙♪◙Here are the volume ram 00027400 70 20 63 6F 6E 74 72 6F 6C 20 62 69 74 20 64 65 66 69 6E 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 p control bit definitions:♪◙♪◙ 00027420 20 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D =============================== 00027440 3D 3D 0D 0A 20 20 20 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 20 7C 20 32 20 7C ==♪◙ | 7 | 6 | 5 | 4 | 3 | 2 | 00027460 20 31 20 7C 20 30 20 7C 0D 0A 20 20 20 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 1 | 0 |♪◙ =================== 00027480 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 ==============♪◙ | | | 000274A0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 | | | | |♪◙ | | 000274C0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 52 65 73 65 72 | | | | | +---- Reser 000274E0 76 65 64 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 ved♪◙ | | | | | | 00027500 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 20 20 20 20 20 7C 20 20 20 7C +-------- Reserved♪◙ | | 00027520 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 | | | +------------ Res 00027540 65 72 76 65 64 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D erved♪◙ | | | | +--- 00027560 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 6C 6F 6F 70 20 65 6E 61 62 6C 65 20 28 30 3D 6E 6F 20 ------------- loop enable (0=no 00027580 6C 6F 6F 70 2C 20 31 3D 6C 6F 6F 70 29 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 loop, 1=loop)♪◙ | | | 000275A0 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 62 69 2D 64 69 72 65 63 74 69 +-------------------- bi-directi 000275C0 6F 6E 2E 20 6C 6F 6F 70 20 28 31 3D 65 6E 61 62 6C 65 29 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 on. loop (1=enable)♪◙ | | 000275E0 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 45 6E 61 62 +------------------------ Enab 00027600 6C 65 20 76 6F 6C 75 6D 65 20 72 61 6D 70 20 49 52 51 0D 0A 20 20 20 20 20 7C 20 20 20 2B 2D 2D le volume ramp IRQ♪◙ | +-- 00027620 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 -------------------------- Reser 00027640 76 65 64 0D 0A 20 20 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ved♪◙ +--------------------- 00027660 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 0D 0A 54 68 65 20 62 69 74 73 ----------- Reserved♪◙♪◙The bits 00027680 20 74 68 61 74 20 73 68 6F 75 6C 64 20 62 65 20 73 65 74 20 62 79 20 74 68 65 20 61 70 70 6C 69 that should be set by the appli 000276A0 63 61 74 69 6F 6E 20 74 6F 20 67 65 74 20 61 20 70 61 72 74 69 63 75 6C 61 72 20 74 79 70 65 20 cation to get a particular type 000276C0 6F 66 20 76 6F 6C 75 6D 65 20 72 61 6D 70 2E 20 54 68 65 20 63 6F 6D 70 6C 65 74 65 64 20 76 61 of volume ramp. The completed va 000276E0 6C 75 65 20 73 68 6F 75 6C 64 20 62 65 20 73 75 70 70 6C 69 65 64 20 74 6F 20 55 6C 74 72 61 52 lue should be supplied to UltraR 00027700 61 6D 70 56 6F 6C 75 6D 65 20 61 6E 64 20 55 6C 74 72 61 52 61 6D 70 4C 69 6E 65 61 72 56 6F 6C ampVolume and UltraRampLinearVol 00027720 75 6D 65 2E 20 49 66 20 76 6F 6C 75 6D 65 20 69 6E 74 65 72 72 75 70 74 73 20 61 72 65 20 65 6E ume. If volume interrupts are en 00027740 61 62 6C 65 64 2C 20 6D 61 6B 65 20 73 75 72 65 20 74 68 61 74 20 79 6F 75 20 68 61 76 65 20 73 abled, make sure that you have s 00027760 65 74 20 75 70 20 61 20 76 6F 6C 75 6D 65 20 69 6E 74 65 72 72 75 70 74 20 68 61 6E 64 6C 65 72 et up a volume interrupt handler 00027780 20 28 73 65 65 20 55 6C 74 72 61 56 6F 6C 75 6D 65 48 61 6E 64 6C 65 72 29 2E 20 54 68 69 73 20 (see UltraVolumeHandler). This 000277A0 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 63 72 65 61 74 65 20 79 6F 75 72 20 6F 77 6E 20 6D can be used to create your own m 000277C0 75 6C 74 69 2D 70 6F 69 6E 74 20 76 6F 6C 75 6D 65 20 65 6E 76 65 6C 6F 70 65 73 2E 0D 0A 0D 0A ulti-point volume envelopes.♪◙♪◙ 000277E0 42 69 2D 64 69 72 65 63 74 69 6F 6E 61 6C 20 6C 6F 6F 70 69 6E 67 20 63 61 6E 20 62 65 20 75 73 Bi-directional looping can be us 00027800 65 64 20 74 6F 20 63 72 65 61 74 65 20 61 20 74 72 65 6D 65 6C 6F 20 65 66 66 65 63 74 2E 0D 0A ed to create a tremelo effect.♪◙ 00027820 0D 0A 0D 0A 0C 41 70 70 65 6E 64 69 78 20 43 20 2D 20 56 6F 69 63 65 20 43 6F 6E 74 72 6F 6C 0D ♪◙♪◙♀Appendix C - Voice Control♪ 00027840 0A 0D 0A 48 65 72 65 20 61 72 65 20 74 68 65 20 76 6F 69 63 65 20 63 6F 6E 74 72 6F 6C 20 62 69 ◙♪◙Here are the voice control bi 00027860 74 20 64 65 66 69 6E 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D t definitions:♪◙♪◙ =========== 00027880 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 20 20 20 7C 20 37 20 7C ======================♪◙ | 7 | 000278A0 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 20 7C 20 32 20 7C 20 31 20 7C 20 30 20 7C 0D 0A 20 20 6 | 5 | 4 | 3 | 2 | 1 | 0 |♪◙ 000278C0 20 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D =============================== 000278E0 3D 3D 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 ==♪◙ | | | | | | 00027900 20 7C 20 20 20 7C 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 | |♪◙ | | | | | 00027920 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 52 6F 6C 6C 6F 76 65 72 20 77 68 65 6E 20 68 69 74 | | +---- Rollover when hit 00027940 20 65 6E 64 69 6E 67 20 61 64 64 72 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C ending addr♪◙ | | | | 00027960 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 20 | | +-------- Reserved♪◙ 00027980 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D | | | | | +------- 000279A0 2D 2D 2D 2D 2D 20 64 61 74 61 20 74 79 70 65 20 28 30 3D 38 20 62 69 74 20 31 3D 31 36 20 62 69 ----- data type (0=8 bit 1=16 bi 000279C0 74 29 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D t)♪◙ | | | | +------ 000279E0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 6C 6F 6F 70 20 65 6E 61 62 6C 65 20 28 30 3D 6E 6F 20 6C 6F 6F ---------- loop enable (0=no loo 00027A00 70 2C 20 31 3D 6C 6F 6F 70 29 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D p, 1=loop)♪◙ | | | +-- 00027A20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 62 69 2D 64 69 72 65 63 74 69 6F 6E 2E ------------------ bi-direction. 00027A40 20 6C 6F 6F 70 20 28 31 3D 65 6E 61 62 6C 65 29 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 2B loop (1=enable)♪◙ | | + 00027A60 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 45 6E 61 62 6C 65 20 ------------------------ Enable 00027A80 77 61 76 65 74 61 62 6C 65 20 49 52 51 0D 0A 20 20 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D wavetable IRQ♪◙ | +------- 00027AA0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 44 69 72 65 63 74 69 6F 6E 20 --------------------- Direction 00027AC0 28 30 3D 69 6E 63 2C 20 31 3D 64 65 63 29 0D 0A 20 20 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D (0=inc, 1=dec)♪◙ +---------- 00027AE0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D ---------------------- Reserved♪ 00027B00 0A 0D 0A 54 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 69 73 20 63 61 70 61 62 6C 65 20 6F 66 20 ◙♪◙The UltraSound is capable of 00027B20 70 6C 61 79 69 6E 67 20 62 61 63 6B 20 38 20 6F 72 20 31 36 20 62 69 74 20 64 61 74 61 2E 20 28 playing back 8 or 16 bit data. ( 00027B40 49 74 20 63 61 6E 20 6F 6E 6C 79 20 72 65 63 6F 72 64 20 38 20 62 69 74 29 2E 20 53 74 65 72 65 It can only record 8 bit). Stere 00027B60 6F 20 69 73 20 68 61 6E 64 6C 65 64 20 62 79 20 75 73 69 6E 67 20 32 20 76 6F 69 63 65 73 2E 20 o is handled by using 2 voices. 00027B80 49 74 20 63 61 6E 20 6C 6F 6F 70 20 6F 6E 20 74 68 65 20 64 61 74 61 20 69 6E 20 65 69 74 68 65 It can loop on the data in eithe 00027BA0 72 20 61 20 75 6E 69 2D 64 69 72 65 63 74 69 6F 6E 61 6C 20 6F 72 20 62 69 2D 64 69 72 65 63 74 r a uni-directional or bi-direct 00027BC0 69 6F 6E 61 6C 20 6D 6F 64 65 2E 20 49 66 20 79 6F 75 20 68 61 76 65 20 61 73 6B 65 64 20 74 68 ional mode. If you have asked th 00027BE0 61 74 20 61 20 70 61 72 74 69 63 75 6C 61 72 20 76 6F 69 63 65 20 67 65 6E 65 72 61 74 65 20 61 at a particular voice generate a 00027C00 20 77 61 76 65 74 61 62 6C 65 20 69 6E 74 65 72 72 75 70 74 20 77 68 65 6E 20 69 74 20 68 69 74 wavetable interrupt when it hit 00027C20 73 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 20 64 61 74 61 20 28 6F 72 20 6C 6F 6F 70 20 70 s the end of the data (or loop p 00027C40 6F 69 6E 74 2C 20 69 66 20 6C 6F 6F 70 69 6E 67 20 69 73 20 73 70 65 63 69 66 69 65 64 29 2C 20 oint, if looping is specified), 00027C60 62 65 20 73 75 72 65 20 79 6F 75 20 68 61 76 65 20 73 70 65 63 69 66 69 65 64 20 61 20 77 61 76 be sure you have specified a wav 00027C80 65 74 61 62 6C 65 20 69 6E 74 65 72 72 75 70 74 20 68 61 6E 64 65 72 20 28 55 6C 74 72 61 57 61 etable interrupt hander (UltraWa 00027CA0 76 65 48 61 6E 64 65 72 29 2E 20 54 68 65 20 6D 6F 64 65 20 62 69 74 73 20 77 6F 75 6C 64 20 62 veHander). The mode bits would b 00027CC0 65 20 63 6F 6E 73 74 72 75 63 74 65 64 20 61 6E 64 20 70 61 73 73 65 64 20 74 6F 20 55 6C 74 72 e constructed and passed to Ultr 00027CE0 61 53 74 61 72 74 56 6F 69 63 65 20 61 6E 64 20 55 6C 74 72 61 53 65 74 4C 6F 6F 70 4D 6F 64 65 aStartVoice and UltraSetLoopMode 00027D00 2E 20 54 68 65 20 72 6F 6C 6C 6F 76 65 72 20 62 69 74 20 69 73 20 75 73 65 64 20 74 6F 20 74 65 . The rollover bit is used to te 00027D20 6C 6C 20 74 68 65 20 73 6F 66 74 77 61 72 65 20 74 6F 20 70 72 6F 67 72 61 6D 20 74 68 65 20 68 ll the software to program the h 00027D40 61 72 64 77 61 72 65 3A 20 67 65 6E 65 72 61 74 65 20 61 6E 20 69 6E 74 65 72 72 75 70 74 20 77 ardware: generate an interrupt w 00027D60 68 65 6E 20 74 68 65 20 76 6F 69 63 65 20 68 69 74 73 20 74 68 65 20 65 6E 64 20 61 64 64 72 65 hen the voice hits the end addre 00027D80 73 73 2C 20 62 75 74 20 64 6F 6E 27 74 20 73 74 6F 70 20 70 6C 61 79 69 6E 67 20 74 68 65 20 76 ss, but don't stop playing the v 00027DA0 6F 69 63 65 20 28 6F 72 20 6C 6F 6F 70 20 69 66 20 6C 6F 6F 70 69 6E 67 20 69 73 20 65 6E 61 62 oice (or loop if looping is enab 00027DC0 6C 65 64 29 2E 20 54 68 69 73 20 61 6C 6C 6F 77 73 20 61 20 76 6F 69 63 65 20 74 6F 20 63 6F 6E led). This allows a voice to con 00027DE0 74 69 6E 75 65 20 74 6F 20 70 6C 61 79 20 62 75 74 20 67 69 76 65 73 20 74 68 65 20 73 6F 66 74 tinue to play but gives the soft 00027E00 77 61 72 65 20 61 20 27 6D 61 72 6B 65 72 20 70 6F 69 6E 74 27 20 69 6E 20 74 68 65 20 70 6C 61 ware a 'marker point' in the pla 00027E20 79 62 61 63 6B 2E 20 54 68 69 73 20 63 61 6E 20 62 65 20 76 65 72 79 20 70 6F 77 65 72 66 75 6C yback. This can be very powerful 00027E40 6C 20 74 6F 20 61 6C 6C 6F 77 20 61 20 73 65 61 6D 6C 65 73 73 20 70 6C 61 79 62 61 63 6B 2E 20 l to allow a seamless playback. 00027E60 54 68 65 20 68 61 72 64 77 61 72 65 20 62 69 74 20 66 6F 72 20 74 75 72 6E 69 6E 67 20 72 6F 6C The hardware bit for turning rol 00027E80 6C 6F 76 65 72 20 6F 6E 20 69 73 20 61 63 75 74 61 6C 6C 79 20 69 6E 20 74 68 65 20 76 6F 69 63 lover on is acutally in the voic 00027EA0 65 27 73 20 76 6F 6C 75 6D 65 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 20 28 74 68 65 e's volume control register (the 00027EC0 72 65 20 77 65 72 65 20 6E 6F 20 73 70 61 72 65 20 62 69 74 73 20 69 6E 20 74 68 65 20 76 6F 69 re were no spare bits in the voi 00027EE0 63 65 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 65 72 29 2E 20 4F 6E 65 20 6F 66 20 74 68 65 ce control register). One of the 00027F00 20 62 69 74 73 20 69 73 20 73 68 61 72 65 64 20 74 6F 20 74 65 6C 6C 20 74 68 65 20 74 6F 6F 6C bits is shared to tell the tool 00027F20 6B 69 74 20 73 6F 66 74 77 61 72 65 20 74 6F 20 65 6E 61 62 6C 65 20 74 68 65 20 72 6F 6C 6C 6F kit software to enable the rollo 00027F40 76 65 72 20 69 6E 20 74 68 65 20 76 6F 6C 75 6D 65 20 63 6F 6E 74 72 6F 6C 20 72 65 67 69 73 74 ver in the volume control regist 00027F60 65 72 2E 0D 0A 0D 0A 0C 41 70 70 65 6E 64 69 78 20 44 20 2D 20 44 4D 41 20 43 6F 6E 74 72 6F 6C er.♪◙♪◙♀Appendix D - DMA Control 00027F80 0D 0A 0D 0A 48 65 72 65 20 61 72 65 20 74 68 65 20 64 6D 61 20 74 6F 2F 66 72 6F 6D 20 44 52 41 ♪◙♪◙Here are the dma to/from DRA 00027FA0 4D 20 63 6F 6E 74 72 6F 6C 20 62 69 74 20 64 65 66 69 6E 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 M control bit definitions:♪◙♪◙ 00027FC0 20 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D =============================== 00027FE0 3D 3D 0D 0A 20 20 20 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 20 7C 20 32 20 7C ==♪◙ | 7 | 6 | 5 | 4 | 3 | 2 | 00028000 20 31 20 7C 20 30 20 7C 0D 0A 20 20 20 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 1 | 0 |♪◙ =================== 00028020 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 ==============♪◙ | | | 00028040 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 | | | | |♪◙ | | 00028060 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 52 65 73 65 72 | | | | | +---- Reser 00028080 76 65 64 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 ved♪◙ | | | | | | 000280A0 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 20 30 3D 77 72 69 74 65 2C 31 3D 52 65 61 64 0D 0A 20 20 20 20 +-------- 0=write,1=Read♪◙ 000280C0 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | | | | | +---------- 000280E0 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 -- Reserved♪◙ | | | | 00028100 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 20 20 +---------------- Reserved♪◙ 00028120 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | | | +---------------- 00028140 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D ---- Reserved♪◙ | | +--- 00028160 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A --------------------- Reserved♪◙ 00028180 20 20 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D | +---------------------- 000281A0 2D 2D 2D 2D 2D 2D 20 44 61 74 61 20 73 69 7A 65 20 28 30 3D 38 20 62 69 74 2C 20 31 3D 31 36 20 ------ Data size (0=8 bit, 1=16 000281C0 62 69 74 29 0D 0A 20 20 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D bit)♪◙ +-------------------- 000281E0 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 28 31 3D 63 6F 6E 76 65 72 74 20 74 6F 20 32 27 73 20 63 ------------ (1=convert to 2's c 00028200 6F 6D 70 2E 29 0D 0A 0D 0A 4E 6F 74 65 3A 09 54 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 44 52 omp.)♪◙♪◙Note:○The UltraSound DR 00028220 41 4D 20 6C 6F 63 61 74 69 6F 6E 20 4D 55 53 54 20 62 65 20 6F 6E 20 61 20 33 32 20 62 79 74 65 AM location MUST be on a 32 byte 00028240 20 62 6F 75 6E 64 61 72 79 2E 20 55 6C 74 72 61 4D 65 6D 41 6C 6C 6F 63 20 65 6E 66 6F 72 63 65 boundary. UltraMemAlloc enforce 00028260 73 20 74 68 69 73 20 73 74 69 70 75 6C 61 74 69 6F 6E 2E 0D 0A 0D 0A 59 6F 75 20 64 65 66 69 6E s this stipulation.♪◙♪◙You defin 00028280 65 20 74 68 65 20 62 79 74 65 20 74 6F 20 62 65 20 70 61 73 73 65 64 20 74 6F 20 55 6C 74 72 61 e the byte to be passed to Ultra 000282A0 55 70 6C 6F 61 64 20 61 6E 64 20 55 6C 74 72 61 44 6F 77 6E 6C 6F 61 64 20 75 73 69 6E 67 20 74 Upload and UltraDownload using t 000282C0 68 65 73 65 20 62 69 74 73 2E 20 54 6F 20 44 4D 41 20 74 68 65 20 64 61 74 61 20 6F 75 74 20 6F hese bits. To DMA the data out o 000282E0 66 20 44 52 41 4D 2C 20 75 73 65 20 55 6C 74 72 61 55 70 6C 6F 61 64 2E 20 20 54 6F 20 73 65 6E f DRAM, use UltraUpload. To sen 00028300 64 20 64 61 74 61 20 74 6F 20 74 68 65 20 44 52 41 4D 2C 20 75 73 65 20 55 6C 74 72 61 44 6F 77 d data to the DRAM, use UltraDow 00028320 6E 6C 6F 61 64 2E 20 42 65 20 73 75 72 65 20 74 6F 20 73 70 65 63 69 66 79 20 74 68 65 20 73 61 nload. Be sure to specify the sa 00028340 6D 70 6C 65 20 73 69 7A 65 20 61 6E 64 20 77 68 65 74 68 65 72 20 6F 72 20 6E 6F 74 20 74 68 65 mple size and whether or not the 00028360 20 64 61 74 61 20 69 73 20 69 6E 20 74 77 6F 27 73 20 63 6F 6D 70 6C 69 6D 65 6E 74 20 66 6F 72 data is in two's compliment for 00028380 6D 2E 20 54 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 63 61 6E 20 6F 6E 6C 79 20 70 6C 61 79 20 m. The UltraSound can only play 000283A0 64 61 74 61 20 62 61 63 6B 20 74 68 61 74 20 69 73 20 69 6E 20 74 77 6F 27 73 20 63 6F 6D 70 6C data back that is in two's compl 000283C0 69 6D 65 6E 74 20 66 6F 72 6D 2E 20 49 66 20 79 6F 75 72 20 73 61 6D 70 6C 65 20 69 73 20 69 6E iment form. If your sample is in 000283E0 20 6F 6E 65 27 73 20 63 6F 6D 70 6C 69 6D 65 6E 74 20 66 6F 72 6D 2C 20 74 75 72 6E 20 6F 6E 20 one's compliment form, turn on 00028400 62 69 74 20 37 20 77 68 65 6E 20 73 70 65 63 69 66 79 69 6E 67 20 74 68 65 20 6D 6F 64 65 20 77 bit 7 when specifying the mode w 00028420 68 65 6E 20 79 6F 75 20 63 61 6C 6C 20 55 6C 74 72 61 44 6F 77 6E 6C 6F 61 64 20 2D 20 74 68 65 hen you call UltraDownload - the 00028440 20 64 61 74 61 20 77 69 6C 6C 20 62 65 20 74 72 61 6E 73 6C 61 74 65 64 20 74 6F 20 74 77 6F 27 data will be translated to two' 00028460 73 20 63 6F 6D 70 6C 69 6D 65 6E 74 20 61 73 20 69 74 20 69 73 20 62 65 69 6E 67 20 44 4D 41 27 s compliment as it is being DMA' 00028480 65 64 2E 0D 0A 0D 0A 4E 6F 74 65 3A 09 49 66 20 79 6F 75 20 61 72 65 20 70 6F 6B 69 6E 67 20 64 ed.♪◙♪◙Note:○If you are poking d 000284A0 61 74 61 20 69 6E 74 6F 20 44 52 41 4D 2C 20 79 6F 75 20 4D 55 53 54 20 70 75 74 20 74 68 65 20 ata into DRAM, you MUST put the 000284C0 64 61 74 61 20 69 6E 20 74 77 6F 73 20 63 6F 6D 70 6C 69 6D 65 6E 74 20 79 6F 75 72 73 65 6C 66 data in twos compliment yourself 000284E0 2E 20 54 68 69 73 20 69 73 20 61 63 63 6F 6D 70 6C 69 73 68 65 64 20 62 79 20 65 78 63 6C 75 73 . This is accomplished by exclus 00028500 69 76 65 20 6F 72 2D 69 6E 67 20 74 68 65 20 68 69 67 68 20 62 69 74 20 77 69 74 68 20 61 20 31 ive or-ing the high bit with a 1 00028520 2E 0D 0A 0D 0A 0C 41 70 70 65 6E 64 69 78 20 45 20 2D 20 52 65 63 6F 72 64 69 6E 67 20 43 6F 6E .♪◙♪◙♀Appendix E - Recording Con 00028540 74 72 6F 6C 0D 0A 0D 0A 48 65 72 65 20 61 72 65 20 74 68 65 20 72 65 63 6F 72 64 69 6E 67 20 63 trol♪◙♪◙Here are the recording c 00028560 6F 6E 74 72 6F 6C 20 62 69 74 20 64 65 66 69 6E 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 3D 3D ontrol bit definitions:♪◙♪◙ == 00028580 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D ===============================♪ 000285A0 0A 20 20 20 7C 20 37 20 7C 20 36 20 7C 20 35 20 7C 20 34 20 7C 20 33 20 7C 20 32 20 7C 20 31 20 ◙ | 7 | 6 | 5 | 4 | 3 | 2 | 1 000285C0 7C 20 30 20 7C 0D 0A 20 20 20 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | 0 |♪◙ ====================== 000285E0 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 ===========♪◙ | | | | 00028600 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 | | | |♪◙ | | | 00028620 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 | | | | +---- Reserved 00028640 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B ♪◙ | | | | | | + 00028660 2D 2D 2D 2D 2D 2D 2D 2D 20 6D 6F 64 65 20 28 30 3D 6D 6F 6E 6F 2C 31 3D 73 74 65 72 65 6F 29 0D -------- mode (0=mono,1=stereo)♪ 00028680 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D ◙ | | | | | +----- 000286A0 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C ------- Reserved♪◙ | | | 000286C0 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 | +---------------- Reserve 000286E0 64 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D d♪◙ | | | +----------- 00028700 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 20 20 20 20 20 7C 20 20 20 7C 20 20 --------- Reserved♪◙ | | 00028720 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 +------------------------ Reser 00028740 76 65 64 0D 0A 20 20 20 20 20 7C 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ved♪◙ | +----------------- 00028760 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 52 65 73 65 72 76 65 64 0D 0A 20 20 20 20 20 2B 2D 2D 2D 2D ----------- Reserved♪◙ +---- 00028780 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 28 31 3D ---------------------------- (1= 000287A0 43 6F 6E 76 65 72 74 20 74 6F 20 32 27 73 20 63 6F 6D 70 2E 29 0D 0A 0D 0A 0C 41 70 70 65 6E 64 Convert to 2's comp.)♪◙♪◙♀Append 000287C0 69 78 20 46 20 2D 20 50 61 74 63 68 20 46 69 6C 65 73 0D 0A 0D 0A 54 68 69 73 20 61 70 70 65 6E ix F - Patch Files♪◙♪◙This appen 000287E0 64 69 78 20 63 6F 6E 74 61 69 6E 73 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 61 62 6F 75 74 20 74 dix contains information about t 00028800 68 65 20 74 68 65 20 70 61 74 63 68 20 66 69 6C 65 20 66 6F 72 6D 61 74 2E 20 20 49 74 20 61 73 he the patch file format. It as 00028820 73 75 6D 65 73 20 74 68 65 20 72 65 61 64 65 72 20 69 73 20 66 61 6D 69 6C 69 61 72 20 77 69 74 sumes the reader is familiar wit 00028840 68 20 77 61 76 65 20 74 61 62 6C 65 20 73 79 6E 74 68 65 73 69 73 2C 20 6D 75 73 69 63 2C 20 73 h wave table synthesis, music, s 00028860 6F 75 6E 64 2C 0D 0A 61 6E 64 20 74 68 65 20 47 46 31 20 41 53 49 43 20 63 68 69 70 20 74 68 61 ound,♪◙and the GF1 ASIC chip tha 00028880 74 20 69 73 20 74 68 65 20 68 65 61 72 74 20 6F 66 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 t is the heart of the UltraSound 000288A0 20 61 75 64 69 6F 20 63 61 72 64 2E 0D 0A 0D 0A 54 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 70 audio card.♪◙♪◙The UltraSound p 000288C0 61 74 63 68 20 66 69 6C 65 20 69 73 20 61 20 63 6F 6C 6C 65 63 74 69 6F 6E 20 6F 66 20 64 61 74 atch file is a collection of dat 000288E0 61 20 73 74 72 75 63 74 75 72 65 73 20 61 6E 64 20 73 6F 75 6E 64 20 64 61 74 61 20 69 6E 20 74 a structures and sound data in t 00028900 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 66 6F 72 6D 61 74 3A 0D 0A 0D 0A 20 20 20 20 70 61 74 63 he following format:♪◙♪◙ patc 00028920 68 20 68 65 61 64 65 72 20 28 23 20 69 6E 73 74 72 75 6D 65 6E 74 73 29 0D 0A 20 20 20 20 20 20 h header (# instruments)♪◙ 00028940 20 20 69 6E 73 74 72 75 6D 65 6E 74 20 68 65 61 64 65 72 20 31 20 28 23 6C 61 79 65 72 73 29 0D instrument header 1 (#layers)♪ 00028960 0A 20 20 20 20 20 20 20 20 20 20 20 20 6C 61 79 65 72 20 31 20 68 65 61 64 65 72 20 28 23 20 77 ◙ layer 1 header (# w 00028980 61 76 65 73 29 0D 0A 09 20 20 20 20 20 20 20 20 77 61 76 65 20 31 20 68 65 61 64 65 72 0D 0A 09 aves)♪◙○ wave 1 header♪◙○ 000289A0 20 20 20 20 20 20 20 20 77 61 76 65 20 31 20 64 61 74 61 0D 0A 20 20 20 20 20 20 20 20 20 20 20 wave 1 data♪◙ 000289C0 20 20 20 20 20 77 61 76 65 20 32 20 68 65 61 64 65 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 wave 2 header♪◙ 000289E0 20 20 20 20 77 61 76 65 20 32 20 64 61 74 61 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 wave 2 data♪◙ 00028A00 20 2E 2E 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 76 65 20 6E 20 68 65 61 ...♪◙ wave n hea 00028A20 64 65 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 76 65 20 6E 20 64 61 74 61 der♪◙ wave n data 00028A40 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6C 61 79 65 72 20 32 20 68 65 61 64 65 72 20 28 23 20 ♪◙ layer 2 header (# 00028A60 77 61 76 65 73 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 76 65 20 31 20 68 waves)♪◙ wave 1 h 00028A80 65 61 64 65 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 76 65 20 31 20 64 61 eader♪◙ wave 1 da 00028AA0 74 61 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 76 65 20 32 20 68 65 61 64 65 ta♪◙ wave 2 heade 00028AC0 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 76 65 20 32 20 64 61 74 61 0D 0A r♪◙ wave 2 data♪◙ 00028AE0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2E 2E 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ...♪◙ 00028B00 20 20 20 20 20 77 61 76 65 20 6E 20 68 65 61 64 65 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 wave n header♪◙ 00028B20 20 20 20 20 77 61 76 65 20 6E 20 64 61 74 61 0D 0A 20 20 20 20 20 20 20 20 69 6E 73 74 72 75 6D wave n data♪◙ instrum 00028B40 65 6E 74 20 68 65 61 64 65 72 20 32 20 28 23 6C 61 79 65 72 73 29 0D 0A 20 20 20 20 65 74 63 2E ent header 2 (#layers)♪◙ etc. 00028B60 0D 0A 0D 0A 41 6C 6C 20 6F 66 20 74 68 65 20 41 64 76 61 6E 63 65 64 20 47 72 61 76 69 73 20 55 ♪◙♪◙All of the Advanced Gravis U 00028B80 6C 74 72 61 53 6F 75 6E 64 20 70 61 74 63 68 65 73 20 63 6F 6E 74 61 69 6E 20 6F 6E 65 20 69 6E ltraSound patches contain one in 00028BA0 73 74 72 75 6D 65 6E 74 20 61 74 20 74 68 65 20 63 75 72 72 65 6E 74 20 74 69 6D 65 2E 20 20 45 strument at the current time. E 00028BC0 78 63 65 70 74 20 66 6F 72 20 74 68 65 20 6D 61 69 6E 20 70 61 74 63 68 20 68 65 61 64 65 72 2C xcept for the main patch header, 00028BE0 20 65 61 63 68 20 6F 66 20 74 68 65 20 68 65 61 64 65 72 73 20 68 61 73 20 61 20 73 69 7A 65 20 each of the headers has a size 00028C00 66 69 65 6C 64 20 77 68 69 63 68 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 73 65 65 6B 20 field which can be used to seek 00028C20 70 61 73 74 20 75 6E 77 61 6E 74 65 64 20 64 61 74 61 2E 20 20 46 6F 72 20 65 78 61 6D 70 6C 65 past unwanted data. For example 00028C40 2C 20 69 66 20 61 20 70 61 74 63 68 20 68 61 73 20 74 77 6F 20 69 6E 73 74 72 75 6D 65 6E 74 73 , if a patch has two instruments 00028C60 20 61 6E 64 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 73 6B 69 70 20 74 68 65 20 66 69 72 73 74 20 and you want to skip the first 00028C80 69 6E 73 74 72 75 6D 65 6E 74 2C 20 79 6F 75 20 77 6F 75 6C 64 20 72 65 61 64 20 74 68 65 20 66 instrument, you would read the f 00028CA0 69 72 73 74 20 69 6E 73 74 72 75 6D 65 6E 74 20 68 65 61 64 65 72 2C 20 61 6E 64 20 74 68 65 6E irst instrument header, and then 00028CC0 20 73 6B 69 70 20 49 4E 53 54 52 55 4D 45 4E 54 5F 53 49 5A 45 20 62 79 74 65 73 2E 20 20 57 68 skip INSTRUMENT_SIZE bytes. Wh 00028CE0 61 74 20 66 6F 6C 6C 6F 77 73 20 69 73 20 74 68 65 20 70 61 74 63 68 20 68 65 61 64 65 72 20 64 at follows is the patch header d 00028D00 65 66 69 6E 69 74 69 6F 6E 73 20 67 69 76 65 6E 20 69 6E 20 43 20 61 6E 64 20 50 61 73 63 61 6C efinitions given in C and Pascal 00028D20 2E 20 20 41 66 74 65 72 20 74 68 65 20 64 65 66 69 6E 69 74 69 6F 6E 73 2C 20 61 20 66 69 65 6C . After the definitions, a fiel 00028D40 64 2D 62 79 2D 66 69 65 6C 64 20 62 72 65 61 6B 64 6F 77 6E 20 6F 66 20 74 68 65 20 68 65 61 64 d-by-field breakdown of the head 00028D60 65 72 73 20 69 73 20 67 69 76 65 6E 2E 0D 0A 0D 0A 3D 3D 3D 3D 3D 3D 0D 0A 20 20 43 3A 0D 0A 3D ers is given.♪◙♪◙======♪◙ C:♪◙= 00028D80 3D 3D 3D 3D 3D 0D 0A 0D 0A 23 64 65 66 69 6E 65 20 45 4E 56 45 4C 4F 50 45 53 20 20 20 09 09 09 =====♪◙♪◙#define ENVELOPES ○○○ 00028DA0 09 36 0D 0A 23 64 65 66 69 6E 65 20 48 45 41 44 45 52 5F 53 49 5A 45 20 20 20 09 09 09 09 31 32 ○6♪◙#define HEADER_SIZE ○○○○12 00028DC0 0D 0A 23 64 65 66 69 6E 65 20 49 44 5F 53 49 5A 45 20 20 20 20 20 20 20 09 09 09 09 31 30 0D 0A ♪◙#define ID_SIZE ○○○○10♪◙ 00028DE0 23 64 65 66 69 6E 65 20 44 45 53 43 5F 53 49 5A 45 20 20 20 20 20 09 09 09 09 36 30 0D 0A 23 64 #define DESC_SIZE ○○○○60♪◙#d 00028E00 65 66 69 6E 65 20 52 45 53 45 52 56 45 44 5F 53 49 5A 45 20 20 20 09 09 09 09 34 30 0D 0A 23 64 efine RESERVED_SIZE ○○○○40♪◙#d 00028E20 65 66 69 6E 65 20 50 41 54 43 48 5F 48 45 41 44 45 52 5F 52 45 53 45 52 56 45 44 5F 53 49 5A 45 efine PATCH_HEADER_RESERVED_SIZE 00028E40 20 09 33 36 0D 0A 23 64 65 66 69 6E 65 20 4C 41 59 45 52 5F 52 45 53 45 52 56 45 44 5F 53 49 5A ○36♪◙#define LAYER_RESERVED_SIZ 00028E60 45 20 20 20 09 09 34 30 0D 0A 23 64 65 66 69 6E 65 20 50 41 54 43 48 5F 44 41 54 41 5F 52 45 53 E ○○40♪◙#define PATCH_DATA_RES 00028E80 45 52 56 45 44 5F 53 49 5A 45 20 20 20 09 33 36 0D 0A 23 64 65 66 69 6E 65 20 47 46 31 5F 48 45 ERVED_SIZE ○36♪◙#define GF1_HE 00028EA0 41 44 45 52 5F 54 45 58 54 20 20 20 09 09 09 22 47 46 31 50 41 54 43 48 31 31 30 22 0D 0A 23 64 ADER_TEXT ○○○"GF1PATCH110"♪◙#d 00028EC0 65 66 69 6E 65 20 4D 41 58 5F 4C 41 59 45 52 53 09 09 20 20 20 09 09 09 34 0D 0A 23 64 65 66 69 efine MAX_LAYERS○○ ○○○4♪◙#defi 00028EE0 6E 65 20 49 4E 53 54 5F 4E 41 4D 45 5F 53 49 5A 45 09 09 20 20 20 09 09 31 36 0D 0A 0C 74 79 70 ne INST_NAME_SIZE○○ ○○16♪◙♀typ 00028F00 65 64 65 66 20 73 74 72 75 63 74 0D 0A 7B 0D 0A 20 20 20 63 68 61 72 20 20 20 20 20 20 09 09 68 edef struct♪◙{♪◙ char ○○h 00028F20 65 61 64 65 72 5B 20 48 45 41 44 45 52 5F 53 49 5A 45 20 5D 3B 0D 0A 20 20 20 63 68 61 72 20 20 eader[ HEADER_SIZE ];♪◙ char 00028F40 20 20 20 20 09 09 67 72 61 76 69 73 5F 69 64 5B 20 49 44 5F 53 49 5A 45 20 5D 3B 20 20 20 2F 2A ○○gravis_id[ ID_SIZE ]; /* 00028F60 20 49 64 20 3D 20 22 49 44 23 30 30 30 30 30 32 22 20 2A 2F 0D 0A 20 20 20 63 68 61 72 20 20 20 Id = "ID#000002" */♪◙ char 00028F80 20 20 20 09 09 64 65 73 63 72 69 70 74 69 6F 6E 5B 20 44 45 53 43 5F 53 49 5A 45 20 5D 3B 0D 0A ○○description[ DESC_SIZE ];♪◙ 00028FA0 20 20 20 75 6E 73 69 67 6E 65 64 20 63 68 61 72 09 69 6E 73 74 72 75 6D 65 6E 74 73 3B 0D 0A 20 unsigned char○instruments;♪◙ 00028FC0 20 20 63 68 61 72 20 20 20 20 20 20 09 09 76 6F 69 63 65 73 3B 0D 0A 20 20 20 63 68 61 72 20 20 char ○○voices;♪◙ char 00028FE0 20 20 20 20 09 09 63 68 61 6E 6E 65 6C 73 3B 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 69 6E 74 ○○channels;♪◙ unsigned int 00029000 09 77 61 76 65 5F 66 6F 72 6D 73 3B 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 69 6E 74 09 6D 61 ○wave_forms;♪◙ unsigned int○ma 00029020 73 74 65 72 5F 76 6F 6C 75 6D 65 3B 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 09 64 ster_volume;♪◙ unsigned long○d 00029040 61 74 61 5F 73 69 7A 65 3B 0D 0A 20 20 20 63 68 61 72 09 09 09 72 65 73 65 72 76 65 64 5B 20 50 ata_size;♪◙ char○○○reserved[ P 00029060 41 54 43 48 5F 48 45 41 44 45 52 5F 52 45 53 45 52 56 45 44 5F 53 49 5A 45 20 5D 3B 0D 0A 7D 20 ATCH_HEADER_RESERVED_SIZE ];♪◙} 00029080 50 41 54 43 48 48 45 41 44 45 52 3B 0D 0A 0D 0A 74 79 70 65 64 65 66 20 73 74 72 75 63 74 0D 0A PATCHHEADER;♪◙♪◙typedef struct♪◙ 000290A0 7B 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 69 6E 74 09 69 6E 73 74 72 75 6D 65 6E 74 3B 0D 0A {♪◙ unsigned int○instrument;♪◙ 000290C0 20 20 20 63 68 61 72 09 09 09 69 6E 73 74 72 75 6D 65 6E 74 5F 6E 61 6D 65 5B 20 31 36 20 5D 3B char○○○instrument_name[ 16 ]; 000290E0 0D 0A 20 20 20 6C 6F 6E 67 09 09 09 69 6E 73 74 72 75 6D 65 6E 74 5F 73 69 7A 65 3B 0D 0A 20 20 ♪◙ long○○○instrument_size;♪◙ 00029100 20 63 68 61 72 09 09 09 6C 61 79 65 72 73 3B 0D 0A 20 20 20 63 68 61 72 09 09 09 72 65 73 65 72 char○○○layers;♪◙ char○○○reser 00029120 76 65 64 5B 20 52 45 53 45 52 56 45 44 5F 53 49 5A 45 20 5D 3B 0D 0A 7D 20 49 4E 53 54 52 55 4D ved[ RESERVED_SIZE ];♪◙} INSTRUM 00029140 45 4E 54 44 41 54 41 3B 0D 0A 0D 0A 74 79 70 65 64 65 66 20 73 74 72 75 63 74 0D 0A 7B 0D 0A 20 ENTDATA;♪◙♪◙typedef struct♪◙{♪◙ 00029160 20 20 63 68 61 72 09 09 09 6C 61 79 65 72 5F 64 75 70 6C 69 63 61 74 65 3B 0D 0A 20 20 20 63 68 char○○○layer_duplicate;♪◙ ch 00029180 61 72 09 09 09 6C 61 79 65 72 3B 0D 0A 20 20 20 6C 6F 6E 67 09 09 09 6C 61 79 65 72 5F 73 69 7A ar○○○layer;♪◙ long○○○layer_siz 000291A0 65 3B 0D 0A 20 20 20 63 68 61 72 09 09 09 73 61 6D 70 6C 65 73 3B 0D 0A 20 20 20 63 68 61 72 09 e;♪◙ char○○○samples;♪◙ char○ 000291C0 09 09 72 65 73 65 72 76 65 64 5B 20 4C 41 59 45 52 5F 52 45 53 45 52 56 45 44 5F 53 49 5A 45 20 ○○reserved[ LAYER_RESERVED_SIZE 000291E0 5D 3B 0D 0A 7D 20 4C 41 59 45 52 44 41 54 41 3B 0D 0A 0D 0A 0D 0A 0D 0A 2E 2E 2E 20 63 6F 6E 74 ];♪◙} LAYERDATA;♪◙♪◙♪◙♪◙... cont 00029200 69 6E 75 65 64 20 6F 6E 20 74 68 65 20 6E 65 78 74 20 70 61 67 65 20 2E 2E 2E 0D 0A 0D 0A 0D 0A inued on the next page ...♪◙♪◙♪◙ 00029220 0C 74 79 70 65 64 65 66 20 73 74 72 75 63 74 0D 0A 7B 0D 0A 20 20 20 63 68 61 72 09 09 09 77 61 ♀typedef struct♪◙{♪◙ char○○○wa 00029240 76 65 5F 6E 61 6D 65 5B 37 5D 3B 0D 0A 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 63 68 61 72 09 ve_name[7];♪◙♪◙ unsigned char○ 00029260 66 72 61 63 74 69 6F 6E 73 3B 0D 0A 20 20 20 6C 6F 6E 67 09 09 09 77 61 76 65 5F 73 69 7A 65 3B fractions;♪◙ long○○○wave_size; 00029280 0D 0A 20 20 20 6C 6F 6E 67 09 09 09 73 74 61 72 74 5F 6C 6F 6F 70 3B 0D 0A 20 20 20 6C 6F 6E 67 ♪◙ long○○○start_loop;♪◙ long 000292A0 09 09 09 65 6E 64 5F 6C 6F 6F 70 3B 0D 0A 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 69 6E 74 09 ○○○end_loop;♪◙♪◙ unsigned int○ 000292C0 73 61 6D 70 6C 65 5F 72 61 74 65 3B 0D 0A 20 20 20 6C 6F 6E 67 09 09 09 6C 6F 77 5F 66 72 65 71 sample_rate;♪◙ long○○○low_freq 000292E0 75 65 6E 63 79 3B 0D 0A 20 20 20 6C 6F 6E 67 09 09 09 68 69 67 68 5F 66 72 65 71 75 65 6E 63 79 uency;♪◙ long○○○high_frequency 00029300 3B 0D 0A 20 20 20 6C 6F 6E 67 09 09 09 72 6F 6F 74 5F 66 72 65 71 75 65 6E 63 79 3B 0D 0A 20 20 ;♪◙ long○○○root_frequency;♪◙ 00029320 20 69 6E 74 20 09 09 09 74 75 6E 65 3B 0D 0A 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 63 68 61 int ○○○tune;♪◙♪◙ unsigned cha 00029340 72 09 62 61 6C 61 6E 63 65 3B 0D 0A 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 63 68 61 72 09 65 r○balance;♪◙♪◙ unsigned char○e 00029360 6E 76 65 6C 6F 70 65 5F 72 61 74 65 5B 20 45 4E 56 45 4C 4F 50 45 53 20 5D 3B 0D 0A 20 20 20 75 nvelope_rate[ ENVELOPES ];♪◙ u 00029380 6E 73 69 67 6E 65 64 20 63 68 61 72 09 65 6E 76 65 6C 6F 70 65 5F 6F 66 66 73 65 74 5B 20 45 4E nsigned char○envelope_offset[ EN 000293A0 56 45 4C 4F 50 45 53 20 5D 3B 0D 0A 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 63 68 61 72 09 74 VELOPES ];♪◙♪◙ unsigned char○t 000293C0 72 65 6D 6F 6C 6F 5F 73 77 65 65 70 3B 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 63 68 61 72 09 remolo_sweep;♪◙ unsigned char○ 000293E0 74 72 65 6D 6F 6C 6F 5F 72 61 74 65 3B 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 63 68 61 72 09 tremolo_rate;♪◙ unsigned char○ 00029400 74 72 65 6D 6F 6C 6F 5F 64 65 70 74 68 3B 0D 0A 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 63 68 tremolo_depth;♪◙♪◙ unsigned ch 00029420 61 72 09 76 69 62 72 61 74 6F 5F 73 77 65 65 70 3B 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 63 ar○vibrato_sweep;♪◙ unsigned c 00029440 68 61 72 09 76 69 62 72 61 74 6F 5F 72 61 74 65 3B 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 63 har○vibrato_rate;♪◙ unsigned c 00029460 68 61 72 09 76 69 62 72 61 74 6F 5F 64 65 70 74 68 3B 0D 0A 0D 0A 20 20 20 2F 2A 20 62 69 74 20 har○vibrato_depth;♪◙♪◙ /* bit 00029480 30 20 3D 20 38 20 6F 72 20 31 36 20 62 69 74 20 77 61 76 65 20 64 61 74 61 2E 20 2A 2F 0D 0A 20 0 = 8 or 16 bit wave data. */♪◙ 000294A0 20 20 2F 2A 20 62 69 74 20 31 20 3D 20 53 69 67 6E 65 64 20 2D 20 55 6E 73 69 67 6E 65 64 20 64 /* bit 1 = Signed - Unsigned d 000294C0 61 74 61 2E 20 2A 2F 0D 0A 20 20 20 2F 2A 20 62 69 74 20 32 20 3D 20 6C 6F 6F 70 69 6E 67 20 65 ata. */♪◙ /* bit 2 = looping e 000294E0 6E 61 62 6C 65 64 2D 31 2E 20 2A 2F 0D 0A 20 20 20 2F 2A 20 62 69 74 20 33 20 3D 20 53 65 74 20 nabled-1. */♪◙ /* bit 3 = Set 00029500 69 73 20 62 69 64 69 72 65 63 74 69 6F 6E 61 6C 20 6C 6F 6F 70 69 6E 67 2E 20 2A 2F 0D 0A 20 20 is bidirectional looping. */♪◙ 00029520 20 2F 2A 20 62 69 74 20 34 20 3D 20 53 65 74 20 69 73 20 6C 6F 6F 70 69 6E 67 20 62 61 63 6B 77 /* bit 4 = Set is looping backw 00029540 61 72 64 2E 20 2A 2F 0D 0A 20 20 20 2F 2A 20 62 69 74 20 35 20 3D 20 54 75 72 6E 20 73 75 73 74 ard. */♪◙ /* bit 5 = Turn sust 00029560 61 69 6E 69 6E 67 20 6F 6E 2E 20 28 45 6E 76 2E 20 70 74 73 2E 20 33 29 2A 2F 0D 0A 20 20 20 2F aining on. (Env. pts. 3)*/♪◙ / 00029580 2A 20 62 69 74 20 36 20 3D 20 45 6E 61 62 6C 65 20 65 6E 76 65 6C 6F 70 65 73 20 2D 20 31 20 2A * bit 6 = Enable envelopes - 1 * 000295A0 2F 0D 0A 20 20 20 63 68 61 72 09 09 09 6D 6F 64 65 73 3B 0D 0A 0D 0A 20 20 20 69 6E 74 09 09 09 /♪◙ char○○○modes;♪◙♪◙ int○○○ 000295C0 73 63 61 6C 65 5F 66 72 65 71 75 65 6E 63 79 3B 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 69 6E scale_frequency;♪◙ unsigned in 000295E0 74 09 73 63 61 6C 65 5F 66 61 63 74 6F 72 3B 20 20 20 20 2F 2A 20 66 72 6F 6D 20 30 20 74 6F 20 t○scale_factor; /* from 0 to 00029600 32 30 34 38 20 6F 72 20 30 20 74 6F 20 32 20 2A 2F 0D 0A 0D 0A 20 20 20 63 68 61 72 09 09 09 72 2048 or 0 to 2 */♪◙♪◙ char○○○r 00029620 65 73 65 72 76 65 64 5B 20 50 41 54 43 48 5F 44 41 54 41 5F 52 45 53 45 52 56 45 44 5F 53 49 5A eserved[ PATCH_DATA_RESERVED_SIZ 00029640 45 20 5D 3B 0D 0A 7D 20 50 41 54 43 48 44 41 54 41 3B 0D 0A 0D 0A 0D 0A 0D 0A 2E 2E 2E 65 6E 64 E ];♪◙} PATCHDATA;♪◙♪◙♪◙♪◙...end 00029660 20 6F 66 20 74 68 65 20 43 20 73 65 63 74 69 6F 6E 2E 20 20 50 6C 65 61 73 65 20 73 65 65 20 74 of the C section. Please see t 00029680 68 65 20 6E 65 78 74 20 70 61 67 65 20 66 6F 72 20 74 68 65 20 50 41 53 43 41 4C 20 73 65 63 74 he next page for the PASCAL sect 000296A0 69 6F 6E 2E 2E 2E 0D 0A 0D 0A 0C 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 20 50 41 53 43 41 4C 3A 0D 0A ion...♪◙♪◙♀=========♪◙ PASCAL:♪◙ 000296C0 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 0D 0A 43 4F 4E 53 54 0D 0A 20 20 45 4E 56 45 4C 4F 50 45 53 20 =========♪◙♪◙CONST♪◙ ENVELOPES 000296E0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3D 20 36 3B 0D 0A 20 20 48 45 41 44 45 52 5F = 6;♪◙ HEADER_ 00029700 53 49 5A 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3D 20 31 32 3B 0D 0A 20 20 49 44 5F SIZE = 12;♪◙ ID_ 00029720 53 49 5A 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3D 20 31 30 3B 0D 0A 20 SIZE = 10;♪◙ 00029740 20 44 45 53 43 5F 53 49 5A 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3D 20 36 30 DESC_SIZE = 60 00029760 3B 0D 0A 20 20 52 45 53 45 52 56 45 44 5F 53 49 5A 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;♪◙ RESERVED_SIZE 00029780 3D 20 34 30 3B 0D 0A 20 20 50 41 54 43 48 5F 48 45 41 44 45 52 5F 52 45 53 45 52 56 45 44 5F 53 = 40;♪◙ PATCH_HEADER_RESERVED_S 000297A0 49 5A 45 20 3D 20 33 36 3B 0D 0A 20 20 4C 41 59 45 52 5F 52 45 53 45 52 56 45 44 5F 53 49 5A 45 IZE = 36;♪◙ LAYER_RESERVED_SIZE 000297C0 20 20 20 20 20 20 20 20 3D 20 34 30 3B 0D 0A 20 20 50 41 54 43 48 5F 44 41 54 41 5F 52 45 53 45 = 40;♪◙ PATCH_DATA_RESE 000297E0 52 56 45 44 5F 53 49 5A 45 20 20 20 3D 20 33 36 3B 0D 0A 20 20 47 46 31 5F 48 45 41 44 45 52 5F RVED_SIZE = 36;♪◙ GF1_HEADER_ 00029800 54 45 58 54 20 20 20 20 20 20 20 20 20 20 20 20 3A 20 41 52 52 41 59 5B 31 2E 2E 31 32 5D 20 4F TEXT : ARRAY[1..12] O 00029820 46 20 43 48 41 52 20 3D 20 27 47 46 31 50 41 54 43 48 31 31 30 27 3B 0D 0A 0D 0A 54 59 50 45 0D F CHAR = 'GF1PATCH110';♪◙♪◙TYPE♪ 00029840 0A 20 20 50 41 54 43 48 48 45 41 44 45 52 20 3D 20 52 45 43 4F 52 44 0D 0A 20 20 20 20 48 65 61 ◙ PATCHHEADER = RECORD♪◙ Hea 00029860 64 65 72 20 20 20 20 20 20 20 20 3A 20 41 52 52 41 59 5B 31 2E 2E 48 45 41 44 45 52 5F 53 49 5A der : ARRAY[1..HEADER_SIZ 00029880 45 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 20 20 20 20 47 72 61 76 69 73 5F 49 44 20 20 20 20 20 3A E] OF CHAR;♪◙ Gravis_ID : 000298A0 20 41 52 52 41 59 5B 31 2E 2E 49 44 5F 53 49 5A 45 5D 20 4F 46 20 43 48 41 52 3B 20 20 7B 20 49 ARRAY[1..ID_SIZE] OF CHAR; { I 000298C0 64 20 3D 20 27 49 44 23 30 30 30 30 30 32 27 20 7D 0D 0A 20 20 20 20 44 65 73 63 72 69 70 74 69 d = 'ID#000002' }♪◙ Descripti 000298E0 6F 6E 20 20 20 3A 20 41 52 52 41 59 5B 31 2E 2E 44 45 53 43 5F 53 49 5A 45 5D 20 4F 46 20 43 48 on : ARRAY[1..DESC_SIZE] OF CH 00029900 41 52 3B 0D 0A 20 20 20 20 49 6E 73 74 72 75 6D 65 6E 74 73 20 20 20 3A 20 53 48 4F 52 54 49 4E AR;♪◙ Instruments : SHORTIN 00029920 54 3B 0D 0A 20 20 20 20 56 6F 69 63 65 73 20 20 20 20 20 20 20 20 3A 20 53 48 4F 52 54 49 4E 54 T;♪◙ Voices : SHORTINT 00029940 3B 0D 0A 20 20 20 20 43 68 61 6E 6E 65 6C 73 20 20 20 20 20 20 3A 20 53 48 4F 52 54 49 4E 54 3B ;♪◙ Channels : SHORTINT; 00029960 0D 0A 20 20 20 20 57 61 76 65 5F 46 6F 72 6D 73 20 20 20 20 3A 20 57 4F 52 44 3B 0D 0A 20 20 20 ♪◙ Wave_Forms : WORD;♪◙ 00029980 20 4D 61 73 74 65 72 5F 56 6F 6C 75 6D 65 20 3A 20 57 4F 52 44 3B 0D 0A 20 20 20 20 44 61 74 61 Master_Volume : WORD;♪◙ Data 000299A0 5F 53 69 7A 65 20 20 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 20 20 20 20 52 65 73 65 72 76 _Size : LONGINT;♪◙ Reserv 000299C0 65 64 20 20 20 20 20 20 3A 20 41 52 52 41 59 5B 31 2E 2E 50 41 54 43 48 5F 48 45 41 44 45 52 5F ed : ARRAY[1..PATCH_HEADER_ 000299E0 52 45 53 45 52 56 45 44 5F 53 49 5A 45 5D 20 4F 46 20 42 59 54 45 3B 0D 0A 20 20 20 45 4E 44 3B RESERVED_SIZE] OF BYTE;♪◙ END; 00029A00 0D 0A 0D 0A 20 20 49 4E 53 54 52 55 4D 45 4E 54 44 41 54 41 20 3D 20 52 45 43 4F 52 44 0D 0A 20 ♪◙♪◙ INSTRUMENTDATA = RECORD♪◙ 00029A20 20 20 20 49 6E 73 74 72 75 6D 65 6E 74 20 20 20 20 20 20 3A 20 57 4F 52 44 3B 0D 0A 20 20 20 20 Instrument : WORD;♪◙ 00029A40 49 6E 73 74 72 75 6D 65 6E 74 5F 4E 61 6D 65 20 3A 20 41 52 52 41 59 5B 31 2E 2E 31 36 5D 20 4F Instrument_Name : ARRAY[1..16] O 00029A60 46 20 43 48 41 52 3B 0D 0A 20 20 20 20 49 6E 73 74 72 75 6D 65 6E 74 5F 53 69 7A 65 20 3A 20 4C F CHAR;♪◙ Instrument_Size : L 00029A80 4F 4E 47 49 4E 54 3B 0D 0A 20 20 20 20 4C 61 79 65 72 73 20 20 20 20 20 20 20 20 20 20 3A 20 53 ONGINT;♪◙ Layers : S 00029AA0 48 4F 52 54 49 4E 54 3B 0D 0A 20 20 20 20 52 65 73 65 72 76 65 64 20 20 20 20 20 20 20 20 3A 20 HORTINT;♪◙ Reserved : 00029AC0 41 52 52 41 59 5B 31 2E 2E 52 45 53 45 52 56 45 44 5F 53 49 5A 45 5D 20 4F 46 20 42 59 54 45 3B ARRAY[1..RESERVED_SIZE] OF BYTE; 00029AE0 0D 0A 20 20 20 45 4E 44 3B 0D 0A 0D 0A 20 20 4C 41 59 45 52 44 41 54 41 20 3D 20 52 45 43 4F 52 ♪◙ END;♪◙♪◙ LAYERDATA = RECOR 00029B00 44 0D 0A 20 20 20 20 4C 61 79 65 72 5F 44 75 70 6C 69 63 61 74 65 20 3A 20 53 48 4F 52 54 49 4E D♪◙ Layer_Duplicate : SHORTIN 00029B20 54 3B 0D 0A 20 20 20 20 4C 61 79 65 72 20 20 20 20 20 20 20 20 20 20 20 3A 20 53 48 4F 52 54 49 T;♪◙ Layer : SHORTI 00029B40 4E 54 3B 0D 0A 20 20 20 20 4C 61 79 65 72 5F 53 69 7A 65 20 20 20 20 20 20 3A 20 4C 4F 4E 47 49 NT;♪◙ Layer_Size : LONGI 00029B60 4E 54 3B 0D 0A 20 20 20 20 53 61 6D 70 6C 65 73 20 20 20 20 20 20 20 20 20 3A 20 53 48 4F 52 54 NT;♪◙ Samples : SHORT 00029B80 49 4E 54 3B 0D 0A 20 20 20 20 52 65 73 65 72 76 65 64 20 20 20 20 20 20 20 20 3A 20 41 52 52 41 INT;♪◙ Reserved : ARRA 00029BA0 59 5B 31 2E 2E 52 45 53 45 52 56 45 44 5F 53 49 5A 45 5D 20 4F 46 20 42 59 54 45 3B 0D 0A 20 20 Y[1..RESERVED_SIZE] OF BYTE;♪◙ 00029BC0 20 45 4E 44 3B 0D 0A 0D 0A 0D 0A 2E 2E 2E 63 6F 6E 74 69 6E 75 65 64 20 6F 6E 20 74 68 65 20 6E END;♪◙♪◙♪◙...continued on the n 00029BE0 65 78 74 20 70 61 67 65 2E 2E 2E 0D 0A 0D 0A 0C 20 20 50 41 54 43 48 44 41 54 41 20 3D 20 52 45 ext page...♪◙♪◙♀ PATCHDATA = RE 00029C00 43 4F 52 44 0D 0A 20 20 20 20 57 61 76 65 5F 4E 61 6D 65 20 20 20 20 20 20 20 3A 20 41 52 52 41 CORD♪◙ Wave_Name : ARRA 00029C20 59 5B 31 2E 2E 37 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 20 20 20 20 46 72 61 63 74 69 6F 6E 73 20 Y[1..7] OF CHAR;♪◙ Fractions 00029C40 20 20 20 20 20 20 3A 20 42 59 54 45 3B 0D 0A 20 20 20 20 57 61 76 65 5F 53 69 7A 65 20 20 20 20 : BYTE;♪◙ Wave_Size 00029C60 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 20 20 20 20 53 74 61 72 74 5F 4C 6F 6F 70 20 20 20 : LONGINT;♪◙ Start_Loop 00029C80 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 20 20 20 20 45 6E 64 5F 4C 6F 6F 70 20 20 20 20 20 : LONGINT;♪◙ End_Loop 00029CA0 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 20 20 20 20 53 61 6D 70 6C 65 5F 52 61 74 65 20 20 : LONGINT;♪◙ Sample_Rate 00029CC0 20 20 20 3A 20 57 4F 52 44 3B 0D 0A 20 20 20 20 4C 6F 77 5F 46 72 65 71 75 65 6E 63 79 20 20 20 : WORD;♪◙ Low_Frequency 00029CE0 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 20 20 20 20 48 69 67 68 5F 46 72 65 71 75 65 6E 63 79 20 20 : LONGINT;♪◙ High_Frequency 00029D00 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 20 20 20 20 52 6F 6F 74 5F 46 72 65 71 75 65 6E 63 79 20 20 : LONGINT;♪◙ Root_Frequency 00029D20 3A 20 4C 4F 4E 47 49 4E 54 3B 0D 0A 20 20 20 20 54 75 6E 65 20 20 20 20 20 20 20 20 20 20 20 20 : LONGINT;♪◙ Tune 00029D40 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 20 20 20 20 42 61 6C 61 6E 63 65 20 20 20 20 20 20 20 20 20 : INTEGER;♪◙ Balance 00029D60 3A 20 42 59 54 45 3B 0D 0A 20 20 20 20 45 6E 76 65 6C 6F 70 65 5F 52 61 74 65 20 20 20 3A 20 41 : BYTE;♪◙ Envelope_Rate : A 00029D80 52 52 41 59 5B 31 2E 2E 45 4E 56 45 4C 4F 50 45 53 5D 20 4F 46 20 42 59 54 45 3B 0D 0A 20 20 20 RRAY[1..ENVELOPES] OF BYTE;♪◙ 00029DA0 20 45 6E 76 65 6C 6F 70 65 5F 4F 66 66 73 65 74 20 3A 20 41 52 52 41 59 5B 31 2E 2E 45 4E 56 45 Envelope_Offset : ARRAY[1..ENVE 00029DC0 4C 4F 50 45 53 5D 20 4F 46 20 42 59 54 45 3B 0D 0A 20 20 20 20 54 72 65 6D 6F 6C 6F 5F 53 77 65 LOPES] OF BYTE;♪◙ Tremolo_Swe 00029DE0 65 70 20 20 20 3A 20 42 59 54 45 3B 0D 0A 20 20 20 20 54 72 65 6D 6F 6C 6F 5F 52 61 74 65 20 20 ep : BYTE;♪◙ Tremolo_Rate 00029E00 20 20 3A 20 42 59 54 45 3B 0D 0A 20 20 20 20 54 72 65 6D 6F 6C 6F 5F 44 65 70 74 68 20 20 20 3A : BYTE;♪◙ Tremolo_Depth : 00029E20 20 42 59 54 45 3B 0D 0A 20 20 20 20 56 69 62 72 61 74 6F 5F 53 77 65 65 70 20 20 20 3A 20 42 59 BYTE;♪◙ Vibrato_Sweep : BY 00029E40 54 45 3B 0D 0A 20 20 20 20 56 69 62 72 61 74 6F 5F 52 61 74 65 20 20 20 20 3A 20 42 59 54 45 3B TE;♪◙ Vibrato_Rate : BYTE; 00029E60 0D 0A 20 20 20 20 56 69 62 72 61 74 6F 5F 44 65 70 74 68 20 20 20 3A 20 42 59 54 45 3B 0D 0A 0D ♪◙ Vibrato_Depth : BYTE;♪◙♪ 00029E80 0A 20 20 20 20 7B 20 62 69 74 20 30 20 3D 20 38 20 6F 72 20 31 36 20 62 69 74 20 77 61 76 65 20 ◙ { bit 0 = 8 or 16 bit wave 00029EA0 64 61 74 61 2E 20 20 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7B 20 62 69 74 20 31 20 data. }♪◙ { bit 1 00029EC0 3D 20 53 69 67 6E 65 64 20 2D 20 55 6E 73 69 67 6E 65 64 20 64 61 74 61 2E 20 20 20 20 20 20 20 = Signed - Unsigned data. 00029EE0 20 20 20 20 7D 0D 0A 20 20 20 20 7B 20 62 69 74 20 32 20 3D 20 6C 6F 6F 70 69 6E 67 20 65 6E 61 }♪◙ { bit 2 = looping ena 00029F00 62 6C 65 64 2D 31 2E 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7B 20 bled-1. }♪◙ { 00029F20 62 69 74 20 33 20 3D 20 53 65 74 20 69 73 20 62 69 64 69 72 65 63 74 69 6F 6E 61 6C 20 6C 6F 6F bit 3 = Set is bidirectional loo 00029F40 70 69 6E 67 2E 20 20 20 20 20 7D 0D 0A 20 20 20 20 7B 20 62 69 74 20 34 20 3D 20 53 65 74 20 69 ping. }♪◙ { bit 4 = Set i 00029F60 73 20 6C 6F 6F 70 69 6E 67 20 62 61 63 6B 77 61 72 64 2E 20 20 20 20 20 20 20 20 20 20 7D 0D 0A s looping backward. }♪◙ 00029F80 20 20 20 20 7B 20 62 69 74 20 35 20 3D 20 54 75 72 6E 20 73 75 73 74 61 69 6E 69 6E 67 20 6F 6E { bit 5 = Turn sustaining on 00029FA0 2E 20 28 45 6E 76 2E 20 70 74 73 2E 20 33 29 20 7D 0D 0A 20 20 20 20 7B 20 62 69 74 20 36 20 3D . (Env. pts. 3) }♪◙ { bit 6 = 00029FC0 20 45 6E 61 62 6C 65 20 65 6E 76 65 6C 6F 70 65 73 20 2D 20 31 20 20 20 20 20 20 20 20 20 20 20 Enable envelopes - 1 00029FE0 20 20 20 7D 0D 0A 20 20 20 20 4D 6F 64 65 73 20 20 20 20 20 20 20 20 20 20 20 3A 20 53 48 4F 52 }♪◙ Modes : SHOR 0002A000 54 49 4E 54 3B 0D 0A 0D 0A 20 20 20 20 53 63 61 6C 65 5F 46 72 65 71 75 65 6E 63 79 20 3A 20 49 TINT;♪◙♪◙ Scale_Frequency : I 0002A020 4E 54 45 47 45 52 3B 0D 0A 20 20 20 20 53 63 61 6C 65 5F 46 61 63 74 6F 72 20 20 20 20 3A 20 57 NTEGER;♪◙ Scale_Factor : W 0002A040 4F 52 44 3B 20 7B 20 46 72 6F 6D 20 30 20 74 6F 20 32 30 34 38 20 6F 72 20 30 20 74 6F 20 32 20 ORD; { From 0 to 2048 or 0 to 2 0002A060 7D 0D 0A 20 20 20 20 52 65 73 65 72 76 65 64 20 20 20 20 20 20 20 20 3A 20 41 52 52 41 59 5B 31 }♪◙ Reserved : ARRAY[1 0002A080 2E 2E 50 41 54 43 48 5F 44 41 54 41 5F 52 45 53 45 52 56 45 44 5F 53 49 5A 45 5D 20 4F 46 20 42 ..PATCH_DATA_RESERVED_SIZE] OF B 0002A0A0 59 54 45 3B 0D 0A 20 20 20 45 4E 44 3B 0D 0A 0D 0A 0D 0A 46 69 6C 65 20 48 65 61 64 65 72 0D 0A YTE;♪◙ END;♪◙♪◙♪◙File Header♪◙ 0002A0C0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ________________________________ 0002A0E0 5F 0D 0A 0D 0A 27 48 65 61 64 65 72 27 0D 0A 09 54 68 65 20 68 65 61 64 65 72 20 66 69 65 6C 64 _♪◙♪◙'Header'♪◙○The header field 0002A100 20 73 68 6F 75 6C 64 20 63 6F 6E 74 61 69 6E 20 74 68 65 20 74 65 78 74 20 22 47 46 31 50 41 54 should contain the text "GF1PAT 0002A120 43 48 31 31 30 2E 22 20 20 54 68 65 20 66 69 72 73 74 20 38 20 62 79 74 65 73 20 77 69 6C 6C 20 CH110." The first 8 bytes will 0002A140 61 6C 77 61 79 73 20 62 65 20 47 46 31 50 41 54 43 48 2E 20 20 54 68 65 20 6E 65 78 74 20 74 68 always be GF1PATCH. The next th 0002A160 72 65 65 20 62 79 74 65 73 20 61 72 65 20 74 68 65 20 76 65 72 73 69 6F 6E 20 6E 75 6D 62 65 72 ree bytes are the version number 0002A180 20 6F 66 20 74 68 65 20 70 61 74 63 68 20 66 6F 72 6D 61 74 2E 20 20 41 73 20 66 69 65 6C 64 73 of the patch format. As fields 0002A1A0 20 61 72 65 20 61 64 64 65 64 20 74 6F 20 74 68 65 20 70 61 74 63 68 2C 20 74 68 65 20 6E 75 6D are added to the patch, the num 0002A1C0 62 65 72 20 77 69 6C 6C 20 62 65 20 69 6E 63 72 65 6D 65 6E 74 65 64 2E 20 20 41 6C 6C 20 6F 66 ber will be incremented. All of 0002A1E0 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 70 61 74 63 68 65 73 20 61 72 65 20 63 75 72 72 the UltraSound patches are curr 0002A200 65 6E 74 6C 79 20 61 74 20 76 65 72 73 69 6F 6E 20 31 31 30 2E 20 20 54 68 65 20 6F 6C 64 65 72 ently at version 110. The older 0002A220 20 31 30 30 20 70 61 74 63 68 65 73 20 61 72 65 20 6F 62 73 6F 6C 65 74 65 20 61 6E 64 20 73 68 100 patches are obsolete and sh 0002A240 6F 75 6C 64 20 6E 6F 20 6C 6F 6E 67 65 72 20 62 65 20 69 6E 20 75 73 65 2E 0D 0A 0D 0A 27 44 65 ould no longer be in use.♪◙♪◙'De 0002A260 73 63 72 69 70 74 69 6F 6E 27 0D 0A 09 54 68 69 73 20 64 65 73 63 72 69 70 74 69 6F 6E 20 66 69 scription'♪◙○This description fi 0002A280 65 6C 64 20 69 73 20 75 73 75 61 6C 6C 79 20 66 6F 72 20 63 6F 70 79 72 69 67 68 74 20 69 6E 66 eld is usually for copyright inf 0002A2A0 6F 72 6D 61 74 69 6F 6E 2E 0D 0A 0D 0A 27 49 6E 73 74 72 75 6D 65 6E 74 73 27 0D 0A 09 54 68 65 ormation.♪◙♪◙'Instruments'♪◙○The 0002A2C0 20 6E 75 6D 62 65 72 20 6F 66 20 69 6E 73 74 72 75 6D 65 6E 74 73 20 69 6E 20 74 68 65 20 70 61 number of instruments in the pa 0002A2E0 74 63 68 2E 20 20 41 6C 6C 20 6F 66 20 74 68 65 20 67 72 61 76 69 73 20 70 61 74 63 68 65 73 20 tch. All of the gravis patches 0002A300 63 6F 6E 74 61 69 6E 20 6F 6E 6C 79 20 6F 6E 65 20 69 6E 73 74 72 75 6D 65 6E 74 2E 0D 0A 0C 27 contain only one instrument.♪◙♀' 0002A320 56 6F 69 63 65 73 27 0D 0A 09 54 68 65 20 47 46 31 20 73 79 6E 74 68 20 63 61 6E 20 75 70 64 61 Voices'♪◙○The GF1 synth can upda 0002A340 74 65 20 31 34 20 76 6F 69 63 65 73 20 61 74 20 34 34 2E 31 4B 68 7A 2E 20 20 41 73 20 74 68 65 te 14 voices at 44.1Khz. As the 0002A360 20 6E 75 6D 62 65 72 20 6F 66 20 76 6F 69 63 65 73 20 69 6E 63 72 65 61 73 65 73 2C 20 74 68 65 number of voices increases, the 0002A380 20 61 63 74 75 61 6C 20 6F 75 74 70 75 74 20 72 61 74 65 20 6F 66 20 65 61 63 68 20 76 6F 69 63 actual output rate of each voic 0002A3A0 65 20 64 72 6F 70 73 2E 20 54 68 69 73 20 66 69 65 6C 64 20 73 68 6F 75 6C 64 20 63 6F 6E 74 61 e drops. This field should conta 0002A3C0 69 6E 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 76 6F 69 63 65 73 20 74 68 61 74 20 77 65 72 in the number of voices that wer 0002A3E0 65 20 75 73 65 64 20 77 68 65 6E 20 63 72 65 61 74 69 6E 67 20 74 68 65 20 70 61 74 63 68 2E 20 e used when creating the patch. 0002A400 54 68 69 73 20 66 69 65 6C 64 20 63 6F 75 6C 64 20 62 65 20 75 73 65 64 20 62 79 20 61 20 4D 49 This field could be used by a MI 0002A420 44 49 20 65 6E 67 69 6E 65 20 74 6F 20 74 72 79 20 61 6E 64 20 6D 61 6B 65 20 74 68 65 20 70 61 DI engine to try and make the pa 0002A440 74 63 68 20 73 6F 75 6E 64 20 74 68 65 20 73 61 6D 65 20 72 65 67 61 72 64 6C 65 73 73 20 6F 66 tch sound the same regardless of 0002A460 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 61 63 74 69 76 65 20 76 6F 69 63 65 73 2E 20 20 43 the number of active voices. C 0002A480 75 72 72 65 6E 74 6C 79 20 74 68 69 73 20 66 65 61 74 75 72 65 20 69 73 20 6E 6F 74 20 69 6D 70 urrently this feature is not imp 0002A4A0 6C 65 6D 65 6E 74 65 64 20 69 6E 20 74 68 65 20 67 72 61 76 69 73 20 4D 49 44 49 20 65 6E 67 69 lemented in the gravis MIDI engi 0002A4C0 6E 65 2E 0D 0A 0D 0A 27 43 68 61 6E 6E 65 6C 73 27 0D 0A 09 54 68 69 73 20 66 69 65 6C 64 20 69 ne.♪◙♪◙'Channels'♪◙○This field i 0002A4E0 73 20 75 6E 75 73 65 64 2E 20 20 4F 6E 6C 79 20 6D 6F 6E 6F 20 64 61 74 61 20 63 61 6E 20 62 65 s unused. Only mono data can be 0002A500 20 70 6C 61 79 65 64 20 6F 75 74 20 61 20 76 6F 69 63 65 20 77 69 74 68 20 74 68 65 20 47 46 31 played out a voice with the GF1 0002A520 2E 0D 0A 0D 0A 27 57 61 76 65 5F 46 6F 72 6D 73 27 0D 0A 09 54 68 65 20 74 6F 74 61 6C 20 6E 75 .♪◙♪◙'Wave_Forms'♪◙○The total nu 0002A540 6D 62 65 72 20 6F 66 20 77 61 76 65 66 6F 72 6D 73 20 69 6E 20 74 68 65 20 70 61 74 63 68 2E 20 mber of waveforms in the patch. 0002A560 20 54 68 69 73 20 66 69 65 6C 64 20 69 73 20 75 73 65 64 20 62 79 20 70 72 6F 67 72 61 6D 73 20 This field is used by programs 0002A580 77 68 69 63 68 20 6E 65 65 64 20 74 6F 20 70 72 65 61 6C 6C 6F 63 61 74 65 20 73 70 61 63 65 20 which need to preallocate space 0002A5A0 66 6F 72 20 77 61 76 65 20 66 6F 72 6D 20 68 65 61 64 65 72 73 20 62 65 66 6F 72 65 20 74 68 65 for wave form headers before the 0002A5C0 20 70 61 74 63 68 20 69 73 20 6C 6F 61 64 65 64 2E 0D 0A 0D 0A 27 4D 61 73 74 65 72 5F 56 6F 6C patch is loaded.♪◙♪◙'Master_Vol 0002A5E0 75 6D 65 27 0D 0A 09 54 68 69 73 20 66 69 65 6C 64 20 69 73 20 63 75 72 72 65 6E 74 6C 79 20 75 ume'♪◙○This field is currently u 0002A600 6E 75 73 65 64 2E 0D 0A 0D 0A 27 44 61 74 61 5F 53 69 7A 65 27 0D 0A 09 54 68 65 20 73 69 7A 65 nused.♪◙♪◙'Data_Size'♪◙○The size 0002A620 20 6F 66 20 74 68 65 20 70 61 74 63 68 20 64 61 74 61 20 61 66 74 65 72 20 69 74 20 69 73 20 6C of the patch data after it is l 0002A640 6F 61 64 65 64 20 69 6E 74 6F 20 47 46 31 20 64 72 61 6D 2E 20 20 54 68 69 73 20 6E 75 6D 62 65 oaded into GF1 dram. This numbe 0002A660 72 20 69 6E 63 6C 75 64 65 73 20 74 68 65 20 73 70 61 63 65 20 6E 65 65 64 65 64 20 74 6F 20 61 r includes the space needed to a 0002A680 6C 69 67 6E 20 65 61 63 68 20 6F 66 20 74 68 65 20 77 61 76 65 66 6F 72 6D 73 20 6F 6E 20 33 32 lign each of the waveforms on 32 0002A6A0 20 62 79 74 65 20 62 6F 75 6E 64 61 72 69 65 73 2E 20 20 49 66 20 79 6F 75 20 70 61 74 63 68 20 byte boundaries. If you patch 0002A6C0 6C 6F 61 64 65 72 20 6D 61 69 6E 74 61 69 6E 73 20 6C 69 6E 6B 65 64 20 6C 69 73 74 20 6F 66 20 loader maintains linked list of 0002A6E0 77 61 76 65 66 6F 72 6D 73 20 69 6E 20 64 72 61 6D 2C 20 61 6E 64 20 79 6F 75 20 6E 65 65 64 20 waveforms in dram, and you need 0002A700 74 6F 20 75 73 65 20 61 6E 20 65 78 74 72 61 20 33 32 20 62 79 74 65 73 20 70 65 72 20 77 61 76 to use an extra 32 bytes per wav 0002A720 65 66 6F 72 6D 2C 20 74 68 65 6E 20 79 6F 75 20 63 61 6E 20 75 73 65 20 74 68 65 20 77 61 76 65 eform, then you can use the wave 0002A740 5F 66 6F 72 6D 73 20 66 69 65 6C 64 20 74 6F 20 66 69 67 75 72 65 20 6F 75 74 20 68 6F 77 20 6D _forms field to figure out how m 0002A760 75 63 68 20 6D 65 6D 6F 72 79 20 79 6F 75 20 77 69 6C 6C 20 6E 65 65 64 20 74 6F 20 6C 6F 61 64 uch memory you will need to load 0002A780 20 74 68 65 20 70 61 74 63 68 2E 20 20 69 2E 65 2E 20 20 64 61 74 61 5F 73 69 7A 65 20 2B 20 28 the patch. i.e. data_size + ( 0002A7A0 33 32 20 2A 20 77 61 76 65 5F 66 6F 72 6D 73 29 2E 0D 0A 0D 0A 0D 0A 0D 0A 49 6E 73 74 72 75 6D 32 * wave_forms).♪◙♪◙♪◙♪◙Instrum 0002A7C0 65 6E 74 20 48 65 61 64 65 72 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ent Header♪◙____________________ 0002A7E0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 27 49 6E 73 74 72 75 6D 65 6E 74 27 0D 0A 09 _____________♪◙♪◙'Instrument'♪◙○ 0002A800 54 68 69 73 20 66 69 65 6C 64 20 69 73 20 63 75 72 72 65 6E 74 6C 79 20 75 6E 75 73 65 64 2E 0D This field is currently unused.♪ 0002A820 0A 0D 0A 27 49 6E 73 74 72 75 6D 65 6E 74 5F 4E 61 6D 65 27 0D 0A 09 54 68 69 73 20 66 69 65 6C ◙♪◙'Instrument_Name'♪◙○This fiel 0002A840 64 20 69 73 20 63 75 72 72 65 6E 74 6C 79 20 75 6E 75 73 65 64 2E 0D 0A 0D 0A 27 49 6E 73 74 72 d is currently unused.♪◙♪◙'Instr 0002A860 75 6D 65 6E 74 5F 53 69 7A 65 27 0D 0A 09 54 68 65 20 73 69 7A 65 20 6F 66 20 74 68 65 20 69 6E ument_Size'♪◙○The size of the in 0002A880 73 74 72 75 6D 65 6E 74 2E 20 20 54 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 62 79 74 65 73 20 74 strument. The number of bytes t 0002A8A0 6F 20 73 6B 69 70 20 69 6E 20 6F 72 64 65 72 20 74 6F 20 72 65 61 64 20 74 68 65 20 6E 65 78 74 o skip in order to read the next 0002A8C0 20 69 6E 73 74 72 75 6D 65 6E 74 20 68 65 61 64 65 72 2E 0D 0A 0D 0A 27 4C 61 79 65 72 73 27 0D instrument header.♪◙♪◙'Layers'♪ 0002A8E0 0A 09 54 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 6C 61 79 65 72 73 20 69 6E 20 74 68 69 73 20 69 ◙○The number of layers in this i 0002A900 6E 73 74 72 75 6D 65 6E 74 2E 20 20 4D 75 6C 74 69 70 6C 65 20 6C 61 79 65 72 73 20 61 72 65 20 nstrument. Multiple layers are 0002A920 75 73 75 61 6C 6C 79 20 75 73 65 64 20 69 6E 20 70 61 74 63 68 65 73 20 77 68 65 72 65 20 6D 6F usually used in patches where mo 0002A940 72 65 20 74 68 61 6E 20 6F 6E 65 20 73 6F 75 6E 64 20 69 73 20 72 65 71 75 69 72 65 64 20 77 69 re than one sound is required wi 0002A960 74 68 20 61 20 73 69 6E 67 6C 65 20 4D 49 44 49 20 65 76 65 6E 74 20 28 6E 6F 74 65 20 6F 6E 29 th a single MIDI event (note on) 0002A980 2E 20 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 61 20 70 69 61 6E 6F 20 77 6F 75 6C 64 20 63 6F . For example, a piano would co 0002A9A0 75 6C 64 20 68 61 76 65 20 74 77 6F 20 6C 61 79 65 72 73 2E 20 54 68 65 20 66 69 72 73 74 20 77 uld have two layers. The first w 0002A9C0 6F 75 6C 64 20 62 65 20 74 68 65 20 61 63 74 75 61 6C 20 74 6F 6E 65 20 66 72 6F 6D 20 74 68 65 ould be the actual tone from the 0002A9E0 20 68 61 6D 6D 65 72 20 68 69 74 74 69 6E 67 20 74 68 65 20 73 74 72 69 6E 67 73 2C 20 61 6E 64 hammer hitting the strings, and 0002AA00 20 74 68 65 20 73 65 63 6F 6E 64 20 77 6F 75 6C 64 20 62 65 20 74 68 65 20 28 74 68 75 6E 6B 29 the second would be the (thunk) 0002AA20 20 6F 66 20 74 68 65 20 6B 65 79 20 62 65 69 6E 67 20 73 74 72 75 63 6B 20 61 6E 64 20 61 6C 6C of the key being struck and all 0002AA40 20 6F 66 20 74 68 65 20 6D 65 63 68 61 6E 69 73 6D 73 20 6D 6F 76 69 6E 67 20 69 6E 73 69 64 65 of the mechanisms moving inside 0002AA60 20 74 68 65 20 70 69 61 6E 6F 2E 20 20 54 68 65 20 6D 65 63 68 61 6E 69 73 6D 73 20 77 6F 75 6C the piano. The mechanisms woul 0002AA80 64 20 70 72 6F 62 61 62 6C 79 20 62 65 20 66 72 65 71 75 65 6E 63 79 20 69 6E 64 65 70 65 6E 64 d probably be frequency independ 0002AAA0 61 6E 74 2C 20 61 6E 64 20 61 6C 73 6F 20 69 6E 64 65 70 65 6E 64 61 6E 74 20 6F 66 20 74 68 65 ant, and also independant of the 0002AAC0 20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 74 6F 6E 65 2E 0D 0A 0C 4C 61 79 65 72 20 48 65 61 length of the tone.♪◙♀Layer Hea 0002AAE0 64 65 72 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D der♪◙__________________________♪ 0002AB00 0A 0D 0A 27 4C 61 79 65 72 5F 44 75 70 6C 69 63 61 74 65 27 0D 0A 09 43 75 72 72 65 6E 74 6C 79 ◙♪◙'Layer_Duplicate'♪◙○Currently 0002AB20 20 75 6E 75 73 65 64 2E 20 20 49 66 20 74 68 65 20 6C 61 79 65 72 20 64 75 70 6C 69 63 61 74 65 unused. If the layer duplicate 0002AB40 20 20 69 73 20 6E 6F 6E 7A 65 72 6F 2C 20 74 68 65 6E 20 74 68 69 73 20 6C 61 79 65 72 20 73 68 is nonzero, then this layer sh 0002AB60 6F 75 6C 64 20 75 73 65 20 74 68 65 20 64 61 74 61 20 66 72 6F 6D 20 74 68 65 20 70 72 65 76 69 ould use the data from the previ 0002AB80 6F 75 73 20 6C 61 79 65 72 2E 20 4F 6E 6C 79 20 74 68 65 20 68 65 61 64 65 72 73 20 77 69 6C 6C ous layer. Only the headers will 0002ABA0 20 66 6F 6C 6C 6F 77 2E 0D 0A 0D 0A 27 4C 61 79 65 72 27 0D 0A 09 54 68 65 20 63 75 72 72 65 6E follow.♪◙♪◙'Layer'♪◙○The curren 0002ABC0 74 20 6C 61 79 65 72 20 6E 75 6D 62 65 72 20 66 6F 72 20 74 68 69 73 20 69 6E 73 74 72 75 6D 65 t layer number for this instrume 0002ABE0 6E 74 0D 0A 0D 0A 27 4C 61 79 65 72 5F 53 69 7A 65 27 0D 0A 09 54 68 65 20 73 69 7A 65 20 6F 66 nt♪◙♪◙'Layer_Size'♪◙○The size of 0002AC00 20 74 68 69 73 20 6C 61 79 65 72 2E 20 20 43 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 73 65 65 this layer. Can be used to see 0002AC20 6B 20 70 61 73 74 20 74 68 69 73 20 6C 61 79 65 72 20 69 6E 20 74 68 65 20 66 69 6C 65 2E 0D 0A k past this layer in the file.♪◙ 0002AC40 0D 0A 27 53 61 6D 70 6C 65 73 27 0D 0A 09 54 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 77 61 76 65 ♪◙'Samples'♪◙○The number of wave 0002AC60 66 6F 72 6D 73 20 69 6E 20 74 68 69 73 20 6C 61 79 65 72 2E 20 20 54 68 69 73 20 66 69 65 6C 64 forms in this layer. This field 0002AC80 20 69 73 20 69 67 6E 6F 72 65 64 20 69 66 20 6C 61 79 65 72 5F 64 75 70 6C 69 63 61 74 65 20 69 is ignored if layer_duplicate i 0002ACA0 73 20 74 72 75 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 57 61 76 65 20 48 65 61 64 65 72 0D 0A 5F 5F 5F 5F s true.♪◙♪◙♪◙♪◙Wave Header♪◙____ 0002ACC0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D _____________________________♪◙♪ 0002ACE0 0A 27 57 61 76 65 5F 4E 61 6D 65 27 0D 0A 09 54 68 69 73 20 66 69 65 6C 64 20 69 73 20 63 75 72 ◙'Wave_Name'♪◙○This field is cur 0002AD00 72 65 6E 74 6C 79 20 75 6E 75 73 65 64 0D 0A 0D 0A 27 46 72 61 63 74 69 6F 6E 73 27 0D 0A 09 54 rently unused♪◙♪◙'Fractions'♪◙○T 0002AD20 68 65 20 73 74 61 72 74 5F 6C 6F 6F 70 20 61 6E 64 20 65 6E 64 5F 6C 6F 6F 70 20 61 72 65 20 74 he start_loop and end_loop are t 0002AD40 68 65 20 69 6E 74 65 67 65 72 20 70 6F 72 74 69 6F 6E 73 20 6F 66 20 74 68 65 20 77 61 76 65 74 he integer portions of the wavet 0002AD60 61 62 6C 65 20 61 64 64 72 65 73 73 2E 20 20 54 68 65 20 47 46 31 20 63 61 6E 20 69 6E 74 65 72 able address. The GF1 can inter 0002AD80 70 6F 6C 61 74 65 20 62 65 74 77 65 65 6E 20 73 61 6D 70 6C 65 20 70 6F 69 6E 74 73 20 61 6E 64 polate between sample points and 0002ADA0 20 74 68 65 72 65 66 6F 72 65 20 6D 65 6F 72 65 20 72 65 73 6F 6C 75 74 69 6F 6E 20 74 68 61 6E therefore meore resolution than 0002ADC0 20 6A 75 73 74 20 74 68 65 20 69 6E 74 65 67 65 72 20 61 64 64 72 65 73 73 20 69 73 20 6E 65 65 just the integer address is nee 0002ADE0 64 65 64 2E 20 20 54 68 65 20 6D 6F 73 74 20 73 69 67 6E 69 66 69 63 61 6E 74 20 66 6F 75 72 20 ded. The most significant four 0002AE00 62 69 74 73 20 61 72 65 20 74 68 65 20 66 72 61 63 74 69 6F 6E 61 6C 20 61 64 64 72 65 73 73 20 bits are the fractional address 0002AE20 66 6F 72 20 74 68 65 20 73 74 61 72 74 5F 6C 6F 6F 70 2C 20 61 6E 64 20 74 68 65 20 6C 65 61 73 for the start_loop, and the leas 0002AE40 74 20 73 69 67 6E 69 66 69 63 61 6E 74 20 66 6F 75 72 20 62 69 74 73 20 61 72 65 20 74 68 65 20 t significant four bits are the 0002AE60 66 72 61 63 74 69 6F 6E 61 6C 20 61 64 64 72 65 73 73 20 66 6F 72 20 74 68 65 20 65 6E 64 5F 6C fractional address for the end_l 0002AE80 6F 6F 70 2E 0D 0A 0D 0A 27 57 61 76 65 5F 53 69 7A 65 27 0D 0A 09 54 68 65 20 6E 75 6D 62 65 72 oop.♪◙♪◙'Wave_Size'♪◙○The number 0002AEA0 20 6F 66 20 62 79 74 65 73 20 6F 66 20 77 61 76 65 20 74 61 62 6C 65 20 64 61 74 61 20 74 68 61 of bytes of wave table data tha 0002AEC0 74 20 66 6F 6C 6C 6F 77 73 20 2D 2D 20 6E 6F 74 20 23 20 6F 66 20 73 61 6D 70 6C 65 73 2E 0D 0A t follows -- not # of samples.♪◙ 0002AEE0 0D 0A 27 53 74 61 72 74 5F 4C 6F 6F 70 27 0D 0A 09 54 68 65 20 69 6E 74 65 67 65 72 20 70 6F 72 ♪◙'Start_Loop'♪◙○The integer por 0002AF00 74 69 6F 6E 20 6F 66 20 74 68 65 20 73 74 61 72 74 69 6E 67 20 6C 6F 6F 70 20 61 64 64 72 65 73 tion of the starting loop addres 0002AF20 73 20 72 65 6C 61 74 69 76 65 20 74 6F 20 74 68 65 20 62 65 67 69 6E 6E 69 6E 67 20 6F 66 20 74 s relative to the beginning of t 0002AF40 68 65 20 77 61 76 65 2E 20 20 54 68 69 73 20 61 64 64 72 65 73 73 20 69 73 20 74 68 65 20 72 65 he wave. This address is the re 0002AF60 6C 61 74 69 76 65 20 6E 75 6D 62 65 72 20 6F 66 20 62 79 74 65 73 2C 20 61 6E 64 20 6E 6F 74 20 lative number of bytes, and not 0002AF80 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 73 61 6D 70 6C 65 73 2E 0D 0A 0D 0A 27 45 6E 64 5F 4C the number of samples.♪◙♪◙'End_L 0002AFA0 6F 6F 70 27 0D 0A 09 54 68 65 20 69 6E 74 65 67 65 72 20 70 6F 72 74 69 6F 6E 20 6F 66 20 74 68 oop'♪◙○The integer portion of th 0002AFC0 65 20 65 6E 64 69 6E 67 20 6C 6F 6F 70 20 61 64 64 72 65 73 73 20 72 65 6C 61 74 69 76 65 20 74 e ending loop address relative t 0002AFE0 6F 20 74 68 65 20 62 65 67 69 6E 6E 69 6E 67 20 6F 66 20 74 68 65 20 77 61 76 65 2E 20 20 54 68 o the beginning of the wave. Th 0002B000 69 73 20 61 64 64 72 65 73 73 20 69 73 20 74 68 65 20 72 65 6C 61 74 69 76 65 20 6E 75 6D 62 65 is address is the relative numbe 0002B020 72 20 6F 66 20 62 79 74 65 73 2C 20 61 6E 64 20 6E 6F 74 20 74 68 65 20 6E 75 6D 62 65 72 20 6F r of bytes, and not the number o 0002B040 66 20 73 61 6D 70 6C 65 73 2E 0D 0A 0D 0A 27 53 61 6D 70 6C 65 5F 52 61 74 65 27 0D 0A 09 54 68 f samples.♪◙♪◙'Sample_Rate'♪◙○Th 0002B060 69 73 20 69 73 20 74 68 65 20 73 61 6D 70 6C 65 20 72 61 74 65 20 6F 66 20 74 68 65 20 72 65 63 is is the sample rate of the rec 0002B080 6F 72 64 65 64 20 64 61 74 61 2E 20 20 54 68 69 73 20 6E 75 6D 62 65 72 20 69 73 20 6E 6F 74 20 orded data. This number is not 0002B0A0 72 65 6C 61 74 65 64 20 74 6F 20 74 68 65 20 61 63 74 75 61 6C 20 70 69 74 63 68 20 6F 66 20 74 related to the actual pitch of t 0002B0C0 68 65 20 72 65 63 6F 72 64 65 64 20 74 6F 6E 65 2E 0D 0A 0C 27 4C 6F 77 5F 46 72 65 71 75 65 6E he recorded tone.♪◙♀'Low_Frequen 0002B0E0 63 79 27 0D 0A 09 45 61 63 68 20 77 61 76 65 20 63 6F 76 65 72 73 20 61 20 73 70 65 63 69 66 69 cy'♪◙○Each wave covers a specifi 0002B100 63 20 66 72 65 71 75 65 6E 63 79 20 72 61 6E 67 65 2E 20 20 54 68 69 73 20 69 73 20 74 68 65 20 c frequency range. This is the 0002B120 6C 6F 77 65 73 74 20 66 72 65 71 75 65 6E 63 79 20 74 68 61 74 20 74 68 69 73 20 77 61 76 65 20 lowest frequency that this wave 0002B140 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 70 6C 61 79 2E 20 20 54 68 69 73 20 66 69 65 6C 64 can be used to play. This field 0002B160 20 69 73 20 73 63 61 6C 65 64 20 62 65 20 31 30 30 30 20 66 6F 72 20 61 63 63 75 72 61 63 79 2E is scaled be 1000 for accuracy. 0002B180 0D 0A 0D 0A 27 48 69 67 68 5F 46 72 65 71 75 65 6E 63 79 27 0D 0A 09 45 61 63 68 20 77 61 76 65 ♪◙♪◙'High_Frequency'♪◙○Each wave 0002B1A0 20 63 6F 76 65 72 73 20 61 20 73 70 65 63 69 66 69 63 20 66 72 65 71 75 65 6E 63 79 20 72 61 6E covers a specific frequency ran 0002B1C0 67 65 2E 20 20 54 68 69 73 20 69 73 20 74 68 65 20 68 69 67 68 65 73 74 20 66 72 65 71 75 65 6E ge. This is the highest frequen 0002B1E0 63 79 20 74 68 61 74 20 74 68 69 73 20 77 61 76 65 20 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F cy that this wave can be used to 0002B200 20 70 6C 61 79 2E 20 20 54 68 69 73 20 66 69 65 6C 64 20 69 73 20 73 63 61 6C 65 64 20 62 79 20 play. This field is scaled by 0002B220 31 30 30 30 20 66 6F 72 20 61 63 63 75 72 61 63 79 2E 20 20 49 66 20 74 68 65 72 65 20 69 73 20 1000 for accuracy. If there is 0002B240 61 6E 6F 74 68 65 72 20 77 61 76 65 20 61 64 6A 61 63 65 6E 74 20 74 6F 20 74 68 69 73 20 6F 6E another wave adjacent to this on 0002B260 65 20 61 6E 64 20 69 74 73 20 72 61 6E 67 65 20 6F 76 65 72 6C 61 70 73 20 74 68 69 73 20 72 61 e and its range overlaps this ra 0002B280 6E 67 65 2C 20 74 68 65 6E 20 74 68 65 20 6E 65 78 74 20 77 61 76 65 66 6F 72 6D 20 77 69 6C 6C nge, then the next waveform will 0002B2A0 20 61 6C 77 61 79 73 20 62 65 20 63 68 6F 73 65 6E 2E 0D 0A 0D 0A 27 52 6F 6F 74 5F 46 72 65 71 always be chosen.♪◙♪◙'Root_Freq 0002B2C0 75 65 6E 63 79 27 0D 0A 09 49 66 20 74 68 69 73 20 77 61 76 65 20 69 73 20 70 6C 61 79 65 64 20 uency'♪◙○If this wave is played 0002B2E0 62 61 63 6B 20 61 74 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 73 61 6D 70 6C 65 5F 72 61 74 65 back at the original sample_rate 0002B300 2C 20 74 68 65 6E 20 74 68 69 73 20 6E 75 6D 62 65 72 20 73 68 6F 75 6C 64 20 62 65 20 74 68 65 , then this number should be the 0002B320 20 70 69 74 63 68 20 6F 66 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 74 6F 6E 65 2E 20 20 54 68 pitch of the original tone. Th 0002B340 69 73 20 66 69 65 6C 64 20 69 73 20 6D 6F 64 69 66 69 65 64 20 74 6F 20 74 75 6E 65 20 74 68 65 is field is modified to tune the 0002B360 20 77 61 76 65 20 74 6F 20 61 20 70 61 72 74 69 63 75 6C 61 72 20 70 69 74 63 68 2E 20 20 54 68 wave to a particular pitch. Th 0002B380 69 73 20 66 69 65 6C 64 20 69 73 20 73 63 61 6C 65 64 20 62 79 20 31 30 30 30 20 66 6F 72 20 61 is field is scaled by 1000 for a 0002B3A0 63 63 75 72 61 63 79 2E 0D 0A 0D 0A 27 54 75 6E 65 27 0D 0A 09 54 68 69 73 20 66 69 65 6C 64 20 ccuracy.♪◙♪◙'Tune'♪◙○This field 0002B3C0 69 73 20 75 6E 75 73 65 64 2E 20 20 54 75 6E 69 6E 67 20 69 73 20 61 63 63 6F 6D 70 6C 69 73 68 is unused. Tuning is accomplish 0002B3E0 65 64 20 62 79 20 6D 6F 64 69 66 79 69 6E 67 20 74 68 65 20 72 6F 6F 74 20 66 72 65 71 75 65 6E ed by modifying the root frequen 0002B400 63 79 2E 0D 0A 0D 0A 27 42 61 6C 61 6E 63 65 27 0D 0A 09 30 20 69 73 20 31 30 30 25 20 74 6F 20 cy.♪◙♪◙'Balance'♪◙○0 is 100% to 0002B420 74 68 65 20 72 69 67 68 74 2C 20 61 6E 64 20 31 35 20 69 73 20 31 30 30 25 20 74 6F 20 74 68 65 the right, and 15 is 100% to the 0002B440 20 6C 65 66 74 2E 20 20 41 73 20 74 68 65 20 62 61 6C 61 6E 63 65 20 69 73 20 73 68 69 66 74 65 left. As the balance is shifte 0002B460 64 20 66 72 6F 6D 20 6C 65 66 74 20 74 6F 20 72 69 67 68 74 2C 20 74 68 65 20 74 6F 74 61 6C 20 d from left to right, the total 0002B480 6F 75 74 70 75 74 20 70 6F 77 65 72 20 6F 66 20 62 6F 74 68 20 63 68 61 6E 6E 65 6C 73 20 69 73 output power of both channels is 0002B4A0 20 63 6F 6E 73 74 61 6E 74 2E 0D 0A 0D 0A 27 45 6E 76 65 6C 6F 70 65 5F 52 61 74 65 27 0D 0A 09 constant.♪◙♪◙'Envelope_Rate'♪◙○ 0002B4C0 41 6E 20 61 72 72 61 79 20 6F 66 20 36 20 72 61 74 65 73 20 74 6F 20 69 6D 70 6C 65 6D 65 6E 74 An array of 6 rates to implement 0002B4E0 20 61 20 36 2D 70 6F 69 6E 74 20 65 6E 76 65 6C 6F 70 65 2E 20 54 68 65 20 66 69 72 73 74 20 74 a 6-point envelope. The first t 0002B500 68 72 65 65 20 72 61 74 65 73 20 63 61 6E 20 62 65 20 75 73 65 64 20 66 6F 72 20 61 74 74 61 63 hree rates can be used for attac 0002B520 6B 20 61 6E 64 20 64 65 63 61 79 2E 20 20 49 66 20 74 68 65 20 73 75 73 74 61 69 6E 20 66 6C 61 k and decay. If the sustain fla 0002B540 67 20 69 73 20 73 65 74 2C 20 74 68 61 6E 20 74 68 65 20 74 68 69 72 64 20 65 6E 76 65 6C 6F 70 g is set, than the third envelop 0002B560 65 20 70 6F 69 6E 74 20 77 69 6C 6C 20 62 65 20 74 68 65 20 73 75 73 74 61 69 6E 20 70 6F 69 6E e point will be the sustain poin 0002B580 74 2E 20 54 68 65 20 6C 61 73 74 20 74 68 72 65 65 20 65 6E 76 65 6C 6F 70 65 20 70 6F 69 6E 74 t. The last three envelope point 0002B5A0 73 20 61 72 65 20 66 6F 72 20 74 68 65 20 72 65 6C 65 61 73 65 2C 20 61 6E 64 20 61 6E 20 6F 70 s are for the release, and an op 0002B5C0 74 69 6F 6E 61 6C 20 22 65 63 68 6F 22 20 65 66 66 65 63 74 2E 20 20 49 66 20 74 68 65 20 6C 61 tional "echo" effect. If the la 0002B5E0 73 74 20 65 6E 76 65 6C 6F 70 65 20 70 6F 69 6E 74 20 69 73 20 6C 65 66 74 20 61 74 20 61 6E 20 st envelope point is left at an 0002B600 61 75 64 69 62 6C 65 20 6C 65 76 65 6C 2C 20 74 68 65 6E 20 61 20 73 61 6D 70 6C 65 64 20 72 65 audible level, then a sampled re 0002B620 6C 65 61 73 65 20 63 61 6E 20 68 65 61 72 64 20 61 66 74 65 72 20 74 68 65 20 6C 61 73 74 20 65 lease can heard after the last e 0002B640 6E 76 65 6C 6F 70 65 20 70 6F 69 6E 74 2E 20 54 68 65 20 72 61 74 65 20 76 61 6C 75 65 73 20 61 nvelope point. The rate values a 0002B660 72 65 20 73 65 6E 74 20 64 69 72 65 63 74 6C 79 20 74 6F 20 74 68 65 20 47 46 31 20 68 61 72 64 re sent directly to the GF1 hard 0002B680 77 61 72 65 2C 20 61 6E 64 20 61 72 65 20 64 65 73 63 72 69 62 65 64 20 69 6E 20 74 68 65 20 76 ware, and are described in the v 0002B6A0 6F 6C 75 6D 65 20 72 61 6D 70 69 6E 67 20 73 65 63 74 69 6F 6E 2E 0D 0A 0D 0A 27 45 6E 76 65 6C olume ramping section.♪◙♪◙'Envel 0002B6C0 6F 70 65 5F 4F 66 66 73 65 74 27 0D 0A 09 41 6E 20 61 72 72 61 79 20 6F 66 20 36 20 6F 66 66 73 ope_Offset'♪◙○An array of 6 offs 0002B6E0 65 74 73 20 74 6F 20 69 6D 70 6C 65 6D 65 6E 74 20 61 20 36 2D 70 6F 69 6E 74 20 65 6E 76 65 6C ets to implement a 6-point envel 0002B700 6F 70 65 2E 20 54 68 65 20 66 69 72 73 74 20 74 68 72 65 65 20 6F 66 66 73 65 74 73 20 63 61 6E ope. The first three offsets can 0002B720 20 62 65 20 75 73 65 64 20 66 6F 72 20 61 74 74 61 63 6B 20 61 6E 64 20 64 65 63 61 79 2E 20 20 be used for attack and decay. 0002B740 49 66 20 74 68 65 20 73 75 73 74 61 69 6E 20 66 6C 61 67 20 69 73 20 73 65 74 2C 20 74 68 61 6E If the sustain flag is set, than 0002B760 20 74 68 65 20 74 68 69 72 64 20 65 6E 76 65 6C 6F 70 65 20 70 6F 69 6E 74 20 77 69 6C 6C 20 62 the third envelope point will b 0002B780 65 20 74 68 65 20 73 75 73 74 61 69 6E 20 70 6F 69 6E 74 2E 20 20 54 68 65 20 6C 61 73 74 20 74 e the sustain point. The last t 0002B7A0 68 72 65 65 20 65 6E 76 65 6C 6F 70 65 20 70 6F 69 6E 74 73 20 61 72 65 20 66 6F 72 20 74 68 65 hree envelope points are for the 0002B7C0 20 72 65 6C 65 61 73 65 2C 20 61 6E 64 20 61 6E 20 6F 70 74 69 6F 6E 61 6C 20 22 65 63 68 6F 22 release, and an optional "echo" 0002B7E0 20 65 66 66 65 63 74 2E 20 20 49 66 20 74 68 65 20 6C 61 73 74 20 65 6E 76 65 6C 6F 70 65 20 70 effect. If the last envelope p 0002B800 6F 69 6E 74 20 69 73 20 6C 65 66 74 20 61 74 20 61 6E 20 61 75 64 69 62 6C 65 20 6C 65 76 65 6C oint is left at an audible level 0002B820 2C 20 74 68 65 6E 20 61 20 73 61 6D 70 6C 65 64 20 72 65 6C 65 61 73 65 20 63 61 6E 20 68 65 61 , then a sampled release can hea 0002B840 72 64 20 61 66 74 65 72 20 74 68 65 20 6C 61 73 74 20 65 6E 76 65 6C 6F 70 65 20 70 6F 69 6E 74 rd after the last envelope point 0002B860 2E 20 20 54 68 65 20 6F 66 66 73 65 74 20 76 61 6C 75 65 73 20 61 72 65 20 73 65 6E 74 20 64 69 . The offset values are sent di 0002B880 72 65 63 74 6C 79 20 74 6F 20 74 68 65 20 47 46 31 20 68 61 72 64 77 61 72 65 2C 20 61 6E 64 20 rectly to the GF1 hardware, and 0002B8A0 61 72 65 20 64 65 73 63 72 69 62 65 64 20 69 6E 20 74 68 65 20 76 6F 6C 75 6D 65 20 72 61 6D 70 are described in the volume ramp 0002B8C0 69 6E 67 20 73 65 63 74 69 6F 6E 2E 0D 0A 0D 0A 27 54 72 65 6D 6F 6C 6F 5F 53 77 65 65 70 27 0D ing section.♪◙♪◙'Tremolo_Sweep'♪ 0002B8E0 0A 09 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 2E 20 20 54 72 65 6D 6F 6C 6F 20 73 74 61 72 ◙○Not implemented. Tremolo star 0002B900 74 73 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 77 68 65 6E 20 74 68 65 20 6E 6F 74 65 20 73 ts automatically when the note s 0002B920 75 73 74 61 69 6E 73 2E 20 54 68 69 73 20 77 69 6C 6C 20 62 65 20 63 68 61 6E 67 65 64 20 69 6E ustains. This will be changed in 0002B940 20 66 75 74 75 72 65 20 73 6F 66 74 77 61 72 65 20 74 6F 20 67 72 61 64 75 61 6C 6C 79 20 73 77 future software to gradually sw 0002B960 65 65 70 20 69 6E 20 74 68 65 20 74 72 65 6D 6F 6C 6F 20 64 65 70 74 68 20 66 72 6F 6D 20 30 20 eep in the tremolo depth from 0 0002B980 61 74 20 74 68 65 20 72 61 74 65 20 6F 66 20 74 72 65 6D 6F 6C 6F 5F 73 77 65 65 70 20 2F 20 34 at the rate of tremolo_sweep / 4 0002B9A0 35 20 73 65 63 6F 6E 64 73 2E 0D 0A 0C 27 54 72 65 6D 6F 6C 6F 5F 52 61 74 65 27 0D 0A 09 54 68 5 seconds.♪◙♀'Tremolo_Rate'♪◙○Th 0002B9C0 65 20 72 61 74 65 20 6F 66 20 61 6D 70 6C 69 74 75 64 65 20 6D 6F 64 75 6C 61 74 69 6F 6E 2E 20 e rate of amplitude modulation. 0002B9E0 20 30 20 69 73 20 30 2E 30 35 20 48 7A 2C 20 61 6E 64 20 32 35 35 20 69 73 20 36 20 48 7A 2E 20 0 is 0.05 Hz, and 255 is 6 Hz. 0002BA00 20 41 20 63 6F 6D 70 6C 65 74 65 20 74 61 62 6C 65 20 69 73 20 6C 69 73 74 65 64 20 62 65 6C 6F A complete table is listed belo 0002BA20 77 2E 0D 0A 0D 0A 27 54 72 65 6D 6F 6C 6F 5F 44 65 70 74 68 27 0D 0A 09 30 20 6D 65 61 6E 73 20 w.♪◙♪◙'Tremolo_Depth'♪◙○0 means 0002BA40 74 75 72 6E 20 74 72 65 6D 6F 6C 6F 20 6F 66 66 2E 20 20 32 35 35 20 70 72 6F 76 69 64 65 73 20 turn tremolo off. 255 provides 0002BA60 61 20 31 36 20 64 42 20 6D 6F 64 75 6C 61 74 69 6F 6E 2E 20 20 41 20 63 6F 6D 70 6C 65 74 65 20 a 16 dB modulation. A complete 0002BA80 74 61 62 6C 65 20 69 73 20 6C 69 73 74 65 64 20 62 65 6C 6F 77 2E 0D 0A 0D 0A 27 56 69 62 72 61 table is listed below.♪◙♪◙'Vibra 0002BAA0 74 6F 5F 53 77 65 65 70 27 0D 0A 09 47 72 61 64 75 61 6C 6C 79 20 73 77 65 65 70 20 69 6E 20 74 to_Sweep'♪◙○Gradually sweep in t 0002BAC0 68 65 20 76 69 62 72 61 74 6F 20 64 65 70 74 68 20 66 72 6F 6D 20 30 20 61 74 20 74 68 65 20 72 he vibrato depth from 0 at the r 0002BAE0 61 74 65 20 6F 66 20 76 69 62 72 61 74 6F 5F 73 77 65 65 70 20 2F 20 34 35 20 73 65 63 6F 6E 64 ate of vibrato_sweep / 45 second 0002BB00 73 2E 0D 0A 0D 0A 27 56 69 62 72 61 74 6F 5F 52 61 74 65 27 0D 0A 09 54 68 65 20 72 61 74 65 20 s.♪◙♪◙'Vibrato_Rate'♪◙○The rate 0002BB20 6F 66 20 66 72 65 71 75 65 6E 63 79 20 6D 6F 64 75 6C 61 74 69 6F 6E 2E 20 20 30 20 69 73 20 30 of frequency modulation. 0 is 0 0002BB40 2E 30 35 20 48 7A 2C 20 61 6E 64 20 32 35 35 20 69 73 20 36 20 48 7A 2E 0D 0A 0D 0A 27 56 69 62 .05 Hz, and 255 is 6 Hz.♪◙♪◙'Vib 0002BB60 72 61 74 6F 5F 44 65 70 74 68 27 0D 0A 09 30 20 6D 65 61 6E 73 20 74 75 72 6E 20 76 69 62 72 61 rato_Depth'♪◙○0 means turn vibra 0002BB80 74 6F 20 6F 66 66 2E 20 20 32 35 35 20 69 73 20 61 20 6F 6E 65 20 6F 63 74 61 76 65 20 6D 6F 64 to off. 255 is a one octave mod 0002BBA0 75 6C 61 74 69 6F 6E 2E 0D 0A 0D 0A 27 4D 6F 64 65 73 27 0D 0A 09 41 20 73 65 74 20 6F 66 20 62 ulation.♪◙♪◙'Modes'♪◙○A set of b 0002BBC0 69 74 20 66 69 65 6C 64 73 20 64 65 73 63 72 69 62 69 6E 67 20 6D 6F 64 65 73 20 61 6E 64 20 64 it fields describing modes and d 0002BBE0 61 74 61 20 74 79 70 65 3A 0D 0A 42 49 54 20 30 2D 09 31 36 20 62 69 74 20 64 61 74 61 0D 0A 42 ata type:♪◙BIT 0-○16 bit data♪◙B 0002BC00 49 54 20 31 2D 09 75 6E 73 69 67 6E 65 64 20 64 61 74 61 0D 0A 42 49 54 20 32 2D 09 6C 6F 6F 70 IT 1-○unsigned data♪◙BIT 2-○loop 0002BC20 69 6E 67 20 65 6E 61 62 6C 65 64 0D 0A 42 49 54 20 33 2D 09 62 69 64 69 72 65 63 74 69 6F 6E 61 ing enabled♪◙BIT 3-○bidirectiona 0002BC40 6C 20 6C 6F 6F 70 0D 0A 42 49 54 20 34 2D 09 70 6C 61 79 20 70 61 74 63 68 20 62 61 63 6B 77 61 l loop♪◙BIT 4-○play patch backwa 0002BC60 72 64 73 2E 20 20 73 74 61 72 74 20 61 74 20 65 6E 64 20 61 64 64 72 65 73 73 2C 20 6C 6F 6F 70 rds. start at end address, loop 0002BC80 20 62 61 63 6B 77 61 72 64 73 2C 20 61 6E 64 20 74 68 65 6E 20 65 6E 64 20 61 74 20 62 65 67 69 backwards, and then end at begi 0002BCA0 6E 6E 69 6E 67 20 61 64 64 72 65 73 73 2E 0D 0A 42 49 54 20 35 2D 09 73 75 73 74 61 69 6E 20 2D nning address.♪◙BIT 5-○sustain - 0002BCC0 20 65 6E 76 65 6C 6F 70 69 6E 67 20 73 74 6F 70 73 20 61 74 20 74 68 69 72 64 20 65 6E 76 65 6C enveloping stops at third envel 0002BCE0 6F 70 65 20 70 6F 69 6E 74 2E 20 20 61 20 6E 6F 74 65 20 6F 66 66 20 77 69 6C 6C 20 63 6F 6E 74 ope point. a note off will cont 0002BD00 69 6E 75 65 20 65 6E 76 65 6C 6F 70 69 6E 67 2E 0D 0A 42 49 54 20 36 2D 09 63 75 72 72 65 6E 74 inue enveloping.♪◙BIT 6-○current 0002BD20 6C 79 20 6D 65 61 6E 73 20 65 6E 76 65 6C 6F 70 69 6E 67 20 65 6E 61 62 6C 65 64 2E 20 20 41 6C ly means enveloping enabled. Al 0002BD40 6C 20 67 72 61 76 69 73 20 70 61 74 63 68 65 73 20 68 61 76 65 20 74 68 69 73 20 62 69 74 20 73 l gravis patches have this bit s 0002BD60 65 74 2E 20 20 54 68 69 73 20 66 69 65 6C 64 20 77 69 6C 6C 20 62 65 20 6D 6F 64 69 66 69 65 64 et. This field will be modified 0002BD80 20 69 6E 20 74 68 65 20 6E 65 61 72 20 66 75 74 75 72 65 20 74 6F 20 69 6D 70 6C 65 6D 65 6E 74 in the near future to implement 0002BDA0 20 61 20 73 61 6D 70 6C 65 64 20 72 65 6C 65 61 73 65 20 61 74 20 6E 6F 74 65 20 6F 66 66 20 69 a sampled release at note off i 0002BDC0 6E 73 74 65 61 64 20 6F 66 20 61 74 20 74 68 65 20 6C 61 73 74 20 65 6E 76 65 6C 6F 70 65 20 70 nstead of at the last envelope p 0002BDE0 6F 69 6E 74 2E 20 20 49 66 20 74 68 69 73 20 62 69 74 20 69 73 20 6F 6E 2C 20 74 68 65 20 73 61 oint. If this bit is on, the sa 0002BE00 6D 70 6C 65 20 72 65 6C 65 61 73 65 20 6F 63 63 75 72 73 20 61 66 74 65 72 20 74 68 65 20 6C 61 mple release occurs after the la 0002BE20 73 74 20 65 6E 76 65 6C 6F 70 65 20 70 6F 69 6E 74 2E 20 20 49 66 20 74 68 69 73 20 62 69 74 20 st envelope point. If this bit 0002BE40 69 73 20 6F 66 66 2C 20 74 68 65 20 73 61 6D 70 6C 65 64 20 72 65 6C 65 61 73 65 20 6F 63 63 75 is off, the sampled release occu 0002BE60 72 73 20 61 74 20 74 68 65 20 6E 6F 74 65 20 6F 66 66 2E 0D 0A 42 49 54 20 37 2D 09 66 61 73 74 rs at the note off.♪◙BIT 7-○fast 0002BE80 20 72 65 6C 65 61 73 65 2E 20 20 54 68 65 20 6C 61 73 74 20 74 68 72 65 65 20 65 6E 76 65 6C 6F release. The last three envelo 0002BEA0 70 65 20 70 6F 69 6E 74 73 20 61 72 65 20 69 67 6E 6F 72 65 64 2E 0D 0A 0D 0A 27 53 63 61 6C 65 pe points are ignored.♪◙♪◙'Scale 0002BEC0 5F 46 72 65 71 75 65 6E 63 79 27 0D 0A 09 4B 65 79 62 6F 61 72 64 20 66 72 65 71 75 65 6E 63 79 _Frequency'♪◙○Keyboard frequency 0002BEE0 20 73 63 61 6C 69 6E 67 2E 20 20 4E 6F 72 6D 61 6C 6C 79 2C 20 4D 49 44 49 20 6E 6F 74 65 20 36 scaling. Normally, MIDI note 6 0002BF00 34 20 70 6C 61 79 73 20 61 20 6D 69 64 64 6C 65 20 43 2E 20 20 41 20 36 35 20 70 6C 61 79 73 20 4 plays a middle C. A 65 plays 0002BF20 61 20 43 23 2E 20 20 66 72 65 71 75 65 6E 63 79 20 73 63 61 6C 69 6E 67 20 63 68 61 6E 67 65 73 a C#. frequency scaling changes 0002BF40 20 74 68 65 20 64 69 73 74 61 6E 63 65 20 69 6E 20 70 69 74 63 68 20 6F 66 20 65 61 63 68 20 4D the distance in pitch of each M 0002BF60 49 44 49 20 6E 6F 74 65 2E 20 20 20 54 68 65 20 73 63 61 6C 65 5F 66 72 65 71 75 65 6E 63 79 20 IDI note. The scale_frequency 0002BF80 69 73 20 74 68 65 20 4D 49 44 49 20 6E 6F 74 65 20 6E 75 6D 62 65 72 20 77 68 69 63 68 20 69 73 is the MIDI note number which is 0002BFA0 20 74 68 65 20 70 69 76 6F 74 20 70 6F 69 6E 74 20 66 6F 72 20 73 63 61 6C 69 6E 67 2E 20 20 49 the pivot point for scaling. I 0002BFC0 66 20 73 63 61 6C 65 5F 66 72 65 71 75 65 6E 63 79 20 69 73 20 36 34 2C 20 74 68 65 6E 20 4D 49 f scale_frequency is 64, then MI 0002BFE0 44 49 20 6E 6F 74 65 20 36 34 20 77 69 6C 6C 20 73 6F 75 6E 64 20 6C 69 6B 65 20 61 20 43 34 20 DI note 64 will sound like a C4 0002C000 72 65 67 61 72 64 6C 65 73 73 20 6F 66 20 73 63 61 6C 65 20 66 61 63 74 6F 72 2E 0D 0A 0D 0A 27 regardless of scale factor.♪◙♪◙' 0002C020 53 63 61 6C 65 5F 46 61 63 74 6F 72 27 0D 0A 09 31 30 32 34 20 6D 65 61 6E 73 20 6E 6F 72 6D 61 Scale_Factor'♪◙○1024 means norma 0002C040 6C 20 73 63 61 6C 69 6E 67 2E 20 45 61 63 68 20 4D 49 44 49 20 6E 6F 74 65 20 69 73 20 6F 6E 65 l scaling. Each MIDI note is one 0002C060 20 73 65 6D 69 74 6F 6E 65 20 61 77 61 79 20 66 72 6F 6D 20 69 74 73 20 6E 65 69 67 68 62 6F 72 semitone away from its neighbor 0002C080 2E 20 20 35 31 32 20 77 6F 75 6C 64 20 62 65 20 31 2F 32 20 73 65 6D 69 74 6F 6E 65 20 61 70 61 . 512 would be 1/2 semitone apa 0002C0A0 72 74 2E 20 20 32 30 34 38 20 69 73 20 74 77 6F 20 73 65 6D 69 74 6F 6E 65 73 20 61 70 61 72 74 rt. 2048 is two semitones apart 0002C0C0 2E 0D 0A 0D 0A 0C 41 70 70 65 6E 64 69 78 20 47 20 2D 20 33 44 20 46 69 6C 65 20 48 65 61 64 65 .♪◙♪◙♀Appendix G - 3D File Heade 0002C0E0 72 0D 0A 0D 0A 48 65 72 65 20 69 73 20 61 20 64 65 66 69 6E 69 74 69 6F 6E 20 66 6F 72 20 74 68 r♪◙♪◙Here is a definition for th 0002C100 65 20 64 61 74 61 20 66 6F 75 6E 64 20 69 6E 20 46 6F 63 61 6C 2D 50 6F 69 6E 74 20 33 44 20 66 e data found in Focal-Point 3D f 0002C120 69 6C 65 73 2E 20 41 6C 6C 20 2E 46 33 44 20 66 69 6C 65 73 20 77 69 6C 6C 20 68 61 76 65 20 74 iles. All .F3D files will have t 0002C140 68 69 73 20 66 6F 72 6D 61 74 2E 20 20 42 6F 74 68 20 43 20 61 6E 64 20 50 41 53 43 41 4C 20 76 his format. Both C and PASCAL v 0002C160 65 72 73 69 6F 6E 73 20 6F 66 20 74 68 65 20 64 65 66 69 6E 69 74 69 6F 6E 20 61 72 65 20 6C 69 ersions of the definition are li 0002C180 73 74 65 64 20 62 65 6C 6F 77 2E 0D 0A 0D 0A 3D 3D 3D 3D 3D 3D 0D 0A 20 20 43 3A 0D 0A 3D 3D 3D sted below.♪◙♪◙======♪◙ C:♪◙=== 0002C1A0 3D 3D 3D 0D 0A 0D 0A 2F 2A 20 42 69 74 20 64 65 66 69 6E 69 74 69 6F 6E 73 20 66 6F 72 20 74 72 ===♪◙♪◙/* Bit definitions for tr 0002C1C0 61 63 6B 73 20 74 68 61 74 20 61 72 65 20 69 6E 20 61 20 33 44 20 66 69 6C 65 20 2E 2E 2E 20 2A acks that are in a 3D file ... * 0002C1E0 2F 0D 0A 23 64 65 66 69 6E 65 20 46 52 4F 4E 54 5F 54 52 41 43 4B 20 20 20 20 20 20 30 78 30 31 /♪◙#define FRONT_TRACK 0x01 0002C200 0D 0A 23 64 65 66 69 6E 65 20 52 49 47 48 54 5F 54 52 41 43 4B 20 20 20 20 20 20 30 78 30 32 0D ♪◙#define RIGHT_TRACK 0x02♪ 0002C220 0A 23 64 65 66 69 6E 65 20 52 45 41 52 5F 54 52 41 43 4B 20 20 20 20 20 20 20 30 78 30 34 0D 0A ◙#define REAR_TRACK 0x04♪◙ 0002C240 23 64 65 66 69 6E 65 20 4C 45 46 54 5F 54 52 41 43 4B 20 20 20 20 20 20 20 30 78 30 38 0D 0A 23 #define LEFT_TRACK 0x08♪◙# 0002C260 64 65 66 69 6E 65 20 41 42 4F 56 45 5F 54 52 41 43 4B 20 20 20 20 20 20 30 78 31 30 0D 0A 23 64 define ABOVE_TRACK 0x10♪◙#d 0002C280 65 66 69 6E 65 20 42 45 4C 4F 57 5F 54 52 41 43 4B 20 20 20 20 20 20 30 78 32 30 0D 0A 0D 0A 23 efine BELOW_TRACK 0x20♪◙♪◙# 0002C2A0 64 65 66 69 6E 65 20 46 42 4C 4F 43 4B 5F 33 44 20 20 20 20 20 20 20 20 30 78 30 31 20 20 20 20 define FBLOCK_3D 0x01 0002C2C0 2F 2A 20 46 69 6C 65 20 64 61 74 61 20 69 73 20 62 6C 6F 63 6B 65 64 20 2A 2F 0D 0A 23 64 65 66 /* File data is blocked */♪◙#def 0002C2E0 69 6E 65 20 46 31 36 42 49 54 5F 33 44 20 20 20 20 20 20 20 20 30 78 30 32 20 20 20 20 2F 2A 20 ine F16BIT_3D 0x02 /* 0002C300 31 36 20 62 69 74 20 64 61 74 61 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 46 54 57 4F 53 5F 43 4D 16 bit data */♪◙#define FTWOS_CM 0002C320 50 5F 33 44 20 20 20 20 20 30 78 30 34 20 20 20 20 2F 2A 20 73 6F 75 6E 64 20 69 73 20 69 6E 20 P_3D 0x04 /* sound is in 0002C340 74 77 6F 73 20 63 6F 6D 70 6C 65 6D 65 6E 74 20 66 6F 72 6D 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 twos complement form */♪◙#define 0002C360 20 46 4C 4F 4F 50 45 44 5F 33 44 20 20 20 20 20 20 20 30 78 30 38 20 20 20 20 2F 2A 20 73 6F 75 FLOOPED_3D 0x08 /* sou 0002C380 6E 64 20 69 73 20 6C 6F 6F 70 65 64 20 2C 20 6E 6F 74 20 6F 6E 65 20 73 68 6F 74 2A 2F 0D 0A 23 nd is looped , not one shot*/♪◙# 0002C3A0 64 65 66 69 6E 65 20 46 42 49 5F 4C 4F 4F 50 5F 33 44 20 20 20 20 20 20 30 78 31 30 20 20 20 20 define FBI_LOOP_3D 0x10 0002C3C0 2F 2A 20 73 6F 75 6E 64 20 69 73 20 62 69 2D 64 69 72 65 63 74 69 6F 6E 61 6C 20 2A 2F 0D 0A 23 /* sound is bi-directional */♪◙# 0002C3E0 64 65 66 69 6E 65 20 46 33 44 5F 54 59 50 45 20 20 20 20 20 20 20 20 20 30 78 36 30 20 20 20 20 define F3D_TYPE 0x60 0002C400 2F 2A 20 54 79 70 65 20 6F 66 20 33 44 20 73 6F 75 6E 64 20 2A 2F 0D 0A 0D 0A 2F 2A 20 74 79 70 /* Type of 3D sound */♪◙♪◙/* typ 0002C420 65 73 20 28 46 33 44 5F 54 59 50 45 29 20 6F 66 20 33 44 20 73 6F 75 6E 64 20 28 6F 6E 6C 79 20 es (F3D_TYPE) of 3D sound (only 0002C440 62 69 6E 61 75 72 61 6C 20 63 75 72 72 65 6E 74 6C 79 20 73 75 70 70 6F 72 74 65 64 29 20 2A 2F binaural currently supported) */ 0002C460 0D 0A 23 64 65 66 69 6E 65 20 46 5F 42 49 4E 41 55 52 41 4C 20 20 20 20 20 20 20 30 78 32 30 20 ♪◙#define F_BINAURAL 0x20 0002C480 20 20 20 2F 2A 20 42 69 6E 61 75 72 61 6C 20 72 65 70 72 65 73 65 6E 74 61 74 69 6F 6E 20 2A 2F /* Binaural representation */ 0002C4A0 0D 0A 23 64 65 66 69 6E 65 20 46 5F 53 55 52 52 4F 55 4E 44 20 20 20 20 20 20 20 30 78 34 30 20 ♪◙#define F_SURROUND 0x40 0002C4C0 20 20 20 2F 2A 20 53 75 72 72 6F 75 6E 64 20 73 6F 75 6E 64 20 28 3F 3F 3F 29 20 2A 2F 0D 0A 23 /* Surround sound (???) */♪◙# 0002C4E0 64 65 66 69 6E 65 20 46 5F 51 53 4F 55 4E 44 20 20 20 20 20 20 20 20 20 30 78 36 30 20 20 20 20 define F_QSOUND 0x60 0002C500 2F 2A 20 51 20 73 6F 75 6E 64 20 28 3F 3F 3F 29 20 2A 2F 0D 0A 0D 0A 2F 2A 20 74 68 65 20 66 6F /* Q sound (???) */♪◙♪◙/* the fo 0002C520 6C 6C 6F 77 69 6E 67 20 73 74 72 75 63 74 75 72 65 20 69 73 20 65 78 61 63 74 6C 79 20 32 35 36 llowing structure is exactly 256 0002C540 20 62 79 74 65 73 20 6C 6F 6E 67 20 2E 2E 2E 20 2A 2F 0D 0A 74 79 70 65 64 65 66 20 73 74 72 75 bytes long ... */♪◙typedef stru 0002C560 63 74 20 7B 0D 0A 20 20 20 63 68 61 72 20 69 64 5B 31 30 5D 3B 20 20 20 20 20 20 20 20 20 20 20 ct {♪◙ char id[10]; 0002C580 20 20 20 20 20 2F 2A 20 33 44 20 46 49 4C 45 20 74 61 67 20 2A 2F 0D 0A 20 20 20 69 6E 74 20 6D /* 3D FILE tag */♪◙ int m 0002C5A0 61 6A 6F 72 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2A 20 6D 61 6A 6F 72 20 ajor; /* major 0002C5C0 76 65 72 73 69 6F 6E 20 23 20 2A 2F 0D 0A 20 20 20 69 6E 74 20 6D 69 6E 6F 72 3B 20 20 20 20 20 version # */♪◙ int minor; 0002C5E0 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2A 20 6D 69 6E 6F 72 20 76 65 72 73 69 6F 6E 20 23 20 /* minor version # 0002C600 2A 2F 0D 0A 20 20 20 63 68 61 72 20 64 65 73 63 72 69 70 74 69 6F 6E 5B 38 30 5D 3B 0D 0A 20 20 */♪◙ char description[80];♪◙ 0002C620 20 75 6E 73 69 67 6E 65 64 20 69 6E 74 20 74 79 70 65 3B 20 20 20 20 20 20 20 20 20 20 2F 2A 20 unsigned int type; /* 0002C640 53 65 65 20 61 62 6F 76 65 20 2E 2E 2E 2E 20 2A 2F 0D 0A 20 20 20 69 6E 74 20 74 72 61 63 6B 73 See above .... */♪◙ int tracks 0002C660 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2A 20 74 72 61 63 6B 73 20 69 6E 63 6C ; /* tracks incl 0002C680 75 64 65 64 20 69 6E 20 74 68 69 73 20 66 69 6C 65 20 2E 2E 2E 20 2A 2F 0D 0A 20 20 20 69 6E 74 uded in this file ... */♪◙ int 0002C6A0 20 72 65 73 65 72 76 65 31 5B 32 34 5D 3B 20 20 20 20 20 20 20 20 20 20 20 2F 2A 20 66 6F 72 20 reserve1[24]; /* for 0002C6C0 65 78 70 61 6E 73 69 6F 6E 20 2A 2F 0D 0A 20 20 20 69 6E 74 20 6D 61 78 76 6F 6C 3B 20 20 20 20 expansion */♪◙ int maxvol; 0002C6E0 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 2A 20 76 6F 6C 75 6D 65 20 63 61 6E 20 72 61 6E 67 65 /* volume can range 0002C700 20 66 72 6F 6D 20 30 20 74 6F 20 6D 61 78 76 6F 6C 20 2A 2F 0D 0A 20 20 20 69 6E 74 20 72 65 73 from 0 to maxvol */♪◙ int res 0002C720 65 72 76 65 32 5B 31 30 5D 3B 20 20 20 20 20 20 20 20 20 20 20 2F 2A 20 66 6F 72 20 65 78 70 61 erve2[10]; /* for expa 0002C740 6E 73 69 6F 6E 20 2A 2F 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 62 6C 6F 63 6B nsion */♪◙ unsigned long block 0002C760 73 69 7A 65 3B 20 20 20 20 2F 2A 20 23 20 6F 66 20 62 79 74 65 73 20 69 6E 20 62 6C 6F 63 6B 20 size; /* # of bytes in block 0002C780 64 61 74 61 20 2A 2F 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 6C 6F 6F 70 5F 6F data */♪◙ unsigned long loop_o 0002C7A0 66 66 73 65 74 3B 20 20 2F 2A 20 62 79 74 65 20 6F 66 66 73 65 74 20 74 6F 20 77 68 65 72 65 20 ffset; /* byte offset to where 0002C7C0 6C 6F 6F 70 20 62 65 67 69 6E 73 20 2A 2F 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 loop begins */♪◙ unsigned long 0002C7E0 20 72 65 73 65 72 76 65 33 5B 39 5D 3B 20 20 2F 2A 20 66 6F 72 20 65 78 70 61 6E 73 69 6F 6E 20 reserve3[9]; /* for expansion 0002C800 2A 2F 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 66 72 65 71 75 65 6E 63 79 3B 20 */♪◙ unsigned long frequency; 0002C820 20 20 20 2F 2A 20 69 6E 69 74 69 61 6C 20 70 6C 61 79 62 61 63 6B 20 66 72 65 71 75 65 6E 63 79 /* initial playback frequency 0002C840 20 2A 2F 0D 0A 20 20 20 75 6E 73 69 67 6E 65 64 20 6C 6F 6E 67 20 72 65 73 65 72 76 65 34 5B 31 */♪◙ unsigned long reserve4[1 0002C860 30 5D 3B 20 2F 2A 20 66 6F 72 20 65 78 70 61 6E 73 69 6F 6E 20 2A 2F 0D 0A 7D 20 46 49 4C 45 48 0]; /* for expansion */♪◙} FILEH 0002C880 44 52 5F 33 44 3B 0D 0A 0D 0A 0D 0A 2E 2E 2E 65 6E 64 20 6F 66 20 74 68 65 20 43 20 73 65 63 74 DR_3D;♪◙♪◙♪◙...end of the C sect 0002C8A0 69 6F 6E 2E 20 20 50 6C 65 61 73 65 20 73 65 65 20 74 68 65 20 6E 65 78 74 20 70 61 67 65 20 66 ion. Please see the next page f 0002C8C0 6F 72 20 74 68 65 20 50 41 53 43 41 4C 20 73 65 63 74 69 6F 6E 2E 2E 2E 0D 0A 0C 3D 3D 3D 3D 3D or the PASCAL section...♪◙♀===== 0002C8E0 3D 3D 3D 0D 0A 20 50 41 53 43 41 4C 0D 0A 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 0D 0A 43 4F 4E 53 54 0D ===♪◙ PASCAL♪◙========♪◙♪◙CONST♪ 0002C900 0A 20 20 7B 20 42 69 74 20 64 65 66 69 6E 69 74 69 6F 6E 73 20 46 4F 52 20 74 72 61 63 6B 73 20 ◙ { Bit definitions FOR tracks 0002C920 74 68 61 74 20 61 72 65 20 69 6E 20 61 20 33 44 20 46 49 4C 45 20 2E 2E 2E 20 7D 0D 0A 20 20 46 that are in a 3D FILE ... }♪◙ F 0002C940 52 4F 4E 54 5F 54 52 41 43 4B 20 20 3D 20 24 30 31 3B 0D 0A 20 20 52 49 47 48 54 5F 54 52 41 43 RONT_TRACK = $01;♪◙ RIGHT_TRAC 0002C960 4B 20 20 3D 20 24 30 32 3B 0D 0A 20 20 52 45 41 52 5F 54 52 41 43 4B 20 20 20 3D 20 24 30 34 3B K = $02;♪◙ REAR_TRACK = $04; 0002C980 0D 0A 20 20 4C 45 46 54 5F 54 52 41 43 4B 20 20 20 3D 20 24 30 38 3B 0D 0A 20 20 41 42 4F 56 45 ♪◙ LEFT_TRACK = $08;♪◙ ABOVE 0002C9A0 5F 54 52 41 43 4B 20 20 3D 20 24 31 30 3B 0D 0A 20 20 42 45 4C 4F 57 5F 54 52 41 43 4B 20 20 3D _TRACK = $10;♪◙ BELOW_TRACK = 0002C9C0 20 24 32 30 3B 0D 0A 0D 0A 20 20 46 42 4C 4F 43 4B 5F 33 44 20 20 20 20 3D 20 24 30 31 3B 20 7B $20;♪◙♪◙ FBLOCK_3D = $01; { 0002C9E0 20 46 49 4C 45 20 64 61 74 61 20 69 73 20 62 6C 6F 63 6B 65 64 2C 20 4E 4F 54 20 69 6E 74 65 72 FILE data is blocked, NOT inter 0002CA00 6C 65 61 76 65 64 20 7D 0D 0A 20 20 46 31 36 42 49 54 5F 33 44 20 20 20 20 3D 20 24 30 32 3B 20 leaved }♪◙ F16BIT_3D = $02; 0002CA20 7B 20 31 36 20 62 69 74 20 64 61 74 61 20 7D 0D 0A 20 20 46 54 57 4F 53 5F 43 4D 50 5F 33 44 20 { 16 bit data }♪◙ FTWOS_CMP_3D 0002CA40 3D 20 24 30 34 3B 20 7B 20 73 6F 75 6E 64 20 69 73 20 69 6E 20 74 77 6F 73 20 63 6F 6D 70 6C 65 = $04; { sound is in twos comple 0002CA60 6D 65 6E 74 20 66 6F 72 6D 20 7D 0D 0A 20 20 46 4C 4F 4F 50 45 44 5F 33 44 20 20 20 3D 20 24 30 ment form }♪◙ FLOOPED_3D = $0 0002CA80 38 3B 20 7B 20 73 6F 75 6E 64 20 69 73 20 6C 6F 6F 70 65 64 20 2C 20 4E 4F 54 20 6F 6E 65 20 73 8; { sound is looped , NOT one s 0002CAA0 68 6F 74 20 7D 0D 0A 20 20 46 42 49 5F 4C 4F 4F 50 5F 33 44 20 20 3D 20 24 31 30 3B 20 7B 20 73 hot }♪◙ FBI_LOOP_3D = $10; { s 0002CAC0 6F 75 6E 64 20 69 73 20 62 69 2D 64 69 72 65 63 74 69 6F 6E 61 6C 20 7D 0D 0A 20 20 46 33 44 5F ound is bi-directional }♪◙ F3D_ 0002CAE0 54 59 50 45 20 20 20 20 20 3D 20 24 36 30 3B 20 7B 20 54 59 50 45 20 4F 46 20 33 44 20 73 6F 75 TYPE = $60; { TYPE OF 3D sou 0002CB00 6E 64 20 7D 0D 0A 0D 0A 20 20 7B 20 74 79 70 65 73 20 28 46 33 44 5F 54 59 50 45 29 20 4F 46 20 nd }♪◙♪◙ { types (F3D_TYPE) OF 0002CB20 33 44 20 73 6F 75 6E 64 20 28 6F 6E 6C 79 20 62 69 6E 61 75 72 61 6C 20 63 75 72 72 65 6E 74 6C 3D sound (only binaural currentl 0002CB40 79 20 73 75 70 70 6F 72 74 65 64 29 20 7D 0D 0A 20 20 46 5F 42 49 4E 41 55 52 41 4C 20 20 20 3D y supported) }♪◙ F_BINAURAL = 0002CB60 20 24 32 30 3B 20 7B 20 42 69 6E 61 75 72 61 6C 20 72 65 70 72 65 73 65 6E 74 61 74 69 6F 6E 20 $20; { Binaural representation 0002CB80 7D 0D 0A 20 20 46 5F 53 55 52 52 4F 55 4E 44 20 20 20 3D 20 24 34 30 3B 20 7B 20 53 75 72 72 6F }♪◙ F_SURROUND = $40; { Surro 0002CBA0 75 6E 64 20 73 6F 75 6E 64 20 28 3F 3F 3F 29 20 7D 0D 0A 20 20 46 5F 51 53 4F 55 4E 44 20 20 20 und sound (???) }♪◙ F_QSOUND 0002CBC0 20 20 3D 20 24 36 30 3B 20 7B 20 51 20 73 6F 75 6E 64 20 28 3F 3F 3F 29 20 7D 0D 0A 0D 0A 54 59 = $60; { Q sound (???) }♪◙♪◙TY 0002CBE0 50 45 0D 0A 20 20 46 49 4C 45 48 44 52 5F 33 44 20 3D 20 52 45 43 4F 52 44 0D 0A 20 20 20 20 49 PE♪◙ FILEHDR_3D = RECORD♪◙ I 0002CC00 44 20 20 20 20 20 20 20 20 20 20 3A 20 41 52 52 41 59 5B 30 2E 2E 39 5D 20 4F 46 20 43 48 41 52 D : ARRAY[0..9] OF CHAR 0002CC20 3B 20 20 20 20 20 7B 20 33 44 20 46 49 4C 45 20 74 61 67 20 7D 0D 0A 20 20 20 20 4D 61 6A 6F 72 ; { 3D FILE tag }♪◙ Major 0002CC40 20 20 20 20 20 20 20 3A 20 49 4E 54 45 47 45 52 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : INTEGER; 0002CC60 20 20 7B 20 4D 61 6A 6F 72 20 76 65 72 73 69 6F 6E 20 23 20 7D 0D 0A 20 20 20 20 4D 69 6E 6F 72 { Major version # }♪◙ Minor 0002CC80 20 20 20 20 20 20 20 3A 20 49 4E 54 45 47 45 52 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 : INTEGER; 0002CCA0 20 20 7B 20 4D 69 6E 6F 72 20 76 65 72 73 69 6F 6E 20 23 20 7D 0D 0A 20 20 20 20 44 65 73 63 72 { Minor version # }♪◙ Descr 0002CCC0 69 70 74 69 6F 6E 20 3A 20 41 52 52 41 59 5B 30 2E 2E 37 39 5D 20 4F 46 20 43 48 41 52 3B 0D 0A iption : ARRAY[0..79] OF CHAR;♪◙ 0002CCE0 20 20 20 20 53 54 79 70 65 20 20 20 20 20 20 20 3A 20 57 4F 52 44 3B 20 20 20 20 20 20 20 20 20 SType : WORD; 0002CD00 20 20 20 20 20 20 20 20 20 20 20 7B 20 53 65 65 20 61 62 6F 76 65 20 7D 0D 0A 20 20 20 20 54 72 { See above }♪◙ Tr 0002CD20 61 63 6B 73 20 20 20 20 20 20 3A 20 49 4E 54 45 47 45 52 3B 20 20 20 20 20 20 20 20 20 20 20 20 acks : INTEGER; 0002CD40 20 20 20 20 20 7B 20 54 72 61 63 6B 73 20 69 6E 63 6C 75 64 65 64 20 7D 0D 0A 20 20 20 20 52 65 { Tracks included }♪◙ Re 0002CD60 73 65 72 76 65 31 20 20 20 20 3A 20 41 52 52 41 59 5B 30 2E 2E 32 33 5D 20 4F 46 20 49 4E 54 45 serve1 : ARRAY[0..23] OF INTE 0002CD80 47 45 52 3B 20 7B 20 66 6F 72 20 65 78 70 61 6E 73 69 6F 6E 20 7D 0D 0A 20 20 20 20 4D 61 78 56 GER; { for expansion }♪◙ MaxV 0002CDA0 6F 6C 20 20 20 20 20 20 3A 20 49 4E 54 45 47 45 52 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ol : INTEGER; 0002CDC0 20 20 20 7B 20 76 6F 6C 75 6D 65 20 72 61 6E 67 65 20 30 2D 6D 61 78 76 6F 6C 20 7D 0D 0A 20 20 { volume range 0-maxvol }♪◙ 0002CDE0 20 20 52 65 73 65 72 76 65 32 20 20 20 20 3A 20 41 52 52 41 59 5B 30 2E 2E 39 5D 20 4F 46 20 49 Reserve2 : ARRAY[0..9] OF I 0002CE00 4E 54 45 47 45 52 3B 20 20 7B 20 66 6F 72 20 65 78 70 61 6E 73 69 6F 6E 20 7D 0D 0A 20 20 20 20 NTEGER; { for expansion }♪◙ 0002CE20 42 6C 6F 63 6B 53 69 7A 65 20 20 20 3A 20 4C 4F 4E 47 49 4E 54 3B 20 20 20 20 20 20 20 20 20 20 BlockSize : LONGINT; 0002CE40 20 20 20 20 20 20 20 7B 20 23 20 6F 66 20 62 79 74 65 73 20 69 6E 20 62 6C 6F 63 6B 20 64 61 74 { # of bytes in block dat 0002CE60 61 20 7D 0D 0A 20 20 20 20 4C 6F 6F 70 5F 4F 66 66 73 65 74 20 3A 20 4C 4F 4E 47 49 4E 54 3B 20 a }♪◙ Loop_Offset : LONGINT; 0002CE80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7B 20 62 79 74 65 20 6F 66 66 73 65 74 20 6F 66 { byte offset of 0002CEA0 20 6C 6F 6F 70 20 62 65 67 69 6E 7D 0D 0A 20 20 20 20 52 65 73 65 72 76 65 33 20 20 20 20 3A 20 loop begin}♪◙ Reserve3 : 0002CEC0 41 52 52 41 59 5B 30 2E 2E 38 5D 20 4F 46 20 4C 4F 4E 47 49 4E 54 3B 20 20 7B 20 66 6F 72 20 65 ARRAY[0..8] OF LONGINT; { for e 0002CEE0 78 70 61 6E 73 69 6F 6E 20 7D 0D 0A 20 20 20 20 46 72 65 71 75 65 6E 63 79 20 20 20 3A 20 4C 4F xpansion }♪◙ Frequency : LO 0002CF00 4E 47 49 4E 54 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7B 20 70 6C 61 79 62 61 63 NGINT; { playbac 0002CF20 6B 20 66 72 65 71 75 65 6E 63 79 20 7D 0D 0A 20 20 20 20 52 65 73 65 72 76 65 34 20 20 20 20 3A k frequency }♪◙ Reserve4 : 0002CF40 20 41 52 52 41 59 5B 30 2E 2E 39 5D 20 4F 46 20 4C 4F 4E 47 49 4E 54 3B 20 20 7B 20 66 6F 72 20 ARRAY[0..9] OF LONGINT; { for 0002CF60 65 78 70 61 6E 73 69 6F 6E 20 7D 0D 0A 20 20 20 45 4E 44 3B 0D 0A 20 20 7B 20 74 68 65 20 66 69 expansion }♪◙ END;♪◙ { the fi 0002CF80 6C 65 20 68 65 61 64 65 72 20 69 73 20 65 78 61 63 74 6C 79 20 32 35 36 20 62 79 74 65 73 20 6C le header is exactly 256 bytes l 0002CFA0 6F 6E 67 20 7D 0D 0A 0D 0A 0D 0A 55 6C 74 72 61 73 6F 75 6E 64 20 53 6F 66 74 77 61 72 65 20 44 ong }♪◙♪◙♪◙Ultrasound Software D 0002CFC0 65 76 65 6C 6F 70 6D 65 6E 74 20 4B 69 74 20 28 53 44 4B 29 09 56 65 72 73 69 6F 6E 20 32 2E 31 evelopment Kit (SDK)○Version 2.1 0002CFE0 30 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0♪◙_____________________________ 0002D000 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ________________________________ 0002D020 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 0D 0A 0D 0A 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ______________♪◙♪◙♪◙____________ 0002D040 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ________________________________ 0002D060 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D _______________________________♪ 0002D080 0A 09 09 13 50 41 47 45 14 31 31 30 15 0D 0A 0D 0A 0D 0A 0D 0A 13 88 03 00 7D 01 80 0A 8D 00 00 ◙○○‼PAGE¶110§♪◙♪◙♪◙♪◙‼ê♥.}☺Ç◙ì.. 0002D0A0 8E A0 05 73 08 00 74 08 00 0D 0A 44 3B 0D 0A 0D 0A 0D 0A 46 69 6C 65 20 48 65 61 64 65 72 0D 0A Äá♣s◘.t◘.♪◙D;♪◙♪◙♪◙File Header♪◙ 0002D0C0 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ________________________________ 0002D0E0 5F 0D 0A 0D 0A 27 48 65 61 64 65 72 27 0D 0A 09 54 68 65 20 68 65 61 64 65 72 20 66 69 65 6C 64 _♪◙♪◙'Header'♪◙○The header field 0002D100 20 73 68 6F 75 6C 64 20 63 6F 6E 74 61 69 6E 20 74 68 65 20 74 65 78 74 20 22 47 46 31 50 41 54 should contain the text "GF1PAT 0002D120 43 48 31 31 30 2E 22 20 20 54 68 65 20 66 69 72 73 74 20 38 20 62 79 74 65 73 20 77 69 6C 6C 20 CH110." The first 8 bytes will 0002D140 61 6C 77 61 79 73 20 62 65 20 47 46 31 50 41 54 43 48 2E 20 20 54 68 65 20 6E 65 78 74 20 74 68 always be GF1PATCH. The next th 0002D160 72 65 65 20 62 79 74 65 73 20 61 72 65 20 74 68 65 20 76 65 72 73 69 6F 6E 20 6E 75 6D 62 65 72 ree bytes are the version number 0002D180 20 6F 66 20 74 68 65 20 70 61 74 63 68 20 66 6F 72 6D 61 74 2E 20 20 41 73 20 66 69 65 6C 64 73 of the patch format. As fields 0002D1A0 20 61 72 65 20 61 64 64 65 64 20 74 6F 20 74 68 65 20 70 61 74 63 68 2C 20 74 68 65 20 6E 75 6D are added to the patch, the num 0002D1C0 62 65 72 20 77 69 6C 6C 20 62 65 20 69 6E 63 72 65 6D 65 6E 74 65 64 2E 20 20 41 6C 6C 20 6F 66 ber will be incremented. All of 0002D1E0 20 74 68 65 20 55 6C 74 72 61 53 6F 75 6E 64 20 70 61 74 63 68 65 73 20 61 72 65 20 63 75 72 72 the UltraSound patches are curr 0002D200 80 01 00 00 0B 6A 00 00 DD 6B 00 00 E4 76 00 00 92 77 00 00 59 78 00 00 C7 79 00 00 1B 7E 00 00 Ç☺..♂j..▌k..Σv..Æw..Yx..╟y..←~.. 0002D220 F0 81 00 00 30 85 00 00 76 89 00 00 09 95 00 00 A2 98 00 00 FD 9A 00 00 AA 9B 00 00 6C 9D 00 00 ≡ü..0à..vë..○ò..óÿ..²Ü..¬¢..l¥.. 0002D240 19 9E 00 00 95 56 01 00 1F 33 02 00 70 41 02 00 F6 6E 02 00 09 82 02 00 75 82 02 00 87 84 02 00 ↓₧..òV☺.▼3☻.pA☻.÷n☻.○é☻.ué☻.çä☻. 0002D260 23 85 02 00 B3 A0 02 00 C5 C0 02 00 AB CF 02 00 32 D0 02 00 34 D0 02 00 83 D0 02 00 84 D0 02 00 #à☻.│á☻.┼└☻.½╧☻.2╨☻.4╨☻.â╨☻.ä╨☻. 0002D280 88 D0 02 00 89 D0 02 00 8C D0 02 00 8D D0 02 00 8F D0 02 00 93 D0 02 00 95 D0 02 00 A9 D0 02 00 ê╨☻.ë╨☻.î╨☻.ì╨☻.Å╨☻.ô╨☻.ò╨☻.⌐╨☻. 0002D2A0 AB D0 02 00 FC 00 FC 00 FC 00 FC 00 FC 00 FC 00 FC 00 FC 00 FC 00 FC 00 FC 00 FC 00 FC 00 FC FC ½╨☻.ⁿ.ⁿ.ⁿ.ⁿ.ⁿ.ⁿ.ⁿ.ⁿ.ⁿ.ⁿ.ⁿ.ⁿ.ⁿ.ⁿⁿ 0002D2C0 00 FC F9 FC F9 FC F9 FC 00 FC F1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ⁿ∙ⁿ∙ⁿ∙ⁿ.ⁿ±..................... 0002D2E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 0002D300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 0002D320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 0002D340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 0002D360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 0002D380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 0002D3A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 0002D3C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................ 0002D3E0 00 00 0E 00 02 00 00 00 00 14 00 00 00 00 00 00 04 00 05 00 02 02 00 04 05 00 00 02 00 04 00 28 ..♫.☻....¶......♦.♣.☻☻.♦♣..☻.♦.( 0002D400 80 01 00 00 A1 01 00 00 A3 01 00 00 B5 01 00 00 B7 01 00 00 34 03 00 00 36 03 00 00 88 04 00 00 Ç☺..í☺..ú☺..╡☺..╖☺..4♥..6♥..ê♦.. 0002D420 8A 04 00 00 12 05 00 00 14 05 00 00 D0 07 00 00 D2 07 00 00 D4 07 00 00 D6 07 00 00 F6 07 00 00 è♦..↕♣..¶♣..╨•..╥•..╘•..╓•..÷•.. 0002D440 F8 07 00 00 20 08 00 00 55 08 00 00 71 08 00 00 A1 08 00 00 CC 08 00 00 FC 08 00 00 38 09 00 00 °•.. ◘..U◘..q◘..í◘..╠◘..ⁿ◘..8○.. 0002D460 6C 09 00 00 C5 09 00 00 EF 09 00 00 16 0A 00 00 5A 0A 00 00 94 0A 00 00 CD 0A 00 00 E2 0A 00 00 l○..┼○..∩○..▬◙..Z◙..ö◙..═◙..Γ◙.. 0002D480 FF 0A 00 00 4A 0B 00 00 4C 0B 00 00 78 0B 00 00 7A 0B 00 00 6B 0D 00 00 6D 0D 00 00 A8 0D 00 00 ◙..J♂..L♂..x♂..z♂..k♪..m♪..¿♪.. 0002D4A0 AA 0D 00 00 65 0E 00 00 E9 0E 00 00 82 0F 00 00 FB 0F 00 00 5D 10 00 00 FE 10 00 00 B8 11 00 00 ¬♪..e♫..Θ♫..é☼..√☼..]►..■►..╕◄.. 0002D4C0 99 12 00 00 9B 12 00 00 9D 12 00 00 9F 12 00 00 C9 12 00 00 CB 12 00 00 63 15 00 00 65 15 00 00 Ö↕..¢↕..¥↕..ƒ↕..╔↕..╦↕..c§..e§.. 0002D4E0 FA F5 EF EF E9 EF E3 EF DD EF D7 EF EF EF EF EF CE CE CE CE CE CE CE CE C5 CE CE CE CE CE CE CE ·⌡∩∩Θ∩π∩▌∩╫∩∩∩∩∩╬╬╬╬╬╬╬╬┼╬╬╬╬╬╬╬ 0002D500 CE EF BF EF B9 EF EF B0 A7 9E A7 9E 9E A7 A7 95 EF EF EF EF EF D7 EF 00 00 00 00 00 00 00 00 00 ╬∩┐∩╣∩∩░º₧º₧₧ººò∩∩∩∩∩╫∩......... 0002D520 00 00 00 00 00 00 00 00 00 00 08 00 00 04 30 2A F0 00 05 03 11 1C 02 13 E4 FD 00 00 08 00 00 02 ..........◘..♦0*≡.♣♥◄∟☻‼Σ²..◘..☻ 0002D540 30 2A F0 00 05 03 11 1C 02 13 E4 FD 00 00 08 00 00 03 30 2A F0 00 05 03 11 1C 02 13 E4 FD 00 00 0*≡.♣♥◄∟☻‼Σ²..◘..♥0*≡.♣♥◄∟☻‼Σ².. 0002D560 08 00 00 01 30 2A F0 00 05 03 11 68 01 13 98 FE 00 00 05 00 00 07 30 2A F0 00 05 03 00 00 05 00 ◘..☺0*≡.♣♥◄h☺‼ÿ■..♣..•0*≡.♣♥..♣. 0002D580 00 00 00 00 00 00 05 03 00 00 08 00 00 02 30 2A F0 00 05 03 11 1C 01 13 E4 FE 00 00 08 00 00 01 ......♣♥..◘..☻0*≡.♣♥◄∟☺‼Σ■..◘..☺ 0002D5A0 30 2A F0 00 05 03 11 1C 01 13 E4 FE 00 00 05 00 00 0A 30 2A F0 00 05 03 00 00 05 00 00 02 30 2A 0*≡.♣♥◄∟☺‼Σ■..♣..◙0*≡.♣♥..♣..☻0* 0002D5C0 F0 00 05 03 00 00 05 00 00 05 30 2A F0 00 05 03 00 00 05 00 00 06 30 2A F0 00 05 03 00 00 05 00 ≡.♣♥..♣..♣0*≡.♣♥..♣..♠0*≡.♣♥..♣. 0002D5E0 00 01 30 2A F0 00 05 03 00 00 04 00 00 01 30 2A F0 00 00 00 05 00 00 01 30 2A F0 00 05 01 00 37 .☺0*≡.♣♥..♦..☺0*≡...♣..☺0*≡.♣☺.7 0002D600 65 15 00 00 AE 15 00 00 B0 15 00 00 62 16 00 00 64 16 00 00 9D 16 00 00 9F 16 00 00 85 17 00 00 e§..«§..░§..b▬..d▬..¥▬..ƒ▬..à↨.. 0002D620 87 17 00 00 8A 1A 00 00 8C 1A 00 00 BF 1A 00 00 C1 1A 00 00 E0 1A 00 00 F3 1A 00 00 06 1B 00 00 ç↨..è→..î→..┐→..┴→..α→..≤→..♠←.. 0002D640 19 1B 00 00 2C 1B 00 00 3F 1B 00 00 52 1B 00 00 65 1B 00 00 78 1B 00 00 8B 1B 00 00 9E 1B 00 00 ↓←..,←..?←..R←..e←..x←..ï←..₧←.. 0002D660 B1 1B 00 00 C4 1B 00 00 D7 1B 00 00 EA 1B 00 00 FD 1B 00 00 10 1C 00 00 23 1C 00 00 36 1C 00 00 ▒←..─←..╫←..Ω←..²←..►∟..#∟..6∟.. 0002D680 49 1C 00 00 4B 1C 00 00 EC 1C 00 00 EE 1C 00 00 0F 1D 00 00 2D 1D 00 00 6A 1D 00 00 6C 1D 00 00 I∟..K∟..∞∟..ε∟..☼↔..-↔..j↔..l↔.. 0002D6A0 A7 1D 00 00 A9 1D 00 00 E9 1E 00 00 EB 1E 00 00 EF 1E 00 00 33 1F 00 00 45 1F 00 00 47 1F 00 00 º↔..⌐↔..Θ▲..δ▲..∩▲..3▼..E▼..G▼.. 0002D6C0 50 1F 00 00 91 1F 00 00 A5 1F 00 00 A7 1F 00 00 37 20 00 00 39 20 00 00 65 25 00 00 67 25 00 00 P▼..æ▼..Ñ▼..º▼..7 ..9 ..e%..g%.. 0002D6E0 31 26 00 00 33 26 00 00 D5 27 00 00 D7 27 00 00 ED 27 00 00 EF 27 00 00 7A 2B 00 00 7C 2B 00 00 1&..3&..╒'..╫'..φ'..∩'..z+..|+.. 0002D700 A7 2B 00 00 A9 2B 00 00 BA 2B 00 00 C8 2B 00 00 D5 2B 00 00 F4 F4 E8 F4 F4 E2 DC E2 D6 E2 E2 E2 º+..⌐+..║+..╚+..╒+..⌠⌠Φ⌠⌠Γ▄Γ╓ΓΓΓ 0002D720 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 D0 E2 CA E2 D0 D0 C4 E2 D0 E2 BE E2 E2 ╨╨╨╨╨╨╨╨╨╨╨╨╨╨╨╨╨╨╨╨Γ╩Γ╨╨─Γ╨Γ╛ΓΓ 0002D740 E2 E2 E2 E2 E2 E2 E2 CA E2 B8 E2 CA E2 B2 E2 C4 E2 AC E2 E2 E2 D0 D0 D0 05 00 00 0D 30 2A F0 00 ΓΓΓΓΓΓΓ╩Γ╕Γ╩Γ▓Γ─Γ¼ΓΓΓ╨╨╨♣..♪0*≡. 0002D760 05 03 00 00 05 00 00 06 30 2A F0 00 05 03 00 00 05 00 00 12 30 2A F0 00 05 03 00 00 05 00 00 05 ♣♥..♣..♠0*≡.♣♥..♣..↕0*≡.♣♥..♣..♣ 0002D780 30 2A F0 00 05 03 00 00 05 00 00 00 00 00 00 00 05 03 00 00 05 00 00 03 30 2A F0 00 05 03 00 00 0*≡.♣♥..♣.......♣♥..♣..♥0*≡.♣♥.. 0002D7A0 05 00 00 01 30 2A F0 00 05 01 00 00 05 00 00 0B 30 2A F0 00 05 03 00 00 05 00 00 04 30 2A F0 00 ♣..☺0*≡.♣☺..♣..♂0*≡.♣♥..♣..♦0*≡. 0002D7C0 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 00 0B 00 00 03 30 2A F0 00 05 03 11 1C 01 13 E4 FE ♣♥..♣..☺0*≡.♣♥..♂..♥0*≡.♣♥◄∟☺‼Σ■ 0002D7E0 0F 05 00 01 00 00 00 00 0B 00 00 01 30 2A F0 00 05 03 11 1C 01 13 E4 FE 0F 05 00 01 00 00 00 44 ☼♣.☺....♂..☺0*≡.♣♥◄∟☺‼Σ■☼♣.☺...D 0002D800 D5 2B 00 00 E2 2B 00 00 EE 2B 00 00 F0 2B 00 00 AF 2C 00 00 B1 2C 00 00 B3 2C 00 00 B5 2C 00 00 ╒+..Γ+..ε+..≡+..»,..▒,..│,..╡,.. 0002D820 CD 2C 00 00 CF 2C 00 00 53 2F 00 00 55 2F 00 00 96 30 00 00 98 30 00 00 9A 30 00 00 BD 30 00 00 ═,..╧,..S/..U/..û0..ÿ0..Ü0..╜0.. 0002D840 BF 30 00 00 D2 30 00 00 D4 30 00 00 92 31 00 00 94 31 00 00 D4 31 00 00 10 32 00 00 4F 32 00 00 ┐0..╥0..╘0..Æ1..ö1..╘1..►2..O2.. 0002D860 8C 32 00 00 8E 32 00 00 A0 32 00 00 DD 32 00 00 1A 33 00 00 57 33 00 00 94 33 00 00 AB 33 00 00 î2..Ä2..á2..▌2..→3..W3..ö3..½3.. 0002D880 E8 33 00 00 25 34 00 00 27 34 00 00 3A 34 00 00 77 34 00 00 B4 34 00 00 F1 34 00 00 2E 35 00 00 Φ3..%4..'4..:4..w4..┤4..±4...5.. 0002D8A0 6B 35 00 00 A8 35 00 00 E5 35 00 00 22 36 00 00 65 36 00 00 A8 36 00 00 B6 36 00 00 F3 36 00 00 k5..¿5..σ5.."6..e6..¿6..╢6..≤6.. 0002D8C0 30 37 00 00 4A 37 00 00 87 37 00 00 A1 37 00 00 E9 37 00 00 31 38 00 00 33 38 00 00 3B 3A 00 00 07..J7..ç7..í7..Θ7..18..38..;:.. 0002D8E0 3D 3A 00 00 5C 3A 00 00 5E 3A 00 00 CB 3A 00 00 CD 3A 00 00 F1 3A 00 00 15 3B 00 00 39 3B 00 00 =:..\:..^:..╦:..═:..±:..§;..9;.. 0002D900 5B 3B 00 00 9D 3B 00 00 C7 3B 00 00 F6 3B 00 00 25 3C 00 00 54 3C 00 00 8F 3C 00 00 B9 3C 00 00 [;..¥;..╟;..÷;..%<..T<..Å<..╣<.. 0002D920 F7 3C 00 00 F9 3C 00 00 9B 3D 00 00 9D 3D 00 00 9F 3D 00 00 A1 3D 00 00 BE 3D 00 00 FA FA F4 EE ≈<..∙<..¢=..¥=..ƒ=..í=..╛=..··⌠ε 0002D940 F4 F4 F4 F4 F4 E8 F4 E2 F4 F4 DC D7 F4 F4 EE F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 ⌠⌠⌠⌠⌠Φ⌠Γ⌠⌠▄╫⌠⌠ε⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠ 0002D960 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 D1 F4 CB F4 C5 F4 F4 F4 F4 F4 F4 F4 F4 F4 ⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠╤⌠╦⌠┼⌠⌠⌠⌠⌠⌠⌠⌠⌠ 0002D980 F4 F4 F4 F4 F4 EE F4 F4 F4 F4 05 00 00 02 30 2A F0 00 05 03 00 00 05 00 00 00 00 00 00 00 05 03 ⌠⌠⌠⌠⌠ε⌠⌠⌠⌠♣..☻0*≡.♣♥..♣.......♣♥ 0002D9A0 00 00 05 00 00 08 30 2A F0 00 05 03 00 00 04 00 00 01 30 2A F0 00 00 00 05 00 00 00 00 00 00 00 ..♣..◘0*≡.♣♥..♦..☺0*≡...♣....... 0002D9C0 05 01 00 00 05 00 00 05 30 2A F0 00 05 03 00 00 05 00 00 09 30 2A F0 00 05 03 00 00 05 00 00 03 ♣☺..♣..♣0*≡.♣♥..♣..○0*≡.♣♥..♣..♥ 0002D9E0 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 01 00 4E 0*≡.♣♥..♣..☺0*≡.♣♥..♣..☺0*≡.♣☺.N 0002DA00 BE 3D 00 00 C0 3D 00 00 2C 3E 00 00 2E 3E 00 00 52 3E 00 00 76 3E 00 00 9A 3E 00 00 BC 3E 00 00 ╛=..└=..,>...>..R>..v>..Ü>..╝>.. 0002DA20 F4 3E 00 00 2E 3F 00 00 5D 3F 00 00 8C 3F 00 00 C0 3F 00 00 F4 3F 00 00 23 40 00 00 5B 40 00 00 ⌠>...?..]?..î?..└?..⌠?..#@..[@.. 0002DA40 5D 40 00 00 9D 40 00 00 9F 40 00 00 A1 40 00 00 A3 40 00 00 BE 40 00 00 C0 40 00 00 08 41 00 00 ]@..¥@..ƒ@..í@..ú@..╛@..└@..◘A.. 0002DA60 0A 41 00 00 0C 41 00 00 27 41 00 00 29 41 00 00 27 43 00 00 29 43 00 00 2B 43 00 00 2D 43 00 00 ◙A..♀A..'A..)A..'C..)C..+C..-C.. 0002DA80 49 43 00 00 62 43 00 00 64 43 00 00 A2 43 00 00 A4 43 00 00 D4 43 00 00 D6 43 00 00 0B 44 00 00 IC..bC..dC..óC..ñC..╘C..╓C..♂D.. 0002DAA0 41 44 00 00 7C 44 00 00 B8 44 00 00 EA 44 00 00 1C 45 00 00 4E 45 00 00 85 45 00 00 BA 45 00 00 AD..|D..╕D..ΩD..∟E..NE..àE..║E.. 0002DAC0 F0 45 00 00 1A 46 00 00 1C 46 00 00 1E 46 00 00 4A 46 00 00 4C 46 00 00 70 46 00 00 94 46 00 00 ≡E..→F..∟F..▲F..JF..LF..pF..öF.. 0002DAE0 B8 46 00 00 DA 46 00 00 12 47 00 00 4F 47 00 00 87 47 00 00 AF 47 00 00 E8 47 00 00 1D 48 00 00 ╕F..┌F..↕G..OG..çG..»G..ΦG..↔H.. 0002DB00 57 48 00 00 9C 48 00 00 DA 48 00 00 DC 48 00 00 A5 49 00 00 09 4A 00 00 40 4A 00 00 66 4A 00 00 WH..£H..┌H..▄H..ÑI..○J..@J..fJ.. 0002DB20 96 4A 00 00 D7 4A 00 00 EC 4A 00 00 01 4B 00 00 16 4B 00 00 2B 4B 00 00 58 4B 00 00 88 4B 00 00 ûJ..╫J..∞J..☺K..▬K..+K..XK..êK.. 0002DB40 AB 4B 00 00 CF 4B 00 00 FA F4 FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA ½K..╧K..·⌠······················ 0002DB60 FA EE FA E8 FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA EE FA FA FA FA ·ε·Φ·······················ε···· 0002DB80 FA FA FA FA FA FA FA FA FA FA FA DF D6 CD CD CD CD CD CD CD CD CD CD CD CD 00 08 00 00 01 30 2A ···········▀╓════════════.◘..☺0* 0002DBA0 F0 00 05 03 11 8A 05 13 76 FA 00 00 08 00 00 02 30 2A F0 00 05 03 11 8A 05 13 76 FA 00 00 08 00 ≡.♣♥◄è♣‼v·..◘..☻0*≡.♣♥◄è♣‼v·..◘. 0002DBC0 00 04 30 2A F0 00 05 03 11 8A 05 13 76 FA 00 00 05 00 00 07 30 2A F0 00 05 03 00 00 05 00 00 00 .♦0*≡.♣♥◄è♣‼v·..♣..•0*≡.♣♥..♣... 0002DBE0 00 00 00 00 05 03 00 00 05 00 00 02 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 51 ....♣♥..♣..☻0*≡.♣♥..♣..☺0*≡.♣♥.Q 0002DC00 CF 4B 00 00 04 4C 00 00 47 4C 00 00 82 4C 00 00 9B 4C 00 00 9D 4C 00 00 9F 4C 00 00 A1 4C 00 00 ╧K..♦L..GL..éL..¢L..¥L..ƒL..íL.. 0002DC20 C4 4C 00 00 C6 4C 00 00 E9 4C 00 00 EB 4C 00 00 D3 4E 00 00 F7 4E 00 00 F9 4E 00 00 FB 4F 00 00 ─L..╞L..ΘL..δL..╙N..≈N..∙N..√O.. 0002DC40 FD 4F 00 00 FF 4F 00 00 01 50 00 00 20 50 00 00 22 50 00 00 47 50 00 00 6C 50 00 00 91 50 00 00 ²O.. O..☺P.. P.."P..GP..lP..æP.. 0002DC60 B4 50 00 00 EF 50 00 00 2A 51 00 00 64 51 00 00 9E 51 00 00 D9 51 00 00 14 52 00 00 4F 52 00 00 ┤P..∩P..*Q..dQ..₧Q..┘Q..¶R..OR.. 0002DC80 8A 52 00 00 8C 52 00 00 8E 52 00 00 90 52 00 00 BE 52 00 00 C0 52 00 00 A1 53 00 00 A3 53 00 00 èR..îR..ÄR..ÉR..╛R..└R..íS..úS.. 0002DCA0 A5 53 00 00 A7 53 00 00 CB 53 00 00 CD 53 00 00 F9 53 00 00 18 54 00 00 1A 54 00 00 1C 54 00 00 ÑS..ºS..╦S..═S..∙S..↑T..→T..∟T.. 0002DCC0 48 54 00 00 4A 54 00 00 6F 54 00 00 94 54 00 00 B9 54 00 00 DC 54 00 00 12 55 00 00 51 55 00 00 HT..JT..oT..öT..╣T..▄T..↕U..QU.. 0002DCE0 93 55 00 00 CE 55 00 00 09 56 00 00 3F 56 00 00 7D 56 00 00 AF 56 00 00 B1 56 00 00 11 57 00 00 ôU..╬U..○V..?V..}V..»V..▒V..◄W.. 0002DD00 24 57 00 00 32 57 00 00 C8 57 00 00 FB 57 00 00 22 58 00 00 4A 58 00 00 7E 58 00 00 80 58 00 00 $W..2W..╚W..√W.."X..JX..~X..ÇX.. 0002DD20 82 58 00 00 84 58 00 00 A7 58 00 00 A9 58 00 00 A7 59 00 00 A9 59 00 00 F7 F7 F7 F7 F1 F1 F1 F1 éX..äX..ºX..⌐X..ºY..⌐Y..≈≈≈≈±±±± 0002DD40 F1 F1 F1 EB E5 F1 DF F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 DF F1 F1 ±±±δσ±▀±±±±±±±±±±±±±±±±±±±±±±▀±± 0002DD60 F1 F1 F1 F1 F1 F1 F1 E5 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 D6 CD CD C4 CD CD CD CD F1 F1 ±±±±±±±σ±±±±±±±±±±±±±±╓══─════±± 0002DD80 F1 F1 F1 DF F1 00 00 00 08 00 00 03 30 2A F0 00 05 03 11 6F 04 13 92 FB 00 00 08 00 00 01 30 2A ±±±▀±...◘..♥0*≡.♣♥◄o♦‼Æ√..◘..☺0* 0002DDA0 F0 00 05 03 11 6F 04 13 92 FB 00 00 08 00 00 02 30 2A F0 00 05 03 11 6F 04 13 92 FB 00 00 05 00 ≡.♣♥◄o♦‼Æ√..◘..☻0*≡.♣♥◄o♦‼Æ√..♣. 0002DDC0 00 04 30 2A F0 00 05 03 00 00 05 00 00 00 00 00 00 00 05 03 00 00 05 00 00 07 30 2A F0 00 05 03 .♦0*≡.♣♥..♣.......♣♥..♣..•0*≡.♣♥ 0002DDE0 00 00 05 00 00 01 30 2A F0 00 05 03 00 00 08 00 00 01 30 2A F0 00 05 03 11 8A 05 13 76 FA 00 4D ..♣..☺0*≡.♣♥..◘..☺0*≡.♣♥◄è♣‼v·.M 0002DE00 A9 59 00 00 AB 59 00 00 CC 59 00 00 CE 59 00 00 F2 59 00 00 16 5A 00 00 3A 5A 00 00 5C 5A 00 00 ⌐Y..½Y..╠Y..╬Y..≥Y..▬Z..:Z..\Z.. 0002DE20 8F 5A 00 00 C0 5A 00 00 FC 5A 00 00 36 5B 00 00 70 5B 00 00 AA 5B 00 00 E4 5B 00 00 1E 5C 00 00 ÅZ..└Z..ⁿZ..6[..p[..¬[..Σ[..▲\.. 0002DE40 20 5C 00 00 89 5C 00 00 D0 5C 00 00 40 5D 00 00 42 5D 00 00 98 5D 00 00 9A 5D 00 00 9C 5D 00 00 \..ë\..╨\..@]..B]..ÿ]..Ü]..£].. 0002DE60 9E 5D 00 00 BF 5D 00 00 C1 5D 00 00 DB 5E 00 00 DD 5E 00 00 06 5F 00 00 31 5F 00 00 60 5F 00 00 ₧]..┐]..┴]..█^..▌^..♠_..1_..`_.. 0002DE80 95 5F 00 00 C9 5F 00 00 F9 5F 00 00 28 60 00 00 56 60 00 00 85 60 00 00 B2 60 00 00 DE 60 00 00 ò_..╔_..∙_..(`..V`..à`..▓`..▐`.. 0002DEA0 12 61 00 00 45 61 00 00 6F 61 00 00 9B 61 00 00 DA 61 00 00 16 62 00 00 18 62 00 00 DF 65 00 00 ↕a..Ea..oa..¢a..┌a..▬b..↑b..▀e.. 0002DEC0 E1 65 00 00 9E 67 00 00 A0 67 00 00 A2 67 00 00 A4 67 00 00 CE 67 00 00 D0 67 00 00 F4 67 00 00 ße..₧g..ág..óg..ñg..╬g..╨g..⌠g.. 0002DEE0 18 68 00 00 3C 68 00 00 5E 68 00 00 92 68 00 00 C3 68 00 00 F5 68 00 00 27 69 00 00 68 69 00 00 ↑h..<h..^h..Æh..├h..⌡h..'i..hi.. 0002DF00 9D 69 00 00 D9 69 00 00 0B 6A 00 00 0D 6A 00 00 85 6A 00 00 BC 6A 00 00 EA 6A 00 00 2B 6B 00 00 ¥i..┘i..♂j..♪j..àj..╝j..Ωj..+k.. 0002DF20 57 6B 00 00 DD 6B 00 00 FA F4 FA FA FA FA FA FA FA FA FA FA FA FA FA FA EB E2 EB FA DC FA FA FA Wk..▌k..·⌠··············δΓδ·▄··· 0002DF40 FA FA D6 FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA D0 FA CA FA FA FA FA FA FA FA ··╓···················╨·╩······· 0002DF60 FA FA FA FA FA FA FA FA FA FA C2 BA C2 C2 C2 C2 BA 00 00 00 07 04 00 02 30 2A F0 00 11 8A 05 13 ··········┬║┬┬┬┬║...•♦.☻0*≡.◄è♣‼ 0002DF80 77 FA 00 00 07 04 00 01 30 2A F0 00 11 8A 05 13 77 FA 00 00 05 00 00 06 30 2A F0 00 05 03 00 00 w·..•♦.☺0*≡.◄è♣‼w·..♣..♠0*≡.♣♥.. 0002DFA0 05 00 00 0E 30 2A F0 00 05 03 00 00 05 00 00 04 30 2A F0 00 05 03 00 00 05 00 00 02 30 2A F0 00 ♣..♫0*≡.♣♥..♣..♦0*≡.♣♥..♣..☻0*≡. 0002DFC0 05 03 00 00 08 00 00 01 30 2A F0 00 05 03 11 6F 04 13 91 FB 00 00 08 00 00 02 30 2A F0 00 05 03 ♣♥..◘..☺0*≡.♣♥◄o♦‼æ√..◘..☻0*≡.♣♥ 0002DFE0 11 6F 04 13 91 FB 00 00 05 00 00 00 00 00 00 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 49 ◄o♦‼æ√..♣.......♣♥..♣..☺0*≡.♣♥.I 0002E000 DD 6B 00 00 92 6C 00 00 72 6D 00 00 74 6D 00 00 A3 6D 00 00 A5 6D 00 00 C4 6D 00 00 E6 6D 00 00 ▌k..Æl..rm..tm..úm..Ñm..─m..µm.. 0002E020 FF 6D 00 00 01 6E 00 00 08 70 00 00 0A 70 00 00 0C 70 00 00 0E 70 00 00 38 70 00 00 3A 70 00 00 m..☺n..◘p..◙p..♀p..♫p..8p..:p.. 0002E040 A5 70 00 00 BF 70 00 00 C1 70 00 00 C3 70 00 00 C5 70 00 00 EE 70 00 00 F0 70 00 00 59 71 00 00 Ñp..┐p..┴p..├p..┼p..εp..≡p..Yq.. 0002E060 94 71 00 00 AC 71 00 00 AE 71 00 00 B0 71 00 00 B2 71 00 00 D6 71 00 00 D8 71 00 00 41 72 00 00 öq..¼q..«q..░q..▓q..╓q..╪q..Ar.. 0002E080 5B 72 00 00 5D 72 00 00 5F 72 00 00 61 72 00 00 84 72 00 00 86 72 00 00 ED 72 00 00 26 73 00 00 [r..]r.._r..ar..är..år..φr..&s.. 0002E0A0 3E 73 00 00 40 73 00 00 65 73 00 00 67 73 00 00 17 74 00 00 55 74 00 00 57 74 00 00 A1 74 00 00 >s..@s..es..gs..↨t..Ut..Wt..ít.. 0002E0C0 A3 74 00 00 A5 74 00 00 A7 74 00 00 CC 74 00 00 CE 74 00 00 E1 74 00 00 F4 74 00 00 F6 74 00 00 út..Ñt..ºt..╠t..╬t..ßt..⌠t..÷t.. 0002E0E0 9D 75 00 00 9F 75 00 00 E9 75 00 00 EB 75 00 00 ED 75 00 00 EF 75 00 00 12 76 00 00 14 76 00 00 ¥u..ƒu..Θu..δu..φu..∩u..↕v..¶v.. 0002E100 27 76 00 00 3A 76 00 00 3C 76 00 00 E2 76 00 00 E4 76 00 00 F4 E8 DF D9 D3 D3 D3 D3 D3 CD D3 D3 'v..:v..<v..Γv..Σv..⌠Φ▀┘╙╙╙╙╙═╙╙ 0002E120 D3 D3 D3 C8 BF D3 D3 D3 D3 D3 C8 BA BA D3 D3 D3 D3 D3 C8 BA D3 D3 D3 D3 D3 C8 BA BA D3 D9 D3 B5 ╙╙╙╚┐╙╙╙╙╙╚║║╙╙╙╙╙╚║╙╙╙╙╙╚║║╙┘╙╡ 0002E140 BA D3 D3 D3 D3 D3 D3 D3 BA BA D3 AF D3 D3 D3 D3 D3 D3 D3 BA BA D3 AF D3 00 00 00 00 00 00 05 00 ║╙╙╙╙╙╙╙║║╙»╙╙╙╙╙╙╙║║╙»╙......♣. 0002E160 00 03 30 2A F0 00 05 03 00 00 04 06 00 03 30 2A F0 00 00 00 04 06 00 01 30 2A F0 00 00 00 08 00 .♥0*≡.♣♥..♦♠.♥0*≡...♦♠.☺0*≡...◘. 0002E180 00 01 30 2A F0 00 05 03 11 A5 06 13 5B F9 00 00 04 06 00 02 30 2A F0 00 00 00 05 00 00 07 30 2A .☺0*≡.♣♥◄Ñ♠‼[∙..♦♠.☻0*≡...♣..•0* 0002E1A0 F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 00 05 00 00 00 00 00 00 00 05 03 00 00 08 00 ≡.♣♥..♣..☺0*≡.♣♥..♣.......♣♥..◘. 0002E1C0 00 01 30 2A F0 00 05 03 11 18 06 13 E8 F9 00 00 0B 00 00 04 30 2A F0 00 05 03 11 8A 05 13 77 FA .☺0*≡.♣♥◄↑♠‼Φ∙..♂..♦0*≡.♣♥◄è♣‼w· 0002E1E0 0F 05 00 01 1C 01 00 00 0B 00 00 03 30 2A F0 00 05 03 11 8A 05 13 77 FA 0F 05 00 01 1C 01 00 44 ☼♣.☺∟☺..♂..♥0*≡.♣♥◄è♣‼w·☼♣.☺∟☺.D 0002E200 E4 76 00 00 92 77 00 00 94 77 00 00 DE 77 00 00 E0 77 00 00 E2 77 00 00 06 78 00 00 08 78 00 00 Σv..Æw..öw..▐w..αw..Γw..♠x..◘x.. 0002E220 1F 78 00 00 36 78 00 00 57 78 00 00 59 78 00 00 F9 78 00 00 FB 78 00 00 52 79 00 00 54 79 00 00 ▼x..6x..Wx..Yx..∙x..√x..Ry..Ty.. 0002E240 C7 79 00 00 C9 79 00 00 13 7A 00 00 15 7A 00 00 17 7A 00 00 19 7A 00 00 43 7A 00 00 45 7A 00 00 ╟y..╔y..‼z..§z..↨z..↓z..Cz..Ez.. 0002E260 65 7A 00 00 9D 7A 00 00 9F 7A 00 00 A1 7A 00 00 A3 7A 00 00 CC 7A 00 00 CE 7A 00 00 04 7B 00 00 ez..¥z..ƒz..íz..úz..╠z..╬z..♦{.. 0002E280 29 7B 00 00 2B 7B 00 00 2D 7B 00 00 2F 7B 00 00 50 7B 00 00 52 7B 00 00 70 7B 00 00 A5 7B 00 00 ){..+{..-{../{..P{..R{..p{..Ñ{.. 0002E2A0 A7 7B 00 00 A9 7B 00 00 DB 7B 00 00 DD 7B 00 00 01 7C 00 00 25 7C 00 00 49 7C 00 00 6B 7C 00 00 º{..⌐{..█{..▌{..☺|..%|..I|..k|.. 0002E2C0 9E 7C 00 00 CE 7C 00 00 07 7D 00 00 39 7D 00 00 7A 7D 00 00 B7 7D 00 00 E7 7D 00 00 19 7E 00 00 ₧|..╬|..•}..9}..z}..╖}..τ}..↓~.. 0002E2E0 1B 7E 00 00 3F 7E 00 00 60 7E 00 00 98 80 00 00 DB 80 00 00 5D 81 00 00 90 81 00 00 C6 81 00 00 ←~..?~..`~..ÿÇ..█Ç..]ü..Éü..╞ü.. 0002E300 F0 81 00 00 F2 81 00 00 3C 82 00 00 3E 82 00 00 40 82 00 00 42 82 00 00 64 82 00 00 66 82 00 00 ≡ü..≥ü..<é..>é..@é..Bé..dé..fé.. 0002E320 83 82 00 00 A8 82 00 00 AA 82 00 00 F3 82 00 00 F5 82 00 00 F7 82 00 00 20 83 00 00 FA F4 F4 F4 âé..¿é..¬é..≤é..⌡é..≈é.. â..·⌠⌠⌠ 0002E340 F4 EE F4 E9 E9 E9 F4 FA E3 DD E3 DD F4 F4 F4 F4 F4 F4 F4 E9 E9 F4 F4 F4 F4 F4 E9 E9 F4 F4 F4 F4 ⌠ε⌠ΘΘΘ⌠·π▌π▌⌠⌠⌠⌠⌠⌠⌠ΘΘ⌠⌠⌠⌠⌠ΘΘ⌠⌠⌠⌠ 0002E360 F4 E9 E9 F4 F4 EE F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 D5 D5 CD D5 C5 D5 D5 D5 F4 F4 F4 F4 ⌠ΘΘ⌠⌠ε⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠╒╒═╒┼╒╒╒⌠⌠⌠⌠ 0002E380 F4 F4 F4 E9 E9 F4 F4 F4 F4 EE 07 04 00 02 30 2A F0 00 11 8A 05 13 76 FA 00 00 07 04 00 09 30 2A ⌠⌠⌠ΘΘ⌠⌠⌠⌠ε•♦.☻0*≡.◄è♣‼v·..•♦.○0* 0002E3A0 F0 00 11 8A 05 13 76 FA 00 00 07 04 00 01 30 2A F0 00 11 8A 05 13 76 FA 00 00 05 03 00 02 30 2A ≡.◄è♣‼v·..•♦.☺0*≡.◄è♣‼v·..♣♥.☻0* 0002E3C0 F0 00 05 03 00 00 05 03 00 01 30 2A F0 00 05 03 00 00 04 06 00 01 30 2A F0 00 00 00 05 00 00 00 ≡.♣♥..♣♥.☺0*≡.♣♥..♦♠.☺0*≡...♣... 0002E3E0 00 00 00 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 00 05 03 00 03 30 2A F0 00 05 03 00 4E ....♣♥..♣..☺0*≡.♣♥..♣♥.♥0*≡.♣♥.N 0002E400 20 83 00 00 22 83 00 00 46 83 00 00 6A 83 00 00 8E 83 00 00 B0 83 00 00 D7 83 00 00 FF 83 00 00 â.."â..Fâ..jâ..Äâ..░â..╫â.. â.. 0002E420 3D 84 00 00 65 84 00 00 8C 84 00 00 B4 84 00 00 F2 84 00 00 2E 85 00 00 30 85 00 00 5F 85 00 00 =ä..eä..îä..┤ä..≥ä...à..0à.._à.. 0002E440 72 85 00 00 97 85 00 00 BA 85 00 00 BC 85 00 00 AE 86 00 00 B0 86 00 00 EB 87 00 00 ED 87 00 00 rà..ùà..║à..╝à..«å..░å..δç..φç.. 0002E460 74 89 00 00 76 89 00 00 78 89 00 00 7A 89 00 00 96 89 00 00 98 89 00 00 84 8A 00 00 86 8A 00 00 të..vë..xë..zë..ûë..ÿë..äè..åè.. 0002E480 88 8A 00 00 8A 8A 00 00 A7 8A 00 00 A9 8A 00 00 34 8B 00 00 4C 8B 00 00 4E 8B 00 00 82 8B 00 00 êè..èè..ºè..⌐è..4ï..Lï..Nï..éï.. 0002E4A0 84 8B 00 00 A8 8B 00 00 CC 8B 00 00 F0 8B 00 00 12 8C 00 00 4A 8C 00 00 81 8C 00 00 B3 8C 00 00 äï..¿ï..╠ï..≡ï..↕î..Jî..üî..│î.. 0002E4C0 E5 8C 00 00 1F 8D 00 00 5F 8D 00 00 A1 8D 00 00 E3 8D 00 00 E5 8D 00 00 E7 8D 00 00 E9 8D 00 00 σî..▼ì.._ì..íì..πì..σì..τì..Θì.. 0002E4E0 0D 8E 00 00 0F 8E 00 00 DF 8E 00 00 E1 8E 00 00 E3 8E 00 00 E5 8E 00 00 06 8F 00 00 08 8F 00 00 ♪Ä..☼Ä..▀Ä..ßÄ..πÄ..σÄ..♠Å..◘Å.. 0002E500 2C 8F 00 00 50 8F 00 00 74 8F 00 00 96 8F 00 00 CA 8F 00 00 FE 8F 00 00 38 90 00 00 72 90 00 00 ,Å..PÅ..tÅ..ûÅ..╩Å..■Å..8É..rÉ.. 0002E520 AC 90 00 00 DF 90 00 00 12 91 00 00 48 91 00 00 4A 91 00 00 66 91 00 00 82 91 00 00 9D 91 00 00 ¼É..▀É..↕æ..Hæ..Jæ..fæ..éæ..¥æ.. 0002E540 B8 91 00 00 FA FA FA FA FA FA FA FA FA FA FA FA FA FA F4 F4 F4 F4 F4 EE F4 E8 F4 E2 F4 FA FA FA ╕æ..··············⌠⌠⌠⌠⌠ε⌠Φ⌠Γ⌠··· 0002E560 FA DC FA FA FA FA FA D6 D0 FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA CA FA FA ·▄·····╓╨····················╩·· 0002E580 FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA 05 00 00 03 30 2A F0 00 05 03 00 00 ····················♣..♥0*≡.♣♥.. 0002E5A0 05 00 00 00 00 00 00 00 05 03 00 00 05 00 00 02 30 2A F0 00 05 03 00 00 05 00 00 04 30 2A F0 00 ♣.......♣♥..♣..☻0*≡.♣♥..♣..♦0*≡. 0002E5C0 05 03 00 00 05 03 00 06 30 2A F0 00 05 03 00 00 05 03 00 05 30 2A F0 00 05 03 00 00 05 03 00 04 ♣♥..♣♥.♠0*≡.♣♥..♣♥.♣0*≡.♣♥..♣♥.♦ 0002E5E0 30 2A F0 00 05 03 00 00 05 03 00 01 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 50 0*≡.♣♥..♣♥.☺0*≡.♣♥..♣..☺0*≡.♣♥.P 0002E600 B8 91 00 00 D2 91 00 00 D4 91 00 00 D6 91 00 00 EC 91 00 00 EE 91 00 00 7E 92 00 00 A1 92 00 00 ╕æ..╥æ..╘æ..╓æ..∞æ..εæ..~Æ..íÆ.. 0002E620 A3 92 00 00 C7 92 00 00 EB 92 00 00 0F 93 00 00 31 93 00 00 68 93 00 00 A0 93 00 00 D6 93 00 00 úÆ..╟Æ..δÆ..☼ô..1ô..hô..áô..╓ô.. 0002E640 0B 94 00 00 4E 94 00 00 94 94 00 00 CD 94 00 00 07 95 00 00 09 95 00 00 2F 95 00 00 56 95 00 00 ♂ö..Nö..öö..═ö..•ò..○ò../ò..Vò.. 0002E660 77 95 00 00 54 96 00 00 91 96 00 00 F9 96 00 00 A2 98 00 00 A4 98 00 00 A6 98 00 00 A8 98 00 00 wò..Tû..æû..∙û..óÿ..ñÿ..ªÿ..¿ÿ.. 0002E680 CA 98 00 00 CC 98 00 00 08 99 00 00 1F 99 00 00 21 99 00 00 4D 99 00 00 66 99 00 00 77 99 00 00 ╩ÿ..╠ÿ..◘Ö..▼Ö..!Ö..MÖ..fÖ..wÖ.. 0002E6A0 88 99 00 00 99 99 00 00 AA 99 00 00 BC 99 00 00 CE 99 00 00 E0 99 00 00 E2 99 00 00 10 9A 00 00 êÖ..ÖÖ..¬Ö..╝Ö..╬Ö..αÖ..ΓÖ..►Ü.. 0002E6C0 29 9A 00 00 3A 9A 00 00 4B 9A 00 00 5C 9A 00 00 6D 9A 00 00 7F 9A 00 00 91 9A 00 00 A3 9A 00 00 )Ü..:Ü..KÜ..\Ü..mÜ..⌂Ü..æÜ..úÜ.. 0002E6E0 A5 9A 00 00 DC 9A 00 00 FB 9A 00 00 FD 9A 00 00 AA 9B 00 00 AC 9B 00 00 AE 9B 00 00 EA 9B 00 00 ÑÜ..▄Ü..√Ü..²Ü..¬¢..¼¢..«¢..Ω¢.. 0002E700 01 9C 00 00 03 9C 00 00 28 9C 00 00 3A 9C 00 00 4A 9C 00 00 5A 9C 00 00 6A 9C 00 00 7A 9C 00 00 ☺£..♥£..(£..:£..J£..Z£..j£..z£.. 0002E720 8A 9C 00 00 8C 9C 00 00 B1 9C 00 00 C3 9C 00 00 D3 9C 00 00 E3 9C 00 00 F3 9C 00 00 03 9D 00 00 è£..î£..▒£..├£..╙£..π£..≤£..♥¥.. 0002E740 13 9D 00 00 15 9D 00 00 48 9D 00 00 6A 9D 00 00 6C 9D 00 00 FA FA FA FA FA F4 EE FA FA FA FA FA ‼¥..§¥..H¥..j¥..l¥..·····⌠ε····· 0002E760 FA FA FA FA FA FA FA FA FA E9 E9 E9 E4 E9 DF DA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA ·········ΘΘΘΣΘ▀┌················ 0002E780 FA FA EE FA FA FA FA FA FA FA FA FA FA FA FA D4 FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA ··ε············╘················ 0002E7A0 FA FA FA FA FA FA FA FA 05 03 00 03 30 2A F0 00 05 03 00 00 04 04 00 07 30 2A F0 00 00 00 04 04 ········♣♥.♥0*≡.♣♥..♦♦.•0*≡...♦♦ 0002E7C0 00 02 30 2A F0 00 00 00 04 04 00 04 30 2A F0 00 00 00 04 04 00 01 30 2A F0 00 00 00 05 00 00 00 .☻0*≡...♦♦.♦0*≡...♦♦.☺0*≡...♣... 0002E7E0 00 00 00 00 05 03 00 00 05 00 00 02 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 54 ....♣♥..♣..☻0*≡.♣♥..♣..☺0*≡.♣♥.T 0002E800 6C 9D 00 00 19 9E 00 00 1B 9E 00 00 EE 9E 00 00 F0 9E 00 00 04 A0 00 00 22 A0 00 00 24 A0 00 00 l¥..↓₧..←₧..ε₧..≡₧..♦á.."á..$á.. 0002E820 B9 A0 00 00 BB A0 00 00 4E A1 00 00 50 A1 00 00 60 A1 00 00 62 A1 00 00 7E A1 00 00 97 A1 00 00 ╣á..╗á..Ní..Pí..`í..bí..~í..ùí.. 0002E840 C0 A1 00 00 D7 A1 00 00 D9 A1 00 00 DB A1 00 00 FB A1 00 00 FD A1 00 00 21 A2 00 00 45 A2 00 00 └í..╫í..┘í..█í..√í..²í..!ó..Eó.. 0002E860 69 A2 00 00 8B A2 00 00 CA A2 00 00 0F A3 00 00 53 A3 00 00 95 A3 00 00 E6 A3 00 00 39 A4 00 00 ió..ïó..╩ó..☼ú..Sú..òú..µú..9ñ.. 0002E880 80 A4 00 00 BA A4 00 00 BC A4 00 00 BE A4 00 00 C0 A4 00 00 E1 A4 00 00 E3 A4 00 00 BD A6 00 00 Çñ..║ñ..╝ñ..╛ñ..└ñ..ßñ..πñ..╜ª.. 0002E8A0 BF A6 00 00 4D A7 00 00 4F A7 00 00 87 A7 00 00 89 A7 00 00 C5 A7 00 00 C7 A7 00 00 02 A8 00 00 ┐ª..Mº..Oº..çº..ëº..┼º..╟º..☻¿.. 0002E8C0 04 A8 00 00 3F A8 00 00 41 A8 00 00 7C A8 00 00 7E A8 00 00 F0 AA 00 00 F2 AA 00 00 17 AB 00 00 ♦¿..?¿..A¿..|¿..~¿..≡¬..≥¬..↨½.. 0002E8E0 55 AB 00 00 73 AB 00 00 92 AB 00 00 B2 AB 00 00 B4 AB 00 00 BE AC 00 00 C0 AC 00 00 EC AC 00 00 U½..s½..ƽ..▓½..┤½..╛¼..└¼..∞¼.. 0002E900 18 AD 00 00 43 AD 00 00 6E AD 00 00 99 AD 00 00 C5 AD 00 00 F0 AD 00 00 1C AE 00 00 48 AE 00 00 ↑¡..C¡..n¡..Ö¡..┼¡..≡¡..∟«..H«.. 0002E920 74 AE 00 00 76 AE 00 00 1D AF 00 00 1F AF 00 00 42 B0 00 00 44 B0 00 00 FA F4 EE F4 E8 E2 F4 EE t«..v«..↔»..▼»..B░..D░..·⌠ε⌠ΦΓ⌠ε 0002E940 F4 DC F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 D6 F4 ⌠▄⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠╓⌠ 0002E960 DC F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 F4 D0 F4 F4 F4 F4 F4 F4 F4 E8 F4 CA CA CA CA CA CA CA CA CA CA ▄⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠╨⌠⌠⌠⌠⌠⌠⌠Φ⌠╩╩╩╩╩╩╩╩╩╩ 0002E980 F4 EE F4 E8 F4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 01 30 2A F0 00 05 01 00 00 ⌠ε⌠Φ⌠...............♣..☺0*≡.♣☺.. 0002E9A0 05 00 00 09 30 2A F0 00 05 03 00 00 05 00 00 07 30 2A F0 00 05 03 00 00 05 00 00 02 30 2A F0 00 ♣..○0*≡.♣♥..♣..•0*≡.♣♥..♣..☻0*≡. 0002E9C0 05 03 00 00 05 00 00 00 00 00 00 00 05 03 00 00 05 00 00 04 30 2A F0 00 05 03 00 00 05 00 00 03 ♣♥..♣.......♣♥..♣..♦0*≡.♣♥..♣..♥ 0002E9E0 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 00 05 03 00 03 30 2A F0 00 05 03 00 4D 0*≡.♣♥..♣..☺0*≡.♣♥..♣♥.♥0*≡.♣♥.M 0002EA00 44 B0 00 00 6D B0 00 00 6F B0 00 00 82 B0 00 00 84 B0 00 00 91 B2 00 00 93 B2 00 00 95 B2 00 00 D░..m░..o░..é░..ä░..æ▓..ô▓..ò▓.. 0002EA20 97 B2 00 00 A2 B2 00 00 A4 B2 00 00 88 B3 00 00 8A B3 00 00 4E B4 00 00 50 B4 00 00 6C B6 00 00 ù▓..ó▓..ñ▓..ê│..è│..N┤..P┤..l╢.. 0002EA40 6E B6 00 00 D8 B8 00 00 DA B8 00 00 10 BB 00 00 12 BB 00 00 C4 BB 00 00 C6 BB 00 00 9C BC 00 00 n╢..╪╕..┌╕..►╗..↕╗..─╗..╞╗..£╝.. 0002EA60 9E BC 00 00 AB BD 00 00 AD BD 00 00 B1 BE 00 00 B3 BE 00 00 B5 BE 00 00 B7 BE 00 00 D9 BE 00 00 ₧╝..½╜..¡╜..▒╛..│╛..╡╛..╖╛..┘╛.. 0002EA80 DB BE 00 00 A2 BF 00 00 A4 BF 00 00 F5 C0 00 00 F7 C0 00 00 E4 C2 00 00 E6 C2 00 00 E8 C2 00 00 █╛..ó┐..ñ┐..⌡└..≈└..Σ┬..µ┬..Φ┬.. 0002EAA0 FE C2 00 00 00 C3 00 00 AE C5 00 00 B0 C5 00 00 9C C7 00 00 9E C7 00 00 C4 C9 00 00 C6 C9 00 00 ■┬...├..«┼..░┼..£╟..₧╟..─╔..╞╔.. 0002EAC0 B7 CB 00 00 B9 CB 00 00 6C CD 00 00 6E CD 00 00 70 CD 00 00 72 CD 00 00 89 CD 00 00 8B CD 00 00 ╖╦..╣╦..l═..n═..p═..r═..ë═..ï═.. 0002EAE0 88 CE 00 00 8A CE 00 00 4E D1 00 00 50 D1 00 00 56 D3 00 00 58 D3 00 00 CE D4 00 00 D0 D4 00 00 ê╬..è╬..N╤..P╤..V╙..X╙..╬╘..╨╘.. 0002EB00 D2 D4 00 00 D4 D4 00 00 E6 D4 00 00 E8 D4 00 00 9F D6 00 00 A1 D6 00 00 16 D8 00 00 18 D8 00 00 ╥╘..╘╘..µ╘..Φ╘..ƒ╓..í╓..▬╪..↑╪.. 0002EB20 B1 D9 00 00 B3 D9 00 00 FA F4 F4 F4 EE F4 F4 F4 F4 F4 E8 F4 E8 F4 EE F4 E2 F4 EE F4 E8 F4 E8 F4 ▒┘..│┘..·⌠⌠⌠ε⌠⌠⌠⌠⌠Φ⌠Φ⌠ε⌠Γ⌠ε⌠Φ⌠Φ⌠ 0002EB40 DC F4 DC F4 F4 F4 F4 F4 E8 F4 D6 F4 D0 F4 F4 F4 F4 CA F4 D0 F4 EE F4 D0 F4 C4 F4 F4 F4 F4 F4 DC ▄⌠▄⌠⌠⌠⌠⌠Φ⌠╓⌠╨⌠⌠⌠⌠╩⌠╨⌠ε⌠╨⌠─⌠⌠⌠⌠⌠▄ 0002EB60 F4 CA F4 BE F4 D6 F4 F4 F4 F4 F4 C4 F4 D6 F4 C4 F4 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 ⌠╩⌠╛⌠╓⌠⌠⌠⌠⌠─⌠╓⌠─⌠...........♣... 0002EB80 00 00 00 00 05 03 00 00 05 00 00 06 30 2A F0 00 05 03 00 00 05 00 00 0A 30 2A F0 00 05 03 00 00 ....♣♥..♣..♠0*≡.♣♥..♣..◙0*≡.♣♥.. 0002EBA0 05 00 00 07 30 2A F0 00 05 03 00 00 05 00 00 05 30 2A F0 00 05 03 00 00 05 00 00 04 30 2A F0 00 ♣..•0*≡.♣♥..♣..♣0*≡.♣♥..♣..♦0*≡. 0002EBC0 05 03 00 00 05 00 00 09 30 2A F0 00 05 03 00 00 05 00 00 03 30 2A F0 00 05 03 00 00 05 00 00 08 ♣♥..♣..○0*≡.♣♥..♣..♥0*≡.♣♥..♣..◘ 0002EBE0 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 00 05 00 00 00 00 00 00 00 05 01 00 49 0*≡.♣♥..♣..☺0*≡.♣♥..♣.......♣☺.I 0002EC00 B3 D9 00 00 C5 D9 00 00 D7 D9 00 00 FA D9 00 00 1D DA 00 00 48 DA 00 00 73 DA 00 00 75 DA 00 00 │┘..┼┘..╫┘..·┘..↔┌..H┌..s┌..u┌.. 0002EC20 88 DA 00 00 9B DA 00 00 C3 DA 00 00 EB DA 00 00 19 DB 00 00 4D DB 00 00 4F DB 00 00 03 DD 00 00 ê┌..¢┌..├┌..δ┌..↓█..M█..O█..♥▌.. 0002EC40 05 DD 00 00 D9 DD 00 00 DB DD 00 00 DD DD 00 00 EA DD 00 00 EC DD 00 00 FE DE 00 00 00 DF 00 00 ♣▌..┘▌..█▌..▌▌..Ω▌..∞▌..■▐...▀.. 0002EC60 B1 E0 00 00 B3 E0 00 00 26 E2 00 00 28 E2 00 00 2A E2 00 00 2C E2 00 00 3F E2 00 00 41 E2 00 00 ▒α..│α..&Γ..(Γ..*Γ..,Γ..?Γ..AΓ.. 0002EC80 4C E3 00 00 4E E3 00 00 B8 E4 00 00 BA E4 00 00 FA E5 00 00 19 E6 00 00 1B E6 00 00 1F E7 00 00 Lπ..Nπ..╕Σ..║Σ..·σ..↓µ..←µ..▼τ.. 0002ECA0 21 E7 00 00 43 EA 00 00 45 EA 00 00 53 EA 00 00 1E EB 00 00 20 EB 00 00 38 EB 00 00 FD EC 00 00 !τ..CΩ..EΩ..SΩ..▲δ.. δ..8δ..²∞.. 0002ECC0 FF EC 00 00 23 ED 00 00 FC ED 00 00 FE ED 00 00 1B EE 00 00 EE EF 00 00 F0 EF 00 00 0E F0 00 00 ∞..#φ..ⁿφ..■φ..←ε..ε∩..≡∩..♫≡.. 0002ECE0 3B F1 00 00 5E F1 00 00 60 F1 00 00 36 F3 00 00 38 F3 00 00 6A F3 00 00 FA FA FA FA FA FA FA FA ;±..^±..`±..6≤..8≤..j≤..········ 0002ED00 FA FA FA FA FA F4 EE F4 E8 F4 F4 F4 F4 E2 F4 EE F4 DC F4 F4 F4 F4 F4 E2 F4 DC F4 DC D6 F4 E2 F4 ·····⌠ε⌠Φ⌠⌠⌠⌠Γ⌠ε⌠▄⌠⌠⌠⌠⌠Γ⌠▄⌠▄╓⌠Γ⌠ 0002ED20 D0 F4 C7 BE C7 C7 B5 C7 C7 BE C7 C7 B5 C7 C7 AC A7 A2 9C F4 FA 00 00 00 05 00 00 07 30 2A F0 00 ╨⌠╟╛╟╟╡╟╟╛╟╟╡╟╟¼ºó£⌠·...♣..•0*≡. 0002ED40 05 03 00 00 04 00 00 01 30 2A F0 00 00 00 04 00 00 00 00 00 00 00 00 00 08 00 00 05 30 2A F0 00 ♣♥..♦..☺0*≡...♦.........◘..♣0*≡. 0002ED60 05 03 11 1C 01 13 E4 FE 00 00 08 00 00 07 30 2A F0 00 05 03 11 1C 01 13 E4 FE 00 00 08 00 00 03 ♣♥◄∟☺‼Σ■..◘..•0*≡.♣♥◄∟☺‼Σ■..◘..♥ 0002ED80 30 2A F0 00 05 03 11 1C 01 13 E4 FE 00 00 08 00 00 01 30 2A F0 00 05 03 11 1C 01 13 E4 FE 00 00 0*≡.♣♥◄∟☺‼Σ■..◘..☺0*≡.♣♥◄∟☺‼Σ■.. 0002EDA0 05 00 00 0B 30 2A F0 00 05 03 00 00 05 00 00 00 00 00 00 00 05 03 00 00 05 00 00 05 30 2A F0 00 ♣..♂0*≡.♣♥..♣.......♣♥..♣..♣0*≡. 0002EDC0 05 03 00 00 05 00 00 04 30 2A F0 00 05 03 00 00 05 00 00 03 30 2A F0 00 05 03 00 00 05 00 00 06 ♣♥..♣..♦0*≡.♣♥..♣..♥0*≡.♣♥..♣..♠ 0002EDE0 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 01 00 3D 0*≡.♣♥..♣..☺0*≡.♣♥..♣..☺0*≡.♣☺.= 0002EE00 6A F3 00 00 9E F3 00 00 D0 F3 00 00 02 F4 00 00 13 F4 00 00 15 F4 00 00 4C F5 00 00 4E F5 00 00 j≤..₧≤..╨≤..☻⌠..‼⌠..§⌠..L⌡..N⌡.. 0002EE20 3E F6 00 00 40 F6 00 00 FC F6 00 00 FE F6 00 00 00 F7 00 00 02 F7 00 00 19 F7 00 00 1B F7 00 00 >÷..@÷..ⁿ÷..■÷...≈..☻≈..↓≈..←≈.. 0002EE40 85 FA 00 00 87 FA 00 00 AF FA 00 00 B1 FA 00 00 E1 FA 00 00 09 FB 00 00 7D FB 00 00 DB FB 00 00 à·..ç·..»·..▒·..ß·..○√..}√..█√.. 0002EE60 93 FC 00 00 10 FD 00 00 41 FD 00 00 B0 FD 00 00 31 FE 00 00 5F FE 00 00 61 FE 00 00 63 FF 00 00 ôⁿ..►²..A²..░²..1■.._■..a■..c .. 0002EE80 65 FF 00 00 67 FF 00 00 69 FF 00 00 7F FF 00 00 81 FF 00 00 00 01 01 00 02 01 01 00 14 01 01 00 e ..g ..i ..⌂ ..ü ...☺☺.☻☺☺.¶☺☺. 0002EEA0 26 01 01 00 28 01 01 00 5F 02 01 00 61 02 01 00 98 02 01 00 CE 02 01 00 06 03 01 00 34 03 01 00 &☺☺.(☺☺._☻☺.a☻☺.ÿ☻☺.╬☻☺.♠♥☺.4♥☺. 0002EEC0 7F 03 01 00 9F 03 01 00 E3 03 01 00 0C 04 01 00 36 04 01 00 79 04 01 00 FE 04 01 00 9F 05 01 00 ⌂♥☺.ƒ♥☺.π♥☺.♀♦☺.6♦☺.y♦☺.■♦☺.ƒ♣☺. 0002EEE0 A8 07 01 00 F6 07 01 00 34 09 01 00 55 09 01 00 57 09 01 00 FA FA FA FA F4 EE F4 E8 F4 E2 F4 F4 ¿•☺.÷•☺.4○☺.U○☺.W○☺.····⌠ε⌠Φ⌠Γ⌠⌠ 0002EF00 F4 F4 F4 DC F4 F4 F4 D3 D3 CA CA C1 CA D3 CA CA D3 F4 B8 F4 F4 F4 F4 F4 B2 F4 F4 F4 F4 EE F4 D3 ⌠⌠⌠▄⌠⌠⌠╙╙╩╩┴╩╙╩╩╙⌠╕⌠⌠⌠⌠⌠▓⌠⌠⌠⌠ε⌠╙ 0002EF20 D3 D3 D3 D3 D3 D3 D3 D3 D3 CA C1 A9 CA A0 D3 F4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ╙╙╙╙╙╙╙╙╙╩┴⌐╩á╙⌠................ 0002EF40 08 00 00 05 30 2A F0 00 05 03 11 D0 02 13 30 FD 00 00 08 00 00 08 30 2A F0 00 05 03 11 D0 02 13 ◘..♣0*≡.♣♥◄╨☻‼0²..◘..◘0*≡.♣♥◄╨☻‼ 0002EF60 30 FD 00 00 05 00 00 06 30 2A F0 00 05 03 00 00 08 00 00 04 30 2A F0 00 05 03 11 53 03 13 AD FC 0²..♣..♠0*≡.♣♥..◘..♦0*≡.♣♥◄S♥‼¡ⁿ 0002EF80 00 00 08 00 00 03 30 2A F0 00 05 03 11 D0 02 13 30 FD 00 00 08 00 00 02 30 2A F0 00 05 03 11 D0 ..◘..♥0*≡.♣♥◄╨☻‼0²..◘..☻0*≡.♣♥◄╨ 0002EFA0 02 13 30 FD 00 00 08 00 00 01 30 2A F0 00 05 03 11 D0 02 13 30 FD 00 00 05 00 00 0C 30 2A F0 00 ☻‼0²..◘..☺0*≡.♣♥◄╨☻‼0²..♣..♀0*≡. 0002EFC0 05 03 00 00 05 00 00 03 30 2A F0 00 05 03 00 00 05 00 00 04 30 2A F0 00 05 03 00 00 05 00 00 05 ♣♥..♣..♥0*≡.♣♥..♣..♦0*≡.♣♥..♣..♣ 0002EFE0 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 01 00 3C 0*≡.♣♥..♣..☺0*≡.♣♥..♣..☺0*≡.♣☺.< 0002F000 57 09 01 00 B0 09 01 00 B2 09 01 00 E0 09 01 00 E2 09 01 00 07 0A 01 00 DF 0A 01 00 BB 0B 01 00 W○☺.░○☺.▓○☺.α○☺.Γ○☺.•◙☺.▀◙☺.╗♂☺. 0002F020 BD 0B 01 00 1B 0C 01 00 1D 0C 01 00 C7 0D 01 00 C9 0D 01 00 CB 0D 01 00 DD 0D 01 00 EF 0D 01 00 ╜♂☺.←♀☺.↔♀☺.╟♪☺.╔♪☺.╦♪☺.▌♪☺.∩♪☺. 0002F040 F1 0D 01 00 E2 0F 01 00 E4 0F 01 00 04 11 01 00 06 11 01 00 61 11 01 00 63 11 01 00 BD 11 01 00 ±♪☺.Γ☼☺.Σ☼☺.♦◄☺.♠◄☺.a◄☺.c◄☺.╜◄☺. 0002F060 BF 11 01 00 9D 12 01 00 9F 12 01 00 F8 13 01 00 FA 13 01 00 47 15 01 00 49 15 01 00 41 16 01 00 ┐◄☺.¥↕☺.ƒ↕☺.°‼☺.·‼☺.G§☺.I§☺.A▬☺. 0002F080 44 16 01 00 46 16 01 00 63 16 01 00 65 16 01 00 14 19 01 00 16 19 01 00 46 19 01 00 76 19 01 00 D▬☺.F▬☺.c▬☺.e▬☺.¶↓☺.▬↓☺.F↓☺.v↓☺. 0002F0A0 A6 19 01 00 A8 19 01 00 D8 19 01 00 08 1A 01 00 38 1A 01 00 69 1A 01 00 99 1A 01 00 C9 1A 01 00 ª↓☺.¿↓☺.╪↓☺.◘→☺.8→☺.i→☺.Ö→☺.╔→☺. 0002F0C0 CB 1A 01 00 FB 1A 01 00 2B 1B 01 00 5B 1B 01 00 5D 1B 01 00 8F 1B 01 00 C1 1B 01 00 F3 1B 01 00 ╦→☺.√→☺.+←☺.[←☺.]←☺.Å←☺.┴←☺.≤←☺. 0002F0E0 F5 1B 01 00 27 1C 01 00 59 1C 01 00 8B 1C 01 00 8D 1C 01 00 BF 1C 01 00 FA F4 F4 F4 EB E2 E2 F4 ⌡←☺.'∟☺.Y∟☺.ï∟☺.ì∟☺.┐∟☺.·⌠⌠⌠δΓΓ⌠ 0002F100 FA F4 DC F4 F4 F4 F4 F4 D6 F4 D0 F4 C7 BE C7 F4 B8 F4 B2 F4 B2 F4 AC F4 F4 F4 F4 A6 A1 A1 A1 A1 ·⌠▄⌠⌠⌠⌠⌠╓⌠╨⌠╟╛╟⌠╕⌠▓⌠▓⌠¼⌠⌠⌠⌠ªíííí 0002F120 A1 A1 A1 A1 9C A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 00 00 00 04 00 00 00 00 00 00 00 íííí£íííííííííííííííí...♦....... 0002F140 00 00 04 00 00 01 30 2A F0 00 00 00 05 00 00 0A 30 2A F0 00 05 03 00 00 05 00 00 04 30 2A F0 00 ..♦..☺0*≡...♣..◙0*≡.♣♥..♣..♦0*≡. 0002F160 05 03 00 00 05 00 00 05 30 2A F0 00 05 03 00 00 05 00 00 03 30 2A F0 00 05 03 00 00 08 00 00 01 ♣♥..♣..♣0*≡.♣♥..♣..♥0*≡.♣♥..◘..☺ 0002F180 30 2A F0 00 05 03 11 8A 05 13 76 FA 00 00 08 00 00 02 30 2A F0 00 05 03 11 8A 05 13 76 FA 00 00 0*≡.♣♥◄è♣‼v·..◘..☻0*≡.♣♥◄è♣‼v·.. 0002F1A0 05 00 00 00 00 00 00 00 05 03 00 00 05 00 00 07 30 2A F0 00 05 03 00 00 05 00 00 06 30 2A F0 00 ♣.......♣♥..♣..•0*≡.♣♥..♣..♠0*≡. 0002F1C0 05 03 00 00 08 00 00 03 30 2A F0 00 05 03 11 37 02 13 C9 FD 00 00 08 00 00 01 30 2A F0 00 05 03 ♣♥..◘..♥0*≡.♣♥◄7☻‼╔²..◘..☺0*≡.♣♥ 0002F1E0 11 37 02 13 C9 FD 00 00 05 00 00 01 30 2A F0 00 05 03 00 00 05 00 00 02 30 2A F0 00 05 03 00 3D ◄7☻‼╔²..♣..☺0*≡.♣♥..♣..☻0*≡.♣♥.= 0002F200 BF 1C 01 00 F1 1C 01 00 23 1D 01 00 25 1D 01 00 57 1D 01 00 89 1D 01 00 BB 1D 01 00 BD 1D 01 00 ┐∟☺.±∟☺.#↔☺.%↔☺.W↔☺.ë↔☺.╗↔☺.╜↔☺. 0002F220 EC 1D 01 00 1B 1E 01 00 4A 1E 01 00 4C 1E 01 00 86 1E 01 00 C0 1E 01 00 FA 1E 01 00 FC 1E 01 00 ∞↔☺.←▲☺.J▲☺.L▲☺.å▲☺.└▲☺.·▲☺.ⁿ▲☺. 0002F240 D2 1F 01 00 D4 1F 01 00 D6 1F 01 00 D8 1F 01 00 FA 1F 01 00 FC 1F 01 00 86 21 01 00 88 21 01 00 ╥▼☺.╘▼☺.╓▼☺.╪▼☺.·▼☺.ⁿ▼☺.å!☺.ê!☺. 0002F260 79 22 01 00 A0 23 01 00 A2 23 01 00 17 24 01 00 19 24 01 00 42 24 01 00 73 24 01 00 B0 24 01 00 y"☺.á#☺.ó#☺.↨$☺.↓$☺.B$☺.s$☺.░$☺. 0002F280 B2 24 01 00 BA 25 01 00 BC 25 01 00 D1 26 01 00 D3 26 01 00 7C 28 01 00 7E 28 01 00 B2 29 01 00 ▓$☺.║%☺.╝%☺.╤&☺.╙&☺.|(☺.~(☺.▓)☺. 0002F2A0 B4 29 01 00 54 2A 01 00 56 2A 01 00 58 2A 01 00 5A 2A 01 00 84 2A 01 00 86 2A 01 00 54 2B 01 00 ┤)☺.T*☺.V*☺.X*☺.Z*☺.ä*☺.å*☺.T+☺. 0002F2C0 56 2B 01 00 6C 2B 01 00 82 2B 01 00 98 2B 01 00 92 2C 01 00 94 2C 01 00 B6 2C 01 00 D8 2C 01 00 V+☺.l+☺.é+☺.ÿ+☺.Æ,☺.ö,☺.╢,☺.╪,☺. 0002F2E0 FA 2C 01 00 FC 2C 01 00 0C 2E 01 00 0E 2E 01 00 2E 2E 01 00 4E 2E 01 00 6E 2E 01 00 8E 2E 01 00 ·,☺.ⁿ,☺.♀.☺.♫.☺...☺.N.☺.n.☺.Ä.☺. 0002F300 90 2E 01 00 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB F5 FB FB EF EF EF E9 EF E3 DD EF D7 EF É.☺.√√√√√√√√√√√√√√√⌡√√∩∩∩Θ∩π▌∩╫∩ 0002F320 EF EF EF EF E3 EF E3 EF E9 EF D1 EF F5 EF EF EF EF C6 BB C6 C6 C6 C6 B0 C6 C6 C6 C6 C6 A5 C6 C6 ∩∩∩∩π∩π∩Θ∩╤∩⌡∩∩∩∩╞╗╞╞╞╞░╞╞╞╞╞Ñ╞╞ 0002F340 C6 C6 C6 C6 00 00 00 00 00 00 0A 00 00 04 30 2A F0 00 05 03 0F 08 00 02 37 02 E1 03 00 00 00 00 ╞╞╞╞......◙..♦0*≡.♣♥☼◘.☻7☻ß♥.... 0002F360 0A 00 00 00 00 00 00 00 05 03 0F 08 00 02 37 02 E1 03 00 00 00 00 0A 00 00 03 30 2A F0 00 05 03 ◙.......♣♥☼◘.☻7☻ß♥....◙..♥0*≡.♣♥ 0002F380 0F 08 00 02 37 02 E1 03 00 00 00 00 0A 00 00 01 30 2A F0 00 05 03 0F 08 00 02 37 02 E1 03 00 00 ☼◘.☻7☻ß♥....◙..☺0*≡.♣♥☼◘.☻7☻ß♥.. 0002F3A0 00 00 05 00 00 05 30 2A F0 00 05 03 00 00 05 00 00 02 30 2A F0 00 05 03 00 00 05 00 00 00 00 00 ..♣..♣0*≡.♣♥..♣..☻0*≡.♣♥..♣..... 0002F3C0 00 00 05 03 00 00 05 00 00 04 30 2A F0 00 05 03 00 00 05 00 00 06 30 2A F0 00 05 03 00 00 05 00 ..♣♥..♣..♦0*≡.♣♥..♣..♠0*≡.♣♥..♣. 0002F3E0 00 01 30 2A F0 00 05 03 00 00 05 00 00 03 30 2A F0 00 05 03 00 00 04 00 00 01 30 2A F0 00 00 40 .☺0*≡.♣♥..♣..♥0*≡.♣♥..♦..☺0*≡..@ 0002F400 90 2E 01 00 23 30 01 00 25 30 01 00 3C 30 01 00 54 30 01 00 56 30 01 00 19 31 01 00 1B 31 01 00 É.☺.#0☺.%0☺.<0☺.T0☺.V0☺.↓1☺.←1☺. 0002F420 37 31 01 00 42 32 01 00 44 32 01 00 60 32 01 00 79 34 01 00 C1 34 01 00 C3 34 01 00 DD 34 01 00 71☺.B2☺.D2☺.`2☺.y4☺.┴4☺.├4☺.▌4☺. 0002F440 AF 35 01 00 B1 35 01 00 CB 35 01 00 54 36 01 00 56 36 01 00 6F 36 01 00 32 37 01 00 34 37 01 00 »5☺.▒5☺.╦5☺.T6☺.V6☺.o6☺.27☺.47☺. 0002F460 36 37 01 00 38 37 01 00 49 37 01 00 4B 37 01 00 AA 37 01 00 AC 37 01 00 B9 37 01 00 79 3A 01 00 67☺.87☺.I7☺.K7☺.¬7☺.¼7☺.╣7☺.y:☺. 0002F480 7B 3A 01 00 85 3A 01 00 9D 3B 01 00 9F 3B 01 00 AC 3B 01 00 D4 3C 01 00 D6 3C 01 00 D8 3C 01 00 {:☺.à:☺.¥;☺.ƒ;☺.¼;☺.╘<☺.╓<☺.╪<☺. 0002F4A0 F8 3C 01 00 FA 3C 01 00 0F 3E 01 00 11 3E 01 00 17 3F 01 00 19 3F 01 00 4B 3F 01 00 94 3F 01 00 °<☺.·<☺.☼>☺.◄>☺.↨?☺.↓?☺.K?☺.ö?☺. 0002F4C0 C6 3F 01 00 C8 3F 01 00 9D 40 01 00 9F 40 01 00 D1 40 01 00 0A 41 01 00 3C 41 01 00 75 41 01 00 ╞?☺.╚?☺.¥@☺.ƒ@☺.╤@☺.◙A☺.<A☺.uA☺. 0002F4E0 A7 41 01 00 F5 EA EA EA EA DF EA EA D4 EA EA C9 BE EA EA DF EA EA B3 EA EA DF AD AD AD AD AD A7 ºA☺.⌡ΩΩΩΩ▀ΩΩ╘ΩΩ╔╛ΩΩ▀ΩΩ│ΩΩ▀¡¡¡¡¡º 0002F500 AD AD A1 AD AD 9B AD AD 9B AD AD 95 AD 9B AD 9B AD AD AD AD AD 8F AD AD AD AD AD AD 00 00 05 00 ¡¡í¡¡¢¡¡¢¡¡ò¡¢¡¢¡¡¡¡¡Å¡¡¡¡¡¡..♣. 0002F520 00 03 30 2A F0 00 05 03 00 00 05 00 00 00 00 00 00 00 05 03 00 00 05 00 00 04 30 2A F0 00 05 03 .♥0*≡.♣♥..♣.......♣♥..♣..♦0*≡.♣♥ 0002F540 00 00 05 00 00 0A 30 2A F0 00 05 03 00 00 05 00 00 02 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A ..♣..◙0*≡.♣♥..♣..☻0*≡.♣♥..♣..☺0* 0002F560 F0 00 05 03 00 00 0A 00 00 02 30 2A F0 00 05 03 0F 08 00 02 37 02 E1 03 00 00 00 00 0A 00 00 00 ≡.♣♥..◙..☻0*≡.♣♥☼◘.☻7☻ß♥....◙... 0002F580 00 00 00 00 05 03 0F 08 00 02 37 02 E1 03 00 00 00 00 0A 00 00 08 30 2A F0 00 05 03 0F 08 00 02 ....♣♥☼◘.☻7☻ß♥....◙..◘0*≡.♣♥☼◘.☻ 0002F5A0 37 02 E1 03 00 00 00 00 0A 00 00 04 30 2A F0 00 05 03 0F 08 00 02 37 02 E1 03 00 00 00 00 0A 00 7☻ß♥....◙..♦0*≡.♣♥☼◘.☻7☻ß♥....◙. 0002F5C0 00 03 30 2A F0 00 05 03 0F 08 00 02 37 02 E1 03 00 00 00 00 0A 00 00 01 30 2A F0 00 05 03 0F 08 .♥0*≡.♣♥☼◘.☻7☻ß♥....◙..☺0*≡.♣♥☼◘ 0002F5E0 00 02 37 02 E1 03 00 00 00 00 0A 00 00 06 30 2A F0 00 05 03 0F 08 00 02 37 02 E1 03 00 00 00 38 .☻7☻ß♥....◙..♠0*≡.♣♥☼◘.☻7☻ß♥...8 0002F600 A7 41 01 00 A9 41 01 00 36 43 01 00 38 43 01 00 17 44 01 00 19 44 01 00 4D 44 01 00 88 44 01 00 ºA☺.⌐A☺.6C☺.8C☺.↨D☺.↓D☺.MD☺.êD☺. 0002F620 BC 44 01 00 F7 44 01 00 2B 45 01 00 2D 45 01 00 C8 47 01 00 CA 47 01 00 EF 48 01 00 F1 48 01 00 ╝D☺.≈D☺.+E☺.-E☺.╚G☺.╩G☺.∩H☺.±H☺. 0002F640 25 49 01 00 60 49 01 00 94 49 01 00 CF 49 01 00 03 4A 01 00 05 4A 01 00 DD 4A 01 00 DF 4A 01 00 %I☺.`I☺.öI☺.╧I☺.♥J☺.♣J☺.▌J☺.▀J☺. 0002F660 13 4B 01 00 4E 4B 01 00 82 4B 01 00 BD 4B 01 00 F1 4B 01 00 F3 4B 01 00 A6 4C 01 00 A8 4C 01 00 ‼K☺.NK☺.éK☺.╜K☺.±K☺.≤K☺.ªL☺.¿L☺. 0002F680 DC 4C 01 00 17 4D 01 00 4B 4D 01 00 86 4D 01 00 BA 4D 01 00 BC 4D 01 00 EC 4E 01 00 EE 4E 01 00 ▄L☺.↨M☺.KM☺.åM☺.║M☺.╝M☺.∞N☺.εN☺. 0002F6A0 F0 4E 01 00 F2 4E 01 00 0B 4F 01 00 0D 4F 01 00 10 50 01 00 12 50 01 00 50 51 01 00 60 53 01 00 ≡N☺.≥N☺.♂O☺.♪O☺.►P☺.↕P☺.PQ☺.`S☺. 0002F6C0 62 53 01 00 64 53 01 00 66 53 01 00 7E 53 01 00 80 53 01 00 AD 53 01 00 AF 53 01 00 C6 53 01 00 bS☺.dS☺.fS☺.~S☺.ÇS☺.¡S☺.»S☺.╞S☺. 0002F6E0 D7 53 01 00 F2 53 01 00 15 54 01 00 29 54 01 00 2B 54 01 00 6B 54 01 00 7B 54 01 00 7D 54 01 00 ╫S☺.≥S☺.§T☺.)T☺.+T☺.kT☺.{T☺.}T☺. 0002F700 44 55 01 00 46 55 01 00 AB 55 01 00 AD 55 01 00 AF 55 01 00 CD 55 01 00 CF 55 01 00 91 56 01 00 DU☺.FU☺.½U☺.¡U☺.»U☺.═U☺.╧U☺.æV☺. 0002F720 93 56 01 00 95 56 01 00 FA F4 FA EE FA FA FA FA FA FA FA E8 FA E2 FA FA FA FA FA FA FA EE FA FA ôV☺.òV☺.·⌠·ε·······Φ·Γ·······ε·· 0002F740 FA FA FA FA FA EE FA FA FA FA FA FA FA DC FA FA FA FA FA E2 FA DC D6 FA FA FA FA FA D0 D0 D0 D0 ·····ε·······▄·····Γ·▄╓·····╨╨╨╨ 0002F760 D0 D0 D0 D0 D0 D0 FA CA FA C4 FA D0 BE FA EE FA FA 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 ╨╨╨╨╨╨·╩·─·╨╛·ε··...........♣... 0002F780 00 00 00 00 05 01 00 00 05 00 00 02 30 2A F0 00 05 01 00 00 05 00 00 03 30 2A F0 00 05 01 00 00 ....♣☺..♣..☻0*≡.♣☺..♣..♥0*≡.♣☺.. 0002F7A0 05 00 00 01 30 2A F0 00 05 01 00 00 05 00 00 00 00 00 00 00 05 03 00 00 05 00 00 05 30 2A F0 00 ♣..☺0*≡.♣☺..♣.......♣♥..♣..♣0*≡. 0002F7C0 05 03 00 00 05 00 00 04 30 2A F0 00 05 03 00 00 05 00 00 0A 30 2A F0 00 05 03 00 00 05 00 00 03 ♣♥..♣..♦0*≡.♣♥..♣..◙0*≡.♣♥..♣..♥ 0002F7E0 30 2A F0 00 05 03 00 00 05 00 00 06 30 2A F0 00 05 03 00 00 05 00 00 01 30 2A F0 00 05 03 00 49 0*≡.♣♥..♣..♠0*≡.♣♥..♣..☺0*≡.♣♥.I 0002F800 95 56 01 00 A4 56 01 00 C7 56 01 00 C9 56 01 00 FC 56 01 00 FE 56 01 00 35 57 01 00 4D 57 01 00 òV☺.ñV☺.╟V☺.╔V☺.ⁿV☺.■V☺.5W☺.MW☺. 0002F820 63 57 01 00 7F 57 01 00 81 57 01 00 B2 57 01 00 DE 57 01 00 15 58 01 00 17 58 01 00 56 59 01 00 cW☺.⌂W☺.üW☺.▓W☺.▐W☺.§X☺.↨X☺.VY☺. 0002F840 58 59 01 00 AB 59 01 00 AD 59 01 00 DF 59 01 00 E1 59 01 00 E3 59 01 00 E5 59 01 00 F1 59 01 00 XY☺.½Y☺.¡Y☺.▀Y☺.ßY☺.πY☺.σY☺.±Y☺. 0002F860 14 5A 01 00 16 5A 01 00 42 5A 01 00 44 5A 01 00 60 5A 01 00 62 5A 01 00 8A 5A 01 00 8C 5A 01 00 ¶Z☺.▬Z☺.BZ☺.DZ☺.`Z☺.bZ☺.èZ☺.îZ☺. 0002F880 7A 5B 01 00 7C 5B 01 00 B5 5B 01 00 B7 5B 01 00 D8 5B 01 00 DA 5B 01 00 EA 5B 01 00 0D 5C 01 00 z[☺.|[☺.╡[☺.╖[☺.╪[☺.┌[☺.Ω[☺.♪\☺. 0002F8A0 0F 5C 01 00 48 5C 01 00 4A 5C 01 00 86 5C 01 00 99 5C 01 00 B4 5C 01 00 D0 5C 01 00 E6 5C 01 00 ☼\☺.H\☺.J\☺.å\☺.Ö\☺.┤\☺.╨\☺.µ\☺. 0002F8C0 F4 5C 01 00 F6 5C 01 00 2A 5D 01 00 56 5D 01 00 85 5D 01 00 B1 5D 01 00 EB 5D 01 00 ED 5D 01 00 ⌠\☺.÷\☺.*]☺.V]☺.à]☺.▒]☺.δ]☺.φ]☺. 0002F8E0 E0 60 01 00 E2 60 01 00 0C 61 01 00 39 61 01 00 3B 61 01 00 7B 61 01 00 BC 61 01 00 BE 61 01 00 α`☺.Γ`☺.♀a☺.9a☺.;a☺.{a☺.╝a☺.╛a☺. 0002F900 E7 61 01 00 E9 61 01 00 EB 61 01 00 FE 61 01 00 21 62 01 00 23 62 01 00 55 62 01 00 57 62 01 00 τa☺.Θa☺.δa☺.■a☺.!b☺.#b☺.Ub☺.Wb☺. 0002F920 79 62 01 00 7B 62 01 00 A9 62 01 00 AB 62 01 00 67 63 01 00 69 63 01 00 AC 63 01 00 AE 63 01 00 yb☺.{b☺.⌐b☺.½b☺.gc☺.ic☺.¼c☺.«c☺. 0002F940 E6 63 01 00 E8 63 01 00 EA 63 01 00 EC 63 01 00 FB 63 01 00 1E 64 01 00 20 64 01 00 48 64 01 00 µc☺.Φc☺.Ωc☺.∞c☺.√c☺.▲d☺. d☺.Hd☺. 0002F960 FB FB FB FB FB FB FB FB FB FB FB FB FB FB F6 FB F1 FB FB FB FB FB FB FB FB FB FB FB FB FB FB EC √√√√√√√√√√√√√√÷√±√√√√√√√√√√√√√√∞ 0002F980 FB FB FB FB FB E7 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB E2 FB FB FB FB FB FB FB FB √√√√√τ√√√√√√√√√√√√√√√√√Γ√√√√√√√√ 0002F9A0 FB FB E7 FB FB FB FB FB FB FB FB DD FB FB FB FB FB FB FB FB FB FB FB 00 00 00 04 05 00 03 30 2A √√τ√√√√√√√√▌√√√√√√√√√√√...♦♣.♥0* 0002F9C0 F0 00 00 00 04 05 00 0D 30 2A F0 00 00 00 04 05 00 00 00 00 00 00 00 00 04 05 00 04 30 2A F0 00 ≡...♦♣.♪0*≡...♦♣........♦♣.♦0*≡. 0002F9E0 00 00 04 05 00 02 30 2A F0 00 00 00 04 05 00 05 30 2A F0 00 00 00 04 05 00 01 30 2A F0 00 00 57 ..♦♣.☻0*≡...♦♣.♣0*≡...♦♣.☺0*≡..W 0002FA00 48 64 01 00 4A 64 01 00 6C 64 01 00 87 64 01 00 89 64 01 00 C4 64 01 00 C6 64 01 00 81 65 01 00 Hd☺.Jd☺.ld☺.çd☺.ëd☺.─d☺.╞d☺.üe☺. 0002FA20 83 65 01 00 AA 65 01 00 D6 65 01 00 D8 65 01 00 11 66 01 00 4E 66 01 00 50 66 01 00 91 66 01 00 âe☺.¬e☺.╓e☺.╪e☺.◄f☺.Nf☺.Pf☺.æf☺. 0002FA40 93 66 01 00 95 66 01 00 A4 66 01 00 C7 66 01 00 C9 66 01 00 02 67 01 00 04 67 01 00 29 67 01 00 ôf☺.òf☺.ñf☺.╟f☺.╔f☺.☻g☺.♦g☺.)g☺. 0002FA60 38 67 01 00 50 67 01 00 52 67 01 00 83 67 01 00 AD 67 01 00 AF 67 01 00 A6 68 01 00 A8 68 01 00 8g☺.Pg☺.Rg☺.âg☺.¡g☺.»g☺.ªh☺.¿h☺. 0002FA80 D4 68 01 00 D6 68 01 00 D8 68 01 00 DA 68 01 00 EE 68 01 00 11 69 01 00 13 69 01 00 3A 69 01 00 ╘h☺.╓h☺.╪h☺.┌h☺.εh☺.◄i☺.‼i☺.:i☺. 0002FAA0 3C 69 01 00 61 69 01 00 63 69 01 00 8A 69 01 00 8C 69 01 00 46 6A 01 00 48 6A 01 00 75 6A 01 00 <i☺.ai☺.ci☺.èi☺.îi☺.Fj☺.Hj☺.uj☺. 0002FAC0 77 6A 01 00 79 6A 01 00 7B 6A 01 00 8E 6A 01 00 B1 6A 01 00 B3 6A 01 00 DA 6A 01 00 DC 6A 01 00 wj☺.yj☺.{j☺.Äj☺.▒j☺.│j☺.┌j☺.▄j☺. 0002FAE0 00 6B 01 00 02 6B 01 00 28 6B 01 00 2A 6B 01 00 EA 6B 01 00 EC 6B 01 00 17 6C 01 00 2C 6C 01 00 .k☺.☻k☺.(k☺.*k☺.Ωk☺.∞k☺.↨l☺.,l☺. 0002FB00 4F 6C 01 00 51 6C 01 00 87 6C 01 00 89 6C 01 00 AE 6C 01 00 B0 6C 01 00 D7 6C 01 00 D9 6C 01 00 Ol☺.Ql☺.çl☺.ël☺.«l☺.░l☺.╫l☺.┘l☺. 0002FB20 E9 6D 01 00 EB 6D 01 00 18 6E 01 00 1A 6E 01 00 1C 6E 01 00 1E 6E 01 00 31 6E 01 00 54 6E 01 00 Θm☺.δm☺.↑n☺.→n☺.∟n☺.▲n☺.1n☺.Tn☺. 0002FB40 56 6E 01 00 7C 6E 01 00 7E 6E 01 00 A2 6E 01 00 A4 6E 01 00 CA 6E 01 00 CC 6E 01 00 99 6F 01 00 Vn☺.|n☺.~n☺.ón☺.ñn☺.╩n☺.╠n☺.Öo☺. 0002FB60 9B 6F 01 00 C9 6F 01 00 CB 6F 01 00 CD 6F 01 00 FB FB FB FB FB FB F6 FB FB FB FB FB FB FB FB FB ¢o☺.╔o☺.╦o☺.═o☺.√√√√√√÷√√√√√√√√√ 0002FB80 FB F1 FB FB FB FB FB FB FB FB FB FB FB EC FB FB FB FB FB FB FB FB FB FB FB FB FB FB F6 FB FB FB √±√√√√√√√√√√√∞√√√√√√√√√√√√√√÷√√√ 0002FBA0 FB FB FB FB FB FB FB FB FB FB FB F6 FB FB F1 FB FB FB FB FB FB FB FB E7 FB FB FB FB FB FB FB FB √√√√√√√√√√√÷√√±√√√√√√√√τ√√√√√√√√ 0002FBC0 FB FB FB FB FB FB EC FB FB FB FB 00 00 00 04 05 00 05 30 2A F0 00 00 00 04 05 00 04 30 2A F0 00 √√√√√√∞√√√√...♦♣.♣0*≡...♦♣.♦0*≡. 0002FBE0 00 00 04 05 00 00 00 00 00 00 00 00 04 05 00 03 30 2A F0 00 00 00 04 05 00 01 30 2A F0 00 00 5B ..♦♣........♦♣.♥0*≡...♦♣.☺0*≡..[ 0002FC00 CD 6F 01 00 CF 6F 01 00 E1 6F 01 00 04 70 01 00 06 70 01 00 31 70 01 00 33 70 01 00 56 70 01 00 ═o☺.╧o☺.ßo☺.♦p☺.♠p☺.1p☺.3p☺.Vp☺. 0002FC20 58 70 01 00 7D 70 01 00 7F 70 01 00 AC 71 01 00 AE 71 01 00 DA 71 01 00 EE 71 01 00 11 72 01 00 Xp☺.}p☺.⌂p☺.¼q☺.«q☺.┌q☺.εq☺.◄r☺. 0002FC40 13 72 01 00 43 72 01 00 45 72 01 00 69 72 01 00 6B 72 01 00 91 72 01 00 93 72 01 00 30 73 01 00 ‼r☺.Cr☺.Er☺.ir☺.kr☺.ær☺.ôr☺.0s☺. 0002FC60 32 73 01 00 60 73 01 00 62 73 01 00 64 73 01 00 66 73 01 00 76 73 01 00 99 73 01 00 9B 73 01 00 2s☺.`s☺.bs☺.ds☺.fs☺.vs☺.Ös☺.¢s☺. 0002FC80 D5 73 01 00 D7 73 01 00 F7 73 01 00 F9 73 01 00 25 74 01 00 27 74 01 00 AC 74 01 00 AE 74 01 00 ╒s☺.╫s☺.≈s☺.∙s☺.%t☺.'t☺.¼t☺.«t☺. 0002FCA0 E4 74 01 00 E6 74 01 00 17 75 01 00 19 75 01 00 1B 75 01 00 1D 75 01 00 2D 75 01 00 50 75 01 00 Σt☺.µt☺.↨u☺.↓u☺.←u☺.↔u☺.-u☺.Pu☺. 0002FCC0 52 75 01 00 88 75 01 00 8A 75 01 00 AA 75 01 00 AC 75 01 00 CE 75 01 00 D0 75 01 00 4B 76 01 00 Ru☺.êu☺.èu☺.¬u☺.¼u☺.╬u☺.╨u☺.Kv☺. 0002FCE0 4D 76 01 00 83 76 01 00 85 76 01 00 B6 76 01 00 C6 76 01 00 E9 76 01 00 EB 76 01 00 2A 77 01 00 Mv☺.âv☺.àv☺.╢v☺.╞v☺.Θv☺.δv☺.*w☺. 0002FD00 2C 77 01 00 4B 77 01 00 4D 77 01 00 6E 77 01 00 70 77 01 00 F5 77 01 00 F7 77 01 00 2D 78 01 00 ,w☺.Kw☺.Mw☺.nw☺.pw☺.⌡w☺.≈w☺.-x☺. 0002FD20 2F 78 01 00 5E 78 01 00 60 78 01 00 62 78 01 00 77 78 01 00 9A 78 01 00 9C 78 01 00 DA 78 01 00 /x☺.^x☺.`x☺.bx☺.wx☺.Üx☺.£x☺.┌x☺. 0002FD40 DC 78 01 00 06 79 01 00 18 79 01 00 1A 79 01 00 54 79 01 00 56 79 01 00 39 7A 01 00 3B 7A 01 00 ▄x☺.♠y☺.↑y☺.→y☺.Ty☺.Vy☺.9z☺.;z☺. 0002FD60 87 7A 01 00 89 7A 01 00 FB FB FB FB FB FB FB FB FB FB F6 FB FB F1 FB FB FB FB FB FB FB FB EC FB çz☺.ëz☺.√√√√√√√√√√÷√√±√√√√√√√√∞√ 0002FD80 FB FB FB FB FB FB FB FB FB FB FB FB FB E7 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB E7 FB √√√√√√√√√√√√√τ√√√√√√√√√√√√√√√√τ√ 0002FDA0 FB FB FB F1 FB FB FB FB FB FB FB FB EC FB FB FB FB FB FB F1 FB FB FB FB FB FB FB FB FB E2 FB E7 √√√±√√√√√√√√∞√√√√√√±√√√√√√√√√Γ√τ 0002FDC0 FB 00 00 00 04 05 00 04 30 2A F0 00 00 00 04 05 00 02 30 2A F0 00 00 00 04 05 00 03 30 2A F0 00 √...♦♣.♦0*≡...♦♣.☻0*≡...♦♣.♥0*≡. 0002FDE0 00 00 04 05 00 00 00 00 00 00 00 00 04 05 00 05 30 2A F0 00 00 00 04 05 00 01 30 2A F0 00 00 59 ..♦♣........♦♣.♣0*≡...♦♣.☺0*≡..Y 0002FE00 89 7A 01 00 91 7A 01 00 13 7C 01 00 15 7C 01 00 1D 7C 01 00 32 7C 01 00 34 7C 01 00 4D 7C 01 00 ëz☺.æz☺.‼|☺.§|☺.↔|☺.2|☺.4|☺.M|☺. 0002FE20 87 7C 01 00 93 7C 01 00 9F 7C 01 00 AA 7C 01 00 AC 7C 01 00 B4 7C 01 00 E2 7C 01 00 FD 7C 01 00 ç|☺.ô|☺.ƒ|☺.¬|☺.¼|☺.┤|☺.Γ|☺.²|☺. 0002FE40 34 7D 01 00 55 7D 01 00 5D 7D 01 00 5F 7D 01 00 02 7E 01 00 04 7E 01 00 06 7E 01 00 1D 7E 01 00 4}☺.U}☺.]}☺._}☺.☻~☺.♦~☺.♠~☺.↔~☺. 0002FE60 40 7E 01 00 42 7E 01 00 7E 7E 01 00 80 7E 01 00 AC 7E 01 00 BE 7E 01 00 C0 7E 01 00 02 7F 01 00 @~☺.B~☺.~~☺.Ç~☺.¼~☺.╛~☺.└~☺.☻⌂☺. 0002FE80 04 7F 01 00 28 80 01 00 2A 80 01 00 76 80 01 00 78 80 01 00 80 80 01 00 B2 80 01 00 B4 80 01 00 ♦⌂☺.(Ç☺.*Ç☺.vÇ☺.xÇ☺.ÇÇ☺.▓Ç☺.┤Ç☺. 0002FEA0 D4 80 01 00 D6 80 01 00 D8 80 01 00 DA 80 01 00 F0 80 01 00 13 81 01 00 15 81 01 00 52 81 01 00 ╘Ç☺.╓Ç☺.╪Ç☺.┌Ç☺.≡Ç☺.‼ü☺.§ü☺.Rü☺. 0002FEC0 54 81 01 00 80 81 01 00 92 81 01 00 94 81 01 00 D9 81 01 00 DB 81 01 00 3A 83 01 00 3C 83 01 00 Tü☺.Çü☺.Æü☺.öü☺.┘ü☺.█ü☺.:â☺.<â☺. 0002FEE0 88 83 01 00 8A 83 01 00 92 83 01 00 C4 83 01 00 C6 83 01 00 E6 83 01 00 E8 83 01 00 FD 83 01 00 êâ☺.èâ☺.Æâ☺.─â☺.╞â☺.µâ☺.Φâ☺.²â☺. 0002FF00 20 84 01 00 22 84 01 00 50 84 01 00 52 84 01 00 7C 84 01 00 8E 84 01 00 90 84 01 00 CA 84 01 00 ä☺."ä☺.Pä☺.Rä☺.|ä☺.Ää☺.Éä☺.╩ä☺. 0002FF20 CC 84 01 00 98 85 01 00 9A 85 01 00 E6 85 01 00 E8 85 01 00 F0 85 01 00 22 86 01 00 24 86 01 00 ╠ä☺.ÿà☺.Üà☺.µà☺.Φà☺.≡à☺."å☺.$å☺. 0002FF40 53 86 01 00 55 86 01 00 57 86 01 00 59 86 01 00 6D 86 01 00 90 86 01 00 FB F6 FB FB FB FB FB FB Så☺.Uå☺.Wå☺.Yå☺.må☺.Éå☺.√÷√√√√√√ 0002FF60 FB FB FB FB FB FB FB FB FB FB FB F1 FB FB EC FB FB FB FB FB FB FB FB FB E7 FB E2 FB FB FB FB FB √√√√√√√√√√√±√√∞√√√√√√√√√τ√Γ√√√√√ 0002FF80 FB FB FB FB FB FB FB FB FB FB FB FB FB DD FB E2 FB FB FB FB FB FB EC FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√▌√Γ√√√√√√∞√√√√√√√√√ 0002FFA0 D8 FB E2 FB FB FB FB FB FB FB FB FB FB 00 00 00 04 05 00 04 30 2A F0 00 00 00 04 05 00 06 30 2A ╪√Γ√√√√√√√√√√...♦♣.♦0*≡...♦♣.♠0* 0002FFC0 F0 00 00 00 04 05 00 02 30 2A F0 00 00 00 04 05 00 05 30 2A F0 00 00 00 04 05 00 00 00 00 00 00 ≡...♦♣.☻0*≡...♦♣.♣0*≡...♦♣...... 0002FFE0 00 00 04 05 00 03 30 2A F0 00 00 00 04 05 00 07 30 2A F0 00 00 00 04 05 00 01 30 2A F0 00 00 55 ..♦♣.♥0*≡...♦♣.•0*≡...♦♣.☺0*≡..U 00030000 90 86 01 00 92 86 01 00 BF 86 01 00 C1 86 01 00 EB 86 01 00 FD 86 01 00 FF 86 01 00 39 87 01 00 Éå☺.Æå☺.┐å☺.┴å☺.δå☺.²å☺. å☺.9ç☺. 00030020 3B 87 01 00 07 88 01 00 09 88 01 00 55 88 01 00 57 88 01 00 5F 88 01 00 91 88 01 00 93 88 01 00 ;ç☺.•ê☺.○ê☺.Uê☺.Wê☺._ê☺.æê☺.ôê☺. 00030040 C2 88 01 00 C4 88 01 00 D7 88 01 00 FA 88 01 00 FC 88 01 00 39 89 01 00 3B 89 01 00 63 89 01 00 ┬ê☺.─ê☺.╫ê☺.·ê☺.ⁿê☺.9ë☺.;ë☺.cë☺. 00030060 75 89 01 00 77 89 01 00 B4 89 01 00 B6 89 01 00 EA 8A 01 00 F6 8B 01 00 F8 8B 01 00 44 8C 01 00 uë☺.wë☺.┤ë☺.╢ë☺.Ωè☺.÷ï☺.°ï☺.Dî☺. 00030080 46 8C 01 00 4E 8C 01 00 80 8C 01 00 82 8C 01 00 84 8C 01 00 86 8C 01 00 9A 8C 01 00 BD 8C 01 00 Fî☺.Nî☺.Çî☺.éî☺.äî☺.åî☺.Üî☺.╜î☺. 000300A0 BF 8C 01 00 02 8D 01 00 04 8D 01 00 2E 8D 01 00 40 8D 01 00 42 8D 01 00 81 8D 01 00 83 8D 01 00 ┐î☺.☻ì☺.♦ì☺..ì☺.@ì☺.Bì☺.üì☺.âì☺. 000300C0 2B 8F 01 00 2D 8F 01 00 79 8F 01 00 7B 8F 01 00 83 8F 01 00 B5 8F 01 00 CA 8F 01 00 ED 8F 01 00 +Å☺.-Å☺.yÅ☺.{Å☺.âÅ☺.╡Å☺.╩Å☺.φÅ☺. 000300E0 EF 8F 01 00 33 90 01 00 35 90 01 00 64 90 01 00 76 90 01 00 78 90 01 00 B2 90 01 00 B4 90 01 00 ∩Å☺.3É☺.5É☺.dÉ☺.vÉ☺.xÉ☺.▓É☺.┤É☺. 00030100 18 92 01 00 EF 92 01 00 F1 92 01 00 3D 93 01 00 3F 93 01 00 47 93 01 00 79 93 01 00 7B 93 01 00 ↑Æ☺.∩Æ☺.±Æ☺.=ô☺.?ô☺.Gô☺.yô☺.{ô☺. 00030120 7D 93 01 00 7F 93 01 00 90 93 01 00 B3 93 01 00 B5 93 01 00 F0 93 01 00 F2 93 01 00 1E 94 01 00 }ô☺.⌂ô☺.Éô☺.│ô☺.╡ô☺.≡ô☺.≥ô☺.▲ö☺. 00030140 30 94 01 00 32 94 01 00 69 94 01 00 6B 94 01 00 2F 95 01 00 31 95 01 00 FB FB FB FB FB FB FB FB 0ö☺.2ö☺.iö☺.kö☺./ò☺.1ò☺.√√√√√√√√ 00030160 F6 FB F1 FB FB FB FB FB FB EC FB FB FB FB FB FB FB FB FB E7 E7 FB F1 FB FB FB FB FB FB FB FB FB ÷√±√√√√√√∞√√√√√√√√√ττ√±√√√√√√√√√ 00030180 FB FB FB FB FB FB FB E2 FB F1 FB FB FB EC FB FB FB FB FB FB FB FB FB DD F6 FB F1 FB FB FB FB FB √√√√√√√Γ√±√√√∞√√√√√√√√√▌÷√±√√√√√ 000301A0 FB FB FB FB FB FB FB FB FB FB FB D8 FB 00 00 00 04 05 00 03 30 2A F0 00 00 00 04 05 00 06 30 2A √√√√√√√√√√√╪√...♦♣.♥0*≡...♦♣.♠0* 000301C0 F0 00 00 00 04 05 00 07 30 2A F0 00 00 00 04 05 00 05 30 2A F0 00 00 00 04 05 00 00 00 00 00 00 ≡...♦♣.•0*≡...♦♣.♣0*≡...♦♣...... 000301E0 00 00 04 05 00 02 30 2A F0 00 00 00 04 05 00 04 30 2A F0 00 00 00 04 05 00 01 30 2A F0 00 00 55 ..♦♣.☻0*≡...♦♣.♦0*≡...♦♣.☺0*≡..U 00030200 31 95 01 00 7D 95 01 00 7F 95 01 00 87 95 01 00 B9 95 01 00 BB 95 01 00 CB 95 01 00 EE 95 01 00 1ò☺.}ò☺.⌂ò☺.çò☺.╣ò☺.╗ò☺.╦ò☺.εò☺. 00030220 F0 95 01 00 40 96 01 00 42 96 01 00 6B 96 01 00 6D 96 01 00 98 96 01 00 9A 96 01 00 79 97 01 00 ≡ò☺.@û☺.Bû☺.kû☺.mû☺.ÿû☺.Üû☺.yù☺. 00030240 7B 97 01 00 AC 97 01 00 AE 97 01 00 D7 97 01 00 F4 97 01 00 2D 98 01 00 2F 98 01 00 31 98 01 00 {ù☺.¼ù☺.«ù☺.╫ù☺.⌠ù☺.-ÿ☺./ÿ☺.1ÿ☺. 00030260 33 98 01 00 35 98 01 00 44 98 01 00 67 98 01 00 69 98 01 00 B9 98 01 00 BB 98 01 00 E1 98 01 00 3ÿ☺.5ÿ☺.Dÿ☺.gÿ☺.iÿ☺.╣ÿ☺.╗ÿ☺.ßÿ☺. 00030280 E3 98 01 00 0E 99 01 00 10 99 01 00 42 9A 01 00 44 9A 01 00 75 9A 01 00 77 9A 01 00 A0 9A 01 00 πÿ☺.♫Ö☺.►Ö☺.BÜ☺.DÜ☺.uÜ☺.wÜ☺.áÜ☺. 000302A0 BD 9A 01 00 E4 9A 01 00 E6 9A 01 00 E8 9A 01 00 F8 9A 01 00 1B 9B 01 00 1D 9B 01 00 59 9B 01 00 ╜Ü☺.ΣÜ☺.µÜ☺.ΦÜ☺.°Ü☺.←¢☺.↔¢☺.Y¢☺. 000302C0 5B 9B 01 00 81 9B 01 00 83 9B 01 00 AE 9B 01 00 B0 9B 01 00 21 9C 01 00 23 9C 01 00 4B 9C 01 00 [¢☺.ü¢☺.â¢☺.«¢☺.░¢☺.!£☺.#£☺.K£☺. 000302E0 4D 9C 01 00 83 9C 01 00 A0 9C 01 00 C7 9C 01 00 C9 9C 01 00 CB 9C 01 00 CD 9C 01 00 DC 9C 01 00 M£☺.â£☺.á£☺.╟£☺.╔£☺.╦£☺.═£☺.▄£☺. 00030300 FF 9C 01 00 01 9D 01 00 3A 9D 01 00 3C 9D 01 00 65 9D 01 00 7D 9D 01 00 9A 9D 01 00 9C 9D 01 00 £☺.☺¥☺.:¥☺.<¥☺.e¥☺.}¥☺.Ü¥☺.£¥☺. 00030320 D4 9D 01 00 12 9E 01 00 14 9E 01 00 1B A0 01 00 1D A0 01 00 47 A0 01 00 88 A0 01 00 8A A0 01 00 ╘¥☺.↕₧☺.¶₧☺.←á☺.↔á☺.Gá☺.êá☺.èá☺. 00030340 C6 A0 01 00 00 A1 01 00 02 A1 01 00 2A A1 01 00 47 A1 01 00 80 A1 01 00 8F A1 01 00 B2 A1 01 00 ╞á☺..í☺.☻í☺.*í☺.Gí☺.Çí☺.Åí☺.▓í☺. 00030360 B4 A1 01 00 FF A1 01 00 FB F6 F6 F6 F6 F1 F6 F6 FB F6 F6 F6 F6 F6 EC F6 F6 F6 F6 F6 F6 F6 F6 F6 ┤í☺. í☺.√÷÷÷÷±÷÷√÷÷÷÷÷∞÷÷÷÷÷÷÷÷÷ 00030380 F6 F6 F6 F6 FB F6 F6 F6 F6 F6 E7 F6 F6 F6 F6 F6 F6 F6 F6 F1 F6 F6 F6 F6 F6 F6 F6 F6 FB F6 F6 F6 ÷÷÷÷√÷÷÷÷÷τ÷÷÷÷÷÷÷÷±÷÷÷÷÷÷÷÷√÷÷÷ 000303A0 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 E2 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F1 F6 F6 ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷Γ÷÷÷÷÷÷÷÷÷÷±÷÷ 000303C0 FB 00 00 00 04 05 00 09 30 2A F0 00 00 00 04 05 00 05 30 2A F0 00 00 00 04 05 00 04 30 2A F0 00 √...♦♣.○0*≡...♦♣.♣0*≡...♦♣.♦0*≡. 000303E0 00 00 04 05 00 00 00 00 00 00 00 00 04 05 00 01 30 2A F0 00 00 00 04 05 00 02 30 2A F0 00 00 59 ..♦♣........♦♣.☺0*≡...♦♣.☻0*≡..Y 00030400 FF A1 01 00 01 A2 01 00 28 A2 01 00 40 A2 01 00 5C A2 01 00 5E A2 01 00 92 A2 01 00 CC A2 01 00 í☺.☺ó☺.(ó☺.@ó☺.\ó☺.^ó☺.Æó☺.╠ó☺. 00030420 CE A2 01 00 5A A3 01 00 5C A3 01 00 86 A3 01 00 C6 A3 01 00 C8 A3 01 00 03 A4 01 00 3D A4 01 00 ╬ó☺.Zú☺.\ú☺.åú☺.╞ú☺.╚ú☺.♥ñ☺.=ñ☺. 00030440 3F A4 01 00 66 A4 01 00 83 A4 01 00 BC A4 01 00 BE A4 01 00 C0 A4 01 00 C2 A4 01 00 D0 A4 01 00 ?ñ☺.fñ☺.âñ☺.╝ñ☺.╛ñ☺.└ñ☺.┬ñ☺.╨ñ☺. 00030460 F3 A4 01 00 F5 A4 01 00 3A A5 01 00 3C A5 01 00 64 A5 01 00 66 A5 01 00 D0 A5 01 00 D2 A5 01 00 ≤ñ☺.⌡ñ☺.:Ñ☺.<Ñ☺.dÑ☺.fÑ☺.╨Ñ☺.╥Ñ☺. 00030480 C7 A6 01 00 C9 A6 01 00 39 A8 01 00 3B A8 01 00 75 A8 01 00 8C A8 01 00 AF A8 01 00 B1 A8 01 00 ╟ª☺.╔ª☺.9¿☺.;¿☺.u¿☺.î¿☺.»¿☺.▒¿☺. 000304A0 E7 A8 01 00 E9 A8 01 00 10 A9 01 00 12 A9 01 00 3B A9 01 00 3D A9 01 00 E1 A9 01 00 E3 A9 01 00 τ¿☺.Θ¿☺.►⌐☺.↕⌐☺.;⌐☺.=⌐☺.ß⌐☺.π⌐☺. 000304C0 18 AA 01 00 1A AA 01 00 1C AA 01 00 1E AA 01 00 34 AA 01 00 57 AA 01 00 59 AA 01 00 88 AA 01 00 ↑¬☺.→¬☺.∟¬☺.▲¬☺.4¬☺.W¬☺.Y¬☺.ê¬☺. 000304E0 8A AA 01 00 B1 AA 01 00 B3 AA 01 00 DC AA 01 00 DE AA 01 00 53 AB 01 00 55 AB 01 00 8A AB 01 00 è¬☺.▒¬☺.│¬☺.▄¬☺.▐¬☺.S½☺.U½☺.è½☺. 00030500 8C AB 01 00 8E AB 01 00 90 AB 01 00 A5 AB 01 00 C8 AB 01 00 CA AB 01 00 05 AC 01 00 07 AC 01 00 î½☺.Ľ☺.ɽ☺.ѽ☺.╚½☺.╩½☺.♣¼☺.•¼☺. 00030520 2D AC 01 00 2F AC 01 00 57 AC 01 00 59 AC 01 00 00 AD 01 00 02 AD 01 00 38 AD 01 00 3A AD 01 00 -¼☺./¼☺.W¼☺.Y¼☺..¡☺.☻¡☺.8¡☺.:¡☺. 00030540 50 AD 01 00 73 AD 01 00 75 AD 01 00 A8 AD 01 00 AA AD 01 00 D0 AD 01 00 D2 AD 01 00 FA AD 01 00 P¡☺.s¡☺.u¡☺.¿¡☺.¬¡☺.╨¡☺.╥¡☺.·¡☺. 00030560 FC AD 01 00 FB FB FB FB FB FB FB FB F6 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB ⁿ¡☺.√√√√√√√√÷√√√√√√√√√√√√√√√√√√√ 00030580 FB F1 FB EC FB E7 FB FB E2 FB FB FB FB FB FB FB FB F6 FB FB FB FB FB FB FB FB FB FB FB FB FB FB √±√∞√τ√√Γ√√√√√√√√÷√√√√√√√√√√√√√√ 000305A0 F1 FB FB FB FB FB FB FB FB FB FB FB FB FB FB F6 FB FB FB E2 FB FB FB FB FB FB FB FB 00 00 00 00 ±√√√√√√√√√√√√√√÷√√√Γ√√√√√√√√.... 000305C0 00 00 00 00 04 05 00 00 00 00 00 00 00 00 04 05 00 06 30 2A F0 00 00 00 04 05 00 04 30 2A F0 00 ....♦♣........♦♣.♠0*≡...♦♣.♦0*≡. 000305E0 00 00 04 05 00 02 30 2A F0 00 00 00 04 05 00 03 30 2A F0 00 00 00 04 05 00 01 30 2A F0 00 00 58 ..♦♣.☻0*≡...♦♣.♥0*≡...♦♣.☺0*≡..X 00030600 FC AD 01 00 FA AF 01 00 FC AF 01 00 32 B0 01 00 34 B0 01 00 36 B0 01 00 38 B0 01 00 47 B0 01 00 ⁿ¡☺.·»☺.ⁿ»☺.2░☺.4░☺.6░☺.8░☺.G░☺. 00030620 6A B0 01 00 6C B0 01 00 99 B0 01 00 9B B0 01 00 C4 B0 01 00 C6 B0 01 00 EE B0 01 00 F0 B0 01 00 j░☺.l░☺.Ö░☺.¢░☺.─░☺.╞░☺.ε░☺.≡░☺. 00030640 F0 B1 01 00 F2 B1 01 00 0B B2 01 00 0D B2 01 00 3E B2 01 00 40 B2 01 00 42 B2 01 00 53 B2 01 00 ≡▒☺.≥▒☺.♂▓☺.♪▓☺.>▓☺.@▓☺.B▓☺.S▓☺. 00030660 76 B2 01 00 78 B2 01 00 9A B2 01 00 9C B2 01 00 BD B2 01 00 BF B2 01 00 E2 B2 01 00 E4 B2 01 00 v▓☺.x▓☺.Ü▓☺.£▓☺.╜▓☺.┐▓☺.Γ▓☺.Σ▓☺. 00030680 6C B3 01 00 6E B3 01 00 A2 B3 01 00 A4 B3 01 00 A6 B3 01 00 A8 B3 01 00 B9 B3 01 00 DC B3 01 00 l│☺.n│☺.ó│☺.ñ│☺.ª│☺.¿│☺.╣│☺.▄│☺. 000306A0 DE B3 01 00 06 B4 01 00 08 B4 01 00 33 B4 01 00 35 B4 01 00 5F B4 01 00 61 B4 01 00 0A B5 01 00 ▐│☺.♠┤☺.◘┤☺.3┤☺.5┤☺._┤☺.a┤☺.◙╡☺. 000306C0 0C B5 01 00 3C B5 01 00 3E B5 01 00 66 B5 01 00 68 B5 01 00 6A B5 01 00 6C B5 01 00 6E B5 01 00 ♀╡☺.<╡☺.>╡☺.f╡☺.h╡☺.j╡☺.l╡☺.n╡☺. 000306E0 7D B5 01 00 A0 B5 01 00 A2 B5 01 00 CE B5 01 00 D0 B5 01 00 F0 B5 01 00 08 B6 01 00 0A B6 01 00 }╡☺.á╡☺.ó╡☺.╬╡☺.╨╡☺.≡╡☺.◘╢☺.◙╢☺. 00030700 39 B6 01 00 3B B6 01 00 E3 B6 01 00 E5 B6 01 00 05 B7 01 00 11 B7 01 00 34 B7 01 00 36 B7 01 00 9╢☺.;╢☺.π╢☺.σ╢☺.♣╖☺.◄╖☺.4╖☺.6╖☺. 00030720 7D B7 01 00 7F B7 01 00 A3 B7 01 00 BA B7 01 00 CA B7 01 00 CC B7 01 00 01 B8 01 00 3A B8 01 00 }╖☺.⌂╖☺.ú╖☺.║╖☺.╩╖☺.╠╖☺.☺╕☺.:╕☺. 00030740 3C B8 01 00 A5 BA 01 00 A7 BA 01 00 D1 BA 01 00 03 BB 01 00 44 BB 01 00 46 BB 01 00 7C BB 01 00 <╕☺.Ñ║☺.º║☺.╤║☺.♥╗☺.D╗☺.F╗☺.|╗☺. 00030760 B6 BB 01 00 B8 BB 01 00 FB F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F1 F6 F6 F6 F6 F6 F6 EC F6 ╢╗☺.╕╗☺.√÷÷÷÷÷÷÷÷÷÷÷÷÷÷±÷÷÷÷÷÷∞÷ 00030780 F6 F6 F6 F6 F6 F6 F6 E7 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 E7 F6 F6 F6 F6 F6 F6 F6 F6 F6 ÷÷÷÷÷÷÷τ÷÷÷÷÷÷÷÷÷÷÷÷÷÷τ÷÷÷÷÷÷÷÷÷ 000307A0 F6 F6 F6 F6 F6 F6 F6 F6 F6 E7 F6 F6 EC F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 E2 F6 F6 F6 F6 F6 F6 F6 ÷÷÷÷÷÷÷÷÷τ÷÷∞÷÷÷÷÷÷÷÷÷÷÷Γ÷÷÷÷÷÷÷ 000307C0 F6 00 00 00 04 05 00 0A 30 2A F0 00 00 00 04 05 00 03 30 2A F0 00 00 00 04 05 00 00 00 00 00 00 ÷...♦♣.◙0*≡...♦♣.♥0*≡...♦♣...... 000307E0 00 00 04 05 00 04 30 2A F0 00 00 00 04 05 00 01 30 2A F0 00 00 00 04 05 00 09 30 2A F0 00 00 59 ..♦♣.♦0*≡...♦♣.☺0*≡...♦♣.○0*≡..Y 00030800 B8 BB 01 00 DA BB 01 00 DC BB 01 00 DE BB 01 00 EE BB 01 00 11 BC 01 00 13 BC 01 00 4D BC 01 00 ╕╗☺.┌╗☺.▄╗☺.▐╗☺.ε╗☺.◄╝☺.‼╝☺.M╝☺. 00030820 4F BC 01 00 85 BC 01 00 A0 BC 01 00 BC BC 01 00 BE BC 01 00 F1 BC 01 00 27 BD 01 00 29 BD 01 00 O╝☺.à╝☺.á╝☺.╝╝☺.╛╝☺.±╝☺.'╜☺.)╜☺. 00030840 47 BF 01 00 49 BF 01 00 74 BF 01 00 76 BF 01 00 9C BF 01 00 9E BF 01 00 A0 BF 01 00 A2 BF 01 00 G┐☺.I┐☺.t┐☺.v┐☺.£┐☺.₧┐☺.á┐☺.ó┐☺. 00030860 AD BF 01 00 D0 BF 01 00 D2 BF 01 00 25 C0 01 00 27 C0 01 00 46 C0 01 00 58 C0 01 00 5A C0 01 00 ¡┐☺.╨┐☺.╥┐☺.%└☺.'└☺.F└☺.X└☺.Z└☺. 00030880 8F C0 01 00 91 C0 01 00 F6 C1 01 00 F8 C1 01 00 22 C2 01 00 63 C2 01 00 65 C2 01 00 A0 C2 01 00 Å└☺.æ└☺.÷┴☺.°┴☺."┬☺.c┬☺.e┬☺.á┬☺. 000308A0 E1 C2 01 00 E3 C2 01 00 F9 C2 01 00 09 C3 01 00 2C C3 01 00 2E C3 01 00 63 C3 01 00 65 C3 01 00 ß┬☺.π┬☺.∙┬☺.○├☺.,├☺..├☺.c├☺.e├☺. 000308C0 97 C3 01 00 B2 C3 01 00 CE C3 01 00 E6 C3 01 00 E8 C3 01 00 1C C4 01 00 4B C4 01 00 78 C4 01 00 ù├☺.▓├☺.╬├☺.µ├☺.Φ├☺.∟─☺.K─☺.x─☺. 000308E0 7A C4 01 00 77 C6 01 00 79 C6 01 00 A1 C6 01 00 A3 C6 01 00 A5 C6 01 00 B8 C6 01 00 DB C6 01 00 z─☺.w╞☺.y╞☺.í╞☺.ú╞☺.Ñ╞☺.╕╞☺.█╞☺. 00030900 DD C6 01 00 10 C7 01 00 12 C7 01 00 42 C7 01 00 58 C7 01 00 6F C7 01 00 7F C7 01 00 81 C7 01 00 ▌╞☺.►╟☺.↕╟☺.B╟☺.X╟☺.o╟☺.⌂╟☺.ü╟☺. 00030920 B7 C7 01 00 E5 C7 01 00 21 C8 01 00 23 C8 01 00 73 C9 01 00 75 C9 01 00 9F C9 01 00 CC C9 01 00 ╖╟☺.σ╟☺.!╚☺.#╚☺.s╔☺.u╔☺.ƒ╔☺.╠╔☺. 00030940 CE C9 01 00 0B CA 01 00 4C CA 01 00 4E CA 01 00 67 CA 01 00 69 CA 01 00 6B CA 01 00 7D CA 01 00 ╬╔☺.♂╩☺.L╩☺.N╩☺.g╩☺.i╩☺.k╩☺.}╩☺. 00030960 A0 CA 01 00 A2 CA 01 00 DB CA 01 00 DD CA 01 00 FB FB FB F6 FB FB FB FB FB FB FB FB FB FB FB F1 á╩☺.ó╩☺.█╩☺.▌╩☺.√√√÷√√√√√√√√√√√± 00030980 FB FB FB FB FB FB FB FB FB FB EC FB FB FB FB FB FB E7 FB FB FB FB FB FB FB FB F6 FB FB FB FB FB √√√√√√√√√√∞√√√√√√τ√√√√√√√√÷√√√√√ 000309A0 FB FB FB FB FB FB FB FB F1 FB FB FB FB F6 FB FB FB FB FB FB FB FB FB FB FB FB FB E7 FB FB FB FB √√√√√√√√±√√√√÷√√√√√√√√√√√√√τ√√√√ 000309C0 FB FB FB FB FB FB F6 FB FB FB FB 00 00 00 04 05 00 06 30 2A F0 00 00 00 04 05 00 02 30 2A F0 00 √√√√√√÷√√√√...♦♣.♠0*≡...♦♣.☻0*≡. 000309E0 00 00 04 05 00 09 30 2A F0 00 00 00 04 05 00 00 00 00 00 00 00 00 04 05 00 01 30 2A F0 00 00 5B ..♦♣.○0*≡...♦♣........♦♣.☺0*≡..[ 00030A00 DD CA 01 00 1E CB 01 00 2E CB 01 00 47 CB 01 00 60 CB 01 00 79 CB 01 00 92 CB 01 00 94 CB 01 00 ▌╩☺.▲╦☺..╦☺.G╦☺.`╦☺.y╦☺.Æ╦☺.ö╦☺. 00030A20 CA CB 01 00 FB CB 01 00 2C CC 01 00 5D CC 01 00 93 CC 01 00 95 CC 01 00 F6 CD 01 00 F8 CD 01 00 ╩╦☺.√╦☺.,╠☺.]╠☺.ô╠☺.ò╠☺.÷═☺.°═☺. 00030A40 9A CE 01 00 9C CE 01 00 C5 CE 01 00 C7 CE 01 00 C9 CE 01 00 D6 CE 01 00 F9 CE 01 00 FB CE 01 00 Ü╬☺.£╬☺.┼╬☺.╟╬☺.╔╬☺.╓╬☺.∙╬☺.√╬☺. 00030A60 46 CF 01 00 48 CF 01 00 69 CF 01 00 85 CF 01 00 87 CF 01 00 BD CF 01 00 BF CF 01 00 43 D1 01 00 F╧☺.H╧☺.i╧☺.à╧☺.ç╧☺.╜╧☺.┐╧☺.C╤☺. 00030A80 45 D1 01 00 6F D1 01 00 B0 D1 01 00 B2 D1 01 00 EC D1 01 00 2D D2 01 00 2F D2 01 00 4F D2 01 00 E╤☺.o╤☺.░╤☺.▓╤☺.∞╤☺.-╥☺./╥☺.O╥☺. 00030AA0 51 D2 01 00 53 D2 01 00 65 D2 01 00 88 D2 01 00 8A D2 01 00 B9 D2 01 00 BB D2 01 00 F2 D2 01 00 Q╥☺.S╥☺.e╥☺.ê╥☺.è╥☺.╣╥☺.╗╥☺.≥╥☺. 00030AC0 01 D3 01 00 19 D3 01 00 31 D3 01 00 49 D3 01 00 61 D3 01 00 63 D3 01 00 98 D3 01 00 C5 D3 01 00 ☺╙☺.↓╙☺.1╙☺.I╙☺.a╙☺.c╙☺.ÿ╙☺.┼╙☺. 00030AE0 F2 D3 01 00 1F D4 01 00 4D D4 01 00 4F D4 01 00 10 D6 01 00 12 D6 01 00 3F D6 01 00 41 D6 01 00 ≥╙☺.▼╘☺.M╘☺.O╘☺.►╓☺.↕╓☺.?╓☺.A╓☺. 00030B00 43 D6 01 00 45 D6 01 00 5E D6 01 00 81 D6 01 00 83 D6 01 00 C3 D6 01 00 C5 D6 01 00 F7 D6 01 00 C╓☺.E╓☺.^╓☺.ü╓☺.â╓☺.├╓☺.┼╓☺.≈╓☺. 00030B20 F9 D6 01 00 2B D7 01 00 2D D7 01 00 75 D7 01 00 77 D7 01 00 A2 D7 01 00 A4 D7 01 00 BF D7 01 00 ∙╓☺.+╫☺.-╫☺.u╫☺.w╫☺.ó╫☺.ñ╫☺.┐╫☺. 00030B40 C1 D7 01 00 C3 D7 01 00 D4 D7 01 00 F7 D7 01 00 F9 D7 01 00 27 D8 01 00 29 D8 01 00 54 D8 01 00 ┴╫☺.├╫☺.╘╫☺.≈╫☺.∙╫☺.'╪☺.)╪☺.T╪☺. 00030B60 FB FB FB FB FB FB FB FB FB FB FB FB FB F6 FB F1 FB FB FB FB EC FB FB E7 FB FB FB FB FB FB E2 FB √√√√√√√√√√√√√÷√±√√√√∞√√τ√√√√√√Γ√ 00030B80 FB FB FB FB FB FB FB FB FB EC FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB DD FB FB FB FB √√√√√√√√√∞√√√√√√√√√√√√√√√√√▌√√√√ 00030BA0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB EC FB FB FB FB FB 00 00 00 04 05 00 08 30 2A √√√√√√√√√√√√√√√√√∞√√√√√...♦♣.◘0* 00030BC0 F0 00 00 00 04 05 00 07 30 2A F0 00 00 00 04 05 00 02 30 2A F0 00 00 00 04 05 00 00 00 00 00 00 ≡...♦♣.•0*≡...♦♣.☻0*≡...♦♣...... 00030BE0 00 00 04 05 00 03 30 2A F0 00 00 00 04 05 00 06 30 2A F0 00 00 00 04 05 00 01 30 2A F0 00 00 57 ..♦♣.♥0*≡...♦♣.♠0*≡...♦♣.☺0*≡..W 00030C00 54 D8 01 00 63 D8 01 00 65 D8 01 00 A2 D8 01 00 A4 D8 01 00 E6 D8 01 00 E8 D8 01 00 18 D9 01 00 T╪☺.c╪☺.e╪☺.ó╪☺.ñ╪☺.µ╪☺.Φ╪☺.↑┘☺. 00030C20 1A D9 01 00 33 D9 01 00 35 D9 01 00 37 D9 01 00 39 D9 01 00 4A D9 01 00 6D D9 01 00 6F D9 01 00 →┘☺.3┘☺.5┘☺.7┘☺.9┘☺.J┘☺.m┘☺.o┘☺. 00030C40 9B D9 01 00 9D D9 01 00 C8 D9 01 00 D7 D9 01 00 D9 D9 01 00 14 DA 01 00 16 DA 01 00 F1 DA 01 00 ¢┘☺.¥┘☺.╚┘☺.╫┘☺.┘┘☺.¶┌☺.▬┌☺.±┌☺. 00030C60 F3 DA 01 00 2B DB 01 00 2D DB 01 00 58 DB 01 00 5A DB 01 00 5C DB 01 00 6E DB 01 00 91 DB 01 00 ≤┌☺.+█☺.-█☺.X█☺.Z█☺.\█☺.n█☺.æ█☺. 00030C80 93 DB 01 00 E1 DB 01 00 E3 DB 01 00 1F DC 01 00 35 DC 01 00 50 DC 01 00 67 DC 01 00 75 DC 01 00 ô█☺.ß█☺.π█☺.▼▄☺.5▄☺.P▄☺.g▄☺.u▄☺. 00030CA0 85 DC 01 00 87 DC 01 00 BC DC 01 00 E9 DC 01 00 16 DD 01 00 46 DD 01 00 81 DD 01 00 83 DD 01 00 à▄☺.ç▄☺.╝▄☺.Θ▄☺.▬▌☺.F▌☺.ü▌☺.â▌☺. 00030CC0 FC E0 01 00 FE E0 01 00 28 E1 01 00 5E E1 01 00 9C E1 01 00 9E E1 01 00 D1 E1 01 00 12 E2 01 00 ⁿα☺.■α☺.(ß☺.^ß☺.£ß☺.₧ß☺.╤ß☺.↕Γ☺. 00030CE0 14 E2 01 00 4B E2 01 00 5D E2 01 00 5F E2 01 00 74 E2 01 00 97 E2 01 00 99 E2 01 00 CD E2 01 00 ¶Γ☺.KΓ☺.]Γ☺._Γ☺.tΓ☺.ùΓ☺.ÖΓ☺.═Γ☺. 00030D00 CF E2 01 00 F3 E2 01 00 F5 E2 01 00 25 E3 01 00 27 E3 01 00 CE E3 01 00 D0 E3 01 00 F7 E3 01 00 ╧Γ☺.≤Γ☺.⌡Γ☺.%π☺.'π☺.╬π☺.╨π☺.≈π☺. 00030D20 14 E4 01 00 16 E4 01 00 58 E4 01 00 5A E4 01 00 75 E4 01 00 77 E4 01 00 79 E4 01 00 7B E4 01 00 ¶Σ☺.▬Σ☺.XΣ☺.ZΣ☺.uΣ☺.wΣ☺.yΣ☺.{Σ☺. 00030D40 87 E4 01 00 AA E4 01 00 AC E4 01 00 CF E4 01 00 D1 E4 01 00 EF E4 01 00 FF E4 01 00 01 E5 01 00 çΣ☺.¬Σ☺.¼Σ☺.╧Σ☺.╤Σ☺.∩Σ☺. Σ☺.☺σ☺. 00030D60 3B E5 01 00 3D E5 01 00 BB E5 01 00 BD E5 01 00 E7 E5 01 00 FB FB FB FB FB FB FB FB FB FB FB FB ;σ☺.=σ☺.╗σ☺.╜σ☺.τσ☺.√√√√√√√√√√√√ 00030D80 FB FB FB FB FB FB FB FB FB FB F6 FB FB FB FB FB FB F1 FB FB F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 √√√√√√√√√√÷√√√√√√±√√±±±±±±±±±±±± 00030DA0 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 E9 E9 E9 F1 F1 ±±±±±±±±±±±±±±±±±±±±±±±±±±±ΘΘΘ±± 00030DC0 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 F1 00 00 07 05 00 00 00 00 00 00 0F 05 00 01 7C 29 ±±±±±±±±±±±±±±±±..•♣......☼♣.☺|) 00030DE0 00 00 04 05 00 00 00 00 00 00 00 00 04 05 00 04 30 2A F0 00 00 00 04 05 00 01 30 2A F0 00 00 5C ..♦♣........♦♣.♦0*≡...♦♣.☺0*≡..\ 00030E00 E7 E5 01 00 22 E6 01 00 24 E6 01 00 54 E6 01 00 8E E6 01 00 90 E6 01 00 B1 E6 01 00 B3 E6 01 00 τσ☺."µ☺.$µ☺.Tµ☺.ĵ☺.ɵ☺.▒µ☺.│µ☺. 00030E20 B5 E6 01 00 C7 E6 01 00 EA E6 01 00 EC E6 01 00 15 E7 01 00 17 E7 01 00 3F E7 01 00 4E E7 01 00 ╡µ☺.╟µ☺.Ωµ☺.∞µ☺.§τ☺.↨τ☺.?τ☺.Nτ☺. 00030E40 5C E7 01 00 5E E7 01 00 92 E7 01 00 BF E7 01 00 C1 E7 01 00 CB E8 01 00 CD E8 01 00 CF E8 01 00 \τ☺.^τ☺.Æτ☺.┐τ☺.┴τ☺.╦Φ☺.═Φ☺.╧Φ☺. 00030E60 D1 E8 01 00 E4 E8 01 00 07 E9 01 00 09 E9 01 00 38 E9 01 00 3A E9 01 00 68 E9 01 00 77 E9 01 00 ╤Φ☺.ΣΦ☺.•Θ☺.○Θ☺.8Θ☺.:Θ☺.hΘ☺.wΘ☺. 00030E80 93 E9 01 00 95 E9 01 00 CF E9 01 00 05 EA 01 00 07 EA 01 00 BF EA 01 00 C1 EA 01 00 C3 EA 01 00 ôΘ☺.òΘ☺.╧Θ☺.♣Ω☺.•Ω☺.┐Ω☺.┴Ω☺.├Ω☺. 00030EA0 C5 EA 01 00 D7 EA 01 00 FA EA 01 00 FC EA 01 00 22 EB 01 00 24 EB 01 00 4D EB 01 00 5C EB 01 00 ┼Ω☺.╫Ω☺.·Ω☺.ⁿΩ☺."δ☺.$δ☺.Mδ☺.\δ☺. 00030EC0 74 EB 01 00 76 EB 01 00 AB EB 01 00 D9 EB 01 00 DB EB 01 00 5E EC 01 00 78 EC 01 00 9B EC 01 00 tδ☺.vδ☺.½δ☺.┘δ☺.█δ☺.^∞☺.x∞☺.¢∞☺. 00030EE0 9D EC 01 00 C2 EC 01 00 C4 EC 01 00 EE EC 01 00 08 ED 01 00 0A ED 01 00 46 ED 01 00 48 ED 01 00 ¥∞☺.┬∞☺.─∞☺.ε∞☺.◘φ☺.◙φ☺.Fφ☺.Hφ☺. 00030F00 0C EE 01 00 0E EE 01 00 10 EE 01 00 12 EE 01 00 21 EE 01 00 44 EE 01 00 46 EE 01 00 80 EE 01 00 ♀ε☺.♫ε☺.►ε☺.↕ε☺.!ε☺.Dε☺.Fε☺.Çε☺. 00030F20 82 EE 01 00 AC EE 01 00 BB EE 01 00 D7 EE 01 00 D9 EE 01 00 0E EF 01 00 3F EF 01 00 41 EF 01 00 éε☺.¼ε☺.╗ε☺.╫ε☺.┘ε☺.♫∩☺.?∩☺.A∩☺. 00030F40 9A F0 01 00 9C F0 01 00 9E F0 01 00 B0 F0 01 00 D3 F0 01 00 D5 F0 01 00 FE F0 01 00 00 F1 01 00 Ü≡☺.£≡☺.₧≡☺.░≡☺.╙≡☺.╒≡☺.■≡☺..±☺. 00030F60 28 F1 01 00 37 F1 01 00 4E F1 01 00 50 F1 01 00 88 F1 01 00 BC F1 01 00 BE F1 01 00 66 F2 01 00 (±☺.7±☺.N±☺.P±☺.ê±☺.╝±☺.╛±☺.f≥☺. 00030F80 68 F2 01 00 84 F2 01 00 95 F2 01 00 B8 F2 01 00 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB h≥☺.ä≥☺.ò≥☺.╕≥☺.√√√√√√√√√√√√√√√√ 00030FA0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 00030FC0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 00030FE0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB 00 00 00 04 05 00 00 00 00 00 00 00 63 √√√√√√√√√√√√√√√√√√√...♦♣.......c 00031000 B8 F2 01 00 BA F2 01 00 F1 F2 01 00 F3 F2 01 00 1C F3 01 00 2B F3 01 00 47 F3 01 00 49 F3 01 00 ╕≥☺.║≥☺.±≥☺.≤≥☺.∟≤☺.+≤☺.G≤☺.I≤☺. 00031020 7D F3 01 00 AA F3 01 00 AC F3 01 00 4F F4 01 00 51 F4 01 00 71 F4 01 00 73 F4 01 00 75 F4 01 00 }≤☺.¬≤☺.¼≤☺.O⌠☺.Q⌠☺.q⌠☺.s⌠☺.u⌠☺. 00031040 77 F4 01 00 86 F4 01 00 A9 F4 01 00 AB F4 01 00 ED F4 01 00 EF F4 01 00 0E F5 01 00 10 F5 01 00 w⌠☺.å⌠☺.⌐⌠☺.½⌠☺.φ⌠☺.∩⌠☺.♫⌡☺.►⌡☺. 00031060 3B F5 01 00 EE F5 01 00 F0 F5 01 00 BB F6 01 00 BD F6 01 00 EF F6 01 00 F1 F6 01 00 09 F7 01 00 ;⌡☺.ε⌡☺.≡⌡☺.╗÷☺.╜÷☺.∩÷☺.±÷☺.○≈☺. 00031080 0B F7 01 00 0D F7 01 00 1F F7 01 00 42 F7 01 00 44 F7 01 00 7D F7 01 00 7F F7 01 00 AB F7 01 00 ♂≈☺.♪≈☺.▼≈☺.B≈☺.D≈☺.}≈☺.⌂≈☺.½≈☺. 000310A0 BA F7 01 00 D6 F7 01 00 D8 F7 01 00 0F F8 01 00 3F F8 01 00 41 F8 01 00 C5 F9 01 00 DA FA 01 00 ║≈☺.╓≈☺.╪≈☺.☼°☺.?°☺.A°☺.┼∙☺.┌·☺. 000310C0 6D FB 01 00 6F FB 01 00 9C FB 01 00 C8 FB 01 00 CA FB 01 00 7C FC 01 00 7E FC 01 00 80 FC 01 00 m√☺.o√☺.£√☺.╚√☺.╩√☺.|ⁿ☺.~ⁿ☺.Çⁿ☺. 000310E0 92 FC 01 00 B5 FC 01 00 B7 FC 01 00 E6 FC 01 00 E8 FC 01 00 20 FD 01 00 2F FD 01 00 48 FD 01 00 Æⁿ☺.╡ⁿ☺.╖ⁿ☺.µⁿ☺.Φⁿ☺. ²☺./²☺.H²☺. 00031100 61 FD 01 00 7A FD 01 00 93 FD 01 00 95 FD 01 00 CA FD 01 00 FA FD 01 00 2A FE 01 00 5A FE 01 00 a²☺.z²☺.ô²☺.ò²☺.╩²☺.·²☺.*■☺.Z■☺. 00031120 88 FE 01 00 8A FE 01 00 CF FF 01 00 D1 FF 01 00 FF FF 01 00 01 00 02 00 03 00 02 00 05 00 02 00 ê■☺.è■☺.╧ ☺.╤ ☺. ☺.☺.☻.♥.☻.♣.☻. 00031140 15 00 02 00 38 00 02 00 3A 00 02 00 79 00 02 00 7B 00 02 00 9D 00 02 00 AC 00 02 00 AE 00 02 00 §.☻.8.☻.:.☻.y.☻.{.☻.¥.☻.¼.☻.«.☻. 00031160 E2 00 02 00 E4 00 02 00 A5 01 02 00 A7 01 02 00 C2 01 02 00 C4 01 02 00 D5 01 02 00 F8 01 02 00 Γ.☻.Σ.☻.Ñ☺☻.º☺☻.┬☺☻.─☺☻.╒☺☻.°☺☻. 00031180 FA 01 02 00 26 02 02 00 28 02 02 00 4A 02 02 00 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB ·☺☻.&☻☻.(☻☻.J☻☻.√√√√√√√√√√√√√√√√ 000311A0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000311C0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000311E0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB 00 00 00 04 05 00 00 00 00 00 00 00 63 √√√√√√√√√√√√√√√√√√√...♦♣.......c 00031200 4A 02 02 00 59 02 02 00 5B 02 02 00 8F 02 02 00 91 02 02 00 71 03 02 00 73 03 02 00 A0 03 02 00 J☻☻.Y☻☻.[☻☻.Å☻☻.æ☻☻.q♥☻.s♥☻.á♥☻. 00031220 A2 03 02 00 A4 03 02 00 A6 03 02 00 B7 03 02 00 DA 03 02 00 DC 03 02 00 0E 04 02 00 10 04 02 00 ó♥☻.ñ♥☻.ª♥☻.╖♥☻.┌♥☻.▄♥☻.♫♦☻.►♦☻. 00031240 33 04 02 00 42 04 02 00 44 04 02 00 79 04 02 00 7B 04 02 00 1C 05 02 00 1E 05 02 00 50 05 02 00 3♦☻.B♦☻.D♦☻.y♦☻.{♦☻.∟♣☻.▲♣☻.P♣☻. 00031260 52 05 02 00 54 05 02 00 56 05 02 00 69 05 02 00 8C 05 02 00 8E 05 02 00 BF 05 02 00 C1 05 02 00 R♣☻.T♣☻.V♣☻.i♣☻.î♣☻.Ä♣☻.┐♣☻.┴♣☻. 00031280 E5 05 02 00 F4 05 02 00 F6 05 02 00 36 06 02 00 38 06 02 00 86 06 02 00 88 06 02 00 BB 06 02 00 σ♣☻.⌠♣☻.÷♣☻.6♠☻.8♠☻.å♠☻.ê♠☻.╗♠☻. 000312A0 BD 06 02 00 E8 06 02 00 FC 06 02 00 1F 07 02 00 21 07 02 00 59 07 02 00 5B 07 02 00 80 07 02 00 ╜♠☻.Φ♠☻.ⁿ♠☻.▼•☻.!•☻.Y•☻.[•☻.Ç•☻. 000312C0 99 07 02 00 9B 07 02 00 D0 07 02 00 D2 07 02 00 B9 09 02 00 BB 09 02 00 BD 09 02 00 CA 09 02 00 Ö•☻.¢•☻.╨•☻.╥•☻.╣○☻.╗○☻.╜○☻.╩○☻. 000312E0 ED 09 02 00 EF 09 02 00 30 0A 02 00 32 0A 02 00 6C 0A 02 00 80 0A 02 00 9B 0A 02 00 B7 0A 02 00 φ○☻.∩○☻.0◙☻.2◙☻.l◙☻.Ç◙☻.¢◙☻.╖◙☻. 00031300 CE 0A 02 00 DE 0A 02 00 E0 0A 02 00 12 0B 02 00 3C 0B 02 00 69 0B 02 00 93 0B 02 00 CB 0B 02 00 ╬◙☻.▐◙☻.α◙☻.↕♂☻.<♂☻.i♂☻.ô♂☻.╦♂☻. 00031320 CD 0B 02 00 63 0D 02 00 65 0D 02 00 8F 0D 02 00 BC 0D 02 00 BE 0D 02 00 FE 0D 02 00 3F 0E 02 00 ═♂☻.c♪☻.e♪☻.Å♪☻.╝♪☻.╛♪☻.■♪☻.?♫☻. 00031340 41 0E 02 00 6C 0E 02 00 81 0E 02 00 A4 0E 02 00 A6 0E 02 00 EC 0E 02 00 EE 0E 02 00 25 0F 02 00 A♫☻.l♫☻.ü♫☻.ñ♫☻.ª♫☻.∞♫☻.ε♫☻.%☼☻. 00031360 34 0F 02 00 4A 0F 02 00 62 0F 02 00 7A 0F 02 00 7C 0F 02 00 B2 0F 02 00 E0 0F 02 00 0E 10 02 00 4☼☻.J☼☻.b☼☻.z☼☻.|☼☻.▓☼☻.α☼☻.♫►☻. 00031380 3D 10 02 00 3F 10 02 00 02 11 02 00 04 11 02 00 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB =►☻.?►☻.☻◄☻.♦◄☻.√√√√√√√√√√√√√√√√ 000313A0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000313C0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000313E0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB 00 00 00 04 05 00 00 00 00 00 00 00 63 √√√√√√√√√√√√√√√√√√√...♦♣.......c 00031400 04 11 02 00 30 11 02 00 32 11 02 00 34 11 02 00 36 11 02 00 44 11 02 00 67 11 02 00 69 11 02 00 ♦◄☻.0◄☻.2◄☻.4◄☻.6◄☻.D◄☻.g◄☻.i◄☻. 00031420 A5 11 02 00 A7 11 02 00 CD 11 02 00 DD 11 02 00 ED 11 02 00 EF 11 02 00 21 12 02 00 4F 12 02 00 Ñ◄☻.º◄☻.═◄☻.▌◄☻.φ◄☻.∩◄☻.!↕☻.O↕☻. 00031440 51 12 02 00 C3 12 02 00 C5 12 02 00 09 13 02 00 0B 13 02 00 26 13 02 00 28 13 02 00 2A 13 02 00 Q↕☻.├↕☻.┼↕☻.○‼☻.♂‼☻.&‼☻.(‼☻.*‼☻. 00031460 3C 13 02 00 5F 13 02 00 61 13 02 00 A9 13 02 00 AB 13 02 00 D1 13 02 00 D3 13 02 00 FF 13 02 00 <‼☻._‼☻.a‼☻.⌐‼☻.½‼☻.╤‼☻.╙‼☻. ‼☻. 00031480 01 14 02 00 73 14 02 00 75 14 02 00 B6 14 02 00 B8 14 02 00 D0 14 02 00 D2 14 02 00 D4 14 02 00 ☺¶☻.s¶☻.u¶☻.╢¶☻.╕¶☻.╨¶☻.╥¶☻.╘¶☻. 000314A0 D6 14 02 00 E9 14 02 00 0C 15 02 00 0E 15 02 00 3E 15 02 00 40 15 02 00 64 15 02 00 73 15 02 00 ╓¶☻.Θ¶☻.♀§☻.♫§☻.>§☻.@§☻.d§☻.s§☻. 000314C0 75 15 02 00 B5 15 02 00 B7 15 02 00 04 16 02 00 06 16 02 00 3F 16 02 00 41 16 02 00 43 16 02 00 u§☻.╡§☻.╖§☻.♦▬☻.♠▬☻.?▬☻.A▬☻.C▬☻. 000314E0 45 16 02 00 59 16 02 00 7C 16 02 00 7E 16 02 00 C9 16 02 00 CB 16 02 00 F0 16 02 00 FF 16 02 00 E▬☻.Y▬☻.|▬☻.~▬☻.╔▬☻.╦▬☻.≡▬☻. ▬☻. 00031500 01 17 02 00 42 17 02 00 44 17 02 00 D8 17 02 00 DA 17 02 00 18 18 02 00 1A 18 02 00 4C 18 02 00 ☺↨☻.B↨☻.D↨☻.╪↨☻.┌↨☻.↑↑☻.→↑☻.L↑☻. 00031520 5F 18 02 00 82 18 02 00 84 18 02 00 BB 18 02 00 BD 18 02 00 E0 18 02 00 E2 18 02 00 07 19 02 00 _↑☻.é↑☻.ä↑☻.╗↑☻.╜↑☻.α↑☻.Γ↑☻.•↓☻. 00031540 09 19 02 00 9F 19 02 00 A1 19 02 00 C7 19 02 00 C9 19 02 00 CB 19 02 00 CD 19 02 00 E1 19 02 00 ○↓☻.ƒ↓☻.í↓☻.╟↓☻.╔↓☻.╦↓☻.═↓☻.ß↓☻. 00031560 04 1A 02 00 06 1A 02 00 42 1A 02 00 44 1A 02 00 69 1A 02 00 6B 1A 02 00 92 1A 02 00 94 1A 02 00 ♦→☻.♠→☻.B→☻.D→☻.i→☻.k→☻.Æ→☻.ö→☻. 00031580 FE 1A 02 00 00 1B 02 00 1B 1B 02 00 1D 1B 02 00 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB ■→☻..←☻.←←☻.↔←☻.√√√√√√√√√√√√√√√√ 000315A0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000315C0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000315E0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB 00 00 00 04 05 00 00 00 00 00 00 00 63 √√√√√√√√√√√√√√√√√√√...♦♣.......c 00031600 1D 1B 02 00 1F 1B 02 00 31 1B 02 00 54 1B 02 00 56 1B 02 00 92 1B 02 00 94 1B 02 00 C2 1B 02 00 ↔←☻.▼←☻.1←☻.T←☻.V←☻.Æ←☻.ö←☻.┬←☻. 00031620 D5 1B 02 00 E7 1B 02 00 E9 1B 02 00 2F 1C 02 00 31 1C 02 00 7F 1D 02 00 81 1D 02 00 B2 1D 02 00 ╒←☻.τ←☻.Θ←☻./∟☻.1∟☻.⌂↔☻.ü↔☻.▓↔☻. 00031640 F0 1D 02 00 2A 1E 02 00 2C 1E 02 00 6B 1E 02 00 A5 1E 02 00 A7 1E 02 00 D4 1E 02 00 D6 1E 02 00 ≡↔☻.*▲☻.,▲☻.k▲☻.Ñ▲☻.º▲☻.╘▲☻.╓▲☻. 00031660 D8 1E 02 00 DA 1E 02 00 EC 1E 02 00 0F 1F 02 00 11 1F 02 00 49 1F 02 00 4B 1F 02 00 6E 1F 02 00 ╪▲☻.┌▲☻.∞▲☻.☼▼☻.◄▼☻.I▼☻.K▼☻.n▼☻. 00031680 70 1F 02 00 95 1F 02 00 97 1F 02 00 39 20 02 00 3B 20 02 00 67 20 02 00 69 20 02 00 6B 20 02 00 p▼☻.ò▼☻.ù▼☻.9 ☻.; ☻.g ☻.i ☻.k ☻. 000316A0 7C 20 02 00 9F 20 02 00 A1 20 02 00 CA 20 02 00 CC 20 02 00 F2 20 02 00 05 21 02 00 07 21 02 00 | ☻.ƒ ☻.í ☻.╩ ☻.╠ ☻.≥ ☻.♣!☻.•!☻. 000316C0 3F 21 02 00 41 21 02 00 F2 21 02 00 F4 21 02 00 22 22 02 00 24 22 02 00 26 22 02 00 28 22 02 00 ?!☻.A!☻.≥!☻.⌠!☻.""☻.$"☻.&"☻.("☻. 000316E0 37 22 02 00 5A 22 02 00 5C 22 02 00 90 22 02 00 92 22 02 00 B7 22 02 00 C6 22 02 00 D3 22 02 00 7"☻.Z"☻.\"☻.É"☻.Æ"☻.╖"☻.╞"☻.╙"☻. 00031700 D5 22 02 00 07 23 02 00 35 23 02 00 37 23 02 00 4B 24 02 00 68 25 02 00 6A 25 02 00 96 25 02 00 ╒"☻.•#☻.5#☻.7#☻.K$☻.h%☻.j%☻.û%☻. 00031720 98 25 02 00 9A 25 02 00 A9 25 02 00 CC 25 02 00 CE 25 02 00 01 26 02 00 03 26 02 00 44 26 02 00 ÿ%☻.Ü%☻.⌐%☻.╠%☻.╬%☻.☺&☻.♥&☻.D&☻. 00031740 53 26 02 00 6C 26 02 00 86 26 02 00 A0 26 02 00 BB 26 02 00 D3 26 02 00 D5 26 02 00 0B 27 02 00 S&☻.l&☻.å&☻.á&☻.╗&☻.╙&☻.╒&☻.♂'☻. 00031760 3C 27 02 00 6D 27 02 00 9E 27 02 00 CC 27 02 00 FE 27 02 00 00 28 02 00 66 28 02 00 68 28 02 00 <'☻.m'☻.₧'☻.╠'☻.■'☻..(☻.f(☻.h(☻. 00031780 96 28 02 00 98 28 02 00 9A 28 02 00 9C 28 02 00 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB û(☻.ÿ(☻.Ü(☻.£(☻.√√√√√√√√√√√√√√√√ 000317A0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000317C0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000317E0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB 00 00 00 04 05 00 00 00 00 00 00 00 63 √√√√√√√√√√√√√√√√√√√...♦♣.......c 00031800 9C 28 02 00 B2 28 02 00 D5 28 02 00 D7 28 02 00 10 29 02 00 12 29 02 00 40 29 02 00 4F 29 02 00 £(☻.▓(☻.╒(☻.╫(☻.►)☻.↕)☻.@)☻.O)☻. 00031820 5E 29 02 00 60 29 02 00 99 29 02 00 CE 29 02 00 D0 29 02 00 5F 2A 02 00 61 2A 02 00 7B 2A 02 00 ^)☻.`)☻.Ö)☻.╬)☻.╨)☻._*☻.a*☻.{*☻. 00031840 7D 2A 02 00 7F 2A 02 00 97 2A 02 00 BA 2A 02 00 BC 2A 02 00 F2 2A 02 00 F4 2A 02 00 1A 2B 02 00 }*☻.⌂*☻.ù*☻.║*☻.╝*☻.≥*☻.⌠*☻.→+☻. 00031860 1C 2B 02 00 60 2B 02 00 62 2B 02 00 D1 2B 02 00 D3 2B 02 00 FA 2B 02 00 FC 2B 02 00 2C 2C 02 00 ∟+☻.`+☻.b+☻.╤+☻.╙+☻.·+☻.ⁿ+☻.,,☻. 00031880 2E 2C 02 00 30 2C 02 00 32 2C 02 00 49 2C 02 00 6C 2C 02 00 6E 2C 02 00 AF 2C 02 00 B1 2C 02 00 .,☻.0,☻.2,☻.I,☻.l,☻.n,☻.»,☻.▒,☻. 000318A0 EF 2C 02 00 FE 2C 02 00 16 2D 02 00 2E 2D 02 00 47 2D 02 00 5F 2D 02 00 61 2D 02 00 9F 2D 02 00 ∩,☻.■,☻.▬-☻..-☻.G-☻._-☻.a-☻.ƒ-☻. 000318C0 D5 2D 02 00 0B 2E 02 00 44 2E 02 00 7B 2E 02 00 7D 2E 02 00 45 2F 02 00 47 2F 02 00 78 2F 02 00 ╒-☻.♂.☻.D.☻.{.☻.}.☻.E/☻.G/☻.x/☻. 000318E0 7A 2F 02 00 7C 2F 02 00 96 2F 02 00 B9 2F 02 00 BB 2F 02 00 0E 30 02 00 10 30 02 00 48 30 02 00 z/☻.|/☻.û/☻.╣/☻.╗/☻.♫0☻.►0☻.H0☻. 00031900 57 30 02 00 6D 30 02 00 85 30 02 00 9D 30 02 00 9F 30 02 00 DD 30 02 00 13 31 02 00 49 31 02 00 W0☻.m0☻.à0☻.¥0☻.ƒ0☻.▌0☻.‼1☻.I1☻. 00031920 80 31 02 00 82 31 02 00 E6 32 02 00 E8 32 02 00 1F 33 02 00 21 33 02 00 23 33 02 00 46 33 02 00 Ç1☻.é1☻.µ2☻.Φ2☻.▼3☻.!3☻.#3☻.F3☻. 00031940 48 33 02 00 5A 33 02 00 5C 33 02 00 4D 37 02 00 4F 37 02 00 2D 3A 02 00 2F 3A 02 00 5A 3A 02 00 H3☻.Z3☻.\3☻.M7☻.O7☻.-:☻./:☻.Z:☻. 00031960 5C 3A 02 00 8F 3A 02 00 91 3A 02 00 BB 3A 02 00 BD 3A 02 00 C4 3A 02 00 C6 3A 02 00 FB FB FB FB \:☻.Å:☻.æ:☻.╗:☻.╜:☻.─:☻.╞:☻.√√√√ 00031980 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000319A0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000319C0 FB FB FB FB FB FB FB FB F5 F5 EF F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 00 00 00 00 05 00 √√√√√√√√⌡⌡∩⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡....♣. 000319E0 00 00 00 00 00 00 05 01 00 00 05 00 00 00 00 00 00 00 05 03 00 00 04 05 00 00 00 00 00 00 00 5E ......♣☺..♣.......♣♥..♦♣.......^ 00031A00 C6 3A 02 00 EA 3A 02 00 0A 3B 02 00 2D 3B 02 00 2F 3B 02 00 0B 3E 02 00 0D 3E 02 00 F0 40 02 00 ╞:☻.Ω:☻.◙;☻.-;☻./;☻.♂>☻.♪>☻.≡@☻. 00031A20 F2 40 02 00 F4 40 02 00 0B 41 02 00 0D 41 02 00 54 41 02 00 56 41 02 00 58 41 02 00 70 41 02 00 ≥@☻.⌠@☻.♂A☻.♪A☻.TA☻.VA☻.XA☻.pA☻. 00031A40 72 41 02 00 84 41 02 00 A7 41 02 00 A9 41 02 00 E9 41 02 00 EB 41 02 00 23 42 02 00 39 42 02 00 rA☻.äA☻.ºA☻.⌐A☻.ΘA☻.δA☻.#B☻.9B☻. 00031A60 48 42 02 00 57 42 02 00 66 42 02 00 68 42 02 00 A4 42 02 00 DA 42 02 00 10 43 02 00 47 43 02 00 HB☻.WB☻.fB☻.hB☻.ñB☻.┌B☻.►C☻.GC☻. 00031A80 49 43 02 00 16 45 02 00 18 45 02 00 09 46 02 00 0B 46 02 00 81 46 02 00 83 46 02 00 A1 46 02 00 IC☻.▬E☻.↑E☻.○F☻.♂F☻.üF☻.âF☻.íF☻. 00031AA0 B6 46 02 00 D9 46 02 00 DB 46 02 00 1A 47 02 00 1C 47 02 00 5E 47 02 00 73 47 02 00 85 47 02 00 ╢F☻.┘F☻.█F☻.→G☻.∟G☻.^G☻.sG☻.àG☻. 00031AC0 99 47 02 00 AA 47 02 00 AC 47 02 00 EC 47 02 00 26 48 02 00 60 48 02 00 9B 48 02 00 9D 48 02 00 ÖG☻.¬G☻.¼G☻.∞G☻.&H☻.`H☻.¢H☻.¥H☻. 00031AE0 3D 4B 02 00 3F 4B 02 00 08 4C 02 00 0A 4C 02 00 28 4C 02 00 2A 4C 02 00 42 4C 02 00 65 4C 02 00 =K☻.?K☻.◘L☻.◙L☻.(L☻.*L☻.BL☻.eL☻. 00031B00 67 4C 02 00 AD 4C 02 00 AF 4C 02 00 F4 4C 02 00 09 4D 02 00 1D 4D 02 00 33 4D 02 00 43 4D 02 00 gL☻.¡L☻.»L☻.⌠L☻.○M☻.↔M☻.3M☻.CM☻. 00031B20 45 4D 02 00 88 4D 02 00 C4 4D 02 00 00 4E 02 00 3E 4E 02 00 40 4E 02 00 2F 51 02 00 31 51 02 00 EM☻.êM☻.─M☻..N☻.>N☻.@N☻./Q☻.1Q☻. 00031B40 EA 51 02 00 EC 51 02 00 EE 51 02 00 F0 51 02 00 01 52 02 00 24 52 02 00 26 52 02 00 57 52 02 00 ΩQ☻.∞Q☻.εQ☻.≡Q☻.☺R☻.$R☻.&R☻.WR☻. 00031B60 59 52 02 00 7F 52 02 00 94 52 02 00 96 52 02 00 D0 52 02 00 D2 52 02 00 EE 53 02 00 F0 53 02 00 YR☻.⌂R☻.öR☻.ûR☻.╨R☻.╥R☻.εS☻.≡S☻. 00031B80 1C 54 02 00 28 54 02 00 FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA F5 F5 F5 F5 F5 F5 F5 F5 F5 ∟T☻.(T☻.···············⌡⌡⌡⌡⌡⌡⌡⌡⌡ 00031BA0 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 ⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡ 00031BC0 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 F5 ⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡⌡ 00031BE0 F5 F5 F5 F5 F5 F5 F5 F5 F5 00 04 05 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 05 03 00 61 ⌡⌡⌡⌡⌡⌡⌡⌡⌡.♦♣........♣.......♣♥.a 00031C00 28 54 02 00 4B 54 02 00 4D 54 02 00 72 54 02 00 74 54 02 00 96 54 02 00 A9 54 02 00 BC 54 02 00 (T☻.KT☻.MT☻.rT☻.tT☻.ûT☻.⌐T☻.╝T☻. 00031C20 BE 54 02 00 F4 54 02 00 30 55 02 00 32 55 02 00 06 57 02 00 08 57 02 00 2F 57 02 00 6C 57 02 00 ╛T☻.⌠T☻.0U☻.2U☻.♠W☻.◘W☻./W☻.lW☻. 00031C40 6E 57 02 00 9A 57 02 00 D4 57 02 00 D6 57 02 00 F1 57 02 00 F3 57 02 00 07 58 02 00 2A 58 02 00 nW☻.ÜW☻.╘W☻.╓W☻.±W☻.≤W☻.•X☻.*X☻. 00031C60 2C 58 02 00 63 58 02 00 65 58 02 00 A4 58 02 00 B9 58 02 00 CD 58 02 00 E6 58 02 00 FD 58 02 00 ,X☻.cX☻.eX☻.ñX☻.╣X☻.═X☻.µX☻.²X☻. 00031C80 FF 58 02 00 3E 59 02 00 76 59 02 00 AF 59 02 00 F0 59 02 00 F2 59 02 00 A7 5C 02 00 A9 5C 02 00 X☻.>Y☻.vY☻.»Y☻.≡Y☻.≥Y☻.º\☻.⌐\☻. 00031CA0 D0 5C 02 00 FA 5C 02 00 23 5D 02 00 5C 5D 02 00 92 5D 02 00 C1 5D 02 00 F5 5D 02 00 30 5E 02 00 ╨\☻.·\☻.#]☻.\]☻.Æ]☻.┴]☻.⌡]☻.0^☻. 00031CC0 59 5E 02 00 5B 5E 02 00 89 5E 02 00 C2 5E 02 00 C4 5E 02 00 FD 5E 02 00 FF 5E 02 00 10 5F 02 00 Y^☻.[^☻.ë^☻.┬^☻.─^☻.²^☻. ^☻.►_☻. 00031CE0 33 5F 02 00 35 5F 02 00 6A 5F 02 00 6C 5F 02 00 9B 5F 02 00 B0 5F 02 00 CD 5F 02 00 CF 5F 02 00 3_☻.5_☻.j_☻.l_☻.¢_☻.░_☻.═_☻.╧_☻. 00031D00 0B 60 02 00 4C 60 02 00 4E 60 02 00 1F 61 02 00 21 61 02 00 4B 61 02 00 8A 61 02 00 8C 61 02 00 ♂`☻.L`☻.N`☻.▼a☻.!a☻.Ka☻.èa☻.îa☻. 00031D20 BE 61 02 00 F8 61 02 00 FA 61 02 00 FC 61 02 00 FE 61 02 00 18 62 02 00 3B 62 02 00 3D 62 02 00 ╛a☻.°a☻.·a☻.ⁿa☻.■a☻.↑b☻.;b☻.=b☻. 00031D40 7A 62 02 00 7C 62 02 00 AA 62 02 00 BF 62 02 00 C1 62 02 00 04 63 02 00 06 63 02 00 69 63 02 00 zb☻.|b☻.¬b☻.┐b☻.┴b☻.♦c☻.♠c☻.ic☻. 00031D60 6B 63 02 00 8D 63 02 00 8F 63 02 00 A8 63 02 00 CB 63 02 00 CD 63 02 00 05 64 02 00 07 64 02 00 kc☻.ìc☻.Åc☻.¿c☻.╦c☻.═c☻.♣d☻.•d☻. 00031D80 41 64 02 00 56 64 02 00 6A 64 02 00 82 64 02 00 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB Ad☻.Vd☻.jd☻.éd☻.√√√√√√√√√√√√√√√√ 00031DA0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 00031DC0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 00031DE0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB 00 00 00 04 05 00 00 00 00 00 00 00 63 √√√√√√√√√√√√√√√√√√√...♦♣.......c 00031E00 82 64 02 00 84 64 02 00 C6 64 02 00 01 65 02 00 40 65 02 00 42 65 02 00 E2 66 02 00 E4 66 02 00 éd☻.äd☻.╞d☻.☺e☻.@e☻.Be☻.Γf☻.Σf☻. 00031E20 0F 67 02 00 3D 67 02 00 6A 67 02 00 A7 67 02 00 DA 67 02 00 0D 68 02 00 45 68 02 00 84 68 02 00 ☼g☻.=g☻.jg☻.ºg☻.┌g☻.♪h☻.Eh☻.äh☻. 00031E40 86 68 02 00 BF 68 02 00 F9 68 02 00 FB 68 02 00 18 69 02 00 1A 69 02 00 1C 69 02 00 1E 69 02 00 åh☻.┐h☻.∙h☻.√h☻.↑i☻.→i☻.∟i☻.▲i☻. 00031E60 2C 69 02 00 4F 69 02 00 51 69 02 00 86 69 02 00 88 69 02 00 AB 69 02 00 C0 69 02 00 C2 69 02 00 ,i☻.Oi☻.Qi☻.åi☻.êi☻.½i☻.└i☻.┬i☻. 00031E80 F9 69 02 00 FB 69 02 00 C3 6A 02 00 C5 6A 02 00 DD 6A 02 00 EB 6A 02 00 0E 6B 02 00 10 6B 02 00 ∙i☻.√i☻.├j☻.┼j☻.▌j☻.δj☻.♫k☻.►k☻. 00031EA0 3F 6B 02 00 41 6B 02 00 6C 6B 02 00 81 6B 02 00 93 6B 02 00 95 6B 02 00 CD 6B 02 00 00 6C 02 00 ?k☻.Ak☻.lk☻.ük☻.ôk☻.òk☻.═k☻..l☻. 00031EC0 02 6C 02 00 11 6D 02 00 13 6D 02 00 15 6D 02 00 17 6D 02 00 2C 6D 02 00 4F 6D 02 00 51 6D 02 00 ☻l☻.◄m☻.‼m☻.§m☻.↨m☻.,m☻.Om☻.Qm☻. 00031EE0 82 6D 02 00 84 6D 02 00 AE 6D 02 00 C3 6D 02 00 C5 6D 02 00 03 6E 02 00 05 6E 02 00 D7 6E 02 00 ém☻.äm☻.«m☻.├m☻.┼m☻.♥n☻.♣n☻.╫n☻. 00031F00 D9 6E 02 00 F6 6E 02 00 F8 6E 02 00 FA 6E 02 00 15 6F 02 00 17 6F 02 00 1F 6F 02 00 27 6F 02 00 ┘n☻.÷n☻.°n☻.·n☻.§o☻.↨o☻.▼o☻.'o☻. 00031F20 2F 6F 02 00 31 6F 02 00 63 6F 02 00 65 6F 02 00 88 6F 02 00 B0 6F 02 00 E4 6F 02 00 1C 70 02 00 /o☻.1o☻.co☻.eo☻.êo☻.░o☻.Σo☻.∟p☻. 00031F40 4F 70 02 00 88 70 02 00 C3 70 02 00 FC 70 02 00 37 71 02 00 66 71 02 00 68 71 02 00 97 71 02 00 Op☻.êp☻.├p☻.ⁿp☻.7q☻.fq☻.hq☻.ùq☻. 00031F60 99 71 02 00 BF 71 02 00 FD 71 02 00 32 72 02 00 5E 72 02 00 FB FB FB FB FB FB FB FB FB FB FB FB Öq☻.┐q☻.²q☻.2r☻.^r☻.√√√√√√√√√√√√ 00031F80 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 00031FA0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB F5 F5 EF EA EA EA EA EA EA EA EA √√√√√√√√√√√√√√√√√√√√√⌡⌡∩ΩΩΩΩΩΩΩΩ 00031FC0 EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA 00 00 00 00 04 00 00 00 00 00 00 00 00 00 05 00 ΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩΩ....♦.........♣. 00031FE0 00 00 00 00 00 00 05 01 00 00 05 00 00 00 00 00 00 00 05 03 00 00 04 05 00 00 00 00 00 00 00 5C ......♣☺..♣.......♣♥..♦♣.......\ 00032000 5E 72 02 00 90 72 02 00 C7 72 02 00 02 73 02 00 3D 73 02 00 3F 73 02 00 41 73 02 00 43 73 02 00 ^r☻.Ér☻.╟r☻.☻s☻.=s☻.?s☻.As☻.Cs☻. 00032020 4E 73 02 00 58 73 02 00 63 73 02 00 65 73 02 00 C5 73 02 00 C7 73 02 00 C9 73 02 00 E7 73 02 00 Ns☻.Xs☻.cs☻.es☻.┼s☻.╟s☻.╔s☻.τs☻. 00032040 E9 73 02 00 1C 74 02 00 1E 74 02 00 44 74 02 00 6A 74 02 00 90 74 02 00 B4 74 02 00 E5 74 02 00 Θs☻.∟t☻.▲t☻.Dt☻.jt☻.Ét☻.┤t☻.σt☻. 00032060 16 75 02 00 47 75 02 00 8F 75 02 00 D5 75 02 00 14 76 02 00 45 76 02 00 76 76 02 00 78 76 02 00 ▬u☻.Gu☻.Åu☻.╒u☻.¶v☻.Ev☻.vv☻.xv☻. 00032080 DE 77 02 00 E0 77 02 00 20 78 02 00 22 78 02 00 24 78 02 00 41 78 02 00 43 78 02 00 70 78 02 00 ▐w☻.αw☻. x☻."x☻.$x☻.Ax☻.Cx☻.px☻. 000320A0 72 78 02 00 98 78 02 00 BE 78 02 00 E4 78 02 00 08 79 02 00 4E 79 02 00 7F 79 02 00 C4 79 02 00 rx☻.ÿx☻.╛x☻.Σx☻.◘y☻.Ny☻.⌂y☻.─y☻. 000320C0 0C 7A 02 00 52 7A 02 00 8F 7A 02 00 D0 7A 02 00 01 7B 02 00 03 7B 02 00 65 7F 02 00 67 7F 02 00 ♀z☻.Rz☻.Åz☻.╨z☻.☺{☻.♥{☻.e⌂☻.g⌂☻. 000320E0 82 7F 02 00 84 7F 02 00 BC 7F 02 00 BE 7F 02 00 E4 7F 02 00 0A 80 02 00 30 80 02 00 54 80 02 00 é⌂☻.ä⌂☻.╝⌂☻.╛⌂☻.Σ⌂☻.◙Ç☻.0Ç☻.TÇ☻. 00032100 85 80 02 00 BC 80 02 00 ED 80 02 00 1E 81 02 00 4F 81 02 00 80 81 02 00 C6 81 02 00 07 82 02 00 àÇ☻.╝Ç☻.φÇ☻.▲ü☻.Oü☻.Çü☻.╞ü☻.•é☻. 00032120 09 82 02 00 75 82 02 00 77 82 02 00 85 84 02 00 87 84 02 00 23 85 02 00 25 85 02 00 46 85 02 00 ○é☻.ué☻.wé☻.àä☻.çä☻.#à☻.%à☻.Fà☻. 00032140 48 85 02 00 79 85 02 00 7B 85 02 00 A1 85 02 00 C7 85 02 00 ED 85 02 00 11 86 02 00 42 86 02 00 Hà☻.yà☻.{à☻.íà☻.╟à☻.φà☻.◄å☻.Bå☻. 00032160 81 86 02 00 B2 86 02 00 E3 86 02 00 14 87 02 00 45 87 02 00 FB FB FB FB FB FB FB FB FB FB FB FB üå☻.▓å☻.πå☻.¶ç☻.Eç☻.√√√√√√√√√√√√ 00032180 FB FB F5 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB EF FB FB FB FB F5 FB FB FB FB FB FB FB √√⌡√√√√√√√√√√√√√√√√∩√√√√⌡√√√√√√√ 000321A0 FB FB FB FB FB FB FB FB FB EF FB F5 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB E9 EF EF EF √√√√√√√√√∩√⌡√√√√√√√√√√√√√√√√Θ∩∩∩ 000321C0 E9 FB F5 FB FB FB FB FB FB FB FB FB FB FB FB FB 00 00 05 03 00 00 00 00 00 00 05 03 00 00 05 00 Θ√⌡√√√√√√√√√√√√√..♣♥......♣♥..♣. 000321E0 00 00 00 00 00 00 05 03 00 00 05 00 00 00 00 00 00 00 05 01 00 00 04 00 00 00 00 00 00 00 00 5C ......♣♥..♣.......♣☺..♦........\ 00032200 45 87 02 00 76 87 02 00 B7 87 02 00 B9 87 02 00 D4 87 02 00 D6 87 02 00 67 88 02 00 AE 88 02 00 Eç☻.vç☻.╖ç☻.╣ç☻.╘ç☻.╓ç☻.gê☻.«ê☻. 00032220 B0 88 02 00 16 89 02 00 18 89 02 00 3A 89 02 00 61 89 02 00 87 89 02 00 9F 89 02 00 B5 89 02 00 ░ê☻.▬ë☻.↑ë☻.:ë☻.aë☻.çë☻.ƒë☻.╡ë☻. 00032240 D4 89 02 00 F1 89 02 00 06 8A 02 00 25 8A 02 00 42 8A 02 00 68 8A 02 00 87 8A 02 00 A4 8A 02 00 ╘ë☻.±ë☻.♠è☻.%è☻.Bè☻.hè☻.çè☻.ñè☻. 00032260 C3 8A 02 00 E0 8A 02 00 F5 8A 02 00 14 8B 02 00 31 8B 02 00 58 8B 02 00 62 8B 02 00 64 8B 02 00 ├è☻.αè☻.⌡è☻.¶ï☻.1ï☻.Xï☻.bï☻.dï☻. 00032280 6F 8D 02 00 71 8D 02 00 79 8D 02 00 7F 8D 02 00 87 8D 02 00 89 8D 02 00 A4 8D 02 00 C2 8D 02 00 oì☻.qì☻.yì☻.⌂ì☻.çì☻.ëì☻.ñì☻.┬ì☻. 000322A0 E0 8D 02 00 FE 8D 02 00 1E 8E 02 00 46 8E 02 00 6A 8E 02 00 92 8E 02 00 BE 8E 02 00 DB 8E 02 00 αì☻.■ì☻.▲Ä☻.FÄ☻.jÄ☻.ÆÄ☻.╛Ä☻.█Ä☻. 000322C0 FC 8E 02 00 0D 8F 02 00 10 8F 02 00 37 8F 02 00 76 8F 02 00 A0 8F 02 00 BF 8F 02 00 D7 8F 02 00 ⁿÄ☻.♪Å☻.►Å☻.7Å☻.vÅ☻.áÅ☻.┐Å☻.╫Å☻. 000322E0 F1 8F 02 00 0E 90 02 00 2E 90 02 00 4B 90 02 00 7E 90 02 00 8E 90 02 00 90 90 02 00 A0 90 02 00 ±Å☻.♫É☻..É☻.KÉ☻.~É☻.ÄÉ☻.ÉÉ☻.áÉ☻. 00032300 A3 90 02 00 C0 90 02 00 E2 90 02 00 FE 90 02 00 11 91 02 00 37 91 02 00 4A 91 02 00 4C 91 02 00 úÉ☻.└É☻.ΓÉ☻.■É☻.◄æ☻.7æ☻.Jæ☻.Læ☻. 00032320 5C 91 02 00 5F 91 02 00 7B 91 02 00 8D 91 02 00 A4 91 02 00 B8 91 02 00 E4 91 02 00 F2 91 02 00 \æ☻._æ☻.{æ☻.ìæ☻.ñæ☻.╕æ☻.Σæ☻.≥æ☻. 00032340 F4 91 02 00 F6 91 02 00 F8 91 02 00 1C 92 02 00 1E 92 02 00 20 92 02 00 31 92 02 00 34 92 02 00 ⌠æ☻.÷æ☻.°æ☻.∟Æ☻.▲Æ☻. Æ☻.1Æ☻.4Æ☻. 00032360 4D 92 02 00 4F 92 02 00 6C 92 02 00 82 92 02 00 99 92 02 00 AE 92 02 00 B0 92 02 00 FB FB FB F5 MÆ☻.OÆ☻.lÆ☻.éÆ☻.ÖÆ☻.«Æ☻.░Æ☻.√√√⌡ 00032380 FB EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF EF FB FB FB √∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩∩√√√ 000323A0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000323C0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB 00 00 00 00 05 00 √√√√√√√√√√√√√√√√√√√√√√√√√√....♣. 000323E0 00 00 00 00 00 00 05 03 00 00 05 00 00 00 00 00 00 00 05 01 00 00 04 00 00 00 00 00 00 00 00 5E ......♣♥..♣.......♣☺..♦........^ 00032400 B0 92 02 00 CE 92 02 00 E8 92 02 00 03 93 02 00 1E 93 02 00 2F 93 02 00 31 93 02 00 4C 93 02 00 ░Æ☻.╬Æ☻.ΦÆ☻.♥ô☻.▲ô☻./ô☻.1ô☻.Lô☻. 00032420 4E 93 02 00 7C 93 02 00 AC 93 02 00 AE 93 02 00 CF 93 02 00 EF 93 02 00 10 94 02 00 12 94 02 00 Nô☻.|ô☻.¼ô☻.«ô☻.╧ô☻.∩ô☻.►ö☻.↕ö☻. 00032440 33 94 02 00 53 94 02 00 74 94 02 00 76 94 02 00 9F 94 02 00 C9 94 02 00 EE 94 02 00 1E 95 02 00 3ö☻.Sö☻.tö☻.vö☻.ƒö☻.╔ö☻.εö☻.▲ò☻. 00032460 49 95 02 00 7C 95 02 00 A3 95 02 00 B5 95 02 00 B7 95 02 00 D2 95 02 00 13 96 02 00 15 96 02 00 Iò☻.|ò☻.úò☻.╡ò☻.╖ò☻.╥ò☻.‼û☻.§û☻. 00032480 46 96 02 00 54 96 02 00 56 96 02 00 58 96 02 00 5A 96 02 00 A8 96 02 00 AA 96 02 00 B6 96 02 00 Fû☻.Tû☻.Vû☻.Xû☻.Zû☻.¿û☻.¬û☻.╢û☻. 000324A0 C0 96 02 00 CB 96 02 00 CD 96 02 00 D4 96 02 00 F7 96 02 00 1B 97 02 00 3F 97 02 00 63 97 02 00 └û☻.╦û☻.═û☻.╘û☻.≈û☻.←ù☻.?ù☻.cù☻. 000324C0 87 97 02 00 AB 97 02 00 CF 97 02 00 F3 97 02 00 39 98 02 00 3B 98 02 00 41 98 02 00 59 98 02 00 çù☻.½ù☻.╧ù☻.≤ù☻.9ÿ☻.;ÿ☻.Aÿ☻.Yÿ☻. 000324E0 8D 98 02 00 D3 98 02 00 05 99 02 00 24 99 02 00 43 99 02 00 62 99 02 00 7D 99 02 00 98 99 02 00 ìÿ☻.╙ÿ☻.♣Ö☻.$Ö☻.CÖ☻.bÖ☻.}Ö☻.ÿÖ☻. 00032500 B6 99 02 00 F9 99 02 00 02 9A 02 00 04 9A 02 00 1F 9A 02 00 3C 9A 02 00 69 9A 02 00 89 9A 02 00 ╢Ö☻.∙Ö☻.☻Ü☻.♦Ü☻.▼Ü☻.<Ü☻.iÜ☻.ëÜ☻. 00032520 AA 9A 02 00 E2 9A 02 00 EB 9A 02 00 ED 9A 02 00 03 9B 02 00 24 9B 02 00 45 9B 02 00 65 9B 02 00 ¬Ü☻.ΓÜ☻.δÜ☻.φÜ☻.♥¢☻.$¢☻.E¢☻.e¢☻. 00032540 86 9B 02 00 BE 9B 02 00 C7 9B 02 00 C9 9B 02 00 CB 9B 02 00 ED 9B 02 00 EF 9B 02 00 06 9C 02 00 å¢☻.╛¢☻.╟¢☻.╔¢☻.╦¢☻.φ¢☻.∩¢☻.♠£☻. 00032560 32 9C 02 00 4F 9C 02 00 6F 9C 02 00 8F 9C 02 00 AF 9C 02 00 CC 9C 02 00 EC 9C 02 00 0C 9D 02 00 2£☻.O£☻.o£☻.Å£☻.»£☻.╠£☻.∞£☻.♀¥☻. 00032580 2C 9D 02 00 4C 9D 02 00 69 9D 02 00 9D 9D 02 00 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB ,¥☻.L¥☻.i¥☻.¥¥☻.√√√√√√√√√√√√√√√√ 000325A0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000325C0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 000325E0 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB 00 00 00 04 00 00 00 00 00 00 00 00 63 √√√√√√√√√√√√√√√√√√√...♦........c 00032600 9D 9D 02 00 D1 9D 02 00 EE 9D 02 00 0B 9E 02 00 28 9E 02 00 45 9E 02 00 62 9E 02 00 7F 9E 02 00 ¥¥☻.╤¥☻.ε¥☻.♂₧☻.(₧☻.E₧☻.b₧☻.⌂₧☻. 00032620 81 9E 02 00 B4 9E 02 00 E7 9E 02 00 1A 9F 02 00 4D 9F 02 00 80 9F 02 00 B3 9F 02 00 E6 9F 02 00 ü₧☻.┤₧☻.τ₧☻.→ƒ☻.Mƒ☻.ǃ☻.│ƒ☻.µƒ☻. 00032640 07 A0 02 00 09 A0 02 00 29 A0 02 00 63 A0 02 00 A6 A0 02 00 AF A0 02 00 B1 A0 02 00 B3 A0 02 00 •á☻.○á☻.)á☻.cá☻.ªá☻.»á☻.▒á☻.│á☻. 00032660 C0 A0 02 00 E3 A0 02 00 E5 A0 02 00 EF A0 02 00 5B A2 02 00 5D A2 02 00 6C A2 02 00 AB A2 02 00 └á☻.πá☻.σá☻.∩á☻.[ó☻.]ó☻.ló☻.½ó☻. 00032680 AD A2 02 00 BC A2 02 00 1E A3 02 00 29 A3 02 00 C5 A4 02 00 C7 A4 02 00 D3 A4 02 00 23 A5 02 00 ¡ó☻.╝ó☻.▲ú☻.)ú☻.┼ñ☻.╟ñ☻.╙ñ☻.#Ñ☻. 000326A0 25 A5 02 00 33 A5 02 00 D3 A5 02 00 D5 A5 02 00 E6 A5 02 00 08 A6 02 00 0A A6 02 00 17 A6 02 00 %Ñ☻.3Ñ☻.╙Ñ☻.╒Ñ☻.µÑ☻.◘ª☻.◙ª☻.↨ª☻. 000326C0 B3 A7 02 00 B5 A7 02 00 B7 A7 02 00 B9 A7 02 00 CC A7 02 00 EF A7 02 00 F1 A7 02 00 FF A7 02 00 │º☻.╡º☻.╖º☻.╣º☻.╠º☻.∩º☻.±º☻. º☻. 000326E0 21 A8 02 00 23 A8 02 00 36 A8 02 00 58 A8 02 00 5A A8 02 00 6D A8 02 00 D5 A8 02 00 D7 A8 02 00 !¿☻.#¿☻.6¿☻.X¿☻.Z¿☻.m¿☻.╒¿☻.╫¿☻. 00032700 E1 A8 02 00 D6 AA 02 00 E5 AA 02 00 01 AB 02 00 03 AB 02 00 16 AB 02 00 AA AB 02 00 AC AB 02 00 ß¿☻.╓¬☻.σ¬☻.☺½☻.♥½☻.▬½☻.¬½☻.¼½☻. 00032720 B5 AB 02 00 E4 AB 02 00 E6 AB 02 00 F4 AB 02 00 40 AC 02 00 42 AC 02 00 4D AC 02 00 A9 AC 02 00 ╡½☻.Σ½☻.µ½☻.⌠½☻.@¼☻.B¼☻.M¼☻.⌐¼☻. 00032740 AB AC 02 00 AD AC 02 00 AF AC 02 00 BC AC 02 00 DF AC 02 00 E1 AC 02 00 EE AC 02 00 0F AD 02 00 ½¼☻.¡¼☻.»¼☻.╝¼☻.▀¼☻.ß¼☻.ε¼☻.☼¡☻. 00032760 11 AD 02 00 1E AD 02 00 86 AE 02 00 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB ◄¡☻.▲¡☻.å«☻.√√√√√√√√√√√√√√√√√√√√ 00032780 FB FB F5 EC E4 EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC √√⌡∞Σ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞ 000327A0 E4 EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC EC E4 Σ∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞Σ 000327C0 EC EC EC EC EC EC 00 00 07 05 00 00 00 00 00 00 11 D0 02 13 30 FD 00 00 08 00 00 00 00 00 00 00 ∞∞∞∞∞∞..•♣......◄╨☻‼0²..◘....... 000327E0 05 03 11 D0 02 13 30 FD 00 00 05 00 00 00 00 00 00 00 05 03 00 00 04 00 00 00 00 00 00 00 00 5A ♣♥◄╨☻‼0²..♣.......♣♥..♦........Z 00032800 86 AE 02 00 88 AE 02 00 95 AE 02 00 E0 AE 02 00 E2 AE 02 00 F0 AE 02 00 98 AF 02 00 9A AF 02 00 å«☻.ê«☻.ò«☻.α«☻.Γ«☻.≡«☻.ÿ»☻.Ü»☻. 00032820 A6 AF 02 00 4C B0 02 00 4E B0 02 00 5D B0 02 00 D3 B0 02 00 E5 B0 02 00 82 B1 02 00 84 B1 02 00 ª»☻.L░☻.N░☻.]░☻.╙░☻.σ░☻.é▒☻.ä▒☻. 00032840 96 B1 02 00 B4 B2 02 00 B6 B2 02 00 C8 B2 02 00 AA B3 02 00 AC B3 02 00 B4 B3 02 00 05 B4 02 00 û▒☻.┤▓☻.╢▓☻.╚▓☻.¬│☻.¼│☻.┤│☻.♣┤☻. 00032860 07 B4 02 00 12 B4 02 00 AC B4 02 00 AE B4 02 00 BF B4 02 00 B8 B6 02 00 BA B6 02 00 CD B6 02 00 •┤☻.↕┤☻.¼┤☻.«┤☻.┐┤☻.╕╢☻.║╢☻.═╢☻. 00032880 CE B8 02 00 D0 B8 02 00 E1 B8 02 00 AC B9 02 00 BD B9 02 00 24 BA 02 00 26 BA 02 00 37 BA 02 00 ╬╕☻.╨╕☻.ß╕☻.¼╣☻.╜╣☻.$║☻.&║☻.7║☻. 000328A0 98 BA 02 00 9A BA 02 00 AB BA 02 00 04 BB 02 00 06 BB 02 00 16 BB 02 00 5A BB 02 00 5C BB 02 00 ÿ║☻.Ü║☻.½║☻.♦╗☻.♠╗☻.▬╗☻.Z╗☻.\╗☻. 000328C0 6D BB 02 00 AA BB 02 00 AC BB 02 00 B5 BB 02 00 EB BB 02 00 FF BB 02 00 15 BC 02 00 2D BC 02 00 m╗☻.¬╗☻.¼╗☻.╡╗☻.δ╗☻. ╗☻.§╝☻.-╝☻. 000328E0 48 BC 02 00 B0 BC 02 00 12 BD 02 00 75 BE 02 00 B8 BE 02 00 BA BE 02 00 CD BE 02 00 1D C0 02 00 H╝☻.░╝☻.↕╜☻.u╛☻.╕╛☻.║╛☻.═╛☻.↔└☻. 00032900 1F C0 02 00 2F C0 02 00 C3 C0 02 00 C5 C0 02 00 E3 C0 02 00 E5 C0 02 00 8D C1 02 00 8F C1 02 00 ▼└☻./└☻.├└☻.┼└☻.π└☻.σ└☻.ì┴☻.Å┴☻. 00032920 97 C1 02 00 9D C1 02 00 A5 C1 02 00 A7 C1 02 00 E3 C1 02 00 02 C2 02 00 21 C2 02 00 40 C2 02 00 ù┴☻.¥┴☻.Ñ┴☻.º┴☻.π┴☻.☻┬☻.!┬☻.@┬☻. 00032940 5F C2 02 00 7E C2 02 00 9D C2 02 00 9F C2 02 00 DC C2 02 00 10 C3 02 00 59 C3 02 00 9F C3 02 00 _┬☻.~┬☻.¥┬☻.ƒ┬☻.▄┬☻.►├☻.Y├☻.ƒ├☻. 00032960 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈ 00032980 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 F7 EE EE EE EE EE EE EE EE F7 F7 F7 F7 ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈εεεεεεεε≈≈≈≈ 000329A0 F7 F7 E8 E2 DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD 00 00 00 04 00 00 00 00 00 ≈≈ΦΓ▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌...♦..... 000329C0 00 00 00 00 05 00 00 00 00 00 00 00 05 01 00 00 05 00 00 00 00 00 00 00 05 03 00 00 08 00 00 00 ....♣.......♣☺..♣.......♣♥..◘... 000329E0 00 00 00 00 05 03 11 08 07 13 C8 FB 00 00 08 00 00 00 00 00 00 00 05 03 11 D0 02 13 30 FD 00 57 ....♣♥◄◘•‼╚√..◘.......♣♥◄╨☻‼0².W 00032A00 9F C3 02 00 DF C3 02 00 18 C4 02 00 1A C4 02 00 62 C4 02 00 A2 C4 02 00 DF C4 02 00 15 C5 02 00 ƒ├☻.▀├☻.↑─☻.→─☻.b─☻.ó─☻.▀─☻.§┼☻. 00032A20 17 C5 02 00 54 C5 02 00 66 C5 02 00 98 C5 02 00 CE C5 02 00 04 C6 02 00 1E C6 02 00 53 C6 02 00 ↨┼☻.T┼☻.f┼☻.ÿ┼☻.╬┼☻.♦╞☻.▲╞☻.S╞☻. 00032A40 9A C6 02 00 CE C6 02 00 16 C7 02 00 4A C7 02 00 89 C7 02 00 D0 C7 02 00 04 C8 02 00 45 C8 02 00 Ü╞☻.╬╞☻.▬╟☻.J╟☻.ë╟☻.╨╟☻.♦╚☻.E╚☻. 00032A60 79 C8 02 00 88 C8 02 00 8A C8 02 00 8C C8 02 00 DA C8 02 00 E5 C8 02 00 EE C8 02 00 F8 C8 02 00 y╚☻.ê╚☻.è╚☻.î╚☻.┌╚☻.σ╚☻.ε╚☻.°╚☻. 00032A80 FA C8 02 00 01 C9 02 00 3D C9 02 00 54 C9 02 00 6B C9 02 00 82 C9 02 00 99 C9 02 00 B0 C9 02 00 ·╚☻.☺╔☻.=╔☻.T╔☻.k╔☻.é╔☻.Ö╔☻.░╔☻. 00032AA0 C7 C9 02 00 C9 C9 02 00 0A CA 02 00 31 CA 02 00 6D CA 02 00 A7 CA 02 00 DA CA 02 00 06 CB 02 00 ╟╔☻.╔╔☻.◙╩☻.1╩☻.m╩☻.º╩☻.┌╩☻.♠╦☻. 00032AC0 08 CB 02 00 50 CB 02 00 83 CB 02 00 B3 CB 02 00 DC CB 02 00 DE CB 02 00 E4 CB 02 00 FB CB 02 00 ◘╦☻.P╦☻.â╦☻.│╦☻.▄╦☻.▐╦☻.Σ╦☻.√╦☻. 00032AE0 37 CC 02 00 77 CC 02 00 B7 CC 02 00 E0 CC 02 00 1A CD 02 00 5A CD 02 00 98 CD 02 00 DE CD 02 00 7╠☻.w╠☻.╖╠☻.α╠☻.→═☻.Z═☻.ÿ═☻.▐═☻. 00032B00 1C CE 02 00 65 CE 02 00 AE CE 02 00 EC CE 02 00 2F CF 02 00 6D CF 02 00 76 CF 02 00 A7 CF 02 00 ∟╬☻.e╬☻.«╬☻.∞╬☻./╧☻.m╧☻.v╧☻.º╧☻. 00032B20 A9 CF 02 00 AB CF 02 00 E3 CF 02 00 30 D0 02 00 32 D0 02 00 34 D0 02 00 81 D0 02 00 8F D0 02 00 ⌐╧☻.½╧☻.π╧☻.0╨☻.2╨☻.4╨☻.ü╨☻.Å╨☻. 00032B40 91 D0 02 00 93 D0 02 00 95 D0 02 00 AB D0 02 00 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB æ╨☻.ô╨☻.ò╨☻.½╨☻.√√√√√√√√√√√√√√√√ 00032B60 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB √√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√ 00032B80 FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB FB F5 FB EC E7 E7 FB E2 D9 FB √√√√√√√√√√√√√√√√√√√√√√√⌡√∞ττ√Γ┘√ 00032BA0 FB FB FB 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 F2 00 01 30 2A F0 00 0F 07 01 C0 21 01 √√√...............◘≥.☺0*≡.☼•☺└!☺ 00032BC0 30 2A 02 00 04 F2 00 01 30 2A F0 00 00 00 04 F3 00 01 30 2A F0 00 00 00 08 F3 00 01 30 2A F0 00 0*☻.♦≥.☺0*≡...♦≤.☺0*≡...◘≤.☺0*≡. 00032BE0 0F 07 01 C0 21 01 30 2A 02 00 05 00 00 00 00 00 00 00 05 03 00 00 04 00 00 00 00 00 00 00 00 53 ☼•☺└!☺0*☻.♣.......♣♥..♦........S 00032C00 0E 00 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 52 65 6D 61 72 6B 73 FF 07 62 6C 6F ♫.7................•Remarks •blo 00032C20 63 6B 65 64 06 62 69 74 74 65 64 04 50 41 52 41 08 62 6C 6F 63 6B 65 64 32 3C 00 FF FF FF FF FF cked♠bitted♦PARA◘blocked2<. 00032C40 FF FF FF FF FF FF FF FF FF 0E 00 00 40 00 00 00 00 00 00 00 00 00 09 04 05 00 00 02 00 04 FF 05 ♫..@.........○♦♣..☻.♦ ♣ 00032C60 00 00 02 00 04 05 00 00 02 00 04 05 00 00 02 00 04 03 00 00 02 82 00 FF FF FF FF FF FF FF FF FF ..☻.♦♣..☻.♦♣..☻.♦♥..☻é. 00032C80 FF FF FF FF FF 07 00 00 00 00 00 00 00 19 01 00 00 00 00 00 00 05 03 11 46 05 13 BA FA 0F 08 00 •.......↓☺......♣♥◄F♣‼║·☼◘. 00032CA0 02 37 02 E1 03 00 00 FF 0D 03 00 00 00 00 00 00 11 FC 04 13 04 FB 16 04 00 00 00 00 00 00 05 03 ☻7☻ß♥.. ♪♥......◄ⁿ♦‼♦√▬♦......♣♥ 00032CC0 11 6E 04 13 92 FB 0F 05 00 01 1C 01 00 19 05 00 00 00 00 00 00 05 03 11 4D 06 13 B3 F9 0F 08 00 ◄n♦‼Æ√☼♣.☺∟☺.↓♣......♣♥◄M♠‼│∙☼◘. 00032CE0 02 37 02 E1 03 00 00 0F 06 00 00 00 00 00 00 05 03 11 A5 06 13 5B F9 15 00 F2 00 F3 00 00 00 F5 ☻7☻ß♥..☼♠......♣♥◄Ñ♠‼[∙§.≥.≤...⌡ 00032D00 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 00 00 00 00 FF 00 00 DE 01 00 00 00 03 00 04 00 05 . . . . . . . ..... ..▐☺...♥.♦.♣ 00032D20 00 06 03 00 00 00 00 15 CF 02 00 13 00 95 D0 02 00 00 00 00 00 CD 09 00 00 30 14 00 00 AE 1B 00 .♠♥....§╧☻.‼.ò╨☻.....═○..0¶..«←. 00032D40 00 58 26 00 00 1B 2F 00 00 BE 38 00 00 8D 3F 00 00 9F 44 00 00 54 4D 00 00 9D 52 00 00 2C 58 00 .X&..←/..╛8..ì?..ƒD..TM..¥R..,X. 00032D60 00 77 61 00 00 F5 6B 00 00 C1 71 00 00 63 76 00 00 2A 7A 00 00 78 81 00 00 B5 89 00 00 FF 90 00 .wa..⌡k..┴q..cv..*z..xü..╡ë.. É. 00032D80 00 63 98 00 00 85 9E 00 00 BF A6 00 00 C5 AE 00 00 92 B9 00 00 30 C4 00 00 D1 CF 00 00 CF D9 00 .cÿ..à₧..┐ª..┼«..Æ╣..0─..╤╧..╧┘. 00032DA0 00 7B E4 00 00 BC EF 00 00 FD F9 00 00 1F 04 01 00 65 0E 01 00 B9 18 01 00 FA 20 01 00 19 2A 01 .{Σ..╝∩..²∙..▼♦☺.e♫☺.╣↑☺.· ☺.↓*☺ 00032DC0 00 FA 32 01 00 59 3B 01 00 4A 46 01 00 D1 4F 01 00 30 54 01 00 5B 5A 01 00 6C 60 01 00 16 65 01 .·2☺.Y;☺.JF☺.╤O☺.0T☺.[Z☺.l`☺.▬e☺ 00032DE0 00 98 6A 01 00 5B 70 01 00 37 75 01 00 E3 76 01 00 87 7C 01 00 69 82 01 00 45 87 01 00 36 8E 01 .ÿj☺.[p☺.7u☺.πv☺.ç|☺.ié☺.Eç☺.6Ä☺ 00032E00 00 3C 94 01 00 69 99 01 00 01 A0 01 00 F6 A6 01 00 BB AB 01 00 C3 B0 01 00 86 B5 01 00 5F BA 01 .<ö☺.iÖ☺.☺á☺.÷ª☺.╗½☺.├░☺.å╡☺._║☺ 00032E20 00 7A C1 01 00 26 C5 01 00 EC C8 01 00 4A CD 01 00 D4 D0 01 00 44 D6 01 00 DD D9 01 00 E0 E0 01 .z┴☺.&┼☺.∞╚☺.J═☺.╘╨☺.D╓☺.▌┘☺.αα☺ 00032E40 00 36 E5 01 00 DF EA 01 00 05 F1 01 00 8E F5 01 00 01 FB 01 00 45 00 02 00 69 05 02 00 ED 0C 02 .6σ☺.▀Ω☺.♣±☺.Ä⌡☺.☺√☺.E.☻.i♣☻.φ♀☻ 00032E60 00 AB 11 02 00 CD 16 02 00 A0 19 02 00 EC 1E 02 00 1B 24 02 00 00 29 02 00 FD 2D 02 00 A4 31 02 .½◄☻.═▬☻.á↓☻.∞▲☻.←$☻..)☻.²-☻.ñ1☻ 00032E80 00 8D 3C 02 00 22 45 02 00 AB 4A 02 00 9D 52 02 00 74 56 02 00 80 5D 02 00 10 62 02 00 5E 69 02 .ì<☻."E☻.½J☻.¥R☻.tV☻.Ç]☻.►b☻.^i☻ 00032EA0 00 7B 6D 02 00 4A 72 02 00 A5 76 02 00 E8 7D 02 00 A6 83 02 00 3A 86 02 00 7D 8D 02 00 A1 90 02 .{m☻.Jr☻.Ñv☻.Φ}☻.ªâ☻.:å☻.}ì☻.íÉ☻ 00032EC0 00 2B 95 02 00 70 9A 02 00 9F A1 02 00 57 A9 02 00 54 AF 02 00 2D B8 02 00 46 BF 02 00 5B C7 02 .+ò☻.pÜ☻.ƒí☻.W⌐☻.T»☻.-╕☻.F┐☻.[╟☻ 00032EE0 00 15 CF 02 00 08 02 FF FF 00 00 03 00 2B 00 00 02 FF FF 00 00 04 00 22 00 08 02 FF FF 00 00 05 .§╧☻.◘☻ ..♥.+..☻ ..♦.".◘☻ ..♣ 00032F00 00 3C 00 00 02 FF FF 00 00 06 00 15 00 08 02 FF FF 00 00 07 00 22 00 00 02 FF FF 00 00 08 00 1E .<..☻ ..♠.§.◘☻ ..•."..☻ ..◘.▲ 00032F20 00 08 02 FF FF 00 00 09 00 1A 00 00 02 FF FF 00 00 0A 00 2B 00 08 02 FF FF 00 00 0B 00 23 00 00 .◘☻ ..○.→..☻ ..◙.+.◘☻ ..♂.#.. 00032F40 02 FF FF 00 00 0C 00 2B 00 08 02 FF FF 00 00 0D 00 20 00 00 02 FF FF 00 00 0E 00 E8 02 08 02 FF ☻ ..♀.+.◘☻ ..♪. ..☻ ..♫.Φ☻◘☻ 00032F60 FF 00 00 0F 00 2E 00 00 02 FF FF 00 00 10 00 24 00 08 02 FF FF 00 00 11 00 23 00 00 02 FF FF 00 ..☼....☻ ..►.$.◘☻ ..◄.#..☻ . 00032F80 00 12 00 31 00 08 02 FF FF 00 00 13 00 28 00 00 02 FF FF 00 00 14 00 17 00 08 02 FF FF 00 00 15 .↕.1.◘☻ ..‼.(..☻ ..¶.↨.◘☻ ..§ 00032FA0 00 22 00 00 02 FF FF 00 00 16 00 2D 00 08 02 FF FF 00 00 17 00 1D 00 00 02 FF FF 00 00 18 00 02 ."..☻ ..▬.-.◘☻ ..↨.↔..☻ ..↑.☻ 00032FC0 00 08 02 FF FF 00 00 19 00 28 00 00 02 FF FF 00 00 1A 00 6F 00 08 02 FF FF 00 00 1B 00 EC 01 00 .◘☻ ..↓.(..☻ ..→.o.◘☻ ..←.∞☺. 00032FE0 02 FF FF 00 00 1C 00 05 02 08 02 FF FF 00 00 1D 00 68 01 00 02 FF FF 00 00 1E 00 1E 00 08 02 FF ☻ ..∟.♣☻◘☻ ..↔.h☺.☻ ..▲.▲.◘☻ 00033000 FF 00 00 1F 00 22 00 00 02 FF FF 00 00 20 00 5E 00 08 02 FF FF 00 00 21 00 09 02 00 02 FF FF 00 ..▼."..☻ .. .^.◘☻ ..!.○☻.☻ . 00033020 00 22 00 1F 01 08 02 FF FF 00 00 23 00 30 00 00 02 FF FF 00 00 24 00 26 01 08 02 FF FF 00 00 25 .".▼☺◘☻ ..#.0..☻ ..$.&☺◘☻ ..% 00033040 00 F9 00 00 02 FF FF 00 00 26 00 47 00 08 02 FF FF 00 00 27 00 1F 00 00 02 FF FF 00 00 28 00 25 .∙..☻ ..&.G.◘☻ ..'.▼..☻ ..(.% 00033060 01 08 02 FF FF 00 00 29 00 0F 02 00 02 FF FF 00 00 2A 00 1D 00 08 02 FF FF 00 00 2B 00 0F 00 00 ☺◘☻ ..).☼☻.☻ ..*.↔.◘☻ ..+.☼.. 00033080 02 FF FF 00 00 2C 00 12 00 08 02 FF FF 00 00 2D 00 0E 00 00 02 FF FF 00 00 2E 00 14 00 08 02 FF ☻ ..,.↕.◘☻ ..-.♫..☻ ....¶.◘☻ 000330A0 FF 00 00 2F 00 13 00 00 02 FF FF 00 00 30 00 0F 00 08 02 FF FF 00 00 31 00 14 00 00 02 FF FF 00 ../.‼..☻ ..0.☼.◘☻ ..1.¶..☻ . 000330C0 00 32 00 16 00 08 02 FF FF 00 00 33 00 14 00 00 02 FF FF 00 00 34 00 12 00 08 02 FF FF 00 00 35 .2.▬.◘☻ ..3.¶..☻ ..4.↕.◘☻ ..5 000330E0 00 14 00 00 02 FF FF 00 00 36 00 0F 00 08 02 FF FF 00 00 37 00 0F 00 00 02 FF FF 00 00 38 00 0E .¶..☻ ..6.☼.◘☻ ..7.☼..☻ ..8.♫ 00033100 00 08 02 FF FF 00 00 39 00 16 00 00 02 FF FF 00 00 3A 00 15 00 08 02 FF FF 00 00 3B 00 10 00 00 .◘☻ ..9.▬..☻ ..:.§.◘☻ ..;.►.. 00033120 02 FF FF 00 00 3C 00 0B 00 08 02 FF FF 00 00 3D 00 0F 00 00 02 FF FF 00 00 3E 00 0F 00 08 02 FF ☻ ..<.♂.◘☻ ..=.☼..☻ ..>.☼.◘☻ 00033140 FF 00 00 3F 00 12 00 00 02 FF FF 00 00 40 00 11 00 08 02 FF FF 00 00 41 00 0C 00 00 02 FF FF 00 ..?.↕..☻ ..@.◄.◘☻ ..A.♀..☻ . 00033160 00 42 00 11 00 08 02 FF FF 00 00 43 00 10 00 00 02 FF FF 00 00 44 00 11 00 08 02 FF FF 00 00 45 .B.◄.◘☻ ..C.►..☻ ..D.◄.◘☻ ..E 00033180 00 14 00 00 02 FF FF 00 00 46 00 11 00 08 02 FF FF 00 00 47 00 19 00 00 02 FF FF 00 00 48 00 10 .¶..☻ ..F.◄.◘☻ ..G.↓..☻ ..H.► 000331A0 00 08 02 FF FF 00 00 49 00 11 00 00 02 FF FF 00 00 4A 00 11 00 08 02 FF FF 00 00 4B 00 10 00 00 .◘☻ ..I.◄..☻ ..J.◄.◘☻ ..K.►.. 000331C0 02 FF FF 00 00 4C 00 13 00 08 02 FF FF 00 00 4D 00 14 00 00 02 FF FF 00 00 4E 00 11 00 08 02 FF ☻ ..L.‼.◘☻ ..M.¶..☻ ..N.◄.◘☻ 000331E0 FF 00 00 4F 00 12 00 00 02 FF FF 00 00 50 00 11 00 0A 02 FF FF 00 00 51 00 10 00 02 02 FF FF 00 ..O.↕..☻ ..P.◄.◙☻ ..Q.►.☻☻ . 00033200 00 52 00 0E 00 0A 02 FF FF 00 00 53 00 17 00 02 02 FF FF 00 00 54 00 19 00 0A 02 FF FF 00 00 55 .R.♫.◙☻ ..S.↨.☻☻ ..T.↓.◙☻ ..U 00033220 00 22 00 02 02 FF FF 00 00 56 00 E3 02 0A 02 FF FF 00 00 57 00 14 00 02 02 FF FF 00 00 58 00 17 .".☻☻ ..V.π☻◙☻ ..W.¶.☻☻ ..X.↨ 00033240 00 0A 02 FF FF 00 00 59 00 0B 00 02 02 FF FF 00 00 5A 00 13 00 0A 02 FF FF 00 00 5B 00 10 00 02 .◙☻ ..Y.♂.☻☻ ..Z.‼.◙☻ ..[.►.☻ 00033260 02 FF FF 00 00 5C 00 18 00 0A 02 FF FF 00 00 5D 00 0D 00 02 02 FF FF 00 00 5E 00 1A 00 0A 02 FF ☻ ..\.↑.◙☻ ..].♪.☻☻ ..^.→.◙☻ 00033280 FF 00 00 5F 00 1D 00 02 02 FF FF 00 00 60 00 1C 00 0A 02 FF FF 00 00 61 00 1A 00 02 02 FF FF 00 .._.↔.☻☻ ..`.∟.◙☻ ..a.→.☻☻ . 000332A0 00 62 00 20 00 0A 02 FF FF 00 00 63 00 1A 00 02 02 FF FF 00 00 64 00 10 00 0A 02 FF FF 00 00 65 .b. .◙☻ ..c.→.☻☻ ..d.►.◙☻ ..e 000332C0 00 10 00 02 02 FF FF 00 00 66 00 0B 00 0A 02 FF FF 00 00 67 00 16 00 02 02 FF FF 00 00 68 00 0A .►.☻☻ ..f.♂.◙☻ ..g.▬.☻☻ ..h.◙ 000332E0 00 0A 02 FF FF 00 00 69 00 0E 00 02 02 FF FF 00 00 6A 00 11 00 0A 02 FF FF 00 00 6B 00 10 00 02 .◙☻ ..i.♫.☻☻ ..j.◄.◙☻ ..k.►.☻ 00033300 02 FF FF 00 00 6C 00 1D 00 0A 02 FF FF 00 00 6D 00 0A 00 02 02 FF FF 00 00 6E 00 00 00 13 DA 01 ☻ ..l.↔.◙☻ ..m.◙.☻☻ ..n...‼┌☺ 00033320 00 61 DA 01 00 63 DA 01 00 9F DA 01 00 B5 DA 01 00 D0 DA 01 00 E7 DA 01 00 F5 DA 01 00 05 DB 01 .a┌☺.c┌☺.ƒ┌☺.╡┌☺.╨┌☺.τ┌☺.⌡┌☺.♣█☺ 00033340 00 07 DB 01 00 3C DB 01 00 69 DB 01 00 96 DB 01 00 C6 DB 01 00 01 DC 01 00 03 DC 01 00 7C DF 01 .•█☺.<█☺.i█☺.û█☺.╞█☺.☺▄☺.♥▄☺.|▀☺ 00033360 00 7E DF 01 00 A8 DF 01 00 DE DF 01 00 1C E0 01 00 1E E0 01 00 51 E0 01 00 92 E0 01 00 94 E0 01 .~▀☺.¿▀☺.▐▀☺.∟α☺.▲α☺.Qα☺.Æα☺.öα☺ 00033380 00 CB E0 01 00 DD E0 01 00 F4 E0 01 00 17 E1 01 00 19 E1 01 00 4D E1 01 00 4F E1 01 00 73 E1 01 .╦α☺.▌α☺.⌠α☺.↨ß☺.↓ß☺.Mß☺.Oß☺.sß☺ 000333A0 00 75 E1 01 00 A5 E1 01 00 A7 E1 01 00 4E E2 01 00 50 E2 01 00 77 E2 01 00 94 E2 01 00 96 E2 01 .uß☺.Ñß☺.ºß☺.NΓ☺.PΓ☺.wΓ☺.öΓ☺.ûΓ☺ 000333C0 00 D8 E2 01 00 DA E2 01 00 F5 E2 01 00 F7 E2 01 00 F9 E2 01 00 FB E2 01 00 07 E3 01 00 2A E3 01 .╪Γ☺.┌Γ☺.⌡Γ☺.≈Γ☺.∙Γ☺.√Γ☺.•π☺.*π☺ 000333E0 00 2C E3 01 00 4F E3 01 00 51 E3 01 00 6F E3 01 00 7F E3 01 00 81 E3 01 00 BB E3 01 00 BD E3 01 .,π☺.Oπ☺.Qπ☺.oπ☺.⌂π☺.üπ☺.╗π☺.╜π☺ 00033400 00 3B E4 01 00 3D E4 01 00 67 E4 01 00 A2 E4 01 00 A4 E4 01 00 D4 E4 01 00 0E E5 01 00 10 E5 01 .;Σ☺.=Σ☺.gΣ☺.óΣ☺.ñΣ☺.╘Σ☺.♫σ☺.►σ☺ 00033420 00 31 E5 01 00 33 E5 01 00 47 E5 01 00 6A E5 01 00 6C E5 01 00 95 E5 01 00 97 E5 01 00 BF E5 01 .1σ☺.3σ☺.Gσ☺.jσ☺.lσ☺.òσ☺.ùσ☺.┐σ☺ 00033440 00 CE E5 01 00 DC E5 01 00 DE E5 01 00 12 E6 01 00 3F E6 01 00 41 E6 01 00 4B E7 01 00 4D E7 01 .╬σ☺.▄σ☺.▐σ☺.↕µ☺.?µ☺.Aµ☺.Kτ☺.Mτ☺ 00033460 00 4F E7 01 00 51 E7 01 00 64 E7 01 00 87 E7 01 00 89 E7 01 00 B8 E7 01 00 BA E7 01 00 E8 E7 01 .Oτ☺.Qτ☺.dτ☺.çτ☺.ëτ☺.╕τ☺.║τ☺.Φτ☺ 00033480 00 F7 E7 01 00 13 E8 01 00 15 E8 01 00 4F E8 01 00 85 E8 01 00 87 E8 01 00 3F E9 01 00 41 E9 01 .≈τ☺.‼Φ☺.§Φ☺.OΦ☺.àΦ☺.çΦ☺.?Θ☺.AΘ☺ 000334A0 00 43 E9 01 00 45 E9 01 00 57 E9 01 00 7A E9 01 00 7C E9 01 00 A2 E9 01 00 A4 E9 01 00 CD E9 01 .CΘ☺.EΘ☺.WΘ☺.zΘ☺.|Θ☺.óΘ☺.ñΘ☺.═Θ☺ 000334C0 00 DC E9 01 00 F4 E9 01 00 F6 E9 01 00 2B EA 01 00 59 EA 01 00 5B EA 01 00 F8 EA 01 00 1B EB 01 .▄Θ☺.⌠Θ☺.÷Θ☺.+Ω☺.YΩ☺.[Ω☺.°Ω☺.←δ☺ 000334E0 00 1D EB 01 00 42 EB 01 00 44 EB 01 00 6E EB 01 00 88 EB 01 00 8A EB 01 00 C6 EB 01 00 C8 EB 01 .↔δ☺.Bδ☺.Dδ☺.nδ☺.êδ☺.èδ☺.╞δ☺.╚δ☺ 00033500 00 8C EC 01 00 8E EC 01 00 90 EC 01 00 92 EC 01 00 A1 EC 01 00 C4 EC 01 00 C6 EC 01 00 00 ED 01 .î∞☺.Ä∞☺.É∞☺.Æ∞☺.í∞☺.─∞☺.╞∞☺..φ☺ 00033520 00 02 ED 01 00 2C ED 01 00 3B ED 01 00 57 ED 01 00 59 ED 01 00 8E ED 01 00 BF ED 01 00 C1 ED 01 .☻φ☺.,φ☺.;φ☺.Wφ☺.Yφ☺.Äφ☺.┐φ☺.┴φ☺ 00033540 00 1A EF 01 00 1C EF 01 00 1E EF 01 00 30 EF 01 00 53 EF 01 00 55 EF 01 00 7E EF 01 00 80 EF 01 .→∩☺.∟∩☺.▲∩☺.0∩☺.S∩☺.U∩☺.~∩☺.Ç∩☺ 00033560 00 A8 EF 01 00 B7 EF 01 00 CE EF 01 00 D0 EF 01 00 08 F0 01 00 3C F0 01 00 3E F0 01 00 E6 F0 01 .¿∩☺.╖∩☺.╬∩☺.╨∩☺.◘≡☺.<≡☺.>≡☺.µ≡☺ 00033580 00 E8 F0 01 00 15 F1 01 00 38 F1 01 00 3A F1 01 00 71 F1 01 00 73 F1 01 00 9C F1 01 00 AB F1 01 .Φ≡☺.§±☺.8±☺.:±☺.q±☺.s±☺.£±☺.½±☺ 000335A0 00 C7 F1 01 00 C9 F1 01 00 FD F1 01 00 2A F2 01 00 2C F2 01 00 CF F2 01 00 D1 F2 01 00 F1 F2 01 .╟±☺.╔±☺.²±☺.*≥☺.,≥☺.╧≥☺.╤≥☺.±≥☺ 000335C0 00 F3 F2 01 00 F5 F2 01 00 F7 F2 01 00 06 F3 01 00 29 F3 01 00 2B F3 01 00 6D F3 01 00 6F F3 01 .≤≥☺.⌡≥☺.≈≥☺.♠≤☺.)≤☺.+≤☺.m≤☺.o≤☺ 000335E0 00 8E F3 01 00 90 F3 01 00 BB F3 01 00 6E F4 01 00 70 F4 01 00 3B F5 01 00 3D F5 01 00 6F F5 01 .Ä≤☺.É≤☺.╗≤☺.n⌠☺.p⌠☺.;⌡☺.=⌡☺.o⌡☺ 00033600 00 71 F5 01 00 89 F5 01 00 8B F5 01 00 9F F5 01 00 C2 F5 01 00 C4 F5 01 00 FD F5 01 00 FF F5 01 .q⌡☺.ë⌡☺.ï⌡☺.ƒ⌡☺.┬⌡☺.─⌡☺.²⌡☺. ⌡☺ 00033620 00 2B F6 01 00 3A F6 01 00 56 F6 01 00 58 F6 01 00 8F F6 01 00 BF F6 01 00 C1 F6 01 00 45 F8 01 .+÷☺.:÷☺.V÷☺.X÷☺.Å÷☺.┐÷☺.┴÷☺.E°☺ 00033640 00 5A F9 01 00 ED F9 01 00 EF F9 01 00 1C FA 01 00 48 FA 01 00 4A FA 01 00 FC FA 01 00 FE FA 01 .Z∙☺.φ∙☺.∩∙☺.∟·☺.H·☺.J·☺.ⁿ·☺.■·☺ 00033660 00 12 FB 01 00 35 FB 01 00 37 FB 01 00 66 FB 01 00 68 FB 01 00 A0 FB 01 00 AF FB 01 00 C8 FB 01 .↕√☺.5√☺.7√☺.f√☺.h√☺.á√☺.»√☺.╚√☺ 00033680 00 E1 FB 01 00 FA FB 01 00 13 FC 01 00 15 FC 01 00 4A FC 01 00 7A FC 01 00 AA FC 01 00 DA FC 01 .ß√☺.·√☺.‼ⁿ☺.§ⁿ☺.Jⁿ☺.zⁿ☺.¬ⁿ☺.┌ⁿ☺ 000336A0 00 08 FD 01 00 0A FD 01 00 4F FE 01 00 51 FE 01 00 7F FE 01 00 81 FE 01 00 83 FE 01 00 85 FE 01 .◘²☺.◙²☺.O■☺.Q■☺.⌂■☺.ü■☺.â■☺.à■☺ 000336C0 00 95 FE 01 00 B8 FE 01 00 BA FE 01 00 F9 FE 01 00 FB FE 01 00 1D FF 01 00 2C FF 01 00 2E FF 01 .ò■☺.╕■☺.║■☺.∙■☺.√■☺.↔ ☺., ☺.. ☺ 000336E0 00 62 FF 01 00 64 FF 01 00 25 00 02 00 27 00 02 00 42 00 02 00 55 00 02 00 78 00 02 00 7A 00 02 .b ☺.d ☺.%.☻.'.☻.B.☻.U.☻.x.☻.z.☻ 00033700 00 A6 00 02 00 A8 00 02 00 CA 00 02 00 D9 00 02 00 DB 00 02 00 0F 01 02 00 11 01 02 00 F1 01 02 .ª.☻.¿.☻.╩.☻.┘.☻.█.☻.☼☺☻.◄☺☻.±☺☻ 00033720 00 F3 01 02 00 20 02 02 00 22 02 02 00 24 02 02 00 26 02 02 00 37 02 02 00 5A 02 02 00 5C 02 02 .≤☺☻. ☻☻."☻☻.$☻☻.&☻☻.7☻☻.Z☻☻.\☻☻ 00033740 00 8E 02 02 00 90 02 02 00 B3 02 02 00 C2 02 02 00 C4 02 02 00 F9 02 02 00 FB 02 02 00 9C 03 02 .Ä☻☻.É☻☻.│☻☻.┬☻☻.─☻☻.∙☻☻.√☻☻.£♥☻ 00033760 00 9E 03 02 00 D0 03 02 00 D2 03 02 00 D4 03 02 00 D6 03 02 00 E9 03 02 00 0C 04 02 00 0E 04 02 .₧♥☻.╨♥☻.╥♥☻.╘♥☻.╓♥☻.Θ♥☻.♀♦☻.♫♦☻ 00033780 00 3F 04 02 00 41 04 02 00 65 04 02 00 74 04 02 00 76 04 02 00 B6 04 02 00 B8 04 02 00 06 05 02 .?♦☻.A♦☻.e♦☻.t♦☻.v♦☻.╢♦☻.╕♦☻.♠♣☻ 000337A0 00 08 05 02 00 3B 05 02 00 3D 05 02 00 7C 05 02 00 9F 05 02 00 A1 05 02 00 D9 05 02 00 DB 05 02 .◘♣☻.;♣☻.=♣☻.|♣☻.ƒ♣☻.í♣☻.┘♣☻.█♣☻ 000337C0 00 00 06 02 00 19 06 02 00 1B 06 02 00 50 06 02 00 52 06 02 00 39 08 02 00 3B 08 02 00 3D 08 02 ..♠☻.↓♠☻.←♠☻.P♠☻.R♠☻.9◘☻.;◘☻.=◘☻ 000337E0 00 4A 08 02 00 6D 08 02 00 6F 08 02 00 B0 08 02 00 B2 08 02 00 EC 08 02 00 00 09 02 00 1B 09 02 .J◘☻.m◘☻.o◘☻.░◘☻.▓◘☻.∞◘☻..○☻.←○☻ 00033800 00 37 09 02 00 4E 09 02 00 5E 09 02 00 60 09 02 00 92 09 02 00 BC 09 02 00 E9 09 02 00 13 0A 02 .7○☻.N○☻.^○☻.`○☻.Æ○☻.╝○☻.Θ○☻.‼◙☻ 00033820 00 4B 0A 02 00 4D 0A 02 00 E3 0B 02 00 E5 0B 02 00 0F 0C 02 00 3C 0C 02 00 3E 0C 02 00 7E 0C 02 .K◙☻.M◙☻.π♂☻.σ♂☻.☼♀☻.<♀☻.>♀☻.~♀☻ 00033840 00 BF 0C 02 00 C1 0C 02 00 01 0D 02 00 24 0D 02 00 26 0D 02 00 6C 0D 02 00 6E 0D 02 00 A5 0D 02 .┐♀☻.┴♀☻.☺♪☻.$♪☻.&♪☻.l♪☻.n♪☻.Ñ♪☻ 00033860 00 B4 0D 02 00 CA 0D 02 00 E2 0D 02 00 FA 0D 02 00 FC 0D 02 00 32 0E 02 00 60 0E 02 00 8E 0E 02 .┤♪☻.╩♪☻.Γ♪☻.·♪☻.ⁿ♪☻.2♫☻.`♫☻.Ä♫☻ 00033880 00 BD 0E 02 00 BF 0E 02 00 82 0F 02 00 84 0F 02 00 B0 0F 02 00 B2 0F 02 00 B4 0F 02 00 B6 0F 02 .╜♫☻.┐♫☻.é☼☻.ä☼☻.░☼☻.▓☼☻.┤☼☻.╢☼☻ 000338A0 00 C4 0F 02 00 E7 0F 02 00 E9 0F 02 00 25 10 02 00 27 10 02 00 4D 10 02 00 5D 10 02 00 6D 10 02 .─☼☻.τ☼☻.Θ☼☻.%►☻.'►☻.M►☻.]►☻.m►☻ 000338C0 00 6F 10 02 00 A1 10 02 00 CF 10 02 00 D1 10 02 00 43 11 02 00 45 11 02 00 89 11 02 00 8B 11 02 .o►☻.í►☻.╧►☻.╤►☻.C◄☻.E◄☻.ë◄☻.ï◄☻ 000338E0 00 A6 11 02 00 A8 11 02 00 BC 11 02 00 DF 11 02 00 E1 11 02 00 29 12 02 00 2B 12 02 00 51 12 02 .ª◄☻.¿◄☻.╝◄☻.▀◄☻.ß◄☻.)↕☻.+↕☻.Q↕☻ 00033900 00 53 12 02 00 7F 12 02 00 81 12 02 00 F3 12 02 00 F5 12 02 00 36 13 02 00 38 13 02 00 50 13 02 .S↕☻.⌂↕☻.ü↕☻.≤↕☻.⌡↕☻.6‼☻.8‼☻.P‼☻ 00033920 00 52 13 02 00 54 13 02 00 56 13 02 00 69 13 02 00 8C 13 02 00 8E 13 02 00 BE 13 02 00 C0 13 02 .R‼☻.T‼☻.V‼☻.i‼☻.î‼☻.Ä‼☻.╛‼☻.└‼☻ 00033940 00 E4 13 02 00 F3 13 02 00 F5 13 02 00 35 14 02 00 37 14 02 00 84 14 02 00 86 14 02 00 BF 14 02 .Σ‼☻.≤‼☻.⌡‼☻.5¶☻.7¶☻.ä¶☻.å¶☻.┐¶☻ 00033960 00 C1 14 02 00 C3 14 02 00 C5 14 02 00 D9 14 02 00 FC 14 02 00 FE 14 02 00 49 15 02 00 4B 15 02 .┴¶☻.├¶☻.┼¶☻.┘¶☻.ⁿ¶☻.■¶☻.I§☻.K§☻ 00033980 00 70 15 02 00 7F 15 02 00 81 15 02 00 C2 15 02 00 C4 15 02 00 58 16 02 00 5A 16 02 00 98 16 02 .p§☻.⌂§☻.ü§☻.┬§☻.─§☻.X▬☻.Z▬☻.ÿ▬☻ 000339A0 00 9A 16 02 00 DF 16 02 00 02 17 02 00 04 17 02 00 3B 17 02 00 3D 17 02 00 60 17 02 00 62 17 02 .Ü▬☻.▀▬☻.☻↨☻.♦↨☻.;↨☻.=↨☻.`↨☻.b↨☻ 000339C0 00 87 17 02 00 89 17 02 00 1F 18 02 00 21 18 02 00 47 18 02 00 49 18 02 00 4B 18 02 00 4D 18 02 .ç↨☻.ë↨☻.▼↑☻.!↑☻.G↑☻.I↑☻.K↑☻.M↑☻ 000339E0 00 61 18 02 00 84 18 02 00 86 18 02 00 C2 18 02 00 C4 18 02 00 E9 18 02 00 EB 18 02 00 12 19 02 .a↑☻.ä↑☻.å↑☻.┬↑☻.─↑☻.Θ↑☻.δ↑☻.↕↓☻ 00033A00 00 14 19 02 00 7E 19 02 00 80 19 02 00 9B 19 02 00 9D 19 02 00 15 CF 02 00 00 02 30 2A F0 00 00 .¶↓☻.~↓☻.Ç↓☻.¢↓☻.¥↓☻.§╧☻..☻0*≡.. 00033A20 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033A40 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033A60 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 0F 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☼0*≡..☺0*≡.. 00033A80 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033AA0 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033AC0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00033AE0 01 30 2A F0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..♥0*≡..☺0*≡..☺0*≡..☺0 00033B00 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033B20 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00033B40 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033B60 2A F0 00 00 01 30 2A F0 00 00 02 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☻0*≡..☺0*≡..☺0*≡..☺0*≡ 00033B80 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00033BA0 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033BC0 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033BE0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 05 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..♣0*≡..☺0*≡..☺0*≡.. 00033C00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033C20 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033C40 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..♥0*≡..☺0*≡..☺0*≡.. 00033C60 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033C80 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033CA0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..♥0*≡..☺0*≡..☺0*≡.. 00033CC0 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033CE0 2A F0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..♥0*≡..☺0*≡..☺0*≡..☺0*≡ 00033D00 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00033D20 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033D40 2A F0 00 00 01 30 2A F0 00 00 06 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..♠0*≡..☺0*≡..☺0*≡..☺0*≡ 00033D60 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00033D80 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033DA0 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..♥0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033DC0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00033DE0 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..♥0*≡..☺0 00033E00 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033E20 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00033E40 01 30 2A F0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 00 00 04 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..♥0*≡..☺0*≡..♦0*≡..☺0 00033E60 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033E80 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00033EA0 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033EC0 2A F0 00 00 07 30 2A F0 00 00 05 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..•0*≡..♣0*≡..♥0*≡..☺0*≡..☺0*≡ 00033EE0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..♥0*≡..☺0*≡..☺0*≡.. 00033F00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033F20 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033F40 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00033F60 01 30 2A F0 00 00 06 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..♠0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033F80 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00033FA0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00033FC0 01 30 2A F0 00 00 04 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..♦0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00033FE0 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00034000 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 04 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..♦0*≡..☺0*≡.. 00034020 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00034040 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00034060 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..♥0*≡..☺0*≡.. 00034080 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 000340A0 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 000340C0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 02 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☻0*≡..☺0*≡.. 000340E0 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00034100 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00034120 00 00 01 30 2A F0 00 00 08 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..◘0*≡..☺0*≡..☺0*≡..☺0*≡.. 00034140 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00034160 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00034180 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 000341A0 01 30 2A F0 00 00 07 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..•0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 000341C0 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 000341E0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00034200 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00034220 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..♥0*≡..☺0*≡ 00034240 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00034260 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00034280 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 000342A0 00 00 02 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☻0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 000342C0 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 000342E0 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 02 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☻0*≡ 00034300 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00034320 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00034340 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 00034360 00 00 01 30 2A F0 00 00 02 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☻0*≡..☺0*≡..☺0*≡..☺0*≡.. 00034380 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 02 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☻0 000343A0 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡ 000343C0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..♥0*≡..☺0*≡..☺0*≡..☺0*≡.. 000343E0 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00034400 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 03 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☺0*≡..♥0*≡..☺0*≡ 00034420 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 ..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡.. 00034440 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 01 30 ☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0*≡..☺0 00034460 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 00 00 02 30 2A F0 00 00 01 30 2A F0 00 00 01 30 2A F0 *≡..☺0*≡..☺0*≡..☻0*≡..☺0*≡..☺0*≡ 00034480 00 00 01 30 2A F0 00 02 01 30 2A F0 00 00 00 00 00 89 00 00 00 E6 00 00 00 EC 00 00 00 80 01 00 ..☺0*≡.☻☺0*≡.....ë...µ...∞...Ç☺. 000344A0 00 AB D0 02 00 69 01 80 01 00 00 65 15 00 00 D5 2B 00 00 BE 3D 00 00 CF 4B 00 00 A9 59 00 00 DD .½╨☻.i☺Ç☺..e§..╒+..╛=..╧K..⌐Y..▌ 000344C0 6B 00 00 E4 76 00 00 20 83 00 00 B8 91 00 00 6C 9D 00 00 44 B0 00 00 B3 D9 00 00 6A F3 00 00 57 k..Σv.. â..╕æ..l¥..D░..│┘..j≤..W 000344E0 09 01 00 BF 1C 01 00 90 2E 01 00 A7 41 01 00 95 56 01 00 48 64 01 00 CD 6F 01 00 89 7A 01 00 90 ○☺.┐∟☺.É.☺.ºA☺.òV☺.Hd☺.═o☺.ëz☺.É 00034500 86 01 00 31 95 01 00 FF A1 01 00 FC AD 01 00 B8 BB 01 00 DD CA 01 00 54 D8 01 00 E7 E5 01 00 B8 å☺.1ò☺. í☺.ⁿ¡☺.╕╗☺.▌╩☺.T╪☺.τσ☺.╕ 00034520 F2 01 00 4A 02 02 00 04 11 02 00 1D 1B 02 00 9C 28 02 00 C6 3A 02 00 28 54 02 00 82 64 02 00 5E ≥☺.J☻☻.♦◄☻.↔←☻.£(☻.╞:☻.(T☻.éd☻.^ 00034540 72 02 00 45 87 02 00 B0 92 02 00 9D 9D 02 00 86 AE 02 00 9F C3 02 00 AB D0 02 00 6A 01 6B 01 6C r☻.Eç☻.░Æ☻.¥¥☻.å«☻.ƒ├☻.½╨☻.j☺k☺l 00034560 01 6D 01 6E 01 6F 01 70 01 71 01 72 01 73 01 74 01 75 01 76 01 77 01 78 01 79 01 7A 01 7B 01 7C ☺m☺n☺o☺p☺q☺r☺s☺t☺u☺v☺w☺x☺y☺z☺{☺| 00034580 01 7D 01 7E 01 7F 01 80 01 81 01 82 01 83 01 84 01 85 01 86 01 87 01 88 01 89 01 8A 01 8B 01 8C ☺}☺~☺⌂☺Ç☺ü☺é☺â☺ä☺à☺å☺ç☺ê☺ë☺è☺ï☺î 000345A0 01 8D 01 8E 01 8F 01 90 01 91 01 92 01 93 01 94 01 95 01 4D 00 0E 31 00 52 6F 6D 61 6E 20 31 30 ☺ì☺Ä☺Å☺É☺æ☺Æ☺ô☺ö☺ò☺M.♫1.Roman 10 000345C0 63 70 69 00 09 10 02 53 79 6D 62 6F 6C 00 08 22 00 41 72 69 61 6C 00 0A 31 00 43 6F 75 72 69 65 cpi.○►☻Symbol.◘".Arial.◙1.Courie 000345E0 72 00 0E 35 00 43 6F 75 72 69 65 72 20 4E 65 77 00 0E 10 00 6E 65 77 20 63 6F 75 72 69 65 72 00 r.♫5.Courier New.♫►.new courier. 00034600 15 CF 02 00 D8 00 00 00 DD 00 00 00 E1 00 00 00 EC 00 00 00 13 21 14 FF 15 00 03 00 41 43 04 00 §╧☻.╪...▌...ß...∞...‼!¶ §.♥.AC♦. 00034620 44 43 06 00 58 43 03 00 03 80 01 00 38 20 01 00 38 20 01 00 08 00 00 80 00 80 38 20 01 00 00 00 DC♠.XC♥.♥Ç☺.8 ☺.8 ☺.◘..Ç.Ç8 ☺... 00034640 00 00 CE 22 01 00 02 40 00 00 00 00 00 29 CE 02 00 2B CE 02 00 11 CF 02 00 13 CF 02 00 15 CF 02 ..╬"☺.☻@.....)╬☻.+╬☻.◄╧☻.‼╧☻.§╧☻ 00034660 00 00 04 80 01 00 00 00 00 04 04 A9 D0 02 00 00 00 04 04 AB CF 02 00 00 00 00 04 91 D0 02 00 00 ..♦Ç☺....♦♦⌐╨☻...♦♦½╧☻....♦æ╨☻.. 00034680 00 00 04 93 D0 02 00 00 00 22 00 02 00 03 03 88 00 00 00 D0 02 00 00 68 01 00 00 00 00 2C 8B DC ..♦ô╨☻...".☻.♥♥ê...╨☻..h☺....,ï▄ 000346A0 A5 3B 8B DC A5 00 00 00 00 04 00 05 00 00 00 55 6B 00 00 0B C0 02 00 6C 00 00 00 00 00 DF 00 00 Ñ;ï▄Ñ....♦.♣...Uk..♂└☻.l.....▀.. 000346C0 00 21 55 6C 74 72 61 53 6F 75 6E 64 20 53 44 4B 20 32 2E 31 30 20 44 6F 63 75 6D 65 6E 74 61 74 .!UltraSound SDK 2.10 Documentat 000346E0 69 6F 6E 0E 55 6C 74 72 61 53 6F 75 6E 64 20 53 44 4B 10 55 6C 74 72 61 53 6F 75 6E 64 2C 20 44 ion♫UltraSound SDK►UltraSound, D 00034700 6F 63 73 75 57 72 69 74 74 65 6E 20 62 79 20 4D 69 6B 65 20 54 72 61 76 65 72 73 20 61 6E 64 20 ocsuWritten by Mike Travers and 00034720 4B 75 72 74 20 4B 65 6E 6E 65 74 74 0D 0A 43 6F 70 79 72 69 67 68 74 20 3C 43 3E 20 31 39 39 33 Kurt Kennett♪◙Copyright <C> 1993 00034740 2C 20 41 64 76 61 6E 63 65 64 20 47 72 61 76 69 73 0D 0A 43 6F 70 79 72 69 67 68 74 20 3C 43 3E , Advanced Gravis♪◙Copyright <C> 00034760 20 31 39 39 33 2C 20 49 6E 67 65 6E 75 69 74 79 20 53 6F 66 74 77 61 72 65 0C 4B 75 72 74 20 4B 1993, Ingenuity Software♀Kurt K 00034780 65 6E 6E 65 74 74 0C 4B 75 72 74 20 4B 65 6E 6E 65 74 74 00 00 00 00 00 00 00 00 00 ennett♀Kurt Kennett.........