51 switch( variable->
type ) {
166 memset(
string, 0, variable->
size + 1 );
172 for (i=0; i<(variable->
size-1); ++i ) {
185 memset(
string, 0, variable->
size + 1 );
191 for (i=0; i<(variable->
size-1); ++i ) {
224 for (i=0; i<(variable->
size-1); ++i ) {
228 }
else if ( variable->
value ) {
232 for(
int i=0; i<(variable->
size/4)-1; ++i ) {
233 out4(
"$%2.2x, $%2.2x, $%2.2x, $%2.2x, ", (
unsigned int)( variable->
value & 0xff ), (
unsigned int)( ( variable->
value >> 8 ) & 0xff ), (
unsigned int)( ( variable->
value >> 16 ) & 0xff ), (
unsigned int)( ( variable->
value >> 24 ) & 0xff ) );
235 out4(
"$%2.2x, $%2.2x, $%2.2x, $%2.2x", (
unsigned int)( variable->
value & 0xff ), (
unsigned int)( ( variable->
value >> 8 ) & 0xff ), (
unsigned int)( ( variable->
value >> 16 ) & 0xff ), (
unsigned int)( ( variable->
value >> 24 ) & 0xff ) );
241 for(
int i=0; i<(variable->
size/2)-1; ++i ) {
242 out2(
"$%2.2x, $%2.2x,", (
unsigned int)( variable->
value & 0xff ), (
unsigned int)( ( variable->
value >> 8 ) & 0xff ) );
244 out2(
"$%2.2x, $%2.2x", (
unsigned int)( variable->
value & 0xff ), (
unsigned int)( ( variable->
value >> 8 ) & 0xff ) );
264 variable = variable->
next;
283 switch( variable->
type ) {
291 if ( bitCount == 8 ) {
299 variable = variable->
next;
303 if ( bitCount > 0 ) {
333 actual = actual->
next;
342 out1(
"OFFSETS%4.4x: dw ", actual->
size );
343 for( i=0; i<actual->
count; ++i ) {
345 if ( i < ( actual->
count - 1 ) ) {
353 while( actualVariable ) {
359 actualVariable = actualVariable->
next;
379 actual = actual->
next;
388 values[count] = actual->
size;
390 sprintf( address[count],
"fs%4.4xoffsetframe", actual->
size );
391 actual = actual->
next;
407 for (i=0; i<(len-1); ++i ) {
424 outhead0(
"DEFB $01, $1C, $0F, $1C, $00, $00, $FE, $02" );
425 outhead0(
"DEFB $30, $3A, $9E, $37, $31, $38, $35, $00" );
426 outhead0(
"DEFB $00, $00, $78, $A9, $C3, $8D, $EE, $FF" );
427 outhead2(
"DEFB $A9, $%2.2x, $8D, $EF, $FF, $A9, $%2.2x, $8D", startingAddressLo, startingAddressHi );
428 outhead0(
"DEFB $F0, $FF, $A9, $3E, $8D, $00, $FF, $A9" );
429 outhead0(
"DEFB $B0, $8D, $05, $D5, $EA, $EA, $EA, $EA" );
439 deploy( startup, src_hw_c128z_startup2_asm);
448 variable_cleanup_entry( _environment, variable );
449 variable_cleanup_entry_bit( _environment, variable );
453 variable_cleanup_entry( _environment, variable );
454 variable_cleanup_entry_bit( _environment, variable );
459 variable_cleanup_entry( _environment, variable );
460 variable_cleanup_entry_bit( _environment, variable );
466 actual = actual->
next;
473 while( dataSegment ) {
475 if ( dataSegment->
data ) {
481 while( dataDataSegment ) {
483 for(
int j=0; j<dataDataSegment->
size; ++j ) {
484 if (dataDataSegment->
data[j] == 34 || dataDataSegment->
data[j] < 32 || dataDataSegment->
data[j] > 128 ) {
489 if ( dataSegment->
type ) {
492 out1(
"$%2.2x,", (
unsigned char)(dataDataSegment->
size) );
493 for( i=0; i<(dataDataSegment->
size-1); ++i ) {
494 out1(
"$%2.2x,", (
unsigned char)(dataDataSegment->
data[i]&0xff) );
496 out1(
"$%2.2x", (
unsigned char)(dataDataSegment->
data[i]&0xff) );
498 out1(
"$%2.2x,", (
unsigned char)(dataDataSegment->
size) );
499 out1(
"\"%s\"", dataDataSegment->
data );
502 for( i=0; i<(dataDataSegment->
size-1); ++i ) {
503 out1(
"$%2.2x,", (
unsigned char)(dataDataSegment->
data[i]&0xff) );
505 out1(
"$%2.2x", (
unsigned char)(dataDataSegment->
data[i]&0xff) );
508 out1(
"$%2.2x,", (
unsigned char)(dataDataSegment->
type) );
509 for( i=0; i<(dataDataSegment->
size-1); ++i ) {
510 out1(
"$%2.2x,", (
unsigned char)(dataDataSegment->
data[i]&0xff) );
512 out1(
"$%2.2x", (
unsigned char)(dataDataSegment->
data[i]&0xff) );
514 dataDataSegment = dataDataSegment->
next;
515 if ( dataDataSegment ) {
520 dataSegment = dataSegment->
next;
528 while( staticStrings ) {
530 staticStrings = staticStrings->
next;
550 outhead1(
"BANKWINDOWID%2.2x: DB $FF, $FF", i );
556 outhead0(
"BITMASK: defm $01,$02,$04,$08,$10,$20,$40,$80");
557 outhead0(
"BITMASKN: defm $fe,$fd,$fb,$f7,$ef,$df,$bf,$7f");
void vars_emit_constants(Environment *_environment)
void cpu_address_table_build(Environment *_environment, char *_table, int *_values, char *_address[], int _count)
void cpu_address_table_lookup(Environment *_environment, char *_table, int _count)
#define VT_FLOAT_NORMALIZED_POW2_WIDTH(p)
void vars_emit_word(Environment *_environment, char *_name, int _value)
void vars_emit_dword(Environment *_environment, char *_name, int _value)
void vars_emit_number(Environment *_environment, char *_name, int _value)
void vars_emit_byte(Environment *_environment, char *_name, int _value)
void buffered_prepend_output(Environment *_environment)
char * escape_newlines(char *_string)
void buffered_push_output(Environment *_environment)
void variable_cleanup(Environment *_environment)
Emit source and configuration lines for variables.
char BANK_TYPE_AS_STRING[][16]
Description of BANK TYPE, in readable format.
#define DSTRING_DEFAULT_SPACE
void generate_cgoto_address_table(Environment *_environment)
void variable_on_memory_init(Environment *_environment, int _imported_too)
StaticString * valueString
struct _DataDataSegment * next
struct _DataSegment * next
Variable * tempResidentVariables
Bank * banks[BANK_TYPE_COUNT]
int maxExpansionBankSize[MAX_RESIDENT_SHAREDS]
Variable * tempVariables[MAX_PROCEDURES]
DataSegment * dataSegment
FILE * debuggerLabelsFile
TileDescriptors * descriptors
struct _Offsetting * next
OffsettingVariable * variables
struct _Variable * variable
struct _OffsettingVariable * next
struct _StaticString * next
unsigned char * valueBuffer
StaticString * valueString
FloatTypePrecision arrayPrecision
#define out4(s, a, b, c, d)
#define deploy_inplace_preferred(s, e)
#define BANK_TYPE_COUNT
Maximum number of bank types.
#define CRITICAL_INVALID_PROGRAM_START(a)
#define MAX_TEMPORARY_STORAGE
struct _Offsetting Offsetting
#define MAX_RESIDENT_SHAREDS
#define outline3(s, a, b, c)
struct _Variable Variable
Structure of a single variable.
#define deploy_inplace(s, e)
#define outline2(s, a, b)
struct _Environment Environment
Structure of compilation environment.
struct _OffsettingVariable OffsettingVariable
#define outhead4(s, a, b, c, d)
struct _Constant Constant
Structure of a single constant.
struct _StaticString StaticString
Structure of a single (static) string.
#define outhead2(s, a, b)
#define CRITICAL_DATATYPE_UNSUPPORTED(k, v)
struct _DataDataSegment DataDataSegment
struct _DataSegment DataSegment
struct _Bank Bank
Structure of a single bank.
char DATATYPE_AS_STRING[][16]