43#if defined(__d32b__) || defined(__d64b__) || defined(__cocob__) || defined(__coco3b__)
47#define B(code, label) \
49 outline2("IF (((128+%s-(*+2))|(127-%s+(*+2)))&0x8000)",(label),(label)); \
50 if(!strcmp(#code,"RA")) { \
51 outline1("JMP %s", (label)); \
52 } else if(!strcmp(#code,"SR")) { \
53 outline1("JSR %s", (label)); \
55 outline2("LB%s %s", #code, (label)); \
58 outline2("B%s %s", #code, (label)); \
70static void cpu_compare(
Environment * _environment,
char *_source,
char *_destination,
char *_other,
int _positive,
int _bits) {
71 char REG = _bits==16 ?
'X' :
'A';
77 outline2(
"CMP%c %s", REG, _destination);
88 outline1(
"STB %s", _other ? _other : _destination );
92static void cpu_compare_const(
Environment * _environment,
char *_source,
int _destination,
char *_other,
int _positive,
int _bits) {
93 char REG = _bits==16 ?
'X' :
'A';
101 outline2(
"CMP%c #$%4.4x", REG, _destination);
103 outline2(
"CMP%c #$%2.2x", REG, _destination);
119static void cpu_less_than(
Environment * _environment,
char *_source,
char *_destination,
char *_other,
int _equal,
int _signed,
int _bits) {
120 char REG = _bits==16 ?
'X' :
'A';
126 outline2(
"CMP%c %s", REG, _destination);
144 outline1(
"STB %s", _other ? _other : _destination);
147static void cpu_less_than_const(
Environment * _environment,
char *_source,
int _destination,
char *_other,
int _equal,
int _signed,
int _bits) {
148 char REG = _bits==16 ?
'X' :
'A';
154 outline2(
"CMP%c #$%4.4x", REG, _destination);
175static void cpu_less_than_and_branch_const(
Environment * _environment,
char *_source,
int _destination,
char *_label,
int _equal,
int _signed,
int _bits) {
176 char REG = _bits==16 ?
'X' :
'A';
182 outline2(
"CMP%c #$%4.4x", REG, _destination);
202static void cpu_greater_than(
Environment * _environment,
char *_source,
char *_destination,
char *_other,
int _equal,
int _signed,
int _bits ) {
203 char REG = _bits==16 ?
'X' :
'A';
209 outline2(
"CMP%c %s", REG, _destination);
226 outline1(
"STB %s", _other ? _other : _destination );
229static void cpu_greater_than_const(
Environment * _environment,
char *_source,
int _destination,
char *_other,
int _equal,
int _signed,
int _bits ) {
230 char REG = _bits==16 ?
'X' :
'A';
236 outline2(
"CMP%c #$%4.4x", REG, _destination);
392 outline1(
"LDB #$%2.2x", (
unsigned char)(_source&0xff) );
425 outline1(
"LDD #$%4.4x", (
unsigned int)(_source&0xffff) );
462 outline1(
"LDD #$%4.4x", (
unsigned int) (( _source >> 16 ) & 0xffff) );
464 outline1(
"LDD #$%4.4x", (
unsigned int) (( _source ) & 0xffff) );
534void cpu_fill(
Environment * _environment,
char * _address,
char * _bytes,
int _bytes_width,
char * _pattern ) {
540 if ( _bytes_width == 8 ) {
588 if ( _bytes < 256 ) {
620 if ( _bytes < 256 ) {
689 if ( _bytes < 256 ) {
722 if ( _bytes < 256 ) {
766 outline1(
"LDB #$%2.2x" , (
unsigned char)(_value & 0xff) );
815 cpu_compare(_environment,_source, _destination, _other, _positive, 8);
835 cpu_compare_const(_environment,_source, _destination, _other, _positive, 8);
881 outline1(
"CMPB #$%2.2x", _destination);
905 outline1(
"CMPB #$%2.2x", _destination);
930 outline1(
"CMPB #'%c'", _destination);
954 cpu_less_than(_environment, _source, _destination, _other, _equal, _signed, 8);
964 cpu_less_than_const(_environment, _source, _destination, _other, _equal, _signed, 8);
974 cpu_less_than_and_branch_const(_environment, _source, _destination, _other, _equal, _signed, 8);
993 cpu_greater_than(_environment, _source, _destination, _other, _equal, _signed, 8);
1003 cpu_greater_than_const(_environment, _source, _destination, _other, _equal, _signed, 8);
1023 outline1(
"STB %s", _other ? _other : _destination);
1034 outline1(
"ADDB #$%2.2x", ( _destination & 0xff ) );
1055 outline1(
"STB %s", _other ? _other : _destination);
1074 outline1(
"STB %s", _other ? _other : _source);
1099 outline1(
"EORA %s", _destination );
1101 outline1(
"BEQ %ssamesign", label );
1107 outline1(
"BEQ %spositive1", label );
1111 outline1(
"JMP %spositive1b", label );
1118 outline1(
"BEQ %spositive2", label );
1122 outline1(
"JMP %spositive2b", label );
1153 outline0(
"JSR CPUMATHMUL8BITTO16BIT_SIGNED" );
1207 outline1(
"STA %s", _other_remainder);
1217 outline1(
"DEC %s", _other_remainder );
1224 outline1(
"STA %s", _other_remainder );
1231 outline0(
"JSR CPUMATHDIV8BITTO8BIT_SIGNED");
1233 outline0(
"JSR CPUMATHDIV8BITTO8BIT");
1235 outline1(
"STA %s", _other_remainder);
1248 outline1(
"LDA #$%2.2x", (
unsigned char)((_destination) & 0xff) );
1254 outline1(
"LDA #%2.2x", (
unsigned char)((_destination) & 0xff));
1286 outline1(
"STA %s", _other_remainder);
1297 outline1(
"DEC %s", _other_remainder );
1304 outline1(
"STA %s", _other_remainder );
1309 outline1(
"LDA #$%2.2x", (
unsigned char)((_destination) & 0xff));
1311 outline0(
"JSR CPUMATHDIV8BITTO8BIT_SIGNED");
1313 outline0(
"JSR CPUMATHDIV8BITTO8BIT");
1315 outline1(
"STA %s", _other_remainder);
1353 outline1(
"LDB #$%2.2x", (
unsigned char)(_steps & 0xff));
1381 outline0(
"JSR CPUMATHDIV28BIT_SIGNED");
1410 outhead1(
"cpu_math_mul2_const_8bit_%d", _steps);
1411 for(i=0; i<_steps; ++i) {
1418 outline1(
"JSR cpu_math_mul2_const_8bit_%d", _steps );
1436 outline1(
"LDB #$%2.2x", (
unsigned char)(_value & 0xff));
1507 outline1(
"LDD #$%4.4x", (
unsigned int)( _value & 0xffff ) );
1527 cpu_compare( _environment, _source, _destination, _other, _positive, 16 );
1546 cpu_compare_const( _environment, _source, _destination, _other, _positive, 16 );
1583 outline1(
"CMPX #$%4.4x", _destination);
1607 cpu_less_than( _environment, _source, _destination, _other, _equal, _signed, 16 );
1617 cpu_less_than_const( _environment, _source, _destination, _other, _equal, _signed, 16 );
1636 cpu_greater_than( _environment, _source, _destination, _other, _equal, _signed, 16 );
1646 cpu_greater_than_const( _environment, _source, _destination, _other, _equal, _signed, 16 );
1668 outline1(
"STD %s", _other ? _other : _destination);
1679 outline1(
"LDD #$%4.4x", ( _destination & 0xffff ) );
1701 outline1(
"ADDD #%s", _destination);
1702 outline1(
"STD %s", _other ? _other : _destination);
1715 outline1(
"STX %s", _other ? _other : _destination );
1762 outline1(
"EORA %s", _destination );
1764 outline1(
"BEQ %ssamesign", label );
1874 outline0(
"JSR CPUMATHMUL16BITTO32BIT_SIGNED" );
1876 outline0(
"JSR CPUMATHMUL16BITTO32BIT" );
1893 char destination[
MAX_TEMPORARY_STORAGE]; sprintf( destination,
"CPUMATHMULNBITTONBIT%d_DESTINATION", (_bits>>3));
1905 outhead2(
"CPUMATHMULNBITTONBIT%d_SOURCE rzb %d", _bits>>3, _bits>>3 );
1906 outhead2(
"CPUMATHMULNBITTONBIT%d_DESTINATION rzb %d", _bits>>3, _bits>>3 );
1907 outhead2(
"CPUMATHMULNBITTONBIT%d_OTHER rzb %d", _bits>>3, _bits>>3 );
1909 outhead1(
"CPUMATHMULNBITTONBIT%d", _bits>>3);
1911 for( i=0; i<(_bits>>3); ++i ) {
1917 outhead1(
"CPUMATHMULNBITTONBIT%dL1", _bits>>3);
1931 char multiplyByBit0Label[
MAX_TEMPORARY_STORAGE]; sprintf( multiplyByBit0Label,
"%sb%dbit0", label, _bits>>3 );
1936 for( i=1; i<(_bits>>3); ++i ) {
1937 sprintf(
offset,
"%d", i );
1940 outline1(
"LBCC %s", multiplyByBit0Label );
1946 for( i=(_bits>>3)-1; i>-1; --i ) {
1947 sprintf(
offset,
"%d", i );
1956 outhead1(
"%s", multiplyByBit0Label);
1959 sprintf(
offset,
"%d", (_bits>>3)-1 );
1961 for( i=(_bits>>3)-2; i>-1; --i ) {
1962 sprintf(
offset,
"%d", i );
1971 outline1(
"BEQ CPUMATHMULNBITTONBIT%dL1x", (_bits>>3) );
1972 outline1(
"JMP CPUMATHMULNBITTONBIT%dL1", (_bits>>3) );
1973 outhead1(
"CPUMATHMULNBITTONBIT%dL1x", (_bits>>3) );
1986 for( i=0; i<(_bits>>3); ++i ) {
1993 outline1(
"JSR CPUMATHMULNBITTONBIT%d", _bits >> 3 );
1994 for( i=0; i<(_bits>>3); ++i ) {
2018 outline1(
"EORA %s", _destination );
2091 outline1(
"STY %s", _other_remainder );
2134 outline1(
"STY %s", _other_remainder );
2142 outline0(
"JSR CPUMATHDIV16BITTO16BIT_SIGNED" );
2144 outline0(
"JSR CPUMATHDIV16BITTO16BIT" );
2146 outline1(
"STX %s", _other_remainder );
2162 outline1(
"EORA #$%2.2x", (
unsigned char)((_destination>>8)&0xff) );
2187 outline1(
"LDA #$%2.2x", (
unsigned char)((_destination)&0xff) );
2194 outline1(
"LDA #$%2.2x", (
unsigned char)((_destination>>8)&0xff) );
2203 outline1(
"LDD #$%4.4x", _destination );
2235 outline1(
"STY %s", _other_remainder );
2255 outline1(
"LDY #$%4.4x", _destination );
2278 outline1(
"STY %s", _other_remainder );
2284 outline1(
"LDX #$%4.4x", _destination );
2286 outline0(
"JSR CPUMATHDIV16BITTO16BIT_SIGNED" );
2288 outline0(
"JSR CPUMATHDIV16BITTO16BIT" );
2290 outline1(
"STX %s", _other_remainder );
2311 outline1(
"STD %s", _other ? _other : _destination );
2324 outline1(
"STD %s", _other ? _other : _destination );
2444 outline0(
"JSR CPUMATHDIV2CONST16BIT_SIGNED");
2446 outline0(
"JSR CPUMATHDIV2CONST16BIT");
2474 outhead1(
"cpu_math_mul2_const_16bit_%d", _steps);
2475 for(i=0; i<_steps; ++i) {
2482 outline1(
"JSR cpu_math_mul2_const_16bit_%d", _steps);
2501 outline1(
"ANDA #$%2.2x", ( _mask >> 8 ) & 0xff );
2502 outline1(
"ANDB #$%2.2x", ( _mask & 0xff ) );
2544 outline1(
"LDD #$%4.4x", ( _value >> 16 ) & 0xffff );
2546 if((( _value >> 16 ) & 0xffff) != ( _value & 0xffff ))
2547 outline1(
"LDD #$%4.4x", ( _value & 0xffff ) );
2559 outline1(
"DIVQ %s", _destination );
2561 if ( _other_remainder ) {
2562 outline1(
"STD %s", _other_remainder );
2584 char quotient[
MAX_TEMPORARY_STORAGE]; sprintf( quotient,
"CPUMATHDIVNBITTONBIT%d_QUOTIENT", _bits >> 3 );
2585 char divisor[
MAX_TEMPORARY_STORAGE]; sprintf( divisor,
"CPUMATHDIVNBITTONBIT%d_DIVISOR", _bits >> 3 );
2586 char dividend[
MAX_TEMPORARY_STORAGE]; sprintf( dividend,
"CPUMATHDIVNBITTONBIT%d_DIVIDEND", _bits >> 3 );
2587 char result1[
MAX_TEMPORARY_STORAGE]; sprintf( result1,
"CPUMATHDIVNBITTONBIT%d_RESULT1", _bits >> 3 );
2588 char result2[
MAX_TEMPORARY_STORAGE]; sprintf( result2,
"CPUMATHDIVNBITTONBIT%d_RESULT2", _bits >> 3 );
2593 cpu_jump( _environment, afterLabel );
2595 outhead2(
"%s rzb %d", quotient, _bits>>3 );
2596 outhead2(
"%s rzb %d", divisor, _bits>>3 );
2597 outhead2(
"%s rzb %d", dividend, _bits>>3 );
2605 outhead1(
"CPUMATHDIVNBITTONBIT%d", _bits>>3);
2607 for( i=0; i<(_bits>>3); ++i ) {
2620 cpu_and_8bit( _environment, result1, result2, result1 );
2660 cpu_jump( _environment, skip4Label );
2665 cpu_jump( _environment, skipLabel );
2676 for( i=0; i<(_bits>>3); ++i ) {
2683 outline1(
"JSR CPUMATHDIVNBITTONBIT%d", _bits>>3);
2685 for( i=0; i<(_bits>>3); ++i ) {
2714 cpu_jump( _environment, afterLabel );
2716 outhead2(
"%s: rzb %d", data, _bits>>3 );
2722 for( i=0; i<(_bits>>3); ++i ) {
2724 outline1(
"LDA #$%2.2x", (
unsigned char)( (_destination >> (i*8)) & 0xff ) );
2741 sprintf(dividendLabel,
"%sdiv", label );
2745 outline1(
"fdb $%4.4x", _destination );
2748 outline1(
"DIVQ %s", dividendLabel );
2750 if ( _other_remainder ) {
2751 outline1(
"STD %s", _other_remainder );
2785 cpu_compare_16bit( _environment, sourceEffective, destinationEffective, _other, _positive );
2794 cpu_compare_16bit( _environment, sourceEffective, destinationEffective, _other, _positive );
2810 for(
int i=0; i<(_bits>>3); ++i ) {
2816 outline1(
"LDA #$%2.2x", 0xff*_positive);
2824 outline1(
"LDA #$%2.2x", 0xff*(1-_positive));
2844 for( i=0; i<(_bits>>3); ++i ) {
2847 outline1(
"CMPA #$%2.2x", (
unsigned char) ( ( _destination >> (i*8) ) & 0xff ) );
2850 outline1(
"LDA #$%2.2x", 0xff*_positive);
2854 outline1(
"LDA #$%2.2x", 0xff*(1-_positive));
2921 outline1(
"CMPX #$%4.4x", ( ( _destination >> 16 ) & 0xffff ) );
2928 outline1(
"CMPX #$%4.4x", ( _destination & 0xffff ) );
2978 outline1(
"STA %s", _other ? _other : _destination );
2993 outline1(
"CMPX #$%4.4x", ( ( _destination >> 16 ) & 0xffff ) );
2996 outline1(
"CMPX #$%4.4x", ( _destination & 0xffff ) );
3029 for( i=0; i<(_bits>>3); ++i ) {
3035 outline2(
"BEQ %snext%dx", label, i );
3073 for( i=0; i<(_bits>>3); ++i ) {
3076 outline1(
"CMPB #$%2.2x", (
unsigned char)((_destination>>(i*8))&0xff) );
3078 outline2(
"BEQ %snext%dx", label, i );
3147 outline1(
"STB %s", _other ? _other : _destination );
3161 outline1(
"CMPX #$%4.4x", ( _destination >> 16 ) & 0xffff );
3164 outline1(
"CMPX #$%4.4x", ( _destination & 0xffff ) );
3227 outline1(
"ADCD %s", _destination );
3243 for(
int i=0; i<(_bits>>3); ++i ) {
3264 outline1(
"ADDW #$%4.4x", (
unsigned short)( (_destination ) & 0xffff ) );
3265 outline1(
"ADCD #$%4.4x", (
unsigned short)( (_destination >> 16 ) & 0xffff ) );
3319 outline1(
"STD %s", _other ? _other :
",X");
3330 for(
int i=0; i<(_bits)>>3; ++i ) {
3357 outline1(
"LDD #$%4.4x", ( _value ) & 0xffff );
3360 outline1(
"LDD #$%4.4x", ( _value>>16 ) & 0xffff );
3519 outline1(
"LBEQ %snocomplement", label );
3521 outhead1(
"%snocomplement", label );
3525 for(
int i=1; i<(_bits>>3); ++i ) {
3532 outline1(
"LBNE %snocomplement2", label );
3534 outhead1(
"%snocomplement2", label );
3678 for( i=(_bits>>3)-2; i>-1; --i ) {
3703 if(_mask & 0xffff0000) {
3705 outline1(
"ANDA #$%2.2x", ( _mask >> 24 ) & 0xff );
3706 outline1(
"ANDB #$%2.2x", ( _mask >> 16 ) & 0xff );
3711 if(_mask & 0x0000ffff) {
3713 outline1(
"ANDA #$%2.2x", ( _mask >> 8 ) & 0xff );
3714 outline1(
"ANDB #$%2.2x", ( _mask >> 0 ) & 0xff );
3733 outline0(
"JSR CPUCOMBINENIBBLES" );
3751 outline1(
"JSR $%4.4x", _address );
3774 cpu_label( _environment, indirectLabel );
3777 cpu_call( _environment, indirectLabel );
3799 if ( strcmp( _register,
"A" ) == 0 ) {
3801 }
else if ( strcmp( _register,
"B" ) == 0 ) {
3803 }
else if ( strcmp( _register,
"CC" ) == 0 ) {
3808 }
else if ( strcmp( _register,
"DP" ) == 0 ) {
3813 }
else if ( strcmp( _register,
"X" ) == 0 ) {
3815 }
else if ( strcmp( _register,
"Y" ) == 0 ) {
3817 }
else if ( strcmp( _register,
"U" ) == 0 ) {
3819 }
else if ( strcmp( _register,
"S" ) == 0 ) {
3821 }
else if ( strcmp( _register,
"PC" ) == 0 ) {
3826 }
else if ( strcmp( _register,
"D" ) == 0 ) {
3852 outline1(
"LDA #$%2.2x", (
unsigned char)(_value & 0xff ) );
3855 outline1(
"LDB #$%2.2x", (
unsigned char)(_value & 0xff ) );
3858 outline1(
"LDX #$%4.4x", (
unsigned short)(_value & 0xffff ) );
3861 outline1(
"LDY #$%4.4x", (
unsigned short)(_value & 0xffff ) );
3864 outline1(
"LDU #$%4.4x", (
unsigned short)(_value & 0xffff ) );
3867 outline1(
"LDS #$%4.4x", (
unsigned short)(_value & 0xffff ) );
3870 outline1(
"LDD #$%4.4x", (
unsigned short)(_value & 0xffff ) );
3893 outline1(
"LDD %4.4x", ( _value & 0xffff ) );
3895 outline1(
"LDD %4.4x", ( (_value >> 16 ) & 0xffff ) );
4083 srand( time( NULL ) );
4173 outline1(
"CMPA #$%2.2x", _value );
4175 outline1(
"SUBA #$%2.2x", _value );
4404 outline1(
"EORA #$%2.2x", (
unsigned char)((_right >> 8) & 0xff ) );
4405 outline1(
"EORB #$%2.2x", (
unsigned char)((_right) & 0xff ) );
4439 outline1(
"EORA #$%2.2x", (
unsigned char)( (_right >> 24) & 0xff ) );
4440 outline1(
"EORB #$%2.2x", (
unsigned char)( (_right >> 16) & 0xff ) );
4443 outline1(
"EORA #$%2.2x", (
unsigned char)( (_right >> 8) & 0xff ) );
4444 outline1(
"EORB #$%2.2x", (
unsigned char)( (_right) & 0xff ) );
4619 for(
int i=(_bits>>3)-1; i>-1;--i ) {
4678 for(
int i=(_bits>>3)-1; i>-1; --i ) {
4740 outline1(
"LDX #%s", _destination );
4757 outline1(
"LDX #%s", _destination );
4774 outline1(
"LDX #%s", _destination );
4808 outline1(
"LDX #%s", _destination );
4842 outline1(
"LDX #%s", _destination );
4893 outline1(
"LDA #$%2.2x", _equal ? 0xff : 0x00 );
4898 outline1(
"LDA #$%2.2x", _equal ? 0x00 : 0xff );
4917 if ( _size >= 0x7f ) {
4954 outline1(
"LDA #$%2.2x", _equal ? 0xff : 0x00 );
4959 outline1(
"LDA #$%2.2x", _equal ? 0x00 : 0xff );
5045 if ( _size >= 0x7f ) {
5181 if ( _size >= 0x7f ) {
5252 inline( cpu_move_8bit_with_offset )
5495 outline0(
"JSR CPUCONVERTSTRING8BIT" );
5510 outline0(
"JSR CPUCONVERTSTRING16BIT" );
5523 if( _size_size >= 16 ) {
5552 if ( _destination ) {
5583 switch( _bitwidth ) {
5594 outline1(
"LDA #$%2.2x", _position );
5595 outline0(
"JSR CPUBITCHECKEXTENDED" );
5611 switch( _bitwidth ) {
5623 outline0(
"JSR CPUBITCHECKEXTENDED" );
5641 embedded( cpu_bit_inplace, src_hw_6309_cpu_bit_inplace_asm );
5647 outline1(
"LDA #$%2.2x", _position);
5671 embedded( cpu_bit_inplace, src_hw_6309_cpu_bit_inplace_asm );
5692 deploy( numberToString, src_hw_6309_number_to_string_asm );
5703 outline1(
"STD N2STRINGNUMBER+%d", i );
5706 outline0(
"STA N2STRINGNUMBERSIGNED");
5707 outline1(
"BPL %spositive", label );
5713 outline0(
"CLR N2STRINGNUMBERSIGNED");
5721 outline1(
"STD N2STRINGNUMBER+%d", i );
5724 outline0(
"STA N2STRINGNUMBERSIGNED");
5725 outline1(
"BPL %spositive", label );
5733 if ( !_signed )
outline0(
"STA N2STRINGNUMBERSIGNED");
5741 outline1(
"STD N2STRINGNUMBER+%d", i );
5743 if ( _signed && _bits == 8 ) {
5744 outline0(
"STB N2STRINGNUMBERSIGNED");
5745 outline1(
"BPL %spositive", label );
5753 if ( !_signed )
outline0(
"STA N2STRINGNUMBERSIGNED");
5759 outline0(
"STB N2STRINGNUMBERSIGNED");
5760 outline1(
"LBPL %spositive", label );
5779 deploy( bitsToString, src_hw_6309_bits_to_string_asm );
5824 outline1(
"LDB #$%2.2x", (
unsigned char)(_bits&0xff) );
5839 outline1(
"LDA #$%2.2x", _separator?1:0 );
5856 outline1(
"LDA #$%2.2x", _separator?1:0 );
5857 outline1(
"LDB #$%2.2x", (
unsigned char)( _size & 0xff ) );
5873 outline1(
"LDA #$%2.2x", (
unsigned char)( _separator * 3 ) );
5887 deploy( dstring, src_hw_6309_dstring_asm );
5898 deploy( dstring, src_hw_6309_dstring_asm );
5909 deploy( dstring, src_hw_6309_dstring_asm );
5920 deploy( dstring, src_hw_6309_dstring_asm );
5930 deploy( dstring, src_hw_6309_dstring_asm );
5940 deploy( dstring, src_hw_6309_dstring_asm );
5951 deploy( dstring, src_hw_6309_dstring_asm );
5954 outline1(
"LDA #$%2.2X", _resize );
5962 deploy( dstring, src_hw_6309_dstring_asm );
5971 deploy( dstring, src_hw_6309_dstring_asm );
5980 deploy( dstring,src_hw_6309_dstring_asm );
5982 if ( _address || _size ) {
6000 deploy( dstring,src_hw_6309_dstring_asm );
6012 deploy( dstring, src_hw_6309_dstring_asm );
6024 outline1(
"LDB #$%2.2x", (
unsigned char)(_value & 0xff));
6047 if ( _destination ) {
6050 outline1(
"STB %s", _destination );
6062 if ( _destination ) {
6063 outline1(
"STD %s", _destination );
6071 char *out = _destination ?_destination : _source;
6095 for(
int i=0; i<(_bits>>3); ++i ) {
6099 if ( _destination ) {
6105 if ( _destination ) {
6115 deploy( sqr, src_hw_6309_sqr_asm );
6133 outhead1(
"stringscount equ %d", count );
6134 outhead1(
"stringsspace equ %d", (space-1) );
6135 outhead0(
"MAXSTRINGS equ stringscount" );
6136 outhead0(
"DESCRIPTORS rzb stringscount*4");
6137 outhead0(
"WORKING rzb stringsspace" );
6138 outhead0(
"TEMPORARY rzb stringsspace" );
6139 outhead0(
"FREE_STRING fdb stringsspace" );
6147 outhead1(
"PROTOTHREADLC rzb %d", count );
6148 outhead1(
"PROTOTHREADST rzb %d", count );
6152 for(
int i=0; i<count; ++i ) {
6220 outline0(
"JSR PROTOTHREADRESTORE" );
6233 outline0(
"JSR PROTOTHREADSETSTATE" );
6243 outline0(
"JSR PROTOTHREADGETSTATE" );
6264 outline0(
"JSR PROTOTHREADGETADDRESS" );
6285 inline( cpu_msc1_uncompress )
6287 embedded( cpu_msc1_uncompress, src_hw_6309_msc1_asm );
6309 inline( cpu_msc1_uncompress )
6311 embedded( cpu_msc1_uncompress, src_hw_6309_msc1_asm );
6325 inline( cpu_msc1_uncompress )
6327 embedded( cpu_msc1_uncompress, src_hw_6309_msc1_asm );
6341 inline( cpu_msc1_uncompress )
6343 embedded( cpu_msc1_uncompress, src_hw_6309_msc1_asm );
6370void cpu_string_sub(
Environment * _environment,
char * _source,
char * _source_size,
char * _pattern,
char * _pattern_size,
char * _destination,
char * _destination_size ) {
6389 outline1(
"STA %s", _destination_size);
6394static char cpu_BLIT_REGISTER[][9] = {
6401#define cpu_BLIT_REGISTER_COUNT ( sizeof( cpu_BLIT_REGISTER ) / 9 )
6420 return &cpu_BLIT_REGISTER[_register][0];
6422 return &cpu_BLIT_REGISTER[ (_register & 0xff00) >> 8][0];
6431 int registerMask = ( 0x01 << reg );
6433 if ( ! isRegisterUsed ) {
6441 if ( location > 0xff ) {
6446 int registerMask = ( 0x10 << reg );
6448 if ( ! isRegisterUsed ) {
6449 outline1(
"LDA %s", &cpu_BLIT_REGISTER[reg][0] );
6452 return ( ( (reg+1) << 8 ) | location );
6464 int location = _register & 0xff;
6468 int registerMask = ( 0x01 << _register );
6470 if ( isRegisterUsed ) {
6477 int registerMask = 0x10 << ( ( ( _register >> 8 ) & 0xff ) - 1 );
6479 if ( isRegisterUsed ) {
6481 outline1(
"LDA %s", &cpu_BLIT_REGISTER[reg][0] );
6504 char destinationAddress[
MAX_TEMPORARY_STORAGE]; sprintf( destinationAddress,
"%s+%d", _destination, i*4 );
6507 case 1:
case 2:
case 3:
case 4:
6508 case 5:
case 6:
case 7:
case 8:
6509 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4)] & (0xff>>(8-_n)) ) );
6512 case 9:
case 10:
case 11:
case 12:
6513 case 13:
case 14:
case 15:
case 16:
6514 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4)] & (0xff>>(16-_n)) ) );
6515 sprintf( destinationAddress,
"%s+%d", _destination, i*4+1 );
6516 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4+1)] & (0xff) ) );
6518 case 17:
case 18:
case 19:
case 20:
6519 case 21:
case 22:
case 23:
case 24:
6520 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4)] & (0xff>>(24-_n)) ) );
6521 sprintf( destinationAddress,
"%s+%d", _destination, i*4+1 );
6522 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4+1)] & (0xff) ) );
6523 sprintf( destinationAddress,
"%s+%d", _destination, i*4+2 );
6524 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4+2)] & (0xff) ) );
6526 case 25:
case 26:
case 27:
case 28:
6527 case 29:
case 30:
case 31:
case 32:
6529 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4)] & (0xff>>(32-_n)) ) );
6530 sprintf( destinationAddress,
"%s+%d", _destination, i*4+1 );
6531 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4+1)] & (0xff) ) );
6532 sprintf( destinationAddress,
"%s+%d", _destination, i*4+2 );
6533 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4+2)] & (0xff) ) );
6534 sprintf( destinationAddress,
"%s+%d", _destination, i*4+3 );
6535 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4+3)] & (0xff) ) );
6540 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4)] & (0xff) ) );
6541 sprintf( destinationAddress,
"%s+%d", _destination, i*4+1 );
6542 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4+1)] & (0xff) ) );
6543 sprintf( destinationAddress,
"%s+%d", _destination, i*4+2 );
6544 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4+2)] & (0xff) ) );
6545 sprintf( destinationAddress,
"%s+%d", _destination, i*4+3 );
6546 cpu_store_8bit( _environment, destinationAddress, ( _value[n-1-(i*4+3)] & (0xff) ) );
6568 char destinationAddress[
MAX_TEMPORARY_STORAGE]; sprintf( destinationAddress,
"%s+%d", _destination, i*4 );
6571 case 1:
case 2:
case 3:
case 4:
6572 case 5:
case 6:
case 7:
case 8:
6573 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6575 case 9:
case 10:
case 11:
case 12:
6576 case 13:
case 14:
case 15:
case 16:
6577 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6578 sprintf( sourceAddress,
"%s+%d", _source, i*4+1 );
6579 sprintf( destinationAddress,
"%s+%d", _destination, i*4+1 );
6580 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6582 case 17:
case 18:
case 19:
case 20:
6583 case 21:
case 22:
case 23:
case 24:
6584 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6585 sprintf( sourceAddress,
"%s+%d", _source, i*4+1 );
6586 sprintf( destinationAddress,
"%s+%d", _destination, i*4+1 );
6587 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6588 sprintf( sourceAddress,
"%s+%d", _source, i*4+2 );
6589 sprintf( destinationAddress,
"%s+%d", _destination, i*4+2 );
6590 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6592 case 25:
case 26:
case 27:
case 28:
6593 case 29:
case 30:
case 31:
case 32:
6595 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6596 sprintf( sourceAddress,
"%s+%d", _source, i*4+1 );
6597 sprintf( destinationAddress,
"%s+%d", _destination, i*4+1 );
6598 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6599 sprintf( sourceAddress,
"%s+%d", _source, i*4+2 );
6600 sprintf( destinationAddress,
"%s+%d", _destination, i*4+2 );
6601 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6602 sprintf( sourceAddress,
"%s+%d", _source, i*4+3 );
6603 sprintf( destinationAddress,
"%s+%d", _destination, i*4+3 );
6604 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6609 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6610 sprintf( sourceAddress,
"%s+%d", _source, i*4+1 );
6611 sprintf( destinationAddress,
"%s+%d", _destination, i*4+1 );
6612 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6613 sprintf( sourceAddress,
"%s+%d", _source, i*4+2 );
6614 sprintf( destinationAddress,
"%s+%d", _destination, i*4+2 );
6615 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6616 sprintf( sourceAddress,
"%s+%d", _source, i*4+3 );
6617 sprintf( destinationAddress,
"%s+%d", _destination, i*4+3 );
6618 cpu_move_8bit( _environment, sourceAddress, destinationAddress );
6637 sprintf( step,
"%d", stepIndex );
6638 sprintf( step1,
"%d", stepIndex+1 );
6639 sprintf( step2,
"%d", stepIndex+2 );
6640 sprintf( step3,
"%d", stepIndex+3 );
6650 case 32:
case 31:
case 30:
case 29:
6651 case 28:
case 27:
case 26:
case 25:
6657 case 24:
case 23:
case 22:
case 21:
6658 case 20:
case 19:
case 18:
case 17:
6664 case 16:
case 15:
case 14:
case 13:
6665 case 12:
case 11:
case 10:
case 9:
6669 case 8:
case 7:
case 6:
case 5:
6670 case 4:
case 3:
case 2:
case 1:
6692 sprintf( step,
"%d", stepIndex );
6693 sprintf( step1,
"%d", stepIndex+1 );
6694 sprintf( step2,
"%d", stepIndex+2 );
6695 sprintf( step3,
"%d", stepIndex+3 );
6705 case 32:
case 31:
case 30:
case 29:
6706 case 28:
case 27:
case 26:
case 25:
6712 case 24:
case 23:
case 22:
case 21:
6713 case 20:
case 19:
case 18:
case 17:
6719 case 16:
case 15:
case 14:
case 13:
6720 case 12:
case 11:
case 10:
case 9:
6724 case 8:
case 7:
case 6:
case 5:
6725 case 4:
case 3:
case 2:
case 1:
6750 double integral = 0.0;
6751 double fractional = 0.0;
6757 int mantissa_bits = 31;
6761 memset( &right[0], 0,
sizeof(
int ) * 4 );
6768 if ( _value >= 0 ) {
6774 value = fabs( _value );
6783 fractional = modf(value, &integral);
6785 left = (
unsigned int) integral;
6805 while( ( fractional != 1.0 ) && ( steps < mantissa_bits ) ) {
6809 right[3] = right[3] << 1;
6810 right[2] = right[2] << 1;
6811 right[1] = right[1] << 1;
6812 right[0] = right[0] << 1;
6813 if ( ( right[3] & 0x100 ) ) {
6814 right[2] = right[2] | 0x1;
6816 if ( ( right[2] & 0x100 ) ) {
6817 right[1] = right[1] | 0x1;
6819 if ( ( right[1] & 0x100 ) ) {
6820 right[0] = right[0] | 0x1;
6822 right[3] = right[3] & 0xff;
6823 right[2] = right[2] & 0xff;
6824 right[1] = right[1] & 0xff;
6825 right[0] = right[0] & 0x7f;
6827 fractional = fractional * 2;
6829 if ( fractional >= 1.0 ) {
6831 fractional = modf(fractional, &integral);
6856 int mantissa_high_bit = 0x80000000 >> ( 32 - mantissa_bits);
6857 int mantissa_mask = 0xffffffff >> ( 32 - mantissa_bits);
6863 while( left == 0 ) {
6867 if ( ! right[0] && ! right[1] && ! right[2] && ! right[3] ) {
6871 if ( right[0] & 0x40 ) {
6875 right[0] = right[0] << 1;
6876 right[1] = right[1] << 1;
6877 right[2] = right[2] << 1;
6878 right[3] = right[3] << 1;
6879 if ( ( right[1] & 0x100 )) {
6880 right[0] = right[0] | 0x1;
6882 if ( ( right[2] & 0x100 )) {
6883 right[1] = right[1] | 0x1;
6885 if ( ( right[3] & 0x100 )) {
6886 right[2] = right[2] | 0x1;
6888 right[0] = right[0] & 0x7f;
6889 right[1] = right[1] & 0xff;
6890 right[2] = right[2] & 0xff;
6891 right[3] = right[3] & 0xff;
6912 if ( ( right[0] & 0x01 ) ) {
6913 right[1] = right[1] | 0x100;
6915 if ( ( right[1] & 0x01 ) ) {
6916 right[2] = right[2] | 0x100;
6918 if ( ( right[2] & 0x01 ) ) {
6919 right[3] = right[3] | 0x100;
6921 right[0] = right[0] >> 1;
6922 right[1] = right[1] >> 1;
6923 right[2] = right[2] >> 1;
6924 right[3] = right[3] >> 1;
6926 right[0] = right[0] | 0x40;
6933 right[3] = right[3] << 1;
6934 right[2] = right[2] << 1;
6935 right[1] = right[1] << 1;
6936 right[0] = right[0] << 1;
6937 if ( right[3] & 0x100 ) {
6938 right[2] = right[2] | 0x01;
6940 if ( right[2] & 0x100 ) {
6941 right[1] = right[1] | 0x01;
6943 if ( right[1] & 0x100 ) {
6944 right[0] = right[0] | 0x01;
6946 right[3] = right[3] & 0xff;
6947 right[2] = right[2] & 0xff;
6948 right[1] = right[1] & 0xff;
6949 right[0] = right[0] & 0x7f;
6987 if ( _value == 0.0f ) {
6999 _result[0] = exp & 0xff;
7000 _result[1] = (
sign << 7 ) | ( right[0] & 0x7f );
7001 _result[2] = ( right[1] );
7002 _result[3] = ( right[2] );
7003 _result[4] = ( right[3] );
7008 _result[0] = _result[4];
7012 _result[1] = _result[3];
7027 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7039 outline1(
"STB %s", _string_size );
7049 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7072 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7094 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7115 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7136 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7157 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7180 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7213 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7234 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7255 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7274 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7293 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7312 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7331 deploy( fp_vars, src_hw_6309_fp_routines_asm );
7347 for(
int i=0; i<_count; ++i ) {
7348 outline2(
"fdb $%4.4x, %s", _values[i], _address[i] );
7361 outline1(
"BNE LOOKFOR%sNEXT4", _table );
7364 outhead1(
"LOOKFOR%sNEXT4", _table );
7367 outline1(
"CMPU #$%4.4x", (_count+1) * 4 );
7368 outline1(
"BNE LOOKFOR%sL1", _table );
7377 outline1(
"JSR LOOKFOR%s", _table );
7569void cpu_encrypt(
Environment * _environment,
char * _data,
char * _data_size,
char * _key,
char * _key_size,
char * _output ) {
7582void cpu_decrypt(
Environment * _environment,
char * _data,
char * _data_size,
char * _key,
char * _key_size,
char * _output,
char * _result ) {
7597void cpu_hex_to_bin(
Environment * _environment,
char * _value_address,
char * _value_size,
char * _variable_address,
char * _variable_size,
char * _result ) {
7599 deploy( hex2bin, src_hw_6309_hex2bin_asm );
7601 outline1(
"LDX %s", _value_address );
7603 outline1(
"LDY %s", _variable_address );
7604 outline1(
"LDB %s", _variable_size );
7613 deploy( dstring, src_hw_6309_dstring_asm );
7624 deploy( dstring, src_hw_6309_dstring_asm );
7627 outline1(
"LDA #$%2.2x", (
unsigned char)(_value&0xff) );
void cpu_and_32bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_float_single_cos(Environment *_environment, char *_angle, char *_result)
void cpu_protothread_get_state(Environment *_environment, char *_index, char *_state)
void cpu_set_callback(Environment *_environment, char *_callback, char *_label)
void cpu_move_32bit_indirect2(Environment *_environment, char *_value, char *_source)
void cpu_dsfree(Environment *_environment, char *_index)
void cpu_less_than_memory_size(Environment *_environment, char *_source, char *_destination, int _size, char *_result, int _equal)
void cpu_dsresize_size(Environment *_environment, char *_index, int _resize)
void cpu_less_than_and_branch_8bit_const(Environment *_environment, char *_source, int _destination, char *_other, int _equal, int _signed)
void cpu_hex_to_string_calc_string(Environment *_environment, char *_size, int _separator, char *_string_size)
void cpu_move_8bit_signed_32bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_float_fast_from_8(Environment *_environment, char *_value, char *_result, int _signed)
void cpu_in(Environment *_environment, char *_port, char *_value)
void cpu_hex_to_string_calc_string_size(Environment *_environment, int _size, int _separator, char *_string_size)
void cpu_pokew(Environment *_environment, char *_address, char *_source)
void cpu_move_32bit_signed_16bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_combine_nibbles(Environment *_environment, char *_low_nibble, char *_hi_nibble, char *_byte)
char * cpu_blit_register_name(Environment *_environment, int _register)
void cpu_di(Environment *_environment)
void cpu_float_fast_tan(Environment *_environment, char *_angle, char *_result)
void cpu_math_double_32bit(Environment *_environment, char *_source, char *_other, int _signed)
CPU 6309: emit code to double a 32 bit value
void cpu_protothread_restore(Environment *_environment, char *_index, char *_step)
void cpu_msc1_uncompress_indirect_indirect(Environment *_environment, char *_input, char *_output)
void cpu_not_16bit(Environment *_environment, char *_value, char *_result)
void cpu_move_8bit_unsigned_32bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_math_mul2_const_16bit(Environment *_environment, char *_source, int _steps, int _signed)
CPU 6309: emit code to halves for several times a 8 bit value
void cpu_math_div_16bit_to_16bit(Environment *_environment, char *_source, char *_destination, char *_other, char *_other_remainder, int _signed)
void cpu_move_16bit_signed_32bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_move_8bit_unsigned_16bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_compare_32bit_const(Environment *_environment, char *_source, int _destination, char *_other, int _positive)
CPU 6309: emit code to compare two 32 bit values
void cpu_math_mul_16bit_to_32bit(Environment *_environment, char *_source, char *_destination, char *_other, int _signed)
CPU 6309: emit code to multiply two 16 bit values in a 32 bit register
void cpu_swap_32bit(Environment *_environment, char *_left, char *_right)
void cpu_float_fast_from_16(Environment *_environment, char *_value, char *_result, int _signed)
void cpu_bveq(Environment *_environment, char *_value, char *_label)
void cpu_dsresize(Environment *_environment, char *_index, char *_resize)
void cpu_move_nbit_indirect(Environment *_environment, int _n, char *_source, char *_value)
void cpu_math_div_8bit_to_8bit_const(Environment *_environment, char *_source, int _destination, char *_other, char *_other_remainder, int _signed)
void cpu_bit_check_extended(Environment *_environment, char *_value, char *_position, char *_result, int _bitwidth)
void cpu_math_div_32bit_to_16bit(Environment *_environment, char *_source, char *_destination, char *_other, char *_other_remainder, int _signed)
void cpu_math_mul2_const_8bit(Environment *_environment, char *_source, int _steps, int _signed)
CPU 6309: emit code to double for several times a 8 bit value
void cpu_float_fast_div(Environment *_environment, char *_x, char *_y, char *_result)
void cpu_move_32bit_signed_16bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_move_32bit_unsigned_8bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_math_mul2_const_32bit(Environment *_environment, char *_source, int _steps, int _signed)
CPU 6309: emit code to double for several times a 32 bit value
void cpu_uppercase(Environment *_environment, char *_source, char *_size, char *_result)
void cpu_math_add_16bit_with_8bit(Environment *_environment, char *_source, char *_destination, char *_other)
void cpu_address_table_build(Environment *_environment, char *_table, int *_values, char *_address[], int _count)
void cpu_mem_move(Environment *_environment, char *_source, char *_destination, char *_size)
void cpu_set_asmio_indirect(Environment *_environment, int _asmio, char *_value)
void cpu_msc1_uncompress_direct_indirect(Environment *_environment, char *_input, char *_output)
void cpu_math_sub_8bit(Environment *_environment, char *_source, char *_destination, char *_other)
CPU 6309: emit code to subtract two 8 bit values
void cpu_xor_32bit_const(Environment *_environment, char *_left, int _right, char *_result)
void cpu_math_add_32bit(Environment *_environment, char *_source, char *_destination, char *_other)
CPU 6309: emit code to add two 32 bit values
void cpu_protothread_save(Environment *_environment, char *_index, int _step)
void cpu_store_char(Environment *_environment, char *_destination, int _value)
CPU 6309: emit code to store 8 bit
void cpu_math_complement_const_32bit(Environment *_environment, char *_source, int _value)
CPU 6309: emit code to calculate a 32 bit complement of a number
void cpu_store_16bit(Environment *_environment, char *_destination, int _value)
CPU 6309: emit code to store 16 bit
void cpu_poked(Environment *_environment, char *_address, char *_source)
void cpu_and_8bit_const(Environment *_environment, char *_left, int _right, char *_result)
void cpu_dsassign(Environment *_environment, char *_original, char *_copy)
void cpu_math_double_16bit(Environment *_environment, char *_source, char *_other, int _signed)
CPU 6309: emit code to double a 16 bit value
void cpu_math_sub_32bit(Environment *_environment, char *_source, char *_destination, char *_other)
CPU 6309: emit code to subtract two 32 bit values
void cpu_complement2_8bit(Environment *_environment, char *_source, char *_destination)
void cpu_msc1_uncompress_indirect_direct(Environment *_environment, char *_input, char *_output)
void cpu_math_div2_const_8bit(Environment *_environment, char *_source, int _steps, int _signed, char *_remainder)
CPU 6309: emit code to halves for several times a 8 bit value
void cpu_less_than_memory(Environment *_environment, char *_source, char *_destination, char *_size, char *_result, int _equal)
void cpu_dsalloc_size(Environment *_environment, int _size, char *_index)
void cpu_get_asmio_indirect(Environment *_environment, int _asmio, char *_value)
void cpu_move_16bit_unsigned_8bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_float_fast_cos(Environment *_environment, char *_angle, char *_result)
void cpu_protothread_set_state(Environment *_environment, char *_index, int _state)
void cpu_math_div_nbit_to_nbit(Environment *_environment, char *_source, char *_destination, char *_other, char *_other_remainder, int _bits)
void cpu_math_add_8bit(Environment *_environment, char *_source, char *_destination, char *_other)
CPU 6309: emit code to add two 8 bit values
void cpu_float_single_add(Environment *_environment, char *_x, char *_y, char *_result)
void cpu_float_single_sub(Environment *_environment, char *_x, char *_y, char *_result)
void cpu_bit_inplace_8bit_extended_indirect(Environment *_environment, char *_address, char *_position, char *_bit)
void cpu_move_8bit_unsigned_32bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_move_8bit_indirect(Environment *_environment, char *_source, char *_value)
void cpu_string_sub(Environment *_environment, char *_source, char *_source_size, char *_pattern, char *_pattern_size, char *_destination, char *_destination_size)
void cpu_compare_8bit(Environment *_environment, char *_source, char *_destination, char *_other, int _positive)
CPU 6309: emit code to compare two 8 bit values
void cpu_math_and_const_32bit(Environment *_environment, char *_source, int _mask)
CPU 6309: emit code to mask with "and" a value of 32 bit
void cpu_fill_direct_size(Environment *_environment, char *_address, int _bytes, char *_pattern)
CPU 6309: emit code to fill up a memory area
void cpu_addressof_16bit(Environment *_environment, char *_source, char *_destination)
void cpu_dec_16bit(Environment *_environment, char *_variable)
void cpu_dsgc(Environment *_environment)
void cpu_move_16bit_signed_32bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_inc(Environment *_environment, char *_variable)
void cpu_poke_const(Environment *_environment, char *_address, int _source)
void cpu_fill_direct(Environment *_environment, char *_address, char *_bytes, char *_pattern)
CPU 6309: emit code to fill up a memory area
void cpu_jump_indirect(Environment *_environment, char *_value)
void cpu_math_complement_const_8bit(Environment *_environment, char *_source, int _value)
CPU 6309: emit code to calculate an 8 bit complement of a number
void cpu_dsdefine(Environment *_environment, char *_string, char *_index)
void cpu_math_complement_const_16bit(Environment *_environment, char *_source, int _value)
CPU 6309: emit code to calculate a 16 bit complement of a number
void cpu_move_16bit_unsigned_32bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_math_mul2_const_nbit(Environment *_environment, char *_source, int _steps, int _bits)
void cpu_float_single_exp(Environment *_environment, char *_value, char *_result)
void cpu_move_32bit(Environment *_environment, char *_source, char *_destination)
CPU 6309: emit code to move 32 bit
void cpu_fill_size(Environment *_environment, char *_address, int _bytes, char *_pattern)
CPU 6309: emit code to fill up a memory area
void cpu_dsfill(Environment *_environment, char *_string, char *_value)
void cpu_less_than_8bit(Environment *_environment, char *_source, char *_destination, char *_other, int _equal, int _signed)
CPU 6309: emit code to compare two 8 bit values
void cpu_fill_direct_size_value(Environment *_environment, char *_address, int _bytes, int _pattern)
CPU 6309: emit code to fill up a memory area
#define cpu_BLIT_REGISTER_COUNT
void cpu_dec_32bit(Environment *_environment, char *_variable)
void cpu_greater_than_16bit_const(Environment *_environment, char *_source, int _destination, char *_other, int _equal, int _signed)
void cpu_protothread_get_address(Environment *_environment, char *_index, char *_address)
void cpu_math_add_16bit(Environment *_environment, char *_source, char *_destination, char *_other)
CPU 6309: emit code to add two 16 bit values
void cpu_greater_than_16bit(Environment *_environment, char *_source, char *_destination, char *_other, int _equal, int _signed)
CPU 6309: emit code to compare two 8 bit values
void cpu_bit_inplace_8bit(Environment *_environment, char *_value, int _position, int *_bit)
void cpu_math_add_16bit_const(Environment *_environment, char *_source, int _destination, char *_other)
void cpu_protothread_vars(Environment *_environment)
void cpu_poked_const(Environment *_environment, char *_address, int _source)
void cpu_math_add_16bit_with_16bit(Environment *_environment, char *_source, char *_destination, char *_other)
CPU 6309: emit code to add two 16 bit values
void cpu_compare_and_branch_16bit_const(Environment *_environment, char *_source, int _destination, char *_label, int _positive)
CPU 6309: emit code to compare two 8 bit values and jump if they are equal/different
void cpu_move_32bit_indirect(Environment *_environment, char *_source, char *_value)
void cpu_dswrite(Environment *_environment, char *_index)
void cpu_complement2_nbit(Environment *_environment, char *_source, char *_destination, int _bits)
void cpu_greater_than_8bit(Environment *_environment, char *_source, char *_destination, char *_other, int _equal, int _signed)
CPU 6309: emit code to compare two 8 bit values
void cpu_or_16bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_fill(Environment *_environment, char *_address, char *_bytes, int _bytes_width, char *_pattern)
CPU 6309: emit code to fill up a memory area
void cpu_move_16bit_indirect(Environment *_environment, char *_source, char *_value)
void cpu_limit_16bit(Environment *_environment, char *_variable, int _value)
void cpu_move_8bit_indirect_with_offset2(Environment *_environment, char *_source, char *_value, char *_offset)
void cpu_less_than_32bit_const(Environment *_environment, char *_source, int _destination, char *_other, int _equal, int _signed)
void cpu_move_nbit_indirect2(Environment *_environment, int _n, char *_value, char *_source)
void cpu_and_8bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_float_single_log(Environment *_environment, char *_value, char *_result)
void cpu_math_mul_8bit_to_16bit(Environment *_environment, char *_source, char *_destination, char *_other, int _signed)
CPU 6309: emit code to multiply two 8bit values in a 16 bit register
void cpu_compare_16bit_const(Environment *_environment, char *_source, int _destination, char *_other, int _positive)
CPU 6309: emit code to compare two 16 bit values
void cpu_math_sub_16bit(Environment *_environment, char *_source, char *_destination, char *_other)
CPU 6309: emit code to subtract two 16 bit values
void cpu_compare_and_branch_32bit_const(Environment *_environment, char *_source, int _destination, char *_label, int _positive)
CPU 6309: emit code to compare two 32 bit values and jump if they are equal/different
void cpu_store_nbit(Environment *_environment, char *_destination, int _n, int _value[])
CPU 6309: emit code to store n bit
void cpu_mem_move_direct_indirect_size(Environment *_environment, char *_source, char *_destination, int _size)
void cpu_dec_nbit(Environment *_environment, char *_variable, int _bits)
void cpu_math_and_const_16bit(Environment *_environment, char *_source, int _mask)
CPU 6309: emit code to mask with "and" a value of 16 bit
void cpu_move_8bit_indirect2_8bit(Environment *_environment, char *_value, char *_offset, char *_source)
void cpu_float_single_from_16(Environment *_environment, char *_value, char *_result, int _signed)
void cpu_fill_indirect(Environment *_environment, char *_address, char *_size, char *_pattern, int _size_size)
void cpu_mem_move_indirect_direct_size(Environment *_environment, char *_source, char *_destination, int _size)
void cpu_compare_and_branch_char_const(Environment *_environment, char *_source, int _destination, char *_label, int _positive)
CPU 6309: emit code to compare two 8 bit values and jump if they are equal/different
void cpu_less_than_nbit_const(Environment *_environment, char *_source, int _destination, char *_other, int _equal, int _bits)
void cpu_float_fast_sin(Environment *_environment, char *_angle, char *_result)
void cpu_math_mul_nbit_to_nbit(Environment *_environment, char *_source, char *_destination, char *_other, int _bits)
void cpu_label(Environment *_environment, char *_label)
void cpu_dec(Environment *_environment, char *_variable)
void cpu_and_16bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_float_fast_log(Environment *_environment, char *_value, char *_result)
void cpu_move_nbit(Environment *_environment, int _n, char *_source, char *_destination)
CPU cpu6309: emit code to store n bit
void cpu_address_table_call(Environment *_environment, char *_table, char *_value, char *_address)
void cpu_logical_not_8bit(Environment *_environment, char *_value, char *_result)
void cpu_pokew_const(Environment *_environment, char *_address, int _source)
void cpu_logical_and_8bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_or_8bit_const(Environment *_environment, char *_left, int _right, char *_result)
void cpu_math_div2_const_32bit(Environment *_environment, char *_source, int _steps, int _signed, char *_remainder)
CPU 6309: emit code to halves for several times a 32 bit value
void cpu_halt(Environment *_environment)
void cpu_end(Environment *_environment)
void cpu_float_fast_from_double_to_int_array(Environment *_environment, double _value, int _result[])
void cpu_compare_memory(Environment *_environment, char *_source, char *_destination, char *_size, char *_result, int _equal)
void cpu_greater_than_8bit_const(Environment *_environment, char *_source, int _destination, char *_other, int _equal, int _signed)
void cpu_complement2_16bit(Environment *_environment, char *_source, char *_destination)
void cpu_dsinit(Environment *_environment)
void cpu_xor_8bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_protothread_unregister(Environment *_environment, char *_index)
void cpu_decrypt(Environment *_environment, char *_data, char *_data_size, char *_key, char *_key_size, char *_output, char *_result)
void cpu_complement2_32bit(Environment *_environment, char *_source, char *_destination)
void cpu_protothread_register_at(Environment *_environment, char *_index, char *_label)
void cpu_blit_free_register(Environment *_environment, int _register)
void cpu_lowercase(Environment *_environment, char *_source, char *_size, char *_result)
void cpu_float_single_to_8(Environment *_environment, char *_value, char *_result, int _signed)
void cpu_move_16bit(Environment *_environment, char *_source, char *_destination)
CPU 6309: emit code to move 16 bit
void cpu_move_8bit_with_offset2(Environment *_environment, char *_source, char *_value, char *_offset)
void cpu_out(Environment *_environment, char *_port, char *_value)
void cpu_move_16bit_unsigned_8bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_blit_finalize(Environment *_environment)
void cpu_encrypt(Environment *_environment, char *_data, char *_data_size, char *_key, char *_key_size, char *_output)
void cpu_bneq(Environment *_environment, char *_label)
CPU 6309: emit code to make long conditional jump
void cpu_compare_nbit_const(Environment *_environment, char *_source, int _destination, char *_other, int _positive, int _bits)
void cpu_move_16bit_indirect2(Environment *_environment, char *_value, char *_source)
void cpu_float_fast_cmp(Environment *_environment, char *_x, char *_y, char *_result)
void cpu_math_double_8bit(Environment *_environment, char *_source, char *_other, int _signed)
CPU 6309: emit code to double a 8 bit value
void cpu_float_fast_mul(Environment *_environment, char *_x, char *_y, char *_result)
void cpu_bits_to_string(Environment *_environment, char *_number, char *_string, char *_string_size, int _bits, char *_zero, char *_one)
void cpu_dsalloc(Environment *_environment, char *_size, char *_index)
void cpu_less_than_nbit(Environment *_environment, char *_source, char *_destination, char *_other, int _equal, int _bits)
void cpu_not_32bit(Environment *_environment, char *_value, char *_result)
void cpu_float_single_from_double_to_int_array(Environment *_environment, double _value, int _result[])
void cpu_float_single_to_16(Environment *_environment, char *_value, char *_result, int _signed)
void cpu_greater_than_memory_size(Environment *_environment, char *_source, char *_destination, int _size, char *_result, int _equal)
void cpu_hex_to_string(Environment *_environment, char *_number, char *_string, char *_size, int _separator)
void cpu_or_8bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_move_8bit_indirect2_16bit(Environment *_environment, char *_value, char *_offset, char *_source)
void cpu_math_add_32bit_const(Environment *_environment, char *_source, int _destination, char *_other)
void cpu_move_8bit_indirect_with_offset(Environment *_environment, char *_source, char *_value, int _offset)
void cpu_sqroot(Environment *_environment, char *_number, char *_result)
void cpu_number_to_string(Environment *_environment, char *_number, char *_string, char *_string_size, int _bits, int _signed)
void cpu_greater_than_32bit(Environment *_environment, char *_source, char *_destination, char *_other, int _equal, int _signed)
CPU 6309: emit code to compare two 8 bit values
void cpu_peekd(Environment *_environment, char *_address, char *_target)
void cpu_in_direct(Environment *_environment, char *_port, char *_value)
void cpu_call_indirect(Environment *_environment, char *_value)
void cpu_call(Environment *_environment, char *_label)
void cpu_random_8bit(Environment *_environment, char *_entropy, char *_result)
void cpu_xor_8bit_const(Environment *_environment, char *_left, int _right, char *_result)
void cpu_move_16bit_signed_8bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_mem_move_direct(Environment *_environment, char *_source, char *_destination, char *_size)
void cpu_store_8bit(Environment *_environment, char *_destination, int _value)
CPU 6309: emit code to store 8 bit
void cpu_swap_8bit(Environment *_environment, char *_left, char *_right)
void cpu_float_fast_to_8(Environment *_environment, char *_value, char *_result, int _signed)
void cpu_mem_move_direct2(Environment *_environment, char *_source, char *_destination, char *_size)
void cpu_init(Environment *_environment)
void cpu_dstring_vars(Environment *_environment)
void cpu_protothread_loop(Environment *_environment)
void cpu_float_single_div(Environment *_environment, char *_x, char *_y, char *_result)
void cpu_hex_to_bin(Environment *_environment, char *_value_address, char *_value_size, char *_variable_address, char *_variable_size, char *_result)
void cpu_out_direct(Environment *_environment, char *_port, char *_value)
void cpu_greater_than_32bit_const(Environment *_environment, char *_source, int _destination, char *_other, int _equal, int _signed)
void cpu_protothread_current(Environment *_environment, char *_current)
void cpu_float_fast_to_16(Environment *_environment, char *_value, char *_result, int _signed)
void cpu_mem_move_16bit(Environment *_environment, char *_source, char *_destination, char *_size)
void cpu_compare_32bit(Environment *_environment, char *_source, char *_destination, char *_other, int _positive)
CPU 6309: emit code to compare two 32 bit values
void cpu_set_asmio(Environment *_environment, int _asmio, int _value)
void cpu_jump(Environment *_environment, char *_label)
void cpu_store_8bit_with_offset2(Environment *_environment, char *_source, char *_offset, int _value)
void cpu_move_16bit_unsigned_32bit_signed(Environment *_environment, char *_source, char *_destination)
int cpu_blit_alloc_register(Environment *_environment)
void cpu_move_32bit_signed_8bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_mem_move_size(Environment *_environment, char *_source, char *_destination, int _size)
void cpu_fill_blocks(Environment *_environment, char *_address, char *_blocks, char *_pattern)
CPU 6309: emit code to fill up a memory area
void cpu_bvneq(Environment *_environment, char *_value, char *_label)
void cpu_float_single_mul(Environment *_environment, char *_x, char *_y, char *_result)
void cpu_float_fast_exp(Environment *_environment, char *_value, char *_result)
void cpu_move_16bit_signed_8bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_compare_and_branch_16bit(Environment *_environment, char *_source, char *_destination, char *_label, int _positive)
void cpu_fill_size_value(Environment *_environment, char *_address, int _bytes, int _pattern)
CPU 6309: emit code to fill up a memory area
void cpu_call_addr(Environment *_environment, int _address)
void cpu_math_div_16bit_to_16bit_const(Environment *_environment, char *_source, int _destination, char *_other, char *_other_remainder, int _signed)
void cpu_poke(Environment *_environment, char *_address, char *_source)
void cpu_bit_check(Environment *_environment, char *_value, int _position, char *_result, int _bitwidth)
void cpu_protothread_register(Environment *_environment, char *_label, char *_index)
void cpu_move_32bit_signed_8bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_float_single_to_string(Environment *_environment, char *_x, char *_string, char *_string_size)
void cpu_math_div_nbit_to_nbit_const(Environment *_environment, char *_source, int _destination, char *_other, char *_other_remainder, int _bits)
void cpu_float_single_tan(Environment *_environment, char *_angle, char *_result)
void cpu_nop(Environment *_environment)
void cpu_random_32bit(Environment *_environment, char *_entropy, char *_result)
void cpu_move_32bit_unsigned_16bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_less_than_8bit_const(Environment *_environment, char *_source, int _destination, char *_other, int _equal, int _signed)
void cpu_greater_than_nbit(Environment *_environment, char *_source, char *_destination, char *_other, int _equal, int _bits)
void cpu_prepare_for_compare_and_branch_8bit(Environment *_environment, char *_source)
void cpu_less_than_16bit(Environment *_environment, char *_source, char *_destination, char *_other, int _equal, int _signed)
CPU 6309: emit code to compare two 8 bit values
void cpu_mem_move_direct2_size(Environment *_environment, char *_source, char *_destination, int _size)
void cpu_math_and_const_8bit(Environment *_environment, char *_source, int _mask)
CPU 6309: emit code to mask with "and" a value of 8 bit
void cpu_move_32bit_unsigned_16bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_msc1_uncompress_direct_direct(Environment *_environment, char *_input, char *_output)
void cpu_inc_32bit(Environment *_environment, char *_variable)
void cpu_move_8bit_signed_16bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_mem_move_direct_size(Environment *_environment, char *_source, char *_destination, int _size)
void cpu_float_fast_sub(Environment *_environment, char *_x, char *_y, char *_result)
void cpu_xor_32bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_return(Environment *_environment)
void cpu_move_8bit_indirect2(Environment *_environment, char *_value, char *_source)
void cpu_inc_nbit(Environment *_environment, char *_variable, int _bits)
void cpu_pop(Environment *_environment)
void cpu_math_sub_16bit_with_8bit(Environment *_environment, char *_source, char *_destination, char *_other)
void cpu_random_16bit(Environment *_environment, char *_entropy, char *_result)
void cpu_ei(Environment *_environment)
int cpu_register_decode(Environment *_environment, char *_register)
void cpu_or_32bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_math_div2_const_16bit(Environment *_environment, char *_source, int _steps, int _signed, char *_remainder)
CPU 6309: emit code to halves for several times a 16 bit value
void cpu_convert_string_into_8bit(Environment *_environment, char *_string, char *_len, char *_value)
void cpu_inc_16bit(Environment *_environment, char *_variable)
void cpu_logical_or_8bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_compare_nbit(Environment *_environment, char *_source, char *_destination, char *_other, int _positive, int _bits)
void cpu_address_table_lookup(Environment *_environment, char *_table, int _count)
void cpu_ztoa(Environment *_environment)
void cpu_random(Environment *_environment, char *_entropy)
void cpu_move_32bit_unsigned_8bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_compare_and_branch_8bit(Environment *_environment, char *_source, char *_destination, char *_label, int _positive)
void cpu_execute_compare_and_branch_8bit_const(Environment *_environment, int _destination, char *_label, int _positive)
CPU 6309: emit code to compare two 8 bit values and jump if they are equal/different
void cpu_ctoa(Environment *_environment)
void cpu_move_16bit_indirect2_8bit(Environment *_environment, char *_value, char *_offset, char *_source)
void cpu_float_single_from_8(Environment *_environment, char *_value, char *_result, int _signed)
void cpu_math_sub_nbit(Environment *_environment, char *_source, char *_destination, char *_other, int _bits)
void cpu_float_single_cmp(Environment *_environment, char *_x, char *_y, char *_result)
void cpu_move_8bit_signed_32bit_signed(Environment *_environment, char *_source, char *_destination)
void cpu_math_div2_const_nbit(Environment *_environment, char *_source, int _steps, int _bits, char *_remainder)
void cpu_store_8bit_with_offset(Environment *_environment, char *_destination, int _value, int _offset)
void cpu_busy_wait(Environment *_environment, char *_timing)
void cpu_greater_than_memory(Environment *_environment, char *_source, char *_destination, char *_size, char *_result, int _equal)
void cpu_store_32bit(Environment *_environment, char *_destination, int _value)
CPU 6309: emit code to store 32 bit
void cpu_peekw(Environment *_environment, char *_address, char *_target)
void cpu_flip(Environment *_environment, char *_source, char *_size, char *_destination)
void cpu_move_8bit(Environment *_environment, char *_source, char *_destination)
CPU 6309: emit code to move 8 bit
void cpu_beq(Environment *_environment, char *_label)
CPU 6309: emit code to make long conditional jump
void cpu_compare_16bit(Environment *_environment, char *_source, char *_destination, char *_other, int _positive)
CPU 6309: emit code to compare two 16 bit values
void cpu_peek(Environment *_environment, char *_address, char *_target)
void cpu_float_fast_add(Environment *_environment, char *_x, char *_y, char *_result)
void cpu_convert_string_into_16bit(Environment *_environment, char *_string, char *_len, char *_value)
void cpu_float_single_sin(Environment *_environment, char *_angle, char *_result)
void cpu_not_8bit(Environment *_environment, char *_value, char *_result)
void cpu_math_div_8bit_to_8bit(Environment *_environment, char *_source, char *_destination, char *_other, char *_other_remainder, int _signed)
void cpu_dsdescriptor(Environment *_environment, char *_index, char *_address, char *_size)
void cpu_math_add_nbit(Environment *_environment, char *_source, char *_destination, char *_other, int _bits)
void cpu_compare_8bit_const(Environment *_environment, char *_source, int _destination, char *_other, int _positive)
CPU 6309: emit code to compare two 8 bit values
void cpu_xor_16bit(Environment *_environment, char *_left, char *_right, char *_result)
void cpu_xor_16bit_const(Environment *_environment, char *_left, int _right, char *_result)
void cpu_swap_16bit(Environment *_environment, char *_left, char *_right)
void cpu_compare_and_branch_8bit_const(Environment *_environment, char *_source, int _destination, char *_label, int _positive)
CPU 6309: emit code to compare two 8 bit values and jump if they are equal/different
void cpu_math_div_32bit_to_16bit_const(Environment *_environment, char *_source, int _destination, char *_other, char *_other_remainder, int _signed)
void cpu_greater_than_nbit_const(Environment *_environment, char *_source, int _destination, char *_other, int _equal, int _bits)
void cpu_float_fast_to_string(Environment *_environment, char *_x, char *_string, char *_string_size)
void cpu_less_than_32bit(Environment *_environment, char *_source, char *_destination, char *_other, int _equal, int _signed)
CPU 6309: emit code to compare two 32 bit values
void cpu_dsfill_value(Environment *_environment, char *_string, int _value)
void cpu_dsassign_string(Environment *_environment, char *_string, char *_copy)
void cpu_move_8bit_signed_16bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_move_8bit_unsigned_16bit_unsigned(Environment *_environment, char *_source, char *_destination)
void cpu_compare_memory_size(Environment *_environment, char *_source, char *_destination, int _size, char *_result, int _equal)
void cpu_math_add_8bit_const(Environment *_environment, char *_source, int _destination, char *_other)
void cpu_flip_8bit(Environment *_environment, char *_source, char *_destination)
void cpu_blit_initialize(Environment *_environment)
void cpu_less_than_16bit_const(Environment *_environment, char *_source, int _destination, char *_other, int _equal, int _signed)
enum _CPU6309Stack CPU6309Stack
enum _CPU6309Register CPU6309Register
char * address_displacement(Environment *_environment, char *_address, char *_displacement)
#define DSTRING_DEFAULT_SPACE
#define DSTRING_DEFAULT_COUNT
Variable * decrypt(Environment *_environment, char *_data, char *_key, char *_var)
Emit code for DECRYPT.
Variable * encrypt(Environment *_environment, char *_data, char *_key)
Emit code for ENCRYPT.
Variable * sign(Environment *_environment, char *_value)
Return the sign of a variable.
int cpu_math_mul2_const_16bit_generated[16]
int cpu_math_div_nbit_to_nbit_const[32]
int cpu_math_mul2_const_8bit_generated[8]
int cpu_math_div_nbit_to_nbit[32]
int cpu_math_mul_nbit_to_nbit[32]
NumberConfig numberConfig
ProtothreadConfig protothreadConfig
CpuOptimization cpuOptimization
#define MAX_TEMPORARY_STORAGE
#define CRITICAL_UNSETTABLE_CPU_REGISTER(v)
#define deploy_with_vars(s, e, v)
#define CRITICAL_DEBUG_UNSUPPORTED(v, t)
#define CRITICAL_BLIT_ALLOC_REGISTER_EXHAUSTED()
#define outline2(s, a, b)
struct _Environment Environment
Structure of compilation environment.
#define CRITICAL_BLIT_INVALID_FREE_REGISTER(s, r)
#define CRITICAL_BLIT_ALLOC_MEMORY_EXHAUSTED()
#define CRITICAL_UNKNOWN_CPU_REGISTER()
#define deploy_preferred(s, e)
#define outhead2(s, a, b)