mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-03-24 15:32:58 +00:00
Working on deprecating lo/hi operators. Closes #667
This commit is contained in:
parent
ff812d6f60
commit
65847f84b3
1
src/main/fragment/mos6502-common/vbuxx=_byte_vwum1.asm
Normal file
1
src/main/fragment/mos6502-common/vbuxx=_byte_vwum1.asm
Normal file
@ -0,0 +1 @@
|
||||
ldx {m1}
|
1
src/main/fragment/mos6502-common/vbuyy=_byte_vwum1.asm
Normal file
1
src/main/fragment/mos6502-common/vbuyy=_byte_vwum1.asm
Normal file
@ -0,0 +1 @@
|
||||
ldy {m1}
|
@ -190,40 +190,22 @@ public class AsmFormat {
|
||||
}
|
||||
// Cast is needed
|
||||
return getAsmConstant(program, new ConstantBinary(new ConstantInteger((long) 0xffffffffL), Operators.BOOL_AND, operand), outerPrecedence, codeScope);
|
||||
} else if(Operators.LOWBYTE.equals(operator)) {
|
||||
SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand);
|
||||
if(SymbolType.BYTE.equals(operandType) || SymbolType.SBYTE.equals(operandType)) {
|
||||
return getAsmConstant(program, operand, outerPrecedence, codeScope);
|
||||
} else if(SymbolType.WORD.equals(operandType) || SymbolType.SWORD.equals(operandType) || operandType instanceof SymbolTypePointer) {
|
||||
return "<" + getAsmConstant(program, operand, outerPrecedence, codeScope);
|
||||
} else if(SymbolType.DWORD.equals(operandType) || SymbolType.SDWORD.equals(operandType)) {
|
||||
return getAsmConstant(program, new ConstantBinary(operand, Operators.BOOL_AND, new ConstantInteger((long) 0xffff)), outerPrecedence, codeScope);
|
||||
} else {
|
||||
throw new CompileError("Operator _lo_ cannot handle " + operand.toString(program));
|
||||
}
|
||||
} else if(Operators.HIBYTE.equals(operator)) {
|
||||
SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand);
|
||||
if(SymbolType.BYTE.equals(operandType) || SymbolType.SBYTE.equals(operandType)) {
|
||||
return getAsmConstant(program, new ConstantInteger(0l), outerPrecedence, codeScope);
|
||||
} else if(SymbolType.WORD.equals(operandType) || SymbolType.SWORD.equals(operandType) || operandType instanceof SymbolTypePointer) {
|
||||
return ">" + getAsmConstant(program, operand, outerPrecedence, codeScope);
|
||||
} else if(SymbolType.DWORD.equals(operandType) || SymbolType.SDWORD.equals(operandType)) {
|
||||
return getAsmConstant(program, new ConstantBinary(operand, Operators.SHIFT_RIGHT, new ConstantInteger((long) 16)), outerPrecedence, codeScope);
|
||||
} else {
|
||||
throw new CompileError("Operator _hi_ cannot handle " + operand.toString(program));
|
||||
}
|
||||
} else if(Operators.BYTE0.equals(operator)) {
|
||||
return operator.getOperator() + "(" + getAsmConstant(program, operand, operator.getPrecedence(), codeScope) + ")";
|
||||
// Parenthesis is never needed since operator "<" has the lowest precedence
|
||||
return operator.getOperator() + getAsmConstant(program, operand, operator.getPrecedence(), codeScope);
|
||||
} else if(Operators.BYTE1.equals(operator)) {
|
||||
return operator.getOperator() + "(" + getAsmConstant(program, operand, operator.getPrecedence(), codeScope) + ")";
|
||||
// Parenthesis is never needed since operator ">" has the lowest precedence
|
||||
return operator.getOperator() + getAsmConstant(program, operand, operator.getPrecedence(), codeScope);
|
||||
} else if(Operators.BYTE2.equals(operator)) {
|
||||
return "<" + "(" + getAsmConstant(program, new ConstantBinary(operand, Operators.SHIFT_RIGHT, new ConstantInteger((long) 16)), outerPrecedence, codeScope) + ")";
|
||||
// Parenthesis is never needed since operator "<" has the lowest precedence
|
||||
return "<" + getAsmConstant(program, new ConstantBinary(operand, Operators.SHIFT_RIGHT, new ConstantInteger((long) 16)), outerPrecedence, codeScope);
|
||||
} else if(Operators.BYTE3.equals(operator)) {
|
||||
return ">" + "(" + getAsmConstant(program, new ConstantBinary(operand, Operators.SHIFT_RIGHT, new ConstantInteger((long) 16)), outerPrecedence, codeScope) + ")";
|
||||
// Parenthesis is never needed since operator ">" has the lowest precedence
|
||||
return ">" + getAsmConstant(program, new ConstantBinary(operand, Operators.SHIFT_RIGHT, new ConstantInteger((long) 16)), outerPrecedence, codeScope);
|
||||
} else if(Operators.WORD0.equals(operator)) {
|
||||
return getAsmConstant(program, new ConstantBinary(operand, Operators.BOOL_AND, new ConstantInteger((long) 0xffff)), outerPrecedence, codeScope);
|
||||
} else if(Operators.WORD1.equals(operator)) {
|
||||
return getAsmConstant(program, new ConstantBinary(new ConstantBinary(operand, Operators.SHIFT_RIGHT, new ConstantInteger((long) 16)), Operators.BOOL_AND, new ConstantInteger((long) 0xffff)), outerPrecedence, codeScope);
|
||||
return getAsmConstant(program, new ConstantBinary(operand, Operators.SHIFT_RIGHT, new ConstantInteger((long) 16)), outerPrecedence, codeScope);
|
||||
} else if(Operators.INCREMENT.equals(operator)) {
|
||||
return getAsmConstant(program, new ConstantBinary(operand, Operators.PLUS, new ConstantInteger((long) 1)), outerPrecedence, codeScope);
|
||||
} else if(Operators.DECREMENT.equals(operator)) {
|
||||
|
@ -54,10 +54,6 @@ public class Operators {
|
||||
public static final OperatorBinary LOGIC_AND = new OperatorLogicAnd(12);
|
||||
public static final OperatorBinary LOGIC_OR = new OperatorLogicOr(13);
|
||||
public static final OperatorBinary ASSIGNMENT = new OperatorAssignment(14);
|
||||
@Deprecated
|
||||
public static final OperatorUnary LOWBYTE = new OperatorGetLow(14);
|
||||
@Deprecated
|
||||
public static final OperatorUnary HIBYTE = new OperatorGetHigh(14);
|
||||
public static final OperatorUnary BYTE0 = new OperatorGetByte0(14);
|
||||
public static final OperatorUnary BYTE1 = new OperatorGetByte1(14);
|
||||
public static final OperatorUnary BYTE2 = new OperatorGetByte2(14);
|
||||
@ -136,10 +132,6 @@ public class Operators {
|
||||
return BOOL_NOT;
|
||||
case "*":
|
||||
return DEREF;
|
||||
case "<":
|
||||
return LOWBYTE;
|
||||
case ">":
|
||||
return HIBYTE;
|
||||
case "byte0":
|
||||
return BYTE0;
|
||||
case "byte1":
|
||||
@ -150,6 +142,8 @@ public class Operators {
|
||||
return BYTE3;
|
||||
case "word0":
|
||||
return WORD0;
|
||||
case "word1":
|
||||
return WORD1;
|
||||
case "&":
|
||||
return ADDRESS_OF;
|
||||
default:
|
||||
|
@ -233,7 +233,6 @@ expr
|
||||
| expr (SHIFT_LEFT | SHIFT_RIGHT ) expr #exprBinary
|
||||
| expr (ASTERISK | DIVIDE | '%' ) expr #exprBinary
|
||||
| expr ( PLUS | MINUS ) expr #exprBinary
|
||||
| (LESS_THAN | GREATER_THAN) expr #exprUnary
|
||||
| expr ( '==' | '!=' | LESS_THAN | '<=' | '>=' | GREATER_THAN ) expr #exprBinary
|
||||
| expr ( '&' ) expr #exprBinary
|
||||
| expr ( '^' ) expr #exprBinary
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -215,8 +215,12 @@ public class Pass2DuplicateRValueIdentification extends Pass2SsaOptimization {
|
||||
if(operator.equals(Operators.LOGIC_NOT)) return true;
|
||||
if(operator.equals(Operators.LOGIC_AND)) return true;
|
||||
if(operator.equals(Operators.LOGIC_OR)) return true;
|
||||
if(operator.equals(Operators.HIBYTE)) return true;
|
||||
if(operator.equals(Operators.LOWBYTE)) return true;
|
||||
if(operator.equals(Operators.BYTE0)) return true;
|
||||
if(operator.equals(Operators.BYTE1)) return true;
|
||||
if(operator.equals(Operators.BYTE2)) return true;
|
||||
if(operator.equals(Operators.BYTE3)) return true;
|
||||
if(operator.equals(Operators.WORD0)) return true;
|
||||
if(operator.equals(Operators.WORD1)) return true;
|
||||
if(operator.equals(Operators.PLUS) && rValue2 instanceof ConstantValue) {
|
||||
final SymbolType type1 = SymbolTypeInference.inferType(getScope(), rValue1);
|
||||
return type1.getSizeBytes() == 1;
|
||||
|
@ -69,10 +69,16 @@ public class Pass4RegisterUpliftPotentialAluAnalysis extends Pass2Base {
|
||||
if(assignment.getOperator() != null && "*idx".equals(assignment.getOperator().getOperator())) {
|
||||
potentialAluVar = findAluPotential(assignment);
|
||||
}
|
||||
if(assignment.getOperator() != null && Operators.LOWBYTE.equals(assignment.getOperator()) && assignment.getrValue1() == null) {
|
||||
if(assignment.getOperator() != null && Operators.BYTE0.equals(assignment.getOperator()) && assignment.getrValue1() == null) {
|
||||
potentialAluVar = findAluPotential(assignment);
|
||||
}
|
||||
if(assignment.getOperator() != null && Operators.HIBYTE.equals(assignment.getOperator()) && assignment.getrValue1() == null) {
|
||||
if(assignment.getOperator() != null && Operators.BYTE1.equals(assignment.getOperator()) && assignment.getrValue1() == null) {
|
||||
potentialAluVar = findAluPotential(assignment);
|
||||
}
|
||||
if(assignment.getOperator() != null && Operators.BYTE2.equals(assignment.getOperator()) && assignment.getrValue1() == null) {
|
||||
potentialAluVar = findAluPotential(assignment);
|
||||
}
|
||||
if(assignment.getOperator() != null && Operators.BYTE3.equals(assignment.getOperator()) && assignment.getrValue1() == null) {
|
||||
potentialAluVar = findAluPotential(assignment);
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@ char* const memHi = (char*)0xff;
|
||||
|
||||
// Prepare MEM pointers for operations using MEM
|
||||
inline void prepareMEM(unsigned int mem) {
|
||||
*memLo = <mem;
|
||||
*memHi = >mem;
|
||||
*memLo = BYTE0(mem);
|
||||
*memHi = BYTE1(mem);
|
||||
}
|
||||
|
||||
// FAC = unsigned int
|
||||
|
@ -26,8 +26,8 @@ void bitmap_init(char* gfx, char* screen) {
|
||||
}
|
||||
char* yoffs = gfx;
|
||||
for(char y : 0..255) {
|
||||
bitmap_plot_ylo[y] = y&$7 | <yoffs;
|
||||
bitmap_plot_yhi[y] = >yoffs;
|
||||
bitmap_plot_ylo[y] = y&$7 | BYTE0(yoffs);
|
||||
bitmap_plot_yhi[y] = BYTE1(yoffs);
|
||||
if((y&$7)==7) {
|
||||
yoffs = yoffs + 40*8;
|
||||
}
|
||||
@ -47,7 +47,7 @@ void bitmap_clear(char bgcol, char fgcol) {
|
||||
void bitmap_plot(unsigned int x, char y) {
|
||||
char* plotter = (char*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] };
|
||||
plotter += ( x & $fff8 );
|
||||
*plotter |= bitmap_plot_bit[<x];
|
||||
*plotter |= bitmap_plot_bit[(char)x];
|
||||
}
|
||||
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
@ -92,7 +92,7 @@ void bitmap_line(unsigned int x1, unsigned int y1, unsigned int x2, unsigned int
|
||||
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
unsigned int abs_u16(unsigned int w) {
|
||||
if(>w&0x80) {
|
||||
if(BYTE1(w)&0x80) {
|
||||
return -w;
|
||||
} else {
|
||||
return w;
|
||||
@ -102,7 +102,7 @@ unsigned int abs_u16(unsigned int w) {
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
unsigned int sgn_u16(unsigned int w) {
|
||||
if(>w&0x80) {
|
||||
if(BYTE1(w)&0x80) {
|
||||
return -1;
|
||||
} else {
|
||||
return 1;
|
||||
|
@ -96,8 +96,8 @@ void plexShowSprite() {
|
||||
plexFreeAdd(ypos);
|
||||
PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]];
|
||||
char xpos_idx = PLEX_SORTED_IDX[plex_show_idx];
|
||||
SPRITES_XPOS[plex_sprite_idx2] = <PLEX_XPOS[xpos_idx];
|
||||
if(>PLEX_XPOS[xpos_idx]!=0) {
|
||||
SPRITES_XPOS[plex_sprite_idx2] = (char)PLEX_XPOS[xpos_idx];
|
||||
if(BYTE1(PLEX_XPOS[xpos_idx])!=0) {
|
||||
*SPRITES_XMSB |= plex_sprite_msb;
|
||||
} else {
|
||||
*SPRITES_XMSB &= (0xff^plex_sprite_msb);
|
||||
|
@ -87,8 +87,8 @@ void print_schar_at(signed char b, char* at) {
|
||||
|
||||
// Print a unsigned int as HEX
|
||||
void print_uint(unsigned int w) {
|
||||
print_uchar(>w);
|
||||
print_uchar(<w);
|
||||
print_uchar(BYTE1(w));
|
||||
print_uchar(BYTE0(w));
|
||||
}
|
||||
|
||||
// Digits used for storing the decimal unsigned int
|
||||
@ -121,14 +121,14 @@ void print_sint_decimal(signed int w) {
|
||||
|
||||
// Print a unsigned int as HEX at a specific position
|
||||
void print_uint_at(unsigned int w, char* at) {
|
||||
print_uchar_at(>w, at);
|
||||
print_uchar_at(<w, at+2);
|
||||
print_uchar_at(BYTE1(w), at);
|
||||
print_uchar_at(BYTE0(w), at+2);
|
||||
}
|
||||
|
||||
// Print a unsigned long as HEX
|
||||
void print_ulong(unsigned long dw) {
|
||||
print_uint(>dw);
|
||||
print_uint(<dw);
|
||||
print_uint(WORD1(dw));
|
||||
print_uint(WORD0(dw));
|
||||
}
|
||||
|
||||
// Digits used for storing the decimal unsigned int
|
||||
@ -142,8 +142,8 @@ void print_ulong_decimal(unsigned long w) {
|
||||
|
||||
// Print a unsigned long as HEX at a specific position
|
||||
void print_ulong_at(unsigned long dw, char* at) {
|
||||
print_uint_at(>dw, at);
|
||||
print_uint_at(<dw, at+4);
|
||||
print_uint_at(WORD1(dw), at);
|
||||
print_uint_at(WORD0(dw), at+4);
|
||||
}
|
||||
|
||||
// Print a signed long as HEX
|
||||
|
@ -4,13 +4,13 @@
|
||||
// Get the value to store into D018 to display a specific screen and charset/bitmap
|
||||
// Optimized for ASM from (char)((((unsigned int)screen&$3fff)/$40)|(((unsigned int)charset&$3fff)/$400));
|
||||
inline char toD018(char* screen, char* gfx) {
|
||||
return (>((((unsigned int)screen&$3fff)*4)))|(((>((unsigned int)gfx))/4)&$f);
|
||||
return BYTE1(((unsigned int)screen&$3fff)*4)|(((BYTE1((unsigned int)gfx))/4)&$f);
|
||||
}
|
||||
|
||||
// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank
|
||||
// Optimized for ASM from %00000011 ^ (char)((unsigned int)gfx/$4000)
|
||||
inline char toDd00(char* gfx) {
|
||||
return %00000011 ^ (>((unsigned int)gfx))/$40;
|
||||
return %00000011 ^ (BYTE1((unsigned int)gfx))/$40;
|
||||
}
|
||||
|
||||
// Get the sprite pointer for a sprite.
|
||||
|
@ -14,8 +14,8 @@ void vpoke(char vbank, char* vaddr, char data) {
|
||||
// Select DATA0
|
||||
*VERA_CTRL &= ~VERA_ADDRSEL;
|
||||
// Set address
|
||||
*VERA_ADDRX_L = <vaddr;
|
||||
*VERA_ADDRX_M = >vaddr;
|
||||
*VERA_ADDRX_L = BYTE0(vaddr);
|
||||
*VERA_ADDRX_M = BYTE1(vaddr);
|
||||
*VERA_ADDRX_H = VERA_INC_0 | vbank;
|
||||
// Set data
|
||||
*VERA_DATA0 = data;
|
||||
@ -30,8 +30,8 @@ char vpeek(char vbank, char* vaddr) {
|
||||
// Select DATA0
|
||||
*VERA_CTRL &= ~VERA_ADDRSEL;
|
||||
// Set address
|
||||
*VERA_ADDRX_L = <vaddr;
|
||||
*VERA_ADDRX_M = >vaddr;
|
||||
*VERA_ADDRX_L = BYTE0(vaddr);
|
||||
*VERA_ADDRX_M = BYTE1(vaddr);
|
||||
*VERA_ADDRX_H = VERA_INC_0 | vbank;
|
||||
// Get data
|
||||
return *VERA_DATA0;
|
||||
@ -47,8 +47,8 @@ void memcpy_to_vram(char vbank, void* vdest, void* src, unsigned int num ) {
|
||||
// Select DATA0
|
||||
*VERA_CTRL &= ~VERA_ADDRSEL;
|
||||
// Set address
|
||||
*VERA_ADDRX_L = <vdest;
|
||||
*VERA_ADDRX_M = >vdest;
|
||||
*VERA_ADDRX_L = BYTE0(vdest);
|
||||
*VERA_ADDRX_M = BYTE1(vdest);
|
||||
*VERA_ADDRX_H = VERA_INC_1 | vbank;
|
||||
// Transfer the data
|
||||
char *end = (char*)src+num;
|
||||
@ -66,16 +66,16 @@ void memcpy_bank_to_vram(unsigned long vdest, unsigned long src, unsigned long n
|
||||
// Select DATA0
|
||||
*VERA_CTRL &= ~VERA_ADDRSEL;
|
||||
// Set address
|
||||
*VERA_ADDRX_L = <(<vdest);
|
||||
*VERA_ADDRX_M = >(<vdest);
|
||||
*VERA_ADDRX_H = <(>vdest);
|
||||
*VERA_ADDRX_L = BYTE0(vdest);
|
||||
*VERA_ADDRX_M = BYTE1(vdest);
|
||||
*VERA_ADDRX_H = BYTE2(vdest);
|
||||
*VERA_ADDRX_H |= VERA_INC_1;
|
||||
|
||||
unsigned long beg = src;
|
||||
unsigned long end = src+num;
|
||||
|
||||
char bank = (byte)(((((word)<(>beg)<<8)|>(<beg))>>5)+((word)<(>beg)<<3));
|
||||
char* addr = (char*)((<beg)&0x1FFF); // stip off the top 3 bits, which are representing the bank of the word!
|
||||
char bank = BYTE2(beg)<<3 | BYTE1(beg)>>5 ; // (byte)(((((word)<(>beg)<<8)|>(<beg))>>5)+((word)<(>beg)<<3));
|
||||
char* addr = (char*)(WORD0(beg)&0x1FFF); // stip off the top 3 bits, which are representing the bank of the word!
|
||||
addr += 0xA000;
|
||||
|
||||
VIA1->PORT_A = (char)bank; // select the bank
|
||||
@ -99,8 +99,8 @@ void memset_vram(char vbank, void* vdest, char data, unsigned long num ) {
|
||||
// Select DATA0
|
||||
*VERA_CTRL &= ~VERA_ADDRSEL;
|
||||
// Set address
|
||||
*VERA_ADDRX_L = <vdest;
|
||||
*VERA_ADDRX_M = >vdest;
|
||||
*VERA_ADDRX_L = BYTE0(vdest);
|
||||
*VERA_ADDRX_M = BYTE1(vdest);
|
||||
*VERA_ADDRX_H = VERA_INC_1 | vbank;
|
||||
// Transfer the data
|
||||
for(unsigned long i = 0; i<num; i++)
|
||||
@ -117,13 +117,13 @@ void memset_vram_word(char vbank, void* vdest, unsigned int data, unsigned long
|
||||
// Select DATA0
|
||||
*VERA_CTRL &= ~VERA_ADDRSEL;
|
||||
// Set address
|
||||
*VERA_ADDRX_L = <vdest;
|
||||
*VERA_ADDRX_M = >vdest;
|
||||
*VERA_ADDRX_L = BYTE0(vdest);
|
||||
*VERA_ADDRX_M = BYTE1(vdest);
|
||||
*VERA_ADDRX_H = VERA_INC_1 | vbank;
|
||||
// Transfer the data
|
||||
for(unsigned long i = 0; i<num; i++) {
|
||||
*VERA_DATA0 = <data;
|
||||
*VERA_DATA0 = >data;
|
||||
*VERA_DATA0 = BYTE0(data);
|
||||
*VERA_DATA0 = BYTE1(data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -141,15 +141,15 @@ void memcpy_in_vram(char dest_bank, void *dest, char dest_increment, char src_ba
|
||||
// Select DATA0
|
||||
*VERA_CTRL &= ~VERA_ADDRSEL;
|
||||
// Set address
|
||||
*VERA_ADDRX_L = <src;
|
||||
*VERA_ADDRX_M = >src;
|
||||
*VERA_ADDRX_L = BYTE0(src);
|
||||
*VERA_ADDRX_M = BYTE1(src);
|
||||
*VERA_ADDRX_H = src_increment | src_bank;
|
||||
|
||||
// Select DATA1
|
||||
*VERA_CTRL |= VERA_ADDRSEL;
|
||||
// Set address
|
||||
*VERA_ADDRX_L = <dest;
|
||||
*VERA_ADDRX_M = >dest;
|
||||
*VERA_ADDRX_L = BYTE0(dest);
|
||||
*VERA_ADDRX_M = BYTE1(dest);
|
||||
*VERA_ADDRX_H = dest_increment | dest_bank;
|
||||
|
||||
// Transfer the data
|
||||
@ -167,8 +167,8 @@ void memcpy_in_vram(char dest_bank, void *dest, char dest_increment, char src_ba
|
||||
char load_to_bank( char device, char* filename, dword address) {
|
||||
setnam(filename);
|
||||
setlfs(device);
|
||||
char bank = (byte)(((((word)<(>address)<<8)|>(<address))>>5)+((word)<(>address)<<3));
|
||||
char* addr = (char*)((<address)&0x1FFF); // stip off the top 3 bits, which are representing the bank of the word!
|
||||
char bank = BYTE2(address)<<3 | BYTE1(address)>>5; //(byte)(((((word)<(>address)<<8)|>(<address))>>5)+((word)<(>address)<<3));
|
||||
char* addr = (char*)(WORD0(address)&0x1FFF); // stip off the top 3 bits, which are representing the bank of the word!
|
||||
addr += 0xA000;
|
||||
VIA1->PORT_A = (char)bank; // select the bank
|
||||
return load(addr, 0);
|
||||
|
@ -40,8 +40,8 @@ char divr8u(char dividend, char divisor, char rem) {
|
||||
// Divide unsigned 16-bit unsigned long dividend with a 8-bit unsigned char divisor
|
||||
// The 8-bit unsigned char remainder can be found in rem8u after the division
|
||||
unsigned int div16u8u(unsigned int dividend, unsigned char divisor) {
|
||||
unsigned char quotient_hi = divr8u(>dividend, divisor, 0);
|
||||
unsigned char quotient_lo = divr8u(<dividend, divisor, rem8u);
|
||||
unsigned char quotient_hi = divr8u(BYTE1(dividend), divisor, 0);
|
||||
unsigned char quotient_lo = divr8u(BYTE0(dividend), divisor, rem8u);
|
||||
unsigned int quotient = { quotient_hi, quotient_lo};
|
||||
return quotient;
|
||||
}
|
||||
@ -57,7 +57,7 @@ unsigned int divr16u(unsigned int dividend, unsigned int divisor, unsigned int r
|
||||
unsigned int quotient = 0;
|
||||
for( char i : 0..15) {
|
||||
rem = rem << 1;
|
||||
if( (>dividend & $80) != 0 ) {
|
||||
if( (BYTE1(dividend) & $80) != 0 ) {
|
||||
rem = rem | 1;
|
||||
}
|
||||
dividend = dividend << 1;
|
||||
@ -90,8 +90,8 @@ unsigned int div16u(unsigned int dividend, unsigned int divisor) {
|
||||
// Divide unsigned 32-bit unsigned long dividend with a 16-bit unsigned int divisor
|
||||
// The 16-bit unsigned int remainder can be found in rem16u after the division
|
||||
unsigned long div32u16u(unsigned long dividend, unsigned int divisor) {
|
||||
unsigned int quotient_hi = divr16u(>dividend, divisor, 0);
|
||||
unsigned int quotient_lo = divr16u(<dividend, divisor, rem16u);
|
||||
unsigned int quotient_hi = divr16u(WORD1(dividend), divisor, 0);
|
||||
unsigned int quotient_lo = divr16u(WORD0(dividend), divisor, rem16u);
|
||||
unsigned long quotient = { quotient_hi, quotient_lo};
|
||||
return quotient;
|
||||
}
|
||||
|
@ -18,9 +18,9 @@ void memcpy_dma(void* dest, void* src, unsigned int num) {
|
||||
// Set address of DMA list
|
||||
DMA->ADDRMB = 0;
|
||||
DMA->ADDRBANK = 0;
|
||||
DMA-> ADDRMSB = >&memcpy_dma_command;
|
||||
DMA-> ADDRMSB = BYTE1(&memcpy_dma_command);
|
||||
// Trigger the DMA (without option lists)
|
||||
DMA-> ADDRLSBTRIG = <&memcpy_dma_command;
|
||||
DMA-> ADDRLSBTRIG = BYTE0(&memcpy_dma_command);
|
||||
// Re-enable F018A mode
|
||||
DMA->EN018B = dmaMode;
|
||||
}
|
||||
@ -58,9 +58,9 @@ void memcpy_dma4(char dest_bank, void* dest, char src_bank, void* src, unsigned
|
||||
// Set address of DMA list
|
||||
DMA->ADDRMB = 0;
|
||||
DMA->ADDRBANK = 0;
|
||||
DMA-> ADDRMSB = >&memcpy_dma_command4;
|
||||
DMA-> ADDRMSB = BYTE1(&memcpy_dma_command4);
|
||||
// Trigger the DMA (without option lists)
|
||||
DMA-> ADDRLSBTRIG = <&memcpy_dma_command4;
|
||||
DMA-> ADDRLSBTRIG = BYTE0(&memcpy_dma_command4);
|
||||
// Re-enable F018A mode
|
||||
DMA->EN018B = dmaMode;
|
||||
}
|
||||
@ -103,9 +103,9 @@ void memcpy_dma256(char dest_mb, char dest_bank, void* dest, char src_mb, char s
|
||||
// Set address of DMA list
|
||||
DMA->ADDRMB = 0;
|
||||
DMA->ADDRBANK = 0;
|
||||
DMA-> ADDRMSB = >memcpy_dma_command256;
|
||||
DMA-> ADDRMSB = BYTE1(memcpy_dma_command256);
|
||||
// Trigger the DMA (with option lists)
|
||||
DMA-> ETRIG = <memcpy_dma_command256;
|
||||
DMA-> ETRIG = BYTE0(memcpy_dma_command256);
|
||||
// Re-enable F018A mode
|
||||
DMA->EN018B = dmaMode;
|
||||
}
|
||||
@ -146,9 +146,9 @@ void memset_dma(void* dest, char fill, unsigned int num) {
|
||||
// Set address of DMA list
|
||||
DMA->ADDRMB = 0;
|
||||
DMA->ADDRBANK = 0;
|
||||
DMA-> ADDRMSB = >&memset_dma_command;
|
||||
DMA-> ADDRMSB = BYTE1(&memset_dma_command);
|
||||
// Trigger the DMA (without option lists)
|
||||
DMA-> ADDRLSBTRIG = <&memset_dma_command;
|
||||
DMA-> ADDRLSBTRIG = BYTE0(&memset_dma_command);
|
||||
// Re-enable F018A mode
|
||||
DMA->EN018B = dmaMode;
|
||||
}
|
||||
@ -188,9 +188,9 @@ void memset_dma256(char dest_mb, char dest_bank, void* dest, char fill, unsigned
|
||||
// Set address of DMA list
|
||||
DMA->ADDRMB = 0;
|
||||
DMA->ADDRBANK = 0;
|
||||
DMA-> ADDRMSB = >memset_dma_command256;
|
||||
DMA-> ADDRMSB = BYTE1(memset_dma_command256);
|
||||
// Trigger the DMA (with option lists)
|
||||
DMA-> ETRIG = <memset_dma_command256;
|
||||
DMA-> ETRIG = BYTE0(memset_dma_command256);
|
||||
// Re-enable F018A mode
|
||||
DMA->EN018B = dmaMode;
|
||||
}
|
||||
|
@ -33,13 +33,13 @@
|
||||
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
||||
void memoryRemap(unsigned char remapBlocks, unsigned int lowerPageOffset, unsigned int upperPageOffset) {
|
||||
// lower blocks offset page low
|
||||
char aVal = <lowerPageOffset;
|
||||
char aVal = BYTE0(lowerPageOffset);
|
||||
// lower blocks to map + lower blocks offset high nibble
|
||||
char xVal = (remapBlocks << 4) | (>lowerPageOffset & 0xf);
|
||||
char xVal = (remapBlocks << 4) | (BYTE1(lowerPageOffset) & 0xf);
|
||||
// upper blocks offset page
|
||||
char yVal = <upperPageOffset;
|
||||
char yVal = BYTE0(upperPageOffset);
|
||||
// upper blocks to map + upper blocks offset page high nibble
|
||||
char zVal = (remapBlocks & 0xf0) | (>upperPageOffset & 0xf);
|
||||
char zVal = (remapBlocks & 0xf0) | (BYTE1(upperPageOffset) & 0xf);
|
||||
asm {
|
||||
lda aVal // lower blocks offset page low
|
||||
ldx xVal // lower blocks to map + lower blocks offset high nibble
|
||||
@ -91,17 +91,17 @@ void memoryRemapBlock(unsigned char blockPage, unsigned int memoryPage) {
|
||||
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
||||
void memoryRemap256M(unsigned char remapBlocks, unsigned long lowerPageOffset, unsigned long upperPageOffset) {
|
||||
// lower blocks offset megabytes
|
||||
char lMb = >((unsigned int)(lowerPageOffset>>4));
|
||||
char lMb = BYTE1((unsigned int)(lowerPageOffset>>4));
|
||||
// upper blocks offset megabytes
|
||||
char uMb = >((unsigned int)(upperPageOffset>>4));
|
||||
char uMb = BYTE1((unsigned int)(upperPageOffset>>4));
|
||||
// lower blocks offset page low
|
||||
char aVal = < <lowerPageOffset;
|
||||
char aVal = BYTE0(lowerPageOffset);
|
||||
// lower blocks to map + lower blocks offset high nibble
|
||||
char xVal = (remapBlocks << 4) | (> <lowerPageOffset & 0xf);
|
||||
char xVal = (remapBlocks << 4) | (BYTE1(lowerPageOffset) & 0xf);
|
||||
// upper blocks offset page
|
||||
char yVal = < <upperPageOffset;
|
||||
char yVal = BYTE0(upperPageOffset);
|
||||
// upper blocks to map + upper blocks offset page high nibble
|
||||
char zVal = (remapBlocks & 0xf0) | (> <upperPageOffset & 0xf);
|
||||
char zVal = (remapBlocks & 0xf0) | (BYTE1(upperPageOffset) & 0xf);
|
||||
asm {
|
||||
lda lMb // lower blocks offset megabytes
|
||||
ldx #$0f // lower signal for MB offset
|
||||
|
@ -4,13 +4,13 @@
|
||||
// Get the value to store into D018 to display a specific screen and charset/bitmap
|
||||
// Optimized for ASM from (char)((((unsigned int)screen&$3fff)/$40)|(((unsigned int)charset&$3fff)/$400));
|
||||
inline char toD018(char* screen, char* gfx) {
|
||||
return (>((((unsigned int)screen&$3fff)*4)))|(((>((unsigned int)gfx))/4)&$f);
|
||||
return BYTE1(((unsigned int)screen&$3fff)*4)|(((BYTE1((unsigned int)gfx))/4)&$f);
|
||||
}
|
||||
|
||||
// Get the value to store into DD00 (CIA 2 port A) to choose a specific VIC bank
|
||||
// Optimized for ASM from %00000011 ^ (char)((unsigned int)gfx/$4000)
|
||||
inline char toDd00(char* gfx) {
|
||||
return %00000011 ^ (>((unsigned int)gfx))/$40;
|
||||
return %00000011 ^ BYTE1((unsigned int)gfx)/$40;
|
||||
}
|
||||
|
||||
// Get the sprite pointer for a sprite.
|
||||
|
@ -81,7 +81,7 @@ inline void ppuSpriteBufferDmaTransfer(struct SpriteData* spriteBuffer) {
|
||||
// Set OAM start address to sprite#0
|
||||
PPU->OAMADDR = 0;
|
||||
// Set the high byte (02) of the RAM address and start the DMA transfer to OAM memory
|
||||
APU->OAMDMA = >spriteBuffer;
|
||||
APU->OAMDMA = BYTE1(spriteBuffer);
|
||||
}
|
||||
|
||||
// Read Standard Controller #1
|
||||
@ -108,9 +108,9 @@ char readJoy1() {
|
||||
// - ppuData : Pointer in the PPU memory
|
||||
inline void ppuDataPrepare(void* const ppuData) {
|
||||
// Write the high byte of PPU address
|
||||
PPU->PPUADDR = >ppuData;
|
||||
PPU->PPUADDR = BYTE1(ppuData);
|
||||
// Write the low byte of PPU address
|
||||
PPU->PPUADDR = <ppuData;
|
||||
PPU->PPUADDR = BYTE0(ppuData);
|
||||
}
|
||||
|
||||
// Put one byte into PPU memory
|
||||
|
@ -47,7 +47,7 @@ void sin16s_gen2(signed int* sintab, unsigned int wavelength, signed int min, si
|
||||
// Iterate over the table
|
||||
unsigned long x = 0; // u[4.28]
|
||||
for( unsigned int i=0; i<wavelength; i++) {
|
||||
*sintab++ = offs + (signed int)>mul16s(sin16s(x), ampl); // The signed sin() has values [-7fff;7fff] = [-1/2 ; 1/2], so ampl*sin has the right amplitude
|
||||
*sintab++ = offs + (signed int)WORD1(mul16s(sin16s(x), ampl)); // The signed sin() has values [-7fff;7fff] = [-1/2 ; 1/2], so ampl*sin has the right amplitude
|
||||
x = x + step;
|
||||
}
|
||||
}
|
||||
@ -80,7 +80,7 @@ signed int sin16s(unsigned long x) {
|
||||
x = PI_u4f28 - x;
|
||||
}
|
||||
// sinx = x - x^3/6 + x5/128;
|
||||
unsigned int x1 = >x<<3; // u[1.15]
|
||||
unsigned int x1 = WORD1(x)<<3; // u[1.15]
|
||||
unsigned int x2 = mulu16_sel(x1, x1, 0); // u[2.14] x^2
|
||||
unsigned int x3 = mulu16_sel(x2, x1, 1); // u[2.14] x^3
|
||||
unsigned int x3_6 = mulu16_sel(x3, $10000/6, 1); // u[1.15] x^3/6;
|
||||
@ -110,7 +110,7 @@ signed char sin8s(unsigned int x) {
|
||||
x = PI_u4f12 - x;
|
||||
}
|
||||
// sinx = x - x^3/6 + x5/128;
|
||||
char x1 = >x<<3; // u[1.7]
|
||||
char x1 = BYTE1(x)<<3; // u[1.7]
|
||||
char x2 = mulu8_sel(x1, x1, 0); // u[2.6] x^2
|
||||
char x3 = mulu8_sel(x2, x1, 1); // u[2.6] x^3
|
||||
const char DIV_6 = $2b; // u[0.7] - $2a.aa rounded to $2b
|
||||
@ -131,11 +131,11 @@ signed char sin8s(unsigned int x) {
|
||||
// Calculate val*val for two unsigned int values - the result is 16 selected bits of the 32-bit result.
|
||||
// The select parameter indicates how many of the highest bits of the 32-bit result to skip
|
||||
unsigned int mulu16_sel(unsigned int v1, unsigned int v2, char select) {
|
||||
return >mul16u(v1, v2)<<select;
|
||||
return WORD1(mul16u(v1, v2)<<select);
|
||||
}
|
||||
|
||||
// Calculate val*val for two unsigned char values - the result is 8 selected bits of the 16-bit result.
|
||||
// The select parameter indicates how many of the highest bits of the 16-bit result to skip
|
||||
char mulu8_sel(char v1, char v2, char select) {
|
||||
return >mul8u(v1, v2)<<select;
|
||||
return BYTE1(mul8u(v1, v2)<<select);
|
||||
}
|
||||
|
@ -169,7 +169,12 @@ public class TestPrograms {
|
||||
final Map<String, String> defines = new HashMap<>();
|
||||
defines.put("__KICKC__", "1");
|
||||
defines.putAll(program.getTargetPlatform().getDefines());
|
||||
compiler.compile(files, defines);
|
||||
try {
|
||||
compiler.compile(files, defines);
|
||||
} catch(CompileError e) {
|
||||
System.out.println(e.format());
|
||||
throw e;
|
||||
}
|
||||
|
||||
compileAsm(fileName, program);
|
||||
boolean success = true;
|
||||
|
@ -492,6 +492,11 @@ public class TestProgramsFast extends TestPrograms {
|
||||
compileAndCompare("problem-ma-var-overwrite.c");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPrecedence1() throws IOException {
|
||||
compileAndCompare("precedence-1.c");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMinusPrecedenceProblem() throws IOException {
|
||||
compileAndCompare("minus-precedence-problem.c");
|
||||
|
@ -52,7 +52,7 @@ void plot(int x, int y) {
|
||||
|
||||
byte* location = BITMAP;
|
||||
location += x & $fff8;
|
||||
location += <y & 7;
|
||||
location += BYTE0(y) & 7;
|
||||
location += ((y >> 3) * 320);
|
||||
(*location) = (*location) | bitmask[x & 7];
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ void circle(int xc, int yc, int r) {
|
||||
void plot(int x, int y) {
|
||||
byte* location = BITMAP;
|
||||
location += x & $fff8;
|
||||
location += <y & 7;
|
||||
location += (char)y & 7;
|
||||
location += ((y >> 3) * 320);
|
||||
(*location) = (*location) | bitmask[x & 7];
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ void init_plot_tables() {
|
||||
byte bits = $80;
|
||||
for(byte x : 0..255) {
|
||||
plot_xlo[x] = x&$f8;
|
||||
plot_xhi[x] = >BITMAP;
|
||||
plot_xhi[x] = BYTE1(BITMAP);
|
||||
plot_bit[x] = bits;
|
||||
bits = bits/2;
|
||||
if(bits==0) {
|
||||
@ -73,8 +73,8 @@ void init_plot_tables() {
|
||||
}
|
||||
byte* yoffs = (byte*)$0;
|
||||
for(byte y : 0..255) {
|
||||
plot_ylo[y] = y&$7 | <yoffs;
|
||||
plot_yhi[y] = >yoffs;
|
||||
plot_ylo[y] = y&$7 | BYTE0(yoffs);
|
||||
plot_yhi[y] = BYTE1(yoffs);
|
||||
if((y&$7)==7) {
|
||||
yoffs = yoffs + 40*8; // Needs better constant type inference for yoffs = yoffs + 40*8;
|
||||
}
|
||||
|
@ -19,15 +19,15 @@ void main() {
|
||||
*VICII_CONTROL1 = VICII_DEN | VICII_ECM | VICII_RSEL | 3;
|
||||
*VICII_CONTROL2 = VICII_MCM | VICII_CSEL;
|
||||
// Plane A: SCREEN
|
||||
*DTV_PLANEA_START_LO = < SCREEN;
|
||||
*DTV_PLANEA_START_MI = > SCREEN;
|
||||
*DTV_PLANEA_START_LO = BYTE0(SCREEN);
|
||||
*DTV_PLANEA_START_MI = BYTE1(SCREEN);
|
||||
*DTV_PLANEA_START_HI = 0;
|
||||
*DTV_PLANEA_STEP = 1;
|
||||
*DTV_PLANEA_MODULO_LO = 0;
|
||||
*DTV_PLANEA_MODULO_HI = 0;
|
||||
// Plane B: CHARSET8
|
||||
*DTV_PLANEB_START_LO = < CHARSET8;
|
||||
*DTV_PLANEB_START_MI = > CHARSET8;
|
||||
*DTV_PLANEB_START_LO = BYTE0(CHARSET8);
|
||||
*DTV_PLANEB_START_MI = BYTE1(CHARSET8);
|
||||
*DTV_PLANEB_START_HI = 0;
|
||||
*DTV_PLANEB_STEP = 0;
|
||||
*DTV_PLANEB_MODULO_LO = 0;
|
||||
@ -36,7 +36,7 @@ void main() {
|
||||
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
|
||||
CIA2->PORT_A = %00000011 ^ (byte)((word)SCREEN/$4000); // Set VIC Bank
|
||||
// VIC memory
|
||||
*VICII_MEMORY = (byte)((((word)SCREEN)&$3fff)/$40) | ((>(((word)SCREEN)&$3fff))/4);
|
||||
*VICII_MEMORY = (byte)((((word)SCREEN)&$3fff)/$40) | ((BYTE1(((word)SCREEN)&$3fff))/4);
|
||||
|
||||
// DTV Palette - Grey Tones
|
||||
for(byte j : 0..$f) {
|
||||
|
@ -17,8 +17,8 @@ void main() {
|
||||
*VICII_CONTROL1 = VICII_DEN | VICII_ECM | VICII_RSEL | 3;
|
||||
*VICII_CONTROL2 = VICII_MCM | VICII_CSEL;
|
||||
// Plane B: CHUNKY
|
||||
*DTV_PLANEB_START_LO = < CHUNKY;
|
||||
*DTV_PLANEB_START_MI = > CHUNKY;
|
||||
*DTV_PLANEB_START_LO = BYTE0(CHUNKY);
|
||||
*DTV_PLANEB_START_MI = BYTE1(CHUNKY);
|
||||
*DTV_PLANEB_START_HI = 0;
|
||||
*DTV_PLANEB_STEP = 8;
|
||||
*DTV_PLANEB_MODULO_LO = 0;
|
||||
@ -27,7 +27,7 @@ void main() {
|
||||
CIA2->PORT_A_DDR = %00000011; // Set VIC Bank bits to output - all others to input
|
||||
CIA2->PORT_A = %00000011 ^ (byte)((word)CHUNKY/$4000); // Set VIC Bank
|
||||
// VIC memory
|
||||
*VICII_MEMORY = (byte)((((word)CHUNKY)&$3fff)/$40) | ((>(((word)CHUNKY)&$3fff))/4);
|
||||
*VICII_MEMORY = (byte)((((word)CHUNKY)&$3fff)/$40) | ((BYTE1(((word)CHUNKY)&$3fff))/4);
|
||||
|
||||
// DTV Palette - Grey Tones
|
||||
for(byte j : 0..$f) {
|
||||
|
@ -13,35 +13,35 @@ void main() {
|
||||
// Instruct blitter not to continue previous blit
|
||||
*DTV_BLITTER_CONTROL2 = DTV_BLIT_CLEAR_IRQ;
|
||||
|
||||
*DTV_BLITTER_SRCA_LO = <SRCA;
|
||||
*DTV_BLITTER_SRCA_MI = >SRCA;
|
||||
*DTV_BLITTER_SRCA_LO = BYTE0(SRCA);
|
||||
*DTV_BLITTER_SRCA_MI = BYTE1(SRCA);
|
||||
*DTV_BLITTER_SRCA_HI = 0;
|
||||
*DTV_BLITTER_SRCA_MOD_LO = 0;
|
||||
*DTV_BLITTER_SRCA_MOD_HI = 0;
|
||||
*DTV_BLITTER_SRCA_LIN_LO = <$100uw;
|
||||
*DTV_BLITTER_SRCA_LIN_HI = >$100uw;
|
||||
*DTV_BLITTER_SRCA_LIN_LO = BYTE0($100uw);
|
||||
*DTV_BLITTER_SRCA_LIN_HI = BYTE1($100uw);
|
||||
*DTV_BLITTER_SRCA_STEP = 01; // Step 0.0
|
||||
|
||||
*DTV_BLITTER_SRCB_LO = <SRCB;
|
||||
*DTV_BLITTER_SRCB_MI = >SRCB;
|
||||
*DTV_BLITTER_SRCB_LO = BYTE0(SRCB);
|
||||
*DTV_BLITTER_SRCB_MI = BYTE1(SRCB);
|
||||
*DTV_BLITTER_SRCB_HI = 0;
|
||||
*DTV_BLITTER_SRCB_MOD_LO = 0;
|
||||
*DTV_BLITTER_SRCB_MOD_HI = 0;
|
||||
*DTV_BLITTER_SRCB_LIN_LO = <$100uw;
|
||||
*DTV_BLITTER_SRCB_LIN_HI = >$100uw;
|
||||
*DTV_BLITTER_SRCB_LIN_LO = BYTE0($100uw);
|
||||
*DTV_BLITTER_SRCB_LIN_HI = BYTE1($100uw);
|
||||
*DTV_BLITTER_SRCB_STEP = $00; // Step 0.0
|
||||
|
||||
*DTV_BLITTER_DEST_LO = <SCREEN+40+5;
|
||||
*DTV_BLITTER_DEST_MI = >SCREEN+40+5;
|
||||
*DTV_BLITTER_DEST_LO = BYTE0(SCREEN+40+5);
|
||||
*DTV_BLITTER_DEST_MI = BYTE1(SCREEN+40+5);
|
||||
*DTV_BLITTER_DEST_HI = 0;
|
||||
*DTV_BLITTER_DEST_MOD_LO = <21uw;
|
||||
*DTV_BLITTER_DEST_MOD_HI = >21uw;
|
||||
*DTV_BLITTER_DEST_LIN_LO = <19uw;
|
||||
*DTV_BLITTER_DEST_LIN_HI = >19uw;
|
||||
*DTV_BLITTER_DEST_MOD_LO = BYTE0(21uw);
|
||||
*DTV_BLITTER_DEST_MOD_HI = BYTE1(21uw);
|
||||
*DTV_BLITTER_DEST_LIN_LO = BYTE0(19uw);
|
||||
*DTV_BLITTER_DEST_LIN_HI = BYTE1(19uw);
|
||||
*DTV_BLITTER_DEST_STEP = $10; // Step 1.0
|
||||
|
||||
*DTV_BLITTER_LEN_LO = <20*10uw;
|
||||
*DTV_BLITTER_LEN_HI = >20*10uw;
|
||||
*DTV_BLITTER_LEN_LO = BYTE0(20*10uw);
|
||||
*DTV_BLITTER_LEN_HI = BYTE1(20*10uw);
|
||||
|
||||
*DTV_BLITTER_ALU = DTV_BLIT_ADD;
|
||||
*DTV_BLITTER_TRANSPARANCY = DTV_BLIT_TRANSPARANCY_NONE;
|
||||
|
@ -12,31 +12,31 @@ void main() {
|
||||
// Instruct blitter not to continue previous blit
|
||||
*DTV_BLITTER_CONTROL2 = DTV_BLIT_CLEAR_IRQ;
|
||||
|
||||
*DTV_BLITTER_SRCA_LO = <SRCA;
|
||||
*DTV_BLITTER_SRCA_MI = >SRCA;
|
||||
*DTV_BLITTER_SRCA_LO = BYTE0(SRCA);
|
||||
*DTV_BLITTER_SRCA_MI = BYTE1(SRCA);
|
||||
*DTV_BLITTER_SRCA_HI = 0;
|
||||
*DTV_BLITTER_SRCA_MOD_LO = 0;
|
||||
*DTV_BLITTER_SRCA_MOD_HI = 0;
|
||||
*DTV_BLITTER_SRCA_LIN_LO = <$100uw;
|
||||
*DTV_BLITTER_SRCA_LIN_HI = >$100uw;
|
||||
*DTV_BLITTER_SRCA_LIN_LO = BYTE0($100uw);
|
||||
*DTV_BLITTER_SRCA_LIN_HI = BYTE1($100uw);
|
||||
*DTV_BLITTER_SRCA_STEP = $10; // Step 1.0
|
||||
|
||||
*DTV_BLITTER_SRCB_LO = <SRCB;
|
||||
*DTV_BLITTER_SRCB_MI = >SRCB;
|
||||
*DTV_BLITTER_SRCB_LO = BYTE0(SRCB);
|
||||
*DTV_BLITTER_SRCB_MI = BYTE1(SRCB);
|
||||
*DTV_BLITTER_SRCB_HI = 0;
|
||||
*DTV_BLITTER_SRCB_MOD_LO = 0;
|
||||
*DTV_BLITTER_SRCB_MOD_HI = 0;
|
||||
*DTV_BLITTER_SRCB_LIN_LO = <$100uw;
|
||||
*DTV_BLITTER_SRCB_LIN_HI = >$100uw;
|
||||
*DTV_BLITTER_SRCB_LIN_LO = BYTE0($100uw);
|
||||
*DTV_BLITTER_SRCB_LIN_HI = BYTE1($100uw);
|
||||
*DTV_BLITTER_SRCB_STEP = $00; // Step 0.0
|
||||
|
||||
*DTV_BLITTER_DEST_LO = <SCREEN;
|
||||
*DTV_BLITTER_DEST_MI = >SCREEN;
|
||||
*DTV_BLITTER_DEST_LO = BYTE0(SCREEN);
|
||||
*DTV_BLITTER_DEST_MI = BYTE1(SCREEN);
|
||||
*DTV_BLITTER_DEST_HI = 0;
|
||||
*DTV_BLITTER_DEST_MOD_LO = 0;
|
||||
*DTV_BLITTER_DEST_MOD_HI = 0;
|
||||
*DTV_BLITTER_DEST_LIN_LO = <$100uw;
|
||||
*DTV_BLITTER_DEST_LIN_HI = >$100uw;
|
||||
*DTV_BLITTER_DEST_LIN_LO = BYTE0($100uw);
|
||||
*DTV_BLITTER_DEST_LIN_HI = BYTE1($100uw);
|
||||
*DTV_BLITTER_DEST_STEP = $10; // Step 1.0
|
||||
|
||||
*DTV_BLITTER_LEN_LO = SRCA_LEN;
|
||||
|
@ -5,9 +5,9 @@ void main () {
|
||||
byte* screen = (char*)$400;
|
||||
word w = $0d03;
|
||||
word* wp = &w;
|
||||
screen[0] = <*wp;
|
||||
screen[1] = >*wp;
|
||||
screen[0] = BYTE0(*wp);
|
||||
screen[1] = BYTE1(*wp);
|
||||
*wp = $210c;
|
||||
screen[2] = <*wp;
|
||||
screen[3] = >*wp;
|
||||
screen[2] = BYTE0(*wp);
|
||||
screen[3] = BYTE1(*wp);
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ void main() {
|
||||
signed word xw = (signed word)(word){ (byte)x, 0 };
|
||||
signed word yw = (signed word)(word){ (byte)y, 0 };
|
||||
word angle_w = atan2_16(xw, yw);
|
||||
byte ang_w = >(angle_w+0x0080);
|
||||
byte ang_w = BYTE1(angle_w+0x0080);
|
||||
*screen++ = ang_w;
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ void init_angle_screen(byte* screen) {
|
||||
signed word xw = (signed word)(word){ 39-x*2, 0 };
|
||||
signed word yw = (signed word)(word){ y*2, 0 };
|
||||
word angle_w = atan2_16(xw, yw);
|
||||
byte ang_w = >(angle_w+0x0080);
|
||||
byte ang_w = BYTE1(angle_w+0x0080);
|
||||
screen_topline[x] = 0x80+ang_w;
|
||||
screen_bottomline[x] = 0x80-ang_w;
|
||||
screen_topline[xb] = -ang_w;
|
||||
|
@ -24,9 +24,9 @@ char TEXT[] = "HELLO atari 8BIT"
|
||||
// ANTIC Display List Program
|
||||
// https://en.wikipedia.org/wiki/ANTIC
|
||||
char DISPLAY_LIST[] = {
|
||||
BLANK8, BLANK8, BLANK8, // 3* 8 blank lines
|
||||
LMS|MODE7, <TEXT, >TEXT, // Load memory address and set to charmode 7 (16/20/24 chars wide, 16 lines per char)
|
||||
BLANK4, // 4 blank lines
|
||||
MODE2, // Charmode 2 (32/40/48 chars wide, 8 lines per char)
|
||||
JVB, <DISPLAY_LIST, >DISPLAY_LIST // Wait for VBLANK snd jump
|
||||
BLANK8, BLANK8, BLANK8, // 3* 8 blank lines
|
||||
LMS|MODE7, BYTE0(TEXT), BYTE1(TEXT), // Load memory address and set to charmode 7 (16/20/24 chars wide, 16 lines per char)
|
||||
BLANK4, // 4 blank lines
|
||||
MODE2, // Charmode 2 (32/40/48 chars wide, 8 lines per char)
|
||||
JVB, BYTE0(DISPLAY_LIST), BYTE1(DISPLAY_LIST) // Wait for VBLANK snd jump
|
||||
};
|
||||
|
@ -39,9 +39,9 @@ char TEXT[] = "HELLO atari 8BIT"
|
||||
// ANTIC Display List Program
|
||||
// https://en.wikipedia.org/wiki/ANTIC
|
||||
char DISPLAY_LIST[] = {
|
||||
BLANK8, BLANK8, BLANK8, // 3* 8 blank lines
|
||||
LMS|MODE7, <TEXT, >TEXT, // Load memory address and set to charmode 7 (16/20/24 chars wide, 16 lines per char)
|
||||
BLANK4, // 4 blank lines
|
||||
MODE2, // Charmode 2 (32/40/48 chars wide, 8 lines per char)
|
||||
JVB, <DISPLAY_LIST, >DISPLAY_LIST // Wait for VBLANK and jump
|
||||
BLANK8, BLANK8, BLANK8, // 3* 8 blank lines
|
||||
LMS|MODE7, BYTE0(TEXT), BYTE1(TEXT), // Load memory address and set to charmode 7 (16/20/24 chars wide, 16 lines per char)
|
||||
BLANK4, // 4 blank lines
|
||||
MODE2, // Charmode 2 (32/40/48 chars wide, 8 lines per char)
|
||||
JVB, BYTE0(DISPLAY_LIST), BYTE1(DISPLAY_LIST) // Wait for VBLANK and jump
|
||||
};
|
||||
|
@ -106,7 +106,7 @@ void mulf_init() {
|
||||
signed int sqr = 0;
|
||||
signed int add = 1;
|
||||
for( char i:0..128) {
|
||||
char val = >sqr;
|
||||
char val = BYTE1(sqr);
|
||||
mulf_sqr1[i] = val;
|
||||
(mulf_sqr1+$100)[i] = val;
|
||||
mulf_sqr1[-i] = val;
|
||||
|
@ -63,10 +63,10 @@ void font_2x2(char* font_original, char* font_2x2) {
|
||||
glyph_bits <<= 1;
|
||||
}
|
||||
// Put the generated 2x2-line into the 2x2-font twice
|
||||
next_2x2_left[l2] = >glyph_bits_2x2;
|
||||
next_2x2_left[l2+1] = >glyph_bits_2x2;
|
||||
next_2x2_right[l2] = <glyph_bits_2x2;
|
||||
next_2x2_right[l2+1] = <glyph_bits_2x2;
|
||||
next_2x2_left[l2] = BYTE1(glyph_bits_2x2);
|
||||
next_2x2_left[l2+1] = BYTE1(glyph_bits_2x2);
|
||||
next_2x2_right[l2] = BYTE0(glyph_bits_2x2);
|
||||
next_2x2_right[l2+1] = BYTE0(glyph_bits_2x2);
|
||||
l2 += 2;
|
||||
if(l2==8) {
|
||||
// Move to bottom chars
|
||||
|
@ -45,7 +45,7 @@ __interrupt(hardware_clobber) void nmi2() {
|
||||
asm { lda CIA2_INTERRUPT }
|
||||
SID->VOLUME_FILTER_MODE = *sample >> 4;
|
||||
sample++;
|
||||
if (>sample == >(SAMPLE+$6100)) {
|
||||
if (BYTE1(sample) == BYTE1(SAMPLE+$6100)) {
|
||||
sample = SAMPLE;
|
||||
}
|
||||
*KERNEL_NMI = &nmi;
|
||||
|
@ -11,9 +11,9 @@ void main() {
|
||||
// Set address of DMA list
|
||||
DMA->ADDRMB = 0;
|
||||
DMA->ADDRBANK = 0;
|
||||
DMA-> ADDRMSB = >&DMA_SCREEN_UP;
|
||||
DMA-> ADDRMSB = BYTE1(&DMA_SCREEN_UP);
|
||||
// Trigger the DMA (without option lists)
|
||||
DMA-> ADDRLSBTRIG = <&DMA_SCREEN_UP;
|
||||
DMA-> ADDRLSBTRIG = BYTE0(&DMA_SCREEN_UP);
|
||||
// Re-enable F018A mode
|
||||
DMA->EN018B = 0;
|
||||
}
|
||||
|
@ -51,13 +51,13 @@ void main() {
|
||||
// Set number of characters to display per row
|
||||
VICIV->CHRCOUNT = 45;
|
||||
// Set exact screen address
|
||||
VICIV->SCRNPTR_LOLO = <SCREEN;
|
||||
VICIV->SCRNPTR_LOHI = >SCREEN;
|
||||
VICIV->SCRNPTR_LOLO = BYTE0(SCREEN);
|
||||
VICIV->SCRNPTR_LOHI = BYTE1(SCREEN);
|
||||
VICIV->SCRNPTR_HILO = 0;
|
||||
VICIV->SCRNPTR_HIHI = 0;
|
||||
// Set exact charset address
|
||||
VICIV->CHARPTR_LOLO = <CHARSET;
|
||||
VICIV->CHARPTR_LOHI = >CHARSET;
|
||||
VICIV->CHARPTR_LOLO = BYTE0(CHARSET);
|
||||
VICIV->CHARPTR_LOHI = BYTE1(CHARSET);
|
||||
VICIV->CHARPTR_HILO = 0;
|
||||
|
||||
// Enable Full-Colour Mode
|
||||
|
@ -33,7 +33,7 @@ void main() {
|
||||
*sc = '*';
|
||||
// Fill the color memory
|
||||
for( char *col = COLORS; col<COLORS+2000; col++)
|
||||
*col = <col;
|
||||
*col = (char)col;
|
||||
|
||||
// Loop forever
|
||||
for(;;)
|
||||
|
@ -22,7 +22,7 @@ void main() {
|
||||
unsigned int offset = (unsigned int)y*40+x;
|
||||
char cnt = ++*(VISITS+offset);
|
||||
*(DEFAULT_COLORRAM+offset) = FADE[cnt&0xf];
|
||||
char rnd = >rand();
|
||||
char rnd = BYTE1(rand());
|
||||
if(rnd & 0x80) {
|
||||
if(rnd& 0x40) {
|
||||
x++;
|
||||
|
@ -2,11 +2,11 @@
|
||||
void main() {
|
||||
byte* SCREEN = (byte*)$0400;
|
||||
for( word w: 0..$ffff) {
|
||||
SCREEN[0] = <w;
|
||||
SCREEN[1] = >w;
|
||||
SCREEN[0] = BYTE0(w);
|
||||
SCREEN[1] = BYTE1(w);
|
||||
}
|
||||
for( signed word sw: -$7fff..$7ffe) {
|
||||
SCREEN[3] = <sw;
|
||||
SCREEN[4] = >sw;
|
||||
SCREEN[3] = BYTE0(sw);
|
||||
SCREEN[4] = BYTE1(sw);
|
||||
}
|
||||
}
|
@ -5,11 +5,11 @@ void main() {
|
||||
|
||||
void (*f)();
|
||||
f = &fn1;
|
||||
SCREEN[0] = <(word)f;
|
||||
SCREEN[1] = >(word)f;
|
||||
SCREEN[0] = BYTE0((word)f);
|
||||
SCREEN[1] = BYTE1((word)f);
|
||||
f = &fn2;
|
||||
SCREEN[2] = <(word)f;
|
||||
SCREEN[3] = >(word)f;
|
||||
SCREEN[2] = BYTE0((word)f);
|
||||
SCREEN[3] = BYTE1((word)f);
|
||||
|
||||
}
|
||||
|
||||
|
@ -21,10 +21,10 @@ unsigned char DIGITS[] = "0123456789abcdef";
|
||||
// Hexadecimal utoa() for an unsigned int (16bits)
|
||||
void utoa16w(unsigned int value, unsigned char* dst) {
|
||||
unsigned char started = 0;
|
||||
started = utoa16n((>value)>>4, &dst, started);
|
||||
started = utoa16n((>value)&0x0f, &dst, started);
|
||||
started = utoa16n((<value)>>4, &dst, started);
|
||||
utoa16n((<value)&0x0f, &dst, 1);
|
||||
started = utoa16n(BYTE1(value)>>4, &dst, started);
|
||||
started = utoa16n(BYTE1(value)&0x0f, &dst, started);
|
||||
started = utoa16n(BYTE0(value)>>4, &dst, started);
|
||||
utoa16n(BYTE0(value)&0x0f, &dst, 1);
|
||||
*dst = 0;
|
||||
}
|
||||
|
||||
|
@ -68,10 +68,10 @@ void utoa10w(unsigned int value, unsigned char* dst) {
|
||||
// Hexadecimal utoa() for an unsigned int (16bits)
|
||||
void utoa16w(unsigned int value, unsigned char* dst) {
|
||||
unsigned char started = 0;
|
||||
started = utoa16n((>value)>>4, &dst, started);
|
||||
started = utoa16n((>value)&0x0f, &dst, started);
|
||||
started = utoa16n((<value)>>4, &dst, started);
|
||||
utoa16n((<value)&0x0f, &dst, 1);
|
||||
started = utoa16n(BYTE1(value)>>4, &dst, started);
|
||||
started = utoa16n(BYTE1(value)&0x0f, &dst, started);
|
||||
started = utoa16n(BYTE0(value)>>4, &dst, started);
|
||||
utoa16n(BYTE0(value)&0x0f, &dst, 1);
|
||||
*dst = 0;
|
||||
}
|
||||
|
||||
|
@ -7,8 +7,8 @@ void main() {
|
||||
char* const SCREEN = (char*)0x0400;
|
||||
char idx = 0;
|
||||
for( char i: 0..2) {
|
||||
SCREEN[idx++] = <words[i];
|
||||
SCREEN[idx++] = >words[i];
|
||||
SCREEN[idx++] = BYTE0(words[i]);
|
||||
SCREEN[idx++] = BYTE1(words[i]);
|
||||
|
||||
}
|
||||
}
|
@ -17,7 +17,7 @@ void main() {
|
||||
char idx = 0;
|
||||
for( char i: 0..2) {
|
||||
SCREEN[idx++] = points[i].x;
|
||||
SCREEN[idx++] = <points[i].y;
|
||||
SCREEN[idx++] = >points[i].y;
|
||||
SCREEN[idx++] = BYTE0(points[i].y);
|
||||
SCREEN[idx++] = BYTE1(points[i].y);
|
||||
}
|
||||
}
|
@ -16,7 +16,7 @@ void main() {
|
||||
char idx = 0;
|
||||
for( char i: 0..2) {
|
||||
SCREEN[idx++] = points[i].x;
|
||||
SCREEN[idx++] = <points[i].y;
|
||||
SCREEN[idx++] = >points[i].y;
|
||||
SCREEN[idx++] = BYTE0(points[i].y);
|
||||
SCREEN[idx++] = BYTE1(points[i].y);
|
||||
}
|
||||
}
|
@ -12,7 +12,7 @@ inline void line(byte xpos, byte xadd, byte ysize, byte ch) {
|
||||
cur_line = (byte*)$400;
|
||||
word pos = {xpos, 0};
|
||||
for( byte i=0;i<ysize; i++) {
|
||||
plot(>pos, ch);
|
||||
plot(BYTE1(pos), ch);
|
||||
pos += xadd;
|
||||
cur_line += 40;
|
||||
}
|
||||
|
@ -4,8 +4,8 @@
|
||||
void main() {
|
||||
const byte STRING[] = "camelot"z;
|
||||
byte* const PTR = (byte*)$9ffe;
|
||||
*PTR = <STRING;
|
||||
*(PTR+1)= >STRING;
|
||||
*PTR = BYTE0(STRING);
|
||||
*(PTR+1)= BYTE1(STRING);
|
||||
byte* ptr = (byte*) { *(PTR+1), *PTR };
|
||||
byte* const SCREEN = (byte*)$400;
|
||||
*SCREEN = *ptr;
|
||||
|
@ -1,7 +1,7 @@
|
||||
byte* const SCREEN = (char*)$400;
|
||||
|
||||
void main() {
|
||||
byte his[] = { >SCREEN, >SCREEN+$100, >SCREEN+$200 }; // constant array
|
||||
byte his[] = { BYTE1(SCREEN), BYTE1(SCREEN+$100), BYTE1(SCREEN+$200) }; // constant array
|
||||
for( byte h: 0..2) {
|
||||
for (byte l: 4..7) {
|
||||
word w = { his[h], l }; // inline word
|
||||
|
@ -47,7 +47,7 @@ void lin16u_gen(word min, word max, word* lintab, word length) {
|
||||
dword step = { stepi, stepf };
|
||||
dword val = { min, 0 };
|
||||
for(word i=0; i<length; i++) {
|
||||
*lintab = >val;
|
||||
*lintab = WORD1(val);
|
||||
val = val + step;
|
||||
lintab++;
|
||||
}
|
||||
|
@ -22,10 +22,10 @@ void outsw(signed int sw) {
|
||||
char HEXTAB[] = "0123456789abcdef";
|
||||
|
||||
void outw(unsigned int w) {
|
||||
out(HEXTAB[(>w)<<4]);
|
||||
out(HEXTAB[(>w)&0x0f]);
|
||||
out(HEXTAB[(<w)<<4]);
|
||||
out(HEXTAB[(<w)&0x0f]);
|
||||
out(HEXTAB[BYTE1(w)<<4]);
|
||||
out(HEXTAB[BYTE1(w)&0x0f]);
|
||||
out(HEXTAB[BYTE0(w)<<4]);
|
||||
out(HEXTAB[BYTE0(w)&0x0f]);
|
||||
}
|
||||
|
||||
void out(char c) {
|
||||
|
@ -9,8 +9,8 @@ void main() {
|
||||
char* const screen = (char*)0x0400;
|
||||
char hit_check=scan_for_lowest();
|
||||
screen[0] = hit_check;
|
||||
screen[2] = <ball_y[hit_check];
|
||||
screen[3] = >ball_y[hit_check];
|
||||
screen[2] = BYTE0(ball_y[hit_check]);
|
||||
screen[3] = BYTE1(ball_y[hit_check]);
|
||||
}
|
||||
|
||||
byte scan_for_lowest() {
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
void main() {
|
||||
dword result = mul16u(4,123);
|
||||
word kaputt = <result;
|
||||
*BORDER_COLOR = <kaputt;
|
||||
*BG_COLOR = >kaputt;
|
||||
word kaputt = WORD0(result);
|
||||
*BORDER_COLOR = BYTE0(kaputt);
|
||||
*BG_COLOR = BYTE1(kaputt);
|
||||
}
|
@ -45,8 +45,8 @@ void mulf_init() {
|
||||
x_2++; // increase i/2 on even numbers
|
||||
sqr++; // sqr++ on even numbers because 1 = 2*1/4 (from the two previous numbers) + 1/2 (half of the previous uneven number)
|
||||
}
|
||||
*sqr1_lo = <sqr;
|
||||
*sqr1_hi++ = >sqr;
|
||||
*sqr1_lo = BYTE0(sqr);
|
||||
*sqr1_hi++ = BYTE1(sqr);
|
||||
sqr = sqr + x_2; // sqr = sqr + i/2 (when uneven the 1/2 is not added here - see above)
|
||||
}
|
||||
// Fill mulf_sqr2 = g(x) = f(x-255) : If x-255<0 then g(x)=f(255-x) (because x*x = -x*-x)
|
||||
|
@ -22,7 +22,7 @@ void gen_char3(byte* dst, word spec) {
|
||||
for(byte r : 0..4 ) {
|
||||
byte b = 0;
|
||||
for(byte c: 0..2 ) {
|
||||
if((>spec&$80)!=0) {
|
||||
if((BYTE1(spec)&$80)!=0) {
|
||||
b = b|1;
|
||||
}
|
||||
b = b*2;
|
||||
|
@ -8,6 +8,6 @@ const dword DVAL = $20000;
|
||||
byte* const SCREEN = (char*)$400;
|
||||
|
||||
void main() {
|
||||
SCREEN[0] = <(word)(DVAL/$400);
|
||||
SCREEN[1] = >(word)(DVAL/$400);
|
||||
SCREEN[0] = BYTE0((word)(DVAL/$400));
|
||||
SCREEN[1] = BYTE1((word)(DVAL/$400));
|
||||
}
|
@ -8,13 +8,13 @@ byte* const SCREEN = (char*)$400;
|
||||
|
||||
void main() {
|
||||
dword dw = $2000;
|
||||
word w1 = < dw;
|
||||
word w2 = < (dw+1);
|
||||
word w1 = WORD0(dw);
|
||||
word w2 = WORD0(dw+1);
|
||||
|
||||
SCREEN[0] = <w1;
|
||||
SCREEN[1] = >w1;
|
||||
SCREEN[0] = BYTE0(w1);
|
||||
SCREEN[1] = BYTE1(w1);
|
||||
|
||||
SCREEN[3] = <w2;
|
||||
SCREEN[4] = >w2;
|
||||
SCREEN[3] = BYTE0(w2);
|
||||
SCREEN[4] = BYTE1(w2);
|
||||
|
||||
}
|
@ -5,8 +5,8 @@ void main() {
|
||||
byte* vram_ptr = (byte*)0x0428;
|
||||
for( char i:0..2) {
|
||||
*pos_ptr=(int)0x55AA;
|
||||
*vram_ptr++=<(*pos_ptr&(int)0xAA55); // stores 0x00
|
||||
*vram_ptr++=>*pos_ptr; // stores 0x55
|
||||
*vram_ptr++=BYTE0(*pos_ptr&(int)0xAA55); // stores 0x00
|
||||
*vram_ptr++=BYTE1(*pos_ptr); // stores 0x55
|
||||
pos_ptr++;
|
||||
}
|
||||
}
|
11
src/test/kc/precedence-1.c
Normal file
11
src/test/kc/precedence-1.c
Normal file
@ -0,0 +1,11 @@
|
||||
// Tests ASM constant operator precedence
|
||||
|
||||
|
||||
void main() {
|
||||
|
||||
char * const SCREEN = (char*)0x0400;
|
||||
|
||||
SCREEN[0] = 1+2*3*4+5*6|7;
|
||||
|
||||
|
||||
}
|
@ -36,10 +36,10 @@ const char printf_hextab[] = "0123456789abcdef"z;
|
||||
// Print an unsigned int using a specific format
|
||||
// Always prints hexadecimals - ignores min_length and flags
|
||||
void printf_uint(unsigned int uvalue, struct printf_format_number format) {
|
||||
*screen++ = printf_hextab[(>uvalue)>>4];
|
||||
*screen++ = printf_hextab[(>uvalue)&0xf];
|
||||
*screen++ = printf_hextab[(<uvalue)>>4];
|
||||
*screen++ = printf_hextab[(<uvalue)&0xf];
|
||||
*screen++ = printf_hextab[BYTE1(uvalue)>>4];
|
||||
*screen++ = printf_hextab[BYTE1(uvalue)&0xf];
|
||||
*screen++ = printf_hextab[BYTE0(uvalue)>>4];
|
||||
*screen++ = printf_hextab[BYTE0(uvalue)&0xf];
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
@ -12,7 +12,7 @@ void main() {
|
||||
|
||||
void position_sprite(byte spriteno, word x, byte y) {
|
||||
SPRITES_YPOS[spriteno * 2] = y;
|
||||
SPRITES_XPOS[spriteno * 2] = <x;
|
||||
SPRITES_XPOS[spriteno * 2] = BYTE0(x);
|
||||
if (x > 255) {
|
||||
*SPRITES_XMSB |= 1 << spriteno;
|
||||
} else {
|
||||
|
@ -67,6 +67,6 @@ void anim() {
|
||||
|
||||
SPRITES_XPOS[0] = (byte)sprite_x;
|
||||
SPRITES_YPOS[0] = (byte)sprite_y;
|
||||
*SPRITES_XMSB = >sprite_x;
|
||||
*SPRITES_XMSB = BYTE1(sprite_x);
|
||||
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ void main() {
|
||||
char* screen = (char*)0x0400;
|
||||
int lasti = -1;
|
||||
for(int i=0;i<10;i++) {
|
||||
screen[i] = <lasti;
|
||||
screen[i] = (char)lasti;
|
||||
lasti = i;
|
||||
}
|
||||
}
|
@ -4,6 +4,6 @@ void main() {
|
||||
word p = { 2, 3 };
|
||||
word *q = &p;
|
||||
byte* const SCREEN = (char*)0x0400;
|
||||
SCREEN[0] = <*q;
|
||||
SCREEN[1] = >*q;
|
||||
SCREEN[0] = BYTE0(*q);
|
||||
SCREEN[1] = BYTE1(*q);
|
||||
}
|
@ -18,7 +18,7 @@ char idx = 0;
|
||||
|
||||
void print(struct Point p) {
|
||||
SCREEN[idx++] = p.x;
|
||||
SCREEN[idx++] = <p.y;
|
||||
SCREEN[idx++] = >p.y;
|
||||
SCREEN[idx++] = BYTE0(p.y);
|
||||
SCREEN[idx++] = BYTE1(p.y);
|
||||
SCREEN[idx++] = ' ';
|
||||
}
|
@ -27,8 +27,8 @@ void main() {
|
||||
struct Entry* entry = ENTRIES;
|
||||
while(entry) {
|
||||
SCREEN[idx++] = '0'+entry->value;
|
||||
SCREEN[idx++] = <entry->next;
|
||||
SCREEN[idx++] = >entry->next;
|
||||
SCREEN[idx++] = BYTE0(entry->next);
|
||||
SCREEN[idx++] = BYTE1(entry->next);
|
||||
SCREEN[idx++] = ' ';
|
||||
entry = entry->next;
|
||||
}
|
||||
|
@ -3,8 +3,8 @@ const dword PI_u4f28 = $3243f6a9;
|
||||
|
||||
void main() {
|
||||
byte* SCREEN = (char*)$400;
|
||||
SCREEN[0] = > > PI_u4f28;
|
||||
SCREEN[1] = < > PI_u4f28;
|
||||
SCREEN[2] = > < PI_u4f28;
|
||||
SCREEN[3] = < < PI_u4f28;
|
||||
SCREEN[0] = BYTE3(PI_u4f28);
|
||||
SCREEN[1] = BYTE2(PI_u4f28);
|
||||
SCREEN[2] = BYTE1(PI_u4f28);
|
||||
SCREEN[3] = BYTE0(PI_u4f28);
|
||||
}
|
@ -3,7 +3,7 @@
|
||||
void main() {
|
||||
byte* const D018 = (byte*)0xd018;
|
||||
byte* const screen = (byte*)0x0400;
|
||||
byte d018val = >(screen&$3fff);
|
||||
byte d018val = BYTE1(screen&$3fff);
|
||||
*D018 = d018val;
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,7 @@ void main() {
|
||||
|
||||
for (byte i: 0..10) {
|
||||
w = w - 12;
|
||||
SCREEN[i] = <w;
|
||||
SCREEN[i] = BYTE0(w);
|
||||
}
|
||||
|
||||
}
|
@ -8,5 +8,5 @@ char* ptr = (char*)0x1000;
|
||||
void main() {
|
||||
WORD w = (WORD)&ptr;
|
||||
w += 50;
|
||||
SCREEN[0] = <w;
|
||||
SCREEN[0] = (char)w;
|
||||
}
|
@ -8,8 +8,8 @@ byte* const SCREEN = (char*)$400;
|
||||
|
||||
void main() {
|
||||
SCREEN[0] = b;
|
||||
SCREEN[2] = <w;
|
||||
SCREEN[3] = >w;
|
||||
SCREEN[5] = (byte)<ptr;
|
||||
SCREEN[5] = (byte)>ptr;
|
||||
SCREEN[2] = BYTE0(w);
|
||||
SCREEN[3] = BYTE1(w);
|
||||
SCREEN[5] = BYTE0(ptr);
|
||||
SCREEN[5] = BYTE1(ptr);
|
||||
}
|
||||
|
@ -3,9 +3,9 @@ void main() {
|
||||
byte* const SCREEN = (char*)$400+6*40;
|
||||
word words[3] = (word*)$0400;
|
||||
word w1 = words[1];
|
||||
SCREEN[0] = <w1;
|
||||
SCREEN[1] = >w1;
|
||||
SCREEN[0] = BYTE0(w1);
|
||||
SCREEN[1] = BYTE1(w1);
|
||||
word w2 = words[2];
|
||||
SCREEN[2] = <w2;
|
||||
SCREEN[3] = >w2;
|
||||
SCREEN[2] = BYTE0(w2);
|
||||
SCREEN[3] = BYTE1(w2);
|
||||
}
|
||||
|
@ -6,8 +6,8 @@ void main() {
|
||||
byte idx = 0;
|
||||
for( byte i: 0..3) {
|
||||
word w = words[i];
|
||||
SCREEN[idx++] = >w;
|
||||
SCREEN[idx++] = <w;
|
||||
SCREEN[idx++] = BYTE1(w);
|
||||
SCREEN[idx++] = BYTE0(w);
|
||||
idx++;
|
||||
}
|
||||
|
||||
|
@ -9,12 +9,12 @@ void main() {
|
||||
|
||||
byte* const SCREEN = (byte*)$400;
|
||||
|
||||
SCREEN[0] = >words[0];
|
||||
SCREEN[1] = <words[0];
|
||||
SCREEN[2] = >words[1];
|
||||
SCREEN[3] = <words[1];
|
||||
SCREEN[4] = >words[2];
|
||||
SCREEN[5] = <words[2];
|
||||
SCREEN[0] = BYTE1(words[0]);
|
||||
SCREEN[1] = BYTE0(words[0]);
|
||||
SCREEN[2] = BYTE1(words[1]);
|
||||
SCREEN[3] = BYTE0(words[1]);
|
||||
SCREEN[4] = BYTE1(words[2]);
|
||||
SCREEN[5] = BYTE0(words[2]);
|
||||
|
||||
|
||||
|
||||
|
@ -3,13 +3,13 @@ void main() {
|
||||
byte* const SCREEN = (char*)$400+40*6;
|
||||
word* wp = (word*)$0400;
|
||||
wp++;
|
||||
SCREEN[0] = <*wp;
|
||||
SCREEN[1] = >*wp;
|
||||
SCREEN[0] = BYTE0(*wp);
|
||||
SCREEN[1] = BYTE1(*wp);
|
||||
wp++;
|
||||
SCREEN[2] = <*wp;
|
||||
SCREEN[3] = >*wp;
|
||||
SCREEN[2] = BYTE0(*wp);
|
||||
SCREEN[3] = BYTE1(*wp);
|
||||
wp--;
|
||||
SCREEN[4] = <*wp;
|
||||
SCREEN[5] = >*wp;
|
||||
SCREEN[4] = BYTE0(*wp);
|
||||
SCREEN[5] = BYTE1(*wp);
|
||||
|
||||
}
|
||||
|
@ -7,8 +7,8 @@ void main() {
|
||||
word* wp = words;
|
||||
for( byte i: 0..3) {
|
||||
word w = *(wp++);
|
||||
SCREEN[idx++] = <w;
|
||||
SCREEN[idx++] = >w;
|
||||
SCREEN[idx++] = BYTE0(w);
|
||||
SCREEN[idx++] = BYTE1(w);
|
||||
idx++;
|
||||
}
|
||||
|
||||
|
@ -3,9 +3,9 @@ void main() {
|
||||
word* words = (word*)$0400;
|
||||
byte* const SCREEN = (byte*)$400+6*40;
|
||||
word w1 = *(words+1);
|
||||
SCREEN[0] = <w1;
|
||||
SCREEN[1] = >w1;
|
||||
SCREEN[0] = BYTE0(w1);
|
||||
SCREEN[1] = BYTE1(w1);
|
||||
word w2 = *(words+2);
|
||||
SCREEN[2] = <w2;
|
||||
SCREEN[3] = >w2;
|
||||
SCREEN[2] = BYTE0(w2);
|
||||
SCREEN[3] = BYTE1(w2);
|
||||
}
|
||||
|
@ -6,8 +6,8 @@ void main() {
|
||||
byte idx = 0;
|
||||
for( byte i: 0..3) {
|
||||
word w = *(words+i);
|
||||
SCREEN[idx++] = <w;
|
||||
SCREEN[idx++] = >w;
|
||||
SCREEN[idx++] = BYTE0(w);
|
||||
SCREEN[idx++] = BYTE1(w);
|
||||
idx++;
|
||||
}
|
||||
|
||||
|
@ -425,11 +425,11 @@ plot: {
|
||||
lda.z location+1
|
||||
adc #>BITMAP
|
||||
sta.z location+1
|
||||
// <y
|
||||
// BYTE0(y)
|
||||
lda.z y
|
||||
// <y & 7
|
||||
// BYTE0(y) & 7
|
||||
and #7
|
||||
// location += <y & 7
|
||||
// location += BYTE0(y) & 7
|
||||
clc
|
||||
adc.z location
|
||||
sta.z location
|
||||
|
@ -1854,7 +1854,7 @@ plot: {
|
||||
lda.z location+1
|
||||
adc #>BITMAP
|
||||
sta.z location+1
|
||||
// [67] plot::$9 = < plot::y#8 -- vbuaa=_lo_vwsz1
|
||||
// [67] plot::$9 = < plot::y#8 -- vbuaa=_byte0_vwsz1
|
||||
lda.z y
|
||||
// [68] plot::$10 = plot::$9 & 7 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #7
|
||||
@ -2692,13 +2692,13 @@ plot: {
|
||||
lda.z location+1
|
||||
adc #>BITMAP
|
||||
sta.z location+1
|
||||
// <y
|
||||
// [67] plot::$9 = < plot::y#8 -- vbuaa=_lo_vwsz1
|
||||
// BYTE0(y)
|
||||
// [67] plot::$9 = < plot::y#8 -- vbuaa=_byte0_vwsz1
|
||||
lda.z y
|
||||
// <y & 7
|
||||
// BYTE0(y) & 7
|
||||
// [68] plot::$10 = plot::$9 & 7 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #7
|
||||
// location += <y & 7
|
||||
// location += BYTE0(y) & 7
|
||||
// [69] plot::location#2 = plot::location#1 + plot::$10 -- pbuz1=pbuz1_plus_vbuaa
|
||||
clc
|
||||
adc.z location
|
||||
|
@ -336,8 +336,8 @@ circle: {
|
||||
// plot(signed word zp(8) x, signed word zp($a) y)
|
||||
plot: {
|
||||
.label __0 = $c
|
||||
.label __3 = $a
|
||||
.label __4 = $e
|
||||
.label __2 = $a
|
||||
.label __3 = $e
|
||||
.label x = 8
|
||||
.label y = $a
|
||||
.label location = $c
|
||||
@ -358,11 +358,10 @@ plot: {
|
||||
lda.z location+1
|
||||
adc #>BITMAP
|
||||
sta.z location+1
|
||||
// <y
|
||||
// (char)y & 7
|
||||
lda.z y
|
||||
// <y & 7
|
||||
and #7
|
||||
// location += <y & 7
|
||||
// location += (char)y & 7
|
||||
clc
|
||||
adc.z location
|
||||
sta.z location
|
||||
@ -370,53 +369,53 @@ plot: {
|
||||
inc.z location+1
|
||||
!:
|
||||
// y >> 3
|
||||
lda.z __3+1
|
||||
lda.z __2+1
|
||||
cmp #$80
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
lda.z __3+1
|
||||
ror.z __2+1
|
||||
ror.z __2
|
||||
lda.z __2+1
|
||||
cmp #$80
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
lda.z __3+1
|
||||
ror.z __2+1
|
||||
ror.z __2
|
||||
lda.z __2+1
|
||||
cmp #$80
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
ror.z __2+1
|
||||
ror.z __2
|
||||
// (y >> 3) * 320
|
||||
lda.z __3
|
||||
lda.z __2
|
||||
asl
|
||||
sta.z __7
|
||||
lda.z __3+1
|
||||
lda.z __2+1
|
||||
rol
|
||||
sta.z __7+1
|
||||
asl.z __7
|
||||
rol.z __7+1
|
||||
lda.z __8
|
||||
clc
|
||||
adc.z __3
|
||||
adc.z __2
|
||||
sta.z __8
|
||||
lda.z __8+1
|
||||
adc.z __3+1
|
||||
adc.z __2+1
|
||||
sta.z __8+1
|
||||
lda.z __4+1
|
||||
lda.z __3+1
|
||||
sta.z $ff
|
||||
lda.z __4
|
||||
sta.z __4+1
|
||||
lda.z __3
|
||||
sta.z __3+1
|
||||
lda #0
|
||||
sta.z __4
|
||||
sta.z __3
|
||||
lsr.z $ff
|
||||
ror.z __4+1
|
||||
ror.z __4
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
lsr.z $ff
|
||||
ror.z __4+1
|
||||
ror.z __4
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
// location += ((y >> 3) * 320)
|
||||
lda.z location
|
||||
clc
|
||||
adc.z __4
|
||||
adc.z __3
|
||||
sta.z location
|
||||
lda.z location+1
|
||||
adc.z __4+1
|
||||
adc.z __3+1
|
||||
sta.z location+1
|
||||
// x & 7
|
||||
lda #7
|
||||
|
@ -117,17 +117,17 @@ plot: scope:[plot] from circle::@10 circle::@11 circle::@12 circle::@4 circle::
|
||||
[55] plot::x#8 = phi( circle::@10/plot::x#5, circle::@11/plot::x#6, circle::@12/plot::x#7, circle::@4/plot::x#0, circle::@6/plot::x#1, circle::@7/plot::x#2, circle::@8/plot::x#3, circle::@9/plot::x#4 )
|
||||
[56] plot::$0 = plot::x#8 & $fff8
|
||||
[57] plot::location#1 = BITMAP + plot::$0
|
||||
[58] plot::$1 = < plot::y#8
|
||||
[59] plot::$2 = plot::$1 & 7
|
||||
[60] plot::location#2 = plot::location#1 + plot::$2
|
||||
[61] plot::$3 = plot::y#8 >> 3
|
||||
[62] plot::$7 = plot::$3 << 2
|
||||
[63] plot::$8 = plot::$7 + plot::$3
|
||||
[64] plot::$4 = plot::$8 << 6
|
||||
[65] plot::location#3 = plot::location#2 + plot::$4
|
||||
[66] plot::$5 = plot::x#8 & 7
|
||||
[67] plot::$6 = *plot::location#3 | bitmask[plot::$5]
|
||||
[68] *plot::location#3 = plot::$6
|
||||
[58] plot::$6 = (byte)plot::y#8
|
||||
[59] plot::$1 = plot::$6 & 7
|
||||
[60] plot::location#2 = plot::location#1 + plot::$1
|
||||
[61] plot::$2 = plot::y#8 >> 3
|
||||
[62] plot::$7 = plot::$2 << 2
|
||||
[63] plot::$8 = plot::$7 + plot::$2
|
||||
[64] plot::$3 = plot::$8 << 6
|
||||
[65] plot::location#3 = plot::location#2 + plot::$3
|
||||
[66] plot::$4 = plot::x#8 & 7
|
||||
[67] plot::$5 = *plot::location#3 | bitmask[plot::$4]
|
||||
[68] *plot::location#3 = plot::$5
|
||||
to:plot::@return
|
||||
plot::@return: scope:[plot] from plot
|
||||
[69] return
|
||||
|
@ -202,15 +202,15 @@ plot: scope:[plot] from circle::@10 circle::@11 circle::@12 circle::@4 circle::
|
||||
plot::location#0 = BITMAP
|
||||
plot::$0 = plot::x#8 & $fff8
|
||||
plot::location#1 = plot::location#0 + plot::$0
|
||||
plot::$1 = < plot::y#8
|
||||
plot::$2 = plot::$1 & 7
|
||||
plot::location#2 = plot::location#1 + plot::$2
|
||||
plot::$3 = plot::y#8 >> 3
|
||||
plot::$4 = plot::$3 * $140
|
||||
plot::location#3 = plot::location#2 + plot::$4
|
||||
plot::$5 = plot::x#8 & 7
|
||||
plot::$6 = *plot::location#3 | bitmask[plot::$5]
|
||||
*plot::location#3 = plot::$6
|
||||
plot::$6 = (byte)plot::y#8
|
||||
plot::$1 = plot::$6 & 7
|
||||
plot::location#2 = plot::location#1 + plot::$1
|
||||
plot::$2 = plot::y#8 >> 3
|
||||
plot::$3 = plot::$2 * $140
|
||||
plot::location#3 = plot::location#2 + plot::$3
|
||||
plot::$4 = plot::x#8 & 7
|
||||
plot::$5 = *plot::location#3 | bitmask[plot::$4]
|
||||
*plot::location#3 = plot::$5
|
||||
to:plot::@return
|
||||
plot::@return: scope:[plot] from plot
|
||||
return
|
||||
@ -407,11 +407,11 @@ byte fill::val#4
|
||||
void main()
|
||||
void plot(signed word plot::x , signed word plot::y)
|
||||
number~ plot::$0
|
||||
byte~ plot::$1
|
||||
number~ plot::$2
|
||||
signed word~ plot::$3
|
||||
number~ plot::$1
|
||||
signed word~ plot::$2
|
||||
number~ plot::$3
|
||||
number~ plot::$4
|
||||
number~ plot::$5
|
||||
byte~ plot::$5
|
||||
byte~ plot::$6
|
||||
byte* plot::location
|
||||
byte* plot::location#0
|
||||
@ -464,13 +464,13 @@ Adding number conversion cast (snumber) $a in circle::$8 = circle::$7 + $a
|
||||
Adding number conversion cast (snumber) circle::$8 in circle::$8 = circle::$7 + (snumber)$a
|
||||
Adding number conversion cast (snumber) $fff8 in plot::$0 = plot::x#8 & $fff8
|
||||
Adding number conversion cast (snumber) plot::$0 in plot::$0 = plot::x#8 & (snumber)$fff8
|
||||
Adding number conversion cast (unumber) 7 in plot::$2 = plot::$1 & 7
|
||||
Adding number conversion cast (unumber) plot::$2 in plot::$2 = plot::$1 & (unumber)7
|
||||
Adding number conversion cast (snumber) 3 in plot::$3 = plot::y#8 >> 3
|
||||
Adding number conversion cast (snumber) $140 in plot::$4 = plot::$3 * $140
|
||||
Adding number conversion cast (snumber) plot::$4 in plot::$4 = plot::$3 * (snumber)$140
|
||||
Adding number conversion cast (snumber) 7 in plot::$5 = plot::x#8 & 7
|
||||
Adding number conversion cast (snumber) plot::$5 in plot::$5 = plot::x#8 & (snumber)7
|
||||
Adding number conversion cast (unumber) 7 in plot::$1 = plot::$6 & 7
|
||||
Adding number conversion cast (unumber) plot::$1 in plot::$1 = plot::$6 & (unumber)7
|
||||
Adding number conversion cast (snumber) 3 in plot::$2 = plot::y#8 >> 3
|
||||
Adding number conversion cast (snumber) $140 in plot::$3 = plot::$2 * $140
|
||||
Adding number conversion cast (snumber) plot::$3 in plot::$3 = plot::$2 * (snumber)$140
|
||||
Adding number conversion cast (snumber) 7 in plot::$4 = plot::x#8 & 7
|
||||
Adding number conversion cast (snumber) plot::$4 in plot::$4 = plot::x#8 & (snumber)7
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Adding number conversion cast (unumber) $40 in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/$40|(word)BITMAP&(unumber)$3fff/$400
|
||||
Adding number conversion cast (unumber) $400 in *VICII_MEMORY = (byte)(word)SCREEN&(unumber)$3fff/(unumber)$40|(word)BITMAP&(unumber)$3fff/$400
|
||||
@ -543,9 +543,9 @@ Inferred type updated to signed word in circle::$11 = circle::$10 + 6
|
||||
Inferred type updated to signed word in circle::$4 = circle::y#3 - 1
|
||||
Inferred type updated to signed word in circle::$8 = circle::$7 + $a
|
||||
Inferred type updated to signed word in plot::$0 = plot::x#8 & $fff8
|
||||
Inferred type updated to byte in plot::$2 = plot::$1 & 7
|
||||
Inferred type updated to signed word in plot::$4 = plot::$3 * $140
|
||||
Inferred type updated to signed byte in plot::$5 = plot::x#8 & 7
|
||||
Inferred type updated to byte in plot::$1 = plot::$6 & 7
|
||||
Inferred type updated to signed word in plot::$3 = plot::$2 * $140
|
||||
Inferred type updated to signed byte in plot::$4 = plot::x#8 & 7
|
||||
Alias circle::y#0 = circle::r#1
|
||||
Alias circle::p#0 = circle::$1
|
||||
Alias circle::p#3 = circle::p#6 circle::p#4 circle::p#5
|
||||
@ -631,7 +631,7 @@ Constant right-side identified [6] circle::p#0 = 3 - circle::$0
|
||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||
Constant circle::p#0 = 3-circle::$0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Rewriting multiplication to use shift and addition[51] plot::$4 = plot::$3 * $140
|
||||
Rewriting multiplication to use shift and addition[51] plot::$3 = plot::$2 * $140
|
||||
Inlining constant with var siblings circle::x1#0
|
||||
Inlining constant with var siblings circle::p#0
|
||||
Inlining constant with var siblings plot::location#0
|
||||
@ -650,7 +650,7 @@ Constant inlined fill::size#1 = (signed word)$28*$19
|
||||
Constant inlined fill::size#0 = (signed word)$28*$19*8
|
||||
Constant inlined circle::p#0 = 3-circle::r#0<<1
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Alias plot::$4 = plot::$9
|
||||
Alias plot::$3 = plot::$9
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Finalized unsigned number type (byte) $28
|
||||
Finalized unsigned number type (byte) $19
|
||||
@ -820,17 +820,17 @@ plot: scope:[plot] from circle::@10 circle::@11 circle::@12 circle::@4 circle::
|
||||
[55] plot::x#8 = phi( circle::@10/plot::x#5, circle::@11/plot::x#6, circle::@12/plot::x#7, circle::@4/plot::x#0, circle::@6/plot::x#1, circle::@7/plot::x#2, circle::@8/plot::x#3, circle::@9/plot::x#4 )
|
||||
[56] plot::$0 = plot::x#8 & $fff8
|
||||
[57] plot::location#1 = BITMAP + plot::$0
|
||||
[58] plot::$1 = < plot::y#8
|
||||
[59] plot::$2 = plot::$1 & 7
|
||||
[60] plot::location#2 = plot::location#1 + plot::$2
|
||||
[61] plot::$3 = plot::y#8 >> 3
|
||||
[62] plot::$7 = plot::$3 << 2
|
||||
[63] plot::$8 = plot::$7 + plot::$3
|
||||
[64] plot::$4 = plot::$8 << 6
|
||||
[65] plot::location#3 = plot::location#2 + plot::$4
|
||||
[66] plot::$5 = plot::x#8 & 7
|
||||
[67] plot::$6 = *plot::location#3 | bitmask[plot::$5]
|
||||
[68] *plot::location#3 = plot::$6
|
||||
[58] plot::$6 = (byte)plot::y#8
|
||||
[59] plot::$1 = plot::$6 & 7
|
||||
[60] plot::location#2 = plot::location#1 + plot::$1
|
||||
[61] plot::$2 = plot::y#8 >> 3
|
||||
[62] plot::$7 = plot::$2 << 2
|
||||
[63] plot::$8 = plot::$7 + plot::$2
|
||||
[64] plot::$3 = plot::$8 << 6
|
||||
[65] plot::location#3 = plot::location#2 + plot::$3
|
||||
[66] plot::$4 = plot::x#8 & 7
|
||||
[67] plot::$5 = *plot::location#3 | bitmask[plot::$4]
|
||||
[68] *plot::location#3 = plot::$5
|
||||
to:plot::@return
|
||||
plot::@return: scope:[plot] from plot
|
||||
[69] return
|
||||
@ -875,10 +875,10 @@ void main()
|
||||
void plot(signed word plot::x , signed word plot::y)
|
||||
signed word~ plot::$0 2002.0
|
||||
byte~ plot::$1 2002.0
|
||||
byte~ plot::$2 2002.0
|
||||
signed word~ plot::$3 1501.5
|
||||
signed word~ plot::$4 2002.0
|
||||
signed byte~ plot::$5 2002.0
|
||||
signed word~ plot::$2 1501.5
|
||||
signed word~ plot::$3 2002.0
|
||||
signed byte~ plot::$4 2002.0
|
||||
byte~ plot::$5 2002.0
|
||||
byte~ plot::$6 2002.0
|
||||
signed word~ plot::$7 2002.0
|
||||
signed word~ plot::$8 2002.0
|
||||
@ -905,7 +905,7 @@ signed word plot::y#4 202.0
|
||||
signed word plot::y#5 202.0
|
||||
signed word plot::y#6 202.0
|
||||
signed word plot::y#7 202.0
|
||||
signed word plot::y#8 468.33333333333337
|
||||
signed word plot::y#8 301.5
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ fill::size#2 ]
|
||||
@ -924,16 +924,16 @@ Added variable circle::$9 to live range equivalence class [ circle::$9 ]
|
||||
Added variable circle::$10 to live range equivalence class [ circle::$10 ]
|
||||
Added variable plot::$0 to live range equivalence class [ plot::$0 ]
|
||||
Added variable plot::location#1 to live range equivalence class [ plot::location#1 ]
|
||||
Added variable plot::$6 to live range equivalence class [ plot::$6 ]
|
||||
Added variable plot::$1 to live range equivalence class [ plot::$1 ]
|
||||
Added variable plot::$2 to live range equivalence class [ plot::$2 ]
|
||||
Added variable plot::location#2 to live range equivalence class [ plot::location#2 ]
|
||||
Added variable plot::$3 to live range equivalence class [ plot::$3 ]
|
||||
Added variable plot::$2 to live range equivalence class [ plot::$2 ]
|
||||
Added variable plot::$7 to live range equivalence class [ plot::$7 ]
|
||||
Added variable plot::$8 to live range equivalence class [ plot::$8 ]
|
||||
Added variable plot::$4 to live range equivalence class [ plot::$4 ]
|
||||
Added variable plot::$3 to live range equivalence class [ plot::$3 ]
|
||||
Added variable plot::location#3 to live range equivalence class [ plot::location#3 ]
|
||||
Added variable plot::$4 to live range equivalence class [ plot::$4 ]
|
||||
Added variable plot::$5 to live range equivalence class [ plot::$5 ]
|
||||
Added variable plot::$6 to live range equivalence class [ plot::$6 ]
|
||||
Complete equivalence classes
|
||||
[ fill::size#2 ]
|
||||
[ fill::val#4 ]
|
||||
@ -951,16 +951,16 @@ Complete equivalence classes
|
||||
[ circle::$10 ]
|
||||
[ plot::$0 ]
|
||||
[ plot::location#1 ]
|
||||
[ plot::$6 ]
|
||||
[ plot::$1 ]
|
||||
[ plot::$2 ]
|
||||
[ plot::location#2 ]
|
||||
[ plot::$3 ]
|
||||
[ plot::$2 ]
|
||||
[ plot::$7 ]
|
||||
[ plot::$8 ]
|
||||
[ plot::$4 ]
|
||||
[ plot::$3 ]
|
||||
[ plot::location#3 ]
|
||||
[ plot::$4 ]
|
||||
[ plot::$5 ]
|
||||
[ plot::$6 ]
|
||||
Allocated zp[2]:2 [ fill::size#2 ]
|
||||
Allocated zp[1]:4 [ fill::val#4 ]
|
||||
Allocated zp[2]:5 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
@ -977,16 +977,16 @@ Allocated zp[2]:25 [ circle::$9 ]
|
||||
Allocated zp[2]:27 [ circle::$10 ]
|
||||
Allocated zp[2]:29 [ plot::$0 ]
|
||||
Allocated zp[2]:31 [ plot::location#1 ]
|
||||
Allocated zp[1]:33 [ plot::$1 ]
|
||||
Allocated zp[1]:34 [ plot::$2 ]
|
||||
Allocated zp[1]:33 [ plot::$6 ]
|
||||
Allocated zp[1]:34 [ plot::$1 ]
|
||||
Allocated zp[2]:35 [ plot::location#2 ]
|
||||
Allocated zp[2]:37 [ plot::$3 ]
|
||||
Allocated zp[2]:37 [ plot::$2 ]
|
||||
Allocated zp[2]:39 [ plot::$7 ]
|
||||
Allocated zp[2]:41 [ plot::$8 ]
|
||||
Allocated zp[2]:43 [ plot::$4 ]
|
||||
Allocated zp[2]:43 [ plot::$3 ]
|
||||
Allocated zp[2]:45 [ plot::location#3 ]
|
||||
Allocated zp[1]:47 [ plot::$5 ]
|
||||
Allocated zp[1]:48 [ plot::$6 ]
|
||||
Allocated zp[1]:47 [ plot::$4 ]
|
||||
Allocated zp[1]:48 [ plot::$5 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *BORDER_COLOR = BLUE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
@ -1024,15 +1024,16 @@ Statement [53] circle::$10 = circle::p#3 + circle::$9 [ circle::x1#10 circle::y#
|
||||
Statement [54] circle::p#1 = circle::$10 + 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( circle:7 [ circle::x1#10 circle::y#13 circle::p#1 ] { } ) always clobbers reg byte a
|
||||
Statement [56] plot::$0 = plot::x#8 & $fff8 [ plot::x#8 plot::y#8 plot::$0 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [57] plot::location#1 = BITMAP + plot::$0 [ plot::x#8 plot::y#8 plot::location#1 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [60] plot::location#2 = plot::location#1 + plot::$2 [ plot::x#8 plot::y#8 plot::location#2 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [61] plot::$3 = plot::y#8 >> 3 [ plot::x#8 plot::location#2 plot::$3 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [62] plot::$7 = plot::$3 << 2 [ plot::x#8 plot::location#2 plot::$3 plot::$7 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [63] plot::$8 = plot::$7 + plot::$3 [ plot::x#8 plot::location#2 plot::$8 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [64] plot::$4 = plot::$8 << 6 [ plot::x#8 plot::location#2 plot::$4 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [65] plot::location#3 = plot::location#2 + plot::$4 [ plot::x#8 plot::location#3 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [66] plot::$5 = plot::x#8 & 7 [ plot::location#3 plot::$5 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [67] plot::$6 = *plot::location#3 | bitmask[plot::$5] [ plot::location#3 plot::$6 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [68] *plot::location#3 = plot::$6 [ ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y
|
||||
Statement [58] plot::$6 = (byte)plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$6 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [60] plot::location#2 = plot::location#1 + plot::$1 [ plot::x#8 plot::y#8 plot::location#2 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [61] plot::$2 = plot::y#8 >> 3 [ plot::x#8 plot::location#2 plot::$2 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [62] plot::$7 = plot::$2 << 2 [ plot::x#8 plot::location#2 plot::$2 plot::$7 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [63] plot::$8 = plot::$7 + plot::$2 [ plot::x#8 plot::location#2 plot::$8 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [64] plot::$3 = plot::$8 << 6 [ plot::x#8 plot::location#2 plot::$3 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [65] plot::location#3 = plot::location#2 + plot::$3 [ plot::x#8 plot::location#3 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [66] plot::$4 = plot::x#8 & 7 [ plot::location#3 plot::$4 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [67] plot::$5 = *plot::location#3 | bitmask[plot::$4] [ plot::location#3 plot::$5 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [68] *plot::location#3 = plot::$5 [ ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y
|
||||
Statement [4] *BORDER_COLOR = BLUE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] *VICII_MEMORY = (byte)(word)SCREEN&$3fff/$40|(word)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
@ -1067,15 +1068,16 @@ Statement [53] circle::$10 = circle::p#3 + circle::$9 [ circle::x1#10 circle::y#
|
||||
Statement [54] circle::p#1 = circle::$10 + 6 [ circle::x1#10 circle::y#13 circle::p#1 ] ( circle:7 [ circle::x1#10 circle::y#13 circle::p#1 ] { } ) always clobbers reg byte a
|
||||
Statement [56] plot::$0 = plot::x#8 & $fff8 [ plot::x#8 plot::y#8 plot::$0 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::$0 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [57] plot::location#1 = BITMAP + plot::$0 [ plot::x#8 plot::y#8 plot::location#1 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [60] plot::location#2 = plot::location#1 + plot::$2 [ plot::x#8 plot::y#8 plot::location#2 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [61] plot::$3 = plot::y#8 >> 3 [ plot::x#8 plot::location#2 plot::$3 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [62] plot::$7 = plot::$3 << 2 [ plot::x#8 plot::location#2 plot::$3 plot::$7 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 plot::$7 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [63] plot::$8 = plot::$7 + plot::$3 [ plot::x#8 plot::location#2 plot::$8 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [64] plot::$4 = plot::$8 << 6 [ plot::x#8 plot::location#2 plot::$4 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$4 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [65] plot::location#3 = plot::location#2 + plot::$4 [ plot::x#8 plot::location#3 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [66] plot::$5 = plot::x#8 & 7 [ plot::location#3 plot::$5 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [67] plot::$6 = *plot::location#3 | bitmask[plot::$5] [ plot::location#3 plot::$6 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$6 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [68] *plot::location#3 = plot::$6 [ ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y
|
||||
Statement [58] plot::$6 = (byte)plot::y#8 [ plot::x#8 plot::y#8 plot::location#1 plot::$6 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#1 plot::$6 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [60] plot::location#2 = plot::location#1 + plot::$1 [ plot::x#8 plot::y#8 plot::location#2 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::y#8 plot::location#2 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [61] plot::$2 = plot::y#8 >> 3 [ plot::x#8 plot::location#2 plot::$2 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [62] plot::$7 = plot::$2 << 2 [ plot::x#8 plot::location#2 plot::$2 plot::$7 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$2 plot::$7 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [63] plot::$8 = plot::$7 + plot::$2 [ plot::x#8 plot::location#2 plot::$8 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$8 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [64] plot::$3 = plot::$8 << 6 [ plot::x#8 plot::location#2 plot::$3 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#2 plot::$3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [65] plot::location#3 = plot::location#2 + plot::$3 [ plot::x#8 plot::location#3 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::x#8 plot::location#3 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [66] plot::$4 = plot::x#8 & 7 [ plot::location#3 plot::$4 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [67] plot::$5 = *plot::location#3 | bitmask[plot::$4] [ plot::location#3 plot::$5 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [68] *plot::location#3 = plot::$5 [ ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y
|
||||
Potential registers zp[2]:2 [ fill::size#2 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:4 [ fill::val#4 ] : zp[1]:4 , reg byte x ,
|
||||
Potential registers zp[2]:5 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp[2]:5 ,
|
||||
@ -1092,19 +1094,19 @@ Potential registers zp[2]:25 [ circle::$9 ] : zp[2]:25 ,
|
||||
Potential registers zp[2]:27 [ circle::$10 ] : zp[2]:27 ,
|
||||
Potential registers zp[2]:29 [ plot::$0 ] : zp[2]:29 ,
|
||||
Potential registers zp[2]:31 [ plot::location#1 ] : zp[2]:31 ,
|
||||
Potential registers zp[1]:33 [ plot::$1 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:34 [ plot::$2 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:33 [ plot::$6 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:34 [ plot::$1 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:35 [ plot::location#2 ] : zp[2]:35 ,
|
||||
Potential registers zp[2]:37 [ plot::$3 ] : zp[2]:37 ,
|
||||
Potential registers zp[2]:37 [ plot::$2 ] : zp[2]:37 ,
|
||||
Potential registers zp[2]:39 [ plot::$7 ] : zp[2]:39 ,
|
||||
Potential registers zp[2]:41 [ plot::$8 ] : zp[2]:41 ,
|
||||
Potential registers zp[2]:43 [ plot::$4 ] : zp[2]:43 ,
|
||||
Potential registers zp[2]:43 [ plot::$3 ] : zp[2]:43 ,
|
||||
Potential registers zp[2]:45 [ plot::location#3 ] : zp[2]:45 ,
|
||||
Potential registers zp[1]:47 [ plot::$5 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:48 [ plot::$6 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:47 [ plot::$4 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:48 [ plot::$5 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [plot] 2,084.33: zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] 2,002: zp[2]:29 [ plot::$0 ] 2,002: zp[1]:33 [ plot::$1 ] 2,002: zp[1]:34 [ plot::$2 ] 2,002: zp[2]:39 [ plot::$7 ] 2,002: zp[2]:41 [ plot::$8 ] 2,002: zp[2]:43 [ plot::$4 ] 2,002: zp[1]:47 [ plot::$5 ] 2,002: zp[1]:48 [ plot::$6 ] 1,501.5: zp[2]:37 [ plot::$3 ] 1,063.45: zp[2]:13 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] 1,001: zp[2]:45 [ plot::location#3 ] 667.33: zp[2]:31 [ plot::location#1 ] 400.4: zp[2]:35 [ plot::location#2 ]
|
||||
Uplift Scope [plot] 2,002: zp[2]:29 [ plot::$0 ] 2,002: zp[1]:33 [ plot::$6 ] 2,002: zp[1]:34 [ plot::$1 ] 2,002: zp[2]:39 [ plot::$7 ] 2,002: zp[2]:41 [ plot::$8 ] 2,002: zp[2]:43 [ plot::$3 ] 2,002: zp[1]:47 [ plot::$4 ] 2,002: zp[1]:48 [ plot::$5 ] 1,917.5: zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] 1,501.5: zp[2]:37 [ plot::$2 ] 1,063.45: zp[2]:13 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] 1,001: zp[2]:45 [ plot::location#3 ] 667.33: zp[2]:31 [ plot::location#1 ] 400.4: zp[2]:35 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 473.37: zp[2]:11 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] 238.47: zp[2]:7 [ circle::x1#10 circle::x1#1 ] 202: zp[2]:19 [ circle::$5 ] 202: zp[2]:21 [ circle::$6 ] 202: zp[2]:23 [ circle::$7 ] 202: zp[2]:25 [ circle::$9 ] 202: zp[2]:27 [ circle::$10 ] 170.66: zp[2]:9 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplift Scope [fill] 351.33: zp[2]:5 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 22.4: zp[2]:17 [ fill::end#0 ] 16.83: zp[1]:4 [ fill::val#4 ] 11: zp[2]:2 [ fill::size#2 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
@ -1113,7 +1115,7 @@ Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plot] best 6407 combination zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] zp[2]:29 [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] zp[2]:39 [ plot::$7 ] zp[2]:41 [ plot::$8 ] zp[2]:43 [ plot::$4 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] zp[2]:37 [ plot::$3 ] zp[2]:13 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] zp[2]:45 [ plot::location#3 ] zp[2]:31 [ plot::location#1 ] zp[2]:35 [ plot::location#2 ]
|
||||
Uplifting [plot] best 6407 combination zp[2]:29 [ plot::$0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$1 ] zp[2]:39 [ plot::$7 ] zp[2]:41 [ plot::$8 ] zp[2]:43 [ plot::$3 ] reg byte a [ plot::$4 ] reg byte a [ plot::$5 ] zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] zp[2]:37 [ plot::$2 ] zp[2]:13 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] zp[2]:45 [ plot::location#3 ] zp[2]:31 [ plot::location#1 ] zp[2]:35 [ plot::location#2 ]
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [circle] best 6407 combination zp[2]:11 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:7 [ circle::x1#10 circle::x1#1 ] zp[2]:19 [ circle::$5 ] zp[2]:21 [ circle::$6 ] zp[2]:23 [ circle::$7 ] zp[2]:25 [ circle::$9 ] zp[2]:27 [ circle::$10 ] zp[2]:9 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplifting [fill] best 6391 combination zp[2]:5 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:17 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:2 [ fill::size#2 ]
|
||||
@ -1125,24 +1127,24 @@ Uplifting [] best 6391 combination
|
||||
Coalescing zero page register [ zp[2]:11 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:23 [ circle::$7 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:11 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 ] ] with [ zp[2]:27 [ circle::$10 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:2 [ fill::size#2 ] ] with [ zp[2]:17 [ fill::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] ] with [ zp[2]:37 [ plot::$3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] ] with [ zp[2]:37 [ plot::$2 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:19 [ circle::$5 ] ] with [ zp[2]:21 [ circle::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:29 [ plot::$0 ] ] with [ zp[2]:31 [ plot::location#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:35 [ plot::location#2 ] ] with [ zp[2]:45 [ plot::location#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:39 [ plot::$7 ] ] with [ zp[2]:41 [ plot::$8 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:29 [ plot::$0 plot::location#1 ] ] with [ zp[2]:35 [ plot::location#2 plot::location#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:39 [ plot::$7 plot::$8 ] ] with [ zp[2]:43 [ plot::$4 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:39 [ plot::$7 plot::$8 ] ] with [ zp[2]:43 [ plot::$3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:7 [ circle::x1#10 circle::x1#1 ] ] with [ zp[2]:2 [ fill::size#2 fill::end#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:9 [ circle::y#13 circle::y#10 circle::y#1 ] ] with [ zp[2]:5 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:19 [ circle::$5 circle::$6 ] ] with [ zp[2]:13 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] ]
|
||||
Coalescing zero page register [ zp[2]:25 [ circle::$9 ] ] with [ zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$3 ] ]
|
||||
Coalescing zero page register [ zp[2]:25 [ circle::$9 ] ] with [ zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ] ]
|
||||
Allocated (was zp[2]:7) zp[2]:2 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
Allocated (was zp[2]:9) zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
Allocated (was zp[2]:11) zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
Allocated (was zp[2]:19) zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated (was zp[2]:25) zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$3 ]
|
||||
Allocated (was zp[2]:25) zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ]
|
||||
Allocated (was zp[2]:29) zp[2]:12 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
Allocated (was zp[2]:39) zp[2]:14 [ plot::$7 plot::$8 plot::$4 ]
|
||||
Allocated (was zp[2]:39) zp[2]:14 [ plot::$7 plot::$8 plot::$3 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
@ -1623,8 +1625,8 @@ circle: {
|
||||
// plot(signed word zp(8) x, signed word zp($a) y)
|
||||
plot: {
|
||||
.label __0 = $c
|
||||
.label __3 = $a
|
||||
.label __4 = $e
|
||||
.label __2 = $a
|
||||
.label __3 = $e
|
||||
.label x = 8
|
||||
.label y = $a
|
||||
.label location = $c
|
||||
@ -1645,77 +1647,77 @@ plot: {
|
||||
lda.z location+1
|
||||
adc #>BITMAP
|
||||
sta.z location+1
|
||||
// [58] plot::$1 = < plot::y#8 -- vbuaa=_lo_vwsz1
|
||||
// [58] plot::$6 = (byte)plot::y#8 -- vbuaa=_byte_vwsz1
|
||||
lda.z y
|
||||
// [59] plot::$2 = plot::$1 & 7 -- vbuaa=vbuaa_band_vbuc1
|
||||
// [59] plot::$1 = plot::$6 & 7 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #7
|
||||
// [60] plot::location#2 = plot::location#1 + plot::$2 -- pbuz1=pbuz1_plus_vbuaa
|
||||
// [60] plot::location#2 = plot::location#1 + plot::$1 -- pbuz1=pbuz1_plus_vbuaa
|
||||
clc
|
||||
adc.z location
|
||||
sta.z location
|
||||
bcc !+
|
||||
inc.z location+1
|
||||
!:
|
||||
// [61] plot::$3 = plot::y#8 >> 3 -- vwsz1=vwsz1_ror_3
|
||||
lda.z __3+1
|
||||
// [61] plot::$2 = plot::y#8 >> 3 -- vwsz1=vwsz1_ror_3
|
||||
lda.z __2+1
|
||||
cmp #$80
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
lda.z __3+1
|
||||
ror.z __2+1
|
||||
ror.z __2
|
||||
lda.z __2+1
|
||||
cmp #$80
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
lda.z __3+1
|
||||
ror.z __2+1
|
||||
ror.z __2
|
||||
lda.z __2+1
|
||||
cmp #$80
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
// [62] plot::$7 = plot::$3 << 2 -- vwsz1=vwsz2_rol_2
|
||||
lda.z __3
|
||||
ror.z __2+1
|
||||
ror.z __2
|
||||
// [62] plot::$7 = plot::$2 << 2 -- vwsz1=vwsz2_rol_2
|
||||
lda.z __2
|
||||
asl
|
||||
sta.z __7
|
||||
lda.z __3+1
|
||||
lda.z __2+1
|
||||
rol
|
||||
sta.z __7+1
|
||||
asl.z __7
|
||||
rol.z __7+1
|
||||
// [63] plot::$8 = plot::$7 + plot::$3 -- vwsz1=vwsz1_plus_vwsz2
|
||||
// [63] plot::$8 = plot::$7 + plot::$2 -- vwsz1=vwsz1_plus_vwsz2
|
||||
lda.z __8
|
||||
clc
|
||||
adc.z __3
|
||||
adc.z __2
|
||||
sta.z __8
|
||||
lda.z __8+1
|
||||
adc.z __3+1
|
||||
adc.z __2+1
|
||||
sta.z __8+1
|
||||
// [64] plot::$4 = plot::$8 << 6 -- vwsz1=vwsz1_rol_6
|
||||
lda.z __4+1
|
||||
// [64] plot::$3 = plot::$8 << 6 -- vwsz1=vwsz1_rol_6
|
||||
lda.z __3+1
|
||||
sta.z $ff
|
||||
lda.z __4
|
||||
sta.z __4+1
|
||||
lda.z __3
|
||||
sta.z __3+1
|
||||
lda #0
|
||||
sta.z __4
|
||||
sta.z __3
|
||||
lsr.z $ff
|
||||
ror.z __4+1
|
||||
ror.z __4
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
lsr.z $ff
|
||||
ror.z __4+1
|
||||
ror.z __4
|
||||
// [65] plot::location#3 = plot::location#2 + plot::$4 -- pbuz1=pbuz1_plus_vwsz2
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
// [65] plot::location#3 = plot::location#2 + plot::$3 -- pbuz1=pbuz1_plus_vwsz2
|
||||
lda.z location
|
||||
clc
|
||||
adc.z __4
|
||||
adc.z __3
|
||||
sta.z location
|
||||
lda.z location+1
|
||||
adc.z __4+1
|
||||
adc.z __3+1
|
||||
sta.z location+1
|
||||
// [66] plot::$5 = plot::x#8 & 7 -- vbsaa=vwsz1_band_vbsc1
|
||||
// [66] plot::$4 = plot::x#8 & 7 -- vbsaa=vwsz1_band_vbsc1
|
||||
lda #7
|
||||
and.z x
|
||||
// [67] plot::$6 = *plot::location#3 | bitmask[plot::$5] -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbsaa
|
||||
// [67] plot::$5 = *plot::location#3 | bitmask[plot::$4] -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbsaa
|
||||
tay
|
||||
lda bitmask,y
|
||||
ldy #0
|
||||
ora (location),y
|
||||
// [68] *plot::location#3 = plot::$6 -- _deref_pbuz1=vbuaa
|
||||
// [68] *plot::location#3 = plot::$5 -- _deref_pbuz1=vbuaa
|
||||
ldy #0
|
||||
sta (location),y
|
||||
jmp __breturn
|
||||
@ -1843,10 +1845,10 @@ void main()
|
||||
void plot(signed word plot::x , signed word plot::y)
|
||||
signed word~ plot::$0 zp[2]:12 2002.0
|
||||
byte~ plot::$1 reg byte a 2002.0
|
||||
byte~ plot::$2 reg byte a 2002.0
|
||||
signed word~ plot::$3 zp[2]:10 1501.5
|
||||
signed word~ plot::$4 zp[2]:14 2002.0
|
||||
signed byte~ plot::$5 reg byte a 2002.0
|
||||
signed word~ plot::$2 zp[2]:10 1501.5
|
||||
signed word~ plot::$3 zp[2]:14 2002.0
|
||||
signed byte~ plot::$4 reg byte a 2002.0
|
||||
byte~ plot::$5 reg byte a 2002.0
|
||||
byte~ plot::$6 reg byte a 2002.0
|
||||
signed word~ plot::$7 zp[2]:14 2002.0
|
||||
signed word~ plot::$8 zp[2]:14 2002.0
|
||||
@ -1873,20 +1875,20 @@ signed word plot::y#4 y zp[2]:10 202.0
|
||||
signed word plot::y#5 y zp[2]:10 202.0
|
||||
signed word plot::y#6 y zp[2]:10 202.0
|
||||
signed word plot::y#7 y zp[2]:10 202.0
|
||||
signed word plot::y#8 y zp[2]:10 468.33333333333337
|
||||
signed word plot::y#8 y zp[2]:10 301.5
|
||||
|
||||
reg byte x [ fill::val#4 ]
|
||||
zp[2]:2 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$3 ]
|
||||
zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ]
|
||||
zp[2]:12 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
reg byte a [ plot::$2 ]
|
||||
zp[2]:14 [ plot::$7 plot::$8 plot::$4 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
reg byte a [ plot::$6 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
zp[2]:14 [ plot::$7 plot::$8 plot::$3 ]
|
||||
reg byte a [ plot::$4 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
@ -2352,8 +2354,8 @@ circle: {
|
||||
// plot(signed word zp(8) x, signed word zp($a) y)
|
||||
plot: {
|
||||
.label __0 = $c
|
||||
.label __3 = $a
|
||||
.label __4 = $e
|
||||
.label __2 = $a
|
||||
.label __3 = $e
|
||||
.label x = 8
|
||||
.label y = $a
|
||||
.label location = $c
|
||||
@ -2376,14 +2378,13 @@ plot: {
|
||||
lda.z location+1
|
||||
adc #>BITMAP
|
||||
sta.z location+1
|
||||
// <y
|
||||
// [58] plot::$1 = < plot::y#8 -- vbuaa=_lo_vwsz1
|
||||
// (char)y & 7
|
||||
// [58] plot::$6 = (byte)plot::y#8 -- vbuaa=_byte_vwsz1
|
||||
lda.z y
|
||||
// <y & 7
|
||||
// [59] plot::$2 = plot::$1 & 7 -- vbuaa=vbuaa_band_vbuc1
|
||||
// [59] plot::$1 = plot::$6 & 7 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #7
|
||||
// location += <y & 7
|
||||
// [60] plot::location#2 = plot::location#1 + plot::$2 -- pbuz1=pbuz1_plus_vbuaa
|
||||
// location += (char)y & 7
|
||||
// [60] plot::location#2 = plot::location#1 + plot::$1 -- pbuz1=pbuz1_plus_vbuaa
|
||||
clc
|
||||
adc.z location
|
||||
sta.z location
|
||||
@ -2391,71 +2392,71 @@ plot: {
|
||||
inc.z location+1
|
||||
!:
|
||||
// y >> 3
|
||||
// [61] plot::$3 = plot::y#8 >> 3 -- vwsz1=vwsz1_ror_3
|
||||
lda.z __3+1
|
||||
// [61] plot::$2 = plot::y#8 >> 3 -- vwsz1=vwsz1_ror_3
|
||||
lda.z __2+1
|
||||
cmp #$80
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
lda.z __3+1
|
||||
ror.z __2+1
|
||||
ror.z __2
|
||||
lda.z __2+1
|
||||
cmp #$80
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
lda.z __3+1
|
||||
ror.z __2+1
|
||||
ror.z __2
|
||||
lda.z __2+1
|
||||
cmp #$80
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
ror.z __2+1
|
||||
ror.z __2
|
||||
// (y >> 3) * 320
|
||||
// [62] plot::$7 = plot::$3 << 2 -- vwsz1=vwsz2_rol_2
|
||||
lda.z __3
|
||||
// [62] plot::$7 = plot::$2 << 2 -- vwsz1=vwsz2_rol_2
|
||||
lda.z __2
|
||||
asl
|
||||
sta.z __7
|
||||
lda.z __3+1
|
||||
lda.z __2+1
|
||||
rol
|
||||
sta.z __7+1
|
||||
asl.z __7
|
||||
rol.z __7+1
|
||||
// [63] plot::$8 = plot::$7 + plot::$3 -- vwsz1=vwsz1_plus_vwsz2
|
||||
// [63] plot::$8 = plot::$7 + plot::$2 -- vwsz1=vwsz1_plus_vwsz2
|
||||
lda.z __8
|
||||
clc
|
||||
adc.z __3
|
||||
adc.z __2
|
||||
sta.z __8
|
||||
lda.z __8+1
|
||||
adc.z __3+1
|
||||
adc.z __2+1
|
||||
sta.z __8+1
|
||||
// [64] plot::$4 = plot::$8 << 6 -- vwsz1=vwsz1_rol_6
|
||||
lda.z __4+1
|
||||
// [64] plot::$3 = plot::$8 << 6 -- vwsz1=vwsz1_rol_6
|
||||
lda.z __3+1
|
||||
sta.z $ff
|
||||
lda.z __4
|
||||
sta.z __4+1
|
||||
lda.z __3
|
||||
sta.z __3+1
|
||||
lda #0
|
||||
sta.z __4
|
||||
sta.z __3
|
||||
lsr.z $ff
|
||||
ror.z __4+1
|
||||
ror.z __4
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
lsr.z $ff
|
||||
ror.z __4+1
|
||||
ror.z __4
|
||||
ror.z __3+1
|
||||
ror.z __3
|
||||
// location += ((y >> 3) * 320)
|
||||
// [65] plot::location#3 = plot::location#2 + plot::$4 -- pbuz1=pbuz1_plus_vwsz2
|
||||
// [65] plot::location#3 = plot::location#2 + plot::$3 -- pbuz1=pbuz1_plus_vwsz2
|
||||
lda.z location
|
||||
clc
|
||||
adc.z __4
|
||||
adc.z __3
|
||||
sta.z location
|
||||
lda.z location+1
|
||||
adc.z __4+1
|
||||
adc.z __3+1
|
||||
sta.z location+1
|
||||
// x & 7
|
||||
// [66] plot::$5 = plot::x#8 & 7 -- vbsaa=vwsz1_band_vbsc1
|
||||
// [66] plot::$4 = plot::x#8 & 7 -- vbsaa=vwsz1_band_vbsc1
|
||||
lda #7
|
||||
and.z x
|
||||
// (*location) | bitmask[x & 7]
|
||||
// [67] plot::$6 = *plot::location#3 | bitmask[plot::$5] -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbsaa
|
||||
// [67] plot::$5 = *plot::location#3 | bitmask[plot::$4] -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbsaa
|
||||
tay
|
||||
lda bitmask,y
|
||||
ldy #0
|
||||
ora (location),y
|
||||
// (*location) = (*location) | bitmask[x & 7]
|
||||
// [68] *plot::location#3 = plot::$6 -- _deref_pbuz1=vbuaa
|
||||
// [68] *plot::location#3 = plot::$5 -- _deref_pbuz1=vbuaa
|
||||
sta (location),y
|
||||
// plot::@return
|
||||
// }
|
||||
|
@ -48,10 +48,10 @@ void main()
|
||||
void plot(signed word plot::x , signed word plot::y)
|
||||
signed word~ plot::$0 zp[2]:12 2002.0
|
||||
byte~ plot::$1 reg byte a 2002.0
|
||||
byte~ plot::$2 reg byte a 2002.0
|
||||
signed word~ plot::$3 zp[2]:10 1501.5
|
||||
signed word~ plot::$4 zp[2]:14 2002.0
|
||||
signed byte~ plot::$5 reg byte a 2002.0
|
||||
signed word~ plot::$2 zp[2]:10 1501.5
|
||||
signed word~ plot::$3 zp[2]:14 2002.0
|
||||
signed byte~ plot::$4 reg byte a 2002.0
|
||||
byte~ plot::$5 reg byte a 2002.0
|
||||
byte~ plot::$6 reg byte a 2002.0
|
||||
signed word~ plot::$7 zp[2]:14 2002.0
|
||||
signed word~ plot::$8 zp[2]:14 2002.0
|
||||
@ -78,17 +78,17 @@ signed word plot::y#4 y zp[2]:10 202.0
|
||||
signed word plot::y#5 y zp[2]:10 202.0
|
||||
signed word plot::y#6 y zp[2]:10 202.0
|
||||
signed word plot::y#7 y zp[2]:10 202.0
|
||||
signed word plot::y#8 y zp[2]:10 468.33333333333337
|
||||
signed word plot::y#8 y zp[2]:10 301.5
|
||||
|
||||
reg byte x [ fill::val#4 ]
|
||||
zp[2]:2 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$3 ]
|
||||
zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ]
|
||||
zp[2]:12 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
reg byte a [ plot::$2 ]
|
||||
zp[2]:14 [ plot::$7 plot::$8 plot::$4 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
reg byte a [ plot::$6 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
zp[2]:14 [ plot::$7 plot::$8 plot::$3 ]
|
||||
reg byte a [ plot::$4 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
|
@ -80,15 +80,15 @@ bitmap_init: {
|
||||
// y&$7
|
||||
lda #7
|
||||
sax.z __7
|
||||
// <yoffs
|
||||
// BYTE0(yoffs)
|
||||
lda.z yoffs
|
||||
// y&$7 | <yoffs
|
||||
// y&$7 | BYTE0(yoffs)
|
||||
ora.z __7
|
||||
// bitmap_plot_ylo[y] = y&$7 | <yoffs
|
||||
// bitmap_plot_ylo[y] = y&$7 | BYTE0(yoffs)
|
||||
sta bitmap_plot_ylo,x
|
||||
// >yoffs
|
||||
// BYTE1(yoffs)
|
||||
lda.z yoffs+1
|
||||
// bitmap_plot_yhi[y] = >yoffs
|
||||
// bitmap_plot_yhi[y] = BYTE1(yoffs)
|
||||
sta bitmap_plot_yhi,x
|
||||
// if((y&$7)==7)
|
||||
lda #7
|
||||
@ -259,8 +259,7 @@ bitmap_line: {
|
||||
sta.z x+1
|
||||
__b6:
|
||||
// bitmap_plot(x,(char)y)
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
jsr bitmap_plot
|
||||
// y += sy
|
||||
lda.z y
|
||||
@ -312,8 +311,7 @@ bitmap_line: {
|
||||
bne __b6
|
||||
__b3:
|
||||
// bitmap_plot(x,(char)y)
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
jsr bitmap_plot
|
||||
// }
|
||||
rts
|
||||
@ -335,8 +333,7 @@ bitmap_line: {
|
||||
sta.z x+1
|
||||
__b9:
|
||||
// bitmap_plot(x,(char)y)
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
jsr bitmap_plot
|
||||
// x += sx
|
||||
lda.z x
|
||||
@ -446,11 +443,11 @@ memset: {
|
||||
abs_u16: {
|
||||
.label w = $a
|
||||
.label return = $a
|
||||
// >w
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
// BYTE1(w)&0x80
|
||||
and #$80
|
||||
// if(>w&0x80)
|
||||
// if(BYTE1(w)&0x80)
|
||||
cmp #0
|
||||
bne __b1
|
||||
rts
|
||||
@ -472,11 +469,11 @@ abs_u16: {
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $c
|
||||
// >w
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
// BYTE1(w)&0x80
|
||||
and #$80
|
||||
// if(>w&0x80)
|
||||
// if(BYTE1(w)&0x80)
|
||||
cmp #0
|
||||
bne __b1
|
||||
lda #<1
|
||||
@ -517,9 +514,8 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __0+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
// *plotter |= bitmap_plot_bit[(char)x]
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
|
@ -252,7 +252,7 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_li
|
||||
[118] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
|
||||
[119] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
|
||||
[120] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
|
||||
[121] bitmap_plot::$1 = < bitmap_plot::x#4
|
||||
[121] bitmap_plot::$1 = (byte)bitmap_plot::x#4
|
||||
[122] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
|
@ -125,7 +125,7 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_li
|
||||
bitmap_plot::plotter#0 = (byte*){ bitmap_plot_yhi[bitmap_plot::y#4], bitmap_plot_ylo[bitmap_plot::y#4] }
|
||||
bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
|
||||
bitmap_plot::plotter#1 = bitmap_plot::plotter#0 + bitmap_plot::$0
|
||||
bitmap_plot::$1 = < bitmap_plot::x#4
|
||||
bitmap_plot::$1 = (byte)bitmap_plot::x#4
|
||||
*bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
@ -1818,7 +1818,7 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_li
|
||||
[118] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
|
||||
[119] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
|
||||
[120] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
|
||||
[121] bitmap_plot::$1 = < bitmap_plot::x#4
|
||||
[121] bitmap_plot::$1 = (byte)bitmap_plot::x#4
|
||||
[122] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
@ -1914,7 +1914,7 @@ word bitmap_plot::x
|
||||
word bitmap_plot::x#1 10001.0
|
||||
word bitmap_plot::x#2 101.0
|
||||
word bitmap_plot::x#3 10001.0
|
||||
word bitmap_plot::x#4 55026.25
|
||||
word bitmap_plot::x#4 30026.0
|
||||
byte bitmap_plot::y
|
||||
byte bitmap_plot::y#1 20002.0
|
||||
byte bitmap_plot::y#2 202.0
|
||||
@ -2106,7 +2106,6 @@ Statement [61] bitmap_line::sy#0 = sgn_u16::return#1 [ bitmap_line::x2#0 bitmap_
|
||||
Statement [62] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [63] bitmap_line::e#0 = bitmap_line::dx#0 >> 1 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [65] bitmap_plot::x#1 = bitmap_line::x#13 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a
|
||||
Statement [66] bitmap_plot::y#1 = (byte)bitmap_line::y#4 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a
|
||||
Statement [68] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [69] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [70] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
@ -2114,10 +2113,8 @@ Statement [71] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0 [ bitmap
|
||||
Statement [72] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [74] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [76] bitmap_plot::x#2 = bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( bitmap_line:11 [ next#5 bitmap_line::y#7 bitmap_plot::x#2 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a
|
||||
Statement [77] bitmap_plot::y#2 = (byte)bitmap_line::y#7 [ bitmap_plot::x#2 bitmap_plot::y#2 ] ( bitmap_line:11 [ next#5 bitmap_plot::x#2 bitmap_plot::y#2 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a
|
||||
Statement [80] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [82] bitmap_plot::x#3 = bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a
|
||||
Statement [83] bitmap_plot::y#3 = (byte)bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a
|
||||
Statement [85] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [86] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [87] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
@ -2161,7 +2158,6 @@ Statement [61] bitmap_line::sy#0 = sgn_u16::return#1 [ bitmap_line::x2#0 bitmap_
|
||||
Statement [62] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [63] bitmap_line::e#0 = bitmap_line::dx#0 >> 1 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [65] bitmap_plot::x#1 = bitmap_line::x#13 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a
|
||||
Statement [66] bitmap_plot::y#1 = (byte)bitmap_line::y#4 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a
|
||||
Statement [68] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [69] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [70] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
@ -2169,10 +2165,8 @@ Statement [71] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0 [ bitmap
|
||||
Statement [72] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [74] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( bitmap_line:11 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [76] bitmap_plot::x#2 = bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( bitmap_line:11 [ next#5 bitmap_line::y#7 bitmap_plot::x#2 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a
|
||||
Statement [77] bitmap_plot::y#2 = (byte)bitmap_line::y#7 [ bitmap_plot::x#2 bitmap_plot::y#2 ] ( bitmap_line:11 [ next#5 bitmap_plot::x#2 bitmap_plot::y#2 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a
|
||||
Statement [80] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [82] bitmap_plot::x#3 = bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a
|
||||
Statement [83] bitmap_plot::y#3 = (byte)bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a
|
||||
Statement [85] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [86] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [87] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
@ -2232,7 +2226,7 @@ Potential registers zp[2]:66 [ bitmap_plot::plotter#1 ] : zp[2]:66 ,
|
||||
Potential registers zp[1]:68 [ bitmap_plot::$1 ] : zp[1]:68 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [bitmap_plot] 260,311: zp[1]:31 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:64 [ bitmap_plot::$0 ] 200,002: zp[1]:68 [ bitmap_plot::$1 ] 150,001.5: zp[2]:66 [ bitmap_plot::plotter#1 ] 75,129.25: zp[2]:32 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:62 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [bitmap_plot] 260,311: zp[1]:31 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:64 [ bitmap_plot::$0 ] 200,002: zp[1]:68 [ bitmap_plot::$1 ] 150,001.5: zp[2]:66 [ bitmap_plot::plotter#1 ] 50,129: zp[2]:32 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:62 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [bitmap_line] 69,036.46: zp[2]:12 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] 55,005.5: zp[2]:14 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] 52,560.77: zp[2]:10 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 52,560.77: zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 868.77: zp[2]:46 [ bitmap_line::dy#0 ] 800.18: zp[2]:42 [ bitmap_line::dx#0 ] 773.19: zp[2]:54 [ bitmap_line::sy#0 ] 693.21: zp[2]:50 [ bitmap_line::sx#0 ] 340.47: zp[2]:34 [ bitmap_line::x2#0 ]
|
||||
Uplift Scope [abs_u16] 3,531: zp[2]:25 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] 2,002: zp[1]:58 [ abs_u16::$0 ] 2,002: zp[1]:59 [ abs_u16::$1 ] 202: zp[2]:40 [ abs_u16::return#0 ] 202: zp[2]:44 [ abs_u16::return#1 ]
|
||||
Uplift Scope [sgn_u16] 2,002: zp[1]:60 [ sgn_u16::$0 ] 2,002: zp[1]:61 [ sgn_u16::$1 ] 1,304: zp[2]:27 [ sgn_u16::w#2 sgn_u16::w#0 ] 202: zp[2]:48 [ sgn_u16::return#0 ] 202: zp[2]:52 [ sgn_u16::return#1 ] 50.5: zp[2]:29 [ sgn_u16::return#4 ]
|
||||
@ -2246,28 +2240,28 @@ Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope [bitmap_clear]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [bitmap_plot] best 37111 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:64 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:66 [ bitmap_plot::plotter#1 ] zp[2]:32 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:62 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [bitmap_line] best 37111 combination zp[2]:12 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:14 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:10 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:46 [ bitmap_line::dy#0 ] zp[2]:42 [ bitmap_line::dx#0 ] zp[2]:54 [ bitmap_line::sy#0 ] zp[2]:50 [ bitmap_line::sx#0 ] zp[2]:34 [ bitmap_line::x2#0 ]
|
||||
Uplifting [abs_u16] best 37101 combination zp[2]:25 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:40 [ abs_u16::return#0 ] zp[2]:44 [ abs_u16::return#1 ]
|
||||
Uplifting [sgn_u16] best 37091 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:27 [ sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:48 [ sgn_u16::return#0 ] zp[2]:52 [ sgn_u16::return#1 ] zp[2]:29 [ sgn_u16::return#4 ]
|
||||
Uplifting [memset] best 37075 combination zp[2]:23 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:56 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:18 [ memset::num#2 ] zp[2]:20 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 36625 combination zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:38 [ bitmap_init::$5 ] zp[1]:39 [ bitmap_init::$6 ] zp[1]:36 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_plot] best 36709 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:64 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:66 [ bitmap_plot::plotter#1 ] zp[2]:32 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:62 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [bitmap_line] best 36709 combination zp[2]:12 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:14 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:10 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:46 [ bitmap_line::dy#0 ] zp[2]:42 [ bitmap_line::dx#0 ] zp[2]:54 [ bitmap_line::sy#0 ] zp[2]:50 [ bitmap_line::sx#0 ] zp[2]:34 [ bitmap_line::x2#0 ]
|
||||
Uplifting [abs_u16] best 36699 combination zp[2]:25 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:40 [ abs_u16::return#0 ] zp[2]:44 [ abs_u16::return#1 ]
|
||||
Uplifting [sgn_u16] best 36689 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:27 [ sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:48 [ sgn_u16::return#0 ] zp[2]:52 [ sgn_u16::return#1 ] zp[2]:29 [ sgn_u16::return#4 ]
|
||||
Uplifting [memset] best 36673 combination zp[2]:23 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:56 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:18 [ memset::num#2 ] zp[2]:20 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 36223 combination zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:38 [ bitmap_init::$5 ] zp[1]:39 [ bitmap_init::$6 ] zp[1]:36 [ bitmap_init::$7 ]
|
||||
Limited combination testing to 100 combinations of 15360 possible.
|
||||
Uplifting [init_screen] best 36625 combination zp[2]:8 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [] best 36625 combination zp[1]:2 [ next#5 next#0 ]
|
||||
Uplifting [MOS6526_CIA] best 36625 combination
|
||||
Uplifting [MOS6569_VICII] best 36625 combination
|
||||
Uplifting [MOS6581_SID] best 36625 combination
|
||||
Uplifting [bitmap_clear] best 36625 combination
|
||||
Uplifting [main] best 36625 combination
|
||||
Uplifting [init_screen] best 36223 combination zp[2]:8 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [] best 36223 combination zp[1]:2 [ next#5 next#0 ]
|
||||
Uplifting [MOS6526_CIA] best 36223 combination
|
||||
Uplifting [MOS6569_VICII] best 36223 combination
|
||||
Uplifting [MOS6581_SID] best 36223 combination
|
||||
Uplifting [bitmap_clear] best 36223 combination
|
||||
Uplifting [main] best 36223 combination
|
||||
Attempting to uplift remaining variables inzp[1]:38 [ bitmap_init::$5 ]
|
||||
Uplifting [bitmap_init] best 36565 combination reg byte a [ bitmap_init::$5 ]
|
||||
Uplifting [bitmap_init] best 36163 combination reg byte a [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:39 [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 36505 combination reg byte a [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 36103 combination reg byte a [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:36 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 36505 combination zp[1]:36 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 36103 combination zp[1]:36 [ bitmap_init::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ next#5 next#0 ]
|
||||
Uplifting [] best 36505 combination zp[1]:2 [ next#5 next#0 ]
|
||||
Uplifting [] best 36103 combination zp[1]:2 [ next#5 next#0 ]
|
||||
Coalescing zero page register [ zp[2]:12 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:32 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 3
|
||||
Coalescing zero page register [ zp[2]:18 [ memset::num#2 ] ] with [ zp[2]:56 [ memset::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:20 [ memset::str#3 ] ] with [ zp[2]:23 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
@ -2451,13 +2445,13 @@ bitmap_init: {
|
||||
// [23] bitmap_init::$7 = bitmap_init::y#2 & 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
lda #7
|
||||
sax.z __7
|
||||
// [24] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
||||
// [24] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_byte0_pbuz1
|
||||
lda.z yoffs
|
||||
// [25] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
|
||||
ora.z __7
|
||||
// [26] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_ylo,x
|
||||
// [27] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
|
||||
// [27] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_byte1_pbuz1
|
||||
lda.z yoffs+1
|
||||
// [28] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_yhi,x
|
||||
@ -2723,8 +2717,7 @@ bitmap_line: {
|
||||
__b6:
|
||||
// [65] bitmap_plot::x#1 = bitmap_line::x#13
|
||||
// [66] bitmap_plot::y#1 = (byte)bitmap_line::y#4 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [67] call bitmap_plot
|
||||
// [117] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot]
|
||||
bitmap_plot_from___b6:
|
||||
@ -2803,8 +2796,7 @@ bitmap_line: {
|
||||
__b3:
|
||||
// [76] bitmap_plot::x#2 = bitmap_line::x#6
|
||||
// [77] bitmap_plot::y#2 = (byte)bitmap_line::y#7 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [78] call bitmap_plot
|
||||
// [117] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot]
|
||||
bitmap_plot_from___b3:
|
||||
@ -2849,8 +2841,7 @@ bitmap_line: {
|
||||
__b9:
|
||||
// [82] bitmap_plot::x#3 = bitmap_line::x#7
|
||||
// [83] bitmap_plot::y#3 = (byte)bitmap_line::y#15 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [84] call bitmap_plot
|
||||
// [117] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot]
|
||||
bitmap_plot_from___b9:
|
||||
@ -3002,7 +2993,7 @@ memset: {
|
||||
abs_u16: {
|
||||
.label w = $a
|
||||
.label return = $a
|
||||
// [104] abs_u16::$0 = > abs_u16::w#2 -- vbuaa=_hi_vwuz1
|
||||
// [104] abs_u16::$0 = > abs_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// [105] abs_u16::$1 = abs_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #$80
|
||||
@ -3037,7 +3028,7 @@ abs_u16: {
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $c
|
||||
// [111] sgn_u16::$0 = > sgn_u16::w#2 -- vbuaa=_hi_vwuz1
|
||||
// [111] sgn_u16::$0 = > sgn_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// [112] sgn_u16::$1 = sgn_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #$80
|
||||
@ -3097,7 +3088,7 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __0+1
|
||||
sta.z plotter+1
|
||||
// [121] bitmap_plot::$1 = < bitmap_plot::x#4 -- vbuxx=_lo_vwuz1
|
||||
// [121] bitmap_plot::$1 = (byte)bitmap_plot::x#4 -- vbuxx=_byte_vwuz1
|
||||
ldx.z x
|
||||
// [122] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
|
||||
lda bitmap_plot_bit,x
|
||||
@ -3373,7 +3364,7 @@ word bitmap_plot::x
|
||||
word bitmap_plot::x#1 x zp[2]:8 10001.0
|
||||
word bitmap_plot::x#2 x zp[2]:8 101.0
|
||||
word bitmap_plot::x#3 x zp[2]:8 10001.0
|
||||
word bitmap_plot::x#4 x zp[2]:8 55026.25
|
||||
word bitmap_plot::x#4 x zp[2]:8 30026.0
|
||||
byte bitmap_plot::y
|
||||
byte bitmap_plot::y#1 reg byte x 20002.0
|
||||
byte bitmap_plot::y#2 reg byte x 202.0
|
||||
@ -3444,7 +3435,7 @@ reg byte x [ bitmap_plot::$1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 30472
|
||||
Score: 30070
|
||||
|
||||
// File Comments
|
||||
// Illustrates problem with bitmap-draw.kc line()
|
||||
@ -3583,19 +3574,19 @@ bitmap_init: {
|
||||
// [23] bitmap_init::$7 = bitmap_init::y#2 & 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
lda #7
|
||||
sax.z __7
|
||||
// <yoffs
|
||||
// [24] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
||||
// BYTE0(yoffs)
|
||||
// [24] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_byte0_pbuz1
|
||||
lda.z yoffs
|
||||
// y&$7 | <yoffs
|
||||
// y&$7 | BYTE0(yoffs)
|
||||
// [25] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
|
||||
ora.z __7
|
||||
// bitmap_plot_ylo[y] = y&$7 | <yoffs
|
||||
// bitmap_plot_ylo[y] = y&$7 | BYTE0(yoffs)
|
||||
// [26] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_ylo,x
|
||||
// >yoffs
|
||||
// [27] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
|
||||
// BYTE1(yoffs)
|
||||
// [27] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_byte1_pbuz1
|
||||
lda.z yoffs+1
|
||||
// bitmap_plot_yhi[y] = >yoffs
|
||||
// bitmap_plot_yhi[y] = BYTE1(yoffs)
|
||||
// [28] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_yhi,x
|
||||
// if((y&$7)==7)
|
||||
@ -3849,8 +3840,7 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(char)y)
|
||||
// [65] bitmap_plot::x#1 = bitmap_line::x#13
|
||||
// [66] bitmap_plot::y#1 = (byte)bitmap_line::y#4 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [67] call bitmap_plot
|
||||
// [117] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot]
|
||||
// [117] phi bitmap_plot::x#4 = bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy
|
||||
@ -3924,8 +3914,7 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(char)y)
|
||||
// [76] bitmap_plot::x#2 = bitmap_line::x#6
|
||||
// [77] bitmap_plot::y#2 = (byte)bitmap_line::y#7 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [78] call bitmap_plot
|
||||
// [117] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot]
|
||||
// [117] phi bitmap_plot::x#4 = bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy
|
||||
@ -3966,8 +3955,7 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(char)y)
|
||||
// [82] bitmap_plot::x#3 = bitmap_line::x#7
|
||||
// [83] bitmap_plot::y#3 = (byte)bitmap_line::y#15 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [84] call bitmap_plot
|
||||
// [117] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot]
|
||||
// [117] phi bitmap_plot::x#4 = bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy
|
||||
@ -4114,13 +4102,13 @@ memset: {
|
||||
abs_u16: {
|
||||
.label w = $a
|
||||
.label return = $a
|
||||
// >w
|
||||
// [104] abs_u16::$0 = > abs_u16::w#2 -- vbuaa=_hi_vwuz1
|
||||
// BYTE1(w)
|
||||
// [104] abs_u16::$0 = > abs_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
// BYTE1(w)&0x80
|
||||
// [105] abs_u16::$1 = abs_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #$80
|
||||
// if(>w&0x80)
|
||||
// if(BYTE1(w)&0x80)
|
||||
// [106] if(0!=abs_u16::$1) goto abs_u16::@1 -- 0_neq_vbuaa_then_la1
|
||||
cmp #0
|
||||
bne __b1
|
||||
@ -4150,13 +4138,13 @@ abs_u16: {
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $c
|
||||
// >w
|
||||
// [111] sgn_u16::$0 = > sgn_u16::w#2 -- vbuaa=_hi_vwuz1
|
||||
// BYTE1(w)
|
||||
// [111] sgn_u16::$0 = > sgn_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
// BYTE1(w)&0x80
|
||||
// [112] sgn_u16::$1 = sgn_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #$80
|
||||
// if(>w&0x80)
|
||||
// if(BYTE1(w)&0x80)
|
||||
// [113] if(0!=sgn_u16::$1) goto sgn_u16::@1 -- 0_neq_vbuaa_then_la1
|
||||
cmp #0
|
||||
bne __b1
|
||||
@ -4210,10 +4198,9 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __0+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
// [121] bitmap_plot::$1 = < bitmap_plot::x#4 -- vbuxx=_lo_vwuz1
|
||||
// *plotter |= bitmap_plot_bit[(char)x]
|
||||
// [121] bitmap_plot::$1 = (byte)bitmap_plot::x#4 -- vbuxx=_byte_vwuz1
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
// [122] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
|
@ -99,7 +99,7 @@ word bitmap_plot::x
|
||||
word bitmap_plot::x#1 x zp[2]:8 10001.0
|
||||
word bitmap_plot::x#2 x zp[2]:8 101.0
|
||||
word bitmap_plot::x#3 x zp[2]:8 10001.0
|
||||
word bitmap_plot::x#4 x zp[2]:8 55026.25
|
||||
word bitmap_plot::x#4 x zp[2]:8 30026.0
|
||||
byte bitmap_plot::y
|
||||
byte bitmap_plot::y#1 reg byte x 20002.0
|
||||
byte bitmap_plot::y#2 reg byte x 202.0
|
||||
|
@ -89,15 +89,15 @@ bitmap_init: {
|
||||
// y&$7
|
||||
lda #7
|
||||
sax.z __7
|
||||
// <yoffs
|
||||
// BYTE0(yoffs)
|
||||
lda.z yoffs
|
||||
// y&$7 | <yoffs
|
||||
// y&$7 | BYTE0(yoffs)
|
||||
ora.z __7
|
||||
// bitmap_plot_ylo[y] = y&$7 | <yoffs
|
||||
// bitmap_plot_ylo[y] = y&$7 | BYTE0(yoffs)
|
||||
sta bitmap_plot_ylo,x
|
||||
// >yoffs
|
||||
// BYTE1(yoffs)
|
||||
lda.z yoffs+1
|
||||
// bitmap_plot_yhi[y] = >yoffs
|
||||
// bitmap_plot_yhi[y] = BYTE1(yoffs)
|
||||
sta bitmap_plot_yhi,x
|
||||
// if((y&$7)==7)
|
||||
lda #7
|
||||
@ -240,8 +240,7 @@ bitmap_line: {
|
||||
sta.z x+1
|
||||
__b6:
|
||||
// bitmap_plot(x,(char)y)
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
jsr bitmap_plot
|
||||
// y += sy
|
||||
lda.z y
|
||||
@ -293,8 +292,7 @@ bitmap_line: {
|
||||
bne __b6
|
||||
__b3:
|
||||
// bitmap_plot(x,(char)y)
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
jsr bitmap_plot
|
||||
// }
|
||||
rts
|
||||
@ -316,8 +314,7 @@ bitmap_line: {
|
||||
sta.z x+1
|
||||
__b9:
|
||||
// bitmap_plot(x,(char)y)
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
jsr bitmap_plot
|
||||
// x += sx
|
||||
lda.z x
|
||||
@ -427,11 +424,11 @@ memset: {
|
||||
abs_u16: {
|
||||
.label w = $c
|
||||
.label return = $c
|
||||
// >w
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
// BYTE1(w)&0x80
|
||||
and #$80
|
||||
// if(>w&0x80)
|
||||
// if(BYTE1(w)&0x80)
|
||||
cmp #0
|
||||
bne __b1
|
||||
rts
|
||||
@ -453,11 +450,11 @@ abs_u16: {
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $e
|
||||
// >w
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
// BYTE1(w)&0x80
|
||||
and #$80
|
||||
// if(>w&0x80)
|
||||
// if(BYTE1(w)&0x80)
|
||||
cmp #0
|
||||
bne __b1
|
||||
lda #<1
|
||||
@ -498,9 +495,8 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __0+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
// *plotter |= bitmap_plot_bit[(char)x]
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
|
@ -239,7 +239,7 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_li
|
||||
[113] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
|
||||
[114] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
|
||||
[115] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
|
||||
[116] bitmap_plot::$1 = < bitmap_plot::x#4
|
||||
[116] bitmap_plot::$1 = (byte)bitmap_plot::x#4
|
||||
[117] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
|
@ -125,7 +125,7 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_li
|
||||
bitmap_plot::plotter#0 = (byte*){ bitmap_plot_yhi[bitmap_plot::y#4], bitmap_plot_ylo[bitmap_plot::y#4] }
|
||||
bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
|
||||
bitmap_plot::plotter#1 = bitmap_plot::plotter#0 + bitmap_plot::$0
|
||||
bitmap_plot::$1 = < bitmap_plot::x#4
|
||||
bitmap_plot::$1 = (byte)bitmap_plot::x#4
|
||||
*bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
@ -1799,7 +1799,7 @@ bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_li
|
||||
[113] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4]
|
||||
[114] bitmap_plot::$0 = bitmap_plot::x#4 & $fff8
|
||||
[115] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
|
||||
[116] bitmap_plot::$1 = < bitmap_plot::x#4
|
||||
[116] bitmap_plot::$1 = (byte)bitmap_plot::x#4
|
||||
[117] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
@ -1895,7 +1895,7 @@ word bitmap_plot::x
|
||||
word bitmap_plot::x#1 10001.0
|
||||
word bitmap_plot::x#2 101.0
|
||||
word bitmap_plot::x#3 10001.0
|
||||
word bitmap_plot::x#4 55026.25
|
||||
word bitmap_plot::x#4 30026.0
|
||||
byte bitmap_plot::y
|
||||
byte bitmap_plot::y#1 20002.0
|
||||
byte bitmap_plot::y#2 202.0
|
||||
@ -2079,7 +2079,6 @@ Statement [56] bitmap_line::sy#0 = sgn_u16::return#1 [ bitmap_line::x2#0 bitmap_
|
||||
Statement [57] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [58] bitmap_line::e#0 = bitmap_line::dx#0 >> 1 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [60] bitmap_plot::x#1 = bitmap_line::x#13 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a
|
||||
Statement [61] bitmap_plot::y#1 = (byte)bitmap_line::y#4 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a
|
||||
Statement [63] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [64] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [65] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
@ -2087,10 +2086,8 @@ Statement [66] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0 [ bitmap
|
||||
Statement [67] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [69] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [71] bitmap_plot::x#2 = bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( bitmap_line:9 [ next#6 bitmap_line::y#7 bitmap_plot::x#2 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a
|
||||
Statement [72] bitmap_plot::y#2 = (byte)bitmap_line::y#7 [ bitmap_plot::x#2 bitmap_plot::y#2 ] ( bitmap_line:9 [ next#6 bitmap_plot::x#2 bitmap_plot::y#2 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a
|
||||
Statement [75] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [77] bitmap_plot::x#3 = bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a
|
||||
Statement [78] bitmap_plot::y#3 = (byte)bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a
|
||||
Statement [80] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [81] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [82] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
@ -2132,7 +2129,6 @@ Statement [56] bitmap_line::sy#0 = sgn_u16::return#1 [ bitmap_line::x2#0 bitmap_
|
||||
Statement [57] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [58] bitmap_line::e#0 = bitmap_line::dx#0 >> 1 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [60] bitmap_plot::x#1 = bitmap_line::x#13 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a
|
||||
Statement [61] bitmap_plot::y#1 = (byte)bitmap_line::y#4 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 bitmap_plot::y#1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a
|
||||
Statement [63] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [64] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [65] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
@ -2140,10 +2136,8 @@ Statement [66] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0 [ bitmap
|
||||
Statement [67] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [69] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( bitmap_line:9 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [71] bitmap_plot::x#2 = bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( bitmap_line:9 [ next#6 bitmap_line::y#7 bitmap_plot::x#2 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a
|
||||
Statement [72] bitmap_plot::y#2 = (byte)bitmap_line::y#7 [ bitmap_plot::x#2 bitmap_plot::y#2 ] ( bitmap_line:9 [ next#6 bitmap_plot::x#2 bitmap_plot::y#2 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a
|
||||
Statement [75] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [77] bitmap_plot::x#3 = bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a
|
||||
Statement [78] bitmap_plot::y#3 = (byte)bitmap_line::y#15 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 bitmap_plot::y#3 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a
|
||||
Statement [80] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [81] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [82] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
@ -2202,7 +2196,7 @@ Potential registers zp[2]:65 [ bitmap_plot::plotter#1 ] : zp[2]:65 ,
|
||||
Potential registers zp[1]:67 [ bitmap_plot::$1 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [bitmap_plot] 260,311: zp[1]:30 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:63 [ bitmap_plot::$0 ] 200,002: zp[1]:67 [ bitmap_plot::$1 ] 150,001.5: zp[2]:65 [ bitmap_plot::plotter#1 ] 75,129.25: zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:61 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [bitmap_plot] 260,311: zp[1]:30 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:63 [ bitmap_plot::$0 ] 200,002: zp[1]:67 [ bitmap_plot::$1 ] 150,001.5: zp[2]:65 [ bitmap_plot::plotter#1 ] 50,129: zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:61 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [bitmap_line] 69,036.46: zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] 55,005.5: zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] 52,560.77: zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 52,560.77: zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 868.77: zp[2]:45 [ bitmap_line::dy#0 ] 800.18: zp[2]:41 [ bitmap_line::dx#0 ] 773.19: zp[2]:53 [ bitmap_line::sy#0 ] 693.21: zp[2]:49 [ bitmap_line::sx#0 ] 340.47: zp[2]:33 [ bitmap_line::x2#0 ]
|
||||
Uplift Scope [abs_u16] 3,531: zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] 2,002: zp[1]:57 [ abs_u16::$0 ] 2,002: zp[1]:58 [ abs_u16::$1 ] 202: zp[2]:39 [ abs_u16::return#0 ] 202: zp[2]:43 [ abs_u16::return#1 ]
|
||||
Uplift Scope [sgn_u16] 2,002: zp[1]:59 [ sgn_u16::$0 ] 2,002: zp[1]:60 [ sgn_u16::$1 ] 1,304: zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 ] 202: zp[2]:47 [ sgn_u16::return#0 ] 202: zp[2]:51 [ sgn_u16::return#1 ] 50.5: zp[2]:28 [ sgn_u16::return#4 ]
|
||||
@ -2215,25 +2209,25 @@ Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope [bitmap_clear]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [bitmap_plot] best 37006 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:63 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:65 [ bitmap_plot::plotter#1 ] zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:61 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [bitmap_line] best 37006 combination zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:45 [ bitmap_line::dy#0 ] zp[2]:41 [ bitmap_line::dx#0 ] zp[2]:53 [ bitmap_line::sy#0 ] zp[2]:49 [ bitmap_line::sx#0 ] zp[2]:33 [ bitmap_line::x2#0 ]
|
||||
Uplifting [abs_u16] best 36996 combination zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:39 [ abs_u16::return#0 ] zp[2]:43 [ abs_u16::return#1 ]
|
||||
Uplifting [sgn_u16] best 36986 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:47 [ sgn_u16::return#0 ] zp[2]:51 [ sgn_u16::return#1 ] zp[2]:28 [ sgn_u16::return#4 ]
|
||||
Uplifting [memset] best 36970 combination zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:55 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:17 [ memset::num#2 ] zp[2]:19 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 36520 combination zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:37 [ bitmap_init::$5 ] zp[1]:38 [ bitmap_init::$6 ] zp[1]:35 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_plot] best 36604 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:63 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:65 [ bitmap_plot::plotter#1 ] zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:61 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [bitmap_line] best 36604 combination zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:45 [ bitmap_line::dy#0 ] zp[2]:41 [ bitmap_line::dx#0 ] zp[2]:53 [ bitmap_line::sy#0 ] zp[2]:49 [ bitmap_line::sx#0 ] zp[2]:33 [ bitmap_line::x2#0 ]
|
||||
Uplifting [abs_u16] best 36594 combination zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:39 [ abs_u16::return#0 ] zp[2]:43 [ abs_u16::return#1 ]
|
||||
Uplifting [sgn_u16] best 36584 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:47 [ sgn_u16::return#0 ] zp[2]:51 [ sgn_u16::return#1 ] zp[2]:28 [ sgn_u16::return#4 ]
|
||||
Uplifting [memset] best 36568 combination zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:55 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:17 [ memset::num#2 ] zp[2]:19 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 36118 combination zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:37 [ bitmap_init::$5 ] zp[1]:38 [ bitmap_init::$6 ] zp[1]:35 [ bitmap_init::$7 ]
|
||||
Limited combination testing to 100 combinations of 15360 possible.
|
||||
Uplifting [] best 36520 combination zp[2]:2 [ next#6 next#11 next#0 ]
|
||||
Uplifting [MOS6526_CIA] best 36520 combination
|
||||
Uplifting [MOS6569_VICII] best 36520 combination
|
||||
Uplifting [MOS6581_SID] best 36520 combination
|
||||
Uplifting [bitmap_clear] best 36520 combination
|
||||
Uplifting [main] best 36520 combination
|
||||
Uplifting [] best 36118 combination zp[2]:2 [ next#6 next#11 next#0 ]
|
||||
Uplifting [MOS6526_CIA] best 36118 combination
|
||||
Uplifting [MOS6569_VICII] best 36118 combination
|
||||
Uplifting [MOS6581_SID] best 36118 combination
|
||||
Uplifting [bitmap_clear] best 36118 combination
|
||||
Uplifting [main] best 36118 combination
|
||||
Attempting to uplift remaining variables inzp[1]:37 [ bitmap_init::$5 ]
|
||||
Uplifting [bitmap_init] best 36460 combination reg byte a [ bitmap_init::$5 ]
|
||||
Uplifting [bitmap_init] best 36058 combination reg byte a [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:38 [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 36400 combination reg byte a [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 35998 combination reg byte a [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:35 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 36400 combination zp[1]:35 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 35998 combination zp[1]:35 [ bitmap_init::$7 ]
|
||||
Coalescing zero page register [ zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 3
|
||||
Coalescing zero page register [ zp[2]:2 [ next#6 next#11 next#0 ] ] with [ zp[2]:33 [ bitmap_line::x2#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:17 [ memset::num#2 ] ] with [ zp[2]:55 [ memset::end#0 ] ] - score: 1
|
||||
@ -2435,13 +2429,13 @@ bitmap_init: {
|
||||
// [24] bitmap_init::$7 = bitmap_init::y#2 & 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
lda #7
|
||||
sax.z __7
|
||||
// [25] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
||||
// [25] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_byte0_pbuz1
|
||||
lda.z yoffs
|
||||
// [26] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
|
||||
ora.z __7
|
||||
// [27] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_ylo,x
|
||||
// [28] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
|
||||
// [28] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_byte1_pbuz1
|
||||
lda.z yoffs+1
|
||||
// [29] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_yhi,x
|
||||
@ -2666,8 +2660,7 @@ bitmap_line: {
|
||||
__b6:
|
||||
// [60] bitmap_plot::x#1 = bitmap_line::x#13
|
||||
// [61] bitmap_plot::y#1 = (byte)bitmap_line::y#4 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [62] call bitmap_plot
|
||||
// [112] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot]
|
||||
bitmap_plot_from___b6:
|
||||
@ -2746,8 +2739,7 @@ bitmap_line: {
|
||||
__b3:
|
||||
// [71] bitmap_plot::x#2 = bitmap_line::x#6
|
||||
// [72] bitmap_plot::y#2 = (byte)bitmap_line::y#7 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [73] call bitmap_plot
|
||||
// [112] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot]
|
||||
bitmap_plot_from___b3:
|
||||
@ -2792,8 +2784,7 @@ bitmap_line: {
|
||||
__b9:
|
||||
// [77] bitmap_plot::x#3 = bitmap_line::x#7
|
||||
// [78] bitmap_plot::y#3 = (byte)bitmap_line::y#15 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [79] call bitmap_plot
|
||||
// [112] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot]
|
||||
bitmap_plot_from___b9:
|
||||
@ -2945,7 +2936,7 @@ memset: {
|
||||
abs_u16: {
|
||||
.label w = $c
|
||||
.label return = $c
|
||||
// [99] abs_u16::$0 = > abs_u16::w#2 -- vbuaa=_hi_vwuz1
|
||||
// [99] abs_u16::$0 = > abs_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// [100] abs_u16::$1 = abs_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #$80
|
||||
@ -2980,7 +2971,7 @@ abs_u16: {
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $e
|
||||
// [106] sgn_u16::$0 = > sgn_u16::w#2 -- vbuaa=_hi_vwuz1
|
||||
// [106] sgn_u16::$0 = > sgn_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// [107] sgn_u16::$1 = sgn_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #$80
|
||||
@ -3040,7 +3031,7 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __0+1
|
||||
sta.z plotter+1
|
||||
// [116] bitmap_plot::$1 = < bitmap_plot::x#4 -- vbuxx=_lo_vwuz1
|
||||
// [116] bitmap_plot::$1 = (byte)bitmap_plot::x#4 -- vbuxx=_byte_vwuz1
|
||||
ldx.z x
|
||||
// [117] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
|
||||
lda bitmap_plot_bit,x
|
||||
@ -3324,7 +3315,7 @@ word bitmap_plot::x
|
||||
word bitmap_plot::x#1 x zp[2]:10 10001.0
|
||||
word bitmap_plot::x#2 x zp[2]:10 101.0
|
||||
word bitmap_plot::x#3 x zp[2]:10 10001.0
|
||||
word bitmap_plot::x#4 x zp[2]:10 55026.25
|
||||
word bitmap_plot::x#4 x zp[2]:10 30026.0
|
||||
byte bitmap_plot::y
|
||||
byte bitmap_plot::y#1 reg byte x 20002.0
|
||||
byte bitmap_plot::y#2 reg byte x 202.0
|
||||
@ -3392,7 +3383,7 @@ reg byte x [ bitmap_plot::$1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 30180
|
||||
Score: 29778
|
||||
|
||||
// File Comments
|
||||
// Shows that c64-bitmap.kc line() does not have the same problem as bitmap-draw.kc
|
||||
@ -3544,19 +3535,19 @@ bitmap_init: {
|
||||
// [24] bitmap_init::$7 = bitmap_init::y#2 & 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
lda #7
|
||||
sax.z __7
|
||||
// <yoffs
|
||||
// [25] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
||||
// BYTE0(yoffs)
|
||||
// [25] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_byte0_pbuz1
|
||||
lda.z yoffs
|
||||
// y&$7 | <yoffs
|
||||
// y&$7 | BYTE0(yoffs)
|
||||
// [26] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
|
||||
ora.z __7
|
||||
// bitmap_plot_ylo[y] = y&$7 | <yoffs
|
||||
// bitmap_plot_ylo[y] = y&$7 | BYTE0(yoffs)
|
||||
// [27] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_ylo,x
|
||||
// >yoffs
|
||||
// [28] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
|
||||
// BYTE1(yoffs)
|
||||
// [28] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_byte1_pbuz1
|
||||
lda.z yoffs+1
|
||||
// bitmap_plot_yhi[y] = >yoffs
|
||||
// bitmap_plot_yhi[y] = BYTE1(yoffs)
|
||||
// [29] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_yhi,x
|
||||
// if((y&$7)==7)
|
||||
@ -3770,8 +3761,7 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(char)y)
|
||||
// [60] bitmap_plot::x#1 = bitmap_line::x#13
|
||||
// [61] bitmap_plot::y#1 = (byte)bitmap_line::y#4 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [62] call bitmap_plot
|
||||
// [112] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot]
|
||||
// [112] phi bitmap_plot::x#4 = bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy
|
||||
@ -3845,8 +3835,7 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(char)y)
|
||||
// [71] bitmap_plot::x#2 = bitmap_line::x#6
|
||||
// [72] bitmap_plot::y#2 = (byte)bitmap_line::y#7 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [73] call bitmap_plot
|
||||
// [112] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot]
|
||||
// [112] phi bitmap_plot::x#4 = bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy
|
||||
@ -3887,8 +3876,7 @@ bitmap_line: {
|
||||
// bitmap_plot(x,(char)y)
|
||||
// [77] bitmap_plot::x#3 = bitmap_line::x#7
|
||||
// [78] bitmap_plot::y#3 = (byte)bitmap_line::y#15 -- vbuxx=_byte_vwuz1
|
||||
lda.z y
|
||||
tax
|
||||
ldx.z y
|
||||
// [79] call bitmap_plot
|
||||
// [112] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot]
|
||||
// [112] phi bitmap_plot::x#4 = bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy
|
||||
@ -4035,13 +4023,13 @@ memset: {
|
||||
abs_u16: {
|
||||
.label w = $c
|
||||
.label return = $c
|
||||
// >w
|
||||
// [99] abs_u16::$0 = > abs_u16::w#2 -- vbuaa=_hi_vwuz1
|
||||
// BYTE1(w)
|
||||
// [99] abs_u16::$0 = > abs_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
// BYTE1(w)&0x80
|
||||
// [100] abs_u16::$1 = abs_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #$80
|
||||
// if(>w&0x80)
|
||||
// if(BYTE1(w)&0x80)
|
||||
// [101] if(0!=abs_u16::$1) goto abs_u16::@1 -- 0_neq_vbuaa_then_la1
|
||||
cmp #0
|
||||
bne __b1
|
||||
@ -4071,13 +4059,13 @@ abs_u16: {
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $e
|
||||
// >w
|
||||
// [106] sgn_u16::$0 = > sgn_u16::w#2 -- vbuaa=_hi_vwuz1
|
||||
// BYTE1(w)
|
||||
// [106] sgn_u16::$0 = > sgn_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
// BYTE1(w)&0x80
|
||||
// [107] sgn_u16::$1 = sgn_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
and #$80
|
||||
// if(>w&0x80)
|
||||
// if(BYTE1(w)&0x80)
|
||||
// [108] if(0!=sgn_u16::$1) goto sgn_u16::@1 -- 0_neq_vbuaa_then_la1
|
||||
cmp #0
|
||||
bne __b1
|
||||
@ -4131,10 +4119,9 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __0+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
// [116] bitmap_plot::$1 = < bitmap_plot::x#4 -- vbuxx=_lo_vwuz1
|
||||
// *plotter |= bitmap_plot_bit[(char)x]
|
||||
// [116] bitmap_plot::$1 = (byte)bitmap_plot::x#4 -- vbuxx=_byte_vwuz1
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
// [117] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
|
@ -100,7 +100,7 @@ word bitmap_plot::x
|
||||
word bitmap_plot::x#1 x zp[2]:10 10001.0
|
||||
word bitmap_plot::x#2 x zp[2]:10 101.0
|
||||
word bitmap_plot::x#3 x zp[2]:10 10001.0
|
||||
word bitmap_plot::x#4 x zp[2]:10 55026.25
|
||||
word bitmap_plot::x#4 x zp[2]:10 30026.0
|
||||
byte bitmap_plot::y
|
||||
byte bitmap_plot::y#1 reg byte x 20002.0
|
||||
byte bitmap_plot::y#2 reg byte x 202.0
|
||||
|
@ -191,15 +191,15 @@ bitmap_init: {
|
||||
// y&$7
|
||||
lda #7
|
||||
sax.z __7
|
||||
// <yoffs
|
||||
// BYTE0(yoffs)
|
||||
lda.z yoffs
|
||||
// y&$7 | <yoffs
|
||||
// y&$7 | BYTE0(yoffs)
|
||||
ora.z __7
|
||||
// bitmap_plot_ylo[y] = y&$7 | <yoffs
|
||||
// bitmap_plot_ylo[y] = y&$7 | BYTE0(yoffs)
|
||||
sta bitmap_plot_ylo,x
|
||||
// >yoffs
|
||||
// BYTE1(yoffs)
|
||||
lda.z yoffs+1
|
||||
// bitmap_plot_yhi[y] = >yoffs
|
||||
// bitmap_plot_yhi[y] = BYTE1(yoffs)
|
||||
sta bitmap_plot_yhi,x
|
||||
// if((y&$7)==7)
|
||||
lda #7
|
||||
@ -315,9 +315,8 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __0+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
// *plotter |= bitmap_plot_bit[(char)x]
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
|
@ -162,7 +162,7 @@ bitmap_plot: scope:[bitmap_plot] from main::@2
|
||||
[71] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0]
|
||||
[72] bitmap_plot::$0 = bitmap_plot::x#0 & $fff8
|
||||
[73] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
|
||||
[74] bitmap_plot::$1 = < bitmap_plot::x#0
|
||||
[74] bitmap_plot::$1 = (byte)bitmap_plot::x#0
|
||||
[75] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
|
@ -130,7 +130,7 @@ bitmap_plot: scope:[bitmap_plot] from main::@2
|
||||
bitmap_plot::plotter#0 = (byte*){ bitmap_plot_yhi[bitmap_plot::y#1], bitmap_plot_ylo[bitmap_plot::y#1] }
|
||||
bitmap_plot::$0 = bitmap_plot::x#1 & $fff8
|
||||
bitmap_plot::plotter#1 = bitmap_plot::plotter#0 + bitmap_plot::$0
|
||||
bitmap_plot::$1 = < bitmap_plot::x#1
|
||||
bitmap_plot::$1 = (byte)bitmap_plot::x#1
|
||||
*bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
@ -576,7 +576,7 @@ bool~ main::$8
|
||||
word~ main::$9
|
||||
number~ main::toD0181_$0
|
||||
number~ main::toD0181_$1
|
||||
number~ main::toD0181_$2
|
||||
byte~ main::toD0181_$2
|
||||
byte~ main::toD0181_$3
|
||||
number~ main::toD0181_$4
|
||||
number~ main::toD0181_$5
|
||||
@ -701,7 +701,6 @@ Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD018
|
||||
Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff
|
||||
Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4
|
||||
Adding number conversion cast (unumber) main::toD0181_$1 in main::toD0181_$1 = main::toD0181_$0 * (unumber)4
|
||||
Adding number conversion cast (unumber) main::toD0181_$2 in main::toD0181_$2 = > main::toD0181_$1
|
||||
Adding number conversion cast (unumber) 4 in main::toD0181_$4 = main::toD0181_$3 / 4
|
||||
Adding number conversion cast (unumber) main::toD0181_$4 in main::toD0181_$4 = main::toD0181_$3 / (unumber)4
|
||||
Adding number conversion cast (unumber) $f in main::toD0181_$5 = main::toD0181_$4 & $f
|
||||
@ -791,7 +790,6 @@ Inferred type updated to byte in bitmap_clear::$1 = bitmap_clear::$0 + bitmap_cl
|
||||
Inferred type updated to word in bitmap_plot::$0 = bitmap_plot::x#1 & $fff8
|
||||
Inferred type updated to word in main::toD0181_$0 = main::toD0181_$7 & $3fff
|
||||
Inferred type updated to word in main::toD0181_$1 = main::toD0181_$0 * 4
|
||||
Inferred type updated to byte in main::toD0181_$2 = > main::toD0181_$1
|
||||
Inferred type updated to byte in main::toD0181_$4 = main::toD0181_$3 / 4
|
||||
Inferred type updated to byte in main::toD0181_$5 = main::toD0181_$4 & $f
|
||||
Inferred type updated to byte in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5
|
||||
@ -1298,7 +1296,7 @@ bitmap_plot: scope:[bitmap_plot] from main::@2
|
||||
[71] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0]
|
||||
[72] bitmap_plot::$0 = bitmap_plot::x#0 & $fff8
|
||||
[73] bitmap_plot::plotter#1 = (byte*)bitmap_plot::plotter#0 + bitmap_plot::$0
|
||||
[74] bitmap_plot::$1 = < bitmap_plot::x#0
|
||||
[74] bitmap_plot::$1 = (byte)bitmap_plot::x#0
|
||||
[75] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1]
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
@ -1364,7 +1362,7 @@ byte* bitmap_plot::plotter
|
||||
word bitmap_plot::plotter#0 500.5
|
||||
byte* bitmap_plot::plotter#1 1501.5
|
||||
word bitmap_plot::x
|
||||
word bitmap_plot::x#0 420.59999999999997
|
||||
word bitmap_plot::x#0 220.39999999999998
|
||||
byte bitmap_plot::y
|
||||
byte bitmap_plot::y#0 2103.0
|
||||
byte* bitmap_screen
|
||||
@ -1586,7 +1584,7 @@ Potential registers zp[2]:35 [ memset::end#0 ] : zp[2]:35 ,
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [memset] 35,672.33: zp[2]:18 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:35 [ memset::end#0 ] 1,250.12: zp[1]:17 [ memset::c#4 ] 1,001: zp[2]:13 [ memset::num#2 ] 0: zp[2]:15 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_init] 3,628.62: zp[2]:11 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:8 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:9 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:10 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:25 [ bitmap_init::$4 ] 2,002: zp[1]:26 [ bitmap_init::$5 ] 2,002: zp[1]:27 [ bitmap_init::$6 ] 500.5: zp[1]:24 [ bitmap_init::$7 ]
|
||||
Uplift Scope [bitmap_plot] 2,103: zp[1]:23 [ bitmap_plot::y#0 ] 2,002: zp[2]:30 [ bitmap_plot::$0 ] 2,002: zp[1]:34 [ bitmap_plot::$1 ] 1,501.5: zp[2]:32 [ bitmap_plot::plotter#1 ] 500.5: zp[2]:28 [ bitmap_plot::plotter#0 ] 420.6: zp[2]:21 [ bitmap_plot::x#0 ]
|
||||
Uplift Scope [bitmap_plot] 2,103: zp[1]:23 [ bitmap_plot::y#0 ] 2,002: zp[2]:30 [ bitmap_plot::$0 ] 2,002: zp[1]:34 [ bitmap_plot::$1 ] 1,501.5: zp[2]:32 [ bitmap_plot::plotter#1 ] 500.5: zp[2]:28 [ bitmap_plot::plotter#0 ] 220.4: zp[2]:21 [ bitmap_plot::x#0 ]
|
||||
Uplift Scope [main] 387.17: zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ] 303: zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ] 112.48: zp[2]:2 [ main::x#2 main::x#1 ] 101: zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplift Scope [] 7.78: zp[1]:20 [ frame_cnt ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
@ -1968,13 +1966,13 @@ bitmap_init: {
|
||||
// [44] bitmap_init::$7 = bitmap_init::y#2 & 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
lda #7
|
||||
sax.z __7
|
||||
// [45] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
||||
// [45] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_byte0_pbuz1
|
||||
lda.z yoffs
|
||||
// [46] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
|
||||
ora.z __7
|
||||
// [47] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_ylo,x
|
||||
// [48] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
|
||||
// [48] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_byte1_pbuz1
|
||||
lda.z yoffs+1
|
||||
// [49] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_yhi,x
|
||||
@ -2129,7 +2127,7 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __0+1
|
||||
sta.z plotter+1
|
||||
// [74] bitmap_plot::$1 = < bitmap_plot::x#0 -- vbuxx=_lo_vwuz1
|
||||
// [74] bitmap_plot::$1 = (byte)bitmap_plot::x#0 -- vbuxx=_byte_vwuz1
|
||||
ldx.z x
|
||||
// [75] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
|
||||
lda bitmap_plot_bit,x
|
||||
@ -2371,7 +2369,7 @@ byte* bitmap_plot::plotter
|
||||
word bitmap_plot::plotter#0 plotter zp[2]:10 500.5
|
||||
byte* bitmap_plot::plotter#1 plotter zp[2]:10 1501.5
|
||||
word bitmap_plot::x
|
||||
word bitmap_plot::x#0 x zp[2]:2 420.59999999999997
|
||||
word bitmap_plot::x#0 x zp[2]:2 220.39999999999998
|
||||
byte bitmap_plot::y
|
||||
byte bitmap_plot::y#0 reg byte x 2103.0
|
||||
constant const byte* bitmap_plot_bit[$100] = { fill( $100, 0) }
|
||||
@ -2732,19 +2730,19 @@ bitmap_init: {
|
||||
// [44] bitmap_init::$7 = bitmap_init::y#2 & 7 -- vbuz1=vbuxx_band_vbuc1
|
||||
lda #7
|
||||
sax.z __7
|
||||
// <yoffs
|
||||
// [45] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
||||
// BYTE0(yoffs)
|
||||
// [45] bitmap_init::$4 = < bitmap_init::yoffs#2 -- vbuaa=_byte0_pbuz1
|
||||
lda.z yoffs
|
||||
// y&$7 | <yoffs
|
||||
// y&$7 | BYTE0(yoffs)
|
||||
// [46] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
|
||||
ora.z __7
|
||||
// bitmap_plot_ylo[y] = y&$7 | <yoffs
|
||||
// bitmap_plot_ylo[y] = y&$7 | BYTE0(yoffs)
|
||||
// [47] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_ylo,x
|
||||
// >yoffs
|
||||
// [48] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
|
||||
// BYTE1(yoffs)
|
||||
// [48] bitmap_init::$6 = > bitmap_init::yoffs#2 -- vbuaa=_byte1_pbuz1
|
||||
lda.z yoffs+1
|
||||
// bitmap_plot_yhi[y] = >yoffs
|
||||
// bitmap_plot_yhi[y] = BYTE1(yoffs)
|
||||
// [49] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta bitmap_plot_yhi,x
|
||||
// if((y&$7)==7)
|
||||
@ -2902,10 +2900,9 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __0+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
// [74] bitmap_plot::$1 = < bitmap_plot::x#0 -- vbuxx=_lo_vwuz1
|
||||
// *plotter |= bitmap_plot_bit[(char)x]
|
||||
// [74] bitmap_plot::$1 = (byte)bitmap_plot::x#0 -- vbuxx=_byte_vwuz1
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
// [75] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$1] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
|
@ -56,7 +56,7 @@ byte* bitmap_plot::plotter
|
||||
word bitmap_plot::plotter#0 plotter zp[2]:10 500.5
|
||||
byte* bitmap_plot::plotter#1 plotter zp[2]:10 1501.5
|
||||
word bitmap_plot::x
|
||||
word bitmap_plot::x#0 x zp[2]:2 420.59999999999997
|
||||
word bitmap_plot::x#0 x zp[2]:2 220.39999999999998
|
||||
byte bitmap_plot::y
|
||||
byte bitmap_plot::y#0 reg byte x 2103.0
|
||||
constant const byte* bitmap_plot_bit[$100] = { fill( $100, 0) }
|
||||
|
@ -125,15 +125,15 @@ bitmap_init: {
|
||||
// y&$7
|
||||
lda #7
|
||||
sax.z __7
|
||||
// <yoffs
|
||||
// BYTE0(yoffs)
|
||||
lda.z yoffs
|
||||
// y&$7 | <yoffs
|
||||
// y&$7 | BYTE0(yoffs)
|
||||
ora.z __7
|
||||
// bitmap_plot_ylo[y] = y&$7 | <yoffs
|
||||
// bitmap_plot_ylo[y] = y&$7 | BYTE0(yoffs)
|
||||
sta bitmap_plot_ylo,x
|
||||
// >yoffs
|
||||
// BYTE1(yoffs)
|
||||
lda.z yoffs+1
|
||||
// bitmap_plot_yhi[y] = >yoffs
|
||||
// bitmap_plot_yhi[y] = BYTE1(yoffs)
|
||||
sta bitmap_plot_yhi,x
|
||||
// if((y&$7)==7)
|
||||
lda #7
|
||||
@ -280,7 +280,7 @@ bitmap_line: {
|
||||
sta.z e
|
||||
__b6:
|
||||
// bitmap_plot(x,(char)y)
|
||||
lda.z y
|
||||
ldx.z y
|
||||
jsr bitmap_plot
|
||||
// y += sy
|
||||
lda.z y
|
||||
@ -332,7 +332,7 @@ bitmap_line: {
|
||||
bne __b6
|
||||
__b3:
|
||||
// bitmap_plot(x,(char)y)
|
||||
lda.z y
|
||||
ldx.z y
|
||||
jsr bitmap_plot
|
||||
// }
|
||||
rts
|
||||
@ -346,7 +346,7 @@ bitmap_line: {
|
||||
sta.z e1
|
||||
__b9:
|
||||
// bitmap_plot(x,(char)y)
|
||||
lda.z y
|
||||
ldx.z y
|
||||
jsr bitmap_plot
|
||||
// x += sx
|
||||
lda.z x
|
||||
@ -399,7 +399,7 @@ bitmap_line: {
|
||||
jmp __b3
|
||||
__b4:
|
||||
// bitmap_plot(x,(char)y)
|
||||
lda.z y1
|
||||
ldx.z y1
|
||||
jsr bitmap_plot
|
||||
rts
|
||||
}
|
||||
@ -452,11 +452,11 @@ memset: {
|
||||
abs_u16: {
|
||||
.label w = $c
|
||||
.label return = $c
|
||||
// >w
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
// BYTE1(w)&0x80
|
||||
and #$80
|
||||
// if(>w&0x80)
|
||||
// if(BYTE1(w)&0x80)
|
||||
cmp #0
|
||||
bne __b1
|
||||
rts
|
||||
@ -478,11 +478,11 @@ abs_u16: {
|
||||
sgn_u16: {
|
||||
.label w = $19
|
||||
.label return = $e
|
||||
// >w
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// >w&0x80
|
||||
// BYTE1(w)&0x80
|
||||
and #$80
|
||||
// if(>w&0x80)
|
||||
// if(BYTE1(w)&0x80)
|
||||
cmp #0
|
||||
bne __b1
|
||||
lda #<1
|
||||
@ -498,16 +498,15 @@ sgn_u16: {
|
||||
rts
|
||||
}
|
||||
// Plot a single dot in the bitmap
|
||||
// bitmap_plot(word zp(6) x, byte register(A) y)
|
||||
// bitmap_plot(word zp(6) x, byte register(X) y)
|
||||
bitmap_plot: {
|
||||
.label __0 = $1b
|
||||
.label plotter = $19
|
||||
.label x = 6
|
||||
// char* plotter = (char*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
|
||||
tay
|
||||
lda bitmap_plot_yhi,y
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
lda bitmap_plot_ylo,y
|
||||
lda bitmap_plot_ylo,x
|
||||
sta.z plotter
|
||||
// x & $fff8
|
||||
lda.z x
|
||||
@ -524,9 +523,8 @@ bitmap_plot: {
|
||||
lda.z plotter+1
|
||||
adc.z __0+1
|
||||
sta.z plotter+1
|
||||
// <x
|
||||
// *plotter |= bitmap_plot_bit[(char)x]
|
||||
ldx.z x
|
||||
// *plotter |= bitmap_plot_bit[<x]
|
||||
lda bitmap_plot_bit,x
|
||||
ldy #0
|
||||
ora (plotter),y
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user