mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-01-26 15:30:28 +00:00
Allowing ZP coalescing whenever registers are the same type (before variables had to be the same type).
This commit is contained in:
parent
e3353acbc9
commit
42b026a757
@ -191,9 +191,14 @@ public class AsmFragmentManager {
|
||||
synths.add(new FragmentSynthesis("(vwsz.)=(vwsz.|vwsc.)", null, null, "$1=$2", null, mapSToU));
|
||||
synths.add(new FragmentSynthesis("(vwsz.)=(vwsz.|vwsc.)_(plus|band|bxor|bor)_(vwsz.|vwsc.)", null, null, "$1=$2_$3_$4", null, mapSToU));
|
||||
|
||||
synths.add(new FragmentSynthesis("(vwuz.)=(vwuz.)_(plus|minus|band|bxor|bor)_vb.c(.)", null, null, "$1=$2_$3_vwuc$4", null, null));
|
||||
synths.add(new FragmentSynthesis("(vwuz.)=vb.c(.)_(plus|minus|band|bxor|bor)_(vwuz.)", null, null, "$1=vwuc$2_$3_$4", null, null));
|
||||
synths.add(new FragmentSynthesis("(vwsz.)=(vwsz.)_(plus|minus|band|bxor|bor)_vb.c(.)", null, null, "$1=$2_$3_vwsc$4", null, null));
|
||||
synths.add(new FragmentSynthesis("(vwsz.)=vb.c(.)_(plus|minus|band|bxor|bor)_(vwsz.)", null, null, "$1=vwsc$2_$3_$4", null, null));
|
||||
|
||||
synths.add(new FragmentSynthesis("(vwuz.)=(vwuc.)_(plus|band|bxor|bor)_(vwuz.)", null, null, "$1=$4_$3_$2", null, null));
|
||||
synths.add(new FragmentSynthesis("(vwsz.)=(vwsc.)_(plus|band|bxor|bor)_(vwsz.)", null, null, "$1=$4_$3_$2", null, null));
|
||||
|
||||
synths.add(new FragmentSynthesis("(vbuz.|vbuaa|vbuxx|vbuyy)=_(lo|hi)_vws(z.|c.)", null, null, "$1=_$2_vwu$3", null, mapSToU));
|
||||
|
||||
// Use Z1/Z2 ASM to synthesize Z1-only code
|
||||
|
@ -0,0 +1 @@
|
||||
// do nothing
|
@ -0,0 +1,4 @@
|
||||
lda {c2}
|
||||
sta {z1}
|
||||
lda {c1}
|
||||
sta {z1}+1
|
@ -32,8 +32,8 @@ public class Pass4ZeroPageCoalesce extends Pass2Base {
|
||||
for (LiveRangeEquivalenceClass myEquivalenceClass : liveRangeEquivalenceClassSet.getEquivalenceClasses()) {
|
||||
for (LiveRangeEquivalenceClass otherEquivalenceClass : liveRangeEquivalenceClassSet.getEquivalenceClasses()) {
|
||||
if (!myEquivalenceClass.equals(otherEquivalenceClass)) {
|
||||
if(canCoalesce(myEquivalenceClass, otherEquivalenceClass)) {
|
||||
getLog().append("Coalescing zero page register [ "+myEquivalenceClass+" ] with [ "+otherEquivalenceClass+" ]" );
|
||||
if (canCoalesce(myEquivalenceClass, otherEquivalenceClass)) {
|
||||
getLog().append("Coalescing zero page register [ " + myEquivalenceClass + " ] with [ " + otherEquivalenceClass + " ]");
|
||||
liveRangeEquivalenceClassSet.consolidate(myEquivalenceClass, otherEquivalenceClass);
|
||||
// Reset the program register allocation
|
||||
getProgram().getLiveRangeEquivalenceClassSet().storeRegisterAllocation();
|
||||
@ -50,19 +50,23 @@ public class Pass4ZeroPageCoalesce extends Pass2Base {
|
||||
Variable myVariable = getProgram().getSymbolInfos().getVariable(myVariableRef);
|
||||
VariableRef otherVariableRef = otherEquivalenceClass.getVariables().get(0);
|
||||
Variable otherVariable = getProgram().getSymbolInfos().getVariable(otherVariableRef);
|
||||
if (myVariable.getType().equals(otherVariable.getType())) {
|
||||
// Types match
|
||||
if (myEquivalenceClass.getRegister().isZp() && otherEquivalenceClass.getRegister().isZp()) {
|
||||
// Both registers are on Zero Page
|
||||
// Types match
|
||||
Registers.Register myRegister = myEquivalenceClass.getRegister();
|
||||
Registers.Register otherRegister = otherEquivalenceClass.getRegister();
|
||||
if (myRegister.isZp() && otherRegister.isZp()) {
|
||||
// Both registers are on Zero Page
|
||||
|
||||
if (myRegister.getType().equals(otherRegister.getType())) {
|
||||
// Both registers have the same Zero Page size
|
||||
|
||||
// Reset the program register allocation to the one specified in the equivalence class set
|
||||
getProgram().getLiveRangeEquivalenceClassSet().storeRegisterAllocation();
|
||||
// Try out the coalesce to test if it works
|
||||
for (VariableRef var : otherEquivalenceClass.getVariables()) {
|
||||
Variable variable = getProgram().getSymbolInfos().getVariable(var);
|
||||
variable.setAllocation(myEquivalenceClass.getRegister());
|
||||
variable.setAllocation(myRegister);
|
||||
}
|
||||
if(!Pass4RegisterUpliftCombinations.isAllocationOverlapping(getProgram())) {
|
||||
if (!Pass4RegisterUpliftCombinations.isAllocationOverlapping(getProgram())) {
|
||||
// Live ranges do not overlap
|
||||
// Perform coalesce!
|
||||
return true;
|
||||
|
@ -34,9 +34,7 @@ word getFAC() {
|
||||
sty $fe
|
||||
sta $ff
|
||||
}
|
||||
word w = 0;
|
||||
<w = *memLo;
|
||||
>w = *memHi;
|
||||
word w = { *memHi, *memLo};
|
||||
return w;
|
||||
}
|
||||
|
||||
|
@ -1,13 +0,0 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
jsr main
|
||||
main: {
|
||||
lda #$55
|
||||
ldy #$aa
|
||||
jsr $b391
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
rts
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @1
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[6] return [ ] ( main:2 [ ] )
|
||||
to:@return
|
@ -1,439 +0,0 @@
|
||||
|
||||
|
||||
void main() {
|
||||
|
||||
// Load word register Y,A into FAC (floating point accumulator)
|
||||
asm {
|
||||
lda #$55
|
||||
ldy #$aa
|
||||
jsr $b391
|
||||
}
|
||||
|
||||
// Load FAC (floating point accumulator) integer part into word register Y,A
|
||||
asm {
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
}
|
||||
|
||||
}
|
||||
PROGRAM
|
||||
proc (void()) main()
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
call main
|
||||
|
||||
SYMBOLS
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
INITIAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
|
||||
CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
|
||||
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main param-assignment
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
|
||||
Completing Phi functions...
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main param-assignment
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
|
||||
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main param-assignment
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
|
||||
INITIAL SSA SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main param-assignment
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
Block Sequence Planned @begin @1 @end main main::@return
|
||||
Block Sequence Planned @begin @1 @end main main::@return
|
||||
CONTROL FLOW GRAPH - PHI LIFTED
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
call main param-assignment
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
main: scope:[main] from @1
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
Propagating live ranges...
|
||||
CONTROL FLOW GRAPH - LIVE RANGES FOUND
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ]
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi() [ ]
|
||||
[2] call main param-assignment [ ]
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ]
|
||||
main: scope:[main] from @1
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[6] return [ ]
|
||||
to:@return
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Block Sequence Planned @begin @1 @end main main::@return
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
Propagating live ranges...
|
||||
CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ]
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi() [ ]
|
||||
[2] call main param-assignment [ ]
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ]
|
||||
main: scope:[main] from @1
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[6] return [ ]
|
||||
to:@return
|
||||
|
||||
CONTROL FLOW GRAPH - PHI MEM COALESCED
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @1
|
||||
asm { lda#$55ldy#$aajsr$b391 }
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[6] return [ ] ( main:2 [ ] )
|
||||
to:@return
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@1 dominated by @1 @begin
|
||||
@end dominated by @1 @begin @end
|
||||
main dominated by @1 @begin main
|
||||
main::@return dominated by main::@return @1 @begin main
|
||||
|
||||
NATURAL LOOPS
|
||||
|
||||
Found 0 loops in scope []
|
||||
Found 0 loops in scope [main]
|
||||
NATURAL LOOPS WITH DEPTH
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
|
||||
Initial phi equivalence classes
|
||||
Complete equivalence classes
|
||||
INITIAL ASM
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
b1_from_bbegin:
|
||||
jmp b1
|
||||
//SEG4 @1
|
||||
b1:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
|
||||
bend_from_b1:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
//SEG8 main
|
||||
main: {
|
||||
//SEG9 asm { lda#$55ldy#$aajsr$b391 }
|
||||
lda #$55
|
||||
ldy #$aa
|
||||
jsr $b391
|
||||
//SEG10 asm { jsr$b1aasty$festa$ff }
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
jmp breturn
|
||||
//SEG11 main::@return
|
||||
breturn:
|
||||
//SEG12 [6] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement asm { lda#$55ldy#$aajsr$b391 } always clobbers reg byte a reg byte y
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 45 combination
|
||||
Uplifting [] best 45 combination
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
ASSEMBLER
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
b1_from_bbegin:
|
||||
//SEG4 @1
|
||||
b1:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
|
||||
bend_from_b1:
|
||||
//SEG7 @end
|
||||
bend:
|
||||
//SEG8 main
|
||||
main: {
|
||||
//SEG9 asm { lda#$55ldy#$aajsr$b391 }
|
||||
lda #$55
|
||||
ldy #$aa
|
||||
jsr $b391
|
||||
//SEG10 asm { jsr$b1aasty$festa$ff }
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
//SEG11 main::@return
|
||||
breturn:
|
||||
//SEG12 [6] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
}
|
||||
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b1_from_bbegin:
|
||||
Removing instruction bend_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
ASSEMBLER
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
//SEG4 @1
|
||||
b1:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
|
||||
//SEG7 @end
|
||||
bend:
|
||||
//SEG8 main
|
||||
main: {
|
||||
//SEG9 asm { lda#$55ldy#$aajsr$b391 }
|
||||
lda #$55
|
||||
ldy #$aa
|
||||
jsr $b391
|
||||
//SEG10 asm { jsr$b1aasty$festa$ff }
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
//SEG11 main::@return
|
||||
breturn:
|
||||
//SEG12 [6] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
}
|
||||
|
||||
Removing instruction b1:
|
||||
Removing instruction bend:
|
||||
Removing instruction breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
ASSEMBLER
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
//SEG4 @1
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
|
||||
//SEG7 @end
|
||||
//SEG8 main
|
||||
main: {
|
||||
//SEG9 asm { lda#$55ldy#$aajsr$b391 }
|
||||
lda #$55
|
||||
ldy #$aa
|
||||
jsr $b391
|
||||
//SEG10 asm { jsr$b1aasty$festa$ff }
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
//SEG11 main::@return
|
||||
//SEG12 [6] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
}
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
|
||||
FINAL CODE
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
//SEG4 @1
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
|
||||
//SEG7 @end
|
||||
//SEG8 main
|
||||
main: {
|
||||
//SEG9 asm { lda#$55ldy#$aajsr$b391 }
|
||||
lda #$55
|
||||
ldy #$aa
|
||||
jsr $b391
|
||||
//SEG10 asm { jsr$b1aasty$festa$ff }
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
//SEG11 main::@return
|
||||
//SEG12 [6] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
}
|
||||
|
@ -1,6 +0,0 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
@ -5,7 +5,7 @@
|
||||
jsr main
|
||||
main: {
|
||||
.label w = 3
|
||||
.label sc = 5
|
||||
.label sc = 3
|
||||
.label l = 2
|
||||
ldx #0
|
||||
b1:
|
||||
@ -16,9 +16,6 @@ main: {
|
||||
sta w+1
|
||||
lda l
|
||||
sta w
|
||||
sta sc
|
||||
lda w+1
|
||||
sta sc+1
|
||||
ldy #0
|
||||
lda #'*'
|
||||
sta (sc),y
|
||||
|
@ -1148,9 +1148,9 @@ Uplifting [main] best 6693 combination zp ZP_BYTE:3 [ main::l#2 main::l#1 ] reg
|
||||
Uplifting [] best 6693 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::l#2 main::l#1 ]
|
||||
Uplifting [main] best 6693 combination zp ZP_BYTE:3 [ main::l#2 main::l#1 ]
|
||||
Coalescing zero page register [ zp ZP_WORD:5 [ main::w#0 ] ] with [ zp ZP_WORD:7 [ main::sc#0 ] ]
|
||||
Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ main::l#2 main::l#1 ]
|
||||
Allocated (was zp ZP_WORD:5) zp ZP_WORD:3 [ main::w#0 ]
|
||||
Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ main::sc#0 ]
|
||||
Allocated (was zp ZP_WORD:5) zp ZP_WORD:3 [ main::w#0 main::sc#0 ]
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
@ -1182,7 +1182,7 @@ bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
.label w = 3
|
||||
.label sc = 5
|
||||
.label sc = 3
|
||||
.label l = 2
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
@ -1211,94 +1211,7 @@ main: {
|
||||
sta w+1
|
||||
lda l
|
||||
sta w
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz2
|
||||
lda w
|
||||
sta sc
|
||||
lda w+1
|
||||
sta sc+1
|
||||
//SEG23 [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
||||
ldy #0
|
||||
lda #'*'
|
||||
sta (sc),y
|
||||
//SEG24 [11] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1
|
||||
inc l
|
||||
//SEG25 [12] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1
|
||||
lda l
|
||||
cmp #8
|
||||
bne b2_from_b2
|
||||
//SEG26 main::@3
|
||||
b3:
|
||||
//SEG27 [13] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG28 [14] if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuxx_neq_vbuc1_then_la1
|
||||
cpx #2
|
||||
bne b1_from_b3
|
||||
//SEG29 main::@return
|
||||
breturn:
|
||||
//SEG30 [15] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
his: .byte >SCREEN, >SCREEN+$100
|
||||
}
|
||||
|
||||
Removing instruction lda w
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
ASSEMBLER
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
.const SCREEN = $400
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
b1_from_bbegin:
|
||||
//SEG4 @1
|
||||
b1:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @1 to main [phi:@1->main]
|
||||
main_from_b1:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @1 to @end [phi:@1->@end]
|
||||
bend_from_b1:
|
||||
//SEG8 @end
|
||||
bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
.label w = 3
|
||||
.label sc = 5
|
||||
.label l = 2
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
jmp b1
|
||||
//SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1]
|
||||
b1_from_b3:
|
||||
//SEG13 [5] phi (byte) main::h#4 = (byte) main::h#1 [phi:main::@3->main::@1#0] -- register_copy
|
||||
//SEG14 main::@1
|
||||
b1:
|
||||
//SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
b2_from_b1:
|
||||
//SEG16 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 4 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1
|
||||
lda #4
|
||||
sta l
|
||||
jmp b2
|
||||
//SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2]
|
||||
b2_from_b2:
|
||||
//SEG18 [6] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@2->main::@2#0] -- register_copy
|
||||
//SEG19 main::@2
|
||||
b2:
|
||||
//SEG20 [7] (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 [ main::h#4 main::l#2 main::$3 ] ( main:2 [ main::h#4 main::l#2 main::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuxx
|
||||
lda his,x
|
||||
//SEG21 [8] (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) -- vwuz1=vbuaa_word_vbuz2
|
||||
sta w+1
|
||||
lda l
|
||||
sta w
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz2
|
||||
sta sc
|
||||
lda w+1
|
||||
sta sc+1
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
|
||||
//SEG23 [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
||||
ldy #0
|
||||
lda #'*'
|
||||
@ -1353,7 +1266,7 @@ bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
.label w = 3
|
||||
.label sc = 5
|
||||
.label sc = 3
|
||||
.label l = 2
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
@ -1379,10 +1292,7 @@ main: {
|
||||
sta w+1
|
||||
lda l
|
||||
sta w
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz2
|
||||
sta sc
|
||||
lda w+1
|
||||
sta sc+1
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
|
||||
//SEG23 [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
||||
ldy #0
|
||||
lda #'*'
|
||||
@ -1431,7 +1341,7 @@ ASSEMBLER
|
||||
//SEG9 main
|
||||
main: {
|
||||
.label w = 3
|
||||
.label sc = 5
|
||||
.label sc = 3
|
||||
.label l = 2
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||
@ -1456,10 +1366,7 @@ main: {
|
||||
sta w+1
|
||||
lda l
|
||||
sta w
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz2
|
||||
sta sc
|
||||
lda w+1
|
||||
sta sc+1
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
|
||||
//SEG23 [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
||||
ldy #0
|
||||
lda #'*'
|
||||
@ -1503,7 +1410,7 @@ ASSEMBLER
|
||||
//SEG9 main
|
||||
main: {
|
||||
.label w = 3
|
||||
.label sc = 5
|
||||
.label sc = 3
|
||||
.label l = 2
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||
@ -1526,10 +1433,7 @@ main: {
|
||||
sta w+1
|
||||
lda l
|
||||
sta w
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz2
|
||||
sta sc
|
||||
lda w+1
|
||||
sta sc+1
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
|
||||
//SEG23 [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
||||
ldy #0
|
||||
lda #'*'
|
||||
@ -1573,15 +1477,14 @@ FINAL SYMBOL TABLE
|
||||
(byte) main::l#1 l zp ZP_BYTE:2 151.5
|
||||
(byte) main::l#2 l zp ZP_BYTE:2 60.599999999999994
|
||||
(byte*) main::sc
|
||||
(byte*) main::sc#0 sc zp ZP_WORD:5 202.0
|
||||
(byte*) main::sc#0 sc zp ZP_WORD:3 202.0
|
||||
(word) main::w
|
||||
(word) main::w#0 w zp ZP_WORD:3 202.0
|
||||
|
||||
reg byte x [ main::h#4 main::h#1 ]
|
||||
zp ZP_BYTE:2 [ main::l#2 main::l#1 ]
|
||||
reg byte a [ main::$3 ]
|
||||
zp ZP_WORD:3 [ main::w#0 ]
|
||||
zp ZP_WORD:5 [ main::sc#0 ]
|
||||
zp ZP_WORD:3 [ main::w#0 main::sc#0 ]
|
||||
|
||||
FINAL CODE
|
||||
//SEG0 Basic Upstart
|
||||
@ -1601,7 +1504,7 @@ FINAL CODE
|
||||
//SEG9 main
|
||||
main: {
|
||||
.label w = 3
|
||||
.label sc = 5
|
||||
.label sc = 3
|
||||
.label l = 2
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||
@ -1624,10 +1527,7 @@ main: {
|
||||
sta w+1
|
||||
lda l
|
||||
sta w
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz2
|
||||
sta sc
|
||||
lda w+1
|
||||
sta sc+1
|
||||
//SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
|
||||
//SEG23 [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
|
||||
ldy #0
|
||||
lda #'*'
|
||||
|
@ -18,12 +18,11 @@
|
||||
(byte) main::l#1 l zp ZP_BYTE:2 151.5
|
||||
(byte) main::l#2 l zp ZP_BYTE:2 60.599999999999994
|
||||
(byte*) main::sc
|
||||
(byte*) main::sc#0 sc zp ZP_WORD:5 202.0
|
||||
(byte*) main::sc#0 sc zp ZP_WORD:3 202.0
|
||||
(word) main::w
|
||||
(word) main::w#0 w zp ZP_WORD:3 202.0
|
||||
|
||||
reg byte x [ main::h#4 main::h#1 ]
|
||||
zp ZP_BYTE:2 [ main::l#2 main::l#1 ]
|
||||
reg byte a [ main::$3 ]
|
||||
zp ZP_WORD:3 [ main::w#0 ]
|
||||
zp ZP_WORD:5 [ main::sc#0 ]
|
||||
zp ZP_WORD:3 [ main::w#0 main::sc#0 ]
|
||||
|
@ -49,8 +49,8 @@ scroll_soft: {
|
||||
rts
|
||||
}
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
lsr current_bit
|
||||
lda current_bit
|
||||
@ -65,12 +65,12 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
lda #<CHARGEN
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
lda #$80
|
||||
sta current_bit
|
||||
|
@ -8669,12 +8669,12 @@ Uplifting [scroll_hard] best 9094 combination reg byte a [ scroll_hard::$31 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ]
|
||||
Uplifting [] best 9094 combination zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ]
|
||||
Coalescing zero page register [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] ] with [ zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:18 [ scroll_bit::c#0 ] ] with [ zp ZP_WORD:20 [ scroll_bit::$4 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 ] ] with [ zp ZP_WORD:18 [ scroll_bit::c#0 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 scroll_bit::c#0 ] ] with [ zp ZP_WORD:20 [ scroll_bit::$4 ] ]
|
||||
Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ]
|
||||
Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 ]
|
||||
Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 scroll_bit::c#0 scroll_bit::$4 ]
|
||||
Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ scroll_bit::sc#2 scroll_bit::sc#1 ]
|
||||
Allocated (was zp ZP_WORD:11) zp ZP_WORD:7 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ]
|
||||
Allocated (was zp ZP_WORD:18) zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ]
|
||||
Removing instruction jmp b6
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b2
|
||||
@ -8832,8 +8832,8 @@ scroll_soft: {
|
||||
}
|
||||
//SEG55 scroll_bit
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
//SEG56 [21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- vbuz1=vbuz1_ror_1
|
||||
lsr current_bit
|
||||
@ -8863,13 +8863,13 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda #<CHARGEN
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||
b1_from_b8:
|
||||
@ -9253,8 +9253,8 @@ scroll_soft: {
|
||||
}
|
||||
//SEG55 scroll_bit
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
//SEG56 [21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- vbuz1=vbuz1_ror_1
|
||||
lsr current_bit
|
||||
@ -9283,13 +9283,13 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda #<CHARGEN
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||
b1_from_b8:
|
||||
@ -9656,8 +9656,8 @@ scroll_soft: {
|
||||
}
|
||||
//SEG55 scroll_bit
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
//SEG56 [21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- vbuz1=vbuz1_ror_1
|
||||
lsr current_bit
|
||||
@ -9684,13 +9684,13 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda #<CHARGEN
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||
//SEG68 [30] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy
|
||||
@ -10020,8 +10020,8 @@ scroll_soft: {
|
||||
}
|
||||
//SEG55 scroll_bit
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
//SEG56 [21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- vbuz1=vbuz1_ror_1
|
||||
lsr current_bit
|
||||
@ -10048,13 +10048,13 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda #<CHARGEN
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||
//SEG68 [30] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy
|
||||
@ -10383,8 +10383,8 @@ scroll_soft: {
|
||||
}
|
||||
//SEG55 scroll_bit
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
//SEG56 [21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- vbuz1=vbuz1_ror_1
|
||||
lsr current_bit
|
||||
@ -10411,13 +10411,13 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda #<CHARGEN
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||
//SEG68 [30] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy
|
||||
@ -10747,8 +10747,8 @@ scroll_soft: {
|
||||
}
|
||||
//SEG55 scroll_bit
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
//SEG56 [21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- vbuz1=vbuz1_ror_1
|
||||
lsr current_bit
|
||||
@ -10775,13 +10775,13 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda #<CHARGEN
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||
//SEG68 [30] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy
|
||||
@ -11114,8 +11114,8 @@ scroll_soft: {
|
||||
}
|
||||
//SEG55 scroll_bit
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
//SEG56 [21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- vbuz1=vbuz1_ror_1
|
||||
lsr current_bit
|
||||
@ -11142,13 +11142,13 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda #<CHARGEN
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||
//SEG68 [30] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy
|
||||
@ -11469,8 +11469,8 @@ scroll_soft: {
|
||||
}
|
||||
//SEG55 scroll_bit
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
//SEG56 [21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- vbuz1=vbuz1_ror_1
|
||||
lsr current_bit
|
||||
@ -11497,13 +11497,13 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda #<CHARGEN
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||
//SEG68 [30] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy
|
||||
@ -11823,8 +11823,8 @@ scroll_soft: {
|
||||
}
|
||||
//SEG55 scroll_bit
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
//SEG56 [21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- vbuz1=vbuz1_ror_1
|
||||
lsr current_bit
|
||||
@ -11851,13 +11851,13 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda #<CHARGEN
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||
//SEG68 [30] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy
|
||||
@ -12133,7 +12133,7 @@ FINAL SYMBOL TABLE
|
||||
(void()) scroll_bit()
|
||||
(byte~) scroll_bit::$10 reg byte a 22.0
|
||||
(byte~) scroll_bit::$3 reg byte a 4.0
|
||||
(word~) scroll_bit::$4 $4 zp ZP_WORD:9 4.0
|
||||
(word~) scroll_bit::$4 $4 zp ZP_WORD:3 4.0
|
||||
(label) scroll_bit::@1
|
||||
(label) scroll_bit::@2
|
||||
(label) scroll_bit::@3
|
||||
@ -12148,7 +12148,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) scroll_bit::bits
|
||||
(byte) scroll_bit::bits#0 reg byte a 22.0
|
||||
(word) scroll_bit::c
|
||||
(word) scroll_bit::c#0 c zp ZP_WORD:9 4.0
|
||||
(word) scroll_bit::c#0 c zp ZP_WORD:3 4.0
|
||||
(byte) scroll_bit::r
|
||||
(byte) scroll_bit::r#1 reg byte x 16.5
|
||||
(byte) scroll_bit::r#2 reg byte x 4.125
|
||||
@ -12192,7 +12192,7 @@ FINAL SYMBOL TABLE
|
||||
|
||||
reg byte x [ scroll#18 scroll#10 scroll#3 ]
|
||||
zp ZP_BYTE:2 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ]
|
||||
zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 ]
|
||||
zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 scroll_bit::c#0 scroll_bit::$4 ]
|
||||
reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ]
|
||||
zp ZP_WORD:5 [ scroll_bit::sc#2 scroll_bit::sc#1 ]
|
||||
reg byte a [ scroll_bit::b#2 ]
|
||||
@ -12201,7 +12201,6 @@ zp ZP_WORD:7 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ]
|
||||
reg byte a [ next_char::return#1 next_char::c#0 next_char::c#1 ]
|
||||
reg byte a [ next_char::return#0 ]
|
||||
reg byte a [ scroll_bit::$3 ]
|
||||
zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ]
|
||||
reg byte a [ scroll_bit::bits#0 ]
|
||||
reg byte a [ scroll_bit::$10 ]
|
||||
reg byte a [ scroll_hard::$17 ]
|
||||
@ -12321,8 +12320,8 @@ scroll_soft: {
|
||||
}
|
||||
//SEG55 scroll_bit
|
||||
scroll_bit: {
|
||||
.label _4 = 9
|
||||
.label c = 9
|
||||
.label _4 = 3
|
||||
.label c = 3
|
||||
.label sc = 5
|
||||
//SEG56 [21] (byte) current_bit#5 ← (byte) current_bit#29 >> (byte/signed byte/word/signed word) 1 [ nxt#31 current_chargen#27 current_bit#5 ] ( main:2::scroll_soft:10::scroll_bit:17 [ nxt#31 current_chargen#27 current_bit#5 ] ) -- vbuz1=vbuz1_ror_1
|
||||
lsr current_bit
|
||||
@ -12349,13 +12348,13 @@ scroll_bit: {
|
||||
rol _4+1
|
||||
asl _4
|
||||
rol _4+1
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz2
|
||||
lda #<CHARGEN
|
||||
//SEG66 [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) -- pbuz1=pbuc1_plus_vwuz1
|
||||
lda current_chargen
|
||||
clc
|
||||
adc _4
|
||||
adc #<CHARGEN
|
||||
sta current_chargen
|
||||
lda #>CHARGEN
|
||||
adc _4+1
|
||||
lda current_chargen+1
|
||||
adc #>CHARGEN
|
||||
sta current_chargen+1
|
||||
//SEG67 [30] phi from scroll_bit::@8 to scroll_bit::@1 [phi:scroll_bit::@8->scroll_bit::@1]
|
||||
//SEG68 [30] phi (byte*) nxt#36 = (byte*) nxt#19 [phi:scroll_bit::@8->scroll_bit::@1#0] -- register_copy
|
||||
|
@ -63,7 +63,7 @@
|
||||
(void()) scroll_bit()
|
||||
(byte~) scroll_bit::$10 reg byte a 22.0
|
||||
(byte~) scroll_bit::$3 reg byte a 4.0
|
||||
(word~) scroll_bit::$4 $4 zp ZP_WORD:9 4.0
|
||||
(word~) scroll_bit::$4 $4 zp ZP_WORD:3 4.0
|
||||
(label) scroll_bit::@1
|
||||
(label) scroll_bit::@2
|
||||
(label) scroll_bit::@3
|
||||
@ -78,7 +78,7 @@
|
||||
(byte) scroll_bit::bits
|
||||
(byte) scroll_bit::bits#0 reg byte a 22.0
|
||||
(word) scroll_bit::c
|
||||
(word) scroll_bit::c#0 c zp ZP_WORD:9 4.0
|
||||
(word) scroll_bit::c#0 c zp ZP_WORD:3 4.0
|
||||
(byte) scroll_bit::r
|
||||
(byte) scroll_bit::r#1 reg byte x 16.5
|
||||
(byte) scroll_bit::r#2 reg byte x 4.125
|
||||
@ -122,7 +122,7 @@
|
||||
|
||||
reg byte x [ scroll#18 scroll#10 scroll#3 ]
|
||||
zp ZP_BYTE:2 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ]
|
||||
zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 ]
|
||||
zp ZP_WORD:3 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 fillscreen::cursor#2 fillscreen::cursor#1 scroll_bit::c#0 scroll_bit::$4 ]
|
||||
reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ]
|
||||
zp ZP_WORD:5 [ scroll_bit::sc#2 scroll_bit::sc#1 ]
|
||||
reg byte a [ scroll_bit::b#2 ]
|
||||
@ -131,7 +131,6 @@ zp ZP_WORD:7 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ]
|
||||
reg byte a [ next_char::return#1 next_char::c#0 next_char::c#1 ]
|
||||
reg byte a [ next_char::return#0 ]
|
||||
reg byte a [ scroll_bit::$3 ]
|
||||
zp ZP_WORD:9 [ scroll_bit::c#0 scroll_bit::$4 ]
|
||||
reg byte a [ scroll_bit::bits#0 ]
|
||||
reg byte a [ scroll_bit::$10 ]
|
||||
reg byte a [ scroll_hard::$17 ]
|
||||
|
@ -50,10 +50,10 @@ main: {
|
||||
jmp b2
|
||||
}
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
sec
|
||||
@ -171,7 +171,7 @@ anim: {
|
||||
rts
|
||||
}
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
lda #0
|
||||
|
@ -4330,10 +4330,11 @@ Uplifting [init] best 8724 combination zp ZP_WORD:12 [ init::sc#2 init::sc#1 ] r
|
||||
Uplifting [] best 8724 combination zp ZP_WORD:6 [ yvel#9 yvel#12 yvel#10 yvel#22 ] zp ZP_WORD:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ] zp ZP_WORD:8 [ xpos#9 xpos#12 xpos#10 ] zp ZP_WORD:10 [ ypos#10 ypos#13 ypos#11 ] zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 ]
|
||||
Uplifting [anim] best 8706 combination zp ZP_WORD:15 [ anim::$10 ] zp ZP_WORD:19 [ anim::$12 ] reg byte a [ anim::$14 ] reg byte a [ anim::$15 ] reg byte a [ anim::$16 ] zp ZP_WORD:21 [ anim::sprite_y#0 ] zp ZP_WORD:17 [ anim::sprite_x#0 ]
|
||||
Uplifting [main] best 8706 combination
|
||||
Coalescing zero page register [ zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 ] ] with [ zp ZP_WORD:12 [ init::sc#2 init::sc#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:15 [ anim::$10 ] ] with [ zp ZP_WORD:17 [ anim::sprite_x#0 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:19 [ anim::$12 ] ] with [ zp ZP_WORD:21 [ anim::sprite_y#0 ] ]
|
||||
Allocated (was zp ZP_WORD:15) zp ZP_WORD:14 [ anim::$10 anim::sprite_x#0 ]
|
||||
Allocated (was zp ZP_WORD:19) zp ZP_WORD:16 [ anim::$12 anim::sprite_y#0 ]
|
||||
Allocated (was zp ZP_WORD:15) zp ZP_WORD:12 [ anim::$10 anim::sprite_x#0 ]
|
||||
Allocated (was zp ZP_WORD:19) zp ZP_WORD:14 [ anim::$12 anim::sprite_y#0 ]
|
||||
Removing instruction jmp b3
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b2
|
||||
@ -4456,10 +4457,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1_from_anim
|
||||
@ -4632,7 +4633,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -4820,10 +4821,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1_from_anim
|
||||
@ -4993,7 +4994,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -5181,10 +5182,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -5351,7 +5352,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -5527,10 +5528,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -5693,7 +5694,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -5855,10 +5856,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -6021,7 +6022,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -6181,10 +6182,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -6347,7 +6348,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -6507,10 +6508,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -6673,7 +6674,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -6835,10 +6836,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -7000,7 +7001,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -7156,10 +7157,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -7321,7 +7322,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -7477,10 +7478,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -7641,7 +7642,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -7797,10 +7798,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -7960,7 +7961,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -8115,10 +8116,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -8278,7 +8279,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
@ -8373,8 +8374,8 @@ FINAL SYMBOL TABLE
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word) 1
|
||||
(void()) anim()
|
||||
(signed word~) anim::$10 $10 zp ZP_WORD:14 4.0
|
||||
(signed word~) anim::$12 $12 zp ZP_WORD:16 4.0
|
||||
(signed word~) anim::$10 $10 zp ZP_WORD:12 4.0
|
||||
(signed word~) anim::$12 $12 zp ZP_WORD:14 4.0
|
||||
(byte~) anim::$14 reg byte a 4.0
|
||||
(byte~) anim::$15 reg byte a 4.0
|
||||
(byte~) anim::$16 reg byte a 4.0
|
||||
@ -8384,9 +8385,9 @@ FINAL SYMBOL TABLE
|
||||
(label) anim::@5
|
||||
(label) anim::@return
|
||||
(signed word) anim::sprite_x
|
||||
(signed word) anim::sprite_x#0 sprite_x zp ZP_WORD:14 0.8571428571428571
|
||||
(signed word) anim::sprite_x#0 sprite_x zp ZP_WORD:12 0.8571428571428571
|
||||
(signed word) anim::sprite_y
|
||||
(signed word) anim::sprite_y#0 sprite_y zp ZP_WORD:16 1.3333333333333333
|
||||
(signed word) anim::sprite_y#0 sprite_y zp ZP_WORD:14 1.3333333333333333
|
||||
(signed word) g
|
||||
(const signed word) g#0 g = -(byte/signed byte/word/signed word) 5
|
||||
(void()) init()
|
||||
@ -8397,8 +8398,8 @@ FINAL SYMBOL TABLE
|
||||
(byte) init::i#1 reg byte x 16.5
|
||||
(byte) init::i#2 reg byte x 16.5
|
||||
(byte*) init::sc
|
||||
(byte*) init::sc#1 sc zp ZP_WORD:12 16.5
|
||||
(byte*) init::sc#2 sc zp ZP_WORD:12 16.5
|
||||
(byte*) init::sc#1 sc zp ZP_WORD:2 16.5
|
||||
(byte*) init::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(void()) main()
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
@ -8427,15 +8428,14 @@ FINAL SYMBOL TABLE
|
||||
(signed word) yvel_init#13 yvel_init zp ZP_WORD:4 3.0
|
||||
(signed word) yvel_init#3 yvel_init zp ZP_WORD:4 2.0
|
||||
|
||||
zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 ]
|
||||
zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 init::sc#2 init::sc#1 ]
|
||||
zp ZP_WORD:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ]
|
||||
zp ZP_WORD:6 [ yvel#9 yvel#12 yvel#10 yvel#22 ]
|
||||
zp ZP_WORD:8 [ xpos#9 xpos#12 xpos#10 ]
|
||||
zp ZP_WORD:10 [ ypos#10 ypos#13 ypos#11 ]
|
||||
zp ZP_WORD:12 [ init::sc#2 init::sc#1 ]
|
||||
reg byte x [ init::i#2 init::i#1 ]
|
||||
zp ZP_WORD:14 [ anim::$10 anim::sprite_x#0 ]
|
||||
zp ZP_WORD:16 [ anim::$12 anim::sprite_y#0 ]
|
||||
zp ZP_WORD:12 [ anim::$10 anim::sprite_x#0 ]
|
||||
zp ZP_WORD:14 [ anim::$12 anim::sprite_y#0 ]
|
||||
reg byte a [ anim::$14 ]
|
||||
reg byte a [ anim::$15 ]
|
||||
reg byte a [ anim::$16 ]
|
||||
@ -8527,10 +8527,10 @@ main: {
|
||||
}
|
||||
//SEG33 anim
|
||||
anim: {
|
||||
.label _10 = $e
|
||||
.label _12 = $10
|
||||
.label sprite_x = $e
|
||||
.label sprite_y = $10
|
||||
.label _10 = $c
|
||||
.label _12 = $e
|
||||
.label sprite_x = $c
|
||||
.label sprite_y = $e
|
||||
//SEG34 [12] if((signed word) ypos#13>=(byte/signed byte/word/signed word) 0) goto anim::@1 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ( main:2::anim:9 [ yvel#12 xpos#12 ypos#13 xvel#12 yvel_init#13 ] ) -- vwsz1_ge_0_then_la1
|
||||
lda ypos+1
|
||||
bpl b1
|
||||
@ -8690,7 +8690,7 @@ anim: {
|
||||
}
|
||||
//SEG75 init
|
||||
init: {
|
||||
.label sc = $c
|
||||
.label sc = 2
|
||||
//SEG76 [34] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2::init:5 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #1
|
||||
sta SPRITES_ENABLE
|
||||
|
@ -26,8 +26,8 @@
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word) 1
|
||||
(void()) anim()
|
||||
(signed word~) anim::$10 $10 zp ZP_WORD:14 4.0
|
||||
(signed word~) anim::$12 $12 zp ZP_WORD:16 4.0
|
||||
(signed word~) anim::$10 $10 zp ZP_WORD:12 4.0
|
||||
(signed word~) anim::$12 $12 zp ZP_WORD:14 4.0
|
||||
(byte~) anim::$14 reg byte a 4.0
|
||||
(byte~) anim::$15 reg byte a 4.0
|
||||
(byte~) anim::$16 reg byte a 4.0
|
||||
@ -37,9 +37,9 @@
|
||||
(label) anim::@5
|
||||
(label) anim::@return
|
||||
(signed word) anim::sprite_x
|
||||
(signed word) anim::sprite_x#0 sprite_x zp ZP_WORD:14 0.8571428571428571
|
||||
(signed word) anim::sprite_x#0 sprite_x zp ZP_WORD:12 0.8571428571428571
|
||||
(signed word) anim::sprite_y
|
||||
(signed word) anim::sprite_y#0 sprite_y zp ZP_WORD:16 1.3333333333333333
|
||||
(signed word) anim::sprite_y#0 sprite_y zp ZP_WORD:14 1.3333333333333333
|
||||
(signed word) g
|
||||
(const signed word) g#0 g = -(byte/signed byte/word/signed word) 5
|
||||
(void()) init()
|
||||
@ -50,8 +50,8 @@
|
||||
(byte) init::i#1 reg byte x 16.5
|
||||
(byte) init::i#2 reg byte x 16.5
|
||||
(byte*) init::sc
|
||||
(byte*) init::sc#1 sc zp ZP_WORD:12 16.5
|
||||
(byte*) init::sc#2 sc zp ZP_WORD:12 16.5
|
||||
(byte*) init::sc#1 sc zp ZP_WORD:2 16.5
|
||||
(byte*) init::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(void()) main()
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
@ -80,15 +80,14 @@
|
||||
(signed word) yvel_init#13 yvel_init zp ZP_WORD:4 3.0
|
||||
(signed word) yvel_init#3 yvel_init zp ZP_WORD:4 2.0
|
||||
|
||||
zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 ]
|
||||
zp ZP_WORD:2 [ xvel#12 xvel#10 xvel#14 init::sc#2 init::sc#1 ]
|
||||
zp ZP_WORD:4 [ yvel_init#13 yvel_init#11 yvel#4 yvel_init#3 ]
|
||||
zp ZP_WORD:6 [ yvel#9 yvel#12 yvel#10 yvel#22 ]
|
||||
zp ZP_WORD:8 [ xpos#9 xpos#12 xpos#10 ]
|
||||
zp ZP_WORD:10 [ ypos#10 ypos#13 ypos#11 ]
|
||||
zp ZP_WORD:12 [ init::sc#2 init::sc#1 ]
|
||||
reg byte x [ init::i#2 init::i#1 ]
|
||||
zp ZP_WORD:14 [ anim::$10 anim::sprite_x#0 ]
|
||||
zp ZP_WORD:16 [ anim::$12 anim::sprite_y#0 ]
|
||||
zp ZP_WORD:12 [ anim::$10 anim::sprite_x#0 ]
|
||||
zp ZP_WORD:14 [ anim::$12 anim::sprite_y#0 ]
|
||||
reg byte a [ anim::$14 ]
|
||||
reg byte a [ anim::$15 ]
|
||||
reg byte a [ anim::$16 ]
|
||||
|
@ -96,7 +96,7 @@ print_ln: {
|
||||
rts
|
||||
}
|
||||
print_word: {
|
||||
.label w = 9
|
||||
.label w = 7
|
||||
lda w+1
|
||||
tax
|
||||
jsr print_byte
|
||||
@ -132,15 +132,12 @@ print_char: {
|
||||
rts
|
||||
}
|
||||
getFAC: {
|
||||
.label w = 9
|
||||
.label return = 9
|
||||
.label return = 7
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
lda memLo
|
||||
sta w
|
||||
lda #0
|
||||
sta w+1
|
||||
sta return
|
||||
lda memHi
|
||||
sta return+1
|
||||
rts
|
||||
@ -188,11 +185,7 @@ divMEMbyFAC: {
|
||||
rts
|
||||
}
|
||||
setFAC: {
|
||||
.label w = 9
|
||||
lda w
|
||||
sta prepareMEM.mem
|
||||
lda w+1
|
||||
sta prepareMEM.mem+1
|
||||
.label w = 7
|
||||
jsr prepareMEM
|
||||
ldy $fe
|
||||
lda $ff
|
||||
|
@ -125,84 +125,83 @@ print_char::@return: scope:[print_char] from print_char
|
||||
to:@return
|
||||
getFAC: scope:[getFAC] from main::@13
|
||||
asm { jsr$b1aasty$festa$ff }
|
||||
[61] (word) getFAC::w#1 ← (byte/signed byte/word/signed word) 0 lo= *((const byte*) memLo#0) [ getFAC::w#1 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::w#1 ] )
|
||||
[62] (word) getFAC::return#0 ← (word) getFAC::w#1 hi= *((const byte*) memHi#0) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
|
||||
[61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
|
||||
to:getFAC::@return
|
||||
getFAC::@return: scope:[getFAC] from getFAC
|
||||
[63] return [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
|
||||
[62] return [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] )
|
||||
to:@return
|
||||
addMEMtoFAC: scope:[addMEMtoFAC] from main::@12
|
||||
[64] phi() [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[65] call prepareMEM param-assignment [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[63] phi() [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[64] call prepareMEM param-assignment [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:addMEMtoFAC::@1
|
||||
addMEMtoFAC::@1: scope:[addMEMtoFAC] from addMEMtoFAC
|
||||
asm { lda$feldy$ffjsr$b867 }
|
||||
to:addMEMtoFAC::@return
|
||||
addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1
|
||||
[67] return [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[66] return [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC
|
||||
[68] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(const byte[]) main::f_127#0 divMEMbyFAC/(const byte[]) main::f_i#0 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:87 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
|
||||
[69] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:5::prepareMEM:87 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] )
|
||||
[70] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:87 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
|
||||
[71] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:5::prepareMEM:87 [ prepareMEM::$1 ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ prepareMEM::$1 ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] )
|
||||
[72] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:5::prepareMEM:87 [ ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[67] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(const byte[]) main::f_127#0 divMEMbyFAC/(const byte[]) main::f_i#0 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
|
||||
[68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] )
|
||||
[69] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
|
||||
[70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::$1 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::$1 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] )
|
||||
[71] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:5::prepareMEM:86 [ ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:prepareMEM::@return
|
||||
prepareMEM::@return: scope:[prepareMEM] from prepareMEM
|
||||
[73] return [ ] ( main:2::addMEMtoFAC:26::prepareMEM:65 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:14::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24::prepareMEM:76 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::divMEMbyFAC:20::prepareMEM:82 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:5::prepareMEM:87 [ ] main:2::setFAC:12::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18::prepareMEM:87 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setMEMtoFAC:9::prepareMEM:92 [ ] main:2::setMEMtoFAC:16::prepareMEM:92 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[72] return [ ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:5::prepareMEM:86 [ ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
mulFACbyMEM: scope:[mulFACbyMEM] from main::@11 main::@6
|
||||
[74] (byte*) mulFACbyMEM::mem#2 ← phi( main::@11/(const byte[]) main::f_127#0 main::@6/(const byte*) main::f_2pi#0 ) [ mulFACbyMEM::mem#2 ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 mulFACbyMEM::mem#2 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 mulFACbyMEM::mem#2 ] )
|
||||
[75] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] )
|
||||
[76] call prepareMEM param-assignment [ ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[73] (byte*) mulFACbyMEM::mem#2 ← phi( main::@11/(const byte[]) main::f_127#0 main::@6/(const byte*) main::f_2pi#0 ) [ mulFACbyMEM::mem#2 ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 mulFACbyMEM::mem#2 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 mulFACbyMEM::mem#2 ] )
|
||||
[74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] )
|
||||
[75] call prepareMEM param-assignment [ ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:mulFACbyMEM::@1
|
||||
mulFACbyMEM::@1: scope:[mulFACbyMEM] from mulFACbyMEM
|
||||
asm { lda$feldy$ffjsr$ba28 }
|
||||
to:mulFACbyMEM::@return
|
||||
mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM::@1
|
||||
[78] return [ ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[77] return [ ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
sinFAC: scope:[sinFAC] from main::@10
|
||||
asm { jsr$e26b }
|
||||
to:sinFAC::@return
|
||||
sinFAC::@return: scope:[sinFAC] from sinFAC
|
||||
[80] return [ ] ( main:2::sinFAC:22 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[79] return [ ] ( main:2::sinFAC:22 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
divMEMbyFAC: scope:[divMEMbyFAC] from main::@9
|
||||
[81] phi() [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[82] call prepareMEM param-assignment [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[80] phi() [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[81] call prepareMEM param-assignment [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:divMEMbyFAC::@1
|
||||
divMEMbyFAC::@1: scope:[divMEMbyFAC] from divMEMbyFAC
|
||||
asm { lda$feldy$ffjsr$bb0f }
|
||||
to:divMEMbyFAC::@return
|
||||
divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1
|
||||
[84] return [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[83] return [ ] ( main:2::divMEMbyFAC:20 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
setFAC: scope:[setFAC] from main main::@1 main::@8
|
||||
[85] (word) setFAC::w#3 ← phi( main/(word/signed word) 1275 main::@1/(word) setFAC::w#1 main::@8/(byte/signed byte/word/signed word) 25 ) [ setFAC::w#3 ] ( main:2::setFAC:5 [ setFAC::w#3 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] )
|
||||
[86] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] )
|
||||
[87] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[84] (word) setFAC::w#3 ← phi( main/(word/signed word) 1275 main::@1/(word) setFAC::w#1 main::@8/(byte/signed byte/word/signed word) 25 ) [ setFAC::w#3 ] ( main:2::setFAC:5 [ setFAC::w#3 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] )
|
||||
[85] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] )
|
||||
[86] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:setFAC::@1
|
||||
setFAC::@1: scope:[setFAC] from setFAC
|
||||
asm { ldy$felda$ffjsr$b391 }
|
||||
to:setFAC::@return
|
||||
setFAC::@return: scope:[setFAC] from setFAC::@1
|
||||
[89] return [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[88] return [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
setMEMtoFAC: scope:[setMEMtoFAC] from main::@4 main::@7
|
||||
[90] (byte*) setMEMtoFAC::mem#2 ← phi( main::@4/(const byte[]) main::f_127#0 main::@7/(const byte[]) main::f_i#0 ) [ setMEMtoFAC::mem#2 ] ( main:2::setMEMtoFAC:9 [ setMEMtoFAC::mem#2 ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 setMEMtoFAC::mem#2 ] )
|
||||
[91] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 [ prepareMEM::mem#1 ] ( main:2::setMEMtoFAC:9 [ prepareMEM::mem#1 ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#1 ] )
|
||||
[92] call prepareMEM param-assignment [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[89] (byte*) setMEMtoFAC::mem#2 ← phi( main::@4/(const byte[]) main::f_127#0 main::@7/(const byte[]) main::f_i#0 ) [ setMEMtoFAC::mem#2 ] ( main:2::setMEMtoFAC:9 [ setMEMtoFAC::mem#2 ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 setMEMtoFAC::mem#2 ] )
|
||||
[90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 [ prepareMEM::mem#1 ] ( main:2::setMEMtoFAC:9 [ prepareMEM::mem#1 ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#1 ] )
|
||||
[91] call prepareMEM param-assignment [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:setMEMtoFAC::@1
|
||||
setMEMtoFAC::@1: scope:[setMEMtoFAC] from setMEMtoFAC
|
||||
asm { ldx$feldy$ffjsr$bbd4 }
|
||||
to:setMEMtoFAC::@return
|
||||
setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC::@1
|
||||
[94] return [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
[93] return [ ] ( main:2::setMEMtoFAC:9 [ ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 ] )
|
||||
to:@return
|
||||
divFACby10: scope:[divFACby10] from main::@3
|
||||
asm { jsr$bafe }
|
||||
to:divFACby10::@return
|
||||
divFACby10::@return: scope:[divFACby10] from divFACby10
|
||||
[96] return [ ] ( main:2::divFACby10:7 [ ] )
|
||||
[95] return [ ] ( main:2::divFACby10:7 [ ] )
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -20,10 +20,9 @@
|
||||
(word()) getFAC()
|
||||
(label) getFAC::@return
|
||||
(word) getFAC::return
|
||||
(word) getFAC::return#0 return zp ZP_WORD:9 4.333333333333333
|
||||
(word) getFAC::return#2 return zp ZP_WORD:9 22.0
|
||||
(word) getFAC::return#0 return zp ZP_WORD:7 4.333333333333333
|
||||
(word) getFAC::return#2 return zp ZP_WORD:7 22.0
|
||||
(word) getFAC::w
|
||||
(word) getFAC::w#1 w zp ZP_WORD:9 4.0
|
||||
(byte*) line_cursor
|
||||
(byte*) line_cursor#1 line_cursor zp ZP_WORD:3 46.42857142857143
|
||||
(byte*) line_cursor#13 line_cursor zp ZP_WORD:3 0.5416666666666666
|
||||
@ -96,13 +95,13 @@
|
||||
(label) print_word::@1
|
||||
(label) print_word::@return
|
||||
(word) print_word::w
|
||||
(word) print_word::w#0 w zp ZP_WORD:9 5.0
|
||||
(word) print_word::w#0 w zp ZP_WORD:7 5.0
|
||||
(void()) setFAC((word) setFAC::w)
|
||||
(label) setFAC::@1
|
||||
(label) setFAC::@return
|
||||
(word) setFAC::w
|
||||
(word) setFAC::w#1 w zp ZP_WORD:9 22.0
|
||||
(word) setFAC::w#3 w zp ZP_WORD:9 13.0
|
||||
(word) setFAC::w#1 w zp ZP_WORD:7 22.0
|
||||
(word) setFAC::w#3 w zp ZP_WORD:7 13.0
|
||||
(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
|
||||
(label) setMEMtoFAC::@1
|
||||
(label) setMEMtoFAC::@return
|
||||
@ -116,8 +115,7 @@ zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ]
|
||||
reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
||||
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
||||
zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ]
|
||||
zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setMEMtoFAC::mem#2 ]
|
||||
zp ZP_WORD:9 [ setFAC::w#3 setFAC::w#1 getFAC::return#2 print_word::w#0 getFAC::w#1 getFAC::return#0 ]
|
||||
zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ]
|
||||
reg byte y [ print_byte::$0 ]
|
||||
reg byte a [ print_byte::$3 ]
|
||||
reg byte a [ prepareMEM::$0 ]
|
||||
|
@ -41,7 +41,7 @@ main: {
|
||||
anim: {
|
||||
.label _3 = 5
|
||||
.label xidx = 4
|
||||
.label x = $e
|
||||
.label x = 8
|
||||
.label x_msb = 5
|
||||
.label j2 = 6
|
||||
.label j = 7
|
||||
@ -193,7 +193,7 @@ clear_screen: {
|
||||
}
|
||||
gen_sintab: {
|
||||
.const f_2pi = $e2e5
|
||||
.label _23 = $e
|
||||
.label _23 = $c
|
||||
.label i = 2
|
||||
.label min = 2
|
||||
.label length = 3
|
||||
@ -325,15 +325,12 @@ progress_inc: {
|
||||
progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0
|
||||
}
|
||||
getFAC: {
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
.label return = $c
|
||||
jsr $b1aa
|
||||
sty $fe
|
||||
sta $ff
|
||||
lda memLo
|
||||
sta w
|
||||
lda #0
|
||||
sta w+1
|
||||
sta return
|
||||
lda memHi
|
||||
sta return+1
|
||||
rts
|
||||
@ -375,11 +372,7 @@ divMEMbyFAC: {
|
||||
rts
|
||||
}
|
||||
setFAC: {
|
||||
.label w = $e
|
||||
lda w
|
||||
sta prepareMEM.mem
|
||||
lda w+1
|
||||
sta prepareMEM.mem+1
|
||||
.label w = $c
|
||||
jsr prepareMEM
|
||||
ldy $fe
|
||||
lda $ff
|
||||
@ -439,8 +432,8 @@ gen_sprites: {
|
||||
cml: .text "camelot"
|
||||
}
|
||||
gen_chargen_sprite: {
|
||||
.label _0 = $e
|
||||
.label _1 = $e
|
||||
.label _0 = $c
|
||||
.label _1 = $c
|
||||
.label sprite = $a
|
||||
.label chargen = $c
|
||||
.label bits = 4
|
||||
@ -458,12 +451,12 @@ gen_chargen_sprite: {
|
||||
rol _1+1
|
||||
asl _1
|
||||
rol _1+1
|
||||
lda #<CHARGEN
|
||||
lda chargen
|
||||
clc
|
||||
adc _1
|
||||
adc #<CHARGEN
|
||||
sta chargen
|
||||
lda #>CHARGEN
|
||||
adc _1+1
|
||||
lda chargen+1
|
||||
adc #>CHARGEN
|
||||
sta chargen+1
|
||||
sei
|
||||
lda #$32
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -57,7 +57,7 @@
|
||||
(byte) anim::j2#2 j2 zp ZP_BYTE:6 67.33333333333333
|
||||
(byte) anim::j2#3 j2 zp ZP_BYTE:6 22.444444444444443
|
||||
(word) anim::x
|
||||
(word) anim::x#0 x zp ZP_WORD:14 75.75
|
||||
(word) anim::x#0 x zp ZP_WORD:8 75.75
|
||||
(byte) anim::x_msb
|
||||
(byte) anim::x_msb#1 x_msb zp ZP_BYTE:5 12.0
|
||||
(byte) anim::x_msb#2 x_msb zp ZP_BYTE:5 67.33333333333333
|
||||
@ -85,8 +85,8 @@
|
||||
(byte*) divMEMbyFAC::mem
|
||||
(byte*) divMEMbyFAC::mem#2 mem zp ZP_WORD:12 2.0
|
||||
(void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite)
|
||||
(word~) gen_chargen_sprite::$0 $0 zp ZP_WORD:14 4.0
|
||||
(word~) gen_chargen_sprite::$1 $1 zp ZP_WORD:14 4.0
|
||||
(word~) gen_chargen_sprite::$0 $0 zp ZP_WORD:12 4.0
|
||||
(word~) gen_chargen_sprite::$1 $1 zp ZP_WORD:12 4.0
|
||||
(byte~) gen_chargen_sprite::$4 reg byte a 2002.0
|
||||
(byte~) gen_chargen_sprite::$7 reg byte a 20002.0
|
||||
(label) gen_chargen_sprite::@1
|
||||
@ -138,7 +138,7 @@
|
||||
(byte) gen_chargen_sprite::y#1 y zp ZP_BYTE:3 151.5
|
||||
(byte) gen_chargen_sprite::y#2 y zp ZP_BYTE:3 13.173913043478262
|
||||
(void()) gen_sintab((byte*) gen_sintab::sintab , (byte) gen_sintab::length , (byte) gen_sintab::min , (byte) gen_sintab::max)
|
||||
(word~) gen_sintab::$23 $23 zp ZP_WORD:14 22.0
|
||||
(word~) gen_sintab::$23 $23 zp ZP_WORD:12 22.0
|
||||
(byte~) gen_sintab::$24 reg byte a 22.0
|
||||
(label) gen_sintab::@1
|
||||
(label) gen_sintab::@10
|
||||
@ -196,10 +196,9 @@
|
||||
(word()) getFAC()
|
||||
(label) getFAC::@return
|
||||
(word) getFAC::return
|
||||
(word) getFAC::return#0 return zp ZP_WORD:14 4.333333333333333
|
||||
(word) getFAC::return#2 return zp ZP_WORD:14 22.0
|
||||
(word) getFAC::return#0 return zp ZP_WORD:12 4.333333333333333
|
||||
(word) getFAC::return#2 return zp ZP_WORD:12 22.0
|
||||
(word) getFAC::w
|
||||
(word) getFAC::w#1 w zp ZP_WORD:14 4.0
|
||||
(void()) init()
|
||||
(label) init::@1
|
||||
(label) init::@2
|
||||
@ -285,11 +284,11 @@
|
||||
(label) setFAC::@1
|
||||
(label) setFAC::@return
|
||||
(word) setFAC::w
|
||||
(word) setFAC::w#0 w zp ZP_WORD:14 4.0
|
||||
(word) setFAC::w#1 w zp ZP_WORD:14 4.0
|
||||
(word) setFAC::w#3 w zp ZP_WORD:14 22.0
|
||||
(word) setFAC::w#4 w zp ZP_WORD:14 22.0
|
||||
(word) setFAC::w#5 w zp ZP_WORD:14 28.0
|
||||
(word) setFAC::w#0 w zp ZP_WORD:12 4.0
|
||||
(word) setFAC::w#1 w zp ZP_WORD:12 4.0
|
||||
(word) setFAC::w#3 w zp ZP_WORD:12 22.0
|
||||
(word) setFAC::w#4 w zp ZP_WORD:12 22.0
|
||||
(word) setFAC::w#5 w zp ZP_WORD:12 28.0
|
||||
(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
|
||||
(label) setMEMtoFAC::@1
|
||||
(label) setMEMtoFAC::@return
|
||||
@ -326,11 +325,10 @@ zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 gen_chargen_sprite::c#3 ]
|
||||
reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ]
|
||||
zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ]
|
||||
reg byte x [ init::i#2 init::i#1 ]
|
||||
zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 ]
|
||||
zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 anim::x#0 ]
|
||||
reg byte x [ gen_sintab::max#2 ]
|
||||
zp ZP_WORD:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ]
|
||||
zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setMEMtoFAC::mem#5 gen_chargen_sprite::chargen#0 ]
|
||||
zp ZP_WORD:14 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 anim::x#0 getFAC::return#2 gen_sintab::$23 getFAC::w#1 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 ]
|
||||
zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ]
|
||||
reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ]
|
||||
reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
|
||||
reg byte y [ place_sprites::j#2 place_sprites::j#1 ]
|
||||
|
Loading…
x
Reference in New Issue
Block a user