31#if defined(__pc128op__) || defined(__coco__) || defined(__coco3__) || defined(__cocob__) || defined(__coco3b__)
35static unsigned int SOUND_FREQUENCIES[] = {
38 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
39 255, 240, 227, 214, 202, 191, 180, 170, 160, 151,
40 143, 135, 127, 120, 113, 107, 101, 95, 90, 85,
41 80, 75, 71, 67, 63, 60, 56, 53, 50, 47,
42 45, 42, 40, 37, 35, 33, 31, 30, 28, 26,
43 25, 23, 22, 21, 20, 18, 17, 16, 15, 15,
44 14, 13, 12, 11, 11, 10, 10, 9, 8, 8,
45 7, 7, 7, 6, 6, 5, 5, 5, 5, 4,
46 4, 4, 3, 3, 3, 3, 3, 2, 2, 2,
47 2, 2, 2, 2, 1, 1, 1, 1, 1
82 cpu_call( _environment,
"SN76489STARTUP" );
89 cpu_label( _environment,
"SN76489STARTUP" );
94 deploy( sn76489startup2, src_hw_sn76489m_startup2_asm );
101 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
102 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
104 if ( _channels & 0x01 ) {
107 if ( _channels & 0x02 ) {
110 if ( _channels & 0x04 ) {
118 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
119 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
121 outline1(
"LDB #$%2.2x", ( _volume & 0x0f ) );
122 outline1(
"LDA #$%2.2x", ( _channels ) );
127#define PROGRAM_FREQUENCY( c, f ) \
128 outline1("LDU #$%4.4x", ( f ) ); \
129 if ( ( c & 0x01 ) ) \
130 outline0("JSR SN76489PROGFREQ0" ); \
131 if ( ( c & 0x02 ) ) \
132 outline0("JSR SN76489PROGFREQ1" ); \
133 if ( ( c & 0x04 ) ) \
134 outline0("JSR SN76489PROGFREQ2" );
136#define PROGRAM_FREQUENCY_V( c, f ) \
137 outline1("LDU %s", f ); \
139 outline0("LDA #$7"); \
141 outline1("LDA %s", c ); \
143 outline0("JSR SN76489FREQ" );
145#define PROGRAM_FREQUENCY_SV( c, f ) \
146 outline1("LD U #$%4.4x", f ); \
148 outline0("LDA #$7"); \
150 outline1("LDA %s", c ); \
152 outline0("JSR SN76489FREQ" );
154#define PROGRAM_DURATION( c, d ) \
155 outline1("LDU #$%4.4x", ( d ) ); \
156 if ( ( c & 0x01 ) ) \
157 outline0("JSR SN76489PROGDUR0" ); \
158 if ( ( c & 0x02 ) ) \
159 outline0("JSR SN76489PROGDUR1" ); \
160 if ( ( c & 0x04 ) ) \
161 outline0("JSR SN76489PROGDUR2" );
163#define WAIT_DURATION( c ) \
164 if ( ( c & 0x01 ) ) \
165 outline0("JSR SN76489WAITDUR0" ); \
166 if ( ( c & 0x02 ) ) \
167 outline0("JSR SN76489WAITDUR1" ); \
168 if ( ( c & 0x04 ) ) \
169 outline0("JSR SN76489WAITDUR2" );
171#define PROGRAM_PITCH( c, f ) \
172 outline1("LDU $%4.4x", ( f & 0xff ) ); \
173 if ( ( c & 0x01 ) ) \
174 outline0("JSR SN76489PROGFREQ0" ); \
175 if ( ( c & 0x02 ) ) \
176 outline0("JSR SN76489PROGFREQ1" ); \
177 if ( ( c & 0x04 ) ) \
178 outline0("JSR SN76489PROGFREQ2" );
180#define PROGRAM_PITCH_V( c, f ) \
181 outline1("LDU %s", f ); \
183 outline0("LDA #$7"); \
185 outline1("LDA %s", c ); \
187 outline0("JSR SN76489PROGFREQ" );
189#define PROGRAM_PITCH_SV( c, f ) \
190 outline1("LDU #$%4.4x", f); \
192 outline0("LDA #$7"); \
194 outline1("LDA %s", c ); \
196 outline0("JSR SN76489PROGFREQ" );
198#define STOP_FREQUENCY( c ) \
199 if ( ( c & 0x01 ) ) \
200 outline0("JSR SN76489STOP0" ); \
201 if ( ( c & 0x02 ) ) \
202 outline0("JSR SN76489STOP1" ); \
203 if ( ( c & 0x04 ) ) \
204 outline0("JSR SN76489STOP2" );
206#define STOP_FREQUENCY_V( c ) \
208 outline0("LDA #$7"); \
210 outline1("LDA %s", c ); \
212 outline0("JSR SN76489STOP" );
214#define STOP_FREQUENCY_SV( c ) \
216 outline0("LDA #$7"); \
218 outline1("LDA %s", c ); \
220 outline0("JSR SN76489STOP" );
224 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
225 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
431 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
432 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
440 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
441 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
455 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
456 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
464 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
465 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
478 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
479 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
497 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
498 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
512 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
513 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
715 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
716 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
731 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
732 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
747 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
748 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
768 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
769 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
787 outline1(
"LDA #$%2.2x", (
unsigned char)(_bank & 0xff) );
792 outline1(
"LDA #$%2.2x", ( _size>>7 ) & 0xff);
793 outline1(
"LDB #$%2.2x", _size - ( _size>>7 )*256 );
803 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
804 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
812 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
813 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
821 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
822 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
841 deploy( sn76489vars, src_hw_sn76489m_vars_asm );
842 deploy( sn76489startup, src_hw_sn76489m_startup_asm );
void cpu_label(Environment *_environment, char *_label)
void cpu_call(Environment *_environment, char *_label)
Variable * variable_import(Environment *_environment, char *_name, VariableType _type, int _size_or_value)
void variable_global(Environment *_environment, char *_pattern)
#define PROGRAM_DURATION(c, d)
#define PROGRAM_FREQUENCY(c, f)
void sn76489m_wait_duration_vars(Environment *_environment, char *_channel)
void sn76489m_set_duration_vars(Environment *_environment, char *_channel, char *_duration)
void sn76489m_set_pitch(Environment *_environment, int _channels, int _pitch)
void sn76489m_music(Environment *_environment, char *_music, int _size, int _loop, int _type, int _bank)
void sn76489m_set_program(Environment *_environment, int _channels, int _program)
void sn76489m_stop_vars(Environment *_environment, char *_channels)
void sn76489m_set_note(Environment *_environment, int _channels, int _note)
void sn76489m_set_frequency_vars(Environment *_environment, char *_channels, char *_frequency)
void sn76489m_set_parameter(Environment *_environment, int _channels, int _parameter, int _value)
#define STOP_FREQUENCY(c)
void sn76489m_set_program_semi_var(Environment *_environment, char *_channels, int _program)
void sn76489m_set_volume(Environment *_environment, int _channels, int _volume)
void sn76489m_set_note_vars(Environment *_environment, char *_channels, char *_note)
void sn76489m_wait_duration(Environment *_environment, int _channel)
void sn76489m_set_pitch_vars(Environment *_environment, char *_channels, char *_pitch)
void sn76489m_start(Environment *_environment, int _channels)
void sn76489m_initialization(Environment *_environment)
#define PROGRAM_PITCH(c, f)
void sn76489m_start_var(Environment *_environment, char *_channels)
void sn76489m_stop(Environment *_environment, int _channels)
void sn76489m_set_frequency(Environment *_environment, int _channels, int _frequency)
void sn76489m_set_volume_vars(Environment *_environment, char *_channels, char *_volume)
void sn76489m_finalization(Environment *_environment)
void sn76489m_set_duration(Environment *_environment, int _channel, int _duration)
void sn76489m_set_volume_semi_var(Environment *_environment, char *_channel, int _volume)
#define IMF_INSTRUMENT_LEAD_8_BASS_LEAD
#define IMF_INSTRUMENT_MARIMBA
#define IMF_INSTRUMENT_LEAD_6_VOICE
#define IMF_INSTRUMENT_DRAWBAR_ORGAN
#define IMF_INSTRUMENT_FRETLESS_BASS
#define IMF_INSTRUMENT_PAD_1_NEW_AGE
#define IMF_INSTRUMENT_VIOLIN
#define IMF_INSTRUMENT_SYNTH_BASS_1
#define IMF_INSTRUMENT_MELODIC_TOM
#define IMF_INSTRUMENT_REVERSE_CYMBAL
#define IMF_INSTRUMENT_ELECTRIC_BASS_FINGER
#define IMF_INSTRUMENT_HARMONICA
#define IMF_INSTRUMENT_BLOWN_BOTTLE
#define IMF_INSTRUMENT_PAD_3_POLYSYNTH
#define IMF_INSTRUMENT_FX_8_SCI_FI
#define IMF_INSTRUMENT_RECORDER
#define IMF_INSTRUMENT_FX_6_GOBLINS
#define IMF_INSTRUMENT_FX_1_RAIN
#define IMF_INSTRUMENT_SYNTH_VOICE
#define IMF_INSTRUMENT_TENOR_SAX
#define IMF_INSTRUMENT_PICCOLO
#define IMF_INSTRUMENT_LEAD_7_FIFTHS
#define IMF_INSTRUMENT_SLAP_BASS_1
#define IMF_INSTRUMENT_MUSIC_BOX
#define IMF_INSTRUMENT_SOPRANO_SAX
#define IMF_INSTRUMENT_TRUMPET
#define IMF_INSTRUMENT_BIRD_TWEET
#define IMF_INSTRUMENT_PAD_8_SWEEP
#define IMF_INSTRUMENT_CHURCH_ORGAN
#define IMF_INSTRUMENT_HELICOPTER
#define IMF_INSTRUMENT_BRIGHT_ACOUSTIC_PIANO
#define IMF_INSTRUMENT_CELESTA
#define IMF_INSTRUMENT_ACOUSTIC_GUITAR_NYLON
#define IMF_INSTRUMENT_GLOCKENSPIEL
#define IMF_INSTRUMENT_ORCHESTRAL_HARP
#define IMF_INSTRUMENT_BREATH_NOISE
#define IMF_INSTRUMENT_BAG_PIPE
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_JAZZ
#define IMF_INSTRUMENT_ELECTRIC_GRAND_PIANO
#define IMF_INSTRUMENT_SITAR
#define IMF_INSTRUMENT_APPLAUSE
#define IMF_INSTRUMENT_WHISTLE
#define IMF_INSTRUMENT_PERCUSSIVE_ORGAN
#define IMF_INSTRUMENT_HONKY_TONK_PIANO
#define IMF_INSTRUMENT_CHOIR_AAHS
#define IMF_INSTRUMENT_SHANAI
#define IMF_INSTRUMENT_CELLO
#define IMF_INSTRUMENT_FX_3_CRYSTAL
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_MUTED
#define IMF_INSTRUMENT_HARPSICHORD
#define IMF_INSTRUMENT_BRASS_SECTION
#define IMF_INSTRUMENT_ELECTRIC_BASS_PICK
#define IMF_INSTRUMENT_FX_5_BRIGHTNESS
#define IMF_INSTRUMENT_FLUTE
#define deploy_deferred(s, e)
struct _Environment Environment
Structure of compilation environment.
#define IMF_INSTRUMENT_ELECTRIC_GUITAR_CLEAN
#define IMF_INSTRUMENT_ACOUSTIC_BASS
#define IMF_INSTRUMENT_GUITAR_FRET_NOISE
#define IMF_INSTRUMENT_SYNTHSTRINGS_2
#define IMF_INSTRUMENT_PAD_4_CHOIR
#define IMF_INSTRUMENT_LEAD_2_SAWTOOTH
#define IMF_INSTRUMENT_DULCIMER
#define IMF_INSTRUMENT_KOTO
#define IMF_INSTRUMENT_TUBA
#define IMF_INSTRUMENT_GUITAR_HARMONICS
#define IMF_INSTRUMENT_CLAVI
#define IMF_INSTRUMENT_BANJO
#define IMF_INSTRUMENT_SYNTHBRASS_2
#define IMF_INSTRUMENT_LEAD_4_CHIFF
#define IMF_INSTRUMENT_VOICE_OOHS
#define IMF_INSTRUMENT_TANGO_ACCORDION
#define IMF_INSTRUMENT_FX_7_ECHOES
#define IMF_INSTRUMENT_PAD_6_METALLIC
#define IMF_INSTRUMENT_PAD_5_BOWED
#define IMF_INSTRUMENT_GUNSHOT
#define IMF_INSTRUMENT_REED_ORGAN
#define IMF_INSTRUMENT_ORCHESTRA_HIT
#define IMF_INSTRUMENT_SYNTH_DRUM
#define IMF_INSTRUMENT_SEASHORE
#define IMF_INSTRUMENT_OCARINA
#define IMF_INSTRUMENT_TELEPHONE_RING
#define IMF_INSTRUMENT_FX_2_SOUNDTRACK
#define IMF_INSTRUMENT_ACOUSTIC_GUITAR_STEEL
#define IMF_INSTRUMENT_SYNTHSTRINGS_1
#define IMF_INSTRUMENT_MUTED_TRUMPET
#define IMF_INSTRUMENT_PAN_FLUTE
#define IMF_INSTRUMENT_TINKLE_BELL
#define IMF_INSTRUMENT_VIBRAPHONE
#define IMF_INSTRUMENT_KALIMBA
#define IMF_INSTRUMENT_FIDDLE
#define IMF_INSTRUMENT_PAD_7_HALO
#define IMF_INSTRUMENT_TUBULAR_BELLS
#define IMF_INSTRUMENT_LEAD_1_SQUARE
#define IMF_INSTRUMENT_STRING_ENSEMBLE_1
#define IMF_INSTRUMENT_DISTORTION_GUITAR
#define IMF_INSTRUMENT_PAD_2_WARM
#define IMF_INSTRUMENT_ACCORDION
#define IMF_INSTRUMENT_SLAP_BASS_2
#define IMF_INSTRUMENT_LEAD_5_CHARANG
#define IMF_INSTRUMENT_OBOE
#define IMF_INSTRUMENT_STEEL_DRUMS
#define IMF_INSTRUMENT_BASSOON
#define IMF_INSTRUMENT_TIMPANI
#define IMF_INSTRUMENT_ROCK_ORGAN
#define IMF_INSTRUMENT_SHAMISEN
#define IMF_INSTRUMENT_CLARINET
#define IMF_INSTRUMENT_ACOUSTIC_GRAND_PIANO
#define IMF_INSTRUMENT_ALTO_SAX
#define IMF_INSTRUMENT_EXPLOSION
#define IMF_INSTRUMENT_PIZZICATO_STRINGS
#define IMF_INSTRUMENT_WOODBLOCK
#define IMF_INSTRUMENT_XYLOPHONE
#define IMF_INSTRUMENT_AGOGO
#define IMF_INSTRUMENT_SYNTHBRASS_1
#define IMF_INSTRUMENT_LEAD_3_CALLIOPE
#define IMF_INSTRUMENT_STRING_ENSEMBLE_2
#define IMF_INSTRUMENT_SYNTH_BASS_2
#define IMF_INSTRUMENT_ELECTRIC_PIANO2
#define IMF_INSTRUMENT_FRENCH_HORN
#define IMF_INSTRUMENT_TREMOLO_STRINGS
#define IMF_INSTRUMENT_FX_4_ATMOSPHERE
#define IMF_INSTRUMENT_ENGLISH_HORN
#define IMF_INSTRUMENT_BARITONE_SAX
#define IMF_INSTRUMENT_SHAKUHACHI
#define IMF_INSTRUMENT_CONTRABASS
#define IMF_INSTRUMENT_VIOLA
#define IMF_INSTRUMENT_TROMBONE
#define IMF_INSTRUMENT_OVERDRIVEN_GUITAR
#define IMF_INSTRUMENT_ELECTRIC_PIANO1
#define IMF_INSTRUMENT_TAIKO_DRUM