O9Nbip N ON  O`  @`/#@%`')+-/1 3@5`79;?A E`GS@U`oL @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @//Aa  /A!!%a>O`  @`/#@%`')+-/1 3@5`79;?A E`GS@U`oL @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @//Aa  /A!!%a>RGISTALCYON  &DRVRDEMO  & GST  &CLATTICE  &JMEGAMAX  &PSOUNDS  &WGIST DOC )'GIST PRG @&GIST RSC F&'GFABASIC  U )PASCAL  b )MDISKPLSFLD Bt #DESKTOP INF + BU.  &..  &SNDINT O &<SNDLINK BAT &cSNDSUBS O &H b`  H$y y"|t@||JPg0("(t<fҨ m>"<Rh`2<fҨn""(Rh`<fҨJn r1A0!At (g(Jh"gSh"`"(xҨlDn"D!Ax0(hg00(@02"(tҨxjp`H@|opP@0($"(|<f"Ҩ&Jh&k*mV`*nN"(*Rh$`D<f"Ҩ.Jh.k2m.`2n&"(2Rh$`<fҨ6Jh6kJk`Jnr!A| (:gBJhNgShN`6"(>kҨd!hB>m` (FҨe!hJ>n"D>!A0($h:g> (Ш|H@H@jR@hjp` |o0<@R@@0(P"(<f"ҨRJhRkVmV`VnN"(VRhP`D<f"ҨZJhZk^m.`^n&"(^RhP`<fҨbJhbkJk`Jnr!A (fg(JhngShn`"(ҨjlDn"Dj!A0(Phfg$ (ШH@hjp`<op@JhpjXSPfTBhrJhfPA|`LFR_PRATBLFR_NAMTFLFR_NRATJLFR_DELANNFR_ENVPNFR_ARATRNFR_AVALVNFR_DRATZNFR_DVAL^NFR_RRATbLNFR_AMTfLNFR_RATjLNFR_DELnPITCHpPRIORrVOL_ACCtLVOL_ACCxFR_ACC|LFR_ACCNFR_ACCLNFR_ACCSNDSIZATTACKDECAYSUSTAINRELEASE_sint_on\_sint_of_gi_rw_trap9_isound_insave_arevcloop*endloop.vedVendveverplvado_voldo_lvdo_lv1enddo_lvfedo_vol1do_vol2fed$fea1endfehfea2ferLfed1. JGm|o^BG`RG|l0 @"|Jpf|f809rylB@`p>0 @"|00ryl0`p>0(@0,rnop`P>aT6f0`@0&@T|`6RF|8m9np9nrB)@)@|)@)@)@x)@tJlmlBEJnm4`n  nln`n  nm0n9P>W0@?NT0,@>0@?RWNT`z0eB)@:9@$JlmBD>?<NT`x0dB)@f9@P0G"|>?0W?<NXJnm9nJlf)|t>?PWNT80JL8N^NuNVJnm@ nn80.м @p1@r2.Ҽ"A2BW?.PWNTN^NuNVJnmH nn@0. @"|Jpg*0.м @00.м @1|pN^NuNV0. @"|00rN^NuNVBn` >a0Rn nmN^NuNV.?<&NTaN^NuNVa.?<&NTN^Nu M / haw GGp1S$~Z8{fR?- wqjd_YTPKGC?<852/-*(&$" #4EVgx_snd_xbios_sint_of_sint_on_gi_rw_freqs_mask_snd_on~~snd_on~sndptr ~voice~volume~pitch~priorit~p ~i~tone~noise~dur~bufp L10000L2xL5 L6L4L10001:L3:L7xL10002RL10004TL10005tL10007vL8L1_stop_snL9L12L13L11L10L14\L15,L18L17L16L21L20 L19L22lL23L24L25L26~~stop_s~voiceL288L278_snd_off<~~snd_of<~voiceL30L31L29_get_pri~~get_pr~voiceL32_init_sn~~init_s~iL36L37L35L34L33_div15_install~~instalL38_remove_~~removeL39$$$$$$  XH.  & ..  &DRVRDEMOC & %DRVRDEMOGST &|%DRVRDEMOPRG &!|nDRVRDEMOTOS &=B/* THIS PROGRM WILL INSTALL THE SOUND DRIVER (INTERRUPT ROUTINE), DEMONSTRATE SOUND EFFECTS WITH FIXED DURATIONS AND PRIORITIES AND SHOW TWO DIFFERENT WAYS TO TURN A SOUND OFF. IT WILL THEN REMOVE THE INTERRUPT ROUTINE. THIS OR ANY OTHER APPLICATION MUST LINK TO THE APPROPRATE FILES DEPENDING ON THE COMPILER USED.  THE SOUND DRIVER OPERATES UNDER THE 200 HZ SYSTEM TIMER INTERRUPRT ROUTINE. IT IS INSTALLED BEFORE THE REGULAR SYSTEM AND THEREFORE EXECUTES BEFORE THE REGULAR SYSTEM INTERRUPT. WORD MUST BE DEFINED APPROPRIATELY DEPENDING ON COMPILER. Snd_on will play a sound that was created using GIST and stored as a C source code (see drnoise[], drwho[] and sample[] below) on a channel of the GI chip.  Calling sequence is:  snd_on(sndptr,voice,volume,pitch,priority)  where:  WORD *sndptr = the pointer to the array of parameters known as sound data, e.g., drwho[]. WORD voice = the voice number corresponding to the GI channel number 0, 1, or 2. A -1 tells the sound driver to use any available channel. Any other value will have no result. WORD volume = volume of the sound (0-15) or -1 to use volume stored with sound data. WORD pitch = the pitch of the sound (1-255) corresponds to the semitone number (60 = middle C on a piano keyboard or 262 Hz; 72 = one octave above; this is the same as MIDI pitch numbers). If no pitch is specified, the nominal frequency value stored with the sound data will be used. In this case, the duration of the sound is also determined by a parameter of the sound data. If pitch is specified, the sound will remain on until a sound_off is issued. In other words, if no pitch is specified, it is considered a sound effect. If pitch is specified, it is considered a musical note with an unknown duration and must be turned off after the required duration has elapsed.  WORD priority = priority of the sound (0-255) where the higher the value, the higher the priority. Equal values take precedence over each other. When a sound_off is issued, the priority is reduced to zero during the release phase of any sound.  The voice number used will be reutnred. If no voice was available, -1 is returned (NOTE: type WORD is always returned except in GST which returns type int (32-bits)).   Snd_off will cause the sound to move into its release phase and reduce the priority to zero. If no voice is available, a -1 is returned.  The calling sequence is:  snd_off(voice)  where:  WORD voice = the voice which is to be moved into its release phase (0, 1, or 2). Any other value has no effect. Stop_snd will cause the sound to completely stop. No matter what phase the sound is in (attack, decay, sustain, or release), the sound will end. Unlike snd_off, there is no release.  The calling sequence is:  stop_snd(voice)  where:  WORD voice = the voice which is to be stopped (0, 1 or 2). Any other value has no effect. Get_prior will return the priority of the requested voice. This routine is useful if you have a case where a snd_off might turn off the wrong sound. You can call get_prior and issue the snd_off only if the priority matches the original. The calling sequence is: get_prior(voice) where WORD voice = the voice whose priority is requested (0, 1 or 2).   Init_snds will stop all chanels on the GI chip by calling stop_snd three times with values or 0, 1 and 2.  The calling sequence is:  init_snds()  */ /* #define LATTICE for LATTICE compiler */ #ifdef LATTICE #define WORD short /* otherwise set-up for MEGAMAX or ALCYON */ #else #define WORD int #endif #include  extern snd_on(),snd_off(),stop_snd(),get_prior(); extern install_int(),remove_int(); extern init_snds(); WORD drnoise[] = { 100, 477, 31, 15, 1, 3, -16384, -1, -4572, 12, 0, -1, -1966, 1, -32768, 0, 7864, 0, 1, -4080, -256, -4080, -256, 10, 12944, 0, 0, 10, 12944, 293, -5746, -264, -17086, 282, 10212, -275, -15067, -264, -17086, 40, 1, 7, -16384, 31, 0, -1, 24904, 24, -13107, -1, -4063, 12, 26214, -3, -31457, 10 }; WORD drwho[] = { 100, 477, -1, 15, 1, 3, -16384, -1, -4572, 12, 0, -1, -1966, 1, -32768, 0, 7864, 0, 1, -4080, -256, -4080, -256, 10, 12944, 0, 0, 10, 12944, 293, -5746, -264, -17086, 282, 10212, -275, -15067, -264, -17086, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; WORD sample[] = { 20, 52, -1, 15, 1, 15, 0, -1, -9830, 12, 0, -1, -1024, 1, -32768, 0, 9830, 160, 1, -28, 360, -112, 1442, 6, -90, 0, 0, 1, -24716, 57, 10752, -6, 23743, 5, -18586, -57, -24712, -6, 23743, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; main() { WORD chan_num; long i; /* install_int will install the interrupt routine */  install_int();  /* init_snds initializes all channels by stopping all sounds */  init_snds();  /* No pitch is passed. The duration parameter is .5 seconds and the release is 1 second. The sound will be over in 1.5 seconds. The volume is set to 11. This sound uses all parameters */  Cconws("\n\n\r This sound is a sound effect..."); Cconws("Press RETURN to continue ->");  snd_on(drnoise,-1 ,15,-1,5);  Bconin(2);  Cconws("\n\n\r This sound is another sound effect..."); Cconws("Press RETURN to continue ->");  snd_on(drwho,-1,11,-1,5);  Bconin(2);   /* No pitch is passed. The sound is as before, but the volume is now 15. */  Cconws("\n\n\r Again, but louder..."); Cconws("Press RETURN to continue ->");  snd_on(drwho,-1,15,-1,5);  Bconin(2);   /* Because a pitch value is passed, the sound will remain on until a snd_off is issued at which time the release phase of the sound will be initiated. */  Cconws("\n\n\r This sound will continue indefinitely...\n"); Cconws("\r Press RETURN to issue a snd_off ->");  chan_num = snd_on(sample,-1,-1,96,5);  Bconin(2);  Cconws("\n\n\rWaiting for release...\n\n");  /* get_prior can be used to only turn the sound off if it is the same priority as in the original call, in this case, 5 */ if (get_prior(chan_num) == 5)  snd_off(chan_num);  /* Wait to let the sound release */ for (i=0;i<30;i++);  /* DRWHO will "steal" the channel from the initial sound played because it has a higher priority */ Cconws("\n\n\r This sound will continue indefinitely...\n"); Cconws("\r Press RETURN to interrupt this sound"); Cconws("\n\r and play DRWHO with a higher priority ->");  chan_num = snd_on(sample,-1,-1,96,5);  Bconin(2);  Cconws("\n\n\rDRWHO has now taken over...\n\n"); snd_on(drwho,chan_num,15,-1,10);  for (i=0;i<30;i++);  /* Because a pitch value is passed, the sound will remain on until a stop_snd is issued at which time the sound will immediately stop. */  Cconws("\n\r This sound will continue indefinitely..."); Cconws("\n\r Press RETURN to issue a stop_snd and exit ->");  chan_num = snd_on(sample,-1,-1,96,5);  Bconin(2);  stop_snd(chan_num);   /* remove_int will remove the interrupt routine */ remove_int();  } q/* THIS PROGRM WILL INSTALL THE SOUND DRIVER (INTERRUPT ROUTINE), DEMONSTRATE SOUND EFFECTS WITH FIXED DURATIONS AND PRIORITIES AND SHOW TWO DIFFERENT WAYS TO TURN A SOUND OFF. IT WILL THEN REMOVE THE INTERRUPT ROUTINE. THIS OR ANY OTHER APPLICATION MUST LINK TO THE APPROPRATE FILES DEPENDING ON THE COMPILER USED.  THE SOUND DRIVER OPERATES UNDER THE 200 HZ SYSTEM TIMER INTERRUPRT ROUTINE. IT IS INSTALLED BEFORE THE REGULAR SYSTEM AND THEREFORE EXECUTES BEFORE THE REGULAR SYSTEM INTERRUPT. WORD MUST BE DEFINED APPROPRIATELY DEPENDING ON COMPILER. Snd_on will play a sound that was created using GIST and stored as a C source code (see drnoise[], drwho[] and sample[] below) on a channel of the GI chip.  Calling sequence is:  snd_on(sndptr,voice,volume,pitch,priority)  where:  WORD *sndptr = the pointer to the array of parameters known as sound data, e.g., drwho[]. WORD voice = the voice number corresponding to the GI channel number 0, 1, or 2. A -1 tells the sound driver to use any available channel. Any other value will have no result. WORD volume = volume of the sound (0-15) or -1 to use volume stored with sound data. WORD pitch = the pitch of the sound (1-255) corresponds to the semitone number (60 = middle C on a piano keyboard or 262 Hz; 72 = one octave above; this is the same as MIDI pitch numbers). If no pitch is specified, the nominal frequency value stored with the sound data will be used. In this case, the duration of the sound is also determined by a parameter of the sound data. If pitch is specified, the sound will remain on until a sound_off is issued. In other words, if no pitch is specified, it is considered a sound effect. If pitch is specified, it is considered a musical note with an unknown duration and must be turned off after the required duration has elapsed.  WORD priority = priority of the sound (0-255) where the higher the value, the higher the priority. Equal values take precedence over each other. When a sound_off is issued, the priority is reduced to zero during the release phase of any sound.  The voice number used will be reutnred. If no voice was available, -1 is returned (NOTE: type WORD is always returned except in GST which returns type int (32-bits)).   Snd_off will cause the sound to move into its release phase and reduce the priority to zero. If no voice is available, a -1 is returned.  The calling sequence is:  snd_off(voice)  where:  WORD voice = the voice which is to be moved into its release phase (0, 1, or 2). Any other value has no effect. Stop_snd will cause the sound to completely stop. No matter what phase the sound is in (attack, decay, sustain, or release), the sound will end. Unlike snd_off, there is no release.  The calling sequence is:  stop_snd(voice)  where:  WORD voice = the voice which is to be stopped (0, 1 or 2). Any other value has no effect. Get_prior will return the priority of the requested voice. This routine is useful if you have a case where a snd_off might turn off the wrong sound. You can call get_prior and issue the snd_off only if the priority matches the original. The calling sequence is: get_prior(voice) where WORD voice = the voice whose priority is requested (0, 1 or 2). (NOTE: type WORD is always returned except in GST which returns type int (32-bits)).   Init_snds will stop all chanels on the GI chip by calling stop_snd three times with values or 0, 1 and 2.  The calling sequence is:  init_snds()  */ #define WORD short extern snd_on(),snd_off(),stop_snd(); extern install_int(),remove_int(); extern appl_init(),appl_exit(); extern init_snds(); WORD drnoise[] = { 100, 477, 31, 15, 1, 3, -16384, -1, -4572, 12, 0, -1, -1966, 1, -32768, 0, 7864, 0, 1, -4080, -256, -4080, -256, 10, 12944, 0, 0, 10, 12944, 293, -5746, -264, -17086, 282, 10212, -275, -15067, -264, -17086, 40, 1, 7, -16384, 31, 0, -1, 24904, 24, -13107, -1, -4063, 12, 26214, -3, -31457, 10 }; WORD drwho[] = { 100, 477, -1, 15, 1, 3, -16384, -1, -4572, 12, 0, -1, -1966, 1, -32768, 0, 7864, 0, 1, -4080, -256, -4080, -256, 10, 12944, 0, 0, 10, 12944, 293, -5746, -264, -17086, 282, 10212, -275, -15067, -264, -17086, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; WORD sample[] = { 20, 52, -1, 15, 1, 15, 0, -1, -9830, 12, 0, -1, -1024, 1, -32768, 0, 9830, 160, 1, -28, 360, -112, 1442, 6, -90, 0, 0, 1, -24716, 57, 10752, -6, 23743, 5, -18586, -57, -24712, -6, 23743, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; main() { WORD chan_num; long i; appl_init(); /* install_int will install the interrupt routine */  install_int();  /* init_snds initializes all channels by stopping all sounds */  init_snds();  /* No pitch is passed. The duration parameter is .5 seconds and the release is 1 second. The sound will be over in 1.5 seconds. The volume is set to 11. This sound uses all parameters */  printf("\n\n This sound is a sound effect..."); printf("Press RETURN to continue ->");  snd_on(drnoise,-1,15,-1,5);  getchar();  printf("\n\n This sound is another sound effect..."); printf("Press RETURN to continue ->");  snd_on(drwho,-1,11,-1,5);  getchar();   /* No pitch is passed. The sound is as before, but the volume is now 15. */  printf("\n\n Again, but louder..."); printf("Press RETURN to continue ->");  snd_on(drwho,-1,15,-1,5);  getchar();   /* Because a pitch value is passed, the sound will remain on until a snd_off is issued at which time the release phase of the sound will be initiated. */  printf("\n\n This sound will continue indefinitely...\n"); printf(" Press RETURN to issue a snd_off ->");  chan_num = snd_on(sample,-1,-1,96,5);  getchar();  printf("\n\nWaiting for release...\n\n");  /* get_prior can be used to only turn the sound off if it is the same priority as in the original call, in this case, 5 */ if (get_prior(chan_num) == 5)  snd_off(chan_num);  /* Wait to let the sound release */ for (i=0;i<30;i++);  /* DRWHO will "steal" the channel from the initial sound played because it has a higher priority */ printf("\n\n This sound will continue indefinitely...\n"); printf(" Press RETURN to interrupt this sound"); printf("\n and play DRWHO with a higher priority ->");  chan_num = snd_on(sample,-1,-1,96,5);  getchar();  printf("\n\nDRWHO has now taken over...\n\n"); snd_on(drwho,chan_num,15,-1,10);  for (i=0;i<30;i++);  /* Because a pitch value is passed, the sound will remain on until a stop_snd is issued at which time the sound will immediately stop. */  printf("\n This sound will continue indefinitely..."); printf("\n Press RETURN to issue a stop_snd and exit ->");  chan_num = snd_on(sample,-1,-1,96,5);  getchar();  stop_snd(chan_num);   /* remove_int will remove the interrupt routine */ remove_int(); appl_exit();  } `nV&o + ЫЫO// Bg?<JNA IKd~|Nd|HkNbV. fHm jN`BNNVtNtNtNHzFtN؞XHz]tN؞XHmHxHxHxHxtNtN:HzItN؞XHzftN؞XHmrHxHx HxHxtNtN:HzRtN؞XHz^tN؞XHmrHxHxHxHxtNtN:HzJtN؞XHzktN؞XHmHxHxHx`HxtN=HtN:Hz[tN؞X0n/tNXCf0n/tNnX G-H"nAl` nR``HztN؞XHz?tN؞XHzYtN؞XHmHxHxHx`HxtN=HtN:HzQtN؞XHmr0n/HxHxHx tN G-H"nAl` nR``HztN؞XHz>tN؞XHmHxHxHx`HxtN=HtN:0n/tNXtN tNLN^Nu This sound is a sound effect...Press RETURN to continue -> This sound is another sound effect...Press RETURN to continue -> Again, but louder...Press RETURN to continue -> This sound will continue indefinitely... Press RETURN to issue a snd_off -> Waiting for release... This sound will continue indefinitely... Press RETURN to interrupt this sound and play DRWHO with a higher priority -> DRWHO has now taken over... This sound will continue indefinitely... Press RETURN to issue a stop_snd and exit ->NVJnm2nAn G` F g G=H2nAl>` 0nRn`HmR0nCFN"_-H n"GJPf``0nCfpARAr-H n0P/ nC0P"_l G=H` F=H/.0nCFN"_0P/ nC0P"_m A=HHmR0nCFN"_-H0n / nCr0P"_l AN^Nu0n/tNX nT0P=HN g 0nN^NuHmR0nCFN"F"_-H F=H2nA8l(` 0nRn` nT"H nT0P2` nCp"H0n2 nCr"H0n 2 nCt"H G2 nCtC"H G2 nCx"H G2 nCxC"H G2 nC"H G2 nCC"H G2 nC"H G2 nCC"H G2 nC|"H G2 nC|C"H G2 nC"H G2 nCC"H G2 nCJPm G=HJnmh2nAlo2nA I=H`2nAl0nC =H` nC/Hm2nA I"_0P"_22n FN/ nC0PCN/tNP2n FN"F/ nC2PAN/tNP`F0n"FN=H nC$"H G2 nC:"H G2 nC:C"H G2 nCJPm& G=HHx nC0P/tNP`H0nCN=H nCP"H G2 nCf"H G2 nCfC"H G2Hx2n0nN/C0n0P/tN Jnm nC"H0n2 nC0PN gJ nCt"H G2 nCtC"H G20nC/ nC0P/tNP n"G"H0n20nN^NuNVJn m2n An F` G gPHmR0n CFN"_-H nCr/ n"G"H G2"_20n C//tNPN^NuNVJn m2n An F` G gJHmR0n CFN"_-H n"GJPg" n"G"H F2 nCp"HA2N^NuNVHmR0n CFN"_-H nCr0PN^NuNV G=H2nAl ` 0nRn`0n/tNX`N^NuH$z* z*"|t@||JPg0("(t fҨ mL"<Rh`> fҨn*"(Rh` fҨJn r1A0!At (g2Jh"g Sh"`""(xҨl Dn"D!Ax0(hg80(@02"(tҨxjp`H@ @opP@0($"(| f.Ҩ&Jh&k*mt` *nh"(*Rh$`\ f.Ҩ.Jh.k2m@` 2n4"(2Rh$`( f$Ҩ6Jh6k Jk`Jnr!A| (:gTJhNg ShN`D"(>kҨd!hB>m$` (FҨe!hJ>n"D>!A0($h:gH (Ш|H@H@jR@hjp` @o0<@R@@0(P"( f.ҨRJhRkVmt` Vnh"(VRhP`\ f.ҨZJhZk^m@` ^n4"(^RhP`( f$ҨbJhbk Jk`Jnr!A (fg2Jhng Shn`""(Ҩjl Dn"Dj!A0(Phfg, (ШH@hjp` op@JhpjhSPfbBhrJhfPA|`FSPp1@Jh$g1@$2(66(|CkD6JhPg1@P2(b6(CkDbAtQR0(hhfRFL/::NuA4 C!ICj!Ix An!A!@NuNqNqNqNqNqNqNq!HNu//?<&&MNN\*KNu f$/ /"/ ` /"/NINu@| |J@k f@p @FNsNVHl@tNXtNN^NuNVtNHltNXN^NuNV/- VNtXN^NuNV/./- ZNPN^NuNV/./- ZNFPHx /- ZNPN^NuNVHx$/NP-H fA+H GN^Nu/. /./.N o nN^Nu GN^NuNV n H0@/NX-H n`H G-H F-H`Z F-HA-H`HA-HA-H`4A+HN^Nu`$NRWA`/.Hz@NlP gB nCN-HJg/HxPHxHz/N+H m-H`/.HzNlP g$ nCN-H nC-H`/.HzNlP f/.HzNlP f G` F g2JfA-H` A-H nCN-H`N n"Ff*HxA/.NPHx n/NP"_" g AN^Nu nX/NbX nHh nHh nX"H G""_""_" GN^NuNV n C fHx /.N&P/. /.N&P n C f/.NX g F` G g /.NX n h g AN^Nu n N^NuNV n Jg n R H0@//.NP`N^NuNV/.NBX-H nC f8/.NBX-H nC f n-H`/./.NP nCf8/.NBX-H nCf n-H`/./.NP nN^NuNV n hCf n Cg G` F g AN^Nu nC n "N^NuNV n-HS J o@/.NtX-HCf`$ nR"H n C f``"n G "n nf GN^Nu nN^NuNVJf mN^Nu n hN^NuNV nC G"N^NuNV n h g/.NX g AN^Nu GN^NuNV n h"FN f nCA"AN^Nu n h-HCg nCA" nN^Nu/.NX gX nP"P n hm>/- ^NX nHh n/ nX/HxN* "_" nP"H G"`^/.NX g n/NXN^Nu nP"P n hm/.NX g F` G g AN^Nu nX"P nP$H PR-H nH0@CNN^NuNVHx? n/Hx nX/N-HJo nC n" nC G"`6 nC G"Jf nCA"` nC n" nP"H G" n hN^NuNV n hCN f nCA"AN^Nu/.NXN g/.NX g F` G g n//. NP n N^Nu nX"P nP$H PR-H"n n  nC F" nP"PAm/.NX g F` G g AN^Nu n N^NuNV/.NX g8 nX P-H"n nP P"H G  n//.NP`rHx@ n/ nP/ nX/N-HJl nC n"`2"n nP Pl nCA"` nC G" nP/ nC G""_" n hN^NuNVHzNbX. H0@/NXN^NuabortedNVN:HxL. H0@/NPN^NuNV m-HJg/.NX n h -H`NBN^NuNV/.NbX/. NXN^NuNV"n nN//NPN^NuNV/./NPN^NuNV n CCN-HHxH/.NP-HJf GN^Nu nR"HA  n"FN g nR"HA  n-HJg" n S o nR"H G ` nN^NuNVS nH0@-H nCfS nH0@-H nCfHxI/.NP GN^NuNVHxHHxNPN^NuNV"nA _ @N^NuNV n Jg, n H2@. H0@f n N^NuR n ` GN^NuNV n H2@ nH0@f$ n Jf GN^NuR n R n` n H2@ nH0@ IN^NuNV n-H nS oH nR"H n R H0@  g` nS o nR"H G ``"n G  nN^NuNV"nAzn"nAam F` G g"nA IN^Nu nN^NuNV"n F I-HR nJg`"n n IN^NuNV n Jg@ n R H0@/NX/ nRH0@/NX"_g GN^Nu` nH0@"GW @N^NuNV G-HJgtHnHnHnHnNlJngT/NX///HnHnHnHnN`//N4P-H nCf /NX nN^NuHx NX glHxNXCN-H nC f A -HJg8 nCfNCN-H` nCf /NX nN^NuNV n P-H nA JfN^Nu/.NX/.NXN^NuNV n P-H nA JfN^Nu/.NX/.N.XN^NuNV n P-H n A JfN^Nu. H0@C fN^Nu/. NX. H0@C g& nA(0P/ nA00P"_l G` F g/. /.NnP. H0@C gt/.HnHnN0 n A/ nA($H0PRR"_-H"n. H0@  nR"H G  n0P/0n/0n//.Nb/. NX/. NXN^NuNV n A/ nA(0P"_-H nR"H G  nC( G2 nA6RP0P/. n A P"_e n A P-H n C n" n A/ n A P"_ I=HJnm$0n/ nA00P"F"_n G` F g` n A P-H nRJg`/. n A P"_e n A P-H n C n" nA./0P/ nA"0P"_ I"_2 nA6SP0P`,"n G /. NXN^NuNV n P-H n A JfN^Nu/. NX n A P-H nA(0P=H0n/ nA00P"_l0 nH0@ @ g.H0@C g F` G g<.H0@C g"n0nRn"H.H0@ R n`z"n0n"H G  nC(0n2/. nA60P//.N nJf`0 nH0@C f R n/. /.NnP`/. NXN^NuNV G=H n P-H nA P-H nA(0P=H nA JfN^Nu2n A I=H nA00P/ nA(0P"_ I=H2n0n l 0n=H Jn n"n G  GN^Nu/.NXN=HB0. @`/.A =H/NFP`"Jngx/.NXSn0n/. nA(SP0P"_"H G /.HnHnN0 n0P/0n/0n/Hz"Nb/.NX/.NX`B0. @CN=HB0."@A e(B0."@Ab2n0n l F` G gRn0n/.B0./NFP`.N `dB0. @C f``/. "n0n/N0LǀL?̀ǀLϘO?ǀOx@x0@?ϟ?ϟ@?ϟπχϘ@@ǀsπLJ̀ǀsπLJ̀ϘϘϘπxOLJsπLJsπLJsπLJ`̀À$ϒL`s 0LD3ǀsπLJsπLJ̀LϘǀsπLJ̀>0n/ nA"0P"_ I=H nA./0P/ nA"0P"_"_2`Jng/.NX`00n/ nA0P"_o/. nA"0P/NlP/.NXN^NuNVNCf HxNX/NX F;HZN^NuNVJmZfNtHnAT/AX/A\/N=HHmHnHmN8 Jnf HxNXC0nJg/HzFNҸPNC0n"H F HxxNlX-H nA(-H"n n" nX"H n " nP"H n""n0n20n//HxHnHnN G=H2nAl:` 0nRn`/.0nC"_/C0n0P"_2`Jnf0n/HxNP=H0n/HxNP=H nC00n2 nC20n20n/HxNP=H nHh40n"F/0nC"_N"_2 nHh nHh nHh nA40P/NlX"_""_""_" nHh nA/0n"F/0n"F"_N"_"_" nC6 F2`/./.N P nPJg nX"HA2` nX"HA2/HxHm^NŮ /Hx nP/NŮ /./.NP nN^Nu[3][please re-boot and try again][ok]NV nX0P/ nP0P/ nA 0P/ nA 0P/ nA0P/N=HJnl HxNX n\"H F2C0n"H n " nT"H0n2 nA00P/ nA 0P"_N/A^X0P/NP=H nA20P/ nA"0P"_N/A^\0P/NP=H/ nX0P/Hx Hx0n/0n/HnHnHnHnN(/. nP0P/0nCN"_/ nA 0P/0nCN"_/0n/A^X0P/0nCN"_ I/NP/0n/A^\0P/0nCN"_ I/NP/N0n/Hx n X/N֘ n PJg0n/Hx n P/N֘ N^NuNV n P-H nT0P=H nP"H0n2 nC 0n2 nC 0n2 nC0n 2Hm^ nP/N

@2ACB0.: @2ACB0.6 @2ACB0.2 @2ACB0.. @2C n("ACB0.& @2ACB0." @2HxNX/.ATB0 @"_2/.AXB0 @"_2/.A\B0 @"_2/.APB0 @"_2/. AA B0 @"_2/.AA B0 @"_2AB0 @N^NuNVC0n2C n"Hx4NXN^NuNVC0n&2AT"H0n"2AX"H0n2A\"H0n2AP"H0n2AC 0n2AC 0n2AC0n 2HxINXN^NuNVC0n&2AT"H0n"2AX"H0n2A\"H0n2AP"H0n2AC 0n2AC 0n2AC0n 2HxJNXN^NuNVHxMNX/.ATB0 @"_2/.AXB0 @"_2/. A\B0 @"_2/.APB0 @"_2AB0 @N^NuNVC0n2C n"HxNNXN^NuNVHxONX/.ATB0 @"_2/.AXB0 @"_2/. A\B0 @"_2/.APB0 @"_2N^NuNVCB0. @2AT"H0n2AX"H0n2A\"H0n2AP"H0n 2HxdNXN^NuNVC0n2AT"H0n2AX"H0n2A\"H0n2AP"H0n 2HxeNXN^NuNVC0n 2HxfNXN^NuNVC0n 2HxgNXN^NuNVC0n2AT"H0n2HxhNX/.ATB0 @"_2/.AXB0 @"_2/. A\B0 @"_2/.APB0 @"_2AB0 @N^NuNVC0n2AT"H0n2AX"H0n2A\"H0n2AP"H0n2AC 0n 2HxiNXN^NuNV0n/0n/"nAN//.//N6N^NuNVC0n2AT"H0n 2HxjNXN^NuNVC0n 2HxkNXN^NuNVC0n.2AT"HB0.* @2AX"H0n&2A\"H0n"2AP"H0n2AC 0n2HxlNX/.ATB0 @"_2/.AXB0 @"_2/. A\B0 @"_2/.APB0 @"_2AB0 @N^NuNVC0n 2Hm2n A ICN"_-H F=H2nAl0` 0nRn`C0n"H nRH0@2`NRAB0 @N^NuNV"-~0<NBN^NuNVN"HA-HHlY n/Y/.N$ N^NuNVHl/- ZN"HA"HA I/N$ N^NuNVN"HA-HHlxY/."nA I/N$ -H n"P G  nN^NuNV G-H nY P-H nJg, nH0@C%g./. nRH0@//. $oN R n`R nH0@C%f0/. nRH0@//. $oN R n`r nH0@C-f F @R n` G @ nH0@C0fA0 @` A @ nH0@/NrX g< nR/N X-H nH0@/NrX g R n`` G-H nH0@C.f:R/.N X-H nH0@/NrX g R n`` G-H nY P-HA-H nRH0@`C n AR"H G ` n-H`/.HnNݘP`/.HnHxN, `/.HnHxN, `/.HnHx N, `j/.HnHxN, `RC G `DNRchsldvboux `/.N:X-HJg"n nl F` G g n-H"n no"n n I-H` G-H.H0@N g.H0@C g$Jg nH0@C-f F` G g4 nS/. nRH0@//. $oN R n nS g(/..H0@//. $oN R n` nS g./. nRH0@//. $oN R n`J.g0 nS g"/.Hx /. $oN R n`` nN^NuNV n$H PR"H.H0@ N^NuNV n-H n -H l n N-H nR/"n A N< IC0"_ "n A N<-H o`Jl nR"HA- "n G /.NXN^NuNV n -H"n FN-H n"FN-H/./NP-H/."n nN< FN"H n"_  nH2@A l n/H0@C0"_ ` n/H0@C7"_ R n"n nN<-H g`V"n G /. NXN^NuNV nH0@/NX g R n` F-H nH0@`A-HR n`N-+ G-H nH0@/NrX g0 nC N"H nRH0@"HA0 I-H`"n nNN^NuNV/./.N:X"_"H F I-H"n nd< nH0@-H nR"H nH0@  nS"H n `N^NuNV n -H nR"H nRH0@  g` n N^NuNV"nA9n"nA0m F` GN^NuNV . ". @N^Nu D @Nu W @Nu F @Nu " @Nu " @Nu " @Nu " ANu " ANu " ANu"_ g "fNN BNu"$ 68HAHBBHABA҃ ANu$ma`DaD A"BNu$" a A"BNu" j DaDDNu cPgc $BNurBNu&BCHCR(*$a.$Â$&HCHCԃb DbR`S`NuHPBAHA62HAB42HA6Nu$O?*NA @.JNu$O?*?* `$O/*?* `$O?*/*?*`$O/*/*?*?*`$O?*?* /* ?*`$O/*/*/* ?*?*`NV G+H Z+H VHzzHz{NP+H ^ nRH0@-H nC//NP-H/././.N C jA " nJg nH0@`R n`R/.HzHm VND -H`R nH0@C>f"R/.HzHm ZND -H`/.HzHm ZND -H`n"m fAlC j m fR f"H n"/.NX-H`$NF H<^>``J VfHz1Hz2NP+H VJ Zf m ^+H ZN^NuCON:WrawCON:RNV nJg< nH0@/NX g nR"H G  nN^NuR n` nN^NuNV n-H/.NX-H/././. NP"_" nN^NuA 0g C" ӑ`Nu d$ R 2 2%B'%B(aH! ff d$ R 2 2%B'%B(!4ٚ &fht9*\fǟx\ M / haw GGp1S$~Z8{fR?- wqjd_YTPKGC?<852/-*(&$" #4EVgx    -P*, `D N N*O*m - ЭЭм!"ҍ¼.A// Bg?<JNA m"m -So Q m -SBQ(m)M*mN lHhNX/,?,N\?<N ?<A?<NAXNuNVN NVHl?< N \Hl$?< N \?<?XHl@?< N h\Hlj?< N Z\?<?. Gm GofBG`RG Gl0A0f Gf<>,tll ><`><0At0ll0`0<>0AA$H0.jrl 0<`?NT0=@f0`x0AA -@0<<` nT0RF F8m5np5nr <%@%@|%@%@%@x%@t jmvBE nm:`n  nln`n  nm0.A(5P0*|?0@?NX0*@?0@R@?NX`:<e <%@:5@$ jmBD?*?<NX`8<d <%@f5@P0AR?0D??<Nz\ nm5n0*f%|t?*0P@?NJX40`L N^NuNV nm@ nn60<2.At02.A0Bg0.P@?NXN^NuNV nmD nn:0.A0g&0.A00.Ar0N^NuNV0.At0`N^NuNVBn`?.N.TRn nmN^NuH$z< z<"|t@||JPg0("(t<fҨ mL"<Rh`><fҨn*"(Rh`<fҨJn r1A0!At (g2Jh"g Sh"`""(xҨl Dn"D!Ax0(hg80(@02"(tҨxjp`H@|opP@0($"(|<f.Ҩ&Jh&k*mt` *nh"(*Rh$`\<f.Ҩ.Jh.k2m@` 2n4"(2Rh$`(<f$Ҩ6Jh6k Jk`Jnr!A| (:gTJhNg ShN`D"(>kҨd!hB>m$` (FҨe!hJ>n"D>!A0($h:gH (Ш|H@H@jR@hjp`|o0<@R@@0(P"(<f.ҨRJhRkVmt` Vnh"(VRhP`\<f.ҨZJhZk^m@` ^n4"(^RhP`(<f$ҨbJhbk Jk`Jnr!A (fg2Jhng Shn`""(Ҩjl Dn"Dj!A0(Phfg, (ШH@hjp` <op@JhpjhSPfbBhrJhfPA|`FSPp1@Jh$g1@$2(66(|CkD6JhPg1@P2(b6(CkDbAtQR0(hhfdFL/:LNuAF C2 C AL!A!@Nu!HNuNqNqNqNqNqNqNq2/0/4/NINu@| |<J@k<f@p FNsNVHz^?<&N\N2N^NuNVN&Hzr?<&Nb\N^NuNV?.NT nn0<`?.?<>NPX9@0g0<`0<N^NuNV?.?<LN*XN^NuNV/ A~&H`0+ |g/ N*X A~"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NXBk ?+ N,TJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NhP?/+?+ NP @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NP'@&Bk0<LN^NuNV nl <`?.?./. ?<BN -@ m .`?<?.B?<BN| -@?<?.B?<BNb -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@0g <` `Bl0 . N^NuNV/.?<IN\N^NuNVBn`&0.A0nf0.ABPRn nLmN^NuNV?>.=|0A"HPgXHf0(>N^Nu)I)J)_NM"l$l/,Nu)I)J)_NN"l$l/,Nu)I)J)_NA"l$l/,NuNV`4 nH| f?< ?<NX nRH??<NX0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNV` nRH??<NRX0. Sn J@fN^NuNVH0&n $KA@-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.NZTJ@f`H| f |o@ H -@/./.?.?<@N| 9@0Hg0<`0,0n/./<?.?<@NF 9@0 @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N 9@0Hg0<`0,0nBl00.L N^NuC2d22222222$2 222R22222222222 22222 222%222B22'22%22B2(2222222aH2222!2 2ff222 C2d22222222$2 222R22222222222 22222 222%222B22'22%22B2(2222222222222222C2242222222ٚ2 2222222&f2222h22222222t292*22\22f22x22\22222222222222222CX222 M2 2 2 /2 2 2 h22a22w2 22G222G222p212222S2$2222~2Z282222222{2f2R2?2-22 22222222222222w2q2j2d2_2Y2T2P2K2G2C2?2<2825222/2-2*2(2&2$2"2 2CR222C2222#242E2V2g2x22222222C~"2"2 2"2"2"22"2"2"22"2x9||Nu This sound is a sound effect...Press RETURN to continue -> This sound is another sound effect...Press RETURN to continue -> Again, but louder...Press RETURN to continue -> This sound will continue indefinitely... Press RETURN to issue a snd_off -> Waiting for release... This sound will continue indefinitely... Press RETURN to interrupt this sound and play DRWHO with a higher priority -> DRWHO has now taken over... This sound will continue indefinitely... Press RETURN to issue a stop_snd and exit ->CON:AUX:PRT:  .  &C..  &SNDSUBS BIN &D{SNDSUBS LNK &I2SNDSUBS GST QC Compiler 01:15 Monday 29/12/86 S.GLOBS.CCODEG$C.NEGC.LNEGLIB$M$C.AND C.OR C.ASRC.ASLC.MULTTRAP9_IN MY_SUPEX REMOVE_I DDIV15TSND_ONSINT_OFF SND_OFFINIT_SND4SOUNDMASKNSINT_ON dINSTALL_ *GET_PRIOFREQSSTOP_SNDGI_RW  M / haw GGp1S$~Z8{fR?- wqjd_YTPKGC?<852/-*(&$" NVJnm2nAn G` F g G=H2nAl>` 0nRn`Hm +-0nCFN -+"_-H n"GJPf``0nCfpA +-Ar-H n0P/ nC0P"_l G=H` F=H/.0nCFN -+"_0P/ nC0P"_m A=HHm +-0nCFN -+"_-H0n / nCr0P"_l AN^Nu0n/tN +-X nT0P=HN -+ g 0nN^NuHm +-0nCFN -+"F"_-H F=H2n5A8l(` 0nRn` nT"H nT0P2` nCp"H0n2 nCr"H0n 2 nCt"H G2 nCtC"H G2 nCx"H G2 nCxC"H G2 nC"H G2 nCC"H G2 nC"H G2 nCC"H G2 nC|"H G2 nC|C"H G2 nC"H G2 nCC"H G2 nCJPm G=HJnmh2nAlo2nA I=H`2nAl0nC =H` nC/Hm +-2nA I"_0P"_22n FN -+/ nC0PCN -+/tN +-P2n FN -+"F/ nC2PAN -+ /tN +-P`F0n"FN -+=H nC$"H G2 nC:"H G2 nC:C"H G2 nCJPm& G=HHx nC0P/tN +-P`H0nCN -+=H nCP"H G2 nCf"H G2 nCfC"H G2Hx2n0nN -+ /CN +-0n0P/tN +- Jnm nC"H0n2 nC0PN -+ gJ nCt"H G2 nCtC"H G20nC/ nC0P/tN +-P n"G"H0n20nN^NuNVJn m2n An F` G gPHm +-0n CFN -+"_-H nCr/ n"G"H G2"_20n C//tN +-PN^NuNVJn m2n An F` G gJHm +-0n CFN -+"_-H n"GJPg" n"G"H F2 nCp"HA2N^NuNVHm +-0n CFN -+"_-H nCr0PN^NuNV G=H2nAl ` 0nRn`0n/tN +-X`N^Nu#4EVgxH$z* z*"|t@||JPg0("(t fҨ mL"<Rh`> fҨn*"(Rh` fҨJn r1A0!At (g2Jh"g Sh"`""(xҨl Dn"D!Ax0(hg80(@02"(tҨxjp`H@ @opP@0($"(| f.Ҩ&Jh&k*mt` *nh"(*Rh$`\ f.Ҩ.Jh.k2m@` 2n4"(2Rh$`( f$Ҩ6Jh6k Jk`Jnr!A| (:gTJhNg ShN`D"(>kҨd!hB>m$` (FҨe!hJ>n"D>!A0($h:gH (Ш|H@H@jR@hjp` @o0<@R@@0(P"( f.ҨRJhRkVmt` Vnh"(VRhP`\ f.ҨZJhZk^m@` ^n4"(^RhP`( f$ҨbJhbk Jk`Jnr!A (fg2Jhng Shn`""(Ҩjl Dn"Dj!A0(Phfg, (ШH@hjp` op@JhpjhSPfbBhrJhfPA|`FSPp1@Jh$g1@$2(66(|CkD6JhPg1@P2(b6(CkDbAtQR0(hhfRFL/::NuA4 CT +-!IC +-!Ix An!A!@NuNqNqNqNqNqNqNq!HNu//?<&&MNN\*KNu f$/ /"/ ` /"/NINu@| |J@k f@p @FNsNVHl d +-tN +-XtN4 +-N^NuNVtN4 +-Hl +-tN +-XN^Nu* Link control file for GI Sound Tool (GIST) * Link control file for GSTC on Atari ST SECTION S.HEADER SECTION S.CCODE SECTION S.RBASE SECTION S.RELOC SECTION S.GBASE SECTION S.GLOB * Force load essential bits of library DEFINE LIB$ = C.MULT * Define dummy symbols DEFINE G$ = C_GLOBBA DEFINE M$ = $8000 * Insert your file here INPUT * * Music driver routines * Sound_on, Sound_off, Stop_snd, Init_snd, Sound_int INPUT SNDSUBS.BIN * Force STD I/O to use GEM, read libraries LIBRARY SXBIOS.BIN EXTRACT STGEM100 FROM TOS.LIB LIBRARY SUPER.LIB LIBRARY VDI.LIB LIBRARY AES.LIB LIBRARY TOS.LIB DATA 4000 J .  &J..  &GSTSUBS BIN &K@SNDSUBS BIN &MSNDSUBS LNK &OQb.\GST\GSTSUBS GST 68000 Assembler22:12 23/12/86SNDSUBSDIV15SOUNDTRAP9_INXSINT_OFF4SINT_ONGI_RWHH$z$ z$"|t@||JPg0("(t fҨ mL"<Rh`> fҨn*"(Rh` fҨJn r1A0!At (g2Jh"g Sh"`""(xҨl Dn"D!Ax0(hg80(@02"(tҨxjp`H@ @opP@0($"(| f.Ҩ&Jh&k*mt` *nh"(*Rh$`\ f.Ҩ.Jh.k2m@` 2n4"(2Rh$`( f$Ҩ6Jh6k Jk`Jnr!A| (:gTJhNg ShN`D"(>kҨd!hB>m$` (FҨe!hJ>n"D>!A0($h:gH (Ш|H@H@jR@hjp` @o0<@R@@0(P"( f.ҨRJhRkVmt` Vnh"(VRhP`\ f.ҨZJhZk^m@` ^n4"(^RhP`( f$ҨbJhbk Jk`Jnr!A (fg2Jhng Shn`""(Ҩjl Dn"Dj!A0(Phfg, (ШH@hjp` op@JhpjhSPfbBhrJhfPA|`FSPp1@Jh$g1@$2(66(|CkD6JhPg1@P2(b6(CkDbAtQR0(hhfLFL/:4NuA. C -+ C -+ AH!A!@NuNqNqNqNqNqNqNq!HNu"/ /$/ NINu@| |J@k f@p @FNsSNDSUBStextdataudata_32ksnd_onNVH*n>. HJk oX~ Gl F @T+(H0J@gRG` Gf.IrT+02,Al~`~ F L02,Am~ F @T+(H0,r2.@l pL8N^Nu H/aX0T=@J@f L8N^Nu F @T+&H| F8l 6TTRF`0.9@p9nrr9At9Av9Ax9Az9A9A9A9A9A|9A~9A9A2,JAkzJ@kN0.H lo  =@`0.H l  =@`0.H @T+9P H2,H//Ngi_rwT+P HR2,H//NT+P` ra*r9A$9A:9A<0,HJkx/r/NT+P` ra(r9AP9Af9Ahp/p/NT+P, "H AT+"H4H‚$H‚$H‚/t/NT+PJnk9nJlfp9@t9@v0,H/r/NT+P8 L8N^Nustop_sndNVH0. HJk2 n*0. F @T+*Hp:;@rBp/NT+PL N^Nusnd_offNVH0. HJk* n"0. F @T+*HJUg :;|pL N^Nuget_prioNVH0. F @T+*H0-rHL N^Nuinit_sndFNVBn0. @lH/a.XRn`N^Nuinstall_lHysint_onT+p&/NxbiosT+PaNuremove_iaHysint_offT+p&/NT+PNufreqsmaskdiv15 M / haw GGp1S$~Z8{fR?- wqjd_YTPKGC?<852/-*(&$" #4EVgxsoundS* Control file for GI Sound Tool (GIST) * * Standard control file for linking Lattice C modules. * * Step 1 - initialisation * = * * C initialisation must be included first. * INPUT startup.bin * * Step 2 - user modules * = * Now include your user module * (from the command line). * INPUT * * * SNDSUBS contains snd_on, snd_off, stop_snd, and init_snd * GSTSUBS contains sound_int, the interrupt routine * INPUT SNDSUBS.BIN INPUT GSTSUBS.BIN * * Step 3 - C library * = * * C library - must always be included. * LIBRARY clib.bin * * * Step 4 - GEM graphics library * = * * GEM graphics library - only include if your program * is trying to access graphics routines * (by uncommenting the line). * LIBRARY gemlib.bin * .  &P..  &DRVRDEMOMAK &QySNDSUBS O &Rc:\megadrvr\drvrdemo.c c:\megamax\mmlink.ttp c:\megadrvr\drvrdemo.o c:\megadrvr\sndsubs.o -o c:\megadrvr\drvrdemo.tos bss snd init! Cfreqs x222 M2 2 2 /2 2 2 h22a22w2 22G222G222p212222S2$22x22~2Z282222222{2f2R2?2-22 2222222222222d2w2q2j2d2_2Y2T2P2K2G2C2?2<2825222/2-2*2(2&2$2"2 2bss freqs init! Cmask 222bss mask main snd_on NV$0 H0&n>. G3 m G2 o3 BG4 `5 6 RG4  G8 l0Asnd 05 f8 7  G9 f>,snd rlsnd 10 l><11 `10 ><11 0Asnd r0lsnd 12 l013 `12 0<13 >9 2 0Asnd A$H0.jr14 l0<`1 14 ?Nstop_snd T0=@15 f0`1 15 0Asnd A -@0<<16 `17 nT018 RF16  F817 m19 05np5nr <%@%@|%@%@%@x%@t j20 mBE n21 m22 `23 n 22  nl23 n24 25 `26 n 25  n26 m27 0.Afwreqs 5P21 0*|?0@?Ngi_rw X0*@?0@R@?Ngi_rw X28 `20 :<e <%@:5@$28  j29 m BD?*?<Ngi_rw X30 `29 8<d <%@f5@P30 0Amask ?0D??<Ngi_rw \ n31 m5n31 0*32 f%|t?*0P@?Ngi_rw X32 401 L N^Nu$0 stop_snd NV$33  n35 m n35 n0<2.Asnd r02.Asnd 0Bg0.P@?Ngi_rw X35 34 N^Nu$33 snd_off NV$36  n38 m n38 n 0.Asnd 039 g 0.Asnd 00.Asnd p039 38 37 N^Nu$36 get_prior NV$40 0.Asnd r041 N^Nu$40 init_snds NV$42 Bn44 `45 ?.Nstop_snd T46 Rn44  n45 m47 43 N^Nu$42 init! Cdiv15 @222#242E2V2g2x22222222bss div15  main snd_int H$zsave_area  zsave_area "|t@||4vcloop JPg4endloop 0("(t<4ved f Ҩ 4endve m "<Rh4endve `4ved <4ver fҨ4endve n"(Rh4endve `4ver <4lva fҨJ4endve n r1A04endve !At4lva  (4do_vol gJh"4do_lv gSh"4do_vol `4do_lv "(xҨ4do_lv1 lD4enddo_lv n4do_lv1 "D4enddo_lv !Ax4do_vol 0(h4fe g0(@02"(tҨx4do_vol1 jp4do_vol2 `4do_vol1 H@|4do_vol2 op4do_vol2 P@4fe 0($"(|<4fed fҨ&Jh&4fea1 k*4endfe m4fea2 `4fea1 *4endfe n4fea2 "(*Rh$4endfe `4fed <4fer fҨ.Jh.4fed1 k24endfe m4fed2 `4fed1 24endfe n4fed2 "(2Rh$4endfe `4fer <4lfa fҨ6Jh64fer1 kJ4endfe k4fer2 `4fer1 J4endfe n4fer2 r4endfe !A|4lfa  (:4do_fr gJhN4do_lf gShN4do_fr `4do_lf "(>4do_lf2 kҨ4do_lf1 d!hB>4do_lf1 4enddo_lf m4do_lf4 `4do_lf2  (FҨ4do_lf3 e!hJ>4do_lf3 4enddo_lf n4do_lf4 "D>4enddo_lf !A4do_fr 0($h:4nfe g (Ш|H@H@4do_fr0 jR@4do_fr0 h4do_fr1 jp4do_fr2 `4do_fr1 |4do_fr2 o0<4do_fr2 @R@@4nfe 0(P"(<4nfed fҨRJhR4nfea1 kV4endnfe m4nfea2 `4nfea1 V4endnfe n4nfea2 "(VRhP4endnfe `4nfed <4nfer fҨZJhZ4nfed1 k^4endnfe m4nfed2 `4nfed1 ^4endnfe n4nfed2 "(^RhP4endnfe `4nfer <4lnfa fҨbJhb4nfer1 kJ4endnfe k4nfer2 `4nfer1 J4endnfe n4nfer2 r4endnfe !A4lnfa  (f4do_nfr gJhn4do_lnf gShn4do_nfr `4do_lnf "(Ҩj4do_lnf1 lD4enddo_lnf n4do_lnf1 "Dj4enddo_lnf !A4do_nfr 0(Phf4dec_dur g (ШH@h4do_nfr1 jp4do_nfr2 `4do_nfr1 <4do_nfr2 op4do_nfr2 @4dec_dur Jhp4endloop jSP4endloop fBhrJh4dec_dur1 f PA|4endloop `4dec_dur1 SPp1@Jh$4dec_dur2 g1@$2(66(|C4dec_dur2 kD64dec_dur2 JhP4endloop g1@P2(b6(C4endloop kDb4endloop AtQ4vcloop 0(hh4out fsave_area 4out FL/:save_area Nusnd_int_on Asave_area  Cdiv15  Csnd  Atrap9_int !Asnd_int !@Nusnd_int_of !save_area save_area HNusave_area NqNqNqNqNqNqNqgi_rw 2/0/4/NINutrap9_int @| |<J@4t9a k<4t9b f4t9b @4t9a p FNsinstall_in NV$48 Hzsnd_int_on ?<&Nxbios \Ninit_snds 49 N^Nu$48 remove_int NV$50 Ninit_snds Hzsnd_int_of ?<&Nxbios \51 N^Nu$50 .  &W..  &ALIEN SND &XpBOWDROPSSND "&YpBUZZDRUMSND $&ZpCHRRRR SND &&[pCREATURESND (&\pDRUM SND *&]pDRWHO SND ,&^pECHO SND /&_pECHO2 SND 1&`pEERIEFLYSND 3&apELECDRUMSND 5&bpEXPLODE SND 7&cpFADEIN SND 9&dpFALLING SND ;&epFLUTE SND =&fpFLYBY SND B&gpFMDRUM SND D&hpGUNSHOT SND G&ipHAMMER SND I&jpJEWSHARPSND L&kpKISSOFF SND N&lpLASER SND Q&mpLONGBELLSND S&npMOONWALKSND V&opMUTEGUITSND X&ppNOISECHOSND [&qpPENNYORGSND ]&rpPERCBELLSND b&spPIANO SND d&tpPLUCK SND g&upIlٚz4]P.4]P.P."SI\Yoo9 +, [!"qU33D EC6vU@ND EC% f+y y͚V)"rkV)" Ǯ!! p'Y/=. d$ R 2 2%B'%B( 2 ol1Dl"2 ` @@ 6dː#oɚ@3ɚ"nd@ ff&P.We%ٛ)%%ٛ( vUNrǟx8`o%  H&t_{_x3d'd"f+y y͚V)"rkV)" *`3ٚ fI%_f;%_"ffff, v㶺AIFV n SK2 fff+V)"rkV)" J ' ' R^e<<< 3 R%%%%%aH! J3 ٚYY 2 ' ' R^eoo ' ' R^eoq9T{q"  H&t_ǟxx3d'd"4ٚ &fhyǟx+9*\fǟx\ 2` @ 6dː#ol1Dl"w]f D EC6`Oٚ 33a/)C:fQ _ESREG19*}fǟx}f# w`f &`? ٟ6vf_Nwff3 &P.We6PWHISTLESND j&wpSFX1 SND n&xpSFX2 SND q&ypSHFLDRUMSND u&zpSHOT SND y&{pSNARE SND |&|pSPACE SND &}pSPACEDRMSND &~pSPACTRKYSND &pSYNTH1 SND &pTOM SND &pTOYPIANOSND &pTREMOLO SND &pUNDRWATRSND &pVIBRATO SND !&pVIOLIN SND %&pWEIRD SND )&pWHIP SND -&pWICKWICKSND 1&pWOWORGANSND 5&pw? ٚn ɻOLL{GU㶺 X60 *< Eff+ 4]HmDV)"rkV)"n]U3D EC  8&fNrǟx8`Cxctl% 9!! p'Y/=. 2 ` @@ 6dː#oɚ@3ɚ" ' ' R^eo\3Uff\3"ٚs3h]o7dho"Hw? ٚn 1$ / K K{GU㶺 2 ' ' R^exC7aHžS wT&fR D EC6f fELٚs3N  !V njTxjT"E ߾_Gǟx 8`9* aǟx #  ' ' R^ec{1LRHNN"NB`N4JN1pN:N$N2NAN0NJN0\NR2NTNu NtNNNtN~6NqBNgHNNpRNtTNp2NtNNN4Nr2NvNNNNNN]NvNk*O*m - ЭЭм!"ҍ¼.A// Bg?<JNA m"m -So Q m -SBQ(m)M*mN\ lHhNX/,?,N\?<NHlt?<BgN;P lt1l lt1l lt1l lt1lBgBg/,t?<BgN: 0<=@Hn?< BgN;*P n0(l1@ n0(jl1@j n0(:n1@: n0(n1@Hn?<BgN:P n0(jl1@j n0("l1@" n0(n1@ n0(:n1@:Hn?< BgN:P2< n0(ʐA1@2< n0(A1@2< n0(A1@2< n0(A1@2< n0(A1@2<3 n0(A1@ n0(l1@ n0( l1@ 2<5 n0(*A1@*2< n0(BA1@B2< n0(A1@2< n0(A1@2< n0(A1@2< n0(A1@ n0(jn1@j n0(rn1@r n0(n1@ n0(n1@ lt0(n1@ lt0(n1@ lt0(zn1@z lt0(n1@ lt0(n1@ lt0(2n1@2 lt0(l1@ lt0(l1@ lt0(l1@ lf nh nh nh nhHn?<BgN8PP lt (T-@ n ($-@ n  n n ( n!@ n0( n1@ n0(HT@ n1@ lt (\-@ n (<-@ n  n n ( n!@ n0( n1@ n0(H1@0<~ lt1@J0<K lt1@?,?,?,?,?<Bg/,tN3 ?<NT?<NT?<NTHlBgBgN70P?</,N2F\BBgN5>\N$Bn`20.A00.HH@2.A0Rn nm0<9@9@9|HlN^X?<?<NN`=@ @l0<`J0.|g0.@N`20.ARn0.,HA|AzPm0<N^NuNVpQ?<?<N5XJf0<`?<?<N5XN^NuNVBBgN.F\0.|g` n fBg?<?<Nn\`` |g`0. |g`HlHnNN52X0.g`HlN`XJ@gRHnNXBn`$0.A02. lAD0Rn n8m l0(D?NT`HlV?<N+\``|g`NHl|NXJ@gP lA/HnN7PHl~HnN7PHn?<N(p\|g`N``|g`0<` l?(NTSl l0?.N vT?,NT?<?</,N&|P?<?</,N&jP0,ffNBg?</,N&PPBg?</,N&@PBg?</,N&0PBg?</,N& PBg?</,N&PBg?</,N&P` l0(D?NT0<N^NuNVBn`@0.A0nf&0.AA)H0.lf)l` Rn nmN^NuNVHn?<BgN*P nA-HBn`* n/( ?PB?<N:\N^NuNV0.g*0.  nh 0. nh `(0. nh 0.  nh N^NuNV0.  n=h 0. n=h ?.?.?. /.Nb 0.2.  nh g"?,?,?,?,Bg?. /.N0.2. nh g"?,?,?,?,Bg?./.NN^NuNV0.  n=h 0.g 0.|`0.|=@?<?.?,?,?,?,Bg?. /.NN^NuNV0. l?(0. l?(0. l?(0. l?(?. N2 -@?. /.N\=@?./.N\0.N^NuNV9n J9n H9nF9nDHn?.BgNPHlLHlNHlPHlR/.N?<X?,RNX9@RV@ n1@?,L?,N?,P?,R?,D?,F?,H?,JBgN4?,L?,N?,P?,R?,D?,F?,H?,J?<N?,L?,N?,P?,R?<Bg/.N .N^NuNV?,L?,N?,P?,R?,D?,F?,H?,J?<N?,L?,N?,P?,R?,D?,F?,H?,J?<N0.  nh N^NuNVH0&n>. Gm GoTBG`RG Gl0A0f Gf2>,ll><`><0A0l*l0`0<>0AA$H0.jrl0<`p?NrT0=@f0`Z0AA -@0<<` nT0RF F8m5np5nr <%@%@|%@%@%@x%@t jmhBE nm0`n  nln`n  nm0.A5P0*|?0@?NX0*@?0@R@?NX`:<e <%@:5@$ jmBD?*?<NX`8<d <%@f5@P0A?0D??<N\ nm5n0*f%|t?*0P@?NvX40L N^NuNV nm< nn40<2.A02.A0Bg0.P@?N XN^NuNV nm> nn60.A0g$0.A00.A0N^NuNVBn`?.NVTRn nmN^NuH$z z"|t@||JPg0("(t<fҨ m>"<Rh`2<fҨn""(Rh`<fҨJn r1A0!At (g(Jh"gSh"`"(xҨlDn"D!Ax0(hg00(@02"(tҨxjp`H@|opP@0($"(|<f"Ҩ&Jh&k*mV`*nN"(*Rh$`D<f"Ҩ.Jh.k2m.`2n&"(2Rh$`<fҨ6Jh6kJk`Jnr!A| (:gBJhNgShN`6"(>kҨd!hB>m` (FҨe!hJ>n"D>!A0($h:g> (Ш|H@H@jR@hjp` |o0<@R@@0(P"(<f"ҨRJhRkVmV`VnN"(VRhP`D<f"ҨZJhZk^m.`^n&"(^RhP`<fҨbJhbkJk`Jnr!A (fg(JhngShn`"(ҨjlDn"Dj!A0(Phfg$ (ШH@hjp`<op@JhpjXSPfTBhrJhfPA|`NX=@ nm0.g lBh/.N"X`?.NTJ@f0<``xN^NuNVHl/.N P/.N^X=@ @l0<`HlHnNhP/.NvXS@=@`& nH|\g nH|:f` 0.SnJ@f nA/HnNP=|`"AH?NTARnHnNXU@=@0.nmHlAA/NPBn`HlHnN PBn`FHnNXAA/0.n lAD?N\HlHnNPRn nmHlHnNRXAA/N*PRn nmtHlHnN&XAA/NPHnHnNXH/?.?<@N =@?.?<>NX=@ nm0.g lBh0<`?.NTJ@f0<``N^NuNVHn?<BgNP n (<-@Hl| lA/NPJ@f@HlHnNHPHnNVX=@`SnAH|\fAB` lA/HnNPHn n/NP?<?<?<N\ @ff n/HnNPHlHnN6PBgHn?<=NP=@?.?<>NX nmHl?<N \ @f HnNBXN^NuNV fBC`&SCdTC0|g0|gԼdRC`|CHBC0|@HB LN^NuNVNVH n " n $&JjFFJjFFLN^@NuNVH n"n ,>(OG.(:E|gF&8)LD()4B|g B|?BB0<ҁRAdSAڂ߄݃Q/BRAdSAڂ߄݃0<`ҁRAdSA܃ۂ߄Qҁ,.:0P`NVH n,>(OG.(:E|gv"n &8)LD()4B|gN|BH0 *BB$G&GBB`dˋЄۃ߂݁ˋ؄׃ՂӁJfJfL 0P`BB`NVH"n 0<9@Q`NVH"n Bl n,>(OG.(:E|fBB&8)LD()4B|fBB2┺Bnf bfdEFG0 g(0Bg|5nS@Q0@gD@ބ݃0,Q fBB`NSEއ݆dTE0 g| g޼dRdRE`p Q|EHF|E0|@HF LN^NuNVH0.|=@n n f n0H-@HnNHXA-H`> n(g nf. n-P n(f HnNX` HnN~XA-H/./. 0.A PNPLN^/W DNuN^Nu)@HlNXONuHlNdXO ,Nu)AHlNXONuHlNDXO",NuNVH nB fB`м8 LN^NuNVH n"4(JB$(0@|fB` |D@ggD LN^NuNVH nB,fBEBB` nD@:<NN^NuNVH0&n$n Bn=| 0.HN-l-l-J @)P)h-l-lBEG>O|g|JGn|m` REHn/ N"PO`SEHn/ NPO`&0+H@$+JGg FGQ0<0dR@0.BAQ/,>QQԟ׆G|0QB`Rn0.g$nB`0R 2.HmB`b .6.HЃR$@ nH|0fRZ"` R"H|9n nH|0f$n R&@fSE .6.HЃ @B n0L N^NuNV0.@|g|N^NuNV0.2.|gn||@n)n)n N^Nu)I)J "/0<NB"l$l Nu    'NV9n0.| A" AA-H=|` nR2.AH0Rn nm/,FN.X0,vN^NuNVA)HJA)HNA)HRAv)HVAj)HZAb)H^AJ)HF?< NXT9lv0,N^NuNV?<NNnX9@Dg0<`0<N^NuNV nAm nZn 0.| ``0.N^NuNV?.?<LN XN^NuNV/ A&H`0+ |g/ NBX A"Ҽm?.NT&_N^NuNV0.n l0.`0. N^NuNV0.n o0.`0. N^NuNV n0 nh? n 0 n h?NX=@ n0( nh? n 0( n h?NtX=@ n? n ?NzX=@ n?( n ?(N`X=@ n 0 n 1n0.n n 1@0.n n 1@0.n^Jg 0.n^J|N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NXBk ?+ NTJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NFP?/+?+ NP @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NP'@&Bk0<LN^NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV/BnJlRnDJ lRnD 0. -@0.n0. nngD -n N^.JNuN^NuNV nl <`?.?./. ?<BN -@ m .`?<?.B?<BN| -@?<?.B?<BNb -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@Dg <` `BlD . N^NuNV/.?<IN\N^NuNVBn`&0.A0nf0.ABPRn nLmN^NuNV?>.=|0A"HPgXHf0(>N^Nu)I)J )_NM"l$l /,Nu)I)J )_NN"l$l /,Nu)I)J )_NA"l$l /,NuNVH&n Bn0.|dg`>< `.`|ug`>< ``|og`><``|xg`>< l* ndf SR- .D-@`0. f Gf .`& Gf .` ./0H/NX 2.RnA0 Gf .`( Gf .` ./0H/N4 X-@ .fp`FSn0.A P m0.A0| |A`0.A0|0 SR0.fLN^NuNVH&n n f=| )n)nHl Hl?<N]|@0. R@?HnHnHnN.g SR-.H|0f.f SR`J nff>.n RG0lo0,`0> Gl0<`0?HnHnHnNBF`0RFA SRSGSn0g nl` SR0Sn nl0. g SR.` SR0RnSn 0. g nm`" Go0RFAH`0<0 SRSG0. Sn J@f`` SR0. g SR.><`0RGA SR0. Sn J@f SRE?.Hl/N /NXHѓLN^NuNVBn`"0. n PHC|0=@ nR n PH|0m n PH|9o0.N^NuNVH0&n -n @$PX`R` nRg H|%fH|%f,RBn=|Bn| H|-f=|RH|0f|0R-JHnN$X=@$nH|.fR-JHnNX=@$nH|lf=|RgH-n Gdg Gog Gxg GufB0.g @ ` @0H/Hn?.?NV 0.g0<`0<H` Gcf R @ nRT` Gsf4 @-PX<.` nR nRSF0g nf`J Geg Gfg Ggf, @)P)h/,/,Hn?.?NP` 0 nR .nl0.g$<.".A` nRSF0f`b .2.SAHЁ-@-@,.` .2SAHЁ @ nSSF0f` nR .o .R-@f nB .L N^NuNVHn /.NhPN^NuNVH0&n$n -K`fS`f .`L N^NuNVH0&n$n `RRgHHAgHHC`L N^NuNV n "n fN^NuNVH0&n$K`Rf `L N^NuNVBg)n)n /,/,N -l-l)n)nHlHl?<Nd)n)nHl Hl?<NHHlHl?<N8-l-l)n)n-l-l)n)nHnHl?<N-l-l=|)n)n-l-l)n)n-l-l)n)nHnHl?<N-l-lTn)n)nHnHl?< Nn)n)nHlHl?<NR-l-l)n)nHnHl?<N*fZ)n)n /,/,NFPHNHl(Hl?<N-l-l)n)nHl0Hl?<NHnHl?<NN^NuNV)n)n /,/,NPHl@Hl?<NN^NuNV)lH)lL-l-l)n)n N=@0.g,?.)n)n/,/,N -l-l)n)n HnHl?< N -l-l )n)n HlPHl?<N-l-l )n)n HlXHl?<N-l-l)l`)ld-l-l)n)n -l-l=|)n)n-l-l)n)nHnHl?<ND-l-lRn)n)nHnHl?< N-l-l)n)nHnHl?<N)n)nHlHl?<N-l-l)n)nHnHl?<Nf2)n)nHnHl?<NN^Nu)I)J Hl)_Hl" <sNB"l$l NuNV9n 9|Bl9|9nN0,N^NuNV9n 9|qBl9|9nNN^NuNV9n 9|Bl9|9nNb0,N^NuNV9n 9n 9|'Bl9|9nN0 n0 n0N^NuNV9n 9|Bl9|9nN0,N^NuNV)n)n .мZ)@9|dBl9| n 9PN n 0A)HA)HA)HA)HN^NuNV9|eBlBl9nNnN^NuNV)n 9n 9|9|9|9nN>A)HN^NuNV9||BlBl9nN n 0 n0 n0N^NuNV9|BlBl9nN n 0N^NuNV)n 9|9n Bl9nNA)HN^NuNV9n 9n Bn nR2.RnA|0f9|9|Sn0.9@9nNJN^NuNV)n 9|r9|Bl9nN"A)HN^NuNV`4 nH| f?< ?<NX nRH??<NX0. Sn J@fN^NuNV` nRH??<NxX0. Sn J@fN^NuNV` nRH??<NJX0. Sn J@fN^NuNVH0&n $KA@-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.NRTJ@f`H| f |o@ H-@/./.?.?<@Nt 9@DHg0<`0,Dn/./<?.?<@N> 9@D @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N 9@DHg0<`0,DnBlD0.L N^NuC|Untitled9| XN^NuNV nn0<`4 nl0<`& <H2.HHЁ/0.H/N> XN^NuNV0,gT?<`6RG G8mL N^NuNV0,gzHlNXJ@g4`(0,lg?,N|TA?NLTN0,f`8HlNXJ@gJ`>0,lg0?,N:T=@BgNT0.An9Pz?<NTNP0,f`HlNXJ@g4`(0,lg?,NTA?NTN0,f`?,?,?<Bg/,tNf =@ @ox0.|g`0,gt0,gN`F?<?</,tNP0,g Bl9|`"?<?< l?( lAD/NB `Nr0,f0,fBg?</,tNP``|g|g`j?<?./,tNP0, nf2<`2*z>Jlg*ln"9l?<?< l?(HhDNB FLNsNqNqNqNqNVA !MHz?<?<Bg?<N N^NuNV?< ?<NXNN^NuNVBlBg?</,tNPNNN^NuNVHlHlHl?,NHz?<&N\NN^Nu l0(hg P9p l NuNV?<NT9|Bl)|Hn?< BgNP l?(L?< ?< /.N lA^  @)P V|??<?</.N 0<N??<0,2<A?0,|??< NT n9hx n9hv0,x|69@p9@t0,v2<FA9@r0,v2<mA9@nBBg?,N P?<NT?<NT?<N HT lAD/N`20,lg$BgNzT?,NT l1@J?<N^TN0,f`?<HlZN\=@g`0,lf 0,lgN0,r lf2,`2,Al=@ lf 0.=@ lf$0,l2.AVP?N,T=@`L0,l2.AVP?NT2<4,lA=@ nl=|0,ln ndo=|d` nlBnBgNT0.|g` /,?.N\ lAN" A `6`|g`Bg/,?.NP)@9n``|g`9n ,g ,D` ,D)@ lAV  @  ,/?,N|\ lAR" A /,?,N`\ lAZ" A ?<NFT0< l1@L??< ?< /.N N0,lg`?<HlN\=@g`0,lf 0,lgpNBgNJT0.|g`j lf0,`0,llp=@ no?.N8TH=@ lg 0,ln nlBn l1nf`` |g`0,n lf2,`2,Al=@ lf 0.=@ lg 0,ln n2o=|2` nl=|Bg/,?.NP)@ lf$0,ll?NT-l-l`0,ll?NT2,lHN$HlHl?<NHlHl?<N-l-l)n)nHlHl?<Nl)l)l-l-l`6)n)nHlHl?<No)l)l-l-l/,)n)n/,/,Nz lAb" A l ,D` , lA^" A ?<N T V|??<?</.N N&0,lgn`L?,?,?<Bg/.Nf =@ @o"0.| g| g`0 n W| l1@L??< ?< /.N ``|g`b n0(|gN?<?<?</.N BgN6T l ,D` , lA^" A ?<NT`v`|g`Z n0(z|gFBg?<?</.N lA^  @)PBgNT lA^  @B?<NT``|g|g`F=n nW|??<?</.N nf lAD/N~X`` |g`?<?</.NPBgNTBgNTBgNT lAD/N4X?<NT?<N~T?<NT l?(L?< ?< /.N lA^  @ V|??<?</.N Bg?</.NP`N nmT?./.N2\?<NT ng0,g l1|NBlN^NuNV/ ?.?,NHX l=hJA&H0,x2<$A60,v2<A7@2<nA7@B?<N\0.gF?.HlHnNJ Hn0,vl?0,x2<!A??,NV / NX/ NXB?<N\&_N^NuNV?.?,NHXB?<N\0.g62,0,g0<`0<20,rA??,tNX?,r?,tNvX/, lAN  @/NNP9@ lAV  @)P ,/ lAR  @/NP9@Bg/,/,N =@ ,g ,D` ,D)@/, lAZ  @/NP9@0,f80,r9@\9@l2<2ʐA9@`0,r2.HA9@h9@d`60,r9@\9@l2<ʐA9@`0,r2.HA9@h9@dN0.g0,f0,v2<A=@0,x2<9A=@?,Hl HnNJ Hn?.?.?,NV 0,n?,HlHnNJ Hn?.?.?,NV 0,n?.HlHnNJ Hn?.?.?,NV 0,n?,HlHnNJ Hn?.?.?,NV B?<N\N^NuNV?.?,NHXB?<N\0.gB0,n2,g lf2< `2<`2<ʐA??,pN^X?,n?,pNX lA^  @  l hbl2<`2</0H/N -@Bg/,/.N& =@9@/. lAb  @/NP)l)l l0(f9@ n2o=|2` nl=|?.0.H?NRXB?<N\N^NuNV?<NT9|Bl)|Hn?< BgNP l?(h?<?</.N lA~  @)P lA  @)P V|??<?</.N 0<N??<0,2<A?0,|??< NT n9hx n9hv0,x|69@p9@t0,v2<-A9@r0,v2<mA9@nBBg?,N P?<N T?<N T?<NT lAD/NX=|Bn` dBl N0,f l f l f"=|?<?< ?</.N ` .9l9l9lHlNݨXJ@gV`J0,lg-l-l lA~  @  lA  @ /,)n)n/,/,N$ lA" A /, )n)n/,/,N lA" A nl lA  @ ` lA  @  lA" A ?<NT V|??<?</.N N0,lgT`(?,?,?<Bg/.Nf =@ @o0.|*g |)g`?<?./.NP l=hFBgNT nan nn0?.NT n*f2<`2?.NtT"0,r9@\9@lA9@`?.NVT=@0,rn9@h9@d`H?.N6T"H0,r9@\9@lA9@`?.NTH=@0,rn9@h9@dN&0.g*0,f"0,v2<A=@0,x2<9A=@?,HlFHnNJ Hn?.?.?,NV 0,n?.HlJHnNJ Hn?.?.?,NV 0,n?,HlNHnNJ Hn?.?.?,NV 0,n?.HlRHnNJ Hn?.?.?,NV 0,n?,HlVHnNJ Hn?.?.?,NV B?<N\N^NuNV?.?,NHXB?<N\0.gT0,g&0,n lf2< `2<A??,pNZX`0,n2<ʐA??,pNX?,n?,pNX lA~  @-P l ho .` lA  @ -@?</,/.N D@9@/. lA  @/N԰P)l)l l0(9@?.?,NT?NVXB?<N\N^NuNV?<?,NXBn`0?<0. 2.A2A?0.[@?NJ\Rn n mN^NuNVBn`0.2.APn` Rn nm0<nN^NuNV nl0.D@`0.=@Bn`0.2.A"Pn` Rn n3m lf0.H2.HHAA=@ nl0.D@`0.N^NuNV?<NT9|Bl)|Hn?<BgNP l?(?<?</.N lA  @)P V|??<?</.N 0<N??<0,2<A?0,|b??<NT n9hx n9hv0,x|69@p9@t0,v2<-A9@r0,v2<mA9@nBBg?,N P?<N T?<N T?<N T lAD/NՒX=|Bn`Bl N޺0,f l f l f"=|?<?< ?</.N `Z9l9l9lHlNˬXJ@g`0,lg9l lf0,`0,ll=@ lf 0.=@0<$n=@ lg 0,ln nn=|` n mBn` 0< n=@BgNT l1nH?<NTNݮ0,lgH`l?<HlZN~\=@gV`B0,lf 0,lg(N\0,r lf2,`2,Al=@ lf 0.=@ lf$0,l2.AVP?NT=@`L0,l2.AVP?NT2<4,lA=@ nl=|0,ln ndo=|d` nl=|BgNT0.f=l0.|g`HBg/,0.D@?NѰP)@/,?.NҠ\ lA" A lA  @ `:`|g`"Bg/,0.D@?N`P)@9n``|g`9n ,g ,D` ,D)@ ,f=|`0.g 9nBn ,/?,N\ lA" A lA  @ /,?,N\ lA" A ?<NjT0< l1@??<?</.N ND0,lg`?<HlN\=@g`0,lf 0,lgtNBgNT0.|g`j lf0,`0,llp=@ no?.NŤTH=@ lg 0,ln nlBn l1n`` |g`0,n lf2,`2,Al=@ lf 0.=@ lg 0,ln n2o=|2` nl=|Bg/,0.D@?NFP)@ lf$0,ll?NTT-l-l`0,ll?N0T2,lHN$HlZHl?<NHlHl?<N-l-l)n)nHlbHl?<Nl)lj)ln-l-l`6)n)nHlrHl?<No)lz)l~-l-l/,)n)n/,/,N lA" A l ,D` , lA" A ?<NT V|??<?</.N N؎0,lgj`L?,?,?<Bg/.Nf =@ @o"0.|g|g`0 nW| l1@??<?</.N ``|g`b n0(|gN?<?<?</.N BgNT l ,D` , lA" A ?<NT`v`|g`Z n0(|gFBg?<?</.N lA  @)PBgNTT lA  @B?<NX/ NXB?<N\&_N^NuNV?.?,NHXB?<N\0.gB0,r2, xg lf2< `2<`2<ʐA??,tNX?,r?,tNX lA  @)P/, lA  @/NzP9@Bg/,/,N D@=@ lA  @)P ,/ lA  @/N0P9@Bg/,/,NȤ D@=@ ,g ,D` ,D)@/, lA  @/NP9@0,f>0,r9@\9@l2.HA9@`0,r2.HA9@h9@d`<0,r9@\9@l2.HA9@`0,r2.HA9@h9@dN0.g*0,f"0,v2<A=@0,x2<9A=@?,HlHnNJ Hn?.?.?,NV 0,n?.HlHnNJ Hn?.?.?,NV 0,n?,HlHnNJ Hn?.?.?,NV 0,n?.HlHnNJ Hn?.?.?,NV 0,n?,HlHnNJ Hn?.?.?,NV B?<N\N^NuNV?.?,NHXB?<N\0.gB0,n2,g lf2< `2<`2<ʐA??,pN0X?,n?,pNX lA  @  l hl2<`2</0H/N -@Bg/,/.N D@=@9@/. lA  @/NĞP)l)l l0(9@ n2o=|2` nl=|?.0.H?N"XB?<N\N^Nu[3][Please switch to medium res][ Ok ]GIST.RSC[3][Can't load GIST.RSC][ Ok ]SND[3][Invalid sound data][ Ok ][2][Save |before closing? ][Yes|No|Cancel]@$@$%5d%5.1f%5u@I@I@I@I@I@I??@Y?@Y???@%u msec %5u%5u *.\*.\Vol = %uFreq = %u HzNoise = %uDur = %u msecADSRLFO[3][Can't open|any more windows][ Ok ]@$??@I@I%-2u%5u%5u%5d%5u@$??@I@I%5u%5u%5d%5u%5d%5u@$??@I@I%-2u%5u%5d%5u%5d%5uCint [] = { , }; SND[2][Overwrite existing file?][Ok|Cancel]??CON:AUX:PRT: %d???.B9@@kU?.B9??.B9???.B9@kU@!TD-@!TD-@ !TD-@ !TD-?!TD-@ !TD-??!TD-??@?????!TD-?!TD-??!TD- To<0 $ 'T %'HARDWARE SOUND REGISTERSOkReg 0 =Reg 1 =Reg 2 =Reg 3 =Reg 4 =Reg 5 =Reg 6 =Reg 7 =Reg 8 =Reg 9 =Reg 10 =Reg 11 =Reg 12 =Reg 13 =123123123123123123123123123123123123123123Sustain = %Release = msecADSOnOffRLFODecay = msecCancelOkDelay = msecFreq = HzAmount = %OffRESETOn0%Frequency = HzAttack = msec-300%0%+300%+100%+200%-200%-100%+50%-50%-50%+300%-300%+200%+100%-100%-200%+50%Peak = %Sustain = %Release = msecADSOnOffRLFODecay = msecCancelOkDelay = msecFreq = HzAmount = %OffRESETOn+50%0%-50%+100%0%-100%Attack = msecPeak = %Noise =ok(c) 1986 Synthetic SoftwareG.I.S.T.(G.I. Sound Tool)Version 1.0Software: Lee ActorDesign: Lee Actor & Gary LevenbergExclusively for AnticAttack = msecSustain = %Release = msecADSOnOffRLFODecay = msecCancelOkDelay = msecFreq = HzAmount = %Off50%RESETOn100%0%+50%0%-50%Volume =cyclemsecDurationmsecNOISE ADSRAttack time (msec):__X9Attack % level (-100 -> 100):__X9EnabledDecay time (msec):__X9Sustain % level (-100 -> 100):__X9DisabledRelease time (msec):__X9OkCancel GIST File Edit Play Misc About GIST--- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Open... New- Save Save as... Close- Quit ^Q Volume ^V Frequency ^F Noise ^N Single sound Ganged sounds Quiet- MIDI input- H/W registers_(_(p(OkCancelSave file as?????????????????????'0 ??BB!!!BB?? 0&?>!??????????????????????????????????'0 0? ?B#!!!!!!!!!#B?B ?0 0!?>)0  @  0   0&  0&   %&,16nr|&HOV|))"$= @ I R [ d  m  v                    ! #D/ / "$1'; + -  /  1 3/HOR/f/ x/ ;>10 /Lh$Pd  !",H 71%& ' ()*-*+/*# DF/W/lnpr1u; y {  }   /// / ;>1( D `|/1 )/14   & PY k  w  "  D///       1 ; /4/*H/ Z/ s>@ 1$ \ y1j;x CP  0M       !7  ""--5 " ] " - " %  PP        " P    (=Rg | " !!)#'$9%A&S'`" r;' (  #\ #<&$!L##lx.  U)..  U)GISTDRVRPRG V )DRNOISE SND X )pDRWHO SND Z )pSAMPLE SND [ )pDRVRDEMOBAS ] )" `AFJPfN0A "H//) "PJgBAёg|f`  _`BQN\NV.?<&NzTa N^NuNVa.?<&NzTN^NuNVBn` >aRn nmN^NuNVH?*n>. JGm|o^BG`RG|l0 @"|~Jpf|f809y |lB@`p>0 @"|~00ry l0`p>0(@~0,rnop`P>aT6f0`@0&@~T|`6RF|8m9np9nrB)@)@|)@)@)@x)@tJlmlBEJnm4`n  nln`n  nm0n9P>W0@?N8T0,@>0@?RWN8T`z0eB)@:9@$JlmBD>?<N8T`x0dB)@f9@P0G"|T>?0W?<N8XJnm9nJlf)|t>?PWN8T80JL8N^NuNVJnm@ nn80.м~ @p1@r2.Ҽ~"A2BW?.PWN8TN^NuNVJnmH nn@0. @"|~Jpg*0.м~ @00.м~ @1|pN^NuNV0. @"|~00rN^NuH$y y"|t@||JPg0("(t<fҨ m>"<Rh`2<fҨn""(Rh`<fҨJn r1A0!At (g(Jh"gSh"`"(xҨlDn"D!Ax0(hg00(@02"(tҨxjp`H@|opP@0($"(|<f"Ҩ&Jh&k*mV`*nN"(*Rh$`D<f"Ҩ.Jh.k2m.`2n&"(2Rh$`<fҨ6Jh6kJk`Jnr!A| (:gBJhNgShN`6"(>kҨd!hB>m` (FҨe!hJ>n"D>!A0($h:g> (Ш|H@H@jR@hjp` |o0<@R@@0(P"(<f"ҨRJhRkVmV`VnN"(VRhP`D<f"ҨZJhZk^m.`^n&"(^RhP`<fҨbJhbkJk`Jnr!A (fg(JhngShn`"(ҨjlDn"Dj!A0(Phfg$ (ШH@hjp`<op@JhpjXSPfTBhrJhfPA|` THE SOUND DRIVER OPERATES UNDER THE 200 HZ SYSTEM TIMER F INTERRUPRT ROUTINE. IT IS INSTALLED BEFORE THE REGULAR SYSTEM EB AND THEREFORE EXECUTES BEFORE THE REGULAR SYSTEM INTERRUPT. @ WORD MUST BE DEFINED APPROPRIATELY DEPENDING ON COMPILER. 8Snd_on will play a sound that was created using GIST  n Calling sequence is: 6 A=C:Snd_on(L:sndptr,voice,volume,pitch,priority) Where: OH sndptr = the address in memory where the .SND file J (created using GIST) is loaded using Bload. D voice = the voice number corresponding to the iB GI channel number 0, 1, or 2. A -1 e@ tells the sound driver to use any 1B available channel. Any other value e2 will have no result. B volume = volume of the sound (0-15) or -1 to e@ use volume stored with sound data. < pitch = the pitch of the sound (1-255) @ corresponds to the semitone number D (60 = middle C on a piano keyboard or D 262 Hz; 72 = one octave above; this is F the same as MIDI pitch numbers). If no EH pitch is specified, the nominal frequency ,> value stored with the sound data H will be used. In this case, the duration ,B of the sound is also determined by a F parameter of the sound data. If pitch is H specified, the sound will remain on until ,H a sound_off is issued. In other words, if H no pitch is specified, it is considered a F sound effect. If pitch is specified, it B is considered a musical note with an F unknown duration and must be turned off F after the required duration has elapsed. F priority = priority of the sound (0-255) where the eH higher the value, the higher the priority. D Equal values take precedence over each F other. When a sound_off is issued, the yD priority is reduced to zero during the : release phase of any sound. d> The voice number used will be reutnred. If no voice was  available, -1 is returned.  BSnd_off will cause the sound to move into its release phase and " reduce the priority to zero.   The calling sequence is:  A=C:Snd_off(voice) Where: OB voice = the voice which is to be moved into B its release phase (0, 1, or 2). Any 8 other value has no effect. DStp_snd will cause the sound to completely stop. No matter what eF phase the sound is in (attack, decay, sustain, or release), the y< sound will end. Unlike snd_off, there is no release. a The calling sequence is:  A=C:Stp_snd(voice) Where: OB voice = the voice which is to be stopped (0, > 1 or 2). Any other value has no & effect. BGt_prior will return the priority of the requested voice. This F routine is useful if you have a case where a snd_off might turn y@ off the wrong sound. You can call get_prior and issue the 8 snd_off only if the priority matches the original. The calling sequence is: RA=C:Gt_prior(L:voice)  ewhere  hH voice = the voice whose priority is requested (0, & 1 or 2). FInit_snds will stop all chanels on the GI chip by calling stop_snd y, three times with values or 0, 1 and 2.  The calling sequence is:  init_snds() s ->!BE SURE TO REQUEST THE RIGHT AMOUNT OF SPACE! BSound Driver (DRIVER.PRG) requires 3000 bytes to load properly Each sound uses 122 bytes  aEttFE;; FEFE# FE! F EF d Addresses for Sound routines  dEFEFE0FERFE0 FEC FEY Fu E EA:\GFABASIC\GISTDRVR.PRGF M! FEA:\GFABASIC\drnoise.SNDFE F M! FEA:\GFABASIC\drwho.SNDF EF M! FEA:\GFABASIC\sample.SNDF EF M! F E.Install will install the interrupt routine E F EBInit will initialize the sound channels by stopping all sounds s E F E H No pitch is passed. The duration parameter is .5 seconds and B the release is 1 second. The sound will be over in 1.5 N seconds. The volume is set to 11. This sound uses all parameters  $This sound is a sound effect...F$E!!p!!  F)!Continue!! OK !F *%This sound is another sound effect...F$E!!0!!  F)!Continue!! OK !F  F No pitch is passed. The sound is as before, but the volume  is now 15. Again, but louder...Fn$E!!p!!  F)!Continue!! OK !F .Print "Press RETURN to continue ->";Inp(2)  > Because a pitch value is passed, the sound will remain on D until a snd_off is issued at which time the release phase * of the sound will be initiated. .(This sound will continue indefinitely...Fd$E!!!@@!  F0)!Continue and issue a snd_off!! OK !Fi E FWaiting for release...F  e<get_prior can be used to only turn the sound off if it is >the same priority as in the original call, in this case, 5  `  F E F FE$ Wait to let the sound release na: EGj` F a0 FOB DRWHO will "steal" the channel from the initial sound played d( because it has a higher priority o.(This sound will continue indefinitely...Fn$E!!! @@!  F,)!Interrupt and play DRWHO!! OK !F DRWHO has now taken over...F$E!!p!!  Fb EGj` F bz Fu> Because a pitch value is passed, the sound will remain on B until a stop_snd is issued at which time the sound will  immediately stop. )!Continue!! OK !Fn.(This sound will continue indefinitely...Fd$E!!!@@!  F*)!Issue stop_snd and exit!! OK !F E F E E F E F E:! BE SURE TO FREE UP REQUESTED SPACE! !E! FqFE ! +! F dX JF dvF" Not Found !!F!rF F! F.F5555555ՠ5|p6`@jd 6`@6g6ot; @R`   ( Bhd8:.  b)..  b)PASCAL INF c )]DRVRDEMOPAS e )#SNDINT O g ) <DRNOISE SND j )pDRWHO SND l )pSAMPLE SND m )pSNDSUBS O o )H OSBIND O q )DRVRDEMOPRG s )DRVRDEMOO u )<256 1 1 1 1 1 1 0 1 f: a:\pascal\sndsubs.o,a:\pascal\sndint.o a:\pascal\osbind.o { THIS PROGRM WILL INSTALL THE SOUND DRIVER (INTERRUPT ROUTINE), DEMONSTRATE SOUND EFFECTS WITH FIXED DURATIONS AND PRIORITIES AND SHOW TWO DIFFERENT WAYS TO TURN A SOUND OFF. IT WILL THEN REMOVE THE INTERRUPT ROUTINE. THIS OR ANY OTHER APPLICATION MUST LINK TO THE APPROPRATE FILES DEPENDING ON THE COMPILER USED. THE SOUND DRIVER OPERATES UNDER THE 200 HZ SYSTEM TIMER INTERRUPRT ROUTINE. IT IS INSTALLED BEFORE THE REGULAR SYSTEM AND THEREFORE EXECUTES BEFORE THE REGULAR SYSTEM INTERRUPT. WORD MUST BE DEFINED APPROPRIATELY DEPENDING ON COMPILER. Snd_on will play a sound that was created using GIST and stored as a .SND file. Calling sequence is: snd_on(snddata,voice,volume,pitch,priority) where: snddata : String[112] voice : Integer the voice number corresponding to the GI channel number 0, 1, or 2. A -1 tells the sound driver to use any available channel. Any other value will have no result. volume : Integer volume of the sound (0-15) or -1 to use volume stored with sound data. pitch : Integer the pitch of the sound (1-255) corresponds to the semitone number  (60 = middle C on a piano keyboard or 262 Hz; 72 = one octave above; this is the same as MIDI pitch numbers). If no pitch is specified, the nominal frequency value stored with the sound data will be used. In this case, the duration of the sound is also determined by a parameter of the sound data. If pitch is specified, the sound will remain on until a sound_off is issued. In other words, if no pitch is specified, it is considered a sound effect. If pitch is specified, it is considered a musical note with an unknown duration and must be turned off after the required duration has elapsed. priority : Integer priority of the sound (0-255) where the higher the value, the higher the priority. Equal values take precedence over each other. When a sound_off is issued, the priority is reduced to zero during the release phase of any sound. The voice number used will be retunred. If no voice was available, -1 is returned (NOTE: type Integer is always returned). Snd_off will cause the sound to move into its release phase and reduce the priority to zero. If no voice is available, a -1 is returned. The calling sequence is: snd_off(voice) where: voice : Integer the voice which is to be moved into its release phase (0, 1, or 2). Any other value has no effect. Stop_snd will cause the sound to completely stop. No matter what phase the sound is in (attack, decay, sustain, or release), the sound will end. Unlike snd_off, there is no release. The calling sequence is: stop_snd(voice) where: voice : Integer the voice which is to be stopped (0, 1 or 2). Any other value has no effect. Get_prior will return the priority of the requested voice. This routine is useful if you have a case where a snd_off might turn off the wrong sound. You can call get_prior and issue the snd_off only if the priority matches the original. The calling sequence is: get_prior(voice) where voice : Integer the voice whose priority is requested (0, 1 or 2). Init_snds will stop all chanels on the GI chip by calling stop_snd three times with values or 0, 1 and 2. The calling sequence is: init_snds } PROGRAM File_Test ; CONST {$I gemconst} TYPE {$I gemtype} SndData = STRING [112] ; Path_Chars = PACKED ARRAY [ 1..80 ] of Char ; VAR drwho : SndData ; drnoise : SndData ; sample : SndData ; bytes_read : Long_Integer ; gem_name : Path_Chars ; alert : Str255 ; name : Str255 ; junk : Integer ; chan_num : Integer ; handle : Integer ; close_handle : Integer ; {$I gemsubs.pas} PROCEDURE install_int; C; PROCEDURE remove_int; C; FUNCTION snd_on( VAR data : SndData ; channel : Integer ; volume : Integer ; pitch : Integer ; priority : Integer ) : Integer; C; FUNCTION snd_off(channel : Integer ) : Integer; C; PROCEDURE stop_snd(channel : Integer ) ; C; PROCEDURE init_snds; C; FUNCTION get_prior( channel : Integer ) : Integer; C; FUNCTION f_open( VAR name : Path_Chars ; mode : Integer ) : Integer ; GEMDOS ($3d) ; FUNCTION f_close( handle : Integer ) : Integer ; GEMDOS ($3e) ; FUNCTION f_read( handle : Integer ; count : Long_Integer ; VAR buf : SndData ) : Long_Integer ; GEMDOS ( $3f ) ; PROCEDURE Make_Path( VAR ps : Str255 ; VAR cs : Path_Chars) ; VAR i : Integer ; BEGIN FOR i := 1 TO Length( ps ) DO cs[i] := ps[i] ; cs[ Length(ps)+1 ] := Chr(0) ; END ; PROCEDURE Get_Snd (name : Str255 ; VAR data : SndData) ; BEGIN Make_Path|( name, gem_name) ; handle := f_open(gem_name, 0) ; IF handle >= 0 THEN BEGIN bytes_read := f_read(handle,112,data) ; close_handle := f_close(handle) ; END ; END ; BEGIN IF Init_Gem >= 0 THEN BEGIN {Load sounds into memory} name := 'A:\PASCAL\DRWHO.SND' ; Get_Snd (name,drwho); name := 'A:\PASCAL\DRNOISE.SND' ; Get_Snd (name,drnoise) ; name := 'A:\PASCAL\SAMPLE.SND' ; Get_Snd (name,sample) ; Make_Path( name, gem_name) ; {install_int will install the interrupt routine } install_int; {init_snds initializes all channels by stopping all sounds} init_snds; {No pitch is passed. The duration parameter is .5 seconds and the release is 1 second. The sound will be over in 1.5 seconds. The volume is set to 11. This sound uses all parameters} junk := snd_on(drnoise,-1,15,-1,200) ; alert := '[1][This sound is a| sound effect...][ OK ]' ; junk := Do_Alert( alert, 0 ) ; junk := snd_on(drwho,-1,10,-1,200) ; alert := '[1][This sound is| another sound effect...][ OK ]' ; junk := Do_Alert( alert, 0 ) ; {No pitch is passed. The sound is as before, but the volume is now 15.} junk := snd_on(drwho,-1,15,-1,200) ; alert := '[1][Again, but louder...][ OK ]' ; junk := Do_Alert( alert, 0 ) ; {Because a pitch value is passed, the sound will remain on until a snd_off is issued at which time the release phase of the sound will be initiated.} chan_num := snd_on(sample,-1,15,60,5) ; alert := '[1][This sound will continue| indefnitely...][ OK ]' ; junk := Do_Alert( alert, 0 ) ; { get_prior can be used to only turn the sound off if it is the same priority as in the original call, in this case, 5} IF get_prior(chan_num) = 5 THEN junk := snd_off(chan_num) ; alert := '[1][Waiting for release...][ OK ]' ; junk := Do_Alert( alert, 0 ) ; {DRWHO will "steal" the channel from the initial sound played because it has a higher priority} chan_num := snd_on(sample,-1,-1,96,5); alert := '[2][Ready to interrupt with DRWHO...][ OK ]' ; junk := Do_Alert( alert, 0 ) ; junk := snd_on(drwho,chan_num,15,-1,10); alert := '[2][Ready for last demo...][ OK ]' ; junk := Do_Alert( alert, 0 ) ; chan_num := snd_on(sample,-1,-1,96,5); alert := '[1][This sound will continue| indefinitely...][ OK ]' ; junk := Do_Alert( alert, 0 ) ; stop_snd(chan_num); {remove_int will remove the interrupt routine} remove_int; Exit_Gem ; END ; END. @`  H$y y"|t@||JPg0("(t<fҨ m>"<Rh`2<fҨn""(Rh`<fҨJn r1A0!At (g(Jh"gSh"`"(xҨlDn"D!Ax0(hg00(@02"(tҨxjp`H@|opP@0($"(|<f"Ҩ&Jh&k*mV`*nN"(*Rh$`D<f"Ҩ.Jh.k2m.`2n&"(2Rh$`<fҨ6Jh6kJk`Jnr!A| (:gBJhNgShN`6"(>kҨd!hB>m` (FҨe!hJ>n"D>!A0($h:g> (Ш|H@H@jR@hjp` |o0<@R@@0(P"(<f"ҨRJhRkVmV`VnN"(VRhP`D<f"ҨZJhZk^m.`^n&"(^RhP`<fҨbJhbkJk`Jnr!A (fg(JhngShn`"(ҨjlDn"Dj!A0(Phfg$ (ШH@hjp`<op@JhpjXSPfTBhrJhfPA|`LFR_PRATBLFR_NAMTFLFR_NRATJLFR_DELANNFR_ENVPNFR_ARATRNFR_AVALVNFR_DRATZNFR_DVAL^NFR_RRATbLNFR_AMTfLNFR_RATjLNFR_DELnPITCHpPRIORrVOL_ACCtLVOL_ACCxFR_ACC|LFR_ACCNFR_ACCLNFR_ACCSNDSIZATTACKDECAYSUSTAINRELEASE_sint_on\_sint_of_gi_rw_trap9_isound_insave_arevcloop*endloop.vedVendveverplvado_voldo_lvdo_lv1enddo_lvfedo_vol1do_vol2fed$fea1endfehfea2ferLfed1. JGm|o^BG`RG|l0 @"|Jpf|f809rylB@`p>0 @"|00ryl0`p>0(@0,rnop`P>aT6f0`@0&@T|`6RF|8m9np9nrB)@)@|)@)@)@x)@tJlmlBEJnm4`n  nln`n  nm0n9P>W0@?NT0,@>0@?RWNT`z0eB)@:9@$JlmBD>?<NT`x0dB)@f9@P0G"|>?0W?<NXJnm9nJlf)|t>?PWNT80JL8N^NuNVJnm@ nn80.м @p1@r2.Ҽ"A2BW?.PWNTN^NuNVJnmH nn@0. @"|Jpg*0.м @00.м @1|pN^NuNV0. @"|00rN^NuNVBn` >a0Rn nmN^NuNV.?<&NTaN^NuNVa.?<&NTN^Nu M / haw GGp1S$~Z8{fR?- wqjd_YTPKGC?<852/-*(&$" #4EVgx_snd_xbios_sint_of_sint_on_gi_rw_freqs_mask_snd_on~~snd_on~sndptr ~voice~volume~pitch~priorit~p ~i~tone~noise~dur~bufp L10000L2xL5 L6L4L10001:L3:L7xL10002RL10004TL10005tL10007vL8L1_stop_snL9L12L13L11L10L14\L15,L18L17L16L21L20 L19L22lL23L24L25L26~~stop_s~voiceL288L278_snd_off<~~snd_of<~voiceL30L31L29_get_pri~~get_pr~voiceL32_init_sn~~init_s~iL36L37L35L34L33_div15_install~~instalL38_remove_~~removeL39$$$$$$   `08 #NN/9Nu#NM/9Nu#NA/9Nu_gemdos _bios_xbiossaveretL`F, o"h###,Oc.N//Bg?<JNA Bb3NNNVN N^NuNVN N^NuNV?.?. ?. ?./.N N^ _O NNV?.N @N^ _ONNV?.N N^ _ONNVN N^NuNV?.N N^ _ONNV?./. ?<=NAN^ _ONNV?.?<>NAN^ _ONNV/./. ?.?<?NAN^ _O NMAKE_PATH ?Hz></,HNVA-HPNp=@"np)=@0.nn8><><"n0.2|CO$n2.Ct2Rn`><"n$np*R@2|COr><N^,_X> _PNGET_SND ?Hz></,HNVA-HPNHnHyN><HyBgN3!><09!J@k<><><?9!pp/"n/ N#><?9!N~3"><><N^,_X> _ONA#A0B1|A01|><NJ@kn><><><CE pQ><A O"Op?"QHyPN><CE pQ><A O"Op?"QHyN><CRE pQ><A O"Op?"QHy4Nb><Hy HyN><><N><><N><><><><><Hy?<CE+p*Q><AO"Op?"QBgNL3!><HyP?<CE1p0Q><AO"Op?"QBgNL3!><><><HyP?<ChEpQ><AO"Op?"QBgNL3!><><><><Hy4?<CE3p2Q><AO"Op?"QBgNL3!><><><?9!N<?9!N3!><C0E!p Q><AO"Op?"QBgNL3!><><><Hy4?<CE+p*Q><AO"Op?"QBgNL3!><HyP?9!?<?<CE!p Q><AO"Op?"QBgNL3!><Hy4?< CxE4p3Q>< AO"Op?"QBgNL3!>< ?9!Nv><><N><Nd><><HyN\N[1][This sound will continue| indefinitely...][ OK ][2][Ready for last demo...][ OK ][2][Ready to interrupt with DRWHO...][ OK ][1][Waiting for release...][ OK ][1][This sound will continue| indefnitely...][ OK ][1][Again, but louder...][ OK ][1][This sound is| another sound effect...][ OK ][1][This sound is a| sound effect...][ OK ]A:\PASCAL\SAMPLE.SNDA:\PASCAL\DRNOISE.SNDA:\PASCAL\DRWHO.SNDNVH?*n>. JGm|o^BG`RG|l0 @"|#fJpf|f809#ذy$dlB@`p>0 @"|#f00ry$l0`p>0(@#f0,rnop`P>aT6f0`@0&@#fT|`6RF|8m9np9nrB)@)@|)@)@)@x)@tJlmlBEJnm4`n  nln`n  nm0nF9P>W0@?NT0,@>0@?RWNT`z0eB)@:9@$JlmBD>?<NT`x0dB)@f9@P0G"|>?0W?<NXJnm9nJlf)|t>?PWNT80JL8N^NuNVJnm@ nn80.м#f @p1@r2.Ҽ#f"A2BW?.PWNTN^NuNVJnmH nn@0. @"|#fJpg*0.м#f @00.м#f @1|pN^NuNV0. @"|#f00rN^NuNVBn` >a0Rn nmN^NuNV.h?<&NPTaN^NuNVa.?<&NTN^NuH$y y"|t@||JPg0("(t<fҨ m>"<Rh`2<fҨn""(Rh`<fҨJn r1A0!At (g(Jh"gSh"`"(xҨlDn"D!Ax0(hg00(@02"(tҨxjp`H@|opP@0($"(|<f"Ҩ&Jh&k*mV`*nN"(*Rh$`D<f"Ҩ.Jh.k2m.`2n&"(2Rh$`<fҨ6Jh6kJk`Jnr!A| (:gBJhNgShN`6"(>kҨd!hB>m` (FҨe!hJ>n"D>!A0($h:g> (Ш|H@H@jR@hjp` |o0<@R@@0(P"(<f"ҨRJhRkVmV`VnN"(VRhP`D<f"ҨZJhZk^m.`^n&"(^RhP`<fҨbJhbkJk`Jnr!A (fg(JhngShn`"(ҨjlDn"Dj!A0(Phfg$ (ШH@hjp`<op@JhpjXSPfTBhrJhfPA|`3|NAXNu _ hNVf 0(gr"OD@Hd2S@k "Q` _"ye HyNN##b##^ .f -|`-| nNн#^f y#bNStack overruns heap09Nu _3NByNu M / haw GGp1S$~Z8{fR?- wqjd_YTPKGC?<852/-*(&$" #4EVgx[3][4][ Abort ]Copyright 1986, CCD and OSS, Inc.    -. "   "6      .t**0( 4  @  $ V "    8@F D"2 T &( 0&  >        t  ` $ o"h###,Oc.N//Bg?<JNA Bb3 NNNVNN^NuNVNN^NuNV?.?. ?. ?./.NN^ _O NNV?.NN^ _ONNV?.NN^ _ONNVNN^NuNV?.NN^ _ONNV?./. ?<=NAN^ _ONNV?.?<>NAN^ _ONNV/./. ?.?<?NAN^ _O NMAKE_PATH ?Hz></,HNVA-HPNp=@"np)=@0.nn8><><"n0.2|CO$n2.Ct2Rn`><"n$np*R@2|COr><N^,_X> _PNGET_SND ?Hz></,HNVA-HPNHnHyN><HyBgN3 ><09 J@k<><><?9 pp/"n/ N#><?9 N~3"><><N^,_X> _ONA#A0B1|A01|><NJ@kn><><><CEpQ><AO"Op?"QHyrN><CEpQ><AO"Op?"QHyN><CREpQ><AO"Op?"QHyVNb><HyHyN><><N><><N><><><><><Hy?<CE+p*Q><AO"Op?"QBgN3><Hyr?<CE1p0Q><AO"Op?"QBgN3><><><Hyr?<ChEpQ><AO"Op?"QBgN3><><><><HyV?<CE3p2Q><AO"Op?"QBgN3><><><?9N<?9N3><C0E!p Q><AO"Op?"QBgN3><><><HyV?<CE+p*Q><AO"Op?"QBgN3><Hyr?9?<?<CE!p Q><AO"Op?"QBgN3><HyV?< CxE4p3Q>< AO"Op?"QBgN3>< ?9Nv><><N><N><><HyNN[1][This sound will continue| indefinitely...][ OK ][2][Ready for last demo...][ OK ][2][Ready to interrupt with DRWHO...][ OK ][1][Waiting for release...][ OK ][1][This sound will continue| indefnitely...][ OK ][1][Again, but louder...][ OK ][1][This sound is| another sound effect...][ OK ][1][This sound is a| sound effect...][ OK ]A:\PASCAL\SAMPLE.SNDA:\PASCAL\DRNOISE.SNDA:\PASCAL\DRWHO.SNDbssanfheapheap0basepagedbugflag mainexitdbugini_install_remove__snd_on_snd_off_stop_sn_init_sn_get_pristackchkINIT_GEMDO_ALERTEXIT_GEMclosedbugend4<DLT\dl t t| .  C t#..  C tCONFIG TOS Mt $ MDISK PRG Pt '(SPOOL PRG St )vb`P:NBNA#PNA/9PNuNV.T?< N T.W?< N T.{?< N T.?< N T.?< N T.?< N T.?< N T.?< N T`>N |=@|1m n3n n1fN n2fN n3f$. ?< N TN^NuNV. ?< N T`>N || fN^NuNVBn`. nH"n HA@R RDgp`Rn nmB@`N^NuNVBn`"0. =@ nH|nR n 0m n 9o0.`N^NuNVBn>N |=@ n0mP n9nF nm>?<N T`$>?<N T0.2n@Rn` nfVJng:>?<N T> ?<N T>?<N TSn`>?<N T`R n fH> ?<N T0nB(.N=@ n o 0< `0.``N^NuNV.#?< N T.&?< N T>/<=?<=N \=@l.G?< N TN`h./<*?.?<?N P|*f.e/NDXJ@g.>?<>N T.l?< N TN`BW?.B?<BN P.?< N T`>N |_=@|Dm nPn>?<N T0.|=@.?< N TN=@./<*?.?<@N P|*g*.?< N T.?< N T`.A?< N T>?<>N TNN^NuNV.f?< N T.i?< N T>/<?<=N \=@l.?< N TN`./<*?.?<?N P|*f./NDXJ@g.>?<>N T.?< N TN`BW?.B?<BN P.?< N TNHr -@./<*?.?<@N P|*g*. ?< N T. 9?< N T`. d?< N T>?<>N TNN^NuEMDISK/SPOOL configuration program (c) 1986 MichTron, Pontiac, MI Program By Timothy Purves 1. Config MDISK 2. Config SPOOL 3. Exit Program Selection: E Press p RETURN q EMDISK configuration mdisk.prg Cannot open p MDISK.PRG qMDISK File p MDISK.PRG q is not version 2.0 or later Which drive for M-DISK (D-P): Memory to be allocated for M-DISK: Could not save settings to p MDISK.PRG q File may be dammaged revert to BACKUP copy Settings saved in p MDISK.PRG qESPOOL configuration spool.prg Cannot open p SPOOL.PRG qSPOOL File p SPOOL.PRG q is not version 2.0 or later Memory to be allocated for spooler: Could not save settings to p SPOOL.PRG q File may be dammaged revert to BACKUP copy Settings saved in p SPOOL.PRG q         &  480      $         } &  ``MDISK 0/ yC4`"0/ yC.`0/ yCy f IN <NuBNuB0/ r м @"o0/J@fI0/ " <f "<gJ@g2<QS@fBNuJ@g2< QS@f`.Ap"<QQA0A 0B09 м,/∐3 A_ммnJy gмBg/a"-49 |v+A#r#v#~+|r+| v+|2~abHy?< NA\Oa>?<1NAa4BNAAP/?< NA\OHy?< NA\O?<NATO< f`0