43static void blit_define_bltu(
Environment * _environment,
int _op,
char * _a,
char * _c ) {
48 outline0(
"; bltu C = (2^bpp-1) if A > 0 (threshold)");
55 }
else if ( _op == ( 1 << _environment->
currentModeBW ) + 2 ) {
59 }
else if ( _op == ( 1 << _environment->
currentModeBW ) + 1 ) {
69 unsigned char value = 0;
86static void blit_define_bltb(
Environment * _environment,
int _op,
char * _a,
char * _b,
char * _d ) {
95 }
else if ( _op == 1 ) {
102 }
else if ( _op == 2 ) {
109 }
else if ( _op == 3 ) {
113 }
else if ( _op == 4 ) {
117 }
else if ( _op == 5 ) {
118 outline0(
"; bltb C = A if B>0, 0 if B=0");
141void blit_define(
Environment * _environment,
char * _name,
int _sop,
int _mop,
int _smop,
int _iop,
int _dop,
int _idop,
int _top ) {
146 cpu_jump( _environment, skipLabel );
157 blit_define_bltu( _environment, _sop,
"B",
"H" );
160 blit_define_bltu( _environment, _mop,
"IYH",
"L" );
163 blit_define_bltb( _environment, _smop,
"H",
"L",
"D" );
166 blit_define_bltu( _environment, _iop,
"D",
"H" );
169 blit_define_bltu( _environment, _dop,
"IYL",
"L" );
172 blit_define_bltb( _environment, _idop,
"H",
"L",
"D" );
175 blit_define_bltu( _environment, _top,
"D",
"E" );
186static const char BLIT_SOURCES_REGISTER[][4] = {
202 memset( &_environment->
blit, 0,
sizeof(
Blit ) );
204 _environment->
blit.
name = strdup( _name );
207 cpu_jump( _environment, skipLabel );
218 outline1(
"LD A, %s", &BLIT_SOURCES_REGISTER[_source][0] );
char * cpu_blit_register_name(Environment *_environment, int _register)
void cpu_label(Environment *_environment, char *_label)
void cpu_blit_finalize(Environment *_environment)
void cpu_jump(Environment *_environment, char *_label)
void cpu_return(Environment *_environment)
void cpu_blit_initialize(Environment *_environment)
int variable_exists(Environment *_environment, char *_name)
Variable * variable_resize_buffer(Environment *_environment, char *_destination, int _size)
Resize the (static) size of a buffer.
Variable * variable_define(Environment *_environment, char *_name, VariableType _type, int _value)
Define a variable for the program.
void blit_define(Environment *_environment, char *_name, int _sop, int _mop, int _smop, int _iop, int _dop, int _idop, int _top)
Emit ASM code for BLIT IMAGE [image] AT [int],[int].
void blit_define_compound_binary(Environment *_environment, int _operation, int _operand1, int _operand2, int _result)
void blit_define_compound_unary(Environment *_environment, int _operation, int _operand, int _result)
void blit_define_begin_compound(Environment *_environment, char *_name)
void blit_define_compound_operand_to_register(Environment *_environment, int _register, int _source)
void blit_define_end_compound(Environment *_environment, int _result)
#define MAX_TEMPORARY_STORAGE
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
#define CRITICAL_BLIT_ALREADY_DEFINED(n)
char DATATYPE_AS_STRING[][16]