1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-02-19 08:31:01 +00:00

Added a file data segment. Improved negate word fragment.

This commit is contained in:
jespergravgaard 2019-06-21 22:12:04 +02:00
parent b461fcfa74
commit 3ae5f0981a
444 changed files with 7361 additions and 1675 deletions

View File

@ -0,0 +1,7 @@
sec
lda #0
sbc {z1}
sta {z1}
lda #0
sbc {z1}+1
sta {z1}+1

View File

@ -1,9 +1,7 @@
sec
lda {z2}
eor #$ff
adc #$0
lda #0
sbc {z2}
sta {z1}
lda {z2}+1
eor #$ff
adc #$0
lda #0
sbc {z2}+1
sta {z1}+1

View File

@ -0,0 +1,7 @@
sec
lda #0
sbc {z1}
sta {z1}
lda #0
sbc {z1}+1
sta {z1}+1

View File

@ -0,0 +1,7 @@
sec
lda #0
sbc {z2}
sta {z1}
lda #0
sbc {z2}+1
sta {z1}+1

View File

@ -97,7 +97,9 @@ public class Pass1PointerSizeofFix extends Pass1Base {
if(variable.getType() instanceof SymbolTypePointer) {
SymbolTypePointer pointerType = (SymbolTypePointer) variable.getType();
if(SymbolType.VOID.equals(pointerType.getElementType())) {
throw new CompileError("Void pointer math not allowed. ", assignment);
if(Operators.PLUS.equals(assignment.getOperator()) || Operators.MINUS.equals(assignment.getOperator())) {
throw new CompileError("Void pointer math not allowed. ", assignment);
}
}
if(pointerType.getElementType().getSizeBytes() > 1) {
// Binary operation on a non-byte pointer - sizeof()-handling is probably needed!
@ -128,7 +130,9 @@ public class Pass1PointerSizeofFix extends Pass1Base {
if(variable.getType() instanceof SymbolTypePointer) {
SymbolTypePointer pointerType = (SymbolTypePointer) variable.getType();
if(SymbolType.VOID.equals(pointerType.getElementType())) {
throw new CompileError("Void pointer math not allowed. ", assignment);
if(Operators.INCREMENT.equals(assignment.getOperator()) || Operators.DECREMENT.equals(assignment.getOperator())) {
throw new CompileError("Void pointer math not allowed. ", assignment);
}
}
if(pointerType.getElementType().getSizeBytes() > 1) {
// Unary operation on non-byte pointer type - sizeof()-handling is needed!

View File

@ -146,6 +146,9 @@ public class Pass4CodeGeneration {
}
}
generateScopeEnding(asm, currentScope);
currentScope = ScopeRef.ROOT;
asm.startSegment(currentScope, null, "File Data");
addData(asm, ScopeRef.ROOT);
// Add all absolutely placed inline KickAsm
for(ControlFlowBlock block : getGraph().getAllBlocks()) {

View File

@ -1,11 +1,10 @@
// Fill the screen with a specific char
void screen_fill(byte* screen, byte ch) {
for( byte y: 0..24) {
for(byte x:0..39) {
*screen++ = ch;
}
}
}
// Simple Singlecolor Bitmap Routines
import "string"
// The adddress of the bitmap screen (used for colors)
byte* bitmap_screen;
// The adddress of the bitmap graphics (used for pixels)
byte* bitmap_gfx;
// Tables for the plotter - initialized by calling bitmap_init();
const byte[256] bitmap_plot_ylo;
@ -13,7 +12,9 @@ const byte[256] bitmap_plot_yhi;
const byte[256] bitmap_plot_bit;
// Initialize bitmap plotting tables
void bitmap_init(byte* bitmap) {
void bitmap_init(byte* gfx, byte* screen) {
bitmap_gfx = gfx;
bitmap_screen = screen;
byte bits = $80;
for(byte x : 0..255) {
bitmap_plot_bit[x] = bits;
@ -22,7 +23,7 @@ void bitmap_init(byte* bitmap) {
bits = $80;
}
}
byte* yoffs = bitmap;
byte* yoffs = gfx;
for(byte y : 0..255) {
bitmap_plot_ylo[y] = y&$7 | <yoffs;
bitmap_plot_yhi[y] = >yoffs;
@ -33,13 +34,12 @@ void bitmap_init(byte* bitmap) {
}
// Clear all graphics on the bitmap
void bitmap_clear() {
byte* bitmap = (byte*) { bitmap_plot_yhi[0], bitmap_plot_ylo[0] };
for( byte y: 0..39 ) {
for( byte x: 0..199 ) {
*bitmap++ = 0;
}
}
// bgcol - the background color to fill the screen with
// fgcol - the foreground color to fill the screen with
void bitmap_clear(byte bgcol, byte fgcol) {
byte col = fgcol*0x10 + bgcol;
memset(bitmap_screen, col, 1000uw);
memset(bitmap_gfx, 0, 8000uw);
}
// Plot a single dot in the bitmap

View File

@ -18,8 +18,8 @@ void* memmove( void* destination, void* source, size_t num ) {
memcpy(destination, source, num);
} else {
// copy backwards
byte* src = source+num;
byte* dst = destination+num;
byte* src = (byte*)source+num;
byte* dst = (byte*)destination+num;
for( size_t i=0; i<num; i++) *--dst = *--src;
}
return destination;
@ -27,7 +27,7 @@ void* memmove( void* destination, void* source, size_t num ) {
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
void *memset(void *str, byte c, size_t num) {
byte* end = str + num;
byte* end = (byte*)str + num;
for(byte* dst = str; dst!=end; dst++)
*dst = c;
return str;

View File

@ -35,6 +35,11 @@ public class TestPrograms {
public TestPrograms() {
}
@Test
public void testBitmapPlot() throws IOException, URISyntaxException {
compileAndCompare("bitmap-plot", log());
}
@Test
public void testCallParameterAutocast() throws IOException, URISyntaxException {
compileAndCompare("call-parameter-autocast");

View File

@ -0,0 +1,58 @@
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
import "c64"
import "bitmap2"
byte* BITMAP = 0x2000;
byte* SCREEN = 0x0400;
byte[0x100] plots_per_frame;
void main() {
bitmap_init(BITMAP, SCREEN);
bitmap_clear(BLACK, WHITE);
*D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3;
*D018 = toD018(SCREEN, BITMAP);
init_irq();
word x = 0;
byte y = 0;
word vx = 1;
byte vy = 1;
while(true) {
bitmap_plot(x, y);
x += vx;
y += vy;
if(x==319 || x==0) vx = -vx;
if(y==199 || y==0) vy = -vy;
plots_per_frame[frame_cnt]++;
}
}
// Counts frames - updated by the IRQ
volatile byte frame_cnt = 1;
// Setup the IRQ
void init_irq() {
asm { sei }
// Disable kernal & basic
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
*PROCPORT = PROCPORT_RAM_IO;
// Disable CIA 1 Timer IRQ
*CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR;
// Set raster line to $100
*VIC_CONTROL |=$80;
*RASTER = $00;
// Enable Raster Interrupt
*IRQ_ENABLE = IRQ_RASTER;
// Set the IRQ routine
*HARDWARE_IRQ = &irq;
asm { cli }
}
// Interrupt Routine counting frames
interrupt(hardware_clobber) void irq() {
*BGCOL = WHITE;
if(frame_cnt) frame_cnt++;
*BGCOL = BLACK;
// Acknowledge the IRQ
*IRQ_STATUS = IRQ_RASTER;
}

View File

@ -203,6 +203,7 @@ main: {
//SEG19 [10] return
rts
}
//SEG20 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] (byte) main::b#0 ← (byte) 0 [ main::b#0 ] ( main:2 [ main::b#0 ] ) always clobbers reg byte a
@ -276,6 +277,7 @@ main: {
//SEG19 [10] return
rts
}
//SEG20 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -366,4 +368,5 @@ main: {
//SEG19 [10] return
rts
}
//SEG20 File Data

View File

@ -377,6 +377,7 @@ setByte: {
//SEG38 [18] return
rts
}
//SEG39 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] (byte) main::b1#0 ← (byte) 0 [ main::b1#0 ] ( main:2 [ main::b1#0 ] ) always clobbers reg byte a
@ -523,6 +524,7 @@ setByte: {
//SEG38 [18] return
rts
}
//SEG39 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -678,4 +680,5 @@ setByte: {
//SEG38 [18] return
rts
}
//SEG39 File Data

View File

@ -483,6 +483,7 @@ setv: {
//SEG39 [25] return
rts
}
//SEG40 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [0] (byte) val#0 ← (byte) 0 [ val#0 ] ( ) always clobbers reg byte a
@ -637,6 +638,7 @@ setv: {
//SEG39 [25] return
rts
}
//SEG40 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -801,4 +803,5 @@ setv: {
//SEG39 [25] return
rts
}
//SEG40 File Data

View File

@ -201,6 +201,7 @@ main: {
//SEG20 [9] return
rts
}
//SEG21 File Data
items: .fill SZ, 0
REGISTER UPLIFT POTENTIAL REGISTERS
@ -266,6 +267,7 @@ main: {
//SEG20 [9] return
rts
}
//SEG21 File Data
items: .fill SZ, 0
ASSEMBLER OPTIMIZATIONS
@ -352,5 +354,6 @@ main: {
//SEG20 [9] return
rts
}
//SEG21 File Data
items: .fill SZ, 0

View File

@ -395,6 +395,7 @@ main: {
//SEG33 [15] return
rts
}
//SEG34 File Data
items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
REGISTER UPLIFT POTENTIAL REGISTERS
@ -515,6 +516,7 @@ main: {
//SEG33 [15] return
rts
}
//SEG34 File Data
items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
ASSEMBLER OPTIMIZATIONS
@ -660,5 +662,6 @@ main: {
//SEG33 [15] return
rts
}
//SEG34 File Data
items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

View File

@ -180,6 +180,7 @@ main: {
//SEG15 [8] return
rts
}
//SEG16 File Data
b: .fill 3, 0
c: .byte 'c', 'm', 'l'
d: .text "cml"
@ -239,6 +240,7 @@ main: {
//SEG15 [8] return
rts
}
//SEG16 File Data
b: .fill 3, 0
c: .byte 'c', 'm', 'l'
d: .text "cml"
@ -313,6 +315,7 @@ main: {
//SEG15 [8] return
rts
}
//SEG16 File Data
b: .fill 3, 0
c: .byte 'c', 'm', 'l'
d: .text "cml"

View File

@ -203,6 +203,7 @@ main: {
//SEG18 [11] return
rts
}
//SEG19 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::screen#0) ← (byte) 'c' [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -270,6 +271,7 @@ main: {
//SEG18 [11] return
rts
}
//SEG19 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -347,4 +349,5 @@ main: {
//SEG18 [11] return
rts
}
//SEG19 File Data

View File

@ -980,6 +980,7 @@ test: {
sta cols,y
jmp breturn
}
//SEG87 File Data
ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0
REGISTER UPLIFT POTENTIAL REGISTERS
@ -1226,6 +1227,7 @@ test: {
sta cols,x
jmp breturn
}
//SEG87 File Data
ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0
ASSEMBLER OPTIMIZATIONS
@ -1501,5 +1503,6 @@ test: {
sta cols,x
rts
}
//SEG87 File Data
ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0

View File

@ -167,6 +167,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -213,6 +214,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -272,4 +274,5 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data

View File

@ -0,0 +1,302 @@
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
.pc = $801 "Basic"
:BasicUpstart(bbegin)
.pc = $80d "Program"
// Processor port data direction register
.label PROCPORT_DDR = 0
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
.const PROCPORT_DDR_MEMORY_MASK = 7
// Processor Port Register controlling RAM/ROM configuration and the datasette
.label PROCPORT = 1
// RAM in $A000, $E000 I/O in $D000
.const PROCPORT_RAM_IO = $35
.label RASTER = $d012
.label BGCOL = $d021
.label VIC_CONTROL = $d011
.label D011 = $d011
.const VIC_BMM = $20
.const VIC_DEN = $10
.const VIC_RSEL = 8
.label D018 = $d018
// VIC II IRQ Status Register
.label IRQ_STATUS = $d019
// VIC II IRQ Enable Register
.label IRQ_ENABLE = $d01a
// Bits for the IRQ Status/Enable Registers
.const IRQ_RASTER = 1
// CIA#1 Interrupt Status & Control Register
.label CIA1_INTERRUPT = $dc0d
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
.const CIA_INTERRUPT_CLEAR = $7f
// The vector used when the HARDWARE serves IRQ interrupts
.label HARDWARE_IRQ = $fffe
// The colors of the C64
.const BLACK = 0
.const WHITE = 1
.label BITMAP = $2000
.label SCREEN = $400
.label frame_cnt = $e
bbegin:
// Counts frames - updated by the IRQ
lda #1
sta frame_cnt
jsr main
rts
main: {
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
.label x = 2
.label y = 4
.label vx = 5
.label vy = 7
jsr bitmap_init
jsr bitmap_clear
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
sta D011
lda #toD0181_return
sta D018
jsr init_irq
lda #1
sta vy
sta vx
lda #0
sta vx+1
sta y
sta x
sta x+1
b2:
ldx y
jsr bitmap_plot
lda x
clc
adc vx
sta x
lda x+1
adc vx+1
sta x+1
lda y
clc
adc vy
sta y
lda x
cmp #<$13f
bne !+
lda x+1
cmp #>$13f
beq b5
!:
lda x
bne b3
lda x+1
bne b3
b5:
sec
lda #0
sbc vx
sta vx
lda #0
sbc vx+1
sta vx+1
b3:
lda #$c7
cmp y
beq b6
lda y
cmp #0
bne b4
b6:
lda vy
eor #$ff
clc
adc #1
sta vy
b4:
ldx frame_cnt
inc plots_per_frame,x
jmp b2
}
// Plot a single dot in the bitmap
// bitmap_plot(word zeropage(2) x, byte register(X) y)
bitmap_plot: {
.label _1 = $11
.label plotter = $f
.label x = 2
.label _3 = $f
lda bitmap_plot_yhi,x
sta _3+1
lda bitmap_plot_ylo,x
sta _3
lda x
and #<$fff8
sta _1
lda x+1
and #>$fff8
sta _1+1
lda plotter
clc
adc _1
sta plotter
lda plotter+1
adc _1+1
sta plotter+1
lda x
tay
lda bitmap_plot_bit,y
ldy #0
ora (plotter),y
sta (plotter),y
rts
}
// Setup the IRQ
init_irq: {
sei
// Disable kernal & basic
lda #PROCPORT_DDR_MEMORY_MASK
sta PROCPORT_DDR
lda #PROCPORT_RAM_IO
sta PROCPORT
// Disable CIA 1 Timer IRQ
lda #CIA_INTERRUPT_CLEAR
sta CIA1_INTERRUPT
// Set raster line to $100
lda #$80
ora VIC_CONTROL
sta VIC_CONTROL
lda #0
sta RASTER
// Enable Raster Interrupt
lda #IRQ_RASTER
sta IRQ_ENABLE
// Set the IRQ routine
lda #<irq
sta HARDWARE_IRQ
lda #>irq
sta HARDWARE_IRQ+1
cli
rts
}
// Clear all graphics on the bitmap
// bgcol - the background color to fill the screen with
// fgcol - the foreground color to fill the screen with
bitmap_clear: {
.const col = WHITE*$10
ldx #col
lda #<$3e8
sta memset.num
lda #>$3e8
sta memset.num+1
lda #<SCREEN
sta memset.str
lda #>SCREEN
sta memset.str+1
jsr memset
ldx #0
lda #<$1f40
sta memset.num
lda #>$1f40
sta memset.num+1
lda #<BITMAP
sta memset.str
lda #>BITMAP
sta memset.str+1
jsr memset
rts
}
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
// memset(void* zeropage(8) str, byte register(X) c, word zeropage($a) num)
memset: {
.label end = $a
.label dst = 8
.label str = 8
.label num = $a
lda end
clc
adc str
sta end
lda end+1
adc str+1
sta end+1
b1:
txa
ldy #0
sta (dst),y
inc dst
bne !+
inc dst+1
!:
lda dst+1
cmp end+1
bne b1
lda dst
cmp end
bne b1
rts
}
// Initialize bitmap plotting tables
bitmap_init: {
.label _7 = $13
.label yoffs = $c
ldx #0
lda #$80
b1:
sta bitmap_plot_bit,x
lsr
cmp #0
bne b2
lda #$80
b2:
inx
cpx #0
bne b1
lda #<BITMAP
sta yoffs
lda #>BITMAP
sta yoffs+1
ldx #0
b3:
lda #7
sax _7
lda yoffs
ora _7
sta bitmap_plot_ylo,x
lda yoffs+1
sta bitmap_plot_yhi,x
lda #7
cmp _7
bne b4
clc
lda yoffs
adc #<$28*8
sta yoffs
lda yoffs+1
adc #>$28*8
sta yoffs+1
b4:
inx
cpx #0
bne b3
rts
}
// Interrupt Routine counting frames
irq: {
sta rega+1
lda #WHITE
sta BGCOL
lda #0
cmp frame_cnt
beq b1
inc frame_cnt
b1:
lda #BLACK
sta BGCOL
// Acknowledge the IRQ
lda #IRQ_RASTER
sta IRQ_STATUS
rega:
lda #00
rti
}
// Tables for the plotter - initialized by calling bitmap_init();
bitmap_plot_ylo: .fill $100, 0
bitmap_plot_yhi: .fill $100, 0
bitmap_plot_bit: .fill $100, 0
plots_per_frame: .fill $100, 0

View File

@ -0,0 +1,172 @@
@begin: scope:[] from
[0] phi()
to:@1
@1: scope:[] from @begin
[1] (byte) frame_cnt#0 ← (byte) 1
to:@2
@2: scope:[] from @1
[2] phi()
[3] call main
to:@end
@end: scope:[] from @2
[4] phi()
main: scope:[main] from @2
[5] phi()
[6] call bitmap_init
to:main::@8
main::@8: scope:[main] from main
[7] phi()
[8] call bitmap_clear
to:main::@9
main::@9: scope:[main] from main::@8
[9] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3
to:main::toD0181
main::toD0181: scope:[main] from main::@9
[10] phi()
to:main::@7
main::@7: scope:[main] from main::toD0181
[11] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
[12] call init_irq
to:main::@1
main::@1: scope:[main] from main::@4 main::@7
[13] (byte) main::vy#2 ← phi( main::@7/(byte) 1 main::@4/(byte) main::vy#8 )
[13] (word) main::vx#2 ← phi( main::@7/(byte) 1 main::@4/(word) main::vx#6 )
[13] (byte) main::y#2 ← phi( main::@7/(byte) 0 main::@4/(byte) main::y#1 )
[13] (word) main::x#2 ← phi( main::@7/(byte) 0 main::@4/(word) main::x#1 )
to:main::@2
main::@2: scope:[main] from main::@1
[14] (word) bitmap_plot::x#0 ← (word) main::x#2
[15] (byte) bitmap_plot::y#0 ← (byte) main::y#2
[16] call bitmap_plot
to:main::@10
main::@10: scope:[main] from main::@2
[17] (word) main::x#1 ← (word) main::x#2 + (word) main::vx#2
[18] (byte) main::y#1 ← (byte) main::y#2 + (byte) main::vy#2
[19] if((word) main::x#1==(word) $13f) goto main::@5
to:main::@11
main::@11: scope:[main] from main::@10
[20] if((word) main::x#1!=(byte) 0) goto main::@3
to:main::@5
main::@5: scope:[main] from main::@10 main::@11
[21] (word) main::vx#1 ← - (word) main::vx#2
to:main::@3
main::@3: scope:[main] from main::@11 main::@5
[22] (word) main::vx#6 ← phi( main::@11/(word) main::vx#2 main::@5/(word) main::vx#1 )
[23] if((byte) main::y#1==(byte) $c7) goto main::@6
to:main::@12
main::@12: scope:[main] from main::@3
[24] if((byte) main::y#1!=(byte) 0) goto main::@4
to:main::@6
main::@6: scope:[main] from main::@12 main::@3
[25] (byte) main::vy#1 ← - (byte) main::vy#2
to:main::@4
main::@4: scope:[main] from main::@12 main::@6
[26] (byte) main::vy#8 ← phi( main::@12/(byte) main::vy#2 main::@6/(byte) main::vy#1 )
[27] *((const byte[$100]) plots_per_frame#0 + (byte) frame_cnt#0) ← ++ *((const byte[$100]) plots_per_frame#0 + (byte) frame_cnt#0)
to:main::@1
bitmap_plot: scope:[bitmap_plot] from main::@2
[28] (word~) bitmap_plot::$3 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0)
[29] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8
[30] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1
[31] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0
[32] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
[33] return
to:@return
init_irq: scope:[init_irq] from main::@7
asm { sei }
[35] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
[36] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
[37] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
[38] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte) $80
[39] *((const byte*) RASTER#0) ← (byte) 0
[40] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
[41] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
asm { cli }
to:init_irq::@return
init_irq::@return: scope:[init_irq] from init_irq
[43] return
to:@return
bitmap_clear: scope:[bitmap_clear] from main::@8
[44] phi()
[45] call memset
to:bitmap_clear::@1
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear
[46] phi()
[47] call memset
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1
[48] return
to:@return
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
[49] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
[49] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
[49] (void*) memset::str#2 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 )
[50] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2
[51] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2
to:memset::@1
memset::@1: scope:[memset] from memset memset::@1
[52] (byte*) memset::dst#2 ← phi( memset/(byte*~) memset::dst#3 memset::@1/(byte*) memset::dst#1 )
[53] *((byte*) memset::dst#2) ← (byte) memset::c#3
[54] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
[55] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1
to:memset::@return
memset::@return: scope:[memset] from memset::@1
[56] return
to:@return
bitmap_init: scope:[bitmap_init] from main
[57] phi()
to:bitmap_init::@1
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
[58] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
[58] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
[59] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
[60] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
[61] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1
[62] phi()
to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6
[63] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
[64] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
[65] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
[66] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
[66] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
[67] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
[68] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
[69] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
[70] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
[71] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
[72] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
[73] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3
[74] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5
[75] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
[76] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
[77] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
[78] return
to:@return
irq: scope:[irq] from
[79] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
[80] if((byte) 0==(byte) frame_cnt#0) goto irq::@1
to:irq::@2
irq::@2: scope:[irq] from irq
[81] (byte) frame_cnt#1 ← ++ (byte) frame_cnt#0
to:irq::@1
irq::@1: scope:[irq] from irq irq::@2
[82] (byte) frame_cnt#10 ← phi( irq/(byte) frame_cnt#0 irq::@2/(byte) frame_cnt#1 )
[83] *((const byte*) BGCOL#0) ← (const byte) BLACK#0
[84] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
to:irq::@return
irq::@return: scope:[irq] from irq::@1
[85] return
to:@return

3917
src/test/ref/bitmap-plot.log Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,192 @@
(label) @1
(label) @2
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (byte*) 53281
(byte*) BITMAP
(const byte*) BITMAP#0 BITMAP = (byte*) 8192
(byte) BLACK
(const byte) BLACK#0 BLACK = (byte) 0
(byte*) CIA1_INTERRUPT
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = (byte*) 56333
(byte) CIA_INTERRUPT_CLEAR
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte) $7f
(byte*) D011
(const byte*) D011#0 D011 = (byte*) 53265
(byte*) D018
(const byte*) D018#0 D018 = (byte*) 53272
(void()**) HARDWARE_IRQ
(const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = (void()**) 65534
(byte*) IRQ_ENABLE
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = (byte*) 53274
(byte) IRQ_RASTER
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte) 1
(byte*) IRQ_STATUS
(const byte*) IRQ_STATUS#0 IRQ_STATUS = (byte*) 53273
(byte*) PROCPORT
(const byte*) PROCPORT#0 PROCPORT = (byte*) 1
(byte*) PROCPORT_DDR
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = (byte*) 0
(byte) PROCPORT_DDR_MEMORY_MASK
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte) 7
(byte) PROCPORT_RAM_IO
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte) $35
(byte*) RASTER
(const byte*) RASTER#0 RASTER = (byte*) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = (byte*) 1024
(byte) VIC_BMM
(const byte) VIC_BMM#0 VIC_BMM = (byte) $20
(byte*) VIC_CONTROL
(const byte*) VIC_CONTROL#0 VIC_CONTROL = (byte*) 53265
(byte) VIC_DEN
(const byte) VIC_DEN#0 VIC_DEN = (byte) $10
(byte) VIC_RSEL
(const byte) VIC_RSEL#0 VIC_RSEL = (byte) 8
(byte) WHITE
(const byte) WHITE#0 WHITE = (byte) 1
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
(label) bitmap_clear::@1
(label) bitmap_clear::@return
(byte) bitmap_clear::bgcol
(byte) bitmap_clear::col
(const byte) bitmap_clear::col#0 col = (const byte) WHITE#0*(byte) $10
(byte) bitmap_clear::fgcol
(byte*) bitmap_gfx
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
(byte~) bitmap_init::$4 reg byte a 22.0
(byte~) bitmap_init::$5 reg byte a 22.0
(byte~) bitmap_init::$6 reg byte a 22.0
(byte~) bitmap_init::$7 $7 zp ZP_BYTE:19 5.5
(label) bitmap_init::@1
(label) bitmap_init::@2
(label) bitmap_init::@3
(label) bitmap_init::@4
(label) bitmap_init::@5
(label) bitmap_init::@6
(label) bitmap_init::@return
(byte) bitmap_init::bits
(byte) bitmap_init::bits#1 reg byte a 11.0
(byte) bitmap_init::bits#3 reg byte a 16.5
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
(byte*) bitmap_init::gfx
(byte*) bitmap_init::screen
(byte) bitmap_init::x
(byte) bitmap_init::x#1 reg byte x 16.5
(byte) bitmap_init::x#2 reg byte x 5.5
(byte) bitmap_init::y
(byte) bitmap_init::y#1 reg byte x 16.5
(byte) bitmap_init::y#2 reg byte x 5.5
(byte*) bitmap_init::yoffs
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:12 22.0
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:12 6.875
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:12 11.0
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
(word~) bitmap_plot::$1 $1 zp ZP_WORD:17 4.0
(byte~) bitmap_plot::$2 reg byte a 4.0
(word~) bitmap_plot::$3 $3 zp ZP_WORD:15 1.0
(label) bitmap_plot::@return
(byte*) bitmap_plot::plotter
(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:15 3.0
(word) bitmap_plot::x
(word) bitmap_plot::x#0 x zp ZP_WORD:2 3.0
(byte) bitmap_plot::y
(byte) bitmap_plot::y#0 reg byte x 15.0
(byte[$100]) bitmap_plot_bit
(const byte[$100]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( $100, 0) }
(byte[$100]) bitmap_plot_yhi
(const byte[$100]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( $100, 0) }
(byte[$100]) bitmap_plot_ylo
(const byte[$100]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( $100, 0) }
(byte*) bitmap_screen
(byte) frame_cnt
(byte) frame_cnt#0 frame_cnt zp ZP_BYTE:14 1.1111111111111112
(byte) frame_cnt#1 frame_cnt zp ZP_BYTE:14 4.0
(byte) frame_cnt#10 frame_cnt zp ZP_BYTE:14 40.0
(void()) init_irq()
(label) init_irq::@return
interrupt(HARDWARE_CLOBBER)(void()) irq()
(label) irq::@1
(label) irq::@2
(label) irq::@return
(void()) main()
(label) main::@1
(label) main::@10
(label) main::@11
(label) main::@12
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::@8
(label) main::@9
(label) main::toD0181
(word~) main::toD0181_$0
(number~) main::toD0181_$1
(number~) main::toD0181_$2
(number~) main::toD0181_$3
(word~) main::toD0181_$4
(byte~) main::toD0181_$5
(number~) main::toD0181_$6
(number~) main::toD0181_$7
(number~) main::toD0181_$8
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN#0&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP#0/(byte) 4&(byte) $f
(byte*) main::toD0181_screen
(word) main::vx
(word) main::vx#1 vx zp ZP_WORD:5 22.0
(word) main::vx#2 vx zp ZP_WORD:5 5.5
(word) main::vx#6 vx zp ZP_WORD:5 5.5
(byte) main::vy
(byte) main::vy#1 vy zp ZP_BYTE:7 22.0
(byte) main::vy#2 vy zp ZP_BYTE:7 3.6666666666666665
(byte) main::vy#8 vy zp ZP_BYTE:7 16.5
(word) main::x
(word) main::x#1 x zp ZP_WORD:2 4.0
(word) main::x#2 x zp ZP_WORD:2 8.25
(byte) main::y
(byte) main::y#1 y zp ZP_BYTE:4 4.4
(byte) main::y#2 y zp ZP_BYTE:4 6.6000000000000005
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
(label) memset::@1
(label) memset::@return
(byte) memset::c
(byte) memset::c#3 reg byte x 1.5714285714285714
(byte*) memset::dst
(byte*) memset::dst#1 dst zp ZP_WORD:8 16.5
(byte*) memset::dst#2 dst zp ZP_WORD:8 17.5
(byte*~) memset::dst#3 dst zp ZP_WORD:8 4.0
(byte*) memset::end
(byte*) memset::end#0 end zp ZP_WORD:10 2.1666666666666665
(word) memset::num
(word) memset::num#2 num zp ZP_WORD:10 2.0
(void*) memset::return
(void*) memset::str
(void*) memset::str#2 str zp ZP_WORD:8
(byte[$100]) plots_per_frame
(const byte[$100]) plots_per_frame#0 plots_per_frame = { fill( $100, 0) }
zp ZP_WORD:2 [ main::x#2 main::x#1 bitmap_plot::x#0 ]
zp ZP_BYTE:4 [ main::y#2 main::y#1 ]
zp ZP_WORD:5 [ main::vx#2 main::vx#6 main::vx#1 ]
zp ZP_BYTE:7 [ main::vy#2 main::vy#8 main::vy#1 ]
zp ZP_WORD:8 [ memset::str#2 memset::dst#2 memset::dst#3 memset::dst#1 ]
zp ZP_WORD:10 [ memset::num#2 memset::end#0 ]
reg byte x [ memset::c#3 ]
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 ]
zp ZP_WORD:12 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
zp ZP_BYTE:14 [ frame_cnt#10 frame_cnt#0 frame_cnt#1 ]
reg byte x [ bitmap_plot::y#0 ]
zp ZP_WORD:15 [ bitmap_plot::$3 bitmap_plot::plotter#1 ]
zp ZP_WORD:17 [ bitmap_plot::$1 ]
reg byte a [ bitmap_plot::$2 ]
zp ZP_BYTE:19 [ bitmap_init::$7 ]
reg byte a [ bitmap_init::$4 ]
reg byte a [ bitmap_init::$5 ]
reg byte a [ bitmap_init::$6 ]

View File

@ -1443,6 +1443,7 @@ init_screen: {
//SEG120 [69] return
rts
}
//SEG121 File Data
plots_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28
plots_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28
plot_xlo: .fill $100, 0
@ -1928,6 +1929,7 @@ init_screen: {
//SEG120 [69] return
rts
}
//SEG121 File Data
plots_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28
plots_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28
plot_xlo: .fill $100, 0
@ -2452,6 +2454,7 @@ init_screen: {
//SEG120 [69] return
rts
}
//SEG121 File Data
plots_x: .byte $3c, $50, $6e, $50, $3c, $28, $a, $28
plots_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28
plot_xlo: .fill $100, 0

View File

@ -185,6 +185,7 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::SCREEN#0) ← ~(byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -256,6 +257,7 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -341,4 +343,5 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data

View File

@ -486,6 +486,7 @@ bool_const_if: {
//SEG37 [19] return
rts
}
//SEG38 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [12] *((const byte*) SCREEN#0+(byte) 2) ← (byte) 't' [ ] ( main:2::bool_const_inline:9 [ ] ) always clobbers reg byte a
@ -605,6 +606,7 @@ bool_const_if: {
//SEG37 [19] return
rts
}
//SEG38 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -744,4 +746,5 @@ bool_const_if: {
//SEG37 [19] return
rts
}
//SEG38 File Data

View File

@ -408,6 +408,7 @@ isSet: {
//SEG38 [21] return
rts
}
//SEG39 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [7] (bool) isSet::b#0 ← (byte~) main::$0 == (byte) 0 [ main::i#2 isSet::b#0 ] ( main:2 [ main::i#2 isSet::b#0 ] ) always clobbers reg byte a
@ -551,6 +552,7 @@ isSet: {
//SEG38 [21] return
rts
}
//SEG39 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -712,4 +714,5 @@ isSet: {
//SEG38 [21] return
rts
}
//SEG39 File Data

View File

@ -981,6 +981,7 @@ bool_and: {
sta screen,y
jmp b3
}
//SEG107 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [20] *((const byte*) bool_complex::screen#0 + (byte) bool_complex::i#2) ← (byte) '*' [ bool_complex::i#2 ] ( main:2::bool_complex:11 [ bool_complex::i#2 ] ) always clobbers reg byte a
@ -1314,6 +1315,7 @@ bool_and: {
sta screen,x
jmp b3
}
//SEG107 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -1687,4 +1689,5 @@ bool_and: {
sta screen,x
jmp b3
}
//SEG107 File Data

View File

@ -190,6 +190,7 @@ main: {
bne b1_from_b2
jmp b2
}
//SEG18 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ZP_BOOL:2 [ framedone#2 ] : zp ZP_BOOL:2 , reg byte a ,
@ -247,6 +248,7 @@ main: {
bne b1_from_b2
jmp b2
}
//SEG18 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -320,4 +322,5 @@ main: {
bne b1
jmp b2
}
//SEG18 File Data

View File

@ -182,6 +182,7 @@ main: {
//SEG17 [9] return
rts
}
//SEG18 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((bool*) 1024) ← true [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -246,6 +247,7 @@ main: {
//SEG17 [9] return
rts
}
//SEG18 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -320,4 +322,5 @@ main: {
//SEG17 [9] return
rts
}
//SEG18 File Data

View File

@ -1051,6 +1051,7 @@ bool_and: {
sta screen,y
jmp b3
}
//SEG109 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [15] (bool) bool_complex::o1#0 ← (byte) bool_complex::i#2 < (byte) $a [ bool_complex::i#2 bool_complex::o1#0 ] ( main:2::bool_complex:11 [ bool_complex::i#2 bool_complex::o1#0 ] ) always clobbers reg byte a
@ -1422,6 +1423,7 @@ bool_and: {
sta screen,x
jmp b3
}
//SEG109 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -1832,4 +1834,5 @@ bool_and: {
sta screen,x
jmp b3
}
//SEG109 File Data

View File

@ -511,6 +511,7 @@ main: {
//SEG38 [16] return
rts
}
//SEG39 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( main:2 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ) always clobbers reg byte a reg byte y
@ -661,6 +662,7 @@ main: {
//SEG38 [16] return
rts
}
//SEG39 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -837,4 +839,5 @@ main: {
//SEG38 [16] return
rts
}
//SEG39 File Data

View File

@ -529,6 +529,7 @@ main: {
//SEG39 [17] return
rts
}
//SEG40 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] (byte*~) main::$15 ← (const byte[$28*$19]) main::screen#0 + (word) main::idx#3 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] ( main:2 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] ) always clobbers reg byte a
@ -691,6 +692,7 @@ main: {
//SEG39 [17] return
rts
}
//SEG40 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -877,4 +879,5 @@ main: {
//SEG39 [17] return
rts
}
//SEG40 File Data

View File

@ -234,13 +234,11 @@ print_sword: {
lda #'-'
jsr print_char
sec
lda w
eor #$ff
adc #0
lda #0
sbc w
sta w
lda w+1
eor #$ff
adc #0
lda #0
sbc w+1
sta w+1
b1:
jsr print_word

View File

@ -2676,13 +2676,11 @@ print_sword: {
b3:
//SEG208 [94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1
sec
lda w
eor #$ff
adc #0
lda #0
sbc w
sta w
lda w+1
eor #$ff
adc #0
lda #0
sbc w+1
sta w+1
//SEG209 [95] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1]
b1_from_print_sword:
@ -3023,6 +3021,7 @@ print_cls: {
//SEG336 [145] return
rts
}
//SEG337 File Data
print_hextab: .text "0123456789abcdef"
REGISTER UPLIFT POTENTIAL REGISTERS
@ -3107,22 +3106,22 @@ Uplift Scope [testShort]
Uplift Scope [testInt]
Uplift Scope [testLong]
Uplifting [] best 2675 combination zp ZP_WORD:16 [ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ]
Uplifting [print_str] best 2675 combination zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ]
Uplifting [print_cls] best 2675 combination zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ]
Uplifting [print_byte] best 2655 combination reg byte x [ print_byte::b#4 print_byte::b#6 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ]
Uplifting [print_word] best 2655 combination zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#9 ]
Uplifting [print_char] best 2610 combination reg byte a [ print_char::ch#14 print_char::ch#4 print_char::ch#5 ]
Uplifting [print_sword] best 2610 combination zp ZP_WORD:20 [ print_sword::w#6 print_sword::w#5 print_sword::w#0 ]
Uplifting [print_sdword] best 2610 combination zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ]
Uplifting [print_sbyte] best 2598 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ]
Uplifting [print_dword] best 2598 combination zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ]
Uplifting [print_ln] best 2598 combination
Uplifting [main] best 2598 combination
Uplifting [testChar] best 2598 combination
Uplifting [testShort] best 2598 combination
Uplifting [testInt] best 2598 combination
Uplifting [testLong] best 2598 combination
Uplifting [] best 2671 combination zp ZP_WORD:16 [ print_char_cursor#90 print_char_cursor#143 print_char_cursor#139 print_char_cursor#140 print_char_cursor#24 print_char_cursor#132 print_char_cursor#150 print_char_cursor#155 print_char_cursor#156 print_char_cursor#157 print_char_cursor#1 ] zp ZP_WORD:2 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 ]
Uplifting [print_str] best 2671 combination zp ZP_WORD:18 [ print_str::str#5 print_str::str#7 print_str::str#0 ]
Uplifting [print_cls] best 2671 combination zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#1 ]
Uplifting [print_byte] best 2651 combination reg byte x [ print_byte::b#4 print_byte::b#6 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ]
Uplifting [print_word] best 2651 combination zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#9 ]
Uplifting [print_char] best 2606 combination reg byte a [ print_char::ch#14 print_char::ch#4 print_char::ch#5 ]
Uplifting [print_sword] best 2606 combination zp ZP_WORD:20 [ print_sword::w#6 print_sword::w#5 print_sword::w#0 ]
Uplifting [print_sdword] best 2606 combination zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ]
Uplifting [print_sbyte] best 2594 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 ]
Uplifting [print_dword] best 2594 combination zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ]
Uplifting [print_ln] best 2594 combination
Uplifting [main] best 2594 combination
Uplifting [testChar] best 2594 combination
Uplifting [testShort] best 2594 combination
Uplifting [testInt] best 2594 combination
Uplifting [testLong] best 2594 combination
Coalescing zero page register with common assignment [ zp ZP_DWORD:4 [ print_sdword::dw#4 print_sdword::dw#3 print_sdword::dw#0 ] ] with [ zp ZP_DWORD:8 [ print_dword::dw#2 print_dword::dw#0 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:12 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#9 ] ] with [ zp ZP_WORD:20 [ print_sword::w#6 print_sword::w#5 print_sword::w#0 ] ] - score: 1
Allocated (was zp ZP_WORD:12) zp ZP_WORD:8 [ print_word::w#5 print_word::w#1 print_word::w#2 print_word::w#9 print_sword::w#6 print_sword::w#5 print_sword::w#0 ]
@ -3704,13 +3703,11 @@ print_sword: {
b3:
//SEG208 [94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1
sec
lda w
eor #$ff
adc #0
lda #0
sbc w
sta w
lda w+1
eor #$ff
adc #0
lda #0
sbc w+1
sta w+1
//SEG209 [95] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1]
b1_from_print_sword:
@ -4035,6 +4032,7 @@ print_cls: {
//SEG336 [145] return
rts
}
//SEG337 File Data
print_hextab: .text "0123456789abcdef"
ASSEMBLER OPTIMIZATIONS
@ -4444,7 +4442,7 @@ reg byte x [ print_byte::$2 ]
FINAL ASSEMBLER
Score: 2161
Score: 2157
//SEG0 File Comments
// Tests the different standard C types
@ -4891,13 +4889,11 @@ print_sword: {
//SEG207 print_sword::@3
//SEG208 [94] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1
sec
lda w
eor #$ff
adc #0
lda #0
sbc w
sta w
lda w+1
eor #$ff
adc #0
lda #0
sbc w+1
sta w+1
//SEG209 [95] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1]
//SEG210 [95] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy
@ -5141,5 +5137,6 @@ print_cls: {
//SEG336 [145] return
rts
}
//SEG337 File Data
print_hextab: .text "0123456789abcdef"

View File

@ -2338,6 +2338,7 @@ gfx_init_screen0: {
//SEG170 [91] return
rts
}
//SEG171 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -3078,6 +3079,7 @@ gfx_init_screen0: {
//SEG170 [91] return
rts
}
//SEG171 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -3883,4 +3885,5 @@ gfx_init_screen0: {
//SEG170 [91] return
rts
}
//SEG171 File Data

View File

@ -1693,6 +1693,7 @@ dtvSetCpuBankSegment1: {
//SEG111 [61] return
rts
}
//SEG112 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -2221,6 +2222,7 @@ dtvSetCpuBankSegment1: {
//SEG111 [61] return
rts
}
//SEG112 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -2807,4 +2809,5 @@ dtvSetCpuBankSegment1: {
//SEG111 [61] return
rts
}
//SEG112 File Data

View File

@ -950,6 +950,7 @@ main: {
//SEG46 [38] return
rts
}
//SEG47 File Data
SRCA: .text "camelot rules!@"
SRCB: .byte $80
@ -1207,6 +1208,7 @@ main: {
//SEG46 [38] return
rts
}
//SEG47 File Data
SRCA: .text "camelot rules!@"
SRCB: .byte $80
@ -1532,6 +1534,7 @@ main: {
//SEG46 [38] return
rts
}
//SEG47 File Data
SRCA: .text "camelot rules!@"
SRCB: .byte $80

View File

@ -1017,6 +1017,7 @@ main: {
//SEG55 [42] return
rts
}
//SEG56 File Data
SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' '
SRCB: .byte $80
@ -1334,6 +1335,7 @@ main: {
//SEG55 [42] return
rts
}
//SEG56 File Data
SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' '
SRCB: .byte $80
@ -1697,6 +1699,7 @@ main: {
//SEG55 [42] return
rts
}
//SEG56 File Data
SRCA: .byte 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' '
SRCB: .byte $80

View File

@ -558,6 +558,7 @@ main: {
jmp b1
palette: .byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $a, $b, $c, $d, $e, $f
}
//SEG35 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -708,6 +709,7 @@ main: {
jmp b1
palette: .byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $a, $b, $c, $d, $e, $f
}
//SEG35 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -889,4 +891,5 @@ main: {
jmp b1
palette: .byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $a, $b, $c, $d, $e, $f
}
//SEG35 File Data

View File

@ -20914,6 +20914,7 @@ keyboard_init: {
//SEG1753 [855] return
rts
}
//SEG1754 File Data
// Default vallues for the palette
DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a
print_hextab: .text "0123456789abcdef"
@ -27680,6 +27681,7 @@ keyboard_init: {
//SEG1753 [855] return
rts
}
//SEG1754 File Data
// Default vallues for the palette
DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a
print_hextab: .text "0123456789abcdef"
@ -34659,6 +34661,7 @@ keyboard_init: {
//SEG1753 [855] return
rts
}
//SEG1754 File Data
// Default vallues for the palette
DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a
print_hextab: .text "0123456789abcdef"

View File

@ -19476,6 +19476,7 @@ print_set_screen: {
//SEG1660 [891] return
rts
}
//SEG1661 File Data
// Default vallues for the palette
DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a
// Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7)
@ -25798,6 +25799,7 @@ print_set_screen: {
//SEG1660 [891] return
rts
}
//SEG1661 File Data
// Default vallues for the palette
DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a
// Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7)
@ -32133,6 +32135,7 @@ print_set_screen: {
//SEG1660 [891] return
rts
}
//SEG1661 File Data
// Default vallues for the palette
DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a
// Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7)

View File

@ -361,6 +361,7 @@ print: {
//SEG34 [15] return
rts
}
//SEG35 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [12] (byte~) print::$0 ← (byte) idx#12 << (byte) 1 [ idx#12 print::w#3 print::$0 ] ( main:2::print:5 [ idx#12 print::w#3 print::$0 ] main:2::print:7 [ idx#12 print::w#3 print::$0 ] main:2::print:9 [ idx#12 print::w#3 print::$0 ] ) always clobbers reg byte a
@ -478,6 +479,7 @@ print: {
//SEG34 [15] return
rts
}
//SEG35 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -611,4 +613,5 @@ print: {
//SEG34 [15] return
rts
}
//SEG35 File Data

View File

@ -353,6 +353,7 @@ line: {
//SEG35 [15] return
rts
}
//SEG36 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [11] *((byte*) screen#10) ← (byte) line::x#2 [ line::x1#3 line::x#2 screen#10 ] ( main:2::line:5 [ line::x1#3 line::x#2 screen#10 ] main:2::line:7 [ line::x1#3 line::x#2 screen#10 ] ) always clobbers reg byte y
@ -471,6 +472,7 @@ line: {
//SEG35 [15] return
rts
}
//SEG36 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -606,4 +608,5 @@ line: {
//SEG35 [15] return
rts
}
//SEG36 File Data

View File

@ -193,6 +193,7 @@ main: {
rts
sbs: .byte -1, -2, -3, -4
}
//SEG21 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte)*((const signed byte[]) main::sbs#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
@ -260,6 +261,7 @@ main: {
rts
sbs: .byte -1, -2, -3, -4
}
//SEG21 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -344,4 +346,5 @@ main: {
rts
sbs: .byte -1, -2, -3, -4
}
//SEG21 File Data

View File

@ -285,6 +285,7 @@ main: {
//SEG18 [8] return
rts
}
//SEG19 File Data
screens: .word $400, $1400
REGISTER UPLIFT POTENTIAL REGISTERS
@ -362,6 +363,7 @@ main: {
//SEG18 [8] return
rts
}
//SEG19 File Data
screens: .word $400, $1400
ASSEMBLER OPTIMIZATIONS
@ -459,5 +461,6 @@ main: {
//SEG18 [8] return
rts
}
//SEG19 File Data
screens: .word $400, $1400

View File

@ -296,6 +296,7 @@ main: {
//SEG19 [9] return
rts
}
//SEG20 File Data
screens: .word $400, $1400
REGISTER UPLIFT POTENTIAL REGISTERS
@ -376,6 +377,7 @@ main: {
//SEG19 [9] return
rts
}
//SEG20 File Data
screens: .word $400, $1400
ASSEMBLER OPTIMIZATIONS
@ -478,5 +480,6 @@ main: {
//SEG19 [9] return
rts
}
//SEG20 File Data
screens: .word $400, $1400

View File

@ -157,6 +157,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::sprite_ptr#0) ← (byte)(const byte*) sprite#0/(byte) $40 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -204,6 +205,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -266,4 +268,5 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data

View File

@ -294,6 +294,7 @@ main: {
sta BGCOL
jmp breturn
}
//SEG19 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::SCREEN#0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -369,6 +370,7 @@ main: {
sta BGCOL
jmp breturn
}
//SEG19 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -469,4 +471,5 @@ main: {
sta BGCOL
rts
}
//SEG19 File Data

View File

@ -495,6 +495,7 @@ w: {
//SEG40 [22] return
rts
}
//SEG41 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] (byte) main::b2#0 ← (byte) $c8 - (byte) main::b#2 [ main::b#2 main::b2#0 ] ( main:2 [ main::b#2 main::b2#0 ] ) always clobbers reg byte a
@ -635,6 +636,7 @@ w: {
//SEG40 [22] return
rts
}
//SEG41 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -805,4 +807,5 @@ w: {
//SEG40 [22] return
rts
}
//SEG41 File Data

View File

@ -539,6 +539,7 @@ main: {
//SEG51 [23] return
rts
}
//SEG52 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) PROCPORT#0) ← (byte) $32 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -713,6 +714,7 @@ main: {
//SEG51 [23] return
rts
}
//SEG52 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -917,4 +919,5 @@ main: {
//SEG51 [23] return
rts
}
//SEG52 File Data

View File

@ -415,6 +415,7 @@ main: {
//SEG41 [17] return
rts
}
//SEG42 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [7] *((byte*) main::screen#4 + (byte) main::column#2) ← (byte) $a0 [ main::screen#4 main::colors#4 main::row#4 main::column#2 main::color#3 ] ( main:2 [ main::screen#4 main::colors#4 main::row#4 main::column#2 main::color#3 ] ) always clobbers reg byte a
@ -566,6 +567,7 @@ main: {
//SEG41 [17] return
rts
}
//SEG42 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -733,4 +735,5 @@ main: {
//SEG41 [17] return
rts
}
//SEG42 File Data

View File

@ -349,6 +349,7 @@ irq: {
ldy #00
rti
}
//SEG31 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [1] (byte) irq_raster_next#0 ← (byte) 0 [ ] ( ) always clobbers reg byte a
@ -471,6 +472,7 @@ irq: {
ldx #00
rti
}
//SEG31 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -613,4 +615,5 @@ irq: {
ldx #00
rti
}
//SEG31 File Data

View File

@ -196,6 +196,7 @@ main: {
//SEG23 [10] return
rts
}
//SEG24 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ZP_BYTE:2 [ main::j#2 main::j#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
@ -265,6 +266,7 @@ main: {
//SEG23 [10] return
rts
}
//SEG24 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -355,4 +357,5 @@ main: {
//SEG23 [10] return
rts
}
//SEG24 File Data

View File

@ -174,6 +174,7 @@ main: {
//SEG14 [7] return
rts
}
//SEG15 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::SCREEN#0) ← (const byte) main::b#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -230,6 +231,7 @@ main: {
//SEG14 [7] return
rts
}
//SEG15 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -301,4 +303,5 @@ main: {
//SEG14 [7] return
rts
}
//SEG15 File Data

View File

@ -142,6 +142,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::SCREEN#0) ← (const byte) main::c#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -189,6 +190,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -251,4 +253,5 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data

View File

@ -128,6 +128,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::SCREEN#0) ← (const byte) main::c#1 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -174,6 +175,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -233,4 +235,5 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data

View File

@ -200,6 +200,7 @@ main: {
//SEG23 [10] return
rts
}
//SEG24 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ZP_BYTE:2 [ main::j#2 main::j#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
@ -269,6 +270,7 @@ main: {
//SEG23 [10] return
rts
}
//SEG24 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -359,4 +361,5 @@ main: {
//SEG23 [10] return
rts
}
//SEG24 File Data

View File

@ -287,6 +287,7 @@ main: {
//SEG28 [13] return
rts
}
//SEG29 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((byte*) main::sc#2) ← (byte) 'a' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y
@ -405,6 +406,7 @@ main: {
//SEG28 [13] return
rts
}
//SEG29 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -545,4 +547,5 @@ main: {
//SEG28 [13] return
rts
}
//SEG29 File Data

View File

@ -689,6 +689,7 @@ main: {
rts
header: .text " < <= == >= >@"
}
//SEG61 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((byte*) main::sc#2) ← (byte) ' ' [ main::sc#2 ] ( main:2 [ main::sc#2 ] ) always clobbers reg byte a reg byte y
@ -919,6 +920,7 @@ main: {
rts
header: .text " < <= == >= >@"
}
//SEG61 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -1164,4 +1166,5 @@ main: {
rts
header: .text " < <= == >= >@"
}
//SEG61 File Data

View File

@ -250,6 +250,7 @@ main: {
sta SCREEN
jmp b1
}
//SEG24 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ZP_BYTE:2 [ main::key#2 main::key#0 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
@ -324,6 +325,7 @@ main: {
sta SCREEN
jmp b1
}
//SEG24 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -423,4 +425,5 @@ main: {
sta SCREEN
jmp b1
}
//SEG24 File Data

View File

@ -6204,6 +6204,7 @@ irqTop: {
ldy #00
rti
}
//SEG437 File Data
// Copy of the screen used for finding chars to process
SCREEN_COPY: .fill $3e8, 0
// SQUARES_X[i] = (i-20)*(i-20)
@ -6715,130 +6716,130 @@ Uplift Scope [irqTop]
Uplift Scope [irqBottom]
Uplift Scope []
Uplifting [getCharToProcess] best 296666 combination zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] reg byte a [ getCharToProcess::$14 ] zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp ZP_BYTE:109 [ getCharToProcess::$13 ] zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:45 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:46 [ getCharToProcess::return_y#0 ] zp ZP_WORD:47 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:113 [ getCharToProcess::$15 ] zp ZP_WORD:115 [ getCharToProcess::$16 ] zp ZP_WORD:117 [ getCharToProcess::$10 ] zp ZP_WORD:119 [ getCharToProcess::$11 ] zp ZP_WORD:111 [ getCharToProcess::$9 ]
Uplifting [getCharToProcess] best 301274 combination zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] zp ZP_WORD:18 [ getCharToProcess::closest_dist#2 getCharToProcess::closest_dist#8 getCharToProcess::closest_dist#10 getCharToProcess::closest_dist#12 ] zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ] reg byte a [ getCharToProcess::$14 ] zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ] zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ] zp ZP_BYTE:109 [ getCharToProcess::$13 ] zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ] zp ZP_WORD:14 [ getCharToProcess::screen_line#4 getCharToProcess::screen_line#1 ] zp ZP_BYTE:45 [ getCharToProcess::return_x#0 ] zp ZP_BYTE:46 [ getCharToProcess::return_y#0 ] zp ZP_WORD:47 [ getCharToProcess::return_dist#0 ] zp ZP_WORD:113 [ getCharToProcess::$15 ] zp ZP_WORD:115 [ getCharToProcess::$16 ] zp ZP_WORD:117 [ getCharToProcess::$10 ] zp ZP_WORD:119 [ getCharToProcess::$11 ] zp ZP_WORD:111 [ getCharToProcess::$9 ]
Limited combination testing to 100 combinations of 8748 possible.
Uplifting [mul8u] best 295640 combination zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::$1 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:121 [ mul8u::return#2 ] zp ZP_WORD:126 [ mul8u::return#3 ]
Uplifting [mul8u] best 300248 combination zp ZP_WORD:34 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:36 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::$1 ] reg byte a [ mul8u::b#1 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:121 [ mul8u::return#2 ] zp ZP_WORD:126 [ mul8u::return#3 ]
Limited combination testing to 100 combinations of 192 possible.
Uplifting [initSquareTables] best 295480 combination reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] zp ZP_BYTE:125 [ initSquareTables::$16 ] zp ZP_BYTE:130 [ initSquareTables::$17 ] zp ZP_WORD:123 [ initSquareTables::$6 ] zp ZP_WORD:128 [ initSquareTables::$14 ]
Uplifting [initSquareTables] best 300088 combination reg byte a [ initSquareTables::x_dist#0 initSquareTables::$4 initSquareTables::$2 ] reg byte a [ initSquareTables::y_dist#0 initSquareTables::$12 initSquareTables::$10 ] zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ] zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ] zp ZP_BYTE:125 [ initSquareTables::$16 ] zp ZP_BYTE:130 [ initSquareTables::$17 ] zp ZP_WORD:123 [ initSquareTables::$6 ] zp ZP_WORD:128 [ initSquareTables::$14 ]
Limited combination testing to 100 combinations of 2304 possible.
Uplifting [main] best 295240 combination zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] reg byte a [ main::$28 ] reg byte a [ main::$29 ] zp ZP_WORD:51 [ main::center_dist#0 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] zp ZP_BYTE:44 [ main::$16 ] zp ZP_BYTE:49 [ main::center_x#0 ] zp ZP_BYTE:50 [ main::center_y#0 ]
Uplifting [main] best 299848 combination zp ZP_WORD:2 [ main::src#2 main::src#1 ] zp ZP_WORD:4 [ main::dst#2 main::dst#1 ] reg byte a [ main::$26 ] reg byte a [ main::$27 ] reg byte a [ main::$28 ] reg byte a [ main::$29 ] zp ZP_WORD:51 [ main::center_dist#0 ] zp ZP_BYTE:6 [ main::i#2 main::i#1 ] zp ZP_BYTE:44 [ main::$16 ] zp ZP_BYTE:49 [ main::center_x#0 ] zp ZP_BYTE:50 [ main::center_y#0 ]
Limited combination testing to 100 combinations of 20736 possible.
Uplifting [initSprites] best 295120 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ]
Uplifting [ProcessingChar] best 295120 combination
Uplifting [ProcessingSprite] best 295120 combination
Uplifting [ProcessingSprite::$0] best 295120 combination
Uplifting [setupRasterIrq] best 295120 combination
Uplifting [irqTop] best 295120 combination
Uplifting [irqBottom] best 295120 combination
Uplifting [] best 295120 combination
Uplifting [initSprites] best 299728 combination zp ZP_WORD:24 [ initSprites::sp#2 initSprites::sp#1 ] reg byte x [ initSprites::i#2 initSprites::i#1 ]
Uplifting [ProcessingChar] best 299728 combination
Uplifting [ProcessingSprite] best 299728 combination
Uplifting [ProcessingSprite::$0] best 299728 combination
Uplifting [setupRasterIrq] best 299728 combination
Uplifting [irqTop] best 299728 combination
Uplifting [irqBottom] best 299728 combination
Uplifting [] best 299728 combination
Attempting to uplift remaining variables inzp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
Uplifting [getCharToProcess] best 295120 combination zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
Uplifting [getCharToProcess] best 299728 combination zp ZP_BYTE:21 [ getCharToProcess::closest_y#7 getCharToProcess::closest_y#9 getCharToProcess::return_y#1 getCharToProcess::return_y#7 ]
Attempting to uplift remaining variables inzp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
Uplifting [startProcessing] best 295120 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
Uplifting [startProcessing] best 299728 combination zp ZP_BYTE:8 [ startProcessing::freeIdx#2 startProcessing::freeIdx#8 startProcessing::i#2 startProcessing::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:55 [ startProcessing::$42 ]
Uplifting [startProcessing] best 289120 combination reg byte a [ startProcessing::$42 ]
Uplifting [startProcessing] best 293728 combination reg byte a [ startProcessing::$42 ]
Attempting to uplift remaining variables inzp ZP_BYTE:56 [ startProcessing::$43 ]
Uplifting [startProcessing] best 283120 combination reg byte a [ startProcessing::$43 ]
Uplifting [startProcessing] best 287728 combination reg byte a [ startProcessing::$43 ]
Attempting to uplift remaining variables inzp ZP_BYTE:57 [ startProcessing::$44 ]
Uplifting [startProcessing] best 277120 combination reg byte a [ startProcessing::$44 ]
Uplifting [startProcessing] best 281728 combination reg byte a [ startProcessing::$44 ]
Attempting to uplift remaining variables inzp ZP_BYTE:58 [ startProcessing::$45 ]
Uplifting [startProcessing] best 271120 combination reg byte a [ startProcessing::$45 ]
Uplifting [startProcessing] best 275728 combination reg byte a [ startProcessing::$45 ]
Attempting to uplift remaining variables inzp ZP_BYTE:59 [ startProcessing::$30 ]
Uplifting [startProcessing] best 267120 combination reg byte a [ startProcessing::$30 ]
Uplifting [startProcessing] best 271728 combination reg byte a [ startProcessing::$30 ]
Attempting to uplift remaining variables inzp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
Uplifting [getCharToProcess] best 267120 combination zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
Uplifting [getCharToProcess] best 271728 combination zp ZP_BYTE:20 [ getCharToProcess::closest_x#7 getCharToProcess::closest_x#9 getCharToProcess::return_x#1 getCharToProcess::return_x#7 ]
Attempting to uplift remaining variables inzp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
Uplifting [getCharToProcess] best 267120 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
Uplifting [getCharToProcess] best 271728 combination zp ZP_BYTE:17 [ getCharToProcess::x#2 getCharToProcess::x#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:109 [ getCharToProcess::$13 ]
Uplifting [getCharToProcess] best 263120 combination reg byte x [ getCharToProcess::$13 ]
Uplifting [getCharToProcess] best 267728 combination reg byte x [ getCharToProcess::$13 ]
Attempting to uplift remaining variables inzp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
Uplifting [getCharToProcess] best 263120 combination zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
Uplifting [getCharToProcess] best 267728 combination zp ZP_BYTE:16 [ getCharToProcess::y#7 getCharToProcess::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
Uplifting [startProcessing] best 262220 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
Uplifting [startProcessing] best 266828 combination reg byte x [ startProcessing::freeIdx#6 startProcessing::freeIdx#7 ]
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ startProcessing::i1#2 startProcessing::i1#1 ]
Uplifting [startProcessing] best 261320 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ]
Uplifting [startProcessing] best 265928 combination reg byte x [ startProcessing::i1#2 startProcessing::i1#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
Uplifting [processChars] best 261320 combination zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
Uplifting [processChars] best 265928 combination zp ZP_BYTE:39 [ processChars::numActive#10 processChars::numActive#3 processChars::numActive#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ]
Uplifting [initSquareTables] best 261320 combination zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ]
Uplifting [initSquareTables] best 265928 combination zp ZP_BYTE:27 [ initSquareTables::x#2 initSquareTables::x#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ]
Uplifting [initSquareTables] best 261320 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ]
Uplifting [initSquareTables] best 265928 combination zp ZP_BYTE:29 [ initSquareTables::y#2 initSquareTables::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:125 [ initSquareTables::$16 ]
Uplifting [initSquareTables] best 261280 combination reg byte a [ initSquareTables::$16 ]
Uplifting [initSquareTables] best 265888 combination reg byte a [ initSquareTables::$16 ]
Attempting to uplift remaining variables inzp ZP_BYTE:130 [ initSquareTables::$17 ]
Uplifting [initSquareTables] best 261240 combination reg byte a [ initSquareTables::$17 ]
Uplifting [initSquareTables] best 265848 combination reg byte a [ initSquareTables::$17 ]
Attempting to uplift remaining variables inzp ZP_BYTE:132 [ processChars::$67 ]
Uplifting [processChars] best 261180 combination reg byte a [ processChars::$67 ]
Uplifting [processChars] best 265788 combination reg byte a [ processChars::$67 ]
Attempting to uplift remaining variables inzp ZP_BYTE:133 [ processChars::$68 ]
Uplifting [processChars] best 261120 combination reg byte a [ processChars::$68 ]
Uplifting [processChars] best 265728 combination reg byte a [ processChars::$68 ]
Attempting to uplift remaining variables inzp ZP_BYTE:134 [ processChars::$69 ]
Uplifting [processChars] best 261060 combination reg byte a [ processChars::$69 ]
Uplifting [processChars] best 265668 combination reg byte a [ processChars::$69 ]
Attempting to uplift remaining variables inzp ZP_BYTE:135 [ processChars::$70 ]
Uplifting [processChars] best 261000 combination reg byte a [ processChars::$70 ]
Uplifting [processChars] best 265608 combination reg byte a [ processChars::$70 ]
Attempting to uplift remaining variables inzp ZP_BYTE:136 [ processChars::$37 ]
Uplifting [processChars] best 260940 combination reg byte a [ processChars::$37 ]
Uplifting [processChars] best 265548 combination reg byte a [ processChars::$37 ]
Attempting to uplift remaining variables inzp ZP_BYTE:142 [ processChars::$11 ]
Uplifting [processChars] best 260880 combination reg byte a [ processChars::$11 ]
Uplifting [processChars] best 265488 combination reg byte a [ processChars::$11 ]
Attempting to uplift remaining variables inzp ZP_BYTE:143 [ processChars::$12 ]
Uplifting [processChars] best 260820 combination reg byte a [ processChars::$12 ]
Uplifting [processChars] best 265428 combination reg byte a [ processChars::$12 ]
Attempting to uplift remaining variables inzp ZP_BYTE:145 [ processChars::$14 ]
Uplifting [processChars] best 260760 combination reg byte a [ processChars::$14 ]
Uplifting [processChars] best 265368 combination reg byte a [ processChars::$14 ]
Attempting to uplift remaining variables inzp ZP_BYTE:151 [ processChars::$26 ]
Uplifting [processChars] best 260720 combination reg byte a [ processChars::$26 ]
Uplifting [processChars] best 265328 combination reg byte a [ processChars::$26 ]
Attempting to uplift remaining variables inzp ZP_BYTE:152 [ processChars::xchar#0 ]
Uplifting [processChars] best 260660 combination reg byte a [ processChars::xchar#0 ]
Uplifting [processChars] best 265268 combination reg byte a [ processChars::xchar#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:153 [ processChars::$38 ]
Uplifting [processChars] best 260620 combination reg byte a [ processChars::$38 ]
Uplifting [processChars] best 265228 combination reg byte a [ processChars::$38 ]
Attempting to uplift remaining variables inzp ZP_BYTE:154 [ processChars::$30 ]
Uplifting [processChars] best 260580 combination reg byte a [ processChars::$30 ]
Uplifting [processChars] best 265188 combination reg byte a [ processChars::$30 ]
Attempting to uplift remaining variables inzp ZP_BYTE:155 [ processChars::ychar#0 ]
Uplifting [processChars] best 260520 combination reg byte a [ processChars::ychar#0 ]
Uplifting [processChars] best 265128 combination reg byte a [ processChars::ychar#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:156 [ processChars::$39 ]
Uplifting [processChars] best 260480 combination reg byte a [ processChars::$39 ]
Uplifting [processChars] best 265088 combination reg byte a [ processChars::$39 ]
Attempting to uplift remaining variables inzp ZP_BYTE:157 [ processChars::$33 ]
Uplifting [processChars] best 260420 combination reg byte a [ processChars::$33 ]
Uplifting [processChars] best 265028 combination reg byte a [ processChars::$33 ]
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::i#2 main::i#1 ]
Uplifting [main] best 260420 combination zp ZP_BYTE:6 [ main::i#2 main::i#1 ]
Uplifting [main] best 265028 combination zp ZP_BYTE:6 [ main::i#2 main::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ]
Uplifting [processChars] best 260420 combination zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ]
Uplifting [processChars] best 265028 combination zp ZP_BYTE:38 [ processChars::i#10 processChars::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:44 [ main::$16 ]
Uplifting [main] best 260260 combination reg byte x [ main::$16 ]
Uplifting [main] best 264868 combination reg byte x [ main::$16 ]
Attempting to uplift remaining variables inzp ZP_BYTE:45 [ getCharToProcess::return_x#0 ]
Uplifting [getCharToProcess] best 260200 combination reg byte x [ getCharToProcess::return_x#0 ]
Uplifting [getCharToProcess] best 264808 combination reg byte x [ getCharToProcess::return_x#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:46 [ getCharToProcess::return_y#0 ]
Uplifting [getCharToProcess] best 260140 combination reg byte y [ getCharToProcess::return_y#0 ]
Uplifting [getCharToProcess] best 264748 combination reg byte y [ getCharToProcess::return_y#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:144 [ processChars::$17 ]
Uplifting [processChars] best 260070 combination reg byte x [ processChars::$17 ]
Uplifting [processChars] best 264678 combination reg byte x [ processChars::$17 ]
Attempting to uplift remaining variables inzp ZP_BYTE:49 [ main::center_x#0 ]
Uplifting [main] best 260010 combination reg byte x [ main::center_x#0 ]
Uplifting [main] best 264618 combination reg byte x [ main::center_x#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:50 [ main::center_y#0 ]
Uplifting [main] best 259950 combination reg byte y [ main::center_y#0 ]
Uplifting [main] best 264558 combination reg byte y [ main::center_y#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:104 [ startProcessing::$50 ]
Uplifting [startProcessing] best 259944 combination reg byte a [ startProcessing::$50 ]
Uplifting [startProcessing] best 264552 combination reg byte a [ startProcessing::$50 ]
Attempting to uplift remaining variables inzp ZP_BYTE:105 [ startProcessing::$51 ]
Uplifting [startProcessing] best 259938 combination reg byte a [ startProcessing::$51 ]
Uplifting [startProcessing] best 264546 combination reg byte a [ startProcessing::$51 ]
Attempting to uplift remaining variables inzp ZP_BYTE:106 [ startProcessing::$52 ]
Uplifting [startProcessing] best 259932 combination reg byte a [ startProcessing::$52 ]
Uplifting [startProcessing] best 264540 combination reg byte a [ startProcessing::$52 ]
Attempting to uplift remaining variables inzp ZP_BYTE:107 [ startProcessing::$53 ]
Uplifting [startProcessing] best 259926 combination reg byte a [ startProcessing::$53 ]
Uplifting [startProcessing] best 264534 combination reg byte a [ startProcessing::$53 ]
Attempting to uplift remaining variables inzp ZP_BYTE:148 [ processChars::ypos#0 ]
Uplifting [processChars] best 259926 combination zp ZP_BYTE:148 [ processChars::ypos#0 ]
Uplifting [processChars] best 264534 combination zp ZP_BYTE:148 [ processChars::ypos#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:108 [ startProcessing::$31 ]
Uplifting [startProcessing] best 259901 combination reg byte x [ startProcessing::$31 ]
Uplifting [startProcessing] best 264509 combination reg byte x [ startProcessing::$31 ]
Attempting to uplift remaining variables inzp ZP_BYTE:139 [ processChars::bitmask#0 ]
Uplifting [processChars] best 259901 combination zp ZP_BYTE:139 [ processChars::bitmask#0 ]
Uplifting [processChars] best 264509 combination zp ZP_BYTE:139 [ processChars::bitmask#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:79 [ startProcessing::ch#0 ]
Uplifting [startProcessing] best 259895 combination reg byte a [ startProcessing::ch#0 ]
Uplifting [startProcessing] best 264503 combination reg byte a [ startProcessing::ch#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:101 [ startProcessing::$22 ]
Uplifting [startProcessing] best 259889 combination reg byte a [ startProcessing::$22 ]
Uplifting [startProcessing] best 264497 combination reg byte a [ startProcessing::$22 ]
Attempting to uplift remaining variables inzp ZP_BYTE:53 [ startProcessing::center_x#0 ]
Uplifting [startProcessing] best 259889 combination zp ZP_BYTE:53 [ startProcessing::center_x#0 ]
Uplifting [startProcessing] best 264497 combination zp ZP_BYTE:53 [ startProcessing::center_x#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:100 [ startProcessing::spritePtr#0 ]
Uplifting [startProcessing] best 259889 combination zp ZP_BYTE:100 [ startProcessing::spritePtr#0 ]
Uplifting [startProcessing] best 264497 combination zp ZP_BYTE:100 [ startProcessing::spritePtr#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:54 [ startProcessing::center_y#0 ]
Uplifting [startProcessing] best 259889 combination zp ZP_BYTE:54 [ startProcessing::center_y#0 ]
Uplifting [startProcessing] best 264497 combination zp ZP_BYTE:54 [ startProcessing::center_y#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:72 [ startProcessing::spriteCol#0 ]
Uplifting [startProcessing] best 259889 combination zp ZP_BYTE:72 [ startProcessing::spriteCol#0 ]
Uplifting [startProcessing] best 264497 combination zp ZP_BYTE:72 [ startProcessing::spriteCol#0 ]
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ startProcessing::chargenData#2 startProcessing::chargenData#0 startProcessing::chargenData#1 ] ] with [ zp ZP_WORD:82 [ startProcessing::$9 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ startProcessing::spriteData#2 startProcessing::spriteData#0 startProcessing::spriteData#1 ] ] with [ zp ZP_WORD:77 [ startProcessing::$6 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ getCharToProcess::return_dist#1 getCharToProcess::return_dist#5 getCharToProcess::return_dist#6 getCharToProcess::dist#0 ] ] with [ zp ZP_WORD:47 [ getCharToProcess::return_dist#0 ] ] - score: 1
@ -8597,6 +8598,7 @@ irqTop: {
ldy #00
rti
}
//SEG437 File Data
// Copy of the screen used for finding chars to process
SCREEN_COPY: .fill $3e8, 0
// SQUARES_X[i] = (i-20)*(i-20)
@ -9381,7 +9383,7 @@ reg byte a [ processChars::$33 ]
FINAL ASSEMBLER
Score: 243658
Score: 248266
//SEG0 File Comments
// Clears start screen throwing around the letters (by turning them into sprites)
@ -10917,6 +10919,7 @@ irqTop: {
ldy #00
rti
}
//SEG437 File Data
// Copy of the screen used for finding chars to process
SCREEN_COPY: .fill $3e8, 0
// SQUARES_X[i] = (i-20)*(i-20)

View File

@ -44,9 +44,6 @@ Adding pointer type conversion cast (void()**) KERNEL_IRQ in (void()**) KERNEL_I
Adding pointer type conversion cast (void()**) HARDWARE_IRQ in (void()**) HARDWARE_IRQ ← (number) $fffe
Adding pointer type conversion cast to void pointer (byte*) memcpy::source in (byte*) memcpy::src ← (void*) memcpy::source
Adding pointer type conversion cast to void pointer (byte*) memcpy::destination in (byte*) memcpy::dst ← (void*) memcpy::destination
Adding pointer type conversion cast to void pointer (byte*) memmove::$3 in (byte*) memmove::src ← (void*~) memmove::$3
Adding pointer type conversion cast to void pointer (byte*) memmove::$4 in (byte*) memmove::dst ← (void*~) memmove::$4
Adding pointer type conversion cast to void pointer (byte*) memset::$0 in (byte*) memset::end ← (void*~) memset::$0
Adding pointer type conversion cast to void pointer (byte*) memset::str in (byte*) memset::dst ← (void*) memset::str
Adding pointer type conversion cast (byte*) MEDUSA_SCREEN in (byte*) MEDUSA_SCREEN ← (number) $1000
Adding pointer type conversion cast (byte*) MEDUSA_COLORS in (byte*) MEDUSA_COLORS ← (number) $1400
@ -600,6 +597,7 @@ memcpy: {
//SEG44 [20] return
rts
}
//SEG45 File Data
.pc = MEDUSA_SCREEN "MEDUSA_SCREEN"
.var fileScreen = LoadBinary("medusas.prg", BF_C64FILE)
.fill fileScreen.getSize(), fileScreen.get(i)
@ -627,9 +625,9 @@ Uplift Scope [memcpy] 27: zp ZP_WORD:8 [ memcpy::dst#2 memcpy::dst#3 memcpy::dst
Uplift Scope [main]
Uplift Scope []
Uplifting [memcpy] best 1673 combination zp ZP_WORD:8 [ memcpy::dst#2 memcpy::dst#3 memcpy::dst#1 ] zp ZP_WORD:10 [ memcpy::i#2 memcpy::i#1 ] zp ZP_WORD:6 [ memcpy::src#2 memcpy::src#3 memcpy::src#1 ] zp ZP_WORD:2 [ memcpy::source#2 ] zp ZP_WORD:4 [ memcpy::destination#2 ]
Uplifting [main] best 1673 combination
Uplifting [] best 1673 combination
Uplifting [memcpy] best 6281 combination zp ZP_WORD:8 [ memcpy::dst#2 memcpy::dst#3 memcpy::dst#1 ] zp ZP_WORD:10 [ memcpy::i#2 memcpy::i#1 ] zp ZP_WORD:6 [ memcpy::src#2 memcpy::src#3 memcpy::src#1 ] zp ZP_WORD:2 [ memcpy::source#2 ] zp ZP_WORD:4 [ memcpy::destination#2 ]
Uplifting [main] best 6281 combination
Uplifting [] best 6281 combination
Coalescing zero page register with common assignment [ zp ZP_WORD:2 [ memcpy::source#2 ] ] with [ zp ZP_WORD:6 [ memcpy::src#2 memcpy::src#3 memcpy::src#1 ] ] - score: 1
Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ memcpy::destination#2 ] ] with [ zp ZP_WORD:8 [ memcpy::dst#2 memcpy::dst#3 memcpy::dst#1 ] ] - score: 1
Allocated (was zp ZP_WORD:10) zp ZP_WORD:6 [ memcpy::i#2 memcpy::i#1 ]
@ -782,6 +780,7 @@ memcpy: {
//SEG44 [20] return
rts
}
//SEG45 File Data
.pc = MEDUSA_SCREEN "MEDUSA_SCREEN"
.var fileScreen = LoadBinary("medusas.prg", BF_C64FILE)
.fill fileScreen.getSize(), fileScreen.get(i)
@ -874,7 +873,7 @@ zp ZP_WORD:6 [ memcpy::i#2 memcpy::i#1 ]
FINAL ASSEMBLER
Score: 1471
Score: 6079
//SEG0 File Comments
// Display MEDUSA PETSCII by Buzz_clik
@ -999,6 +998,7 @@ memcpy: {
//SEG44 [20] return
rts
}
//SEG45 File Data
.pc = MEDUSA_SCREEN "MEDUSA_SCREEN"
.var fileScreen = LoadBinary("medusas.prg", BF_C64FILE)
.fill fileScreen.getSize(), fileScreen.get(i)

View File

@ -2850,6 +2850,7 @@ sprites_irq: {
sta PLAYFIELD_SPRITE_PTRS_1+3
jmp b2
}
//SEG187 File Data
.pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES"
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
// Put the sprites into memory
@ -3029,42 +3030,42 @@ Uplift Scope [sprites_init] 25.3: zp ZP_BYTE:8 [ sprites_init::s#2 sprites_init:
Uplift Scope [sprites_irq] 6.5: zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ] 4: zp ZP_BYTE:21 [ sprites_irq::$0 ] 4: zp ZP_BYTE:24 [ sprites_irq::ptr#4 ] 4: zp ZP_BYTE:26 [ sprites_irq::ptr#2 ] 2.67: zp ZP_BYTE:23 [ sprites_irq::ptr#3 ] 2.67: zp ZP_BYTE:25 [ sprites_irq::ptr#1 ] 2.5: zp ZP_BYTE:20 [ sprites_irq::ypos#0 ] 2.5: zp ZP_BYTE:22 [ sprites_irq::ptr#0 ]
Uplift Scope [sprites_irq_init]
Uplifting [loop] best 9610 combination zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ] reg byte a [ loop::$1 ] reg byte x [ loop::idx#2 loop::idx#0 loop::idx#1 ]
Uplifting [] best 9610 combination zp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] zp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] zp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ] zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] zp ZP_BYTE:12 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] zp ZP_BYTE:11 [ render_screen_showing#0 ]
Uplifting [main] best 9330 combination reg byte y [ main::s#2 main::s#1 ] reg byte a [ main::$6 ] reg byte x [ main::s2#0 ] zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ]
Uplifting [loop] best 16522 combination zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ] reg byte a [ loop::$1 ] reg byte x [ loop::idx#2 loop::idx#0 loop::idx#1 ]
Uplifting [] best 16522 combination zp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] zp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] zp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ] zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ] zp ZP_BYTE:12 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] zp ZP_BYTE:11 [ render_screen_showing#0 ]
Uplifting [main] best 16242 combination reg byte y [ main::s#2 main::s#1 ] reg byte a [ main::$6 ] reg byte x [ main::s2#0 ] zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ] zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ]
Limited combination testing to 100 combinations of 324 possible.
Uplifting [sprites_init] best 9160 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [sprites_irq] best 9136 combination zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:25 [ sprites_irq::ptr#1 ] zp ZP_BYTE:20 [ sprites_irq::ypos#0 ] zp ZP_BYTE:22 [ sprites_irq::ptr#0 ]
Uplifting [sprites_init] best 16072 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [sprites_irq] best 16048 combination zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:25 [ sprites_irq::ptr#1 ] zp ZP_BYTE:20 [ sprites_irq::ypos#0 ] zp ZP_BYTE:22 [ sprites_irq::ptr#0 ]
Limited combination testing to 100 combinations of 12288 possible.
Uplifting [sprites_irq_init] best 9136 combination
Uplifting [sprites_irq_init] best 16048 combination
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ loop::s#2 loop::s#1 ]
Uplifting [loop] best 9136 combination zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ]
Uplifting [loop] best 16048 combination zp ZP_BYTE:6 [ loop::s#2 loop::s#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ]
Uplifting [] best 9136 combination zp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ]
Uplifting [] best 16048 combination zp ZP_BYTE:14 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ]
Uplifting [] best 9136 combination zp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ]
Uplifting [] best 16048 combination zp ZP_BYTE:13 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ]
Uplifting [] best 9136 combination zp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ]
Uplifting [] best 16048 combination zp ZP_BYTE:15 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ]
Uplifting [] best 9136 combination zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ]
Uplifting [] best 16048 combination zp ZP_BYTE:5 [ sin_idx#10 sin_idx#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [sprites_init] best 9136 combination zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [sprites_init] best 16048 combination zp ZP_BYTE:9 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:12 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ]
Uplifting [] best 9136 combination zp ZP_BYTE:12 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ]
Uplifting [] best 16048 combination zp ZP_BYTE:12 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ]
Uplifting [main] best 9136 combination zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ]
Uplifting [main] best 16048 combination zp ZP_BYTE:4 [ main::ypos#2 main::ypos#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ]
Uplifting [main] best 9136 combination zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ]
Uplifting [main] best 16048 combination zp ZP_BYTE:3 [ main::xpos#2 main::xpos#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ]
Uplifting [sprites_irq] best 9136 combination zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ]
Uplifting [sprites_irq] best 16048 combination zp ZP_BYTE:10 [ sprites_irq::raster_sprite_gfx_modify#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ sprites_irq::ptr#1 ]
Uplifting [sprites_irq] best 9124 combination reg byte x [ sprites_irq::ptr#1 ]
Uplifting [sprites_irq] best 16036 combination reg byte x [ sprites_irq::ptr#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:20 [ sprites_irq::ypos#0 ]
Uplifting [sprites_irq] best 9109 combination reg byte a [ sprites_irq::ypos#0 ]
Uplifting [sprites_irq] best 16021 combination reg byte a [ sprites_irq::ypos#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:22 [ sprites_irq::ptr#0 ]
Uplifting [sprites_irq] best 9094 combination reg byte x [ sprites_irq::ptr#0 ]
Uplifting [sprites_irq] best 16006 combination reg byte x [ sprites_irq::ptr#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_screen_showing#0 ]
Uplifting [] best 9094 combination zp ZP_BYTE:11 [ render_screen_showing#0 ]
Uplifting [] best 16006 combination zp ZP_BYTE:11 [ render_screen_showing#0 ]
Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ main::xpos#2 main::xpos#1 ]
Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:3 [ main::ypos#2 main::ypos#1 ]
Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ sin_idx#10 sin_idx#3 ]
@ -3676,6 +3677,7 @@ sprites_irq: {
sta PLAYFIELD_SPRITE_PTRS_1+3
jmp b2
}
//SEG187 File Data
.pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES"
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
// Put the sprites into memory
@ -4062,7 +4064,7 @@ reg byte a [ sprites_irq::ptr#2 ]
FINAL ASSEMBLER
Score: 7310
Score: 14222
//SEG0 File Comments
//SEG1 Basic Upstart
@ -4565,6 +4567,7 @@ sprites_irq: {
sta PLAYFIELD_SPRITE_PTRS_1+3
jmp b2
}
//SEG187 File Data
.pc = PLAYFIELD_SPRITES "PLAYFIELD_SPRITES"
.var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
// Put the sprites into memory

View File

@ -17871,6 +17871,7 @@ sprites_irq: {
sta PLAYFIELD_SPRITE_PTRS_1+3
jmp b2
}
//SEG1270 File Data
// Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7)
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
@ -18822,243 +18823,243 @@ Uplift Scope [sid_rnd_init]
Uplift Scope [render_screen_swap]
Uplift Scope [sprites_irq_init]
Uplifting [keyboard_event_scan] best 4699908 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] zp ZP_BYTE:91 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:201 [ keyboard_event_scan::$0 ] zp ZP_BYTE:203 [ keyboard_event_scan::$3 ] zp ZP_BYTE:205 [ keyboard_event_scan::$6 ] zp ZP_BYTE:207 [ keyboard_event_scan::$9 ]
Uplifting [keyboard_event_scan] best 4709124 combination reg byte a [ keyboard_event_scan::$15 ] reg byte a [ keyboard_event_scan::$16 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$23 ] zp ZP_BYTE:91 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ] zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:201 [ keyboard_event_scan::$0 ] zp ZP_BYTE:203 [ keyboard_event_scan::$3 ] zp ZP_BYTE:205 [ keyboard_event_scan::$6 ] zp ZP_BYTE:207 [ keyboard_event_scan::$9 ]
Limited combination testing to 100 combinations of 524288 possible.
Uplifting [play_collision] best 4549908 combination zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] reg byte a [ play_collision::$5 ] zp ZP_BYTE:51 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:156 [ play_collision::$14 ] zp ZP_BYTE:159 [ play_collision::i#1 ] zp ZP_BYTE:48 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:157 [ play_collision::playfield_line#0 ] zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] zp ZP_BYTE:46 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:151 [ play_collision::return#14 ] zp ZP_BYTE:161 [ play_collision::return#13 ] zp ZP_BYTE:163 [ play_collision::return#1 ] zp ZP_BYTE:167 [ play_collision::return#0 ] zp ZP_BYTE:174 [ play_collision::return#10 ] zp ZP_BYTE:53 [ play_collision::return#15 ]
Uplifting [play_collision] best 4559124 combination zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ] reg byte a [ play_collision::$5 ] zp ZP_BYTE:51 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ] reg byte x [ play_collision::c#2 play_collision::c#1 ] zp ZP_BYTE:156 [ play_collision::$14 ] zp ZP_BYTE:159 [ play_collision::i#1 ] zp ZP_BYTE:48 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ] zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ] zp ZP_WORD:157 [ play_collision::playfield_line#0 ] zp ZP_WORD:154 [ play_collision::piece_gfx#0 ] zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ] zp ZP_BYTE:46 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ] zp ZP_BYTE:151 [ play_collision::return#14 ] zp ZP_BYTE:161 [ play_collision::return#13 ] zp ZP_BYTE:163 [ play_collision::return#1 ] zp ZP_BYTE:167 [ play_collision::return#0 ] zp ZP_BYTE:174 [ play_collision::return#10 ] zp ZP_BYTE:53 [ play_collision::return#15 ]
Limited combination testing to 100 combinations of 429981696 possible.
Uplifting [play_lock_current] best 4455908 combination zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:86 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:192 [ play_lock_current::i#1 ] reg byte a [ play_lock_current::$4 ] zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:190 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:83 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Uplifting [play_lock_current] best 4465124 combination zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ] zp ZP_BYTE:86 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ] reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ] zp ZP_BYTE:192 [ play_lock_current::i#1 ] reg byte a [ play_lock_current::$4 ] zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ] zp ZP_WORD:190 [ play_lock_current::playfield_line#0 ] zp ZP_BYTE:83 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Limited combination testing to 100 combinations of 2916 possible.
Uplifting [play_remove_lines] best 4316908 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:188 [ play_remove_lines::c#0 ] zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp ZP_BYTE:169 [ play_remove_lines::return#0 ]
Uplifting [play_remove_lines] best 4326124 combination reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ] reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ] zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ] zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ] zp ZP_BYTE:188 [ play_remove_lines::c#0 ] zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ] zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ] zp ZP_BYTE:169 [ play_remove_lines::return#0 ]
Limited combination testing to 100 combinations of 20736 possible.
Uplifting [] best 4316666 combination zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] zp ZP_BYTE:4 [ render_screen_showing#13 render_screen_showing#1 render_screen_showing#0 ] zp ZP_WORD:70 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#124 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#117 ] zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] zp ZP_BYTE:29 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ] zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ] zp ZP_WORD:27 [ current_piece_gfx#64 current_piece_gfx#112 current_piece_gfx#113 ] zp ZP_BYTE:72 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] zp ZP_WORD:44 [ current_piece#17 current_piece#96 current_piece#97 current_piece#98 current_piece#99 current_piece#100 ] reg byte x [ render_screen_render#22 render_screen_render#64 ] reg byte x [ next_piece_idx#12 next_piece_idx#77 next_piece_idx#78 ] reg byte a [ render_screen_render#15 render_screen_render#66 ] reg byte x [ current_ypos#13 current_ypos#98 current_ypos#99 ] zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] zp ZP_WORD:66 [ current_piece#28 current_piece#10 current_piece#15 current_piece#102 current_piece#93 ] zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] zp ZP_BYTE:26 [ current_xpos#59 current_xpos#119 current_xpos#120 ] zp ZP_DWORD:59 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] zp ZP_WORD:57 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] zp ZP_BYTE:5 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] zp ZP_BYTE:25 [ render_screen_render#33 render_screen_render#65 ] zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ]
Uplifting [] best 4325882 combination zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ] zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ] zp ZP_BYTE:4 [ render_screen_showing#13 render_screen_showing#1 render_screen_showing#0 ] zp ZP_WORD:70 [ current_piece_gfx#35 current_piece_gfx#13 current_piece_gfx#18 current_piece_gfx#124 current_piece_gfx#20 current_piece_gfx#21 current_piece_gfx#7 current_piece_gfx#117 ] zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ] zp ZP_BYTE:29 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ] zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ] zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ] zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ] zp ZP_WORD:27 [ current_piece_gfx#64 current_piece_gfx#112 current_piece_gfx#113 ] zp ZP_BYTE:72 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ] zp ZP_WORD:44 [ current_piece#17 current_piece#96 current_piece#97 current_piece#98 current_piece#99 current_piece#100 ] reg byte x [ render_screen_render#22 render_screen_render#64 ] reg byte x [ next_piece_idx#12 next_piece_idx#77 next_piece_idx#78 ] reg byte a [ render_screen_render#15 render_screen_render#66 ] reg byte x [ current_ypos#13 current_ypos#98 current_ypos#99 ] zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ] zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ] zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ] zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ] zp ZP_WORD:66 [ current_piece#28 current_piece#10 current_piece#15 current_piece#102 current_piece#93 ] zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ] zp ZP_BYTE:26 [ current_xpos#59 current_xpos#119 current_xpos#120 ] zp ZP_DWORD:59 [ score_bcd#26 score_bcd#18 score_bcd#14 score_bcd#0 score_bcd#16 score_bcd#29 ] zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ] zp ZP_WORD:57 [ lines_bcd#26 lines_bcd#19 lines_bcd#15 lines_bcd#17 lines_bcd#29 ] zp ZP_BYTE:5 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ] zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ] zp ZP_BYTE:25 [ render_screen_render#33 render_screen_render#65 ] zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ] zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ]
Limited combination testing to 100 combinations of 1944 possible.
Uplifting [render_moving] best 4301666 combination zp ZP_BYTE:32 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] zp ZP_BYTE:33 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp ZP_BYTE:134 [ render_moving::$1 ] zp ZP_BYTE:135 [ render_moving::$6 ] zp ZP_BYTE:31 [ render_moving::l#4 render_moving::l#1 ] zp ZP_WORD:136 [ render_moving::screen_line#0 ] zp ZP_BYTE:30 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Uplifting [render_moving] best 4310882 combination zp ZP_BYTE:32 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ] reg byte x [ render_moving::c#2 render_moving::c#1 ] zp ZP_BYTE:33 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ] reg byte a [ render_moving::current_cell#0 ] zp ZP_BYTE:134 [ render_moving::$1 ] zp ZP_BYTE:135 [ render_moving::$6 ] zp ZP_BYTE:31 [ render_moving::l#4 render_moving::l#1 ] zp ZP_WORD:136 [ render_moving::screen_line#0 ] zp ZP_BYTE:30 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Limited combination testing to 100 combinations of 15552 possible.
Uplifting [render_next] best 4286662 combination zp ZP_WORD:19 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] reg byte x [ render_next::c#2 render_next::c#1 ] zp ZP_WORD:21 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] reg byte a [ render_next::cell#0 ] zp ZP_BYTE:18 [ render_next::l#7 render_next::l#1 ] zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] reg byte y [ render_next::$6 ]
Uplifting [render_next] best 4295878 combination zp ZP_WORD:19 [ render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 ] reg byte x [ render_next::c#2 render_next::c#1 ] zp ZP_WORD:21 [ render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 ] reg byte a [ render_next::cell#0 ] zp ZP_BYTE:18 [ render_next::l#7 render_next::l#1 ] zp ZP_BYTE:132 [ render_next::next_piece_char#0 ] reg byte y [ render_next::$6 ]
Limited combination testing to 100 combinations of 128 possible.
Uplifting [play_increase_level] best 4272656 combination reg byte a [ play_increase_level::$5 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ]
Uplifting [render_playfield] best 4271656 combination zp ZP_WORD:38 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:40 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:37 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$6 ] zp ZP_BYTE:36 [ render_playfield::l#2 render_playfield::l#1 ]
Uplifting [play_increase_level] best 4281872 combination reg byte a [ play_increase_level::$5 ] reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ] reg byte a [ play_increase_level::$1 ]
Uplifting [render_playfield] best 4280872 combination zp ZP_WORD:38 [ render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 ] zp ZP_BYTE:40 [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:37 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$2 ] reg byte a [ render_playfield::$6 ] zp ZP_BYTE:36 [ render_playfield::l#2 render_playfield::l#1 ]
Limited combination testing to 100 combinations of 128 possible.
Uplifting [keyboard_matrix_read] best 4259650 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ]
Uplifting [render_screen_original] best 4257550 combination zp ZP_WORD:112 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp ZP_WORD:114 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp ZP_WORD:108 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp ZP_WORD:110 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ]
Uplifting [play_spawn_current] best 4251531 combination reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_spawn_current::$1 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] zp ZP_BYTE:173 [ play_spawn_current::$7 ]
Uplifting [main] best 4250331 combination reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ]
Uplifting [play_movement] best 4249719 combination reg byte a [ play_movement::return#3 ] zp ZP_BYTE:41 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] zp ZP_BYTE:124 [ play_movement::key_event#0 ] reg byte a [ play_movement::$3 ] reg byte a [ play_movement::$4 ] zp ZP_BYTE:146 [ play_movement::render#2 ]
Uplifting [keyboard_matrix_read] best 4268866 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ]
Uplifting [render_screen_original] best 4266766 combination zp ZP_WORD:112 [ render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ] reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ] zp ZP_WORD:114 [ render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ] zp ZP_WORD:108 [ render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 ] zp ZP_WORD:110 [ render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 ] zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ]
Uplifting [play_spawn_current] best 4260747 combination reg byte a [ play_spawn_current::sid_rnd1_return#0 ] reg byte a [ play_spawn_current::$1 ] reg byte x [ play_spawn_current::current_piece_idx#0 ] zp ZP_BYTE:173 [ play_spawn_current::$7 ]
Uplifting [main] best 4259547 combination reg byte a [ main::render#1 ] reg byte x [ main::key_event#0 ]
Uplifting [play_movement] best 4258935 combination reg byte a [ play_movement::return#3 ] zp ZP_BYTE:41 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] zp ZP_BYTE:124 [ play_movement::key_event#0 ] reg byte a [ play_movement::$3 ] reg byte a [ play_movement::$4 ] zp ZP_BYTE:146 [ play_movement::render#2 ]
Limited combination testing to 100 combinations of 576 possible.
Uplifting [keyboard_event_get] best 4248813 combination reg byte x [ keyboard_event_get::return#3 ] reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
Uplifting [play_init] best 4248603 combination reg byte a [ play_init::$5 ] zp ZP_BYTE:99 [ play_init::b#2 play_init::b#1 ] reg byte y [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::$4 ] zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:96 [ play_init::pli#2 play_init::pli#1 ]
Uplifting [keyboard_event_get] best 4258029 combination reg byte x [ keyboard_event_get::return#3 ] reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
Uplifting [play_init] best 4257819 combination reg byte a [ play_init::$5 ] zp ZP_BYTE:99 [ play_init::b#2 play_init::b#1 ] reg byte y [ play_init::j#2 play_init::j#1 ] reg byte x [ play_init::$4 ] zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ] zp ZP_WORD:96 [ play_init::pli#2 play_init::pli#1 ]
Limited combination testing to 100 combinations of 432 possible.
Uplifting [render_bcd] best 4248573 combination zp ZP_WORD:8 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp ZP_WORD:14 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] zp ZP_BYTE:130 [ render_bcd::$4 ] zp ZP_WORD:10 [ render_bcd::offset#6 ] zp ZP_BYTE:12 [ render_bcd::only_low#6 ]
Uplifting [render_bcd] best 4257789 combination zp ZP_WORD:8 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ] zp ZP_WORD:14 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] reg byte a [ render_bcd::$5 ] reg byte a [ render_bcd::$6 ] reg byte a [ render_bcd::$3 ] zp ZP_BYTE:130 [ render_bcd::$4 ] zp ZP_WORD:10 [ render_bcd::offset#6 ] zp ZP_BYTE:12 [ render_bcd::only_low#6 ]
Limited combination testing to 100 combinations of 1536 possible.
Uplifting [render_init] best 4248403 combination reg byte y [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::$13 ] zp ZP_WORD:105 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:103 [ render_init::li_1#2 render_init::li_1#1 ]
Uplifting [sprites_init] best 4248233 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [play_move_down] best 4248200 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] zp ZP_BYTE:170 [ play_move_down::removed#0 ] zp ZP_BYTE:141 [ play_move_down::key_event#0 ] zp ZP_BYTE:73 [ play_move_down::return#3 ]
Uplifting [render_init] best 4257619 combination reg byte y [ render_init::i#2 render_init::i#1 ] reg byte x [ render_init::$13 ] zp ZP_WORD:105 [ render_init::li_2#2 render_init::li_2#1 ] zp ZP_WORD:103 [ render_init::li_1#2 render_init::li_1#1 ]
Uplifting [sprites_init] best 4257449 combination reg byte y [ sprites_init::s#2 sprites_init::s#1 ] reg byte x [ sprites_init::s2#0 ] zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [play_move_down] best 4257416 combination reg byte x [ play_move_down::movedown#6 play_move_down::movedown#7 play_move_down::movedown#10 play_move_down::movedown#2 play_move_down::movedown#3 ] reg byte a [ play_move_down::return#0 ] reg byte a [ play_move_down::$2 ] reg byte a [ play_move_down::$12 ] zp ZP_BYTE:170 [ play_move_down::removed#0 ] zp ZP_BYTE:141 [ play_move_down::key_event#0 ] zp ZP_BYTE:73 [ play_move_down::return#3 ]
Limited combination testing to 100 combinations of 12288 possible.
Uplifting [keyboard_event_pressed] best 4248180 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:202 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ]
Uplifting [keyboard_event_pressed] best 4257396 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:202 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ]
Limited combination testing to 100 combinations of 589824 possible.
Uplifting [sprites_irq] best 4248156 combination zp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:222 [ sprites_irq::ptr#1 ] zp ZP_BYTE:217 [ sprites_irq::ypos#0 ] zp ZP_BYTE:219 [ sprites_irq::ptr#0 ]
Uplifting [sprites_irq] best 4257372 combination zp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ] reg byte x [ sprites_irq::$0 ] reg byte a [ sprites_irq::ptr#4 ] reg byte a [ sprites_irq::ptr#2 ] reg byte a [ sprites_irq::ptr#3 ] zp ZP_BYTE:222 [ sprites_irq::ptr#1 ] zp ZP_BYTE:217 [ sprites_irq::ypos#0 ] zp ZP_BYTE:219 [ sprites_irq::ptr#0 ]
Limited combination testing to 100 combinations of 12288 possible.
Uplifting [play_move_rotate] best 4248138 combination zp ZP_BYTE:43 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::return#0 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:153 [ play_move_rotate::$7 ] zp ZP_BYTE:147 [ play_move_rotate::key_event#0 ] zp ZP_BYTE:42 [ play_move_rotate::return#2 ]
Uplifting [play_move_rotate] best 4257354 combination zp ZP_BYTE:43 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::return#0 ] reg byte x [ play_move_rotate::$5 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:153 [ play_move_rotate::$7 ] zp ZP_BYTE:147 [ play_move_rotate::key_event#0 ] zp ZP_BYTE:42 [ play_move_rotate::return#2 ]
Limited combination testing to 100 combinations of 12288 possible.
Uplifting [play_update_score] best 4248116 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$9 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::lines_after#0 ] zp ZP_DWORD:180 [ play_update_score::add_bcd#0 ] zp ZP_BYTE:171 [ play_update_score::removed#0 ] zp ZP_BYTE:178 [ play_update_score::lines_before#0 ]
Uplifting [play_update_score] best 4257332 combination reg byte a [ play_update_score::$2 ] reg byte a [ play_update_score::$9 ] reg byte a [ play_update_score::$4 ] reg byte a [ play_update_score::lines_after#0 ] zp ZP_DWORD:180 [ play_update_score::add_bcd#0 ] zp ZP_BYTE:171 [ play_update_score::removed#0 ] zp ZP_BYTE:178 [ play_update_score::lines_before#0 ]
Limited combination testing to 100 combinations of 2304 possible.
Uplifting [play_move_leftright] best 4248089 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] zp ZP_BYTE:54 [ play_move_leftright::return#2 ]
Uplifting [play_move_leftright] best 4257305 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] reg byte a [ play_move_leftright::key_event#0 ] zp ZP_BYTE:54 [ play_move_leftright::return#2 ]
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [render_show] best 4248080 combination reg byte a [ render_show::d018val#3 ]
Uplifting [render_score] best 4248080 combination zp ZP_WORD:6 [ render_score::screen#3 ]
Uplifting [sid_rnd_init] best 4248080 combination
Uplifting [render_screen_swap] best 4248080 combination
Uplifting [sprites_irq_init] best 4248080 combination
Uplifting [render_show] best 4257296 combination reg byte a [ render_show::d018val#3 ]
Uplifting [render_score] best 4257296 combination zp ZP_WORD:6 [ render_score::screen#3 ]
Uplifting [sid_rnd_init] best 4257296 combination
Uplifting [render_screen_swap] best 4257296 combination
Uplifting [sprites_irq_init] best 4257296 combination
Attempting to uplift remaining variables inzp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ]
Uplifting [] best 4248080 combination zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ]
Uplifting [] best 4257296 combination zp ZP_BYTE:93 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
Uplifting [play_collision] best 4248080 combination zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
Uplifting [play_collision] best 4257296 combination zp ZP_BYTE:50 [ play_collision::i#2 play_collision::i#3 play_collision::i#10 play_collision::i#12 ]
Attempting to uplift remaining variables inzp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ]
Uplifting [play_lock_current] best 4248080 combination zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ]
Uplifting [play_lock_current] best 4257296 combination zp ZP_BYTE:85 [ play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 ]
Attempting to uplift remaining variables inzp ZP_BYTE:91 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Uplifting [keyboard_event_scan] best 4098080 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Uplifting [keyboard_event_scan] best 4107296 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ]
Uplifting [play_remove_lines] best 4098080 combination zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ]
Uplifting [play_remove_lines] best 4107296 combination zp ZP_BYTE:80 [ play_remove_lines::x#2 play_remove_lines::x#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:86 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ]
Uplifting [play_lock_current] best 4098080 combination zp ZP_BYTE:86 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ]
Uplifting [play_lock_current] best 4107296 combination zp ZP_BYTE:86 [ play_lock_current::xp#2 play_lock_current::xp#0 play_lock_current::xp#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:51 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ]
Uplifting [play_collision] best 4098080 combination zp ZP_BYTE:51 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ]
Uplifting [play_collision] best 4107296 combination zp ZP_BYTE:51 [ play_collision::xp#2 play_collision::xp#8 play_collision::xp#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ]
Uplifting [keyboard_event_scan] best 4098080 combination zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ]
Uplifting [keyboard_event_scan] best 4107296 combination zp ZP_BYTE:92 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#13 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ]
Uplifting [play_remove_lines] best 4098080 combination zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ]
Uplifting [play_remove_lines] best 4107296 combination zp ZP_BYTE:81 [ play_remove_lines::full#4 play_remove_lines::full#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:188 [ play_remove_lines::c#0 ]
Uplifting [play_remove_lines] best 4098080 combination zp ZP_BYTE:188 [ play_remove_lines::c#0 ]
Uplifting [play_remove_lines] best 4107296 combination zp ZP_BYTE:188 [ play_remove_lines::c#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:32 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ]
Uplifting [render_moving] best 4098080 combination zp ZP_BYTE:32 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ]
Uplifting [render_moving] best 4107296 combination zp ZP_BYTE:32 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ]
Uplifting [play_remove_lines] best 4098080 combination zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ]
Uplifting [play_remove_lines] best 4107296 combination zp ZP_BYTE:78 [ play_remove_lines::removed#11 play_remove_lines::removed#8 play_remove_lines::removed#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:192 [ play_lock_current::i#1 ]
Uplifting [play_lock_current] best 4098080 combination zp ZP_BYTE:192 [ play_lock_current::i#1 ]
Uplifting [play_lock_current] best 4107296 combination zp ZP_BYTE:192 [ play_lock_current::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ]
Uplifting [] best 4098080 combination zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ]
Uplifting [] best 4107296 combination zp ZP_BYTE:74 [ next_piece_idx#17 next_piece_idx#30 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Uplifting [keyboard_event_scan] best 4098080 combination zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Uplifting [keyboard_event_scan] best 4107296 combination zp ZP_BYTE:90 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:40 [ render_playfield::c#2 render_playfield::c#1 ]
Uplifting [render_playfield] best 4098080 combination zp ZP_BYTE:40 [ render_playfield::c#2 render_playfield::c#1 ]
Uplifting [render_playfield] best 4107296 combination zp ZP_BYTE:40 [ render_playfield::c#2 render_playfield::c#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:156 [ play_collision::$14 ]
Uplifting [play_collision] best 4094080 combination reg byte a [ play_collision::$14 ]
Uplifting [play_collision] best 4103296 combination reg byte a [ play_collision::$14 ]
Attempting to uplift remaining variables inzp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ]
Uplifting [play_remove_lines] best 4094080 combination zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ]
Uplifting [play_remove_lines] best 4103296 combination zp ZP_BYTE:77 [ play_remove_lines::y#8 play_remove_lines::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:159 [ play_collision::i#1 ]
Uplifting [play_collision] best 4094080 combination zp ZP_BYTE:159 [ play_collision::i#1 ]
Uplifting [play_collision] best 4103296 combination zp ZP_BYTE:159 [ play_collision::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:37 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Uplifting [render_playfield] best 4094080 combination zp ZP_BYTE:37 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Uplifting [render_playfield] best 4103296 combination zp ZP_BYTE:37 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:33 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Uplifting [render_moving] best 4094080 combination zp ZP_BYTE:33 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Uplifting [render_moving] best 4103296 combination zp ZP_BYTE:33 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:48 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
Uplifting [play_collision] best 4094080 combination zp ZP_BYTE:48 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
Uplifting [play_collision] best 4103296 combination zp ZP_BYTE:48 [ play_collision::yp#2 play_collision::yp#0 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::yp#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ]
Uplifting [keyboard_event_scan] best 4094080 combination zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ]
Uplifting [keyboard_event_scan] best 4103296 combination zp ZP_BYTE:199 [ keyboard_event_scan::row_scan#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ]
Uplifting [play_lock_current] best 4094080 combination zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ]
Uplifting [play_lock_current] best 4103296 combination zp ZP_BYTE:84 [ play_lock_current::l#6 play_lock_current::l#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ render_screen_showing#13 render_screen_showing#1 render_screen_showing#0 ]
Uplifting [] best 4094080 combination zp ZP_BYTE:4 [ render_screen_showing#13 render_screen_showing#1 render_screen_showing#0 ]
Uplifting [] best 4103296 combination zp ZP_BYTE:4 [ render_screen_showing#13 render_screen_showing#1 render_screen_showing#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ]
Uplifting [play_collision] best 4094080 combination zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ]
Uplifting [play_collision] best 4103296 combination zp ZP_BYTE:49 [ play_collision::l#6 play_collision::l#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:83 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Uplifting [play_lock_current] best 4094080 combination zp ZP_BYTE:83 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Uplifting [play_lock_current] best 4103296 combination zp ZP_BYTE:83 [ play_lock_current::yp#2 play_lock_current::yp#0 play_lock_current::yp#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:134 [ render_moving::$1 ]
Uplifting [render_moving] best 4093480 combination reg byte a [ render_moving::$1 ]
Uplifting [render_moving] best 4102696 combination reg byte a [ render_moving::$1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:135 [ render_moving::$6 ]
Uplifting [render_moving] best 4093080 combination reg byte a [ render_moving::$6 ]
Uplifting [render_moving] best 4102296 combination reg byte a [ render_moving::$6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ]
Uplifting [] best 4093080 combination zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ]
Uplifting [] best 4102296 combination zp ZP_BYTE:68 [ current_piece_char#29 current_piece_char#10 current_piece_char#16 current_piece_char#5 ]
Attempting to uplift remaining variables inzp ZP_BYTE:36 [ render_playfield::l#2 render_playfield::l#1 ]
Uplifting [render_playfield] best 4093080 combination zp ZP_BYTE:36 [ render_playfield::l#2 render_playfield::l#1 ]
Uplifting [render_playfield] best 4102296 combination zp ZP_BYTE:36 [ render_playfield::l#2 render_playfield::l#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:18 [ render_next::l#7 render_next::l#1 ]
Uplifting [render_next] best 4093080 combination zp ZP_BYTE:18 [ render_next::l#7 render_next::l#1 ]
Uplifting [render_next] best 4102296 combination zp ZP_BYTE:18 [ render_next::l#7 render_next::l#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:31 [ render_moving::l#4 render_moving::l#1 ]
Uplifting [render_moving] best 4093080 combination zp ZP_BYTE:31 [ render_moving::l#4 render_moving::l#1 ]
Uplifting [render_moving] best 4102296 combination zp ZP_BYTE:31 [ render_moving::l#4 render_moving::l#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:30 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Uplifting [render_moving] best 4093080 combination zp ZP_BYTE:30 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Uplifting [render_moving] best 4102296 combination zp ZP_BYTE:30 [ render_moving::ypos#2 render_moving::ypos#0 render_moving::ypos#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:29 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ]
Uplifting [] best 4093080 combination zp ZP_BYTE:29 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ]
Uplifting [] best 4102296 combination zp ZP_BYTE:29 [ current_piece_char#68 current_piece_char#100 current_piece_char#101 ]
Attempting to uplift remaining variables inzp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ]
Uplifting [] best 4093080 combination zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ]
Uplifting [] best 4102296 combination zp ZP_BYTE:120 [ irq_sprite_ptr#0 irq_sprite_ptr#11 irq_sprite_ptr#1 irq_sprite_ptr#2 irq_sprite_ptr#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:132 [ render_next::next_piece_char#0 ]
Uplifting [render_next] best 4093080 combination zp ZP_BYTE:132 [ render_next::next_piece_char#0 ]
Uplifting [render_next] best 4102296 combination zp ZP_BYTE:132 [ render_next::next_piece_char#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ]
Uplifting [] best 4093080 combination zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ]
Uplifting [] best 4102296 combination zp ZP_BYTE:119 [ irq_sprite_ypos#0 irq_sprite_ypos#11 irq_sprite_ypos#1 irq_sprite_ypos#2 irq_sprite_ypos#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ]
Uplifting [] best 4093080 combination zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ]
Uplifting [] best 4102296 combination zp ZP_BYTE:121 [ irq_cnt#0 irq_cnt#3 irq_cnt#1 irq_cnt#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ]
Uplifting [play_collision] best 4093080 combination zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ]
Uplifting [play_collision] best 4102296 combination zp ZP_BYTE:47 [ play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 ]
Attempting to uplift remaining variables inzp ZP_BYTE:72 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ]
Uplifting [] best 4093080 combination zp ZP_BYTE:72 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ]
Uplifting [] best 4102296 combination zp ZP_BYTE:72 [ current_xpos#43 current_xpos#14 current_xpos#19 current_xpos#100 current_xpos#22 current_xpos#26 current_xpos#6 current_xpos#8 ]
Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
Uplifting [play_movement] best 4093080 combination zp ZP_BYTE:41 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
Uplifting [play_movement] best 4102296 combination zp ZP_BYTE:41 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:99 [ play_init::b#2 play_init::b#1 ]
Uplifting [play_init] best 4092980 combination reg byte x [ play_init::b#2 play_init::b#1 ]
Uplifting [play_init] best 4102196 combination reg byte x [ play_init::b#2 play_init::b#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ]
Uplifting [] best 4092980 combination zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ]
Uplifting [] best 4102196 combination zp ZP_BYTE:65 [ level_bcd#31 level_bcd#11 level_bcd#17 level_bcd#19 level_bcd#62 level_bcd#21 level_bcd#8 ]
Attempting to uplift remaining variables inzp ZP_BYTE:46 [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
Uplifting [play_collision] best 4092964 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
Uplifting [play_collision] best 4102180 combination reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ]
Uplifting [render_screen_original] best 4092964 combination zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ]
Uplifting [render_screen_original] best 4102180 combination zp ZP_BYTE:107 [ render_screen_original::y#6 render_screen_original::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:69 [ current_orientation#37 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ]
Attempting to uplift remaining variables inzp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:64 [ current_movedown_slow#37 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#23 current_movedown_slow#66 current_movedown_slow#10 ]
Attempting to uplift remaining variables inzp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [sprites_init] best 4092964 combination zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Uplifting [sprites_init] best 4102180 combination zp ZP_BYTE:101 [ sprites_init::xpos#2 sprites_init::xpos#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:56 [ current_ypos#38 current_ypos#3 current_ypos#11 current_ypos#19 current_ypos#6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:75 [ game_over#65 game_over#27 game_over#10 game_over#15 game_over#52 ]
Attempting to uplift remaining variables inzp ZP_BYTE:26 [ current_xpos#59 current_xpos#119 current_xpos#120 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:26 [ current_xpos#59 current_xpos#119 current_xpos#120 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:26 [ current_xpos#59 current_xpos#119 current_xpos#120 ]
Attempting to uplift remaining variables inzp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ]
Uplifting [play_init] best 4092964 combination zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ]
Uplifting [play_init] best 4102180 combination zp ZP_BYTE:98 [ play_init::idx#2 play_init::idx#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:63 [ level#33 level#10 level#17 level#19 level#21 ]
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:5 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:5 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 ]
Attempting to uplift remaining variables inzp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:118 [ irq_raster_next#0 irq_raster_next#4 irq_raster_next#1 irq_raster_next#2 irq_raster_next#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ render_screen_render#33 render_screen_render#65 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:25 [ render_screen_render#33 render_screen_render#65 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:25 [ render_screen_render#33 render_screen_render#65 ]
Attempting to uplift remaining variables inzp ZP_BYTE:124 [ play_movement::key_event#0 ]
Uplifting [play_movement] best 4092964 combination zp ZP_BYTE:124 [ play_movement::key_event#0 ]
Uplifting [play_movement] best 4102180 combination zp ZP_BYTE:124 [ play_movement::key_event#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:43 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
Uplifting [play_move_rotate] best 4092964 combination zp ZP_BYTE:43 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
Uplifting [play_move_rotate] best 4102180 combination zp ZP_BYTE:43 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ]
Uplifting [sprites_irq] best 4092964 combination zp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ]
Uplifting [sprites_irq] best 4102180 combination zp ZP_BYTE:117 [ sprites_irq::raster_sprite_gfx_modify#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 ]
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ]
Uplifting [] best 4092964 combination zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ]
Uplifting [] best 4102180 combination zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ]
Attempting to uplift remaining variables inzp ZP_BYTE:130 [ render_bcd::$4 ]
Uplifting [render_bcd] best 4092958 combination reg byte a [ render_bcd::$4 ]
Uplifting [render_bcd] best 4102174 combination reg byte a [ render_bcd::$4 ]
Attempting to uplift remaining variables inzp ZP_BYTE:151 [ play_collision::return#14 ]
Uplifting [play_collision] best 4092952 combination reg byte a [ play_collision::return#14 ]
Uplifting [play_collision] best 4102168 combination reg byte a [ play_collision::return#14 ]
Attempting to uplift remaining variables inzp ZP_BYTE:153 [ play_move_rotate::$7 ]
Uplifting [play_move_rotate] best 4092946 combination reg byte x [ play_move_rotate::$7 ]
Uplifting [play_move_rotate] best 4102162 combination reg byte x [ play_move_rotate::$7 ]
Attempting to uplift remaining variables inzp ZP_BYTE:161 [ play_collision::return#13 ]
Uplifting [play_collision] best 4092940 combination reg byte a [ play_collision::return#13 ]
Uplifting [play_collision] best 4102156 combination reg byte a [ play_collision::return#13 ]
Attempting to uplift remaining variables inzp ZP_BYTE:163 [ play_collision::return#1 ]
Uplifting [play_collision] best 4092934 combination reg byte a [ play_collision::return#1 ]
Uplifting [play_collision] best 4102150 combination reg byte a [ play_collision::return#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:167 [ play_collision::return#0 ]
Uplifting [play_collision] best 4092928 combination reg byte a [ play_collision::return#0 ]
Uplifting [play_collision] best 4102144 combination reg byte a [ play_collision::return#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:169 [ play_remove_lines::return#0 ]
Uplifting [play_remove_lines] best 4092922 combination reg byte a [ play_remove_lines::return#0 ]
Uplifting [play_remove_lines] best 4102138 combination reg byte a [ play_remove_lines::return#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:170 [ play_move_down::removed#0 ]
Uplifting [play_move_down] best 4092916 combination reg byte a [ play_move_down::removed#0 ]
Uplifting [play_move_down] best 4102132 combination reg byte a [ play_move_down::removed#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:174 [ play_collision::return#10 ]
Uplifting [play_collision] best 4092910 combination reg byte a [ play_collision::return#10 ]
Uplifting [play_collision] best 4102126 combination reg byte a [ play_collision::return#10 ]
Attempting to uplift remaining variables inzp ZP_BYTE:201 [ keyboard_event_scan::$0 ]
Uplifting [keyboard_event_scan] best 4092904 combination reg byte a [ keyboard_event_scan::$0 ]
Uplifting [keyboard_event_scan] best 4102120 combination reg byte a [ keyboard_event_scan::$0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:202 [ keyboard_event_pressed::return#1 ]
Uplifting [keyboard_event_pressed] best 4092898 combination reg byte a [ keyboard_event_pressed::return#1 ]
Uplifting [keyboard_event_pressed] best 4102114 combination reg byte a [ keyboard_event_pressed::return#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:203 [ keyboard_event_scan::$3 ]
Uplifting [keyboard_event_scan] best 4092892 combination reg byte a [ keyboard_event_scan::$3 ]
Uplifting [keyboard_event_scan] best 4102108 combination reg byte a [ keyboard_event_scan::$3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:204 [ keyboard_event_pressed::return#2 ]
Uplifting [keyboard_event_pressed] best 4092886 combination reg byte a [ keyboard_event_pressed::return#2 ]
Uplifting [keyboard_event_pressed] best 4102102 combination reg byte a [ keyboard_event_pressed::return#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:205 [ keyboard_event_scan::$6 ]
Uplifting [keyboard_event_scan] best 4092880 combination reg byte a [ keyboard_event_scan::$6 ]
Uplifting [keyboard_event_scan] best 4102096 combination reg byte a [ keyboard_event_scan::$6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:206 [ keyboard_event_pressed::return#10 ]
Uplifting [keyboard_event_pressed] best 4092874 combination reg byte a [ keyboard_event_pressed::return#10 ]
Uplifting [keyboard_event_pressed] best 4102090 combination reg byte a [ keyboard_event_pressed::return#10 ]
Attempting to uplift remaining variables inzp ZP_BYTE:207 [ keyboard_event_scan::$9 ]
Uplifting [keyboard_event_scan] best 4092868 combination reg byte a [ keyboard_event_scan::$9 ]
Uplifting [keyboard_event_scan] best 4102084 combination reg byte a [ keyboard_event_scan::$9 ]
Attempting to uplift remaining variables inzp ZP_BYTE:147 [ play_move_rotate::key_event#0 ]
Uplifting [play_move_rotate] best 4092859 combination reg byte a [ play_move_rotate::key_event#0 ]
Uplifting [play_move_rotate] best 4102075 combination reg byte a [ play_move_rotate::key_event#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:222 [ sprites_irq::ptr#1 ]
Uplifting [sprites_irq] best 4092847 combination reg byte x [ sprites_irq::ptr#1 ]
Uplifting [sprites_irq] best 4102063 combination reg byte x [ sprites_irq::ptr#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:217 [ sprites_irq::ypos#0 ]
Uplifting [sprites_irq] best 4092832 combination reg byte a [ sprites_irq::ypos#0 ]
Uplifting [sprites_irq] best 4102048 combination reg byte a [ sprites_irq::ypos#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:219 [ sprites_irq::ptr#0 ]
Uplifting [sprites_irq] best 4092817 combination reg byte x [ sprites_irq::ptr#0 ]
Uplifting [sprites_irq] best 4102033 combination reg byte x [ sprites_irq::ptr#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:141 [ play_move_down::key_event#0 ]
Uplifting [play_move_down] best 4092811 combination reg byte a [ play_move_down::key_event#0 ]
Uplifting [play_move_down] best 4102027 combination reg byte a [ play_move_down::key_event#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ]
Uplifting [keyboard_event_pressed] best 4092811 combination zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ]
Uplifting [keyboard_event_pressed] best 4102027 combination zp ZP_BYTE:194 [ keyboard_event_pressed::row_bits#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:196 [ keyboard_event_pressed::return#11 ]
Uplifting [keyboard_event_pressed] best 4092793 combination reg byte a [ keyboard_event_pressed::return#11 ]
Uplifting [keyboard_event_pressed] best 4102009 combination reg byte a [ keyboard_event_pressed::return#11 ]
Attempting to uplift remaining variables inzp ZP_BYTE:53 [ play_collision::return#15 ]
Uplifting [play_collision] best 4092763 combination reg byte a [ play_collision::return#15 ]
Uplifting [play_collision] best 4101979 combination reg byte a [ play_collision::return#15 ]
Attempting to uplift remaining variables inzp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ]
Uplifting [keyboard_event_pressed] best 4092763 combination zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ]
Uplifting [keyboard_event_pressed] best 4101979 combination zp ZP_BYTE:88 [ keyboard_event_pressed::keycode#5 ]
Attempting to uplift remaining variables inzp ZP_BYTE:171 [ play_update_score::removed#0 ]
Uplifting [play_update_score] best 4092757 combination reg byte x [ play_update_score::removed#0 ]
Uplifting [play_update_score] best 4101973 combination reg byte x [ play_update_score::removed#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:12 [ render_bcd::only_low#6 ]
Uplifting [render_bcd] best 4092736 combination reg byte y [ render_bcd::only_low#6 ]
Uplifting [render_bcd] best 4101952 combination reg byte y [ render_bcd::only_low#6 ]
Attempting to uplift remaining variables inzp ZP_BYTE:146 [ play_movement::render#2 ]
Uplifting [play_movement] best 4092736 combination zp ZP_BYTE:146 [ play_movement::render#2 ]
Uplifting [play_movement] best 4101952 combination zp ZP_BYTE:146 [ play_movement::render#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:42 [ play_move_rotate::return#2 ]
Uplifting [play_move_rotate] best 4092727 combination reg byte a [ play_move_rotate::return#2 ]
Uplifting [play_move_rotate] best 4101943 combination reg byte a [ play_move_rotate::return#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:54 [ play_move_leftright::return#2 ]
Uplifting [play_move_leftright] best 4092718 combination reg byte a [ play_move_leftright::return#2 ]
Uplifting [play_move_leftright] best 4101934 combination reg byte a [ play_move_leftright::return#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:73 [ play_move_down::return#3 ]
Uplifting [play_move_down] best 4092711 combination reg byte x [ play_move_down::return#3 ]
Uplifting [play_move_down] best 4101927 combination reg byte x [ play_move_down::return#3 ]
Attempting to uplift remaining variables inzp ZP_BYTE:178 [ play_update_score::lines_before#0 ]
Uplifting [play_update_score] best 4092711 combination zp ZP_BYTE:178 [ play_update_score::lines_before#0 ]
Uplifting [play_update_score] best 4101927 combination zp ZP_BYTE:178 [ play_update_score::lines_before#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:173 [ play_spawn_current::$7 ]
Uplifting [play_spawn_current] best 4092711 combination zp ZP_BYTE:173 [ play_spawn_current::$7 ]
Uplifting [play_spawn_current] best 4101927 combination zp ZP_BYTE:173 [ play_spawn_current::$7 ]
Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ render_score::screen#3 ] ] with [ zp ZP_WORD:8 [ render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 ] ] - score: 6
Coalescing zero page register with common assignment [ zp ZP_BYTE:41 [ play_movement::return#2 play_movement::render#1 play_movement::return#0 ] ] with [ zp ZP_BYTE:146 [ play_movement::render#2 ] ] - score: 2
Coalescing zero page register with common assignment [ zp ZP_WORD:10 [ render_bcd::offset#6 ] ] with [ zp ZP_WORD:14 [ render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 ] ] - score: 1
@ -22630,6 +22631,7 @@ sprites_irq: {
sta PLAYFIELD_SPRITE_PTRS_1+3
jmp b2
}
//SEG1270 File Data
// Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7)
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
@ -24640,7 +24642,7 @@ reg byte a [ sprites_irq::ptr#2 ]
FINAL ASSEMBLER
Score: 3344906
Score: 3354122
//SEG0 File Comments
// Tetris Game for the Commodore 64
@ -27569,6 +27571,7 @@ sprites_irq: {
sta PLAYFIELD_SPRITE_PTRS_1+3
jmp b2
}
//SEG1270 File Data
// Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7)
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)

View File

@ -543,6 +543,7 @@ main: {
//SEG51 [23] return
rts
}
//SEG52 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) SCREEN#0) ← (byte) '+' [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -720,6 +721,7 @@ main: {
//SEG51 [23] return
rts
}
//SEG52 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -921,4 +923,5 @@ main: {
//SEG51 [23] return
rts
}
//SEG52 File Data

View File

@ -544,6 +544,7 @@ main: {
//SEG51 [23] return
rts
}
//SEG52 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) SCREEN#0) ← (byte) '0' [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -720,6 +721,7 @@ main: {
//SEG51 [23] return
rts
}
//SEG52 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -921,4 +923,5 @@ main: {
//SEG51 [23] return
rts
}
//SEG52 File Data

View File

@ -458,6 +458,7 @@ main: {
//SEG52 [12] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@4->main::@3#1] -- register_copy
jmp b3
}
//SEG53 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [10] *((const byte*) SCREEN#0 + (byte) idx#1) ← (byte) ' ' [ idx#1 ] ( main:2 [ idx#1 ] ) always clobbers reg byte a
@ -603,6 +604,7 @@ main: {
//SEG52 [12] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@4->main::@3#1] -- register_copy
jmp b3
}
//SEG53 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -781,4 +783,5 @@ main: {
//SEG52 [12] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@4->main::@3#1] -- register_copy
jmp b3
}
//SEG53 File Data

View File

@ -298,6 +298,7 @@ main: {
//SEG31 [13] return
rts
}
//SEG32 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
@ -388,6 +389,7 @@ main: {
//SEG31 [13] return
rts
}
//SEG32 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -504,4 +506,5 @@ main: {
//SEG31 [13] return
rts
}
//SEG32 File Data

View File

@ -571,6 +571,7 @@ main: {
//SEG48 [25] return
rts
}
//SEG49 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [8] *((const byte*) SCREEN#0 + (byte) main::idx#10) ← (byte) '+' [ main::i#10 main::idx#10 ] ( main:2 [ main::i#10 main::idx#10 ] ) always clobbers reg byte a
@ -770,6 +771,7 @@ main: {
//SEG48 [25] return
rts
}
//SEG49 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -971,4 +973,5 @@ main: {
//SEG48 [25] return
rts
}
//SEG49 File Data

View File

@ -151,6 +151,7 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) main::screen#0) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -201,6 +202,7 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -264,4 +266,5 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data

View File

@ -225,6 +225,7 @@ main: {
//SEG22 [11] return
rts
}
//SEG23 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [7] *((const byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a' [ main::x#2 main::y#0 ] ( main:2 [ main::x#2 main::y#0 ] ) always clobbers reg byte a
@ -304,6 +305,7 @@ main: {
//SEG22 [11] return
rts
}
//SEG23 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -400,4 +402,5 @@ main: {
//SEG22 [11] return
rts
}
//SEG23 File Data

View File

@ -276,6 +276,7 @@ main: {
//SEG18 [9] return
rts
}
//SEG19 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) screen#0+(byte) $27) ← (byte) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -340,6 +341,7 @@ main: {
//SEG18 [9] return
rts
}
//SEG19 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -417,4 +419,5 @@ main: {
//SEG18 [9] return
rts
}
//SEG19 File Data

View File

@ -142,6 +142,7 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) main::SCREEN#0) ← (byte) '!' [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -192,6 +193,7 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -254,4 +256,5 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data

View File

@ -253,6 +253,7 @@ sub: {
//SEG22 [12] return
rts
}
//SEG23 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [0] (byte) A#0 ← (byte) 'a' [ A#0 ] ( ) always clobbers reg byte a
@ -340,6 +341,7 @@ sub: {
//SEG22 [12] return
rts
}
//SEG23 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -442,4 +444,5 @@ sub: {
//SEG22 [12] return
rts
}
//SEG23 File Data

View File

@ -467,6 +467,7 @@ plot: {
//SEG42 [22] return
rts
}
//SEG43 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
@ -602,6 +603,7 @@ plot: {
//SEG42 [22] return
rts
}
//SEG43 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -767,4 +769,5 @@ plot: {
//SEG42 [22] return
rts
}
//SEG43 File Data

View File

@ -190,6 +190,7 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) SCREEN#0) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -240,6 +241,7 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -303,4 +305,5 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data

View File

@ -193,6 +193,7 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] (byte~) main::$0 ← (byte) main::i#2 >> (byte) 4 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) always clobbers reg byte a
@ -265,6 +266,7 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -353,4 +355,5 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data

View File

@ -125,6 +125,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::screen#0) ← (const byte) main::b#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -171,6 +172,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -230,4 +232,5 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data

View File

@ -370,6 +370,7 @@ sum: {
//SEG37 [20] return
rts
}
//SEG38 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ZP_BYTE:2 [ sum::b#3 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
@ -478,6 +479,7 @@ sum: {
//SEG37 [20] return
rts
}
//SEG38 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -611,4 +613,5 @@ sum: {
//SEG37 [20] return
rts
}
//SEG38 File Data

View File

@ -167,6 +167,7 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) main::screen#0) ← (byte) '*' [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -217,6 +218,7 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -281,4 +283,5 @@ main: {
//SEG14 [6] return
rts
}
//SEG15 File Data

View File

@ -237,6 +237,7 @@ main: {
//SEG23 [11] return
rts
}
//SEG24 File Data
world: .fill 2*3, 0
REGISTER UPLIFT POTENTIAL REGISTERS
@ -323,6 +324,7 @@ main: {
//SEG23 [11] return
rts
}
//SEG24 File Data
world: .fill 2*3, 0
ASSEMBLER OPTIMIZATIONS
@ -424,5 +426,6 @@ main: {
//SEG23 [11] return
rts
}
//SEG24 File Data
world: .fill 2*3, 0

View File

@ -229,6 +229,7 @@ main: {
//SEG21 [14] return
rts
}
//SEG22 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] (word) main::w#0 ← (word) $d03 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -307,6 +308,7 @@ main: {
//SEG21 [14] return
rts
}
//SEG22 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -402,4 +404,5 @@ main: {
//SEG21 [14] return
rts
}
//SEG22 File Data

View File

@ -111,6 +111,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) SCREEN#0) ← (byte) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -155,6 +156,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -210,4 +212,5 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data

View File

@ -184,6 +184,7 @@ main: {
rts
msg: .text "camelot@"
}
//SEG21 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
@ -254,6 +255,7 @@ main: {
rts
msg: .text "camelot@"
}
//SEG21 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -339,4 +341,5 @@ main: {
rts
msg: .text "camelot@"
}
//SEG21 File Data

View File

@ -182,6 +182,7 @@ main: {
rts
s: .text "camelot@"
}
//SEG21 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
@ -249,6 +250,7 @@ main: {
rts
s: .text "camelot@"
}
//SEG21 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -333,4 +335,5 @@ main: {
rts
s: .text "camelot@"
}
//SEG21 File Data

View File

@ -251,6 +251,7 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) SCREEN#0) ← (const byte) STAR#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -327,6 +328,7 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -421,4 +423,5 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data

View File

@ -2015,6 +2015,7 @@ print_cls: {
//SEG184 [73] return
rts
}
//SEG185 File Data
msg: .text "0=0@"
msg1: .text "0+2=2@"
str: .text " @"
@ -2634,6 +2635,7 @@ print_cls: {
//SEG184 [73] return
rts
}
//SEG185 File Data
msg: .text "0=0@"
msg1: .text "0+2=2@"
str: .text " @"
@ -3311,6 +3313,7 @@ print_cls: {
//SEG184 [73] return
rts
}
//SEG185 File Data
msg: .text "0=0@"
msg1: .text "0+2=2@"
str: .text " @"

View File

@ -8517,6 +8517,7 @@ f100: {
//SEG514 [306] return
rts
}
//SEG515 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((const byte*) main::screen#0) ← (const byte) f1::return#1 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -10066,6 +10067,7 @@ f100: {
//SEG514 [306] return
rts
}
//SEG515 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -11926,4 +11928,5 @@ f100: {
//SEG514 [306] return
rts
}
//SEG515 File Data

View File

@ -318,6 +318,7 @@ print: {
//SEG28 [13] return
rts
}
//SEG29 File Data
msg1: .byte 'a', 'b', 'c', 'd'
msg2: .byte '1', '2', '3', '4'
@ -427,6 +428,7 @@ print: {
//SEG28 [13] return
rts
}
//SEG29 File Data
msg1: .byte 'a', 'b', 'c', 'd'
msg2: .byte '1', '2', '3', '4'
@ -551,6 +553,7 @@ print: {
//SEG28 [13] return
rts
}
//SEG29 File Data
msg1: .byte 'a', 'b', 'c', 'd'
msg2: .byte '1', '2', '3', '4'

View File

@ -292,6 +292,7 @@ print: {
//SEG27 [12] return
rts
}
//SEG28 File Data
msg1: .byte 'a', 'b', 'c', 'd'
msg2: .byte '1', '2', '3', '4'
@ -387,6 +388,7 @@ print: {
//SEG27 [12] return
rts
}
//SEG28 File Data
msg1: .byte 'a', 'b', 'c', 'd'
msg2: .byte '1', '2', '3', '4'
@ -500,6 +502,7 @@ print: {
//SEG27 [12] return
rts
}
//SEG28 File Data
msg1: .byte 'a', 'b', 'c', 'd'
msg2: .byte '1', '2', '3', '4'

View File

@ -206,6 +206,7 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] (byte*~) main::$1 ← (const byte*) main::screen#0 + (word) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) always clobbers reg byte a
@ -300,6 +301,7 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -411,4 +413,5 @@ main: {
//SEG21 [10] return
rts
}
//SEG22 File Data

View File

@ -116,6 +116,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::screen#0+(word)(number) $28*(number) $a) ← (byte) 'a' [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -161,6 +162,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -217,4 +219,5 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data

View File

@ -189,6 +189,7 @@ main: {
//SEG20 [9] return
rts
}
//SEG21 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((const byte*) main::screen#0+(word)(number) $28*(number) $a + (byte) main::i#2) ← (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
@ -255,6 +256,7 @@ main: {
//SEG20 [9] return
rts
}
//SEG21 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -336,4 +338,5 @@ main: {
//SEG20 [9] return
rts
}
//SEG21 File Data

View File

@ -350,6 +350,7 @@ main: {
//SEG29 [18] return
rts
}
//SEG30 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [7] (byte~) main::$3 ← (byte) main::i#2 >> (byte) 1 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) always clobbers reg byte a
@ -463,6 +464,7 @@ main: {
//SEG29 [18] return
rts
}
//SEG30 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -583,4 +585,5 @@ main: {
//SEG29 [18] return
rts
}
//SEG30 File Data

View File

@ -149,6 +149,7 @@ main: {
//SEG13 [6] return
rts
}
//SEG14 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::screen#0) ← (const byte) main::a#1 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -199,6 +200,7 @@ main: {
//SEG13 [6] return
rts
}
//SEG14 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -263,4 +265,5 @@ main: {
//SEG13 [6] return
rts
}
//SEG14 File Data

View File

@ -117,6 +117,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -162,6 +163,7 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -220,4 +222,5 @@ main: {
//SEG12 [5] return
rts
}
//SEG13 File Data

View File

@ -420,6 +420,7 @@ main: {
//SEG29 [18] return
rts
}
//SEG30 File Data
MAPDATA: .fill $3e8, 0
COLORMAP1: .fill $100, 0
COLORMAP2: .fill $100, 0
@ -530,6 +531,7 @@ main: {
//SEG29 [18] return
rts
}
//SEG30 File Data
MAPDATA: .fill $3e8, 0
COLORMAP1: .fill $100, 0
COLORMAP2: .fill $100, 0
@ -655,6 +657,7 @@ main: {
//SEG29 [18] return
rts
}
//SEG30 File Data
MAPDATA: .fill $3e8, 0
COLORMAP1: .fill $100, 0
COLORMAP2: .fill $100, 0

View File

@ -222,6 +222,7 @@ main: {
b2:
jmp b1
}
//SEG19 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ZP_BYTE:2 [ key#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
@ -287,6 +288,7 @@ main: {
b2:
jmp b1
}
//SEG19 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -372,4 +374,5 @@ main: {
//SEG18 main::@2
jmp b1
}
//SEG19 File Data

View File

@ -230,6 +230,7 @@ main: {
//SEG22 [11] return
rts
}
//SEG23 File Data
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] (dword) main::b#0 ← (const dword) main::a#0 + (byte) main::i#2 [ main::i#2 main::b#0 ] ( main:2 [ main::i#2 main::b#0 ] ) always clobbers reg byte a
@ -317,6 +318,7 @@ main: {
//SEG22 [11] return
rts
}
//SEG23 File Data
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b1
@ -422,4 +424,5 @@ main: {
//SEG22 [11] return
rts
}
//SEG23 File Data

Some files were not shown because too many files have changed in this diff Show More