ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
sn76489z.c File Reference
#include "../ugbc.h"

Go to the source code of this file.

Macros

#define PROGRAM_FREQUENCY(c, f)
#define PROGRAM_FREQUENCY_V(c, f)
#define PROGRAM_FREQUENCY_SV(c, f)
#define PROGRAM_DURATION(c, d)
#define WAIT_DURATION(c)
#define PROGRAM_PITCH(c, f)
#define PROGRAM_PITCH_V(c, f)
#define PROGRAM_PITCH_SV(c, f)
#define PROGRAM_PULSE(c, p)
#define PROGRAM_PULSE_V(c, p)
#define PROGRAM_PULSE_SV(c, p)
#define PROGRAM_NOISE(c)
#define PROGRAM_NOISE_V(c, p)
#define PROGRAM_NOISE_SV(c)
#define PROGRAM_SAW(c)
#define PROGRAM_SAW_V(c)
#define PROGRAM_SAW_SV(c)
#define PROGRAM_TRIANGLE(c)
#define PROGRAM_TRIANGLE_V(c)
#define PROGRAM_TRIANGLE_SV(c)
#define PROGRAM_SAW_TRIANGLE(c)
#define PROGRAM_SAW_TRIANGLE_V(c)
#define PROGRAM_SAW_TRIANGLE_SV(c)
#define PROGRAM_ATTACK_DECAY(c, a, d)
#define PROGRAM_ATTACK_DECAY_V(c, a, d)
#define PROGRAM_ATTACK_DECAY_SV(c, a, d)
#define PROGRAM_SUSTAIN_RELEASE(c, s, r)
#define PROGRAM_SUSTAIN_RELEASE_V(c, s, r)
#define PROGRAM_SUSTAIN_RELEASE_SV(c, s, r)
#define STOP_FREQUENCY(c)
#define STOP_FREQUENCY_V(c)
#define STOP_FREQUENCY_SV(c)

Functions

void sn76489z_initialization (Environment *_environment)
void sn76489z_finalization (Environment *_environment)
void sn76489z_start (Environment *_environment, int _channels)
void sn76489z_set_volume (Environment *_environment, int _channels, int _volume)
void sn76489z_set_program (Environment *_environment, int _channels, int _program)
void sn76489z_set_parameter (Environment *_environment, int _channels, int _parameter, int _value)
void sn76489z_set_frequency (Environment *_environment, int _channels, int _frequency)
void sn76489z_set_pitch (Environment *_environment, int _channels, int _pitch)
void sn76489z_set_note (Environment *_environment, int _channels, int _note)
void sn76489z_stop (Environment *_environment, int _channels)
void sn76489z_start_var (Environment *_environment, char *_channels)
void sn76489z_set_volume_vars (Environment *_environment, char *_channels, char *_volume)
void sn76489z_set_volume_semi_var (Environment *_environment, char *_channel, int _volume)
void sn76489z_set_program_semi_var (Environment *_environment, char *_channels, int _program)
void sn76489z_set_frequency_vars (Environment *_environment, char *_channels, char *_frequency)
void sn76489z_set_pitch_vars (Environment *_environment, char *_channels, char *_pitch)
void sn76489z_set_note_vars (Environment *_environment, char *_channels, char *_note)
void sn76489z_stop_vars (Environment *_environment, char *_channels)
void sn76489z_music (Environment *_environment, char *_music, int _size, int _loop, int _type)
void sn76489z_set_duration (Environment *_environment, int _channel, int _duration)
void sn76489z_wait_duration (Environment *_environment, int _channel)
void sn76489z_set_duration_vars (Environment *_environment, char *_channel, char *_duration)
void sn76489z_wait_duration_vars (Environment *_environment, char *_channel)

Macro Definition Documentation

◆ PROGRAM_ATTACK_DECAY

#define PROGRAM_ATTACK_DECAY ( c,
a,
d )
Value:
outline1("LD A, $%2.2x", ( a & 0x0f ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( d & 0x0f ) ); \
outline0("LD D, A" ); \
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489PROGAD0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489PROGAD1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489PROGAD2" );
#define outline1(s, a)
Definition ugbc.h:4253

Definition at line 375 of file sn76489z.c.

◆ PROGRAM_ATTACK_DECAY_SV

#define PROGRAM_ATTACK_DECAY_SV ( c,
a,
d )
Value:
outline1("LD A, $%2.2x", ( a & 0x0f ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( d & 0x0f ) ); \
outline0("LD D, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGAD" );

Definition at line 399 of file sn76489z.c.

◆ PROGRAM_ATTACK_DECAY_V

#define PROGRAM_ATTACK_DECAY_V ( c,
a,
d )
Value:
outline1("LD A, %s", a ); \
outline0("LD E, A" ); \
outline1("LD A, %s", d ); \
outline0("LD D, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGAD" );

Definition at line 387 of file sn76489z.c.

◆ PROGRAM_DURATION

#define PROGRAM_DURATION ( c,
d )
Value:
outline1("LD A, $%2.2x", ( d & 0xff ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( ( d >> 8 ) & 0xff ) ); \
outline0("LD D, A" ); \
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489PROGDUR0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489PROGDUR1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489PROGDUR2" );

Definition at line 163 of file sn76489z.c.

◆ PROGRAM_FREQUENCY

#define PROGRAM_FREQUENCY ( c,
f )
Value:
outline1("LD A, $%2.2x", ( f & 0xff ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( ( f >> 8 ) & 0xff ) ); \
outline0("LD D, A" ); \
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489PROGFREQ0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489PROGFREQ1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489PROGFREQ2" );

Definition at line 127 of file sn76489z.c.

◆ PROGRAM_FREQUENCY_SV

#define PROGRAM_FREQUENCY_SV ( c,
f )
Value:
outline1("LD A, $%2.2x", ( f & 0xff ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( ( f >> 8 ) & 0xff ) ); \
outline0("LD D, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489FREQ" );

Definition at line 151 of file sn76489z.c.

◆ PROGRAM_FREQUENCY_V

#define PROGRAM_FREQUENCY_V ( c,
f )
Value:
outline1("LD A, (%s)", f ); \
outline0("LD E, A" ); \
outline1("LD A, (%s)", address_displacement(_environment, f, "1") ); \
outline0("LD D, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489FREQ" );
char * address_displacement(Environment *_environment, char *_address, char *_displacement)

Definition at line 139 of file sn76489z.c.

◆ PROGRAM_NOISE

#define PROGRAM_NOISE ( c)
Value:
outline0("LD A, $82" ); \
outline0("LD B, A" ); \
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489PROGCTR0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489PROGCTR1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489PROGCTR2" );
#define outline0(s)
Definition ugbc.h:4252

Definition at line 255 of file sn76489z.c.

◆ PROGRAM_NOISE_SV

#define PROGRAM_NOISE_SV ( c)
Value:
outline0("LD A, $82" ); \
outline0("LD B, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGCTR" );

Definition at line 275 of file sn76489z.c.

◆ PROGRAM_NOISE_V

#define PROGRAM_NOISE_V ( c,
p )
Value:
outline0("LD A, $82" ); \
outline0("LD B, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGCTR" );

Definition at line 265 of file sn76489z.c.

◆ PROGRAM_PITCH

#define PROGRAM_PITCH ( c,
f )
Value:
outline1("LD A, $%2.2x", ( f & 0xff ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( ( f >> 8 ) & 0xff ) ); \
outline0("LD D, A" ); \
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489PROGFREQ0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489PROGFREQ1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489PROGFREQ2" );

Definition at line 183 of file sn76489z.c.

◆ PROGRAM_PITCH_SV

#define PROGRAM_PITCH_SV ( c,
f )
Value:
outline1("LD A, $%2.2x", ( f & 0xff ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( ( f >> 8 ) & 0xff ) ); \
outline0("LD D, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGFREQ" );

Definition at line 207 of file sn76489z.c.

◆ PROGRAM_PITCH_V

#define PROGRAM_PITCH_V ( c,
f )
Value:
outline1("LD A, (%s)", f ); \
outline0("LD E, A" ); \
outline1("LD A, (%s)", address_displacement(_environment, f, "1") ); \
outline0("LD D, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGFREQ" );

Definition at line 195 of file sn76489z.c.

◆ PROGRAM_PULSE

#define PROGRAM_PULSE ( c,
p )
Value:
outline1("LD A, $%2.2x", ( p & 0xff ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( ( p >> 8 ) & 0xff ) ); \
outline0("LD D, A" ); \
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489PROGPULSE0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489PROGPULSE1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489PROGPULSE2" );

Definition at line 219 of file sn76489z.c.

◆ PROGRAM_PULSE_SV

#define PROGRAM_PULSE_SV ( c,
p )
Value:
outline1("LD A, $%2.2x", ( p & 0xff ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( ( p >> 8 ) & 0xff ) ); \
outline0("LD D, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGPULSE" );

Definition at line 243 of file sn76489z.c.

◆ PROGRAM_PULSE_V

#define PROGRAM_PULSE_V ( c,
p )
Value:
outline1("LD A, (%s)", p ); \
outline0("LD E, A" ); \
outline1("LD A, (%s)", address_displacement(_environment, p, "1") ); \
outline0("LD D, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGPULSE" );

Definition at line 231 of file sn76489z.c.

◆ PROGRAM_SAW

#define PROGRAM_SAW ( c)
Value:
outline0("LD A, $22" ); \
outline0("LD B, A" ); \
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489PROGCTR0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489PROGCTR1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489PROGCTR2" );

Definition at line 285 of file sn76489z.c.

◆ PROGRAM_SAW_SV

#define PROGRAM_SAW_SV ( c)
Value:
outline0("LD A, $22" ); \
outline0("LD B, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGCTR" );

Definition at line 305 of file sn76489z.c.

◆ PROGRAM_SAW_TRIANGLE

#define PROGRAM_SAW_TRIANGLE ( c)
Value:
outline0("LD A, $32" ); \
outline0("LD B, A" ); \
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489PROGCTR0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489PROGCTR1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489PROGCTR2" );

Definition at line 345 of file sn76489z.c.

◆ PROGRAM_SAW_TRIANGLE_SV

#define PROGRAM_SAW_TRIANGLE_SV ( c)
Value:
outline0("LD A, $32" ); \
outline0("LD B, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGCTR" );

Definition at line 365 of file sn76489z.c.

◆ PROGRAM_SAW_TRIANGLE_V

#define PROGRAM_SAW_TRIANGLE_V ( c)
Value:
outline0("LD A, $32" ); \
outline0("LD B, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGCTR" );

Definition at line 355 of file sn76489z.c.

◆ PROGRAM_SAW_V

#define PROGRAM_SAW_V ( c)
Value:
outline0("LD A, $22" ); \
outline0("LD B, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGCTR" );

Definition at line 295 of file sn76489z.c.

◆ PROGRAM_SUSTAIN_RELEASE

#define PROGRAM_SUSTAIN_RELEASE ( c,
s,
r )
Value:
outline1("LD A, $%2.2x", ( s & 0x0f ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( r & 0x0f ) ); \
outline0("LD D, A" ); \
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489PROGSR0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489PROGSR1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489PROGSR2" );

Definition at line 411 of file sn76489z.c.

◆ PROGRAM_SUSTAIN_RELEASE_SV

#define PROGRAM_SUSTAIN_RELEASE_SV ( c,
s,
r )
Value:
outline1("LD A, $%2.2x", ( s & 0x0f ) ); \
outline0("LD E, A" ); \
outline1("LD A, $%2.2x", ( r & 0x0f ) ); \
outline0("LD D, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGSR" );

Definition at line 435 of file sn76489z.c.

◆ PROGRAM_SUSTAIN_RELEASE_V

#define PROGRAM_SUSTAIN_RELEASE_V ( c,
s,
r )
Value:
outline1("LD A, %s", s ); \
outline0("LD E, A" ); \
outline1("LD A, %s", r ); \
outline0("LD D, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGSR" );

Definition at line 423 of file sn76489z.c.

◆ PROGRAM_TRIANGLE

#define PROGRAM_TRIANGLE ( c)
Value:
outline0("LD A, $12" ); \
outline0("LD B, A" ); \
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489PROGCTR0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489PROGCTR1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489PROGCTR2" );

Definition at line 315 of file sn76489z.c.

◆ PROGRAM_TRIANGLE_SV

#define PROGRAM_TRIANGLE_SV ( c)
Value:
outline0("LD A, $12" ); \
outline0("LD B, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGCTR" );

Definition at line 335 of file sn76489z.c.

◆ PROGRAM_TRIANGLE_V

#define PROGRAM_TRIANGLE_V ( c)
Value:
outline0("LD A, $12" ); \
outline0("LD B, A" ); \
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489PROGCTR" );

Definition at line 325 of file sn76489z.c.

◆ STOP_FREQUENCY

#define STOP_FREQUENCY ( c)
Value:
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489STOP0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489STOP1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489STOP2" );

Definition at line 447 of file sn76489z.c.

◆ STOP_FREQUENCY_SV

#define STOP_FREQUENCY_SV ( c)
Value:
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489STOP" );

Definition at line 463 of file sn76489z.c.

◆ STOP_FREQUENCY_V

#define STOP_FREQUENCY_V ( c)
Value:
if ( c == NULL ) { \
outline0("LD A, $7"); \
} else { \
outline1("LD A, (%s)", c ); \
} \
outline0("CALL SN76489STOP" );

Definition at line 455 of file sn76489z.c.

◆ WAIT_DURATION

#define WAIT_DURATION ( c)
Value:
if ( ( c & 0x01 ) ) \
outline0("CALL SN76489WAITDUR0" ); \
if ( ( c & 0x02 ) ) \
outline0("CALL SN76489WAITDUR1" ); \
if ( ( c & 0x04 ) ) \
outline0("CALL SN76489WAITDUR2" );

Definition at line 175 of file sn76489z.c.

Function Documentation

◆ sn76489z_finalization()

void sn76489z_finalization ( Environment * _environment)

Definition at line 87 of file sn76489z.c.

◆ sn76489z_initialization()

void sn76489z_initialization ( Environment * _environment)

Definition at line 51 of file sn76489z.c.

◆ sn76489z_music()

void sn76489z_music ( Environment * _environment,
char * _music,
int _size,
int _loop,
int _type )

Definition at line 1043 of file sn76489z.c.

◆ sn76489z_set_duration()

void sn76489z_set_duration ( Environment * _environment,
int _channel,
int _duration )

Definition at line 1064 of file sn76489z.c.

◆ sn76489z_set_duration_vars()

void sn76489z_set_duration_vars ( Environment * _environment,
char * _channel,
char * _duration )

Definition at line 1082 of file sn76489z.c.

◆ sn76489z_set_frequency()

void sn76489z_set_frequency ( Environment * _environment,
int _channels,
int _frequency )

Definition at line 677 of file sn76489z.c.

◆ sn76489z_set_frequency_vars()

void sn76489z_set_frequency_vars ( Environment * _environment,
char * _channels,
char * _frequency )

Definition at line 962 of file sn76489z.c.

◆ sn76489z_set_note()

void sn76489z_set_note ( Environment * _environment,
int _channels,
int _note )

Definition at line 695 of file sn76489z.c.

◆ sn76489z_set_note_vars()

void sn76489z_set_note_vars ( Environment * _environment,
char * _channels,
char * _note )

Definition at line 1000 of file sn76489z.c.

◆ sn76489z_set_parameter()

void sn76489z_set_parameter ( Environment * _environment,
int _channels,
int _parameter,
int _value )

Definition at line 673 of file sn76489z.c.

◆ sn76489z_set_pitch()

void sn76489z_set_pitch ( Environment * _environment,
int _channels,
int _pitch )

Definition at line 686 of file sn76489z.c.

◆ sn76489z_set_pitch_vars()

void sn76489z_set_pitch_vars ( Environment * _environment,
char * _channels,
char * _pitch )

Definition at line 981 of file sn76489z.c.

◆ sn76489z_set_program()

void sn76489z_set_program ( Environment * _environment,
int _channels,
int _program )

Definition at line 471 of file sn76489z.c.

◆ sn76489z_set_program_semi_var()

void sn76489z_set_program_semi_var ( Environment * _environment,
char * _channels,
int _program )

Definition at line 760 of file sn76489z.c.

◆ sn76489z_set_volume()

void sn76489z_set_volume ( Environment * _environment,
int _channels,
int _volume )

Definition at line 115 of file sn76489z.c.

◆ sn76489z_set_volume_semi_var()

void sn76489z_set_volume_semi_var ( Environment * _environment,
char * _channel,
int _volume )

Definition at line 744 of file sn76489z.c.

◆ sn76489z_set_volume_vars()

void sn76489z_set_volume_vars ( Environment * _environment,
char * _channels,
char * _volume )

Definition at line 724 of file sn76489z.c.

◆ sn76489z_start()

void sn76489z_start ( Environment * _environment,
int _channels )

Definition at line 98 of file sn76489z.c.

◆ sn76489z_start_var()

void sn76489z_start_var ( Environment * _environment,
char * _channels )

Definition at line 710 of file sn76489z.c.

◆ sn76489z_stop()

void sn76489z_stop ( Environment * _environment,
int _channels )

Definition at line 701 of file sn76489z.c.

◆ sn76489z_stop_vars()

void sn76489z_stop_vars ( Environment * _environment,
char * _channels )

Definition at line 1029 of file sn76489z.c.

◆ sn76489z_wait_duration()

void sn76489z_wait_duration ( Environment * _environment,
int _channel )

Definition at line 1073 of file sn76489z.c.

◆ sn76489z_wait_duration_vars()

void sn76489z_wait_duration_vars ( Environment * _environment,
char * _channel )

Definition at line 1102 of file sn76489z.c.