mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-13 19:37:19 +00:00
Added support for comma-expressions (and fixed non-working unused variable elimination). Closes #157
This commit is contained in:
parent
f5afa992c1
commit
0f5d8f906b
@ -77,7 +77,7 @@ forDeclaration
|
||||
;
|
||||
|
||||
forIteration
|
||||
: ';' expr ';' expr? # forClassic
|
||||
: ';' commaExpr ';' commaExpr? # forClassic
|
||||
| ':' expr ( '..' ) expr #forRange
|
||||
;
|
||||
|
||||
@ -90,10 +90,15 @@ typeDecl
|
||||
| typeDecl '(' ')' #typeProcedure
|
||||
;
|
||||
|
||||
commaExpr
|
||||
: expr #commaNone
|
||||
| commaExpr ',' expr #commaSimple
|
||||
;
|
||||
|
||||
expr
|
||||
: '(' expr ')' #exprPar
|
||||
: '(' commaExpr ')' #exprPar
|
||||
| expr '(' parameterList? ')' #exprCall
|
||||
| expr '[' expr ']' #exprArray
|
||||
| expr '[' commaExpr ']' #exprArray
|
||||
| '(' typeDecl ')' expr #exprCast
|
||||
| ('--' | '++' ) expr #exprPreMod
|
||||
| expr ('--' | '++' ) #exprPostMod
|
||||
|
@ -491,6 +491,30 @@ public class KickCBaseListener implements KickCListener {
|
||||
* <p>The default implementation does nothing.</p>
|
||||
*/
|
||||
@Override public void exitTypeSignedSimple(KickCParser.TypeSignedSimpleContext ctx) { }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation does nothing.</p>
|
||||
*/
|
||||
@Override public void enterCommaNone(KickCParser.CommaNoneContext ctx) { }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation does nothing.</p>
|
||||
*/
|
||||
@Override public void exitCommaNone(KickCParser.CommaNoneContext ctx) { }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation does nothing.</p>
|
||||
*/
|
||||
@Override public void enterCommaSimple(KickCParser.CommaSimpleContext ctx) { }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation does nothing.</p>
|
||||
*/
|
||||
@Override public void exitCommaSimple(KickCParser.CommaSimpleContext ctx) { }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
|
@ -291,6 +291,20 @@ public class KickCBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitTypeSignedSimple(KickCParser.TypeSignedSimpleContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitCommaNone(KickCParser.CommaNoneContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>The default implementation returns the result of calling
|
||||
* {@link #visitChildren} on {@code ctx}.</p>
|
||||
*/
|
||||
@Override public T visitCommaSimple(KickCParser.CommaSimpleContext ctx) { return visitChildren(ctx); }
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
|
@ -467,6 +467,30 @@ public interface KickCListener extends ParseTreeListener {
|
||||
* @param ctx the parse tree
|
||||
*/
|
||||
void exitTypeSignedSimple(KickCParser.TypeSignedSimpleContext ctx);
|
||||
/**
|
||||
* Enter a parse tree produced by the {@code commaNone}
|
||||
* labeled alternative in {@link KickCParser#commaExpr}.
|
||||
* @param ctx the parse tree
|
||||
*/
|
||||
void enterCommaNone(KickCParser.CommaNoneContext ctx);
|
||||
/**
|
||||
* Exit a parse tree produced by the {@code commaNone}
|
||||
* labeled alternative in {@link KickCParser#commaExpr}.
|
||||
* @param ctx the parse tree
|
||||
*/
|
||||
void exitCommaNone(KickCParser.CommaNoneContext ctx);
|
||||
/**
|
||||
* Enter a parse tree produced by the {@code commaSimple}
|
||||
* labeled alternative in {@link KickCParser#commaExpr}.
|
||||
* @param ctx the parse tree
|
||||
*/
|
||||
void enterCommaSimple(KickCParser.CommaSimpleContext ctx);
|
||||
/**
|
||||
* Exit a parse tree produced by the {@code commaSimple}
|
||||
* labeled alternative in {@link KickCParser#commaExpr}.
|
||||
* @param ctx the parse tree
|
||||
*/
|
||||
void exitCommaSimple(KickCParser.CommaSimpleContext ctx);
|
||||
/**
|
||||
* Enter a parse tree produced by the {@code exprPtr}
|
||||
* labeled alternative in {@link KickCParser#expr}.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -280,6 +280,20 @@ public interface KickCVisitor<T> extends ParseTreeVisitor<T> {
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitTypeSignedSimple(KickCParser.TypeSignedSimpleContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by the {@code commaNone}
|
||||
* labeled alternative in {@link KickCParser#commaExpr}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitCommaNone(KickCParser.CommaNoneContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by the {@code commaSimple}
|
||||
* labeled alternative in {@link KickCParser#commaExpr}.
|
||||
* @param ctx the parse tree
|
||||
* @return the visitor result
|
||||
*/
|
||||
T visitCommaSimple(KickCParser.CommaSimpleContext ctx);
|
||||
/**
|
||||
* Visit a parse tree produced by the {@code exprPtr}
|
||||
* labeled alternative in {@link KickCParser#expr}.
|
||||
|
@ -785,15 +785,15 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor<Object> {
|
||||
addLoopBody(stmtForCtx.stmt());
|
||||
addLoopContinueLabel(loopStack.peek(), ctx);
|
||||
// Add increment
|
||||
if(ctx.expr(1) != null) {
|
||||
PrePostModifierHandler.addPreModifiers(this, ctx.expr(1));
|
||||
this.visit(ctx.expr(1));
|
||||
PrePostModifierHandler.addPostModifiers(this, ctx.expr(1));
|
||||
if(ctx.commaExpr(1) != null) {
|
||||
PrePostModifierHandler.addPreModifiers(this, ctx.commaExpr(1));
|
||||
this.visit(ctx.commaExpr(1));
|
||||
PrePostModifierHandler.addPostModifiers(this, ctx.commaExpr(1));
|
||||
}
|
||||
// Add condition
|
||||
PrePostModifierHandler.addPreModifiers(this, ctx.expr(0));
|
||||
RValue rValue = (RValue) this.visit(ctx.expr(0));
|
||||
PrePostModifierHandler.addPostModifiers(this, ctx.expr(0));
|
||||
PrePostModifierHandler.addPreModifiers(this, ctx.commaExpr(0));
|
||||
RValue rValue = (RValue) this.visit(ctx.commaExpr(0));
|
||||
PrePostModifierHandler.addPostModifiers(this, ctx.commaExpr(0));
|
||||
// Add jump if condition was met
|
||||
StatementConditionalJump doJmpStmt = new StatementConditionalJump(rValue, repeatLabel.getRef(), new StatementSource(ctx), Comment.NO_COMMENTS);
|
||||
sequence.addStatement(doJmpStmt);
|
||||
@ -1176,8 +1176,8 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor<Object> {
|
||||
|
||||
@Override
|
||||
public RValue visitExprArray(KickCParser.ExprArrayContext ctx) {
|
||||
RValue array = (RValue) visit(ctx.expr(0));
|
||||
RValue index = (RValue) visit(ctx.expr(1));
|
||||
RValue array = (RValue) visit(ctx.expr());
|
||||
RValue index = (RValue) visit(ctx.commaExpr());
|
||||
return new PointerDereferenceIndexed(array, index);
|
||||
}
|
||||
|
||||
@ -1272,6 +1272,17 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor<Object> {
|
||||
return finalVar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visitCommaNone(KickCParser.CommaNoneContext ctx) {
|
||||
return this.visit(ctx.expr());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visitCommaSimple(KickCParser.CommaSimpleContext ctx) {
|
||||
this.visit(ctx.commaExpr());
|
||||
return this.visit(ctx.expr());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visitExprPreMod(KickCParser.ExprPreModContext ctx) {
|
||||
RValue child = (RValue) this.visit(ctx.expr());
|
||||
@ -1286,7 +1297,7 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor<Object> {
|
||||
|
||||
@Override
|
||||
public RValue visitExprPar(KickCParser.ExprParContext ctx) {
|
||||
return (RValue) this.visit(ctx.expr());
|
||||
return (RValue) this.visit(ctx.commaExpr());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -34,7 +34,7 @@ public class PassNEliminateUnusedVars extends Pass2SsaOptimization {
|
||||
if(statement instanceof StatementAssignment) {
|
||||
StatementAssignment assignment = (StatementAssignment) statement;
|
||||
LValue lValue = assignment.getlValue();
|
||||
if(lValue instanceof VariableRef && referenceInfos.isUnused((VariableRef) lValue) && Pass2ConstantIdentification.isAddressOfUsed((VariableRef) lValue, getProgram())) {
|
||||
if(lValue instanceof VariableRef && referenceInfos.isUnused((VariableRef) lValue) && !Pass2ConstantIdentification.isAddressOfUsed((VariableRef) lValue, getProgram())) {
|
||||
Variable variable = getScope().getVariable((VariableRef) lValue);
|
||||
if(variable==null || !variable.isDeclaredVolatile()) {
|
||||
if(getLog().isVerbosePass1CreateSsa() || getLog().isVerboseSSAOptimize()) {
|
||||
|
@ -37,6 +37,15 @@ public class TestPrograms {
|
||||
// compileAndCompare("pointer-cast-3");
|
||||
//}
|
||||
|
||||
@Test
|
||||
public void testCommaExprFor() throws IOException, URISyntaxException {
|
||||
compileAndCompare("comma-expr-for");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCommaExpr1() throws IOException, URISyntaxException {
|
||||
compileAndCompare("comma-expr-1");
|
||||
}
|
||||
@Test
|
||||
public void testForRangedNoVar() throws IOException, URISyntaxException {
|
||||
assertError("for-ranged-novar", "Ranged for() must have iteration variable");
|
||||
|
8
src/test/kc/comma-expr-1.kc
Normal file
8
src/test/kc/comma-expr-1.kc
Normal file
@ -0,0 +1,8 @@
|
||||
// Tests simple comma-expression (in parenthesis)
|
||||
|
||||
void main() {
|
||||
const byte* SCREEN = $400;
|
||||
byte b = (1,2,3);
|
||||
byte c = (1+1,b+1);
|
||||
SCREEN[1,0] = c;
|
||||
}
|
9
src/test/kc/comma-expr-for.kc
Normal file
9
src/test/kc/comma-expr-for.kc
Normal file
@ -0,0 +1,9 @@
|
||||
// Tests comma-expressions in for()-statement
|
||||
|
||||
void main() {
|
||||
const byte* SCREEN = $400;
|
||||
byte j='g';
|
||||
for( byte i=0; j<10, i<10; i++, j++) {
|
||||
SCREEN[i] = j;
|
||||
}
|
||||
}
|
@ -9,6 +9,9 @@ void main() {
|
||||
incw2();
|
||||
incw1();
|
||||
incw2();
|
||||
word* SCREEN = $400;
|
||||
SCREEN[0] = w1;
|
||||
SCREEN[4] = w2;
|
||||
}
|
||||
|
||||
void incw1() {
|
||||
|
@ -8,4 +8,6 @@ void main() {
|
||||
s--;
|
||||
}
|
||||
}
|
||||
const byte* SCREEN = $400;
|
||||
*SCREEN = s;
|
||||
}
|
||||
|
@ -7,6 +7,8 @@ void main() {
|
||||
SCREEN[0]=inccnt();
|
||||
cnt++;
|
||||
SCREEN[1]=inccnt();
|
||||
SCREEN[2]=cnt2;
|
||||
SCREEN[3]=cnt3;
|
||||
}
|
||||
|
||||
byte inccnt() {
|
||||
|
@ -9,6 +9,7 @@ void main() {
|
||||
ch++;
|
||||
ln();
|
||||
*SCREEN = ch;
|
||||
*(SCREEN+40) = line;
|
||||
}
|
||||
|
||||
void ln() {
|
||||
|
@ -41,6 +41,10 @@ void rvalue() {
|
||||
while(i<10) {
|
||||
b = SCREEN[i++];
|
||||
}
|
||||
|
||||
byte* screen2 = $400;
|
||||
*screen2 = b;
|
||||
|
||||
}
|
||||
|
||||
void lvaluevar() {
|
||||
@ -69,5 +73,8 @@ void rvaluevar() {
|
||||
i++;
|
||||
}
|
||||
|
||||
byte* screen2 = $400;
|
||||
*screen2 = b;
|
||||
|
||||
}
|
||||
|
||||
|
@ -13,4 +13,6 @@ void main() {
|
||||
b = SCREEN[i++];
|
||||
}
|
||||
|
||||
SCREEN[999] = b;
|
||||
|
||||
}
|
||||
|
@ -2,85 +2,8 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@5
|
||||
main: scope:[main] from @5
|
||||
*((byte*) BGCOL#0) ← (byte) BLACK#0
|
||||
@ -102,248 +25,16 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
Culled Empty Block (label) @6
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @5
|
||||
Adding NOP phi() at start of @end
|
||||
@ -377,84 +68,7 @@ main::@return: scope:[main] from main
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
|
||||
Initial phi equivalence classes
|
||||
@ -566,85 +180,8 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
|
@ -3,85 +3,8 @@
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
|
@ -18,19 +18,13 @@ Identified constant variable (byte) plots_cnt
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) FGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
(byte*) BITMAP#0 ← ((byte*)) (word/signed word/dword/signed dword) $2000
|
||||
to:@1
|
||||
@ -232,30 +226,18 @@ SYMBOL TABLE SSA
|
||||
(byte*) BITMAP#0
|
||||
(byte) BMM
|
||||
(byte) BMM#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CSEL
|
||||
(byte) CSEL#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DEN
|
||||
(byte) DEN#0
|
||||
(byte) ECM
|
||||
(byte) ECM#0
|
||||
(byte*) FGCOL
|
||||
(byte*) FGCOL#0
|
||||
(byte) MCM
|
||||
(byte) MCM#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RSEL
|
||||
(byte) RSEL#0
|
||||
(byte) RST8
|
||||
(byte) RST8#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(void()) init_plot_tables()
|
||||
@ -397,8 +379,8 @@ Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) @6
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [83] (bool~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [82] (bool~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [102] (bool~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [101] (bool~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
Inversing boolean not [77] (bool~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [76] (bool~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [96] (bool~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [95] (bool~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) plots::i#2 = (byte) plots::i#3
|
||||
Alias (byte*) plot::plotter#0 = (byte*~) plot::$4
|
||||
@ -414,29 +396,23 @@ Successful SSA optimization Pass2AliasElimination
|
||||
Redundant Phi (byte) plot::x#1 (byte) plot::x#0
|
||||
Redundant Phi (byte) plot::y#1 (byte) plot::y#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$11 [32] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2
|
||||
Simple Condition (bool~) plots::$1 [49] if((byte) plots::i#1<(byte) plots_cnt#0) goto plots::@1
|
||||
Simple Condition (bool~) init_plot_tables::$4 [84] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@2
|
||||
Simple Condition (bool~) init_plot_tables::$5 [88] if((byte) init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1
|
||||
Simple Condition (bool~) init_plot_tables::$12 [103] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@6
|
||||
Simple Condition (bool~) init_plot_tables::$15 [107] if((byte) init_plot_tables::y#1!=rangelast(0,$ff)) goto init_plot_tables::@5
|
||||
Simple Condition (bool~) init_screen::$1 [119] if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1
|
||||
Simple Condition (bool~) init_screen::$3 [126] if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@3
|
||||
Simple Condition (bool~) main::$11 [26] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2
|
||||
Simple Condition (bool~) plots::$1 [43] if((byte) plots::i#1<(byte) plots_cnt#0) goto plots::@1
|
||||
Simple Condition (bool~) init_plot_tables::$4 [78] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@2
|
||||
Simple Condition (bool~) init_plot_tables::$5 [82] if((byte) init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1
|
||||
Simple Condition (bool~) init_plot_tables::$12 [97] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@6
|
||||
Simple Condition (bool~) init_plot_tables::$15 [101] if((byte) init_plot_tables::y#1!=rangelast(0,$ff)) goto init_plot_tables::@5
|
||||
Simple Condition (bool~) init_screen::$1 [113] if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1
|
||||
Simple Condition (bool~) init_screen::$3 [120] if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@3
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) RST8#0 = $80
|
||||
Constant (const byte) ECM#0 = $40
|
||||
Constant (const byte) BMM#0 = $20
|
||||
Constant (const byte) DEN#0 = $10
|
||||
Constant (const byte) RSEL#0 = 8
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) MCM#0 = $10
|
||||
Constant (const byte) CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) FGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte*) BITMAP#0 = ((byte*))$2000
|
||||
Constant (const byte[]) plots_x#0 = { $3c, $50, $6e, $50, $3c, $28, $a, $28 }
|
||||
@ -477,7 +453,6 @@ Constant (const byte) main::$8 = ((byte))main::$7
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [10] if(true) goto main::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Resolved ranged next value init_plot_tables::x#1 ← ++ init_plot_tables::x#2 to ++
|
||||
@ -715,18 +690,12 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BITMAP
|
||||
(byte) BMM
|
||||
(byte*) COLS
|
||||
(byte) CSEL
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DEN
|
||||
(byte) ECM
|
||||
(byte*) FGCOL
|
||||
(byte) MCM
|
||||
(byte*) RASTER
|
||||
(byte) RSEL
|
||||
(byte) RST8
|
||||
(byte*) SCREEN
|
||||
(void()) init_plot_tables()
|
||||
(byte~) init_plot_tables::$0 22.0
|
||||
@ -1882,24 +1851,18 @@ FINAL SYMBOL TABLE
|
||||
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte) BMM
|
||||
(const byte) BMM#0 BMM = (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte*) COLS
|
||||
(byte) CSEL
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) DEN
|
||||
(const byte) DEN#0 DEN = (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) ECM
|
||||
(byte*) FGCOL
|
||||
(const byte*) FGCOL#0 FGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte) MCM
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RSEL
|
||||
(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) RST8
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(void()) init_plot_tables()
|
||||
|
@ -7,24 +7,18 @@
|
||||
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte) BMM
|
||||
(const byte) BMM#0 BMM = (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte*) COLS
|
||||
(byte) CSEL
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) DEN
|
||||
(const byte) DEN#0 DEN = (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) ECM
|
||||
(byte*) FGCOL
|
||||
(const byte*) FGCOL#0 FGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte) MCM
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RSEL
|
||||
(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) RST8
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(void()) init_plot_tables()
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,129 +1,32 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) CHARSET8
|
||||
(const byte*) CHARSET8#0 CHARSET8 = ((byte*))(word/dword/signed dword) $8000
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
(byte*) DTV_BLITTER_DEST_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_LO
|
||||
(byte*) DTV_BLITTER_DEST_LO
|
||||
(byte*) DTV_BLITTER_DEST_MI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_HI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_LO
|
||||
(byte*) DTV_BLITTER_DEST_STEP
|
||||
(byte*) DTV_BLITTER_LEN_HI
|
||||
(byte*) DTV_BLITTER_LEN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_LO
|
||||
(byte*) DTV_BLITTER_SRCA_MI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCA_STEP
|
||||
(byte*) DTV_BLITTER_SRCB_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCB_LO
|
||||
(byte*) DTV_BLITTER_SRCB_MI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(byte) DTV_CHUNKY
|
||||
(const byte) DTV_CHUNKY#0 DTV_CHUNKY = (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_CONTROL
|
||||
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) $d03c
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) $d03f
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_LINEAR
|
||||
(const byte) DTV_LINEAR#0 DTV_LINEAR = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte*) DTV_PALETTE
|
||||
(const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) $d200
|
||||
(byte[$10]) DTV_PALETTE_DEFAULT
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(const byte*) DTV_PLANEA_MODULO_HI#0 DTV_PLANEA_MODULO_HI = ((byte*))(word/dword/signed dword) $d039
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
@ -148,56 +51,20 @@
|
||||
(const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) $d04a
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) $d04c
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $7c00
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) VIC_CONTROL2
|
||||
@ -214,9 +81,6 @@
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
|
||||
(label) dtvSetCpuBankSegment1::@return
|
||||
(byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,135 +1,32 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHUNKY
|
||||
(const byte*) CHUNKY#0 CHUNKY = ((byte*))(word/dword/signed dword) $8000
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
(byte*) DTV_BLITTER_DEST_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_LO
|
||||
(byte*) DTV_BLITTER_DEST_LO
|
||||
(byte*) DTV_BLITTER_DEST_MI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_HI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_LO
|
||||
(byte*) DTV_BLITTER_DEST_STEP
|
||||
(byte*) DTV_BLITTER_LEN_HI
|
||||
(byte*) DTV_BLITTER_LEN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_LO
|
||||
(byte*) DTV_BLITTER_SRCA_MI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCA_STEP
|
||||
(byte*) DTV_BLITTER_SRCB_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCB_LO
|
||||
(byte*) DTV_BLITTER_SRCB_MI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(byte) DTV_CHUNKY
|
||||
(const byte) DTV_CHUNKY#0 DTV_CHUNKY = (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(const byte) DTV_COLORRAM_OFF#0 DTV_COLORRAM_OFF = (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_CONTROL
|
||||
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) $d03c
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) $d03f
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_LINEAR
|
||||
(const byte) DTV_LINEAR#0 DTV_LINEAR = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte*) DTV_PALETTE
|
||||
(const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) $d200
|
||||
(byte[$10]) DTV_PALETTE_DEFAULT
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
(byte*) DTV_PLANEA_START_HI
|
||||
(byte*) DTV_PLANEA_START_LO
|
||||
(byte*) DTV_PLANEA_START_MI
|
||||
(byte*) DTV_PLANEA_STEP
|
||||
(byte*) DTV_PLANEB_MODULO_HI
|
||||
(const byte*) DTV_PLANEB_MODULO_HI#0 DTV_PLANEB_MODULO_HI = ((byte*))(word/dword/signed dword) $d048
|
||||
(byte*) DTV_PLANEB_MODULO_LO
|
||||
@ -142,53 +39,16 @@
|
||||
(const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) $d04a
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) $d04c
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) VIC_CONTROL2
|
||||
@ -205,9 +65,6 @@
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx)
|
||||
(label) dtvSetCpuBankSegment1::@return
|
||||
(byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
|
@ -4,118 +4,10 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) $d03f
|
||||
(byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d03c
|
||||
(byte) DTV_LINEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BORDER_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_HIGHCOLOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_OVERSCAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) DTV_COLORRAM_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) DTV_BADLINE_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) DTV_CHUNKY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte*) DTV_PALETTE#0 ← ((byte*)) (word/dword/signed dword) $d200
|
||||
(byte[$10]) DTV_PALETTE_DEFAULT#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) $f, (byte/signed byte/word/signed word/dword/signed dword) $36, (byte/word/signed word/dword/signed dword) $be, (byte/signed byte/word/signed word/dword/signed dword) $58, (byte/word/signed word/dword/signed dword) $db, (byte/word/signed word/dword/signed dword) $86, (byte/word/signed word/dword/signed dword) $ff, (byte/signed byte/word/signed word/dword/signed dword) $29, (byte/signed byte/word/signed word/dword/signed dword) $26, (byte/signed byte/word/signed word/dword/signed dword) $3b, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/word/signed word/dword/signed dword) $df, (byte/word/signed word/dword/signed dword) $9a, (byte/signed byte/word/signed word/dword/signed dword) $a }
|
||||
(byte*) DTV_PLANEA_START_LO#0 ← ((byte*)) (word/dword/signed dword) $d03a
|
||||
(byte*) DTV_PLANEA_START_MI#0 ← ((byte*)) (word/dword/signed dword) $d03b
|
||||
(byte*) DTV_PLANEA_START_HI#0 ← ((byte*)) (word/dword/signed dword) $d045
|
||||
(byte*) DTV_PLANEA_STEP#0 ← ((byte*)) (word/dword/signed dword) $d046
|
||||
(byte*) DTV_PLANEA_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) $d038
|
||||
(byte*) DTV_PLANEA_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) $d039
|
||||
(byte*) DTV_PLANEB_START_LO#0 ← ((byte*)) (word/dword/signed dword) $d049
|
||||
(byte*) DTV_PLANEB_START_MI#0 ← ((byte*)) (word/dword/signed dword) $d04a
|
||||
(byte*) DTV_PLANEB_START_HI#0 ← ((byte*)) (word/dword/signed dword) $d04b
|
||||
(byte*) DTV_PLANEB_STEP#0 ← ((byte*)) (word/dword/signed dword) $d04c
|
||||
(byte*) DTV_PLANEB_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) $d047
|
||||
(byte*) DTV_PLANEB_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) $d048
|
||||
(byte*) DTV_SPRITE_BANK#0 ← ((byte*)) (word/dword/signed dword) $d04d
|
||||
(byte*) DTV_COLOR_BANK_LO#0 ← ((byte*)) (word/dword/signed dword) $d036
|
||||
(byte*) DTV_COLOR_BANK_HI#0 ← ((byte*)) (word/dword/signed dword) $d037
|
||||
(dword) DTV_COLOR_BANK_DEFAULT#0 ← (dword/signed dword) $1d800
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK#0 ← ((byte*)) (word/dword/signed dword) $d03d
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK#0 ← ((byte*)) (word/dword/signed dword) $d03e
|
||||
to:@5
|
||||
@5: scope:[] from @4
|
||||
(byte*) DTV_BLITTER_SRCA_LO#0 ← ((byte*)) (word/dword/signed dword) $d320
|
||||
@ -149,39 +41,14 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte) DTV_BLIT_SRCA_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_BLIT_SRCB_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_BLIT_DEST_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) DTV_BLIT_VIC_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) DTV_BLIT_CIA_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) DTV_BLIT_VBLANK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) DTV_BLIT_IRQ_EN#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY#0 ← ((byte*)) (word/dword/signed dword) $d33b
|
||||
(byte) DTV_BLIT_DISABLE_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte*) DTV_BLITTER_ALU#0 ← ((byte*)) (word/dword/signed dword) $d33e
|
||||
(byte) DTV_BLIT_SHIFT0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) DTV_BLIT_SHIFT1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_SHIFT2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_BLIT_SHIFT3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) DTV_BLIT_SHIFT4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_BLIT_SHIFT5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) DTV_BLIT_SHIFT6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) DTV_BLIT_SHIFT7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) DTV_BLIT_AND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) DTV_BLIT_NAND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) DTV_BLIT_NOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) DTV_BLIT_OR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $18
|
||||
(byte) DTV_BLIT_XOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) DTV_BLIT_XNOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
(byte) DTV_BLIT_ADD#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) DTV_BLIT_SUB#0 ← (byte/signed byte/word/signed word/dword/signed dword) $38
|
||||
(byte*) DTV_BLITTER_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d33f
|
||||
(byte) DTV_BLIT_CLEAR_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_SRCA_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_BLIT_SRCB_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_BLIT_DEST_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) DTV_BLIT_STATUS_BUSY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_STATUS_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
(byte[]) SRCA#0 ← { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
|
||||
(byte) SRCA_LEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
@ -273,62 +140,6 @@ SYMBOL TABLE SSA
|
||||
(label) @7
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(byte) DTV_BADLINE_OFF#0
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_ALU#0
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
@ -391,244 +202,34 @@ SYMBOL TABLE SSA
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY#0
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_ADD#0
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_AND#0
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CIA_IRQ#0
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ#0
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_CONT#0
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DEST_FWD#0
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_DISABLE_B#0
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_FORCE_START#0
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_IRQ_EN#0
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NAND#0
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_NOR#0
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_OR#0
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT0#0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT1#0
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT2#0
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT3#0
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT4#0
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT5#0
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT6#0
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SHIFT7#0
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_CONT#0
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCA_FWD#0
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_CONT#0
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_SRCB_FWD#0
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_BUSY#0
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_STATUS_IRQ#0
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_SUB#0
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE#0
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VBLANK#0
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_VIC_IRQ#0
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT#0
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT#0
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XNOR#0
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BLIT_XOR#0
|
||||
(byte) DTV_BORDER_OFF
|
||||
(byte) DTV_BORDER_OFF#0
|
||||
(byte) DTV_CHUNKY
|
||||
(byte) DTV_CHUNKY#0
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(byte) DTV_COLORRAM_OFF#0
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(dword) DTV_COLOR_BANK_DEFAULT#0
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_HI#0
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_COLOR_BANK_LO#0
|
||||
(byte*) DTV_CONTROL
|
||||
(byte*) DTV_CONTROL#0
|
||||
(byte*) DTV_FEATURE
|
||||
(byte*) DTV_FEATURE#0
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET#0
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(byte) DTV_FEATURE_ENABLE#0
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK#0
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK#0
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(byte) DTV_HIGHCOLOR#0
|
||||
(byte) DTV_LINEAR
|
||||
(byte) DTV_LINEAR#0
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte) DTV_OVERSCAN#0
|
||||
(byte*) DTV_PALETTE
|
||||
(byte*) DTV_PALETTE#0
|
||||
(byte[$10]) DTV_PALETTE_DEFAULT
|
||||
(byte[$10]) DTV_PALETTE_DEFAULT#0
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(byte*) DTV_PLANEA_MODULO_HI#0
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
(byte*) DTV_PLANEA_MODULO_LO#0
|
||||
(byte*) DTV_PLANEA_START_HI
|
||||
(byte*) DTV_PLANEA_START_HI#0
|
||||
(byte*) DTV_PLANEA_START_LO
|
||||
(byte*) DTV_PLANEA_START_LO#0
|
||||
(byte*) DTV_PLANEA_START_MI
|
||||
(byte*) DTV_PLANEA_START_MI#0
|
||||
(byte*) DTV_PLANEA_STEP
|
||||
(byte*) DTV_PLANEA_STEP#0
|
||||
(byte*) DTV_PLANEB_MODULO_HI
|
||||
(byte*) DTV_PLANEB_MODULO_HI#0
|
||||
(byte*) DTV_PLANEB_MODULO_LO
|
||||
(byte*) DTV_PLANEB_MODULO_LO#0
|
||||
(byte*) DTV_PLANEB_START_HI
|
||||
(byte*) DTV_PLANEB_START_HI#0
|
||||
(byte*) DTV_PLANEB_START_LO
|
||||
(byte*) DTV_PLANEB_START_LO#0
|
||||
(byte*) DTV_PLANEB_START_MI
|
||||
(byte*) DTV_PLANEB_START_MI#0
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(byte*) DTV_PLANEB_STEP#0
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte*) DTV_SPRITE_BANK#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte[]) SRCA
|
||||
(byte[]) SRCA#0
|
||||
(byte) SRCA_LEN
|
||||
(byte) SRCA_LEN#0
|
||||
(byte[]) SRCB
|
||||
(byte[]) SRCB#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) main()
|
||||
(byte~) main::$0
|
||||
(byte~) main::$1
|
||||
@ -669,119 +270,11 @@ Alias (byte) main::r#2 = (byte) main::r#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte) main::r#2
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Simple Condition (bool~) main::$16 [230] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2
|
||||
Simple Condition (bool~) main::$20 [238] if((byte) main::r#1!=rangelast(0,7)) goto main::@1
|
||||
Simple Condition (bool~) main::$16 [97] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2
|
||||
Simple Condition (bool~) main::$20 [105] if((byte) main::r#1!=rangelast(0,7)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const byte*) DTV_FEATURE#0 = ((byte*))$d03f
|
||||
Constant (const byte) DTV_FEATURE_ENABLE#0 = 1
|
||||
Constant (const byte) DTV_FEATURE_DISABLE_TIL_RESET#0 = 2
|
||||
Constant (const byte*) DTV_CONTROL#0 = ((byte*))$d03c
|
||||
Constant (const byte) DTV_LINEAR#0 = 1
|
||||
Constant (const byte) DTV_BORDER_OFF#0 = 2
|
||||
Constant (const byte) DTV_HIGHCOLOR#0 = 4
|
||||
Constant (const byte) DTV_OVERSCAN#0 = 8
|
||||
Constant (const byte) DTV_COLORRAM_OFF#0 = $10
|
||||
Constant (const byte) DTV_BADLINE_OFF#0 = $20
|
||||
Constant (const byte) DTV_CHUNKY#0 = $40
|
||||
Constant (const byte*) DTV_PALETTE#0 = ((byte*))$d200
|
||||
Constant (const byte[$10]) DTV_PALETTE_DEFAULT#0 = { 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a }
|
||||
Constant (const byte*) DTV_PLANEA_START_LO#0 = ((byte*))$d03a
|
||||
Constant (const byte*) DTV_PLANEA_START_MI#0 = ((byte*))$d03b
|
||||
Constant (const byte*) DTV_PLANEA_START_HI#0 = ((byte*))$d045
|
||||
Constant (const byte*) DTV_PLANEA_STEP#0 = ((byte*))$d046
|
||||
Constant (const byte*) DTV_PLANEA_MODULO_LO#0 = ((byte*))$d038
|
||||
Constant (const byte*) DTV_PLANEA_MODULO_HI#0 = ((byte*))$d039
|
||||
Constant (const byte*) DTV_PLANEB_START_LO#0 = ((byte*))$d049
|
||||
Constant (const byte*) DTV_PLANEB_START_MI#0 = ((byte*))$d04a
|
||||
Constant (const byte*) DTV_PLANEB_START_HI#0 = ((byte*))$d04b
|
||||
Constant (const byte*) DTV_PLANEB_STEP#0 = ((byte*))$d04c
|
||||
Constant (const byte*) DTV_PLANEB_MODULO_LO#0 = ((byte*))$d047
|
||||
Constant (const byte*) DTV_PLANEB_MODULO_HI#0 = ((byte*))$d048
|
||||
Constant (const byte*) DTV_SPRITE_BANK#0 = ((byte*))$d04d
|
||||
Constant (const byte*) DTV_COLOR_BANK_LO#0 = ((byte*))$d036
|
||||
Constant (const byte*) DTV_COLOR_BANK_HI#0 = ((byte*))$d037
|
||||
Constant (const dword) DTV_COLOR_BANK_DEFAULT#0 = $1d800
|
||||
Constant (const byte*) DTV_GRAPHICS_VIC_BANK#0 = ((byte*))$d03d
|
||||
Constant (const byte*) DTV_GRAPHICS_HICOL_BANK#0 = ((byte*))$d03e
|
||||
Constant (const byte*) DTV_BLITTER_SRCA_LO#0 = ((byte*))$d320
|
||||
Constant (const byte*) DTV_BLITTER_SRCA_MI#0 = ((byte*))$d321
|
||||
Constant (const byte*) DTV_BLITTER_SRCA_HI#0 = ((byte*))$d322
|
||||
@ -813,39 +306,14 @@ Constant (const byte) DTV_BLIT_FORCE_START#0 = 1
|
||||
Constant (const byte) DTV_BLIT_SRCA_FWD#0 = 2
|
||||
Constant (const byte) DTV_BLIT_SRCB_FWD#0 = 4
|
||||
Constant (const byte) DTV_BLIT_DEST_FWD#0 = 8
|
||||
Constant (const byte) DTV_BLIT_VIC_IRQ#0 = $10
|
||||
Constant (const byte) DTV_BLIT_CIA_IRQ#0 = $20
|
||||
Constant (const byte) DTV_BLIT_VBLANK#0 = $40
|
||||
Constant (const byte) DTV_BLIT_IRQ_EN#0 = $80
|
||||
Constant (const byte*) DTV_BLITTER_TRANSPARANCY#0 = ((byte*))$d33b
|
||||
Constant (const byte) DTV_BLIT_DISABLE_B#0 = 1
|
||||
Constant (const byte) DTV_BLIT_WRITE_TRANSPARENT#0 = 2
|
||||
Constant (const byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 = 4
|
||||
Constant (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 = 0
|
||||
Constant (const byte*) DTV_BLITTER_ALU#0 = ((byte*))$d33e
|
||||
Constant (const byte) DTV_BLIT_SHIFT0#0 = 0
|
||||
Constant (const byte) DTV_BLIT_SHIFT1#0 = 1
|
||||
Constant (const byte) DTV_BLIT_SHIFT2#0 = 2
|
||||
Constant (const byte) DTV_BLIT_SHIFT3#0 = 3
|
||||
Constant (const byte) DTV_BLIT_SHIFT4#0 = 4
|
||||
Constant (const byte) DTV_BLIT_SHIFT5#0 = 5
|
||||
Constant (const byte) DTV_BLIT_SHIFT6#0 = 6
|
||||
Constant (const byte) DTV_BLIT_SHIFT7#0 = 7
|
||||
Constant (const byte) DTV_BLIT_AND#0 = 0
|
||||
Constant (const byte) DTV_BLIT_NAND#0 = 8
|
||||
Constant (const byte) DTV_BLIT_NOR#0 = $10
|
||||
Constant (const byte) DTV_BLIT_OR#0 = $18
|
||||
Constant (const byte) DTV_BLIT_XOR#0 = $20
|
||||
Constant (const byte) DTV_BLIT_XNOR#0 = $28
|
||||
Constant (const byte) DTV_BLIT_ADD#0 = $30
|
||||
Constant (const byte) DTV_BLIT_SUB#0 = $38
|
||||
Constant (const byte*) DTV_BLITTER_CONTROL2#0 = ((byte*))$d33f
|
||||
Constant (const byte) DTV_BLIT_CLEAR_IRQ#0 = 1
|
||||
Constant (const byte) DTV_BLIT_SRCA_CONT#0 = 2
|
||||
Constant (const byte) DTV_BLIT_SRCB_CONT#0 = 4
|
||||
Constant (const byte) DTV_BLIT_DEST_CONT#0 = 8
|
||||
Constant (const byte) DTV_BLIT_STATUS_BUSY#0 = 1
|
||||
Constant (const byte) DTV_BLIT_STATUS_IRQ#0 = 2
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte[]) SRCA#0 = { 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' }
|
||||
Constant (const byte) SRCA_LEN#0 = 9
|
||||
@ -873,7 +341,6 @@ Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::$14 = main::$13|DTV_BLIT_DEST_FWD#0
|
||||
Constant (const byte) main::$19 = main::$18|DTV_BLIT_DEST_FWD#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Resolved ranged next value main::r#1 ← ++ main::r#2 to ++
|
||||
Resolved ranged comparison value if(main::r#1!=rangelast(0,7)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
Culled Empty Block (label) @4
|
||||
@ -979,34 +446,6 @@ main::@return: scope:[main] from main::@2
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
@ -1038,125 +477,20 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(byte) DTV_CHUNKY
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_CONTROL
|
||||
(byte*) DTV_FEATURE
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(byte) DTV_LINEAR
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte*) DTV_PALETTE
|
||||
(byte[$10]) DTV_PALETTE_DEFAULT
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
(byte*) DTV_PLANEA_START_HI
|
||||
(byte*) DTV_PLANEA_START_LO
|
||||
(byte*) DTV_PLANEA_START_MI
|
||||
(byte*) DTV_PLANEA_STEP
|
||||
(byte*) DTV_PLANEB_MODULO_HI
|
||||
(byte*) DTV_PLANEB_MODULO_LO
|
||||
(byte*) DTV_PLANEB_START_HI
|
||||
(byte*) DTV_PLANEB_START_LO
|
||||
(byte*) DTV_PLANEB_START_MI
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte[]) SRCA
|
||||
(byte) SRCA_LEN
|
||||
(byte[]) SRCB
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(byte~) main::$15 202.0
|
||||
(byte) main::r
|
||||
@ -1777,34 +1111,6 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(const byte*) DTV_BLITTER_ALU#0 DTV_BLITTER_ALU = ((byte*))(word/dword/signed dword) $d33e
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
@ -1867,139 +1173,34 @@ FINAL SYMBOL TABLE
|
||||
(const byte*) DTV_BLITTER_TRANSPARANCY#0 DTV_BLITTER_TRANSPARANCY = ((byte*))(word/dword/signed dword) $d33b
|
||||
(byte) DTV_BLIT_ADD
|
||||
(const byte) DTV_BLIT_ADD#0 DTV_BLIT_ADD = (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(const byte) DTV_BLIT_CLEAR_IRQ#0 DTV_BLIT_CLEAR_IRQ = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(const byte) DTV_BLIT_DEST_CONT#0 DTV_BLIT_DEST_CONT = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(const byte) DTV_BLIT_DEST_FWD#0 DTV_BLIT_DEST_FWD = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(const byte) DTV_BLIT_FORCE_START#0 DTV_BLIT_FORCE_START = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(const byte) DTV_BLIT_SRCA_FWD#0 DTV_BLIT_SRCA_FWD = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(const byte) DTV_BLIT_SRCB_FWD#0 DTV_BLIT_SRCB_FWD = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(const byte) DTV_BLIT_STATUS_BUSY#0 DTV_BLIT_STATUS_BUSY = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(const byte) DTV_BLIT_TRANSPARANCY_NONE#0 DTV_BLIT_TRANSPARANCY_NONE = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(byte) DTV_CHUNKY
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_CONTROL
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) $d03f
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(byte) DTV_LINEAR
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte*) DTV_PALETTE
|
||||
(byte[$10]) DTV_PALETTE_DEFAULT
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
(byte*) DTV_PLANEA_START_HI
|
||||
(byte*) DTV_PLANEA_START_LO
|
||||
(byte*) DTV_PLANEA_START_MI
|
||||
(byte*) DTV_PLANEA_STEP
|
||||
(byte*) DTV_PLANEB_MODULO_HI
|
||||
(byte*) DTV_PLANEB_MODULO_LO
|
||||
(byte*) DTV_PLANEB_START_HI
|
||||
(byte*) DTV_PLANEB_START_LO
|
||||
(byte*) DTV_PLANEB_START_MI
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte[]) SRCA
|
||||
(const byte[]) SRCA#0 SRCA = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
|
||||
(byte) SRCA_LEN
|
||||
(const byte) SRCA_LEN#0 SRCA_LEN = (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte[]) SRCB
|
||||
(const byte[]) SRCB#0 SRCB = { (byte/word/signed word/dword/signed dword) $80 }
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(byte~) main::$15 reg byte a 202.0
|
||||
(label) main::@1
|
||||
|
@ -1,34 +1,6 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(const byte*) DTV_BLITTER_ALU#0 DTV_BLITTER_ALU = ((byte*))(word/dword/signed dword) $d33e
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
@ -91,139 +63,34 @@
|
||||
(const byte*) DTV_BLITTER_TRANSPARANCY#0 DTV_BLITTER_TRANSPARANCY = ((byte*))(word/dword/signed dword) $d33b
|
||||
(byte) DTV_BLIT_ADD
|
||||
(const byte) DTV_BLIT_ADD#0 DTV_BLIT_ADD = (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(const byte) DTV_BLIT_CLEAR_IRQ#0 DTV_BLIT_CLEAR_IRQ = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(const byte) DTV_BLIT_DEST_CONT#0 DTV_BLIT_DEST_CONT = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(const byte) DTV_BLIT_DEST_FWD#0 DTV_BLIT_DEST_FWD = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(const byte) DTV_BLIT_FORCE_START#0 DTV_BLIT_FORCE_START = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(const byte) DTV_BLIT_SRCA_FWD#0 DTV_BLIT_SRCA_FWD = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(const byte) DTV_BLIT_SRCB_FWD#0 DTV_BLIT_SRCB_FWD = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(const byte) DTV_BLIT_STATUS_BUSY#0 DTV_BLIT_STATUS_BUSY = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(const byte) DTV_BLIT_TRANSPARANCY_NONE#0 DTV_BLIT_TRANSPARANCY_NONE = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(byte) DTV_CHUNKY
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_CONTROL
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) $d03f
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(byte) DTV_LINEAR
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte*) DTV_PALETTE
|
||||
(byte[$10]) DTV_PALETTE_DEFAULT
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
(byte*) DTV_PLANEA_START_HI
|
||||
(byte*) DTV_PLANEA_START_LO
|
||||
(byte*) DTV_PLANEA_START_MI
|
||||
(byte*) DTV_PLANEA_STEP
|
||||
(byte*) DTV_PLANEB_MODULO_HI
|
||||
(byte*) DTV_PLANEB_MODULO_LO
|
||||
(byte*) DTV_PLANEB_START_HI
|
||||
(byte*) DTV_PLANEB_START_LO
|
||||
(byte*) DTV_PLANEB_START_MI
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte[]) SRCA
|
||||
(const byte[]) SRCA#0 SRCA = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' }
|
||||
(byte) SRCA_LEN
|
||||
(const byte) SRCA_LEN#0 SRCA_LEN = (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte[]) SRCB
|
||||
(const byte[]) SRCB#0 SRCB = { (byte/word/signed word/dword/signed dword) $80 }
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(byte~) main::$15 reg byte a 202.0
|
||||
(label) main::@1
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -3,187 +3,22 @@
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
(byte*) DTV_BLITTER_DEST_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_LO
|
||||
(byte*) DTV_BLITTER_DEST_LO
|
||||
(byte*) DTV_BLITTER_DEST_MI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_HI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_LO
|
||||
(byte*) DTV_BLITTER_DEST_STEP
|
||||
(byte*) DTV_BLITTER_LEN_HI
|
||||
(byte*) DTV_BLITTER_LEN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_LO
|
||||
(byte*) DTV_BLITTER_SRCA_MI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCA_STEP
|
||||
(byte*) DTV_BLITTER_SRCB_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCB_LO
|
||||
(byte*) DTV_BLITTER_SRCB_MI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_CHUNKY
|
||||
(byte) DTV_COLORRAM_OFF
|
||||
(dword) DTV_COLOR_BANK_DEFAULT
|
||||
(byte*) DTV_COLOR_BANK_HI
|
||||
(byte*) DTV_COLOR_BANK_LO
|
||||
(byte*) DTV_CONTROL
|
||||
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) $d03c
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) $d03f
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(byte) DTV_HIGHCOLOR
|
||||
(const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) DTV_LINEAR
|
||||
(byte) DTV_OVERSCAN
|
||||
(byte*) DTV_PALETTE
|
||||
(const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) $d200
|
||||
(byte[$10]) DTV_PALETTE_DEFAULT
|
||||
(byte*) DTV_PLANEA_MODULO_HI
|
||||
(byte*) DTV_PLANEA_MODULO_LO
|
||||
(byte*) DTV_PLANEA_START_HI
|
||||
(byte*) DTV_PLANEA_START_LO
|
||||
(byte*) DTV_PLANEA_START_MI
|
||||
(byte*) DTV_PLANEA_STEP
|
||||
(byte*) DTV_PLANEB_MODULO_HI
|
||||
(byte*) DTV_PLANEB_MODULO_LO
|
||||
(byte*) DTV_PLANEB_START_HI
|
||||
(byte*) DTV_PLANEB_START_LO
|
||||
(byte*) DTV_PLANEB_START_MI
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -1600,10 +1600,7 @@ gfx_init_plane_fill: {
|
||||
lda _0+3
|
||||
sta _1+1
|
||||
lda _1
|
||||
tax
|
||||
txa
|
||||
jsr dtvSetCpuBankSegment1
|
||||
inx
|
||||
lda plane_addr
|
||||
sta _4
|
||||
lda plane_addr+1
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -11,14 +11,10 @@
|
||||
(const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4
|
||||
(const byte*) BGCOL4#0 BGCOL4 = ((byte*))(word/dword/signed dword) $d024
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
@ -27,86 +23,12 @@
|
||||
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(const byte*) CIA1_PORT_B_DDR#0 CIA1_PORT_B_DDR = ((byte*))(word/dword/signed dword) $dc03
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) $d800
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
(byte*) DTV_BLITTER_DEST_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_LO
|
||||
(byte*) DTV_BLITTER_DEST_LO
|
||||
(byte*) DTV_BLITTER_DEST_MI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_HI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_LO
|
||||
(byte*) DTV_BLITTER_DEST_STEP
|
||||
(byte*) DTV_BLITTER_LEN_HI
|
||||
(byte*) DTV_BLITTER_LEN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_LO
|
||||
(byte*) DTV_BLITTER_SRCA_MI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCA_STEP
|
||||
(byte*) DTV_BLITTER_SRCB_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCB_LO
|
||||
(byte*) DTV_BLITTER_SRCB_MI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_CHUNKY
|
||||
@ -123,10 +45,8 @@
|
||||
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) $d03c
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) $d03f
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(const byte*) DTV_GRAPHICS_VIC_BANK#0 DTV_GRAPHICS_VIC_BANK = ((byte*))(word/dword/signed dword) $d03d
|
||||
(byte) DTV_HIGHCOLOR
|
||||
@ -163,7 +83,6 @@
|
||||
(const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) $d04a
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) $d04c
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte*) FORM_CHARSET
|
||||
(const byte*) FORM_CHARSET#0 FORM_CHARSET = ((byte*))(word/signed word/dword/signed dword) $1800
|
||||
(byte[]) FORM_COLS
|
||||
@ -174,35 +93,6 @@
|
||||
(const byte*) FORM_SCREEN#0 FORM_SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte[]) FORM_TEXT
|
||||
(const byte[]) FORM_TEXT#0 FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @"+(string) " @"+(string) " PRESET 0 Standard Charset @"+(string) " @"+(string) " CONTROL PLANE A VIC II @"+(string) " bmm 0 pattern p0 screen s0 @"+(string) " mcm 0 start 00 gfx g0 @"+(string) " ecm 0 step 00 colors c0 @"+(string) " hicolor 0 modulo 00 @"+(string) " linear 0 COLORS @"+(string) " color off 0 PLANE B palet 0 @"+(string) " chunky 0 pattern p0 bgcol0 00 @"+(string) " border off 0 start 00 bgcol1 00 @"+(string) " overscan 0 step 00 bgcol2 00 @"+(string) " modulo 00 bgcol3 00 @"+(string) "@"
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(byte) KEY_1
|
||||
(byte) KEY_2
|
||||
(byte) KEY_3
|
||||
(byte) KEY_4
|
||||
(byte) KEY_5
|
||||
(byte) KEY_6
|
||||
(byte) KEY_7
|
||||
(byte) KEY_8
|
||||
(byte) KEY_9
|
||||
(byte) KEY_A
|
||||
(byte) KEY_ARROW_LEFT
|
||||
(byte) KEY_ARROW_UP
|
||||
(byte) KEY_ASTERISK
|
||||
(byte) KEY_AT
|
||||
(byte) KEY_B
|
||||
(byte) KEY_C
|
||||
(byte) KEY_COLON
|
||||
(byte) KEY_COMMA
|
||||
(byte) KEY_COMMODORE
|
||||
(const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) $3d
|
||||
(byte) KEY_CRSR_DOWN
|
||||
@ -211,27 +101,8 @@
|
||||
(const byte) KEY_CRSR_RIGHT#0 KEY_CRSR_RIGHT = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) KEY_CTRL
|
||||
(const byte) KEY_CTRL#0 KEY_CTRL = (byte/signed byte/word/signed word/dword/signed dword) $3a
|
||||
(byte) KEY_D
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(byte) KEY_E
|
||||
(byte) KEY_EQUALS
|
||||
(byte) KEY_F
|
||||
(byte) KEY_F1
|
||||
(byte) KEY_F3
|
||||
(byte) KEY_F5
|
||||
(byte) KEY_F7
|
||||
(byte) KEY_G
|
||||
(byte) KEY_H
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(byte) KEY_J
|
||||
(byte) KEY_K
|
||||
(byte) KEY_L
|
||||
(byte) KEY_LSHIFT
|
||||
(const byte) KEY_LSHIFT#0 KEY_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
(byte) KEY_M
|
||||
(byte) KEY_MINUS
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(const byte) KEY_MODIFIER_COMMODORE#0 KEY_MODIFIER_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
@ -242,36 +113,10 @@
|
||||
(const byte) KEY_MODIFIER_RSHIFT#0 KEY_MODIFIER_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(const byte) KEY_MODIFIER_SHIFT#0 KEY_MODIFIER_SHIFT = (const byte) KEY_MODIFIER_LSHIFT#0|(const byte) KEY_MODIFIER_RSHIFT#0
|
||||
(byte) KEY_N
|
||||
(byte) KEY_O
|
||||
(byte) KEY_P
|
||||
(byte) KEY_PLUS
|
||||
(byte) KEY_POUND
|
||||
(byte) KEY_Q
|
||||
(byte) KEY_R
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(const byte) KEY_RSHIFT#0 KEY_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) $34
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(byte) KEY_SEMICOLON
|
||||
(byte) KEY_SLASH
|
||||
(byte) KEY_SPACE
|
||||
(const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) $3c
|
||||
(byte) KEY_T
|
||||
(byte) KEY_U
|
||||
(byte) KEY_V
|
||||
(byte) KEY_W
|
||||
(byte) KEY_X
|
||||
(byte) KEY_Y
|
||||
(byte) KEY_Z
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(dword) PLANE_8BPP_CHUNKY
|
||||
(const dword) PLANE_8BPP_CHUNKY#0 PLANE_8BPP_CHUNKY = (dword/signed dword) $20000
|
||||
(dword) PLANE_BLANK
|
||||
@ -290,33 +135,16 @@
|
||||
(const dword) PLANE_VERTICAL2#0 PLANE_VERTICAL2 = (dword/signed dword) $36000
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte*) VIC_BITMAP
|
||||
(const byte*) VIC_BITMAP#0 VIC_BITMAP = ((byte*))(word/signed word/dword/signed dword) $6000
|
||||
(byte) VIC_BMM
|
||||
@ -339,7 +167,6 @@
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte*) VIC_SCREEN0
|
||||
(const byte*) VIC_SCREEN0#0 VIC_SCREEN0 = ((byte*))(word/signed word/dword/signed dword) $4000
|
||||
(byte*) VIC_SCREEN1
|
||||
@ -350,8 +177,6 @@
|
||||
(const byte*) VIC_SCREEN3#0 VIC_SCREEN3 = ((byte*))(word/signed word/dword/signed dword) $4c00
|
||||
(byte*) VIC_SCREEN4
|
||||
(const byte*) VIC_SCREEN4#0 VIC_SCREEN4 = ((byte*))(word/signed word/dword/signed dword) $5000
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) apply_preset((byte) apply_preset::idx)
|
||||
(label) apply_preset::@1
|
||||
(label) apply_preset::@10
|
||||
@ -1022,17 +847,16 @@
|
||||
(byte) gfx_init_plane_fill::by#1 by zp ZP_BYTE:7 16.5
|
||||
(byte) gfx_init_plane_fill::by#4 by zp ZP_BYTE:7 3.6666666666666665
|
||||
(byte) gfx_init_plane_fill::fill
|
||||
(byte) gfx_init_plane_fill::fill#6 fill zp ZP_BYTE:2 5.315789473684211
|
||||
(byte) gfx_init_plane_fill::fill#6 fill zp ZP_BYTE:2 5.611111111111111
|
||||
(byte*) gfx_init_plane_fill::gfxb
|
||||
(byte*) gfx_init_plane_fill::gfxb#1 gfxb zp ZP_WORD:3 42.599999999999994
|
||||
(byte*) gfx_init_plane_fill::gfxb#2 gfxb zp ZP_WORD:3 157.0
|
||||
(byte*) gfx_init_plane_fill::gfxb#3 gfxb zp ZP_WORD:3 24.0
|
||||
(byte*~) gfx_init_plane_fill::gfxb#6 gfxb zp ZP_WORD:3 4.0
|
||||
(byte) gfx_init_plane_fill::gfxbCpuBank
|
||||
(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte x 2.0
|
||||
(byte) gfx_init_plane_fill::gfxbCpuBank#1 reg byte x 20.0
|
||||
(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte a 4.0
|
||||
(dword) gfx_init_plane_fill::plane_addr
|
||||
(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:9 0.5714285714285714
|
||||
(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:9 0.6666666666666666
|
||||
(void()) gfx_init_plane_full()
|
||||
(label) gfx_init_plane_full::@return
|
||||
(void()) gfx_init_plane_horisontal()
|
||||
@ -1333,7 +1157,6 @@
|
||||
(byte) gfx_mode::vic_control#5 reg byte x 2.0
|
||||
(byte) gfx_mode::vic_control2
|
||||
(byte) gfx_mode::vic_control2#2 reg byte a 2.0
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(byte()) keyboard_event_get()
|
||||
(label) keyboard_event_get::@1
|
||||
(label) keyboard_event_get::@return
|
||||
@ -1671,8 +1494,7 @@ reg byte a [ form_set_screen::$0 ]
|
||||
reg byte a [ form_set_screen::$1 ]
|
||||
reg byte a [ print_str_lines::ch#0 ]
|
||||
zp ZP_DWORD:19 [ gfx_init_plane_fill::$0 ]
|
||||
reg byte x [ gfx_init_plane_fill::gfxbCpuBank#0 ]
|
||||
reg byte x [ gfx_init_plane_fill::gfxbCpuBank#1 ]
|
||||
reg byte a [ gfx_init_plane_fill::gfxbCpuBank#0 ]
|
||||
reg byte a [ gfx_init_plane_horisontal2::$8 ]
|
||||
reg byte a [ gfx_init_plane_horisontal2::row#0 ]
|
||||
reg byte a [ gfx_init_plane_horisontal::$8 ]
|
||||
|
@ -1502,7 +1502,7 @@ print_str_lines: scope:[print_str_lines] from menu::@29
|
||||
to:print_str_lines::@1
|
||||
print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@5
|
||||
[866] (byte*) print_line_cursor#17 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@5/(byte*) print_line_cursor#19 )
|
||||
[866] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@5/(byte*~) print_char_cursor#103 )
|
||||
[866] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@5/(byte*~) print_char_cursor#101 )
|
||||
[866] (byte*) print_str_lines::str#2 ← phi( print_str_lines/(const byte[]) MENU_TEXT#0 print_str_lines::@5/(byte*) print_str_lines::str#0 )
|
||||
[867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@2
|
||||
to:print_str_lines::@return
|
||||
@ -1527,7 +1527,7 @@ print_str_lines::@3: scope:[print_str_lines] from print_str_lines::@2 print_str
|
||||
print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@3
|
||||
[877] phi()
|
||||
[878] call print_ln
|
||||
[879] (byte*~) print_char_cursor#103 ← (byte*) print_line_cursor#19
|
||||
[879] (byte*~) print_char_cursor#101 ← (byte*) print_line_cursor#19
|
||||
to:print_str_lines::@1
|
||||
print_ln: scope:[print_ln] from print_str_lines::@5
|
||||
[880] phi()
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -17,95 +17,16 @@
|
||||
(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) $d800
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) DTV_BADLINE_OFF
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
(byte*) DTV_BLITTER_DEST_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_HI
|
||||
(byte*) DTV_BLITTER_DEST_LIN_LO
|
||||
(byte*) DTV_BLITTER_DEST_LO
|
||||
(byte*) DTV_BLITTER_DEST_MI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_HI
|
||||
(byte*) DTV_BLITTER_DEST_MOD_LO
|
||||
(byte*) DTV_BLITTER_DEST_STEP
|
||||
(byte*) DTV_BLITTER_LEN_HI
|
||||
(byte*) DTV_BLITTER_LEN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCA_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCA_LO
|
||||
(byte*) DTV_BLITTER_SRCA_MI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCA_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCA_STEP
|
||||
(byte*) DTV_BLITTER_SRCB_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_HI
|
||||
(byte*) DTV_BLITTER_SRCB_LIN_LO
|
||||
(byte*) DTV_BLITTER_SRCB_LO
|
||||
(byte*) DTV_BLITTER_SRCB_MI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_HI
|
||||
(byte*) DTV_BLITTER_SRCB_MOD_LO
|
||||
(byte*) DTV_BLITTER_SRCB_STEP
|
||||
(byte*) DTV_BLITTER_TRANSPARANCY
|
||||
(byte) DTV_BLIT_ADD
|
||||
(byte) DTV_BLIT_AND
|
||||
(byte) DTV_BLIT_CIA_IRQ
|
||||
(byte) DTV_BLIT_CLEAR_IRQ
|
||||
(byte) DTV_BLIT_DEST_CONT
|
||||
(byte) DTV_BLIT_DEST_FWD
|
||||
(byte) DTV_BLIT_DISABLE_B
|
||||
(byte) DTV_BLIT_FORCE_START
|
||||
(byte) DTV_BLIT_IRQ_EN
|
||||
(byte) DTV_BLIT_NAND
|
||||
(byte) DTV_BLIT_NOR
|
||||
(byte) DTV_BLIT_OR
|
||||
(byte) DTV_BLIT_SHIFT0
|
||||
(byte) DTV_BLIT_SHIFT1
|
||||
(byte) DTV_BLIT_SHIFT2
|
||||
(byte) DTV_BLIT_SHIFT3
|
||||
(byte) DTV_BLIT_SHIFT4
|
||||
(byte) DTV_BLIT_SHIFT5
|
||||
(byte) DTV_BLIT_SHIFT6
|
||||
(byte) DTV_BLIT_SHIFT7
|
||||
(byte) DTV_BLIT_SRCA_CONT
|
||||
(byte) DTV_BLIT_SRCA_FWD
|
||||
(byte) DTV_BLIT_SRCB_CONT
|
||||
(byte) DTV_BLIT_SRCB_FWD
|
||||
(byte) DTV_BLIT_STATUS_BUSY
|
||||
(byte) DTV_BLIT_STATUS_IRQ
|
||||
(byte) DTV_BLIT_SUB
|
||||
(byte) DTV_BLIT_TRANSPARANCY_NONE
|
||||
(byte) DTV_BLIT_VBLANK
|
||||
(byte) DTV_BLIT_VIC_IRQ
|
||||
(byte) DTV_BLIT_WRITE_NONTRANSPARENT
|
||||
(byte) DTV_BLIT_WRITE_TRANSPARENT
|
||||
(byte) DTV_BLIT_XNOR
|
||||
(byte) DTV_BLIT_XOR
|
||||
(byte) DTV_BORDER_OFF
|
||||
(const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) DTV_CHUNKY
|
||||
@ -122,10 +43,8 @@
|
||||
(const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) $d03c
|
||||
(byte*) DTV_FEATURE
|
||||
(const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) $d03f
|
||||
(byte) DTV_FEATURE_DISABLE_TIL_RESET
|
||||
(byte) DTV_FEATURE_ENABLE
|
||||
(const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) DTV_GRAPHICS_HICOL_BANK
|
||||
(byte*) DTV_GRAPHICS_VIC_BANK
|
||||
(const byte*) DTV_GRAPHICS_VIC_BANK#0 DTV_GRAPHICS_VIC_BANK = ((byte*))(word/dword/signed dword) $d03d
|
||||
(byte) DTV_HIGHCOLOR
|
||||
@ -162,18 +81,8 @@
|
||||
(const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) $d04a
|
||||
(byte*) DTV_PLANEB_STEP
|
||||
(const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) $d04c
|
||||
(byte*) DTV_SPRITE_BANK
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) $23
|
||||
(byte) KEY_1
|
||||
@ -184,122 +93,48 @@
|
||||
(const byte) KEY_3#0 KEY_3 = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) KEY_4
|
||||
(const byte) KEY_4#0 KEY_4 = (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) KEY_5
|
||||
(byte) KEY_6
|
||||
(const byte) KEY_6#0 KEY_6 = (byte/signed byte/word/signed word/dword/signed dword) $13
|
||||
(byte) KEY_7
|
||||
(const byte) KEY_7#0 KEY_7 = (byte/signed byte/word/signed word/dword/signed dword) $18
|
||||
(byte) KEY_8
|
||||
(const byte) KEY_8#0 KEY_8 = (byte/signed byte/word/signed word/dword/signed dword) $1b
|
||||
(byte) KEY_9
|
||||
(byte) KEY_A
|
||||
(const byte) KEY_A#0 KEY_A = (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) KEY_ARROW_LEFT
|
||||
(byte) KEY_ARROW_UP
|
||||
(byte) KEY_ASTERISK
|
||||
(byte) KEY_AT
|
||||
(byte) KEY_B
|
||||
(const byte) KEY_B#0 KEY_B = (byte/signed byte/word/signed word/dword/signed dword) $1c
|
||||
(byte) KEY_C
|
||||
(const byte) KEY_C#0 KEY_C = (byte/signed byte/word/signed word/dword/signed dword) $14
|
||||
(byte) KEY_COLON
|
||||
(byte) KEY_COMMA
|
||||
(byte) KEY_COMMODORE
|
||||
(byte) KEY_CRSR_DOWN
|
||||
(byte) KEY_CRSR_RIGHT
|
||||
(byte) KEY_CTRL
|
||||
(byte) KEY_D
|
||||
(const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) $12
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(byte) KEY_E
|
||||
(const byte) KEY_E#0 KEY_E = (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) KEY_EQUALS
|
||||
(byte) KEY_F
|
||||
(byte) KEY_F1
|
||||
(byte) KEY_F3
|
||||
(byte) KEY_F5
|
||||
(byte) KEY_F7
|
||||
(byte) KEY_G
|
||||
(byte) KEY_H
|
||||
(const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) $1d
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(byte) KEY_J
|
||||
(byte) KEY_K
|
||||
(byte) KEY_L
|
||||
(const byte) KEY_L#0 KEY_L = (byte/signed byte/word/signed word/dword/signed dword) $2a
|
||||
(byte) KEY_LSHIFT
|
||||
(byte) KEY_M
|
||||
(byte) KEY_MINUS
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
(byte) KEY_MODIFIER_LSHIFT
|
||||
(byte) KEY_MODIFIER_RSHIFT
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(byte) KEY_N
|
||||
(byte) KEY_O
|
||||
(const byte) KEY_O#0 KEY_O = (byte/signed byte/word/signed word/dword/signed dword) $26
|
||||
(byte) KEY_P
|
||||
(byte) KEY_PLUS
|
||||
(byte) KEY_POUND
|
||||
(byte) KEY_Q
|
||||
(byte) KEY_R
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(byte) KEY_SEMICOLON
|
||||
(byte) KEY_SLASH
|
||||
(byte) KEY_SPACE
|
||||
(const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) $3c
|
||||
(byte) KEY_T
|
||||
(byte) KEY_U
|
||||
(const byte) KEY_U#0 KEY_U = (byte/signed byte/word/signed word/dword/signed dword) $1e
|
||||
(byte) KEY_V
|
||||
(byte) KEY_W
|
||||
(byte) KEY_X
|
||||
(byte) KEY_Y
|
||||
(byte) KEY_Z
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(const byte) LIGHT_GREEN#0 LIGHT_GREEN = (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_GREY
|
||||
(byte[]) MENU_TEXT
|
||||
(const byte[]) MENU_TEXT#0 MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@"+(string) " OHIIMCC@"+(string) " LUNCMMM@"+(string) "----------------------------------------@"+(string) "1. Standard Char (V) 0000000@"+(string) "2. Extended Color Char (V) 0000001@"+(string) "3. Multicolor Char (V) 0000010@"+(string) "4. Standard Bitmap (V) 0000100@"+(string) "5. Multicolor Bitmap (V) 0000110@"+(string) "6. High Color Standard Char (H) 0001000@"+(string) "7. High Extended Color Char (H) 0001001@"+(string) "8. High Multicolor Char (H) 0001010@"+(string) "9. High Multicolor Bitmap (H) 0001110@"+(string) "a. Sixs Fred 2 (D) 0010111@"+(string) "b. Two Plane Bitmap (D) 0011101@"+(string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+(string) "d. 8bpp Pixel Cell (D) 0111011@"+(string) "e. Chunky 8bpp Bitmap (D) 1111011@"+(string) "----------------------------------------@"+(string) " (V) vicII (H) vicII+hicol (D) c64dtv@"+(string) "@"
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte*) VIC_CONTROL
|
||||
@ -318,9 +153,6 @@
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:2 2.0
|
||||
(label) bitmap_clear::@1
|
||||
@ -593,9 +425,6 @@
|
||||
(byte) dtv_control#114 dtv_control zp ZP_BYTE:4 42.099999999999994
|
||||
(byte) dtv_control#145 dtv_control zp ZP_BYTE:4 2.0
|
||||
(byte) dtv_control#17 dtv_control zp ZP_BYTE:4 67.33333333333333
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(byte[8]) keyboard_events
|
||||
(byte) keyboard_events_size
|
||||
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
||||
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
|
||||
(label) keyboard_key_pressed::@1
|
||||
@ -640,8 +469,6 @@
|
||||
(byte) keyboard_matrix_read::rowid#0 reg byte y 4.0
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) $fe, (byte/word/signed word/dword/signed dword) $fd, (byte/word/signed word/dword/signed dword) $fb, (byte/word/signed word/dword/signed dword) $f7, (byte/word/signed word/dword/signed dword) $ef, (byte/word/signed word/dword/signed dword) $df, (byte/word/signed word/dword/signed dword) $bf, (byte/signed byte/word/signed word/dword/signed dword) $7f }
|
||||
(byte) keyboard_modifiers
|
||||
(byte[8]) keyboard_scan_values
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(void()) menu()
|
||||
@ -1317,7 +1144,7 @@
|
||||
(byte) mode_twoplanebitmap::i#2 reg byte x 202.0
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:5 2002.0
|
||||
(byte*~) print_char_cursor#103 print_char_cursor zp ZP_WORD:5 202.0
|
||||
(byte*~) print_char_cursor#101 print_char_cursor zp ZP_WORD:5 202.0
|
||||
(byte*) print_char_cursor#17 print_char_cursor zp ZP_WORD:5 821.0
|
||||
(byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:5 101.0
|
||||
(byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:5 572.0
|
||||
@ -1327,7 +1154,6 @@
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 151.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 151.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#17 print_line_cursor zp ZP_WORD:13 8.583333333333332
|
||||
(byte*) print_line_cursor#18 print_line_cursor zp ZP_WORD:13 2004.0
|
||||
@ -1358,7 +1184,7 @@ zp ZP_WORD:2 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x
|
||||
reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ]
|
||||
zp ZP_BYTE:4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 dtv_control#114 dtv_control#145 dtv_control#17 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#5 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_init::$6 ]
|
||||
reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ]
|
||||
zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ]
|
||||
zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ]
|
||||
reg byte x [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ]
|
||||
reg byte y [ keyboard_key_pressed::key#20 ]
|
||||
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
||||
|
12
src/test/ref/comma-expr-1.asm
Normal file
12
src/test/ref/comma-expr-1.asm
Normal file
@ -0,0 +1,12 @@
|
||||
// Tests simple comma-expression (in parenthesis)
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 3
|
||||
.const c = b+1
|
||||
lda #c
|
||||
sta SCREEN
|
||||
rts
|
||||
}
|
15
src/test/ref/comma-expr-1.cfg
Normal file
15
src/test/ref/comma-expr-1.cfg
Normal file
@ -0,0 +1,15 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi()
|
||||
main: scope:[main] from @1
|
||||
[4] *((const byte*) main::SCREEN#0) ← (const byte) main::c#0
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[5] return
|
||||
to:@return
|
234
src/test/ref/comma-expr-1.log
Normal file
234
src/test/ref/comma-expr-1.log
Normal file
@ -0,0 +1,234 @@
|
||||
Identified constant variable (byte) main::b
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) main::SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
(byte) main::b#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::b#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::c#0 ← (byte/signed word/word/dword/signed dword~) main::$1
|
||||
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::c#0
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(byte/signed word/word/dword/signed dword~) main::$1
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(byte*) main::SCREEN#0
|
||||
(byte) main::b
|
||||
(byte) main::b#0
|
||||
(byte) main::c
|
||||
(byte) main::c#0
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) main::c#0 = (byte/signed word/word/dword/signed dword~) main::$1
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Constant (const byte*) main::SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte) main::b#0 = 3
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::c#0 = main::b#0+1
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Consolidated array index constant in *(main::SCREEN#0+0)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Simplifying constant plus zero main::SCREEN#0+0
|
||||
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
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi()
|
||||
main: scope:[main] from @1
|
||||
[4] *((const byte*) main::SCREEN#0) ← (const byte) main::c#0
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[5] return
|
||||
to:@return
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte*) main::SCREEN
|
||||
(byte) main::b
|
||||
(byte) main::c
|
||||
|
||||
Initial phi equivalence classes
|
||||
Complete equivalence classes
|
||||
|
||||
INITIAL ASM
|
||||
//SEG0 File Comments
|
||||
// Tests simple comma-expression (in parenthesis)
|
||||
//SEG1 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
//SEG3 @begin
|
||||
bbegin:
|
||||
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
b1_from_bbegin:
|
||||
jmp b1
|
||||
//SEG5 @1
|
||||
b1:
|
||||
//SEG6 [2] call main
|
||||
jsr main
|
||||
//SEG7 [3] phi from @1 to @end [phi:@1->@end]
|
||||
bend_from_b1:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 3
|
||||
.const c = b+1
|
||||
//SEG10 [4] *((const byte*) main::SCREEN#0) ← (const byte) main::c#0 -- _deref_pbuc1=vbuc2
|
||||
lda #c
|
||||
sta SCREEN
|
||||
jmp breturn
|
||||
//SEG11 main::@return
|
||||
breturn:
|
||||
//SEG12 [5] return
|
||||
rts
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((const byte*) main::SCREEN#0) ← (const byte) main::c#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 27 combination
|
||||
Uplifting [] best 27 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 File Comments
|
||||
// Tests simple comma-expression (in parenthesis)
|
||||
//SEG1 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
//SEG3 @begin
|
||||
bbegin:
|
||||
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
b1_from_bbegin:
|
||||
jmp b1
|
||||
//SEG5 @1
|
||||
b1:
|
||||
//SEG6 [2] call main
|
||||
jsr main
|
||||
//SEG7 [3] phi from @1 to @end [phi:@1->@end]
|
||||
bend_from_b1:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 3
|
||||
.const c = b+1
|
||||
//SEG10 [4] *((const byte*) main::SCREEN#0) ← (const byte) main::c#0 -- _deref_pbuc1=vbuc2
|
||||
lda #c
|
||||
sta SCREEN
|
||||
jmp breturn
|
||||
//SEG11 main::@return
|
||||
breturn:
|
||||
//SEG12 [5] return
|
||||
rts
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction b1_from_bbegin:
|
||||
Removing instruction b1:
|
||||
Removing instruction bend_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction bend:
|
||||
Removing instruction breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
Updating BasicUpstart to call main directly
|
||||
Removing instruction jsr main
|
||||
Succesful ASM optimization Pass5SkipBegin
|
||||
Removing instruction bbegin:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte) main::b
|
||||
(const byte) main::b#0 b = (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) main::c
|
||||
(const byte) main::c#0 c = (const byte) main::b#0+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 12
|
||||
|
||||
//SEG0 File Comments
|
||||
// Tests simple comma-expression (in parenthesis)
|
||||
//SEG1 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
//SEG3 @begin
|
||||
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
//SEG5 @1
|
||||
//SEG6 [2] call main
|
||||
//SEG7 [3] phi from @1 to @end [phi:@1->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const b = 3
|
||||
.const c = b+1
|
||||
//SEG10 [4] *((const byte*) main::SCREEN#0) ← (const byte) main::c#0 -- _deref_pbuc1=vbuc2
|
||||
lda #c
|
||||
sta SCREEN
|
||||
//SEG11 main::@return
|
||||
//SEG12 [5] return
|
||||
rts
|
||||
}
|
||||
|
12
src/test/ref/comma-expr-1.sym
Normal file
12
src/test/ref/comma-expr-1.sym
Normal file
@ -0,0 +1,12 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte) main::b
|
||||
(const byte) main::b#0 b = (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) main::c
|
||||
(const byte) main::c#0 c = (const byte) main::b#0+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
|
17
src/test/ref/comma-expr-for.asm
Normal file
17
src/test/ref/comma-expr-for.asm
Normal file
@ -0,0 +1,17 @@
|
||||
// Tests comma-expressions in for()-statement
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
ldx #0
|
||||
lda #'g'
|
||||
b1:
|
||||
sta SCREEN,x
|
||||
inx
|
||||
clc
|
||||
adc #1
|
||||
cpx #$a
|
||||
bcc b1
|
||||
rts
|
||||
}
|
23
src/test/ref/comma-expr-for.cfg
Normal file
23
src/test/ref/comma-expr-for.cfg
Normal file
@ -0,0 +1,23 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi()
|
||||
main: scope:[main] from @1
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
[5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 )
|
||||
[5] (byte) main::j#2 ← phi( main/(byte) 'g' main::@1/(byte) main::j#1 )
|
||||
[6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::j#2
|
||||
[7] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||
[8] (byte) main::j#1 ← ++ (byte) main::j#2
|
||||
[9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) $a) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1
|
||||
[10] return
|
||||
to:@return
|
347
src/test/ref/comma-expr-for.log
Normal file
347
src/test/ref/comma-expr-for.log
Normal file
@ -0,0 +1,347 @@
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) main::SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
(byte) main::j#0 ← (byte) 'g'
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||||
(byte) main::j#2 ← phi( main/(byte) main::j#0 main::@1/(byte) main::j#1 )
|
||||
*((byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::j#2
|
||||
(byte) main::i#1 ← ++ (byte) main::i#2
|
||||
(byte) main::j#1 ← ++ (byte) main::j#2
|
||||
(bool~) main::$1 ← (byte) main::i#1 < (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
if((bool~) main::$1) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(bool~) main::$1
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(byte*) main::SCREEN#0
|
||||
(byte) main::i
|
||||
(byte) main::i#0
|
||||
(byte) main::i#1
|
||||
(byte) main::i#2
|
||||
(byte) main::j
|
||||
(byte) main::j#0
|
||||
(byte) main::j#1
|
||||
(byte) main::j#2
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Simple Condition (bool~) main::$1 [8] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) $a) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) main::SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte) main::j#0 = 'g'
|
||||
Constant (const byte) main::i#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Inlining constant with var siblings (const byte) main::j#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined main::j#0 = (byte) 'g'
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@3(between main::@1 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
Created 2 initial phi equivalence classes
|
||||
Coalesced [11] main::j#3 ← main::j#1
|
||||
Coalesced [12] main::i#3 ← main::i#1
|
||||
Coalesced down to 2 phi equivalence classes
|
||||
Culled Empty Block (label) main::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi()
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi()
|
||||
main: scope:[main] from @1
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
[5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 )
|
||||
[5] (byte) main::j#2 ← phi( main/(byte) 'g' main::@1/(byte) main::j#1 )
|
||||
[6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::j#2
|
||||
[7] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||
[8] (byte) main::j#1 ← ++ (byte) main::j#2
|
||||
[9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) $a) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1
|
||||
[10] return
|
||||
to:@return
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte*) main::SCREEN
|
||||
(byte) main::i
|
||||
(byte) main::i#1 11.0
|
||||
(byte) main::i#2 16.5
|
||||
(byte) main::j
|
||||
(byte) main::j#1 11.0
|
||||
(byte) main::j#2 11.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ main::j#2 main::j#1 ]
|
||||
[ main::i#2 main::i#1 ]
|
||||
Complete equivalence classes
|
||||
[ main::j#2 main::j#1 ]
|
||||
[ main::i#2 main::i#1 ]
|
||||
Allocated zp ZP_BYTE:2 [ main::j#2 main::j#1 ]
|
||||
Allocated zp ZP_BYTE:3 [ main::i#2 main::i#1 ]
|
||||
|
||||
INITIAL ASM
|
||||
//SEG0 File Comments
|
||||
// Tests comma-expressions in for()-statement
|
||||
//SEG1 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
//SEG3 @begin
|
||||
bbegin:
|
||||
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
b1_from_bbegin:
|
||||
jmp b1
|
||||
//SEG5 @1
|
||||
b1:
|
||||
//SEG6 [2] call main
|
||||
//SEG7 [4] phi from @1 to main [phi:@1->main]
|
||||
main_from_b1:
|
||||
jsr main
|
||||
//SEG8 [3] phi from @1 to @end [phi:@1->@end]
|
||||
bend_from_b1:
|
||||
jmp bend
|
||||
//SEG9 @end
|
||||
bend:
|
||||
//SEG10 main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.label i = 3
|
||||
.label j = 2
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
sta i
|
||||
//SEG13 [5] phi (byte) main::j#2 = (byte) 'g' [phi:main->main::@1#1] -- vbuz1=vbuc1
|
||||
lda #'g'
|
||||
sta j
|
||||
jmp b1
|
||||
//SEG14 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
||||
b1_from_b1:
|
||||
//SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy
|
||||
//SEG16 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#1] -- register_copy
|
||||
jmp b1
|
||||
//SEG17 main::@1
|
||||
b1:
|
||||
//SEG18 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuz1=vbuz2
|
||||
lda j
|
||||
ldy i
|
||||
sta SCREEN,y
|
||||
//SEG19 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||
inc i
|
||||
//SEG20 [8] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1
|
||||
inc j
|
||||
//SEG21 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) $a) goto main::@1 -- vbuz1_lt_vbuc1_then_la1
|
||||
lda i
|
||||
cmp #$a
|
||||
bcc b1_from_b1
|
||||
jmp breturn
|
||||
//SEG22 main::@return
|
||||
breturn:
|
||||
//SEG23 [10] return
|
||||
rts
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Potential registers zp ZP_BYTE:2 [ main::j#2 main::j#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:3 [ main::i#2 main::i#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 27.5: zp ZP_BYTE:3 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:2 [ main::j#2 main::j#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 303 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::j#2 main::j#1 ]
|
||||
Uplifting [] best 303 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 File Comments
|
||||
// Tests comma-expressions in for()-statement
|
||||
//SEG1 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
//SEG3 @begin
|
||||
bbegin:
|
||||
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
b1_from_bbegin:
|
||||
jmp b1
|
||||
//SEG5 @1
|
||||
b1:
|
||||
//SEG6 [2] call main
|
||||
//SEG7 [4] phi from @1 to main [phi:@1->main]
|
||||
main_from_b1:
|
||||
jsr main
|
||||
//SEG8 [3] phi from @1 to @end [phi:@1->@end]
|
||||
bend_from_b1:
|
||||
jmp bend
|
||||
//SEG9 @end
|
||||
bend:
|
||||
//SEG10 main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG13 [5] phi (byte) main::j#2 = (byte) 'g' [phi:main->main::@1#1] -- vbuaa=vbuc1
|
||||
lda #'g'
|
||||
jmp b1
|
||||
//SEG14 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
||||
b1_from_b1:
|
||||
//SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy
|
||||
//SEG16 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#1] -- register_copy
|
||||
jmp b1
|
||||
//SEG17 main::@1
|
||||
b1:
|
||||
//SEG18 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta SCREEN,x
|
||||
//SEG19 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG20 [8] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuaa=_inc_vbuaa
|
||||
clc
|
||||
adc #1
|
||||
//SEG21 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) $a) goto main::@1 -- vbuxx_lt_vbuc1_then_la1
|
||||
cpx #$a
|
||||
bcc b1_from_b1
|
||||
jmp breturn
|
||||
//SEG22 main::@return
|
||||
breturn:
|
||||
//SEG23 [10] return
|
||||
rts
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction b1_from_bbegin:
|
||||
Removing instruction b1:
|
||||
Removing instruction main_from_b1:
|
||||
Removing instruction bend_from_b1:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction bend:
|
||||
Removing instruction b1_from_main:
|
||||
Removing instruction breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
Updating BasicUpstart to call main directly
|
||||
Removing instruction jsr main
|
||||
Succesful ASM optimization Pass5SkipBegin
|
||||
Removing instruction jmp b1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction bbegin:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 11.0
|
||||
(byte) main::i#2 reg byte x 16.5
|
||||
(byte) main::j
|
||||
(byte) main::j#1 reg byte a 11.0
|
||||
(byte) main::j#2 reg byte a 11.0
|
||||
|
||||
reg byte a [ main::j#2 main::j#1 ]
|
||||
reg byte x [ main::i#2 main::i#1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 201
|
||||
|
||||
//SEG0 File Comments
|
||||
// Tests comma-expressions in for()-statement
|
||||
//SEG1 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
//SEG3 @begin
|
||||
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
//SEG5 @1
|
||||
//SEG6 [2] call main
|
||||
//SEG7 [4] phi from @1 to main [phi:@1->main]
|
||||
//SEG8 [3] phi from @1 to @end [phi:@1->@end]
|
||||
//SEG9 @end
|
||||
//SEG10 main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG13 [5] phi (byte) main::j#2 = (byte) 'g' [phi:main->main::@1#1] -- vbuaa=vbuc1
|
||||
lda #'g'
|
||||
//SEG14 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1]
|
||||
//SEG15 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy
|
||||
//SEG16 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#1] -- register_copy
|
||||
//SEG17 main::@1
|
||||
b1:
|
||||
//SEG18 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte) main::j#2 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||
sta SCREEN,x
|
||||
//SEG19 [7] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
||||
inx
|
||||
//SEG20 [8] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuaa=_inc_vbuaa
|
||||
clc
|
||||
adc #1
|
||||
//SEG21 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) $a) goto main::@1 -- vbuxx_lt_vbuc1_then_la1
|
||||
cpx #$a
|
||||
bcc b1
|
||||
//SEG22 main::@return
|
||||
//SEG23 [10] return
|
||||
rts
|
||||
}
|
||||
|
17
src/test/ref/comma-expr-for.sym
Normal file
17
src/test/ref/comma-expr-for.sym
Normal file
@ -0,0 +1,17 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 11.0
|
||||
(byte) main::i#2 reg byte x 16.5
|
||||
(byte) main::j
|
||||
(byte) main::j#1 reg byte a 11.0
|
||||
(byte) main::j#2 reg byte a 11.0
|
||||
|
||||
reg byte a [ main::j#2 main::j#1 ]
|
||||
reg byte x [ main::i#2 main::i#1 ]
|
@ -47,9 +47,6 @@
|
||||
.label PLAYFIELD_SPRITES = $2000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The size of the playfield
|
||||
.const PLAYFIELD_LINES = $16
|
||||
.const PLAYFIELD_COLS = $a
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
.label SIN = $1400
|
||||
|
@ -24,82 +24,27 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte*) PLAYFIELD_SCREEN_1#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
@ -108,26 +53,9 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) PLAYFIELD_SPRITE_PTRS_1#0 ← (byte*~) $0
|
||||
(byte*~) $1 ← (byte*) PLAYFIELD_SCREEN_2#0 + (word) SPRITE_PTRS#0
|
||||
(byte*) PLAYFIELD_SPRITE_PTRS_2#0 ← (byte*~) $1
|
||||
(byte*) PLAYFIELD_SCREEN_ORIGINAL#0 ← ((byte*)) (word/signed word/dword/signed dword) $1800
|
||||
(byte*) PLAYFIELD_COLORS_ORIGINAL#0 ← ((byte*)) (word/signed word/dword/signed dword) $1c00
|
||||
(byte*) PLAYFIELD_SPRITES#0 ← ((byte*)) (word/signed word/dword/signed dword) $2000
|
||||
(byte*) PLAYFIELD_CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) $2800
|
||||
(byte) PLAYFIELD_LINES#0 ← (byte/signed byte/word/signed word/dword/signed dword) $16
|
||||
(byte) PLAYFIELD_COLS#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte~) $2 ← (byte) PLAYFIELD_LINES#0 * (byte) PLAYFIELD_COLS#0
|
||||
(byte[$2]) playfield#0 ← { fill( $2, 0) }
|
||||
(byte*) current_piece_gfx#0 ← (byte*) 0
|
||||
(byte) current_piece_char#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) current_xpos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) current_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) render_screen_render#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) render_screen_show#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) render_screen_showing#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(dword) score_bcd#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(word) lines_bcd#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) level_bcd#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) level#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) game_over#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
kickasm(location (byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("playfield-sprites.png", List().add($010101, $000000))
|
||||
// Put the sprites into memory
|
||||
.for(var sy=0;sy<10;sy++) {
|
||||
@ -577,7 +505,6 @@ loop::@return: scope:[loop] from loop::@1
|
||||
SYMBOL TABLE SSA
|
||||
(byte*~) $0
|
||||
(byte*~) $1
|
||||
(byte~) $2
|
||||
(byte/signed word/word/dword/signed dword~) $3
|
||||
(byte/signed word/word/dword/signed dword~) $4
|
||||
(byte~) $5
|
||||
@ -590,110 +517,34 @@ SYMBOL TABLE SSA
|
||||
(label) @9
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte) IRQ_RASTER_FIRST
|
||||
(byte) IRQ_RASTER_FIRST#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PLAYFIELD_CHARSET
|
||||
(byte*) PLAYFIELD_CHARSET#0
|
||||
(byte*) PLAYFIELD_COLORS_ORIGINAL
|
||||
(byte*) PLAYFIELD_COLORS_ORIGINAL#0
|
||||
(byte) PLAYFIELD_COLS
|
||||
(byte) PLAYFIELD_COLS#0
|
||||
(byte) PLAYFIELD_LINES
|
||||
(byte) PLAYFIELD_LINES#0
|
||||
(byte*) PLAYFIELD_SCREEN_1
|
||||
(byte*) PLAYFIELD_SCREEN_1#0
|
||||
(byte*) PLAYFIELD_SCREEN_2
|
||||
(byte*) PLAYFIELD_SCREEN_2#0
|
||||
(byte*) PLAYFIELD_SCREEN_ORIGINAL
|
||||
(byte*) PLAYFIELD_SCREEN_ORIGINAL#0
|
||||
(byte*) PLAYFIELD_SPRITES
|
||||
(byte*) PLAYFIELD_SPRITES#0
|
||||
(byte*) PLAYFIELD_SPRITE_PTRS_1
|
||||
@ -702,26 +553,14 @@ SYMBOL TABLE SSA
|
||||
(byte*) PLAYFIELD_SPRITE_PTRS_2#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SIN
|
||||
(byte*) SIN#0
|
||||
(byte*) SIN_SPRITE
|
||||
@ -738,54 +577,14 @@ SYMBOL TABLE SSA
|
||||
(byte) SPRITES_FIRST_YPOS#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(byte) current_piece_char
|
||||
(byte) current_piece_char#0
|
||||
(byte*) current_piece_gfx
|
||||
(byte*) current_piece_gfx#0
|
||||
(byte) current_xpos
|
||||
(byte) current_xpos#0
|
||||
(byte) current_ypos
|
||||
(byte) current_ypos#0
|
||||
(byte) game_over
|
||||
(byte) game_over#0
|
||||
(byte) irq_cnt
|
||||
(byte) irq_cnt#0
|
||||
(byte) irq_cnt#1
|
||||
@ -876,12 +675,6 @@ SYMBOL TABLE SSA
|
||||
(byte) irq_sprite_ypos#7
|
||||
(byte) irq_sprite_ypos#8
|
||||
(byte) irq_sprite_ypos#9
|
||||
(byte) level
|
||||
(byte) level#0
|
||||
(byte) level_bcd
|
||||
(byte) level_bcd#0
|
||||
(word) lines_bcd
|
||||
(word) lines_bcd#0
|
||||
(void()) loop()
|
||||
(bool~) loop::$0
|
||||
(byte/signed word/word/dword/signed dword~) loop::$1
|
||||
@ -1011,12 +804,6 @@ SYMBOL TABLE SSA
|
||||
(byte) main::ypos#3
|
||||
(byte) main::ypos#4
|
||||
(byte) main::ypos#5
|
||||
(byte[$2]) playfield
|
||||
(byte[$2]) playfield#0
|
||||
(byte) render_screen_render
|
||||
(byte) render_screen_render#0
|
||||
(byte) render_screen_show
|
||||
(byte) render_screen_show#0
|
||||
(byte) render_screen_showing
|
||||
(byte) render_screen_showing#0
|
||||
(byte) render_screen_showing#1
|
||||
@ -1028,8 +815,6 @@ SYMBOL TABLE SSA
|
||||
(byte) render_screen_showing#7
|
||||
(byte) render_screen_showing#8
|
||||
(byte) render_screen_showing#9
|
||||
(dword) score_bcd
|
||||
(dword) score_bcd#0
|
||||
(byte) sin_idx
|
||||
(byte) sin_idx#0
|
||||
(byte) sin_idx#1
|
||||
@ -1260,113 +1045,43 @@ Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#17
|
||||
Redundant Phi (byte) irq_sprite_ptr#14 (byte) irq_sprite_ptr#17
|
||||
Redundant Phi (byte) sin_idx#11 (byte) sin_idx#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) sprites_init::$4 [123] if((byte) sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1
|
||||
Simple Condition (bool~) sprites_irq::$4 [169] if(*((byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@11
|
||||
Simple Condition (bool~) sprites_irq::$1 [173] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1
|
||||
Simple Condition (bool~) sprites_irq::$2 [191] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3
|
||||
Simple Condition (bool~) sprites_irq::$3 [208] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4
|
||||
Simple Condition (bool~) main::$8 [296] if((byte) main::s#1!=rangelast(4,7)) goto main::@1
|
||||
Simple Condition (bool~) loop::$0 [312] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@4
|
||||
Simple Condition (bool~) loop::$2 [322] if((byte) loop::s#1!=rangelast(4,7)) goto loop::@6
|
||||
Simple Condition (bool~) sprites_init::$4 [51] if((byte) sprites_init::s#1!=rangelast(0,3)) goto sprites_init::@1
|
||||
Simple Condition (bool~) sprites_irq::$4 [97] if(*((byte*) RASTER#0)<(byte) sprites_irq::raster_sprite_gfx_modify#0) goto sprites_irq::@11
|
||||
Simple Condition (bool~) sprites_irq::$1 [101] if((byte) render_screen_showing#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sprites_irq::@1
|
||||
Simple Condition (bool~) sprites_irq::$2 [119] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 9) goto sprites_irq::@3
|
||||
Simple Condition (bool~) sprites_irq::$3 [136] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) $a) goto sprites_irq::@4
|
||||
Simple Condition (bool~) main::$8 [224] if((byte) main::s#1!=rangelast(4,7)) goto main::@1
|
||||
Simple Condition (bool~) loop::$0 [240] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@4
|
||||
Simple Condition (bool~) loop::$2 [250] if((byte) loop::s#1!=rangelast(4,7)) goto loop::@6
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const byte*) PLAYFIELD_SCREEN_1#0 = ((byte*))$400
|
||||
Constant (const byte*) PLAYFIELD_SCREEN_2#0 = ((byte*))$2c00
|
||||
Constant (const byte*) PLAYFIELD_SCREEN_ORIGINAL#0 = ((byte*))$1800
|
||||
Constant (const byte*) PLAYFIELD_COLORS_ORIGINAL#0 = ((byte*))$1c00
|
||||
Constant (const byte*) PLAYFIELD_SPRITES#0 = ((byte*))$2000
|
||||
Constant (const byte*) PLAYFIELD_CHARSET#0 = ((byte*))$2800
|
||||
Constant (const byte) PLAYFIELD_LINES#0 = $16
|
||||
Constant (const byte) PLAYFIELD_COLS#0 = $a
|
||||
Constant (const byte*) current_piece_gfx#0 = 0
|
||||
Constant (const byte) current_piece_char#0 = 0
|
||||
Constant (const byte) current_xpos#0 = 0
|
||||
Constant (const byte) current_ypos#0 = 0
|
||||
Constant (const byte) render_screen_render#0 = $40
|
||||
Constant (const byte) render_screen_show#0 = 0
|
||||
Constant (const dword) score_bcd#0 = 0
|
||||
Constant (const word) lines_bcd#0 = 0
|
||||
Constant (const byte) level_bcd#0 = 0
|
||||
Constant (const byte) level#0 = 0
|
||||
Constant (const byte) game_over#0 = 0
|
||||
Constant (const byte/signed byte/word/signed word/dword/signed dword) sprites_init::$0 = $f*8
|
||||
Constant (const byte) sprites_init::s#0 = 0
|
||||
Constant (const byte) SPRITES_FIRST_YPOS#0 = $31
|
||||
@ -1381,7 +1096,6 @@ Constant (const byte) loop::s#0 = 4
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) PLAYFIELD_SPRITE_PTRS_1#0 = PLAYFIELD_SCREEN_1#0+SPRITE_PTRS#0
|
||||
Constant (const byte*) PLAYFIELD_SPRITE_PTRS_2#0 = PLAYFIELD_SCREEN_2#0+SPRITE_PTRS#0
|
||||
Constant (const byte) $2 = PLAYFIELD_LINES#0*PLAYFIELD_COLS#0
|
||||
Constant (const byte) sprites_init::xpos#0 = $18+sprites_init::$0
|
||||
Constant (const byte/signed word/word/dword/signed dword) $3 = SPRITES_FIRST_YPOS#0+$13
|
||||
Constant (const byte/signed word/word/dword/signed dword) $4 = SPRITES_FIRST_YPOS#0+$15
|
||||
@ -1392,7 +1106,6 @@ Constant (const byte*) main::toD0181_screen#0 = PLAYFIELD_SCREEN_1#0
|
||||
Constant (const byte*) main::toD0181_gfx#0 = PLAYFIELD_CHARSET#0
|
||||
Constant (const byte*) main::toSpritePtr2_sprite#0 = SIN_SPRITE#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte[$2]) playfield#0 = { fill( $2, 0) }
|
||||
Constant (const byte) IRQ_RASTER_FIRST#0 = $3
|
||||
Constant (const word/signed dword/dword) toSpritePtr1_$1#0 = toSpritePtr1_$0#0/$40
|
||||
Constant (const word) sprites_irq::toSpritePtr2_$0#0 = ((word))sprites_irq::toSpritePtr2_sprite#0
|
||||
@ -1482,7 +1195,6 @@ Constant inlined sprites_irq::toSpritePtr2_return#1 = (const byte) sprites_irq::
|
||||
Constant inlined sprites_irq::$5 = (const byte) sprites_irq::toSpritePtr2_return#0
|
||||
Constant inlined sprites_init::xpos#0 = (byte/signed byte/word/signed word/dword/signed dword) $18+(byte/signed byte/word/signed word/dword/signed dword) $f*(byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
Constant inlined main::toSpritePtr2_sprite#0 = (const byte*) SIN_SPRITE#0
|
||||
Constant inlined $2 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0
|
||||
Constant inlined $3 = (const byte) IRQ_RASTER_FIRST#0
|
||||
Constant inlined $4 = (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) $15
|
||||
Constant inlined $6 = (const byte) toSpritePtr1_return#0+(byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
@ -1817,72 +1529,28 @@ sprites_irq::@1: scope:[sprites_irq] from sprites_irq::@9
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER_FIRST
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PLAYFIELD_CHARSET
|
||||
(byte*) PLAYFIELD_COLORS_ORIGINAL
|
||||
(byte) PLAYFIELD_COLS
|
||||
(byte) PLAYFIELD_LINES
|
||||
(byte*) PLAYFIELD_SCREEN_1
|
||||
(byte*) PLAYFIELD_SCREEN_2
|
||||
(byte*) PLAYFIELD_SCREEN_ORIGINAL
|
||||
(byte*) PLAYFIELD_SPRITES
|
||||
(byte*) PLAYFIELD_SPRITE_PTRS_1
|
||||
(byte*) PLAYFIELD_SPRITE_PTRS_2
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SIN
|
||||
(byte*) SIN_SPRITE
|
||||
(byte*) SPRITES_COLS
|
||||
@ -1891,30 +1559,10 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte) SPRITES_FIRST_YPOS
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte) current_piece_char
|
||||
(byte*) current_piece_gfx
|
||||
(byte) current_xpos
|
||||
(byte) current_ypos
|
||||
(byte) game_over
|
||||
(byte) irq_cnt
|
||||
(byte) irq_cnt#0 0.17391304347826086
|
||||
(byte) irq_cnt#1 3.0
|
||||
@ -1935,9 +1583,6 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) irq_sprite_ypos#1 20.0
|
||||
(byte) irq_sprite_ypos#2 20.0
|
||||
(byte) irq_sprite_ypos#3 20.0
|
||||
(byte) level
|
||||
(byte) level_bcd
|
||||
(word) lines_bcd
|
||||
(void()) loop()
|
||||
(byte~) loop::$1 202.0
|
||||
(byte) loop::idx
|
||||
@ -1985,12 +1630,8 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) main::ypos
|
||||
(byte) main::ypos#1 7.333333333333333
|
||||
(byte) main::ypos#2 3.666666666666667
|
||||
(byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield
|
||||
(byte) render_screen_render
|
||||
(byte) render_screen_show
|
||||
(byte) render_screen_showing
|
||||
(byte) render_screen_showing#0 0.4
|
||||
(dword) score_bcd
|
||||
(byte) sin_idx
|
||||
(byte) sin_idx#10 3.666666666666667
|
||||
(byte) sin_idx#3 22.0
|
||||
@ -2162,9 +1803,6 @@ INITIAL ASM
|
||||
.label PLAYFIELD_SPRITES = $2000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The size of the playfield
|
||||
.const PLAYFIELD_LINES = $16
|
||||
.const PLAYFIELD_COLS = $a
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
.label SIN = $1400
|
||||
@ -3041,9 +2679,6 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
.label PLAYFIELD_SPRITES = $2000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The size of the playfield
|
||||
.const PLAYFIELD_LINES = $16
|
||||
.const PLAYFIELD_COLS = $a
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
.label SIN = $1400
|
||||
@ -3726,74 +3361,34 @@ FINAL SYMBOL TABLE
|
||||
(label) @5
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) $dc0d
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) $fffe
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) $d01a
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_RASTER_FIRST
|
||||
(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) $13
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) $d019
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PLAYFIELD_CHARSET
|
||||
(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) $2800
|
||||
(byte*) PLAYFIELD_COLORS_ORIGINAL
|
||||
(byte) PLAYFIELD_COLS
|
||||
(const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) PLAYFIELD_LINES
|
||||
(const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) $16
|
||||
(byte*) PLAYFIELD_SCREEN_1
|
||||
(const byte*) PLAYFIELD_SCREEN_1#0 PLAYFIELD_SCREEN_1 = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) PLAYFIELD_SCREEN_2
|
||||
(const byte*) PLAYFIELD_SCREEN_2#0 PLAYFIELD_SCREEN_2 = ((byte*))(word/signed word/dword/signed dword) $2c00
|
||||
(byte*) PLAYFIELD_SCREEN_ORIGINAL
|
||||
(byte*) PLAYFIELD_SPRITES
|
||||
(const byte*) PLAYFIELD_SPRITES#0 PLAYFIELD_SPRITES = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte*) PLAYFIELD_SPRITE_PTRS_1
|
||||
@ -3802,20 +3397,14 @@ FINAL SYMBOL TABLE
|
||||
(const byte*) PLAYFIELD_SPRITE_PTRS_2#0 PLAYFIELD_SPRITE_PTRS_2 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) SPRITE_PTRS#0
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SIN
|
||||
(const byte*) SIN#0 SIN = ((byte*))(word/signed word/dword/signed dword) $1400
|
||||
(byte*) SIN_SPRITE
|
||||
@ -3832,34 +3421,14 @@ FINAL SYMBOL TABLE
|
||||
(const byte) SPRITES_FIRST_YPOS#0 SPRITES_FIRST_YPOS = (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte*) SPRITES_MC
|
||||
(const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) $d001
|
||||
(word) SPRITE_PTRS
|
||||
(const word) SPRITE_PTRS#0 SPRITE_PTRS = (word/signed word/dword/signed dword) $3f8
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte) current_piece_char
|
||||
(byte*) current_piece_gfx
|
||||
(byte) current_xpos
|
||||
(byte) current_ypos
|
||||
(byte) game_over
|
||||
(byte) irq_cnt
|
||||
(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:9 0.17391304347826086
|
||||
(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:9 3.0
|
||||
@ -3880,9 +3449,6 @@ FINAL SYMBOL TABLE
|
||||
(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:7 20.0
|
||||
(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:7 20.0
|
||||
(byte) irq_sprite_ypos#3 irq_sprite_ypos zp ZP_BYTE:7 20.0
|
||||
(byte) level
|
||||
(byte) level_bcd
|
||||
(word) lines_bcd
|
||||
(void()) loop()
|
||||
(byte~) loop::$1 reg byte a 202.0
|
||||
(label) loop::@1
|
||||
@ -3950,12 +3516,8 @@ FINAL SYMBOL TABLE
|
||||
(byte) main::ypos
|
||||
(byte) main::ypos#1 ypos zp ZP_BYTE:3 7.333333333333333
|
||||
(byte) main::ypos#2 ypos zp ZP_BYTE:3 3.666666666666667
|
||||
(byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield
|
||||
(byte) render_screen_render
|
||||
(byte) render_screen_show
|
||||
(byte) render_screen_showing
|
||||
(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:5 0.4
|
||||
(dword) score_bcd
|
||||
(byte) sin_idx
|
||||
(byte) sin_idx#10 sin_idx zp ZP_BYTE:2 3.666666666666667
|
||||
(byte) sin_idx#3 sin_idx zp ZP_BYTE:2 22.0
|
||||
@ -4090,9 +3652,6 @@ Score: 7310
|
||||
.label PLAYFIELD_SPRITES = $2000
|
||||
// Address of the charset
|
||||
.label PLAYFIELD_CHARSET = $2800
|
||||
// The size of the playfield
|
||||
.const PLAYFIELD_LINES = $16
|
||||
.const PLAYFIELD_COLS = $a
|
||||
// The Y-position of the first sprite row
|
||||
.const SPRITES_FIRST_YPOS = $31
|
||||
.label SIN = $1400
|
||||
|
@ -5,74 +5,34 @@
|
||||
(label) @5
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) $dc0d
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) $fffe
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) $d01a
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_RASTER_FIRST
|
||||
(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) $13
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) $d019
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PLAYFIELD_CHARSET
|
||||
(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) $2800
|
||||
(byte*) PLAYFIELD_COLORS_ORIGINAL
|
||||
(byte) PLAYFIELD_COLS
|
||||
(const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) PLAYFIELD_LINES
|
||||
(const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) $16
|
||||
(byte*) PLAYFIELD_SCREEN_1
|
||||
(const byte*) PLAYFIELD_SCREEN_1#0 PLAYFIELD_SCREEN_1 = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) PLAYFIELD_SCREEN_2
|
||||
(const byte*) PLAYFIELD_SCREEN_2#0 PLAYFIELD_SCREEN_2 = ((byte*))(word/signed word/dword/signed dword) $2c00
|
||||
(byte*) PLAYFIELD_SCREEN_ORIGINAL
|
||||
(byte*) PLAYFIELD_SPRITES
|
||||
(const byte*) PLAYFIELD_SPRITES#0 PLAYFIELD_SPRITES = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte*) PLAYFIELD_SPRITE_PTRS_1
|
||||
@ -81,20 +41,14 @@
|
||||
(const byte*) PLAYFIELD_SPRITE_PTRS_2#0 PLAYFIELD_SPRITE_PTRS_2 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) SPRITE_PTRS#0
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SIN
|
||||
(const byte*) SIN#0 SIN = ((byte*))(word/signed word/dword/signed dword) $1400
|
||||
(byte*) SIN_SPRITE
|
||||
@ -111,34 +65,14 @@
|
||||
(const byte) SPRITES_FIRST_YPOS#0 SPRITES_FIRST_YPOS = (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte*) SPRITES_MC
|
||||
(const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) $d001
|
||||
(word) SPRITE_PTRS
|
||||
(const word) SPRITE_PTRS#0 SPRITE_PTRS = (word/signed word/dword/signed dword) $3f8
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte) current_piece_char
|
||||
(byte*) current_piece_gfx
|
||||
(byte) current_xpos
|
||||
(byte) current_ypos
|
||||
(byte) game_over
|
||||
(byte) irq_cnt
|
||||
(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:9 0.17391304347826086
|
||||
(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:9 3.0
|
||||
@ -159,9 +93,6 @@
|
||||
(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:7 20.0
|
||||
(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:7 20.0
|
||||
(byte) irq_sprite_ypos#3 irq_sprite_ypos zp ZP_BYTE:7 20.0
|
||||
(byte) level
|
||||
(byte) level_bcd
|
||||
(word) lines_bcd
|
||||
(void()) loop()
|
||||
(byte~) loop::$1 reg byte a 202.0
|
||||
(label) loop::@1
|
||||
@ -229,12 +160,8 @@
|
||||
(byte) main::ypos
|
||||
(byte) main::ypos#1 ypos zp ZP_BYTE:3 7.333333333333333
|
||||
(byte) main::ypos#2 ypos zp ZP_BYTE:3 3.666666666666667
|
||||
(byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield
|
||||
(byte) render_screen_render
|
||||
(byte) render_screen_show
|
||||
(byte) render_screen_showing
|
||||
(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:5 0.4
|
||||
(dword) score_bcd
|
||||
(byte) sin_idx
|
||||
(byte) sin_idx#10 sin_idx zp ZP_BYTE:2 3.666666666666667
|
||||
(byte) sin_idx#3 sin_idx zp ZP_BYTE:2 22.0
|
||||
|
@ -77,14 +77,6 @@
|
||||
.const KEY_CTRL = $3a
|
||||
.const KEY_SPACE = $3c
|
||||
.const KEY_COMMODORE = $3d
|
||||
// Left shift is pressed
|
||||
.const KEY_MODIFIER_LSHIFT = 1
|
||||
// Right shift is pressed
|
||||
.const KEY_MODIFIER_RSHIFT = 2
|
||||
// CTRL is pressed
|
||||
.const KEY_MODIFIER_CTRL = 4
|
||||
// Commodore is pressed
|
||||
.const KEY_MODIFIER_COMMODORE = 8
|
||||
// SID registers for random number generation
|
||||
.label SID_VOICE3_FREQ = $d40e
|
||||
.label SID_VOICE3_CONTROL = $d412
|
||||
@ -393,10 +385,6 @@ render_bcd: {
|
||||
adc #ZERO_CHAR
|
||||
ldy #0
|
||||
sta (screen_pos),y
|
||||
inc screen_pos
|
||||
bne !+
|
||||
inc screen_pos+1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
// Render the next tetromino in the "next" area
|
||||
@ -1176,7 +1164,7 @@ keyboard_event_scan: {
|
||||
sta row_scan
|
||||
ldy row
|
||||
cmp keyboard_scan_values,y
|
||||
bne b6
|
||||
bne b5
|
||||
lax keycode
|
||||
axs #-[8]
|
||||
stx keycode
|
||||
@ -1189,41 +1177,21 @@ keyboard_event_scan: {
|
||||
sta keyboard_event_pressed.keycode
|
||||
jsr keyboard_event_pressed
|
||||
cmp #0
|
||||
beq b4
|
||||
ldx #0|KEY_MODIFIER_LSHIFT
|
||||
jmp b1
|
||||
b4:
|
||||
ldx #0
|
||||
b1:
|
||||
lda #KEY_RSHIFT
|
||||
sta keyboard_event_pressed.keycode
|
||||
jsr keyboard_event_pressed
|
||||
cmp #0
|
||||
beq b2
|
||||
txa
|
||||
ora #KEY_MODIFIER_RSHIFT
|
||||
tax
|
||||
b2:
|
||||
lda #KEY_CTRL
|
||||
sta keyboard_event_pressed.keycode
|
||||
jsr keyboard_event_pressed
|
||||
cmp #0
|
||||
beq b3
|
||||
txa
|
||||
ora #KEY_MODIFIER_CTRL
|
||||
tax
|
||||
b3:
|
||||
lda #KEY_COMMODORE
|
||||
sta keyboard_event_pressed.keycode
|
||||
jsr keyboard_event_pressed
|
||||
cmp #0
|
||||
beq breturn
|
||||
txa
|
||||
ora #KEY_MODIFIER_COMMODORE
|
||||
breturn:
|
||||
rts
|
||||
// Something has changed on the keyboard row - check each column
|
||||
b6:
|
||||
b5:
|
||||
ldx #0
|
||||
b9:
|
||||
lda row_scan
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -5,7 +5,6 @@
|
||||
(label) @5
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(const byte*) BGCOL1#0 BGCOL1 = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2
|
||||
@ -20,23 +19,16 @@
|
||||
(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) $dc0d
|
||||
(byte*) CIA1_PORT_A
|
||||
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte) COLLISION_BOTTOM
|
||||
@ -55,7 +47,6 @@
|
||||
(const byte) CYAN#0 CYAN = (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) DARK_GREY
|
||||
@ -66,107 +57,40 @@
|
||||
(const byte) GREY#0 GREY = (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(void()**) HARDWARE_IRQ
|
||||
(const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) $fffe
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) $d01a
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_RASTER_FIRST
|
||||
(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (const byte) SPRITES_FIRST_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) $13
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) $d019
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(byte) KEY_1
|
||||
(byte) KEY_2
|
||||
(byte) KEY_3
|
||||
(byte) KEY_4
|
||||
(byte) KEY_5
|
||||
(byte) KEY_6
|
||||
(byte) KEY_7
|
||||
(byte) KEY_8
|
||||
(byte) KEY_9
|
||||
(byte) KEY_A
|
||||
(byte) KEY_ARROW_LEFT
|
||||
(byte) KEY_ARROW_UP
|
||||
(byte) KEY_ASTERISK
|
||||
(byte) KEY_AT
|
||||
(byte) KEY_B
|
||||
(byte) KEY_C
|
||||
(byte) KEY_COLON
|
||||
(byte) KEY_COMMA
|
||||
(const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) $2f
|
||||
(byte) KEY_COMMODORE
|
||||
(const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) $3d
|
||||
(byte) KEY_CRSR_DOWN
|
||||
(byte) KEY_CRSR_RIGHT
|
||||
(byte) KEY_CTRL
|
||||
(const byte) KEY_CTRL#0 KEY_CTRL = (byte/signed byte/word/signed word/dword/signed dword) $3a
|
||||
(byte) KEY_D
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) $2c
|
||||
(byte) KEY_E
|
||||
(byte) KEY_EQUALS
|
||||
(byte) KEY_F
|
||||
(byte) KEY_F1
|
||||
(byte) KEY_F3
|
||||
(byte) KEY_F5
|
||||
(byte) KEY_F7
|
||||
(byte) KEY_G
|
||||
(byte) KEY_H
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(byte) KEY_J
|
||||
(byte) KEY_K
|
||||
(byte) KEY_L
|
||||
(byte) KEY_LSHIFT
|
||||
(const byte) KEY_LSHIFT#0 KEY_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
(byte) KEY_M
|
||||
(byte) KEY_MINUS
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(const byte) KEY_MODIFIER_COMMODORE#0 KEY_MODIFIER_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
(const byte) KEY_MODIFIER_CTRL#0 KEY_MODIFIER_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) KEY_MODIFIER_LSHIFT
|
||||
(const byte) KEY_MODIFIER_LSHIFT#0 KEY_MODIFIER_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) KEY_MODIFIER_RSHIFT
|
||||
(const byte) KEY_MODIFIER_RSHIFT#0 KEY_MODIFIER_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(byte) KEY_N
|
||||
(byte) KEY_O
|
||||
(byte) KEY_P
|
||||
(byte) KEY_PLUS
|
||||
(byte) KEY_POUND
|
||||
(byte) KEY_Q
|
||||
(byte) KEY_R
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(const byte) KEY_RSHIFT#0 KEY_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) $34
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(byte) KEY_SEMICOLON
|
||||
(byte) KEY_SLASH
|
||||
(byte) KEY_SPACE
|
||||
(const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) $3c
|
||||
(byte) KEY_T
|
||||
(byte) KEY_U
|
||||
(byte) KEY_V
|
||||
(byte) KEY_W
|
||||
(byte) KEY_X
|
||||
(const byte) KEY_X#0 KEY_X = (byte/signed byte/word/signed word/dword/signed dword) $17
|
||||
(byte) KEY_Y
|
||||
(byte) KEY_Z
|
||||
(const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREEN
|
||||
(const byte) LIGHT_GREEN#0 LIGHT_GREEN = (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_GREY
|
||||
(byte[]) MOVEDOWN_SLOW_SPEEDS
|
||||
(const byte[]) MOVEDOWN_SLOW_SPEEDS#0 MOVEDOWN_SLOW_SPEEDS = { (byte/signed byte/word/signed word/dword/signed dword) $30, (byte/signed byte/word/signed word/dword/signed dword) $2b, (byte/signed byte/word/signed word/dword/signed dword) $26, (byte/signed byte/word/signed word/dword/signed dword) $21, (byte/signed byte/word/signed word/dword/signed dword) $1c, (byte/signed byte/word/signed word/dword/signed dword) $17, (byte/signed byte/word/signed word/dword/signed dword) $12, (byte/signed byte/word/signed word/dword/signed dword) $d, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 1 }
|
||||
(byte) ORANGE
|
||||
@ -215,7 +139,6 @@
|
||||
(const byte*) PLAYFIELD_SCREEN_2#0 PLAYFIELD_SCREEN_2 = ((byte*))(word/signed word/dword/signed dword) $2c00
|
||||
(byte*) PLAYFIELD_SCREEN_ORIGINAL
|
||||
(const byte*) PLAYFIELD_SCREEN_ORIGINAL#0 PLAYFIELD_SCREEN_ORIGINAL = ((byte*))(word/signed word/dword/signed dword) $1800
|
||||
(byte) PLAYFIELD_SCREEN_ORIGINAL_WIDTH
|
||||
(byte*) PLAYFIELD_SPRITES
|
||||
(const byte*) PLAYFIELD_SPRITES#0 PLAYFIELD_SPRITES = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte*) PLAYFIELD_SPRITE_PTRS_1
|
||||
@ -224,14 +147,10 @@
|
||||
(const byte*) PLAYFIELD_SPRITE_PTRS_2#0 PLAYFIELD_SPRITE_PTRS_2 = (const byte*) PLAYFIELD_SCREEN_2#0+(const word) SPRITE_PTRS#0
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PURPLE
|
||||
@ -242,21 +161,12 @@
|
||||
(const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(dword[]) SCORE_BASE_BCD
|
||||
(const dword[]) SCORE_BASE_BCD#0 SCORE_BASE_BCD = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) $40, (word/signed word/dword/signed dword) $100, (word/signed word/dword/signed dword) $300, (word/signed word/dword/signed dword) $1200 }
|
||||
(byte) SID_CONTROL_GATE
|
||||
(byte) SID_CONTROL_NOISE
|
||||
(const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) SID_CONTROL_PULSE
|
||||
(byte) SID_CONTROL_RING
|
||||
(byte) SID_CONTROL_SAWTOOTH
|
||||
(byte) SID_CONTROL_SYNC
|
||||
(byte) SID_CONTROL_TEST
|
||||
(byte) SID_CONTROL_TRIANGLE
|
||||
(byte*) SID_VOICE3_CONTROL
|
||||
(const byte*) SID_VOICE3_CONTROL#0 SID_VOICE3_CONTROL = ((byte*))(word/dword/signed dword) $d412
|
||||
(word*) SID_VOICE3_FREQ
|
||||
(const word*) SID_VOICE3_FREQ#0 SID_VOICE3_FREQ = ((word*))(word/dword/signed dword) $d40e
|
||||
(byte*) SID_VOICE3_FREQ_HIGH
|
||||
(byte*) SID_VOICE3_FREQ_LOW
|
||||
(byte*) SID_VOICE3_OSC
|
||||
(const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) $d41b
|
||||
(byte*) SPRITES_COLS
|
||||
@ -271,32 +181,20 @@
|
||||
(const byte) SPRITES_FIRST_YPOS#0 SPRITES_FIRST_YPOS = (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte*) SPRITES_MC
|
||||
(const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) $d001
|
||||
(word) SPRITE_PTRS
|
||||
(const word) SPRITE_PTRS#0 SPRITE_PTRS = (word/signed word/dword/signed dword) $3f8
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_ECM
|
||||
(const byte) VIC_ECM#0 VIC_ECM = (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte) current_movedown_counter
|
||||
(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 0.5333333333333333
|
||||
(byte) current_movedown_counter#14 current_movedown_counter zp ZP_BYTE:4 3.081081081081081
|
||||
@ -396,7 +294,6 @@
|
||||
(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:39 20.0
|
||||
(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:39 20.0
|
||||
(byte) irq_sprite_ypos#3 irq_sprite_ypos zp ZP_BYTE:39 20.0
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(byte()) keyboard_event_get()
|
||||
(label) keyboard_event_get::@1
|
||||
(label) keyboard_event_get::@return
|
||||
@ -492,12 +389,6 @@
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) $fe, (byte/word/signed word/dword/signed dword) $fd, (byte/word/signed word/dword/signed dword) $fb, (byte/word/signed word/dword/signed dword) $f7, (byte/word/signed word/dword/signed dword) $ef, (byte/word/signed word/dword/signed dword) $df, (byte/word/signed word/dword/signed dword) $bf, (byte/signed byte/word/signed word/dword/signed dword) $7f }
|
||||
(byte) keyboard_modifiers
|
||||
(byte) keyboard_modifiers#11 reg byte x 0.8
|
||||
(byte) keyboard_modifiers#12 reg byte x 1.6
|
||||
(byte) keyboard_modifiers#13 reg byte x 1.2000000000000002
|
||||
(byte) keyboard_modifiers#3 reg byte x 4.0
|
||||
(byte) keyboard_modifiers#4 reg byte x 4.0
|
||||
(byte) keyboard_modifiers#5 reg byte a 20.0
|
||||
(byte[8]) keyboard_scan_values
|
||||
(const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) }
|
||||
(byte) level
|
||||
@ -882,7 +773,6 @@
|
||||
(byte*) render_bcd::screen#6 screen zp ZP_WORD:5 14.0
|
||||
(byte*) render_bcd::screen_pos
|
||||
(byte*) render_bcd::screen_pos#0 screen_pos zp ZP_WORD:7 1.6
|
||||
(byte*) render_bcd::screen_pos#1 screen_pos zp ZP_WORD:7 20.0
|
||||
(byte*) render_bcd::screen_pos#2 screen_pos zp ZP_WORD:7 4.0
|
||||
(byte*) render_bcd::screen_pos#3 screen_pos zp ZP_WORD:7 2.0
|
||||
(void()) render_init()
|
||||
@ -1185,7 +1075,7 @@ zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play
|
||||
zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ]
|
||||
zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$0 play_update_score::lines_before#0 ]
|
||||
zp ZP_WORD:5 [ render_score::screen#3 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#64 current_piece_gfx#120 current_piece_gfx#121 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#100 current_piece#101 current_piece#102 current_piece#103 current_piece#104 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 play_lock_current::playfield_line#0 ]
|
||||
zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 play_collision::playfield_line#0 ]
|
||||
zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_next::screen_next_area#5 render_next::screen_next_area#10 render_next::screen_next_area#4 render_next::screen_next_area#11 render_next::screen_next_area#3 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 play_collision::playfield_line#0 ]
|
||||
reg byte y [ render_bcd::only_low#6 ]
|
||||
reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ]
|
||||
reg byte a [ render_screen_render#15 render_screen_render#68 ]
|
||||
@ -1226,7 +1116,6 @@ reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#
|
||||
reg byte x [ play_remove_lines::w#6 play_remove_lines::w#3 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 ]
|
||||
reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ]
|
||||
reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
|
||||
reg byte x [ keyboard_modifiers#13 keyboard_modifiers#12 keyboard_modifiers#11 keyboard_modifiers#3 keyboard_modifiers#4 ]
|
||||
reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
|
||||
zp ZP_BYTE:35 [ keyboard_events_size#10 keyboard_events_size#30 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#29 keyboard_events_size#1 keyboard_events_size#2 ]
|
||||
reg byte a [ render_show::d018val#3 ]
|
||||
@ -1305,7 +1194,6 @@ reg byte a [ keyboard_event_pressed::return#2 ]
|
||||
reg byte a [ keyboard_event_scan::$6 ]
|
||||
reg byte a [ keyboard_event_pressed::return#10 ]
|
||||
reg byte a [ keyboard_event_scan::$9 ]
|
||||
reg byte a [ keyboard_modifiers#5 ]
|
||||
reg byte a [ keyboard_event_scan::$15 ]
|
||||
reg byte a [ keyboard_event_scan::$16 ]
|
||||
reg byte a [ keyboard_event_scan::event_type#0 ]
|
||||
|
@ -50,7 +50,7 @@ assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes
|
||||
[22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 )
|
||||
[22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) msg test_sbytes::@1/(const string) msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 )
|
||||
[23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
|
||||
[24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1
|
||||
[24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1
|
||||
[25] call print_str
|
||||
to:assert_sbyte::@4
|
||||
assert_sbyte::@4: scope:[assert_sbyte] from assert_sbyte
|
||||
@ -76,7 +76,7 @@ assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@5
|
||||
[35] call print_str
|
||||
to:assert_sbyte::@2
|
||||
print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@4 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@4
|
||||
[36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@4/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#87 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@4/(byte*) print_char_cursor#2 )
|
||||
[36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@4/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#86 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@4/(byte*) print_char_cursor#2 )
|
||||
[36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) str1 assert_byte::@3/(const string) str2 assert_byte::@4/(const string) str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) str1 assert_sbyte::@3/(const string) str2 assert_sbyte::@4/(const string) str )
|
||||
to:print_str::@1
|
||||
print_str::@1: scope:[print_str] from print_str print_str::@2
|
||||
@ -108,11 +108,11 @@ test_bytes: scope:[test_bytes] from main::@1
|
||||
[49] call assert_byte
|
||||
to:test_bytes::@1
|
||||
test_bytes::@1: scope:[test_bytes] from test_bytes
|
||||
[50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1
|
||||
[50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1
|
||||
[51] call assert_byte
|
||||
to:test_bytes::@2
|
||||
test_bytes::@2: scope:[test_bytes] from test_bytes::@1
|
||||
[52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1
|
||||
[52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1
|
||||
[53] call assert_byte
|
||||
to:test_bytes::@return
|
||||
test_bytes::@return: scope:[test_bytes] from test_bytes::@2
|
||||
@ -122,7 +122,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2
|
||||
[55] (byte*) print_line_cursor#50 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) $400 test_bytes::@1/(byte*) print_line_cursor#1 test_bytes::@2/(byte*) print_line_cursor#1 )
|
||||
[55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) $fe )
|
||||
[55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 )
|
||||
[55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) $400 test_bytes::@1/(byte*~) print_char_cursor#93 test_bytes::@2/(byte*~) print_char_cursor#94 )
|
||||
[55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) $400 test_bytes::@1/(byte*~) print_char_cursor#92 test_bytes::@2/(byte*~) print_char_cursor#93 )
|
||||
[55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) msg test_bytes::@1/(const string) msg1 test_bytes::@2/(const string) test_bytes::msg2 )
|
||||
[56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3
|
||||
[57] call print_str
|
||||
|
@ -6,7 +6,7 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@12
|
||||
to:@19
|
||||
print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5
|
||||
(byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#71 assert_byte::@3/(byte*) print_char_cursor#72 assert_byte::@5/(byte*) print_char_cursor#15 assert_sbyte/(byte*) print_char_cursor#75 assert_sbyte::@1/(byte*) print_char_cursor#76 assert_sbyte::@3/(byte*) print_char_cursor#77 assert_sbyte::@5/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 )
|
||||
@ -52,12 +52,6 @@ print_ln::@return: scope:[print_ln] from print_ln::@2
|
||||
(byte*) print_char_cursor#4 ← (byte*) print_char_cursor#37
|
||||
return
|
||||
to:@return
|
||||
@12: scope:[] from @begin
|
||||
(byte*) print_screen#7 ← phi( @begin/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#82 ← phi( @begin/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#59 ← phi( @begin/(byte*) print_line_cursor#0 )
|
||||
(byte[]) print_hextab#0 ← (const string) $0
|
||||
to:@19
|
||||
print_cls: scope:[print_cls] from main
|
||||
(byte*) print_screen#1 ← phi( main/(byte*) print_screen#4 )
|
||||
(byte*) print_cls::sc#0 ← (byte*) print_screen#1
|
||||
@ -83,10 +77,10 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(byte*) print_char_cursor#6 ← (byte*) print_char_cursor#38
|
||||
return
|
||||
to:@return
|
||||
@19: scope:[] from @12
|
||||
(byte*) print_screen#6 ← phi( @12/(byte*) print_screen#7 )
|
||||
(byte*) print_char_cursor#81 ← phi( @12/(byte*) print_char_cursor#82 )
|
||||
(byte*) print_line_cursor#58 ← phi( @12/(byte*) print_line_cursor#59 )
|
||||
@19: scope:[] from @begin
|
||||
(byte*) print_screen#6 ← phi( @begin/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#81 ← phi( @begin/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#58 ← phi( @begin/(byte*) print_line_cursor#0 )
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
@ -175,7 +169,7 @@ test_bytes::@return: scope:[test_bytes] from test_bytes::@3
|
||||
return
|
||||
to:@return
|
||||
assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2
|
||||
(byte*) print_line_cursor#68 ← phi( test_bytes/(byte*) print_line_cursor#49 test_bytes::@1/(byte*) print_line_cursor#9 test_bytes::@2/(byte*) print_line_cursor#10 )
|
||||
(byte*) print_line_cursor#67 ← phi( test_bytes/(byte*) print_line_cursor#49 test_bytes::@1/(byte*) print_line_cursor#9 test_bytes::@2/(byte*) print_line_cursor#10 )
|
||||
(byte) assert_byte::c#5 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 )
|
||||
(byte) assert_byte::b#5 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 )
|
||||
(byte*) print_char_cursor#70 ← phi( test_bytes/(byte*) print_char_cursor#69 test_bytes::@1/(byte*) print_char_cursor#11 test_bytes::@2/(byte*) print_char_cursor#12 )
|
||||
@ -184,7 +178,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2
|
||||
call print_str
|
||||
to:assert_byte::@5
|
||||
assert_byte::@5: scope:[assert_byte] from assert_byte
|
||||
(byte*) print_line_cursor#66 ← phi( assert_byte/(byte*) print_line_cursor#68 )
|
||||
(byte*) print_line_cursor#65 ← phi( assert_byte/(byte*) print_line_cursor#67 )
|
||||
(byte) assert_byte::c#4 ← phi( assert_byte/(byte) assert_byte::c#5 )
|
||||
(byte) assert_byte::b#4 ← phi( assert_byte/(byte) assert_byte::b#5 )
|
||||
(byte*) print_char_cursor#47 ← phi( assert_byte/(byte*) print_char_cursor#2 )
|
||||
@ -193,7 +187,7 @@ assert_byte::@5: scope:[assert_byte] from assert_byte
|
||||
call print_str
|
||||
to:assert_byte::@6
|
||||
assert_byte::@6: scope:[assert_byte] from assert_byte::@5
|
||||
(byte*) print_line_cursor#64 ← phi( assert_byte::@5/(byte*) print_line_cursor#66 )
|
||||
(byte*) print_line_cursor#63 ← phi( assert_byte::@5/(byte*) print_line_cursor#65 )
|
||||
(byte) assert_byte::c#3 ← phi( assert_byte::@5/(byte) assert_byte::c#4 )
|
||||
(byte) assert_byte::b#3 ← phi( assert_byte::@5/(byte) assert_byte::b#4 )
|
||||
(byte*) print_char_cursor#48 ← phi( assert_byte::@5/(byte*) print_char_cursor#2 )
|
||||
@ -202,25 +196,25 @@ assert_byte::@6: scope:[assert_byte] from assert_byte::@5
|
||||
if((bool~) assert_byte::$2) goto assert_byte::@1
|
||||
to:assert_byte::@3
|
||||
assert_byte::@1: scope:[assert_byte] from assert_byte::@6
|
||||
(byte*) print_line_cursor#60 ← phi( assert_byte::@6/(byte*) print_line_cursor#64 )
|
||||
(byte*) print_line_cursor#59 ← phi( assert_byte::@6/(byte*) print_line_cursor#63 )
|
||||
(byte*) print_char_cursor#71 ← phi( assert_byte::@6/(byte*) print_char_cursor#16 )
|
||||
*((byte*) BGCOL#0) ← (byte) RED#0
|
||||
(byte*) print_str::str#3 ← (const string) assert_byte::str1
|
||||
call print_str
|
||||
to:assert_byte::@7
|
||||
assert_byte::@7: scope:[assert_byte] from assert_byte::@1
|
||||
(byte*) print_line_cursor#54 ← phi( assert_byte::@1/(byte*) print_line_cursor#60 )
|
||||
(byte*) print_line_cursor#54 ← phi( assert_byte::@1/(byte*) print_line_cursor#59 )
|
||||
(byte*) print_char_cursor#49 ← phi( assert_byte::@1/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_char_cursor#17 ← (byte*) print_char_cursor#49
|
||||
to:assert_byte::@2
|
||||
assert_byte::@3: scope:[assert_byte] from assert_byte::@6
|
||||
(byte*) print_line_cursor#61 ← phi( assert_byte::@6/(byte*) print_line_cursor#64 )
|
||||
(byte*) print_line_cursor#60 ← phi( assert_byte::@6/(byte*) print_line_cursor#63 )
|
||||
(byte*) print_char_cursor#72 ← phi( assert_byte::@6/(byte*) print_char_cursor#16 )
|
||||
(byte*) print_str::str#4 ← (const string) assert_byte::str2
|
||||
call print_str
|
||||
to:assert_byte::@8
|
||||
assert_byte::@8: scope:[assert_byte] from assert_byte::@3
|
||||
(byte*) print_line_cursor#55 ← phi( assert_byte::@3/(byte*) print_line_cursor#61 )
|
||||
(byte*) print_line_cursor#55 ← phi( assert_byte::@3/(byte*) print_line_cursor#60 )
|
||||
(byte*) print_char_cursor#50 ← phi( assert_byte::@3/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_char_cursor#18 ← (byte*) print_char_cursor#50
|
||||
to:assert_byte::@2
|
||||
@ -318,7 +312,7 @@ test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5
|
||||
return
|
||||
to:@return
|
||||
assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4
|
||||
(byte*) print_line_cursor#69 ← phi( test_sbytes/(byte*) print_line_cursor#51 test_sbytes::@1/(byte*) print_line_cursor#15 test_sbytes::@2/(byte*) print_line_cursor#16 test_sbytes::@3/(byte*) print_line_cursor#17 test_sbytes::@4/(byte*) print_line_cursor#18 )
|
||||
(byte*) print_line_cursor#68 ← phi( test_sbytes/(byte*) print_line_cursor#51 test_sbytes::@1/(byte*) print_line_cursor#15 test_sbytes::@2/(byte*) print_line_cursor#16 test_sbytes::@3/(byte*) print_line_cursor#17 test_sbytes::@4/(byte*) print_line_cursor#18 )
|
||||
(signed byte) assert_sbyte::c#7 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 )
|
||||
(signed byte) assert_sbyte::b#7 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 )
|
||||
(byte*) print_char_cursor#75 ← phi( test_sbytes/(byte*) print_char_cursor#74 test_sbytes::@1/(byte*) print_char_cursor#21 test_sbytes::@2/(byte*) print_char_cursor#22 test_sbytes::@3/(byte*) print_char_cursor#23 test_sbytes::@4/(byte*) print_char_cursor#24 )
|
||||
@ -327,7 +321,7 @@ assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes
|
||||
call print_str
|
||||
to:assert_sbyte::@5
|
||||
assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte
|
||||
(byte*) print_line_cursor#67 ← phi( assert_sbyte/(byte*) print_line_cursor#69 )
|
||||
(byte*) print_line_cursor#66 ← phi( assert_sbyte/(byte*) print_line_cursor#68 )
|
||||
(signed byte) assert_sbyte::c#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::c#7 )
|
||||
(signed byte) assert_sbyte::b#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::b#7 )
|
||||
(byte*) print_char_cursor#59 ← phi( assert_sbyte/(byte*) print_char_cursor#2 )
|
||||
@ -336,7 +330,7 @@ assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte
|
||||
call print_str
|
||||
to:assert_sbyte::@6
|
||||
assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5
|
||||
(byte*) print_line_cursor#65 ← phi( assert_sbyte::@5/(byte*) print_line_cursor#67 )
|
||||
(byte*) print_line_cursor#64 ← phi( assert_sbyte::@5/(byte*) print_line_cursor#66 )
|
||||
(signed byte) assert_sbyte::c#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::c#6 )
|
||||
(signed byte) assert_sbyte::b#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::b#6 )
|
||||
(byte*) print_char_cursor#60 ← phi( assert_sbyte::@5/(byte*) print_char_cursor#2 )
|
||||
@ -345,25 +339,25 @@ assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5
|
||||
if((bool~) assert_sbyte::$2) goto assert_sbyte::@1
|
||||
to:assert_sbyte::@3
|
||||
assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6
|
||||
(byte*) print_line_cursor#62 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#65 )
|
||||
(byte*) print_line_cursor#61 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#64 )
|
||||
(byte*) print_char_cursor#76 ← phi( assert_sbyte::@6/(byte*) print_char_cursor#28 )
|
||||
*((byte*) BGCOL#0) ← (byte) RED#0
|
||||
(byte*) print_str::str#7 ← (const string) assert_sbyte::str1
|
||||
call print_str
|
||||
to:assert_sbyte::@7
|
||||
assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1
|
||||
(byte*) print_line_cursor#56 ← phi( assert_sbyte::@1/(byte*) print_line_cursor#62 )
|
||||
(byte*) print_line_cursor#56 ← phi( assert_sbyte::@1/(byte*) print_line_cursor#61 )
|
||||
(byte*) print_char_cursor#61 ← phi( assert_sbyte::@1/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_char_cursor#29 ← (byte*) print_char_cursor#61
|
||||
to:assert_sbyte::@2
|
||||
assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6
|
||||
(byte*) print_line_cursor#63 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#65 )
|
||||
(byte*) print_line_cursor#62 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#64 )
|
||||
(byte*) print_char_cursor#77 ← phi( assert_sbyte::@6/(byte*) print_char_cursor#28 )
|
||||
(byte*) print_str::str#8 ← (const string) assert_sbyte::str2
|
||||
call print_str
|
||||
to:assert_sbyte::@8
|
||||
assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3
|
||||
(byte*) print_line_cursor#57 ← phi( assert_sbyte::@3/(byte*) print_line_cursor#63 )
|
||||
(byte*) print_line_cursor#57 ← phi( assert_sbyte::@3/(byte*) print_line_cursor#62 )
|
||||
(byte*) print_char_cursor#62 ← phi( assert_sbyte::@3/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_char_cursor#30 ← (byte*) print_char_cursor#62
|
||||
to:assert_sbyte::@2
|
||||
@ -400,8 +394,6 @@ assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9
|
||||
@end: scope:[] from @25
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(const string) $0 = (string) "0123456789abcdef"
|
||||
(label) @12
|
||||
(label) @19
|
||||
(label) @24
|
||||
(label) @25
|
||||
@ -572,7 +564,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_char_cursor#8
|
||||
(byte*) print_char_cursor#80
|
||||
(byte*) print_char_cursor#81
|
||||
(byte*) print_char_cursor#82
|
||||
(byte*) print_char_cursor#9
|
||||
(void()) print_cls()
|
||||
(byte*~) print_cls::$0
|
||||
@ -584,8 +575,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_cls::sc#0
|
||||
(byte*) print_cls::sc#1
|
||||
(byte*) print_cls::sc#2
|
||||
(byte[]) print_hextab
|
||||
(byte[]) print_hextab#0
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#0
|
||||
(byte*) print_line_cursor#1
|
||||
@ -653,7 +642,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_line_cursor#66
|
||||
(byte*) print_line_cursor#67
|
||||
(byte*) print_line_cursor#68
|
||||
(byte*) print_line_cursor#69
|
||||
(byte*) print_line_cursor#7
|
||||
(byte*) print_line_cursor#8
|
||||
(byte*) print_line_cursor#9
|
||||
@ -671,7 +659,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_screen#4
|
||||
(byte*) print_screen#5
|
||||
(byte*) print_screen#6
|
||||
(byte*) print_screen#7
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(bool~) print_str::$0
|
||||
(label) print_str::@1
|
||||
@ -741,7 +728,7 @@ SYMBOL TABLE SSA
|
||||
(const string) test_sbytes::msg3 = (string) "-(0+2-4)=2@"
|
||||
(const string) test_sbytes::msg4 = (string) "-127-127=2@"
|
||||
|
||||
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#59 (byte*) print_char_cursor#82 (byte*) print_screen#7 (byte*) print_line_cursor#58 (byte*) print_char_cursor#81 (byte*) print_screen#6 (byte*) print_line_cursor#53 (byte*) print_char_cursor#79 (byte*) print_screen#5
|
||||
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#58 (byte*) print_char_cursor#81 (byte*) print_screen#6 (byte*) print_line_cursor#53 (byte*) print_char_cursor#79 (byte*) print_screen#5
|
||||
Alias (byte*) print_str::str#10 = (byte*) print_str::str#9
|
||||
Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#66 (byte*) print_char_cursor#35
|
||||
Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#25 (byte*) print_char_cursor#3 (byte*) print_line_cursor#26 (byte*) print_char_cursor#37 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4
|
||||
@ -762,7 +749,7 @@ Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#45 (byte*) print_
|
||||
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#12
|
||||
Alias (byte) assert_byte::b#3 = (byte) assert_byte::b#4 (byte) assert_byte::b#5
|
||||
Alias (byte) assert_byte::c#3 = (byte) assert_byte::c#4 (byte) assert_byte::c#5
|
||||
Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#66 (byte*) print_line_cursor#68 (byte*) print_line_cursor#64 (byte*) print_line_cursor#60 (byte*) print_line_cursor#61 (byte*) print_line_cursor#55
|
||||
Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#67 (byte*) print_line_cursor#63 (byte*) print_line_cursor#59 (byte*) print_line_cursor#60 (byte*) print_line_cursor#55
|
||||
Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#47
|
||||
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#71 (byte*) print_char_cursor#72
|
||||
Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#49
|
||||
@ -786,7 +773,7 @@ Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#57 (byte*) print_
|
||||
Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#42 (byte*) print_line_cursor#43 (byte*) print_line_cursor#20
|
||||
Alias (signed byte) assert_sbyte::b#5 = (signed byte) assert_sbyte::b#6 (signed byte) assert_sbyte::b#7
|
||||
Alias (signed byte) assert_sbyte::c#5 = (signed byte) assert_sbyte::c#6 (signed byte) assert_sbyte::c#7
|
||||
Alias (byte*) print_line_cursor#56 = (byte*) print_line_cursor#67 (byte*) print_line_cursor#69 (byte*) print_line_cursor#65 (byte*) print_line_cursor#62 (byte*) print_line_cursor#63 (byte*) print_line_cursor#57
|
||||
Alias (byte*) print_line_cursor#56 = (byte*) print_line_cursor#66 (byte*) print_line_cursor#68 (byte*) print_line_cursor#64 (byte*) print_line_cursor#61 (byte*) print_line_cursor#62 (byte*) print_line_cursor#57
|
||||
Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#59
|
||||
Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#60 (byte*) print_char_cursor#76 (byte*) print_char_cursor#77
|
||||
Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#61
|
||||
@ -858,12 +845,11 @@ Redundant Phi (byte*) print_char_cursor#67 (byte*) print_char_cursor#2
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2
|
||||
Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1
|
||||
Simple Condition (bool~) print_cls::$1 [35] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||
Simple Condition (bool~) assert_byte::$2 [108] if((byte) assert_byte::b#3!=(byte) assert_byte::c#3) goto assert_byte::@1
|
||||
Simple Condition (bool~) assert_sbyte::$2 [191] if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1
|
||||
Simple Condition (bool~) print_cls::$1 [33] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||
Simple Condition (bool~) assert_byte::$2 [106] if((byte) assert_byte::b#3!=(byte) assert_byte::c#3) goto assert_byte::@1
|
||||
Simple Condition (bool~) assert_sbyte::$2 [189] if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) print_line_cursor#0 = ((byte*))$400
|
||||
Constant (const byte[]) print_hextab#0 = $0
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) RED#0 = 2
|
||||
@ -918,10 +904,7 @@ Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) assert_byte::b#2 = test_bytes::bd#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization Pass2ConstantStringConsolidation
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Culled Empty Block (label) print_ln::@2
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) print_cls::@2
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) main::@3
|
||||
@ -1039,27 +1022,27 @@ Calls in [assert_byte] to print_str:69 print_str:71 print_str:74 print_ln:76 pri
|
||||
|
||||
Created 15 initial phi equivalence classes
|
||||
Coalesced [24] print_str::str#13 ← print_str::str#5
|
||||
Not coalescing [25] print_char_cursor#87 ← print_line_cursor#1
|
||||
Coalesced [27] print_char_cursor#90 ← print_char_cursor#2
|
||||
Coalesced (already) [30] print_char_cursor#89 ← print_char_cursor#2
|
||||
Coalesced [32] print_line_cursor#71 ← print_line_cursor#1
|
||||
Coalesced (already) [36] print_char_cursor#88 ← print_char_cursor#2
|
||||
Not coalescing [25] print_char_cursor#86 ← print_line_cursor#1
|
||||
Coalesced [27] print_char_cursor#89 ← print_char_cursor#2
|
||||
Coalesced (already) [30] print_char_cursor#88 ← print_char_cursor#2
|
||||
Coalesced [32] print_line_cursor#70 ← print_line_cursor#1
|
||||
Coalesced (already) [36] print_char_cursor#87 ← print_char_cursor#2
|
||||
Coalesced [39] print_str::str#14 ← print_str::str#11
|
||||
Coalesced (already) [40] print_char_cursor#91 ← print_char_cursor#80
|
||||
Coalesced (already) [40] print_char_cursor#90 ← print_char_cursor#80
|
||||
Coalesced [47] print_str::str#15 ← print_str::str#0
|
||||
Coalesced [48] print_char_cursor#92 ← print_char_cursor#1
|
||||
Coalesced [50] print_line_cursor#72 ← print_line_cursor#47
|
||||
Coalesced (already) [55] print_line_cursor#73 ← print_line_cursor#1
|
||||
Not coalescing [58] print_char_cursor#93 ← print_line_cursor#1
|
||||
Coalesced [59] print_line_cursor#74 ← print_line_cursor#1
|
||||
Not coalescing [61] print_char_cursor#94 ← print_line_cursor#1
|
||||
Coalesced (already) [62] print_line_cursor#75 ← print_line_cursor#1
|
||||
Coalesced [48] print_char_cursor#91 ← print_char_cursor#1
|
||||
Coalesced [50] print_line_cursor#71 ← print_line_cursor#47
|
||||
Coalesced (already) [55] print_line_cursor#72 ← print_line_cursor#1
|
||||
Not coalescing [58] print_char_cursor#92 ← print_line_cursor#1
|
||||
Coalesced [59] print_line_cursor#73 ← print_line_cursor#1
|
||||
Not coalescing [61] print_char_cursor#93 ← print_line_cursor#1
|
||||
Coalesced (already) [62] print_line_cursor#74 ← print_line_cursor#1
|
||||
Coalesced [67] print_str::str#12 ← print_str::str#1
|
||||
Coalesced [68] print_char_cursor#83 ← print_char_cursor#70
|
||||
Coalesced (already) [70] print_char_cursor#86 ← print_char_cursor#2
|
||||
Coalesced (already) [73] print_char_cursor#85 ← print_char_cursor#2
|
||||
Coalesced (already) [75] print_line_cursor#70 ← print_line_cursor#50
|
||||
Coalesced (already) [79] print_char_cursor#84 ← print_char_cursor#2
|
||||
Coalesced [68] print_char_cursor#82 ← print_char_cursor#70
|
||||
Coalesced (already) [70] print_char_cursor#85 ← print_char_cursor#2
|
||||
Coalesced (already) [73] print_char_cursor#84 ← print_char_cursor#2
|
||||
Coalesced (already) [75] print_line_cursor#69 ← print_line_cursor#50
|
||||
Coalesced (already) [79] print_char_cursor#83 ← print_char_cursor#2
|
||||
Coalesced [87] print_cls::sc#3 ← print_cls::sc#1
|
||||
Coalesced down to 10 phi equivalence classes
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
@ -1141,7 +1124,7 @@ assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes
|
||||
[22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 )
|
||||
[22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) msg test_sbytes::@1/(const string) msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 )
|
||||
[23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
|
||||
[24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1
|
||||
[24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1
|
||||
[25] call print_str
|
||||
to:assert_sbyte::@4
|
||||
assert_sbyte::@4: scope:[assert_sbyte] from assert_sbyte
|
||||
@ -1167,7 +1150,7 @@ assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@5
|
||||
[35] call print_str
|
||||
to:assert_sbyte::@2
|
||||
print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@4 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@4
|
||||
[36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@4/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#87 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@4/(byte*) print_char_cursor#2 )
|
||||
[36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@4/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#86 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@4/(byte*) print_char_cursor#2 )
|
||||
[36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) str1 assert_byte::@3/(const string) str2 assert_byte::@4/(const string) str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) str1 assert_sbyte::@3/(const string) str2 assert_sbyte::@4/(const string) str )
|
||||
to:print_str::@1
|
||||
print_str::@1: scope:[print_str] from print_str print_str::@2
|
||||
@ -1199,11 +1182,11 @@ test_bytes: scope:[test_bytes] from main::@1
|
||||
[49] call assert_byte
|
||||
to:test_bytes::@1
|
||||
test_bytes::@1: scope:[test_bytes] from test_bytes
|
||||
[50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1
|
||||
[50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1
|
||||
[51] call assert_byte
|
||||
to:test_bytes::@2
|
||||
test_bytes::@2: scope:[test_bytes] from test_bytes::@1
|
||||
[52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1
|
||||
[52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1
|
||||
[53] call assert_byte
|
||||
to:test_bytes::@return
|
||||
test_bytes::@return: scope:[test_bytes] from test_bytes::@2
|
||||
@ -1213,7 +1196,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2
|
||||
[55] (byte*) print_line_cursor#50 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) $400 test_bytes::@1/(byte*) print_line_cursor#1 test_bytes::@2/(byte*) print_line_cursor#1 )
|
||||
[55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) $fe )
|
||||
[55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 )
|
||||
[55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) $400 test_bytes::@1/(byte*~) print_char_cursor#93 test_bytes::@2/(byte*~) print_char_cursor#94 )
|
||||
[55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) $400 test_bytes::@1/(byte*~) print_char_cursor#92 test_bytes::@2/(byte*~) print_char_cursor#93 )
|
||||
[55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) msg test_bytes::@1/(const string) msg1 test_bytes::@2/(const string) test_bytes::msg2 )
|
||||
[56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3
|
||||
[57] call print_str
|
||||
@ -1278,14 +1261,13 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte*) print_char_cursor#2 2.230769230769231
|
||||
(byte*) print_char_cursor#70 3.0
|
||||
(byte*) print_char_cursor#80 18.0
|
||||
(byte*~) print_char_cursor#87 4.0
|
||||
(byte*~) print_char_cursor#86 4.0
|
||||
(byte*~) print_char_cursor#92 4.0
|
||||
(byte*~) print_char_cursor#93 4.0
|
||||
(byte*~) print_char_cursor#94 4.0
|
||||
(void()) print_cls()
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 16.5
|
||||
(byte*) print_cls::sc#2 16.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 1.2500000000000002
|
||||
(byte*) print_line_cursor#24 24.0
|
||||
@ -1315,7 +1297,7 @@ Initial phi equivalence classes
|
||||
[ assert_sbyte::msg#5 ]
|
||||
[ assert_sbyte::b#5 ]
|
||||
[ assert_sbyte::c#5 ]
|
||||
[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
[ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
[ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
[ assert_byte::msg#3 ]
|
||||
@ -1326,7 +1308,7 @@ Complete equivalence classes
|
||||
[ assert_sbyte::msg#5 ]
|
||||
[ assert_sbyte::b#5 ]
|
||||
[ assert_sbyte::c#5 ]
|
||||
[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
[ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
[ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
[ assert_byte::msg#3 ]
|
||||
@ -1336,7 +1318,7 @@ Complete equivalence classes
|
||||
Allocated zp ZP_WORD:2 [ assert_sbyte::msg#5 ]
|
||||
Allocated zp ZP_BYTE:4 [ assert_sbyte::b#5 ]
|
||||
Allocated zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
|
||||
Allocated zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
Allocated zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
Allocated zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
Allocated zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
Allocated zp ZP_WORD:12 [ assert_byte::msg#3 ]
|
||||
@ -1526,7 +1508,7 @@ assert_sbyte: {
|
||||
sta print_str.str
|
||||
lda msg+1
|
||||
sta print_str.str+1
|
||||
//SEG61 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG61 [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -1534,7 +1516,7 @@ assert_sbyte: {
|
||||
//SEG62 [25] call print_str
|
||||
//SEG63 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str]
|
||||
print_str_from_assert_sbyte:
|
||||
//SEG64 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG64 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#86 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG65 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy
|
||||
jsr print_str
|
||||
//SEG66 [26] phi from assert_sbyte to assert_sbyte::@4 [phi:assert_sbyte->assert_sbyte::@4]
|
||||
@ -1716,7 +1698,7 @@ test_bytes: {
|
||||
jmp b1
|
||||
//SEG121 test_bytes::@1
|
||||
b1:
|
||||
//SEG122 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG122 [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -1731,7 +1713,7 @@ test_bytes: {
|
||||
//SEG127 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuz1=vbuc1
|
||||
lda #bc
|
||||
sta assert_byte.b
|
||||
//SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#92 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg1
|
||||
sta assert_byte.msg
|
||||
@ -1741,7 +1723,7 @@ test_bytes: {
|
||||
jmp b2
|
||||
//SEG130 test_bytes::@2
|
||||
b2:
|
||||
//SEG131 [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG131 [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -1756,7 +1738,7 @@ test_bytes: {
|
||||
//SEG136 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuz1=vbuc1
|
||||
lda #bd
|
||||
sta assert_byte.b
|
||||
//SEG137 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG137 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG138 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg2
|
||||
sta assert_byte.msg
|
||||
@ -1908,7 +1890,7 @@ Statement [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ]
|
||||
Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ assert_sbyte::b#5 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ assert_sbyte::c#5 ]
|
||||
Statement [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [34] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ assert_sbyte::b#5 ]
|
||||
@ -1920,22 +1902,22 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ a
|
||||
Statement [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#93 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#93 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#94 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#94 ] ) always clobbers reg byte a
|
||||
Statement [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#92 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#92 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#93 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#93 ] ) always clobbers reg byte a
|
||||
Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ) always clobbers reg byte a
|
||||
Statement [66] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ print_char_cursor#2 print_line_cursor#50 ] ( main:2::test_bytes:7::assert_byte:49 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:51 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:53 [ print_char_cursor#2 print_line_cursor#50 ] ) always clobbers reg byte a
|
||||
Statement [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [72] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#87 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 print_char_cursor#86 print_line_cursor#1 ] ) always clobbers reg byte a
|
||||
Statement [34] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [40] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#10) [ print_char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ print_line_cursor#1 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ print_line_cursor#50 print_char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [45] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#24 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [46] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ print_line_cursor#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#93 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#93 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#94 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#94 ] ) always clobbers reg byte a
|
||||
Statement [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#92 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#92 ] ) always clobbers reg byte a
|
||||
Statement [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#93 ] ( main:2::test_bytes:7 [ print_line_cursor#1 print_char_cursor#93 ] ) always clobbers reg byte a
|
||||
Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 print_char_cursor#70 print_line_cursor#50 assert_byte::b#3 assert_byte::c#3 ] ) always clobbers reg byte a
|
||||
Statement [66] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ print_char_cursor#2 print_line_cursor#50 ] ( main:2::test_bytes:7::assert_byte:49 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:51 [ print_char_cursor#2 print_line_cursor#50 ] main:2::test_bytes:7::assert_byte:53 [ print_char_cursor#2 print_line_cursor#50 ] ) always clobbers reg byte a
|
||||
Statement [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
|
||||
@ -1943,7 +1925,7 @@ Statement [72] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/sign
|
||||
Potential registers zp ZP_WORD:2 [ assert_sbyte::msg#5 ] : zp ZP_WORD:2 ,
|
||||
Potential registers zp ZP_BYTE:4 [ assert_sbyte::b#5 ] : zp ZP_BYTE:4 , reg byte x ,
|
||||
Potential registers zp ZP_BYTE:5 [ assert_sbyte::c#5 ] : zp ZP_BYTE:5 , reg byte x ,
|
||||
Potential registers zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ] : zp ZP_WORD:6 ,
|
||||
Potential registers zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ] : zp ZP_WORD:6 ,
|
||||
Potential registers zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] : zp ZP_WORD:8 ,
|
||||
Potential registers zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ] : zp ZP_WORD:10 ,
|
||||
Potential registers zp ZP_WORD:12 [ assert_byte::msg#3 ] : zp ZP_WORD:12 ,
|
||||
@ -1952,7 +1934,7 @@ Potential registers zp ZP_BYTE:15 [ assert_byte::c#3 ] : zp ZP_BYTE:15 , reg byt
|
||||
Potential registers zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:16 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 46.23: zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ] 31.8: zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
Uplift Scope [] 46.23: zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ] 31.8: zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
Uplift Scope [print_str] 45.5: zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
Uplift Scope [print_cls] 33: zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||
Uplift Scope [assert_byte] 2: zp ZP_WORD:12 [ assert_byte::msg#3 ] 0.4: zp ZP_BYTE:14 [ assert_byte::b#3 ] 0.4: zp ZP_BYTE:15 [ assert_byte::c#3 ]
|
||||
@ -1962,7 +1944,7 @@ Uplift Scope [main]
|
||||
Uplift Scope [test_bytes]
|
||||
Uplift Scope [test_sbytes]
|
||||
|
||||
Uplifting [] best 2199 combination zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ] zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
Uplifting [] best 2199 combination zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ] zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
Uplifting [print_str] best 2199 combination zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ]
|
||||
Uplifting [print_cls] best 2199 combination zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ]
|
||||
Uplifting [assert_byte] best 2187 combination zp ZP_WORD:12 [ assert_byte::msg#3 ] reg byte x [ assert_byte::b#3 ] zp ZP_BYTE:15 [ assert_byte::c#3 ]
|
||||
@ -1980,7 +1962,7 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:2 [ assert_sby
|
||||
Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 ] ] with [ zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:5 [ assert_sbyte::c#5 ] ] with [ zp ZP_BYTE:15 [ assert_byte::c#3 ] ]
|
||||
Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ]
|
||||
Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
Allocated (was zp ZP_WORD:10) zp ZP_WORD:7 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
@ -2155,7 +2137,7 @@ assert_sbyte: {
|
||||
.label msg = 2
|
||||
.label c = 4
|
||||
//SEG60 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
|
||||
//SEG61 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG61 [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -2163,7 +2145,7 @@ assert_sbyte: {
|
||||
//SEG62 [25] call print_str
|
||||
//SEG63 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str]
|
||||
print_str_from_assert_sbyte:
|
||||
//SEG64 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG64 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#86 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG65 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy
|
||||
jsr print_str
|
||||
//SEG66 [26] phi from assert_sbyte to assert_sbyte::@4 [phi:assert_sbyte->assert_sbyte::@4]
|
||||
@ -2343,7 +2325,7 @@ test_bytes: {
|
||||
jmp b1
|
||||
//SEG121 test_bytes::@1
|
||||
b1:
|
||||
//SEG122 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG122 [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -2357,7 +2339,7 @@ test_bytes: {
|
||||
sta assert_byte.c
|
||||
//SEG127 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1
|
||||
ldx #bc
|
||||
//SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#92 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg1
|
||||
sta assert_byte.msg
|
||||
@ -2367,7 +2349,7 @@ test_bytes: {
|
||||
jmp b2
|
||||
//SEG130 test_bytes::@2
|
||||
b2:
|
||||
//SEG131 [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG131 [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -2381,7 +2363,7 @@ test_bytes: {
|
||||
sta assert_byte.c
|
||||
//SEG136 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1
|
||||
ldx #bd
|
||||
//SEG137 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG137 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG138 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg2
|
||||
sta assert_byte.msg
|
||||
@ -2686,16 +2668,15 @@ FINAL SYMBOL TABLE
|
||||
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:5 2.230769230769231
|
||||
(byte*) print_char_cursor#70 print_char_cursor zp ZP_WORD:5 3.0
|
||||
(byte*) print_char_cursor#80 print_char_cursor zp ZP_WORD:5 18.0
|
||||
(byte*~) print_char_cursor#87 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#86 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#92 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#93 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#94 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:7 1.2500000000000002
|
||||
(byte*) print_line_cursor#24 print_line_cursor zp ZP_WORD:7 24.0
|
||||
@ -2752,7 +2733,7 @@ FINAL SYMBOL TABLE
|
||||
zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 print_cls::sc#2 print_cls::sc#1 ]
|
||||
reg byte x [ assert_sbyte::b#5 ]
|
||||
zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ]
|
||||
zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
zp ZP_WORD:7 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
reg byte x [ assert_byte::b#3 ]
|
||||
|
||||
@ -2893,14 +2874,14 @@ assert_sbyte: {
|
||||
.label msg = 2
|
||||
.label c = 4
|
||||
//SEG60 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
|
||||
//SEG61 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG61 [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
sta print_char_cursor+1
|
||||
//SEG62 [25] call print_str
|
||||
//SEG63 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str]
|
||||
//SEG64 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG64 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#86 [phi:assert_sbyte->print_str#0] -- register_copy
|
||||
//SEG65 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy
|
||||
jsr print_str
|
||||
//SEG66 [26] phi from assert_sbyte to assert_sbyte::@4 [phi:assert_sbyte->assert_sbyte::@4]
|
||||
@ -3049,7 +3030,7 @@ test_bytes: {
|
||||
sta assert_byte.msg+1
|
||||
jsr assert_byte
|
||||
//SEG121 test_bytes::@1
|
||||
//SEG122 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG122 [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -3062,7 +3043,7 @@ test_bytes: {
|
||||
sta assert_byte.c
|
||||
//SEG127 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1
|
||||
ldx #bc
|
||||
//SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#92 [phi:test_bytes::@1->assert_byte#3] -- register_copy
|
||||
//SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg1
|
||||
sta assert_byte.msg
|
||||
@ -3070,7 +3051,7 @@ test_bytes: {
|
||||
sta assert_byte.msg+1
|
||||
jsr assert_byte
|
||||
//SEG130 test_bytes::@2
|
||||
//SEG131 [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
//SEG131 [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2
|
||||
lda print_line_cursor
|
||||
sta print_char_cursor
|
||||
lda print_line_cursor+1
|
||||
@ -3083,7 +3064,7 @@ test_bytes: {
|
||||
sta assert_byte.c
|
||||
//SEG136 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1
|
||||
ldx #bd
|
||||
//SEG137 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG137 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@2->assert_byte#3] -- register_copy
|
||||
//SEG138 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1
|
||||
lda #<msg2
|
||||
sta assert_byte.msg
|
||||
|
@ -44,16 +44,15 @@
|
||||
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:5 2.230769230769231
|
||||
(byte*) print_char_cursor#70 print_char_cursor zp ZP_WORD:5 3.0
|
||||
(byte*) print_char_cursor#80 print_char_cursor zp ZP_WORD:5 18.0
|
||||
(byte*~) print_char_cursor#87 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#86 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#92 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#93 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(byte*~) print_char_cursor#94 print_char_cursor zp ZP_WORD:5 4.0
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:7 1.2500000000000002
|
||||
(byte*) print_line_cursor#24 print_line_cursor zp ZP_WORD:7 24.0
|
||||
@ -110,6 +109,6 @@
|
||||
zp ZP_WORD:2 [ assert_sbyte::msg#5 print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 print_cls::sc#2 print_cls::sc#1 ]
|
||||
reg byte x [ assert_sbyte::b#5 ]
|
||||
zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ]
|
||||
zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ]
|
||||
zp ZP_WORD:5 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ]
|
||||
zp ZP_WORD:7 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ]
|
||||
reg byte x [ assert_byte::b#3 ]
|
||||
|
@ -5,7 +5,6 @@ CONTROL FLOW GRAPH SSA
|
||||
to:@101
|
||||
main: scope:[main] from @101
|
||||
(byte*) main::screen#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
(byte) main::reverse#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) f1::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
call f1
|
||||
(byte) f1::return#0 ← (byte) f1::return#2
|
||||
@ -3123,8 +3122,6 @@ SYMBOL TABLE SSA
|
||||
(byte~) main::$0
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte) main::reverse
|
||||
(byte) main::reverse#0
|
||||
(byte*) main::screen
|
||||
(byte*) main::screen#0
|
||||
|
||||
@ -3433,7 +3430,6 @@ Redundant Phi (byte) f99::x#1 (byte) f99::x#0
|
||||
Redundant Phi (byte) f100::return#1 (byte) f100::x#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte*) main::screen#0 = ((byte*))$400
|
||||
Constant (const byte) main::reverse#0 = $80
|
||||
Constant (const byte) f1::x#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) f2::x#0 = f1::x#0
|
||||
@ -4234,7 +4230,6 @@ Constant (const byte) main::$0 = f1::return#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Consolidated array index constant in *(main::screen#0+0)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Culled Empty Block (label) f1::@2
|
||||
Culled Empty Block (label) f2::@2
|
||||
Culled Empty Block (label) f3::@2
|
||||
@ -6073,7 +6068,6 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) f99::return
|
||||
(byte) f99::x
|
||||
(void()) main()
|
||||
(byte) main::reverse
|
||||
(byte*) main::screen
|
||||
|
||||
Initial phi equivalence classes
|
||||
@ -9797,7 +9791,6 @@ FINAL SYMBOL TABLE
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte) main::reverse
|
||||
(byte*) main::screen
|
||||
(const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
|
||||
|
@ -504,7 +504,6 @@
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte) main::reverse
|
||||
(byte*) main::screen
|
||||
(const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
|
||||
|
@ -5,10 +5,7 @@
|
||||
.pc = $80d "Program"
|
||||
.label DC00 = $dc00
|
||||
main: {
|
||||
ldy #0
|
||||
b1:
|
||||
iny
|
||||
b2:
|
||||
ldx DC00
|
||||
txa
|
||||
and #$1f
|
||||
@ -17,6 +14,6 @@ main: {
|
||||
jmp b1
|
||||
b3:
|
||||
cmp #$1f
|
||||
beq b2
|
||||
beq b1
|
||||
jmp b1
|
||||
}
|
||||
|
@ -11,14 +11,13 @@ main: scope:[main] from @1
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2 main::@3
|
||||
[5] (byte) rpc#4 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) rpc#1 main::@3/(byte) rpc#1 )
|
||||
[6] (byte) rpc#1 ← ++ (byte) rpc#4
|
||||
[5] (byte) key#1 ← *((const byte*) DC00#0)
|
||||
[6] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f
|
||||
[7] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@3
|
||||
[7] (byte) key#1 ← *((const byte*) DC00#0)
|
||||
[8] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f
|
||||
[9] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3
|
||||
to:main::@1
|
||||
main::@3: scope:[main] from main::@2
|
||||
[10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@2
|
||||
[8] phi()
|
||||
to:main::@1
|
||||
main::@3: scope:[main] from main::@1
|
||||
[9] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@1
|
||||
to:main::@2
|
||||
|
@ -2,18 +2,13 @@
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) DC00#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte) rpc#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) key#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte) rpc#7 ← phi( @1/(byte) rpc#9 )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@3
|
||||
(byte) rpc#4 ← phi( main/(byte) rpc#7 main::@3/(byte) rpc#8 )
|
||||
(byte) rpc#1 ← ++ (byte) rpc#4
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@2
|
||||
(byte) rpc#10 ← phi( main::@1/(byte) rpc#1 main::@2/(byte) rpc#10 )
|
||||
main::@1: scope:[main] from main::@3
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main main::@1 main::@2
|
||||
(byte) key#1 ← *((byte*) DC00#0)
|
||||
(bool~) main::$0 ← (byte) key#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f
|
||||
@ -23,25 +18,19 @@ main::@2: scope:[main] from main::@1 main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
(byte) key#6 ← phi( main::@2/(byte) key#1 )
|
||||
(byte) rpc#8 ← phi( main::@2/(byte) rpc#10 )
|
||||
if(true) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@3
|
||||
(byte) key#4 ← phi( main::@3/(byte) key#6 )
|
||||
(byte) rpc#5 ← phi( main::@3/(byte) rpc#8 )
|
||||
(byte) rpc#2 ← (byte) rpc#5
|
||||
(byte) key#2 ← (byte) key#4
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte) key#7 ← phi( @begin/(byte) key#0 )
|
||||
(byte) rpc#9 ← phi( @begin/(byte) rpc#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
(byte) key#5 ← phi( @1/(byte) key#2 )
|
||||
(byte) rpc#6 ← phi( @1/(byte) rpc#2 )
|
||||
(byte) rpc#3 ← (byte) rpc#6
|
||||
(byte) key#3 ← (byte) key#5
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
@ -71,73 +60,48 @@ SYMBOL TABLE SSA
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte) rpc
|
||||
(byte) rpc#0
|
||||
(byte) rpc#1
|
||||
(byte) rpc#10
|
||||
(byte) rpc#2
|
||||
(byte) rpc#3
|
||||
(byte) rpc#4
|
||||
(byte) rpc#5
|
||||
(byte) rpc#6
|
||||
(byte) rpc#7
|
||||
(byte) rpc#8
|
||||
(byte) rpc#9
|
||||
|
||||
Alias (byte) rpc#10 = (byte) rpc#8 (byte) rpc#5 (byte) rpc#2
|
||||
Culled Empty Block (label) main::@1
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) key#1 = (byte) key#6 (byte) key#4 (byte) key#2
|
||||
Alias (byte) rpc#0 = (byte) rpc#9
|
||||
Alias (byte) key#0 = (byte) key#7
|
||||
Alias (byte) rpc#3 = (byte) rpc#6
|
||||
Alias (byte) key#3 = (byte) key#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte) rpc#10
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) rpc#7 (byte) rpc#0
|
||||
Redundant Phi (byte) rpc#10 (byte) rpc#1
|
||||
Redundant Phi (byte) rpc#3 (byte) rpc#10
|
||||
Redundant Phi (byte) key#3 (byte) key#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Rewriting && if()-condition to two if()s [11] (bool~) main::$3 ← (bool~) main::$0 && (bool~) main::$2
|
||||
Rewriting && if()-condition to two if()s [6] (bool~) main::$3 ← (bool~) main::$0 && (bool~) main::$2
|
||||
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
||||
Constant (const byte*) DC00#0 = ((byte*))$dc00
|
||||
Constant (const byte) rpc#0 = 0
|
||||
Constant (const byte) key#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [7] if(true) goto main::@1
|
||||
if() condition always true - replacing block destination [5] if(true) goto main::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Culled Empty Block (label) main::@3
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Simple Condition (bool~) main::$0 [6] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5
|
||||
Simple Condition (bool~) main::$2 [8] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@2
|
||||
Simple Condition (bool~) main::$0 [4] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5
|
||||
Simple Condition (bool~) main::$2 [6] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Inlining constant with var siblings (const byte) rpc#0
|
||||
Constant inlined rpc#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@6(between main::@2 and main::@1)
|
||||
Added new block during phi lifting main::@7(between main::@5 and main::@1)
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@3
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
Created 1 initial phi equivalence classes
|
||||
Coalesced [10] rpc#11 ← rpc#1
|
||||
Coalesced (already) [12] rpc#12 ← rpc#1
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@7
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Renumbering block main::@2 to main::@1
|
||||
Renumbering block main::@3 to main::@2
|
||||
Renumbering block main::@5 to main::@3
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@2
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
@ -153,17 +117,16 @@ main: scope:[main] from @1
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2 main::@3
|
||||
[5] (byte) rpc#4 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) rpc#1 main::@3/(byte) rpc#1 )
|
||||
[6] (byte) rpc#1 ← ++ (byte) rpc#4
|
||||
[5] (byte) key#1 ← *((const byte*) DC00#0)
|
||||
[6] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f
|
||||
[7] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@3
|
||||
[7] (byte) key#1 ← *((const byte*) DC00#0)
|
||||
[8] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f
|
||||
[9] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3
|
||||
to:main::@1
|
||||
main::@3: scope:[main] from main::@2
|
||||
[10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@2
|
||||
[8] phi()
|
||||
to:main::@1
|
||||
main::@3: scope:[main] from main::@1
|
||||
[9] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@1
|
||||
to:main::@2
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
@ -172,21 +135,15 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) key#1 151.5
|
||||
(void()) main()
|
||||
(byte~) main::$1 101.0
|
||||
(byte) rpc
|
||||
(byte) rpc#1 42.6
|
||||
(byte) rpc#4 213.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ rpc#4 rpc#1 ]
|
||||
Added variable key#1 to zero page equivalence class [ key#1 ]
|
||||
Added variable main::$1 to zero page equivalence class [ main::$1 ]
|
||||
Complete equivalence classes
|
||||
[ rpc#4 rpc#1 ]
|
||||
[ key#1 ]
|
||||
[ main::$1 ]
|
||||
Allocated zp ZP_BYTE:2 [ rpc#4 rpc#1 ]
|
||||
Allocated zp ZP_BYTE:3 [ key#1 ]
|
||||
Allocated zp ZP_BYTE:4 [ main::$1 ]
|
||||
Allocated zp ZP_BYTE:2 [ key#1 ]
|
||||
Allocated zp ZP_BYTE:3 [ main::$1 ]
|
||||
|
||||
INITIAL ASM
|
||||
//SEG0 File Comments
|
||||
@ -198,8 +155,7 @@ INITIAL ASM
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.label DC00 = $dc00
|
||||
.label rpc = 2
|
||||
.label key = 3
|
||||
.label key = 2
|
||||
//SEG3 @begin
|
||||
bbegin:
|
||||
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -218,56 +174,47 @@ bend_from_b1:
|
||||
bend:
|
||||
//SEG10 main
|
||||
main: {
|
||||
.label _1 = 4
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG12 [5] phi (byte) rpc#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
sta rpc
|
||||
.label _1 = 3
|
||||
jmp b1
|
||||
//SEG13 main::@1
|
||||
//SEG11 main::@1
|
||||
b1:
|
||||
//SEG14 [6] (byte) rpc#1 ← ++ (byte) rpc#4 -- vbuz1=_inc_vbuz1
|
||||
inc rpc
|
||||
jmp b2
|
||||
//SEG15 main::@2
|
||||
b2:
|
||||
//SEG16 [7] (byte) key#1 ← *((const byte*) DC00#0) -- vbuz1=_deref_pbuc1
|
||||
//SEG12 [5] (byte) key#1 ← *((const byte*) DC00#0) -- vbuz1=_deref_pbuc1
|
||||
lda DC00
|
||||
sta key
|
||||
//SEG17 [8] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f -- vbuz1=vbuz2_band_vbuc1
|
||||
//SEG13 [6] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f -- vbuz1=vbuz2_band_vbuc1
|
||||
lda #$1f
|
||||
and key
|
||||
sta _1
|
||||
//SEG18 [9] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuz1_eq_0_then_la1
|
||||
//SEG14 [7] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuz1_eq_0_then_la1
|
||||
lda key
|
||||
cmp #0
|
||||
beq b3
|
||||
//SEG19 [5] phi from main::@2 main::@3 to main::@1 [phi:main::@2/main::@3->main::@1]
|
||||
b1_from_b2:
|
||||
b1_from_b3:
|
||||
//SEG20 [5] phi (byte) rpc#4 = (byte) rpc#1 [phi:main::@2/main::@3->main::@1#0] -- register_copy
|
||||
//SEG15 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
||||
b2_from_b1:
|
||||
b2_from_b3:
|
||||
jmp b2
|
||||
//SEG16 main::@2
|
||||
b2:
|
||||
jmp b1
|
||||
//SEG21 main::@3
|
||||
//SEG17 main::@3
|
||||
b3:
|
||||
//SEG22 [10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@2 -- vbuz1_eq_vbuc1_then_la1
|
||||
//SEG18 [9] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@1 -- vbuz1_eq_vbuc1_then_la1
|
||||
lda #$1f
|
||||
cmp _1
|
||||
beq b2
|
||||
jmp b1_from_b3
|
||||
beq b1
|
||||
jmp b2_from_b3
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Potential registers zp ZP_BYTE:2 [ rpc#4 rpc#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:3 [ key#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:4 [ main::$1 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:2 [ key#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:3 [ main::$1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 255.6: zp ZP_BYTE:2 [ rpc#4 rpc#1 ] 151.5: zp ZP_BYTE:3 [ key#1 ]
|
||||
Uplift Scope [main] 101: zp ZP_BYTE:4 [ main::$1 ]
|
||||
Uplift Scope [] 151.5: zp ZP_BYTE:2 [ key#1 ]
|
||||
Uplift Scope [main] 101: zp ZP_BYTE:3 [ main::$1 ]
|
||||
|
||||
Uplifting [] best 2542 combination reg byte y [ rpc#4 rpc#1 ] reg byte x [ key#1 ]
|
||||
Uplifting [main] best 2142 combination reg byte a [ main::$1 ]
|
||||
Uplifting [] best 2502 combination reg byte x [ key#1 ]
|
||||
Uplifting [main] best 2102 combination reg byte a [ main::$1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 File Comments
|
||||
@ -297,37 +244,30 @@ bend_from_b1:
|
||||
bend:
|
||||
//SEG10 main
|
||||
main: {
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG12 [5] phi (byte) rpc#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1
|
||||
ldy #0
|
||||
jmp b1
|
||||
//SEG13 main::@1
|
||||
//SEG11 main::@1
|
||||
b1:
|
||||
//SEG14 [6] (byte) rpc#1 ← ++ (byte) rpc#4 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
jmp b2
|
||||
//SEG15 main::@2
|
||||
b2:
|
||||
//SEG16 [7] (byte) key#1 ← *((const byte*) DC00#0) -- vbuxx=_deref_pbuc1
|
||||
//SEG12 [5] (byte) key#1 ← *((const byte*) DC00#0) -- vbuxx=_deref_pbuc1
|
||||
ldx DC00
|
||||
//SEG17 [8] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f -- vbuaa=vbuxx_band_vbuc1
|
||||
//SEG13 [6] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f -- vbuaa=vbuxx_band_vbuc1
|
||||
txa
|
||||
and #$1f
|
||||
//SEG18 [9] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuxx_eq_0_then_la1
|
||||
//SEG14 [7] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuxx_eq_0_then_la1
|
||||
cpx #0
|
||||
beq b3
|
||||
//SEG19 [5] phi from main::@2 main::@3 to main::@1 [phi:main::@2/main::@3->main::@1]
|
||||
b1_from_b2:
|
||||
b1_from_b3:
|
||||
//SEG20 [5] phi (byte) rpc#4 = (byte) rpc#1 [phi:main::@2/main::@3->main::@1#0] -- register_copy
|
||||
//SEG15 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
||||
b2_from_b1:
|
||||
b2_from_b3:
|
||||
jmp b2
|
||||
//SEG16 main::@2
|
||||
b2:
|
||||
jmp b1
|
||||
//SEG21 main::@3
|
||||
//SEG17 main::@3
|
||||
b3:
|
||||
//SEG22 [10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@2 -- vbuaa_eq_vbuc1_then_la1
|
||||
//SEG18 [9] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@1 -- vbuaa_eq_vbuc1_then_la1
|
||||
cmp #$1f
|
||||
beq b2
|
||||
jmp b1_from_b3
|
||||
beq b1
|
||||
jmp b2_from_b3
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
@ -336,24 +276,23 @@ Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing label b2_from_b3 with b2
|
||||
Removing instruction b1_from_bbegin:
|
||||
Removing instruction b1:
|
||||
Removing instruction main_from_b1:
|
||||
Removing instruction bend_from_b1:
|
||||
Removing instruction b1_from_b2:
|
||||
Removing instruction b2_from_b1:
|
||||
Removing instruction b2_from_b3:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction bend:
|
||||
Removing instruction b1_from_main:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
Updating BasicUpstart to call main directly
|
||||
Removing instruction jsr main
|
||||
Succesful ASM optimization Pass5SkipBegin
|
||||
Skipping double jump to b1 in jmp b1_from_b3
|
||||
Skipping double jump to b1 in jmp b2
|
||||
Succesful ASM optimization Pass5DoubleJumpElimination
|
||||
Relabelling long label b1_from_b3 to b4
|
||||
Succesful ASM optimization Pass5RelabelLongLabels
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b4:
|
||||
Removing instruction b2:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
@ -369,17 +308,13 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(byte) rpc
|
||||
(byte) rpc#1 reg byte y 42.6
|
||||
(byte) rpc#4 reg byte y 213.0
|
||||
|
||||
reg byte y [ rpc#4 rpc#1 ]
|
||||
reg byte x [ key#1 ]
|
||||
reg byte a [ main::$1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 2070
|
||||
Score: 2030
|
||||
|
||||
//SEG0 File Comments
|
||||
// Duplicate Loop Problem from Richard-William Loerakker
|
||||
@ -399,31 +334,24 @@ Score: 2070
|
||||
//SEG9 @end
|
||||
//SEG10 main
|
||||
main: {
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG12 [5] phi (byte) rpc#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuyy=vbuc1
|
||||
ldy #0
|
||||
//SEG13 main::@1
|
||||
//SEG11 main::@1
|
||||
b1:
|
||||
//SEG14 [6] (byte) rpc#1 ← ++ (byte) rpc#4 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG15 main::@2
|
||||
b2:
|
||||
//SEG16 [7] (byte) key#1 ← *((const byte*) DC00#0) -- vbuxx=_deref_pbuc1
|
||||
//SEG12 [5] (byte) key#1 ← *((const byte*) DC00#0) -- vbuxx=_deref_pbuc1
|
||||
ldx DC00
|
||||
//SEG17 [8] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f -- vbuaa=vbuxx_band_vbuc1
|
||||
//SEG13 [6] (byte~) main::$1 ← (byte) key#1 & (byte/signed byte/word/signed word/dword/signed dword) $1f -- vbuaa=vbuxx_band_vbuc1
|
||||
txa
|
||||
and #$1f
|
||||
//SEG18 [9] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuxx_eq_0_then_la1
|
||||
//SEG14 [7] if((byte) key#1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3 -- vbuxx_eq_0_then_la1
|
||||
cpx #0
|
||||
beq b3
|
||||
//SEG19 [5] phi from main::@2 main::@3 to main::@1 [phi:main::@2/main::@3->main::@1]
|
||||
//SEG20 [5] phi (byte) rpc#4 = (byte) rpc#1 [phi:main::@2/main::@3->main::@1#0] -- register_copy
|
||||
//SEG15 [8] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2]
|
||||
//SEG16 main::@2
|
||||
jmp b1
|
||||
//SEG21 main::@3
|
||||
//SEG17 main::@3
|
||||
b3:
|
||||
//SEG22 [10] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@2 -- vbuaa_eq_vbuc1_then_la1
|
||||
//SEG18 [9] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) $1f) goto main::@1 -- vbuaa_eq_vbuc1_then_la1
|
||||
cmp #$1f
|
||||
beq b2
|
||||
beq b1
|
||||
jmp b1
|
||||
}
|
||||
|
||||
|
@ -10,10 +10,6 @@
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(byte) rpc
|
||||
(byte) rpc#1 reg byte y 42.6
|
||||
(byte) rpc#4 reg byte y 213.0
|
||||
|
||||
reg byte y [ rpc#4 rpc#1 ]
|
||||
reg byte x [ key#1 ]
|
||||
reg byte a [ main::$1 ]
|
||||
|
@ -4,19 +4,18 @@
|
||||
.pc = $80d "Program"
|
||||
.label B = $1000
|
||||
main: {
|
||||
lda #0
|
||||
b2:
|
||||
b1:
|
||||
jsr menu
|
||||
jmp b2
|
||||
jmp b1
|
||||
}
|
||||
menu: {
|
||||
jsr mode
|
||||
rts
|
||||
}
|
||||
mode: {
|
||||
b2:
|
||||
b1:
|
||||
lda B
|
||||
cmp #0
|
||||
bne b2
|
||||
jmp b2
|
||||
bne b1
|
||||
jmp b1
|
||||
}
|
||||
|
@ -10,32 +10,26 @@
|
||||
main: scope:[main] from @1
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
[5] (byte) a#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) a#12 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[6] phi()
|
||||
[7] call menu
|
||||
main::@1: scope:[main] from main main::@1
|
||||
[5] phi()
|
||||
[6] call menu
|
||||
to:main::@1
|
||||
menu: scope:[menu] from main::@2
|
||||
[8] phi()
|
||||
menu: scope:[menu] from main::@1
|
||||
[7] phi()
|
||||
to:menu::@1
|
||||
menu::@1: scope:[menu] from menu
|
||||
[9] phi()
|
||||
[10] call mode
|
||||
[8] phi()
|
||||
[9] call mode
|
||||
to:menu::@return
|
||||
menu::@return: scope:[menu] from menu::@1
|
||||
[11] return
|
||||
[10] return
|
||||
to:@return
|
||||
mode: scope:[mode] from menu::@1
|
||||
[12] phi()
|
||||
[11] phi()
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@1 mode::@2
|
||||
[12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@2
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@2 mode::@3
|
||||
[13] (byte) a#12 ← phi( mode/(byte) a#1 mode::@3/(byte) a#5 )
|
||||
to:mode::@2
|
||||
mode::@2: scope:[mode] from mode::@1
|
||||
[14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1
|
||||
to:mode::@3
|
||||
mode::@3: scope:[mode] from mode::@2
|
||||
[15] (byte) a#5 ← *((const byte*) B#0)
|
||||
[13] phi()
|
||||
to:mode::@1
|
||||
|
@ -4,80 +4,53 @@ CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@2
|
||||
main: scope:[main] from @3
|
||||
(byte) a#20 ← phi( @3/(byte) a#19 )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@7
|
||||
(byte) a#15 ← phi( main/(byte) a#20 main::@7/(byte) a#0 )
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte) a#14 ← phi( main::@1/(byte) a#15 )
|
||||
call menu
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@2
|
||||
(byte) a#8 ← phi( main::@2/(byte) a#3 )
|
||||
(byte) a#0 ← (byte) a#8
|
||||
to:main::@1
|
||||
main::@return: scope:[main] from main::@1
|
||||
(byte) a#9 ← phi( main::@1/(byte) a#15 )
|
||||
(byte) a#1 ← (byte) a#9
|
||||
return
|
||||
to:@return
|
||||
menu: scope:[menu] from main::@2
|
||||
(byte) a#21 ← phi( main::@2/(byte) a#14 )
|
||||
to:menu::@1
|
||||
menu::@1: scope:[menu] from menu
|
||||
(byte) a#17 ← phi( menu/(byte) a#21 )
|
||||
if(true) goto menu::@2
|
||||
to:menu::@return
|
||||
menu::@2: scope:[menu] from menu::@1
|
||||
(byte) a#16 ← phi( menu::@1/(byte) a#17 )
|
||||
call mode
|
||||
to:menu::@8
|
||||
menu::@8: scope:[menu] from menu::@2
|
||||
(byte) a#10 ← phi( menu::@2/(byte) a#6 )
|
||||
(byte) a#2 ← (byte) a#10
|
||||
to:menu::@return
|
||||
menu::@return: scope:[menu] from menu::@1 menu::@8
|
||||
(byte) a#11 ← phi( menu::@1/(byte) a#17 menu::@8/(byte) a#2 )
|
||||
(byte) a#3 ← (byte) a#11
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte) a#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte*) B#0 ← ((byte*)) (word/signed word/dword/signed dword) $1000
|
||||
to:@3
|
||||
mode: scope:[mode] from menu::@2
|
||||
(byte) a#22 ← phi( menu::@2/(byte) a#16 )
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@4 mode::@7
|
||||
(byte) a#18 ← phi( mode/(byte) a#22 mode::@4/(byte) a#23 mode::@7/(byte) a#5 )
|
||||
mode::@1: scope:[mode] from mode mode::@2 mode::@4
|
||||
if(true) goto mode::@2
|
||||
to:mode::@return
|
||||
mode::@2: scope:[mode] from mode::@1
|
||||
(byte) a#24 ← phi( mode::@1/(byte) a#18 )
|
||||
(bool~) mode::$0 ← *((byte*) B#0) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(bool~) mode::$1 ← ! (bool~) mode::$0
|
||||
if((bool~) mode::$1) goto mode::@4
|
||||
to:mode::@7
|
||||
mode::@4: scope:[mode] from mode::@2
|
||||
(byte) a#23 ← phi( mode::@2/(byte) a#24 )
|
||||
to:mode::@1
|
||||
mode::@7: scope:[mode] from mode::@2
|
||||
(byte) a#5 ← *((byte*) B#0)
|
||||
mode::@4: scope:[mode] from mode::@2
|
||||
to:mode::@1
|
||||
mode::@return: scope:[mode] from mode::@1
|
||||
(byte) a#12 ← phi( mode::@1/(byte) a#18 )
|
||||
(byte) a#6 ← (byte) a#12
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @2
|
||||
(byte) a#19 ← phi( @2/(byte) a#4 )
|
||||
call main
|
||||
to:@4
|
||||
@4: scope:[] from @3
|
||||
(byte) a#13 ← phi( @3/(byte) a#1 )
|
||||
(byte) a#7 ← (byte) a#13
|
||||
to:@end
|
||||
@end: scope:[] from @4
|
||||
|
||||
@ -89,32 +62,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) B
|
||||
(byte*) B#0
|
||||
(byte) a
|
||||
(byte) a#0
|
||||
(byte) a#1
|
||||
(byte) a#10
|
||||
(byte) a#11
|
||||
(byte) a#12
|
||||
(byte) a#13
|
||||
(byte) a#14
|
||||
(byte) a#15
|
||||
(byte) a#16
|
||||
(byte) a#17
|
||||
(byte) a#18
|
||||
(byte) a#19
|
||||
(byte) a#2
|
||||
(byte) a#20
|
||||
(byte) a#21
|
||||
(byte) a#22
|
||||
(byte) a#23
|
||||
(byte) a#24
|
||||
(byte) a#3
|
||||
(byte) a#4
|
||||
(byte) a#5
|
||||
(byte) a#6
|
||||
(byte) a#7
|
||||
(byte) a#8
|
||||
(byte) a#9
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
@ -131,54 +78,30 @@ SYMBOL TABLE SSA
|
||||
(label) mode::@1
|
||||
(label) mode::@2
|
||||
(label) mode::@4
|
||||
(label) mode::@7
|
||||
(label) mode::@return
|
||||
|
||||
Inversing boolean not [27] (bool~) mode::$1 ← *((byte*) B#0) != (byte/signed byte/word/signed word/dword/signed dword) 0 from [26] (bool~) mode::$0 ← *((byte*) B#0) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) menu::@8
|
||||
Culled Empty Block (label) @4
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [9] (bool~) mode::$1 ← *((byte*) B#0) != (byte/signed byte/word/signed word/dword/signed dword) 0 from [8] (bool~) mode::$0 ← *((byte*) B#0) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) a#1 = (byte) a#14 (byte) a#15 (byte) a#9
|
||||
Alias (byte) a#0 = (byte) a#8
|
||||
Alias (byte) a#16 = (byte) a#17 (byte) a#21
|
||||
Alias (byte) a#10 = (byte) a#2
|
||||
Alias (byte) a#11 = (byte) a#3
|
||||
Alias (byte) a#12 = (byte) a#24 (byte) a#18 (byte) a#23 (byte) a#6
|
||||
Alias (byte) a#19 = (byte) a#4
|
||||
Alias (byte) a#13 = (byte) a#7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte) a#12
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) a#20 (byte) a#19
|
||||
Redundant Phi (byte) a#0 (byte) a#11
|
||||
Redundant Phi (byte) a#16 (byte) a#1
|
||||
Redundant Phi (byte) a#10 (byte) a#12
|
||||
Redundant Phi (byte) a#22 (byte) a#16
|
||||
Redundant Phi (byte) a#13 (byte) a#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) mode::$1 [28] if(*((byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4
|
||||
Simple Condition (bool~) mode::$1 [10] if(*((byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) a#19 = 0
|
||||
Constant (const byte*) B#0 = ((byte*))$1000
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [1] if(true) goto main::@2
|
||||
Removing PHI-reference to removed block (menu::@1) in block menu::@return
|
||||
if() condition always true - replacing block destination [4] if(true) goto menu::@2
|
||||
if() condition always true - replacing block destination [9] if(true) goto mode::@2
|
||||
if() condition always true - replacing block destination [0] if(true) goto main::@2
|
||||
if() condition always true - replacing block destination [3] if(true) goto menu::@2
|
||||
if() condition always true - replacing block destination [6] if(true) goto mode::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
Removing unused block mode::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) menu::@1
|
||||
Culled Empty Block (label) menu::@8
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) mode::@4
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) mode::@1
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Redundant Phi (byte) a#11 (byte) a#12
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Inlining constant with var siblings (const byte) a#19
|
||||
Constant inlined a#19 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
@ -186,27 +109,29 @@ Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of menu
|
||||
Adding NOP phi() at start of menu::@2
|
||||
Adding NOP phi() at start of mode
|
||||
Adding NOP phi() at start of mode::@4
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
Calls in [main] to menu:7
|
||||
Calls in [menu] to mode:11
|
||||
Calls in [main] to menu:6
|
||||
Calls in [menu] to mode:9
|
||||
|
||||
Created 2 initial phi equivalence classes
|
||||
Coalesced [8] a#25 ← a#12
|
||||
Coalesced (already) [13] a#26 ← a#1
|
||||
Coalesced [17] a#27 ← a#5
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Renumbering block @3 to @1
|
||||
Renumbering block main::@2 to main::@1
|
||||
Renumbering block menu::@2 to menu::@1
|
||||
Renumbering block mode::@7 to mode::@3
|
||||
Renumbering block mode::@2 to mode::@1
|
||||
Renumbering block mode::@4 to mode::@2
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of main::@1
|
||||
Adding NOP phi() at start of menu
|
||||
Adding NOP phi() at start of menu::@1
|
||||
Adding NOP phi() at start of mode
|
||||
Adding NOP phi() at start of mode::@2
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
@ -221,52 +146,39 @@ FINAL CONTROL FLOW GRAPH
|
||||
main: scope:[main] from @1
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
[5] (byte) a#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) a#12 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[6] phi()
|
||||
[7] call menu
|
||||
main::@1: scope:[main] from main main::@1
|
||||
[5] phi()
|
||||
[6] call menu
|
||||
to:main::@1
|
||||
menu: scope:[menu] from main::@2
|
||||
[8] phi()
|
||||
menu: scope:[menu] from main::@1
|
||||
[7] phi()
|
||||
to:menu::@1
|
||||
menu::@1: scope:[menu] from menu
|
||||
[9] phi()
|
||||
[10] call mode
|
||||
[8] phi()
|
||||
[9] call mode
|
||||
to:menu::@return
|
||||
menu::@return: scope:[menu] from menu::@1
|
||||
[11] return
|
||||
[10] return
|
||||
to:@return
|
||||
mode: scope:[mode] from menu::@1
|
||||
[12] phi()
|
||||
[11] phi()
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@1 mode::@2
|
||||
[12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@2
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@2 mode::@3
|
||||
[13] (byte) a#12 ← phi( mode/(byte) a#1 mode::@3/(byte) a#5 )
|
||||
to:mode::@2
|
||||
mode::@2: scope:[mode] from mode::@1
|
||||
[14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1
|
||||
to:mode::@3
|
||||
mode::@3: scope:[mode] from mode::@2
|
||||
[15] (byte) a#5 ← *((const byte*) B#0)
|
||||
[13] phi()
|
||||
to:mode::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) B
|
||||
(byte) a
|
||||
(byte) a#1 2.6
|
||||
(byte) a#12 38.0
|
||||
(byte) a#5 202.0
|
||||
(void()) main()
|
||||
(void()) menu()
|
||||
(void()) mode()
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ a#1 a#12 a#5 ]
|
||||
Complete equivalence classes
|
||||
[ a#1 a#12 a#5 ]
|
||||
Allocated zp ZP_BYTE:2 [ a#1 a#12 a#5 ]
|
||||
|
||||
INITIAL ASM
|
||||
//SEG0 File Comments
|
||||
@ -277,7 +189,6 @@ INITIAL ASM
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.label B = $1000
|
||||
.label a = 2
|
||||
//SEG3 @begin
|
||||
bbegin:
|
||||
//SEG4 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
@ -296,87 +207,66 @@ bend_from_b1:
|
||||
bend:
|
||||
//SEG10 main
|
||||
main: {
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG11 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1]
|
||||
b1_from_main:
|
||||
//SEG12 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
sta a
|
||||
b1_from_b1:
|
||||
jmp b1
|
||||
//SEG13 main::@1
|
||||
//SEG12 main::@1
|
||||
b1:
|
||||
//SEG14 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
b2_from_b1:
|
||||
jmp b2
|
||||
//SEG15 main::@2
|
||||
b2:
|
||||
//SEG16 [7] call menu
|
||||
//SEG17 [8] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
menu_from_b2:
|
||||
//SEG13 [6] call menu
|
||||
//SEG14 [7] phi from main::@1 to menu [phi:main::@1->menu]
|
||||
menu_from_b1:
|
||||
jsr menu
|
||||
//SEG18 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
b1_from_b2:
|
||||
//SEG19 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy
|
||||
jmp b1
|
||||
jmp b1_from_b1
|
||||
}
|
||||
//SEG20 menu
|
||||
//SEG15 menu
|
||||
menu: {
|
||||
//SEG21 [9] phi from menu to menu::@1 [phi:menu->menu::@1]
|
||||
//SEG16 [8] phi from menu to menu::@1 [phi:menu->menu::@1]
|
||||
b1_from_menu:
|
||||
jmp b1
|
||||
//SEG22 menu::@1
|
||||
//SEG17 menu::@1
|
||||
b1:
|
||||
//SEG23 [10] call mode
|
||||
//SEG24 [12] phi from menu::@1 to mode [phi:menu::@1->mode]
|
||||
//SEG18 [9] call mode
|
||||
//SEG19 [11] phi from menu::@1 to mode [phi:menu::@1->mode]
|
||||
mode_from_b1:
|
||||
jsr mode
|
||||
jmp breturn
|
||||
//SEG25 menu::@return
|
||||
//SEG20 menu::@return
|
||||
breturn:
|
||||
//SEG26 [11] return
|
||||
//SEG21 [10] return
|
||||
rts
|
||||
}
|
||||
//SEG27 mode
|
||||
//SEG22 mode
|
||||
mode: {
|
||||
//SEG28 [13] phi from mode mode::@3 to mode::@1 [phi:mode/mode::@3->mode::@1]
|
||||
b1_from_mode:
|
||||
b1_from_b3:
|
||||
//SEG29 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@3->mode::@1#0] -- register_copy
|
||||
jmp b1
|
||||
//SEG30 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1]
|
||||
b1_from_b2:
|
||||
jmp b1
|
||||
//SEG31 mode::@1
|
||||
//SEG23 mode::@1
|
||||
b1:
|
||||
jmp b2
|
||||
//SEG32 mode::@2
|
||||
b2:
|
||||
//SEG33 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 -- _deref_pbuc1_neq_0_then_la1
|
||||
//SEG24 [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@2 -- _deref_pbuc1_neq_0_then_la1
|
||||
lda B
|
||||
cmp #0
|
||||
bne b1_from_b2
|
||||
jmp b3
|
||||
//SEG34 mode::@3
|
||||
b3:
|
||||
//SEG35 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuz1=_deref_pbuc1
|
||||
lda B
|
||||
sta a
|
||||
jmp b1_from_b3
|
||||
bne b2_from_b1
|
||||
jmp b1
|
||||
//SEG25 [13] phi from mode::@1 to mode::@2 [phi:mode::@1->mode::@2]
|
||||
b2_from_b1:
|
||||
jmp b2
|
||||
//SEG26 mode::@2
|
||||
b2:
|
||||
jmp b1
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 [ ] ( main:2::menu:7::mode:10 [ ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ a#1 a#12 a#5 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Statement [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@2 [ ] ( main:2::menu:6::mode:9 [ ] ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 242.6: zp ZP_BYTE:2 [ a#1 a#12 a#5 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope [menu]
|
||||
Uplift Scope [mode]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [] best 18376 combination reg byte a [ a#1 a#12 a#5 ]
|
||||
Uplifting [main] best 18376 combination
|
||||
Uplifting [menu] best 18376 combination
|
||||
Uplifting [mode] best 18376 combination
|
||||
Uplifting [main] best 11929 combination
|
||||
Uplifting [menu] best 11929 combination
|
||||
Uplifting [mode] best 11929 combination
|
||||
Uplifting [] best 11929 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 File Comments
|
||||
@ -405,120 +295,89 @@ bend_from_b1:
|
||||
bend:
|
||||
//SEG10 main
|
||||
main: {
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG11 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1]
|
||||
b1_from_main:
|
||||
//SEG12 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1
|
||||
lda #0
|
||||
b1_from_b1:
|
||||
jmp b1
|
||||
//SEG13 main::@1
|
||||
//SEG12 main::@1
|
||||
b1:
|
||||
//SEG14 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
b2_from_b1:
|
||||
jmp b2
|
||||
//SEG15 main::@2
|
||||
b2:
|
||||
//SEG16 [7] call menu
|
||||
//SEG17 [8] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
menu_from_b2:
|
||||
//SEG13 [6] call menu
|
||||
//SEG14 [7] phi from main::@1 to menu [phi:main::@1->menu]
|
||||
menu_from_b1:
|
||||
jsr menu
|
||||
//SEG18 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
b1_from_b2:
|
||||
//SEG19 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy
|
||||
jmp b1
|
||||
jmp b1_from_b1
|
||||
}
|
||||
//SEG20 menu
|
||||
//SEG15 menu
|
||||
menu: {
|
||||
//SEG21 [9] phi from menu to menu::@1 [phi:menu->menu::@1]
|
||||
//SEG16 [8] phi from menu to menu::@1 [phi:menu->menu::@1]
|
||||
b1_from_menu:
|
||||
jmp b1
|
||||
//SEG22 menu::@1
|
||||
//SEG17 menu::@1
|
||||
b1:
|
||||
//SEG23 [10] call mode
|
||||
//SEG24 [12] phi from menu::@1 to mode [phi:menu::@1->mode]
|
||||
//SEG18 [9] call mode
|
||||
//SEG19 [11] phi from menu::@1 to mode [phi:menu::@1->mode]
|
||||
mode_from_b1:
|
||||
jsr mode
|
||||
jmp breturn
|
||||
//SEG25 menu::@return
|
||||
//SEG20 menu::@return
|
||||
breturn:
|
||||
//SEG26 [11] return
|
||||
//SEG21 [10] return
|
||||
rts
|
||||
}
|
||||
//SEG27 mode
|
||||
//SEG22 mode
|
||||
mode: {
|
||||
//SEG28 [13] phi from mode mode::@3 to mode::@1 [phi:mode/mode::@3->mode::@1]
|
||||
b1_from_mode:
|
||||
b1_from_b3:
|
||||
//SEG29 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@3->mode::@1#0] -- register_copy
|
||||
jmp b1
|
||||
//SEG30 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1]
|
||||
b1_from_b2:
|
||||
jmp b1
|
||||
//SEG31 mode::@1
|
||||
//SEG23 mode::@1
|
||||
b1:
|
||||
jmp b2
|
||||
//SEG32 mode::@2
|
||||
b2:
|
||||
//SEG33 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 -- _deref_pbuc1_neq_0_then_la1
|
||||
//SEG24 [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@2 -- _deref_pbuc1_neq_0_then_la1
|
||||
lda B
|
||||
cmp #0
|
||||
bne b1_from_b2
|
||||
jmp b3
|
||||
//SEG34 mode::@3
|
||||
b3:
|
||||
//SEG35 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuaa=_deref_pbuc1
|
||||
lda B
|
||||
jmp b1_from_b3
|
||||
bne b2_from_b1
|
||||
jmp b1
|
||||
//SEG25 [13] phi from mode::@1 to mode::@2 [phi:mode::@1->mode::@2]
|
||||
b2_from_b1:
|
||||
jmp b2
|
||||
//SEG26 mode::@2
|
||||
b2:
|
||||
jmp b1
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp breturn
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b3
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing label b1 with b2
|
||||
Replacing label b1 with b2
|
||||
Replacing label b1_from_b2 with b2
|
||||
Replacing label b1_from_b1 with b1
|
||||
Replacing label b2_from_b1 with b2
|
||||
Removing instruction b1_from_bbegin:
|
||||
Removing instruction b1:
|
||||
Removing instruction main_from_b1:
|
||||
Removing instruction bend_from_b1:
|
||||
Removing instruction b1:
|
||||
Removing instruction b2_from_b1:
|
||||
Removing instruction menu_from_b2:
|
||||
Removing instruction b1_from_main:
|
||||
Removing instruction b1_from_b1:
|
||||
Removing instruction menu_from_b1:
|
||||
Removing instruction b1_from_menu:
|
||||
Removing instruction mode_from_b1:
|
||||
Removing instruction b1_from_mode:
|
||||
Removing instruction b1_from_b2:
|
||||
Removing instruction b1:
|
||||
Removing instruction b2_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction bend:
|
||||
Removing instruction b1_from_main:
|
||||
Removing instruction b1_from_b2:
|
||||
Removing instruction b1:
|
||||
Removing instruction breturn:
|
||||
Removing instruction b3:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
Updating BasicUpstart to call main directly
|
||||
Removing instruction jsr main
|
||||
Succesful ASM optimization Pass5SkipBegin
|
||||
Skipping double jump to b2 in jmp b1_from_b3
|
||||
Skipping double jump to b1 in bne b2
|
||||
Succesful ASM optimization Pass5DoubleJumpElimination
|
||||
Relabelling long label b1_from_b3 to b1
|
||||
Succesful ASM optimization Pass5RelabelLongLabels
|
||||
Removing instruction jmp b2
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda B
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Removing instruction b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b2:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
Removing unreachable instruction jmp b1
|
||||
Succesful ASM optimization Pass5UnreachableCodeElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
@ -526,26 +385,19 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(byte*) B
|
||||
(const byte*) B#0 B = ((byte*))(word/signed word/dword/signed dword) $1000
|
||||
(byte) a
|
||||
(byte) a#1 reg byte a 2.6
|
||||
(byte) a#12 reg byte a 38.0
|
||||
(byte) a#5 reg byte a 202.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(void()) menu()
|
||||
(label) menu::@1
|
||||
(label) menu::@return
|
||||
(void()) mode()
|
||||
(label) mode::@1
|
||||
(label) mode::@2
|
||||
(label) mode::@3
|
||||
|
||||
reg byte a [ a#1 a#12 a#5 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 8868
|
||||
Score: 11521
|
||||
|
||||
//SEG0 File Comments
|
||||
// Error cleaning up unused blocks
|
||||
@ -564,45 +416,35 @@ Score: 8868
|
||||
//SEG9 @end
|
||||
//SEG10 main
|
||||
main: {
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG12 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1
|
||||
lda #0
|
||||
//SEG13 main::@1
|
||||
//SEG14 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
//SEG15 main::@2
|
||||
b2:
|
||||
//SEG16 [7] call menu
|
||||
//SEG17 [8] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
//SEG11 [5] phi from main main::@1 to main::@1 [phi:main/main::@1->main::@1]
|
||||
//SEG12 main::@1
|
||||
b1:
|
||||
//SEG13 [6] call menu
|
||||
//SEG14 [7] phi from main::@1 to menu [phi:main::@1->menu]
|
||||
jsr menu
|
||||
//SEG18 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
//SEG19 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy
|
||||
jmp b2
|
||||
jmp b1
|
||||
}
|
||||
//SEG20 menu
|
||||
//SEG15 menu
|
||||
menu: {
|
||||
//SEG21 [9] phi from menu to menu::@1 [phi:menu->menu::@1]
|
||||
//SEG22 menu::@1
|
||||
//SEG23 [10] call mode
|
||||
//SEG24 [12] phi from menu::@1 to mode [phi:menu::@1->mode]
|
||||
//SEG16 [8] phi from menu to menu::@1 [phi:menu->menu::@1]
|
||||
//SEG17 menu::@1
|
||||
//SEG18 [9] call mode
|
||||
//SEG19 [11] phi from menu::@1 to mode [phi:menu::@1->mode]
|
||||
jsr mode
|
||||
//SEG25 menu::@return
|
||||
//SEG26 [11] return
|
||||
//SEG20 menu::@return
|
||||
//SEG21 [10] return
|
||||
rts
|
||||
}
|
||||
//SEG27 mode
|
||||
//SEG22 mode
|
||||
mode: {
|
||||
//SEG28 [13] phi from mode mode::@3 to mode::@1 [phi:mode/mode::@3->mode::@1]
|
||||
//SEG29 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@3->mode::@1#0] -- register_copy
|
||||
//SEG30 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1]
|
||||
//SEG31 mode::@1
|
||||
//SEG32 mode::@2
|
||||
b2:
|
||||
//SEG33 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 -- _deref_pbuc1_neq_0_then_la1
|
||||
//SEG23 mode::@1
|
||||
b1:
|
||||
//SEG24 [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@2 -- _deref_pbuc1_neq_0_then_la1
|
||||
lda B
|
||||
cmp #0
|
||||
bne b2
|
||||
//SEG34 mode::@3
|
||||
//SEG35 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuaa=_deref_pbuc1
|
||||
jmp b2
|
||||
bne b1
|
||||
jmp b1
|
||||
//SEG25 [13] phi from mode::@1 to mode::@2 [phi:mode::@1->mode::@2]
|
||||
//SEG26 mode::@2
|
||||
}
|
||||
|
||||
|
@ -3,19 +3,12 @@
|
||||
(label) @end
|
||||
(byte*) B
|
||||
(const byte*) B#0 B = ((byte*))(word/signed word/dword/signed dword) $1000
|
||||
(byte) a
|
||||
(byte) a#1 reg byte a 2.6
|
||||
(byte) a#12 reg byte a 38.0
|
||||
(byte) a#5 reg byte a 202.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(void()) menu()
|
||||
(label) menu::@1
|
||||
(label) menu::@return
|
||||
(void()) mode()
|
||||
(label) mode::@1
|
||||
(label) mode::@2
|
||||
(label) mode::@3
|
||||
|
||||
reg byte a [ a#1 a#12 a#5 ]
|
||||
|
@ -14,7 +14,7 @@
|
||||
.const GREEN = 5
|
||||
.const LIGHT_BLUE = $e
|
||||
.const LIGHT_GREY = $f
|
||||
.label print_line_cursor = $400
|
||||
.label print_screen = $400
|
||||
// The rotated point - updated by calling rotate_matrix()
|
||||
.label xr = $f0
|
||||
.label yr = $f1
|
||||
@ -183,75 +183,75 @@ debug_print: {
|
||||
.label c = 4
|
||||
.label i = 5
|
||||
ldx sx
|
||||
lda #<print_line_cursor+print_sbyte_pos1_col
|
||||
lda #<print_screen+print_sbyte_pos1_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos1_col
|
||||
lda #>print_screen+print_sbyte_pos1_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx sy
|
||||
lda #<print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
|
||||
lda #<print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
|
||||
lda #>print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
lda #<print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
|
||||
lda #<print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
|
||||
lda #>print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col
|
||||
sta print_sbyte_at.at+1
|
||||
ldx #sz
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix
|
||||
lda #<print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
|
||||
lda #<print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
|
||||
lda #>print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+1
|
||||
lda #<print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
|
||||
lda #<print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
|
||||
lda #>print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+2
|
||||
lda #<print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
|
||||
lda #<print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
|
||||
lda #>print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+3
|
||||
lda #<print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
|
||||
lda #<print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
|
||||
lda #>print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+4
|
||||
lda #<print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
|
||||
lda #<print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
|
||||
lda #>print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+5
|
||||
lda #<print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
|
||||
lda #<print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
|
||||
lda #>print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+6
|
||||
lda #<print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
|
||||
lda #<print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
|
||||
lda #>print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+7
|
||||
lda #<print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
|
||||
lda #<print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
|
||||
lda #>print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
ldx rotation_matrix+8
|
||||
lda #<print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
|
||||
lda #<print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
|
||||
sta print_sbyte_at.at
|
||||
lda #>print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
|
||||
lda #>print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col
|
||||
sta print_sbyte_at.at+1
|
||||
jsr print_sbyte_at
|
||||
lda #0
|
||||
@ -1070,9 +1070,9 @@ print_str_at: {
|
||||
// Clear the screen. Also resets current line/char cursor.
|
||||
print_cls: {
|
||||
.label sc = 6
|
||||
lda #<print_line_cursor
|
||||
lda #<print_screen
|
||||
sta sc
|
||||
lda #>print_line_cursor
|
||||
lda #>print_screen
|
||||
sta sc+1
|
||||
b1:
|
||||
lda #' '
|
||||
@ -1083,10 +1083,10 @@ print_cls: {
|
||||
inc sc+1
|
||||
!:
|
||||
lda sc+1
|
||||
cmp #>print_line_cursor+$3e8
|
||||
cmp #>print_screen+$3e8
|
||||
bne b1
|
||||
lda sc
|
||||
cmp #<print_line_cursor+$3e8
|
||||
cmp #<print_screen+$3e8
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
|
@ -292,7 +292,7 @@ debug_print::@return: scope:[debug_print] from debug_print::@17
|
||||
[113] return
|
||||
to:@return
|
||||
print_sbyte_at: scope:[print_sbyte_at] from debug_print::@1 debug_print::@12 debug_print::@13 debug_print::@14 debug_print::@15 debug_print::@16 debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos9 debug_print_init::@1 debug_print_init::@16 debug_print_init::@17
|
||||
[114] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@12/(byte*) print_sbyte_at::at#16 debug_print::@13/(byte*) print_sbyte_at::at#17 debug_print::@14/(byte*) print_sbyte_at::at#18 debug_print::@15/(byte*) print_sbyte_at::at#19 debug_print::@16/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@16/(byte*) print_sbyte_at::at#1 debug_print_init::@17/(byte*) print_sbyte_at::at#2 )
|
||||
[114] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@12/(byte*) print_sbyte_at::at#16 debug_print::@13/(byte*) print_sbyte_at::at#17 debug_print::@14/(byte*) print_sbyte_at::at#18 debug_print::@15/(byte*) print_sbyte_at::at#19 debug_print::@16/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@16/(byte*) print_sbyte_at::at#1 debug_print_init::@17/(byte*) print_sbyte_at::at#2 )
|
||||
[114] (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@12/(signed byte) print_sbyte_at::b#17 debug_print::@13/(signed byte) print_sbyte_at::b#18 debug_print::@14/(signed byte) print_sbyte_at::b#19 debug_print::@15/(signed byte) print_sbyte_at::b#20 debug_print::@16/(signed byte) print_sbyte_at::b#21 debug_print::print_sbyte_pos1/(signed byte) print_sbyte_at::b#4 debug_print::print_sbyte_pos10/(signed byte) print_sbyte_at::b#13 debug_print::print_sbyte_pos11/(signed byte) print_sbyte_at::b#14 debug_print::print_sbyte_pos12/(signed byte) print_sbyte_at::b#15 debug_print::print_sbyte_pos2/(signed byte) print_sbyte_at::b#5 debug_print::print_sbyte_pos3/(const signed byte) sz#0 debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@16/(signed byte) print_sbyte_at::b#2 debug_print_init::@17/(signed byte) print_sbyte_at::b#3 )
|
||||
[115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1
|
||||
to:print_sbyte_at::@3
|
||||
@ -533,10 +533,10 @@ print_cls: scope:[print_cls] from debug_print_init
|
||||
[267] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[268] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[268] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[269] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
|
||||
[271] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[272] return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,76 +1,22 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(signed byte*) COSH
|
||||
(const signed byte*) COSH#0 COSH = (const signed byte*) SINH#0+(byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte*) COSH_HI
|
||||
(byte*) COSH_LO
|
||||
(signed byte*) COSQ
|
||||
(const signed byte*) COSQ#0 COSQ = (const signed byte*) SINQ#0+(byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte*) COSQ_HI
|
||||
(byte*) COSQ_LO
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(const byte) LIGHT_GREY#0 LIGHT_GREY = (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
(byte) ORANGE
|
||||
(signed byte*) PERSP_Z
|
||||
(const signed byte*) PERSP_Z#0 PERSP_Z = ((signed byte*))(word/signed word/dword/signed dword) $2800
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(signed byte*) SINH
|
||||
@ -91,30 +37,10 @@
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) $d027
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) $d001
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) anim()
|
||||
(byte/word/signed word/dword/signed dword~) anim::$10 reg byte a 202.0
|
||||
(byte/word/signed word/dword/signed dword~) anim::$8 reg byte a 202.0
|
||||
@ -428,7 +354,6 @@
|
||||
(byte) print_char_at::ch#2 ch zp ZP_BYTE:8 2.0
|
||||
(byte) print_char_at::ch#3 ch zp ZP_BYTE:8 4.0
|
||||
(byte) print_char_at::ch#4 ch zp ZP_BYTE:8 6.0
|
||||
(byte*) print_char_cursor
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
@ -437,8 +362,6 @@
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:6 16.5
|
||||
(byte[]) print_hextab
|
||||
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
|
||||
(byte*) print_line_cursor
|
||||
(const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
|
||||
(label) print_sbyte_at::@1
|
||||
(label) print_sbyte_at::@2
|
||||
@ -481,6 +404,7 @@
|
||||
(signed byte) print_sbyte_at::b#8 reg byte x 4.0
|
||||
(signed byte) print_sbyte_at::b#9 reg byte x 4.0
|
||||
(byte*) print_screen
|
||||
(const byte*) print_screen#0 print_screen = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(void()) print_str_at((byte*) print_str_at::str , (byte*) print_str_at::at)
|
||||
(label) print_str_at::@1
|
||||
(label) print_str_at::@2
|
||||
|
@ -11,85 +11,6 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
@ -527,166 +448,8 @@ SYMBOL TABLE SSA
|
||||
(label) @4
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(signed byte*) PERSP_Z
|
||||
(signed byte*) PERSP_Z#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z)
|
||||
(byte~) do_perspective::$11
|
||||
(byte~) do_perspective::$8
|
||||
@ -1107,91 +870,12 @@ Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Redundant Phi (byte*) print_char_cursor#66 (byte*) print_char_cursor#2
|
||||
Redundant Phi (byte*) print_char_cursor#68 (byte*) print_char_cursor#12
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) print_str::$0 [85] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2
|
||||
Simple Condition (bool~) print_ln::$1 [98] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1
|
||||
Simple Condition (bool~) print_sbyte::$0 [107] if((signed byte) print_sbyte::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1
|
||||
Simple Condition (bool~) print_cls::$1 [158] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||
Simple Condition (bool~) mulf_init::$11 [293] if((byte) mulf_init::i#1!=rangelast(0,$80)) goto mulf_init::@1
|
||||
Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#7)!=(byte) '@') goto print_str::@2
|
||||
Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#2) goto print_ln::@1
|
||||
Simple Condition (bool~) print_sbyte::$0 [28] if((signed byte) print_sbyte::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1
|
||||
Simple Condition (bool~) print_cls::$1 [79] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||
Simple Condition (bool~) mulf_init::$11 [214] if((byte) mulf_init::i#1!=rangelast(0,$80)) goto mulf_init::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const byte*) print_line_cursor#0 = ((byte*))$400
|
||||
Constant (const byte) print_char::ch#0 = '-'
|
||||
Constant (const byte) print_char::ch#1 = ' '
|
||||
@ -1238,7 +922,6 @@ Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Successful SSA optimization Pass2ConstantStringConsolidation
|
||||
Inferred type updated to byte in [73] (byte/signed word/word/dword/signed dword~) mulf_init::$5 ← (byte) mulf_init::i#2
|
||||
Inferred type updated to byte in [75] (byte/signed word/word/dword/signed dword~) mulf_init::$7 ← (byte) mulf_init::i#2
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Eliminating Noop Cast (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#6
|
||||
Eliminating Noop Cast (byte) print_byte::b#1 ← ((byte)) *((const signed byte*) xr#0)
|
||||
Eliminating Noop Cast (byte) print_byte::b#2 ← ((byte)) *((const signed byte*) yr#0)
|
||||
@ -1599,86 +1282,7 @@ mulf_init::@return: scope:[mulf_init] from mulf_init::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(signed byte*) PERSP_Z
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z)
|
||||
(signed byte) do_perspective::x
|
||||
(signed byte) do_perspective::y
|
||||
@ -3433,87 +3037,8 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(signed byte*) PERSP_Z
|
||||
(const signed byte*) PERSP_Z#0 PERSP_Z = ((signed byte*))(word/signed word/dword/signed dword) $2400
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z)
|
||||
(label) do_perspective::@1
|
||||
(label) do_perspective::@10
|
||||
|
@ -1,87 +1,8 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(signed byte*) PERSP_Z
|
||||
(const signed byte*) PERSP_Z#0 PERSP_Z = ((signed byte*))(word/signed word/dword/signed dword) $2400
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z)
|
||||
(label) do_perspective::@1
|
||||
(label) do_perspective::@10
|
||||
|
@ -3,85 +3,13 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte[$100]) bitmap_plot_xlo#0 ← { fill( $100, 0) }
|
||||
@ -730,166 +658,22 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte*) BITMAP
|
||||
(byte*) BITMAP#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) bitmap_clear()
|
||||
(byte*~) bitmap_clear::$0
|
||||
(bool~) bitmap_clear::$1
|
||||
@ -1438,12 +1222,12 @@ Culled Empty Block (label) bitmap_line::@36
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) @16
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [96] (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [95] (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [115] (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [114] (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
Inversing boolean not [254] (bool~) bitmap_line_xdyi::$4 ← (byte) bitmap_line_xdyi::xd#2 >= (byte) bitmap_line_xdyi::e#1 from [253] (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1
|
||||
Inversing boolean not [277] (bool~) bitmap_line_xdyd::$4 ← (byte) bitmap_line_xdyd::xd#2 >= (byte) bitmap_line_xdyd::e#1 from [276] (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1
|
||||
Inversing boolean not [300] (bool~) bitmap_line_ydxi::$4 ← (byte) bitmap_line_ydxi::yd#2 >= (byte) bitmap_line_ydxi::e#1 from [299] (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1
|
||||
Inversing boolean not [324] (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from [323] (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1
|
||||
Inversing boolean not [24] (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [23] (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [43] (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [42] (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
Inversing boolean not [182] (bool~) bitmap_line_xdyi::$4 ← (byte) bitmap_line_xdyi::xd#2 >= (byte) bitmap_line_xdyi::e#1 from [181] (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1
|
||||
Inversing boolean not [205] (bool~) bitmap_line_xdyd::$4 ← (byte) bitmap_line_xdyd::xd#2 >= (byte) bitmap_line_xdyd::e#1 from [204] (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1
|
||||
Inversing boolean not [228] (bool~) bitmap_line_ydxi::$4 ← (byte) bitmap_line_ydxi::yd#2 >= (byte) bitmap_line_ydxi::e#1 from [227] (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1
|
||||
Inversing boolean not [252] (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from [251] (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) bitmap_init::bits#1 = (byte~) bitmap_init::$2
|
||||
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4
|
||||
@ -1561,109 +1345,37 @@ Redundant Phi (byte) bitmap_line_ydxd::xd#3 (byte) bitmap_line_ydxd::xd#2
|
||||
Redundant Phi (byte) bitmap_line_ydxd::yd#2 (byte) bitmap_line_ydxd::yd#5
|
||||
Redundant Phi (byte) bitmap_line_ydxd::y1#2 (byte) bitmap_line_ydxd::y1#6
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) bitmap_init::$4 [97] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2
|
||||
Simple Condition (bool~) bitmap_init::$5 [101] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1
|
||||
Simple Condition (bool~) bitmap_init::$12 [116] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@6
|
||||
Simple Condition (bool~) bitmap_init::$15 [120] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5
|
||||
Simple Condition (bool~) bitmap_clear::$1 [136] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2
|
||||
Simple Condition (bool~) bitmap_clear::$2 [140] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1
|
||||
Simple Condition (bool~) bitmap_line::$0 [154] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1
|
||||
Simple Condition (bool~) bitmap_line::$12 [159] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@20
|
||||
Simple Condition (bool~) bitmap_line::$2 [164] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@10
|
||||
Simple Condition (bool~) bitmap_line::$8 [169] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#2) goto bitmap_line::@15
|
||||
Simple Condition (bool~) bitmap_line::$4 [174] if((byte) bitmap_line::yd#2<(byte) bitmap_line::xd#2) goto bitmap_line::@11
|
||||
Simple Condition (bool~) bitmap_line::$18 [207] if((byte) bitmap_line::yd#11<(byte) bitmap_line::xd#1) goto bitmap_line::@25
|
||||
Simple Condition (bool~) bitmap_line::$14 [212] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#1) goto bitmap_line::@21
|
||||
Simple Condition (bool~) bitmap_line_xdyi::$4 [255] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2
|
||||
Simple Condition (bool~) bitmap_line_xdyi::$7 [259] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1
|
||||
Simple Condition (bool~) bitmap_line_xdyd::$4 [278] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2
|
||||
Simple Condition (bool~) bitmap_line_xdyd::$7 [282] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1
|
||||
Simple Condition (bool~) bitmap_line_ydxi::$4 [301] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2
|
||||
Simple Condition (bool~) bitmap_line_ydxi::$7 [305] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1
|
||||
Simple Condition (bool~) bitmap_line_ydxd::$4 [325] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2
|
||||
Simple Condition (bool~) bitmap_line_ydxd::$7 [329] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1
|
||||
Simple Condition (bool~) lines::$3 [374] if((byte) lines::l#1<(byte) lines_cnt#0) goto lines::@1
|
||||
Simple Condition (bool~) init_screen::$1 [382] if((byte*) init_screen::c#1!=(byte*~) init_screen::$0) goto init_screen::@1
|
||||
Simple Condition (bool~) bitmap_init::$4 [25] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2
|
||||
Simple Condition (bool~) bitmap_init::$5 [29] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1
|
||||
Simple Condition (bool~) bitmap_init::$12 [44] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@6
|
||||
Simple Condition (bool~) bitmap_init::$15 [48] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5
|
||||
Simple Condition (bool~) bitmap_clear::$1 [64] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2
|
||||
Simple Condition (bool~) bitmap_clear::$2 [68] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1
|
||||
Simple Condition (bool~) bitmap_line::$0 [82] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1
|
||||
Simple Condition (bool~) bitmap_line::$12 [87] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@20
|
||||
Simple Condition (bool~) bitmap_line::$2 [92] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@10
|
||||
Simple Condition (bool~) bitmap_line::$8 [97] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#2) goto bitmap_line::@15
|
||||
Simple Condition (bool~) bitmap_line::$4 [102] if((byte) bitmap_line::yd#2<(byte) bitmap_line::xd#2) goto bitmap_line::@11
|
||||
Simple Condition (bool~) bitmap_line::$18 [135] if((byte) bitmap_line::yd#11<(byte) bitmap_line::xd#1) goto bitmap_line::@25
|
||||
Simple Condition (bool~) bitmap_line::$14 [140] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#1) goto bitmap_line::@21
|
||||
Simple Condition (bool~) bitmap_line_xdyi::$4 [183] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2
|
||||
Simple Condition (bool~) bitmap_line_xdyi::$7 [187] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1
|
||||
Simple Condition (bool~) bitmap_line_xdyd::$4 [206] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2
|
||||
Simple Condition (bool~) bitmap_line_xdyd::$7 [210] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1
|
||||
Simple Condition (bool~) bitmap_line_ydxi::$4 [229] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2
|
||||
Simple Condition (bool~) bitmap_line_ydxi::$7 [233] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1
|
||||
Simple Condition (bool~) bitmap_line_ydxd::$4 [253] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2
|
||||
Simple Condition (bool~) bitmap_line_ydxd::$7 [257] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1
|
||||
Simple Condition (bool~) lines::$3 [302] if((byte) lines::l#1<(byte) lines_cnt#0) goto lines::@1
|
||||
Simple Condition (bool~) init_screen::$1 [310] if((byte*) init_screen::c#1!=(byte*~) init_screen::$0) goto init_screen::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const byte[$100]) bitmap_plot_xlo#0 = { fill( $100, 0) }
|
||||
Constant (const byte[$100]) bitmap_plot_xhi#0 = { fill( $100, 0) }
|
||||
Constant (const byte[$100]) bitmap_plot_ylo#0 = { fill( $100, 0) }
|
||||
@ -2342,86 +2054,14 @@ bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte*) BITMAP
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 2.0
|
||||
(byte*) bitmap_clear::bitmap
|
||||
@ -5413,94 +5053,22 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte*) BITMAP
|
||||
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:9 2.0
|
||||
(label) bitmap_clear::@1
|
||||
|
@ -3,94 +3,22 @@
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte*) BITMAP
|
||||
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:9 2.0
|
||||
(label) bitmap_clear::@1
|
||||
|
@ -3,85 +3,10 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@9
|
||||
mul8u: scope:[mul8u] from plot_chargen::@1
|
||||
(byte) mul8u::a#5 ← phi( plot_chargen::@1/(byte) mul8u::a#1 )
|
||||
@ -131,14 +56,10 @@ mul8u::@return: scope:[mul8u] from mul8u::@3
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @begin
|
||||
(byte) KEY_DEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) KEY_RETURN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) KEY_F7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) KEY_F1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) KEY_F3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) KEY_F5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) KEY_CRSR_DOWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) KEY_3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) KEY_W#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) KEY_A#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
@ -182,23 +103,18 @@ mul8u::@return: scope:[mul8u] from mul8u::@3
|
||||
(byte) KEY_POUND#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) KEY_ASTERISK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) KEY_SEMICOLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
(byte) KEY_HOME#0 ← (byte/signed byte/word/signed word/dword/signed dword) $33
|
||||
(byte) KEY_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) $34
|
||||
(byte) KEY_EQUALS#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) KEY_ARROW_UP#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) KEY_SLASH#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte) KEY_1#0 ← (byte/signed byte/word/signed word/dword/signed dword) $38
|
||||
(byte) KEY_ARROW_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) $39
|
||||
(byte) KEY_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $3a
|
||||
(byte) KEY_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) $3b
|
||||
(byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $3c
|
||||
(byte) KEY_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $3d
|
||||
(byte) KEY_Q#0 ← (byte/signed byte/word/signed word/dword/signed dword) $3e
|
||||
(byte) KEY_RUNSTOP#0 ← (byte/signed byte/word/signed word/dword/signed dword) $3f
|
||||
(byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f }
|
||||
(byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) $fe, (byte/word/signed word/dword/signed dword) $fd, (byte/word/signed word/dword/signed dword) $fb, (byte/word/signed word/dword/signed dword) $f7, (byte/word/signed word/dword/signed dword) $ef, (byte/word/signed word/dword/signed dword) $df, (byte/word/signed word/dword/signed dword) $bf, (byte/signed byte/word/signed word/dword/signed dword) $7f }
|
||||
(byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) $10, (byte/signed byte/word/signed word/dword/signed dword) $20, (byte/signed byte/word/signed word/dword/signed dword) $40, (byte/word/signed word/dword/signed dword) $80 }
|
||||
to:@13
|
||||
to:@16
|
||||
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
|
||||
(byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 )
|
||||
*((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1)
|
||||
@ -242,19 +158,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
|
||||
(byte) keyboard_get_keycode::return#1 ← (byte) keyboard_get_keycode::return#3
|
||||
return
|
||||
to:@return
|
||||
@13: scope:[] from @9
|
||||
(byte[8]) keyboard_events#0 ← { fill( 8, 0) }
|
||||
(byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) KEY_MODIFIER_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) KEY_MODIFIER_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) KEY_MODIFIER_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) KEY_MODIFIER_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT#0 | (byte) KEY_MODIFIER_RSHIFT#0
|
||||
(byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0
|
||||
(byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) }
|
||||
to:@16
|
||||
@16: scope:[] from @13
|
||||
@16: scope:[] from @9
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@19
|
||||
main: scope:[main] from @19
|
||||
@ -610,88 +514,18 @@ plot_chargen::@return: scope:[plot_chargen] from plot_chargen::@8
|
||||
@end: scope:[] from @20
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(byte~) $0
|
||||
(label) @13
|
||||
(label) @16
|
||||
(label) @19
|
||||
(label) @20
|
||||
(label) @9
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte) KEY_0
|
||||
(byte) KEY_0#0
|
||||
(byte) KEY_1
|
||||
@ -730,18 +564,8 @@ SYMBOL TABLE SSA
|
||||
(byte) KEY_COLON#0
|
||||
(byte) KEY_COMMA
|
||||
(byte) KEY_COMMA#0
|
||||
(byte) KEY_COMMODORE
|
||||
(byte) KEY_COMMODORE#0
|
||||
(byte) KEY_CRSR_DOWN
|
||||
(byte) KEY_CRSR_DOWN#0
|
||||
(byte) KEY_CRSR_RIGHT
|
||||
(byte) KEY_CRSR_RIGHT#0
|
||||
(byte) KEY_CTRL
|
||||
(byte) KEY_CTRL#0
|
||||
(byte) KEY_D
|
||||
(byte) KEY_D#0
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DEL#0
|
||||
(byte) KEY_DOT
|
||||
(byte) KEY_DOT#0
|
||||
(byte) KEY_E
|
||||
@ -762,8 +586,6 @@ SYMBOL TABLE SSA
|
||||
(byte) KEY_G#0
|
||||
(byte) KEY_H
|
||||
(byte) KEY_H#0
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_HOME#0
|
||||
(byte) KEY_I
|
||||
(byte) KEY_I#0
|
||||
(byte) KEY_J
|
||||
@ -778,16 +600,6 @@ SYMBOL TABLE SSA
|
||||
(byte) KEY_M#0
|
||||
(byte) KEY_MINUS
|
||||
(byte) KEY_MINUS#0
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(byte) KEY_MODIFIER_COMMODORE#0
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
(byte) KEY_MODIFIER_CTRL#0
|
||||
(byte) KEY_MODIFIER_LSHIFT
|
||||
(byte) KEY_MODIFIER_LSHIFT#0
|
||||
(byte) KEY_MODIFIER_RSHIFT
|
||||
(byte) KEY_MODIFIER_RSHIFT#0
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(byte) KEY_MODIFIER_SHIFT#0
|
||||
(byte) KEY_N
|
||||
(byte) KEY_N#0
|
||||
(byte) KEY_O
|
||||
@ -802,12 +614,6 @@ SYMBOL TABLE SSA
|
||||
(byte) KEY_Q#0
|
||||
(byte) KEY_R
|
||||
(byte) KEY_R#0
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RETURN#0
|
||||
(byte) KEY_RSHIFT
|
||||
(byte) KEY_RSHIFT#0
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_RUNSTOP#0
|
||||
(byte) KEY_S
|
||||
(byte) KEY_S#0
|
||||
(byte) KEY_SEMICOLON
|
||||
@ -830,98 +636,12 @@ SYMBOL TABLE SSA
|
||||
(byte) KEY_Y#0
|
||||
(byte) KEY_Z
|
||||
(byte) KEY_Z#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(byte[]) keyboard_char_keycodes#0
|
||||
(byte[8]) keyboard_events
|
||||
(byte[8]) keyboard_events#0
|
||||
(byte) keyboard_events_size
|
||||
(byte) keyboard_events_size#0
|
||||
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
|
||||
(label) keyboard_get_keycode::@return
|
||||
(byte) keyboard_get_keycode::ch
|
||||
@ -987,10 +707,6 @@ SYMBOL TABLE SSA
|
||||
(byte) keyboard_matrix_read::rowid#1
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(byte[8]) keyboard_matrix_row_bitmask#0
|
||||
(byte) keyboard_modifiers
|
||||
(byte) keyboard_modifiers#0
|
||||
(byte[8]) keyboard_scan_values
|
||||
(byte[8]) keyboard_scan_values#0
|
||||
(void()) main()
|
||||
(byte*~) main::$0
|
||||
(byte*~) main::$11
|
||||
@ -1290,15 +1006,15 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @20
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [88] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [87] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [254] (bool~) main::$17 ← (byte~) main::$15 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [253] (bool~) main::$16 ← (byte~) main::$15 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [263] (bool~) main::$20 ← (byte~) main::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [262] (bool~) main::$19 ← (byte~) main::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [273] (bool~) main::$23 ← (byte~) main::$21 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [272] (bool~) main::$22 ← (byte~) main::$21 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [283] (bool~) main::$26 ← (byte~) main::$24 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [282] (bool~) main::$25 ← (byte~) main::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [310] (bool~) main::$31 ← (byte) main::key#0 == (byte/signed byte/word/signed word/dword/signed dword) $3f from [309] (bool~) main::$30 ← (byte) main::key#0 != (byte/signed byte/word/signed word/dword/signed dword) $3f
|
||||
Inversing boolean not [314] (bool~) main::$34 ← (byte) main::pressed#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [313] (bool~) main::$33 ← (byte) main::pressed#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [352] (bool~) plot_chargen::$4 ← (byte) plot_chargen::shift#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [351] (bool~) plot_chargen::$3 ← (byte) plot_chargen::shift#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [377] (bool~) plot_chargen::$12 ← (byte~) plot_chargen::$10 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [376] (bool~) plot_chargen::$11 ← (byte~) plot_chargen::$10 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [13] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [12] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [160] (bool~) main::$17 ← (byte~) main::$15 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [159] (bool~) main::$16 ← (byte~) main::$15 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [169] (bool~) main::$20 ← (byte~) main::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [168] (bool~) main::$19 ← (byte~) main::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [179] (bool~) main::$23 ← (byte~) main::$21 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [178] (bool~) main::$22 ← (byte~) main::$21 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [189] (bool~) main::$26 ← (byte~) main::$24 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [188] (bool~) main::$25 ← (byte~) main::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [216] (bool~) main::$31 ← (byte) main::key#0 == (byte/signed byte/word/signed word/dword/signed dword) $3f from [215] (bool~) main::$30 ← (byte) main::key#0 != (byte/signed byte/word/signed word/dword/signed dword) $3f
|
||||
Inversing boolean not [220] (bool~) main::$34 ← (byte) main::pressed#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [219] (bool~) main::$33 ← (byte) main::pressed#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [258] (bool~) plot_chargen::$4 ← (byte) plot_chargen::shift#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [257] (bool~) plot_chargen::$3 ← (byte) plot_chargen::shift#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [283] (bool~) plot_chargen::$12 ← (byte~) plot_chargen::$10 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [282] (bool~) plot_chargen::$11 ← (byte~) plot_chargen::$10 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6
|
||||
Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5
|
||||
@ -1312,7 +1028,6 @@ Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1
|
||||
Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4
|
||||
Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#8 (byte) keyboard_key_pressed::return#1
|
||||
Alias (byte) keyboard_get_keycode::return#0 = (byte) keyboard_get_keycode::return#3 (byte) keyboard_get_keycode::return#1
|
||||
Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0
|
||||
Alias (byte*) print_str_at::at#0 = (byte*~) main::$0
|
||||
Alias (byte*) print_str_at::at#1 = (byte*~) main::$3
|
||||
Alias (byte*) print_str_at::at#2 = (byte*~) main::$6
|
||||
@ -1386,112 +1101,33 @@ Redundant Phi (byte) main::shift#10 (byte) main::shift#9
|
||||
Redundant Phi (byte) plot_chargen::y#3 (byte) plot_chargen::y#2
|
||||
Redundant Phi (byte*) plot_chargen::chargen#4 (byte*) plot_chargen::chargen#3
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) mul8u::$0 [84] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
|
||||
Simple Condition (bool~) mul8u::$3 [89] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
|
||||
Simple Condition (bool~) main::$12 [215] if((byte*) main::sc#1<(byte*~) main::$11) goto main::@1
|
||||
Simple Condition (bool~) main::$14 [244] if((byte) main::i#1!=rangelast(0,3)) goto main::@3
|
||||
Simple Condition (bool~) main::$17 [255] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@6
|
||||
Simple Condition (bool~) main::$20 [264] if((byte~) main::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7
|
||||
Simple Condition (bool~) main::$23 [274] if((byte~) main::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@8
|
||||
Simple Condition (bool~) main::$26 [284] if((byte~) main::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@9
|
||||
Simple Condition (bool~) main::$28 [293] if((byte~) main::$27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10
|
||||
Simple Condition (bool~) main::$31 [311] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) $3f) goto main::@13
|
||||
Simple Condition (bool~) main::$34 [315] if((byte) main::pressed#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@14
|
||||
Simple Condition (bool~) main::$36 [326] if((byte) main::ch#1!=rangelast(0,$3f)) goto main::@12
|
||||
Simple Condition (bool~) print_str_at::$0 [339] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2
|
||||
Simple Condition (bool~) plot_chargen::$4 [353] if((byte) plot_chargen::shift#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@1
|
||||
Simple Condition (bool~) plot_chargen::$12 [378] if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@5
|
||||
Simple Condition (bool~) plot_chargen::$14 [386] if((byte) plot_chargen::x#1!=rangelast(0,7)) goto plot_chargen::@4
|
||||
Simple Condition (bool~) plot_chargen::$16 [394] if((byte) plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@3
|
||||
Simple Condition (bool~) mul8u::$0 [9] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
|
||||
Simple Condition (bool~) mul8u::$3 [14] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
|
||||
Simple Condition (bool~) main::$12 [121] if((byte*) main::sc#1<(byte*~) main::$11) goto main::@1
|
||||
Simple Condition (bool~) main::$14 [150] if((byte) main::i#1!=rangelast(0,3)) goto main::@3
|
||||
Simple Condition (bool~) main::$17 [161] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@6
|
||||
Simple Condition (bool~) main::$20 [170] if((byte~) main::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7
|
||||
Simple Condition (bool~) main::$23 [180] if((byte~) main::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@8
|
||||
Simple Condition (bool~) main::$26 [190] if((byte~) main::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@9
|
||||
Simple Condition (bool~) main::$28 [199] if((byte~) main::$27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10
|
||||
Simple Condition (bool~) main::$31 [217] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) $3f) goto main::@13
|
||||
Simple Condition (bool~) main::$34 [221] if((byte) main::pressed#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@14
|
||||
Simple Condition (bool~) main::$36 [232] if((byte) main::ch#1!=rangelast(0,$3f)) goto main::@12
|
||||
Simple Condition (bool~) print_str_at::$0 [245] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2
|
||||
Simple Condition (bool~) plot_chargen::$4 [259] if((byte) plot_chargen::shift#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@1
|
||||
Simple Condition (bool~) plot_chargen::$12 [284] if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@5
|
||||
Simple Condition (bool~) plot_chargen::$14 [292] if((byte) plot_chargen::x#1!=rangelast(0,7)) goto plot_chargen::@4
|
||||
Simple Condition (bool~) plot_chargen::$16 [300] if((byte) plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@3
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const word) mul8u::res#0 = 0
|
||||
Constant (const byte) KEY_DEL#0 = 0
|
||||
Constant (const byte) KEY_RETURN#0 = 1
|
||||
Constant (const byte) KEY_CRSR_RIGHT#0 = 2
|
||||
Constant (const byte) KEY_F7#0 = 3
|
||||
Constant (const byte) KEY_F1#0 = 4
|
||||
Constant (const byte) KEY_F3#0 = 5
|
||||
Constant (const byte) KEY_F5#0 = 6
|
||||
Constant (const byte) KEY_CRSR_DOWN#0 = 7
|
||||
Constant (const byte) KEY_3#0 = 8
|
||||
Constant (const byte) KEY_W#0 = 9
|
||||
Constant (const byte) KEY_A#0 = $a
|
||||
@ -1535,29 +1171,16 @@ Constant (const byte) KEY_COMMA#0 = $2f
|
||||
Constant (const byte) KEY_POUND#0 = $30
|
||||
Constant (const byte) KEY_ASTERISK#0 = $31
|
||||
Constant (const byte) KEY_SEMICOLON#0 = $32
|
||||
Constant (const byte) KEY_HOME#0 = $33
|
||||
Constant (const byte) KEY_RSHIFT#0 = $34
|
||||
Constant (const byte) KEY_EQUALS#0 = $35
|
||||
Constant (const byte) KEY_ARROW_UP#0 = $36
|
||||
Constant (const byte) KEY_SLASH#0 = $37
|
||||
Constant (const byte) KEY_1#0 = $38
|
||||
Constant (const byte) KEY_ARROW_LEFT#0 = $39
|
||||
Constant (const byte) KEY_CTRL#0 = $3a
|
||||
Constant (const byte) KEY_2#0 = $3b
|
||||
Constant (const byte) KEY_SPACE#0 = $3c
|
||||
Constant (const byte) KEY_COMMODORE#0 = $3d
|
||||
Constant (const byte) KEY_Q#0 = $3e
|
||||
Constant (const byte) KEY_RUNSTOP#0 = $3f
|
||||
Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f }
|
||||
Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, $10, $20, $40, $80 }
|
||||
Constant (const byte[8]) keyboard_events#0 = { fill( 8, 0) }
|
||||
Constant (const byte) keyboard_events_size#0 = 0
|
||||
Constant (const byte) keyboard_modifiers#0 = 0
|
||||
Constant (const byte) KEY_MODIFIER_LSHIFT#0 = 1
|
||||
Constant (const byte) KEY_MODIFIER_RSHIFT#0 = 2
|
||||
Constant (const byte) KEY_MODIFIER_CTRL#0 = 4
|
||||
Constant (const byte) KEY_MODIFIER_COMMODORE#0 = 8
|
||||
Constant (const byte[8]) keyboard_scan_values#0 = { fill( 8, 0) }
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte*) print_str_at::str#0 = main::str
|
||||
Constant (const byte*) print_str_at::str#1 = main::str1
|
||||
@ -1584,7 +1207,6 @@ Constant (const byte) plot_chargen::c#1 = '*'
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const word) mul8u::mb#0 = ((word))mul8u::b#0
|
||||
Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, $3f, KEY_POUND#0, $3f, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, $3f, KEY_EQUALS#0, $3f, $3f }
|
||||
Constant (const byte) KEY_MODIFIER_SHIFT#0 = KEY_MODIFIER_LSHIFT#0|KEY_MODIFIER_RSHIFT#0
|
||||
Constant (const byte*) main::sc#0 = SCREEN#0
|
||||
Constant (const byte*) main::$11 = SCREEN#0+$3e8
|
||||
Constant (const byte*) print_str_at::at#0 = SCREEN#0+1
|
||||
@ -1606,7 +1228,6 @@ Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [80] if(true) goto main::@5
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Resolved ranged next value main::i#1 ← ++ main::i#2 to ++
|
||||
@ -1622,7 +1243,6 @@ Rewriting multiplication to use shift (byte) plot_chargen::bits#1 ← (byte) plo
|
||||
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
||||
Culled Empty Block (label) mul8u::@3
|
||||
Culled Empty Block (label) @9
|
||||
Culled Empty Block (label) @13
|
||||
Culled Empty Block (label) @16
|
||||
Culled Empty Block (label) main::@28
|
||||
Culled Empty Block (label) main::@4
|
||||
@ -2103,43 +1723,9 @@ print_str_at::@2: scope:[print_str_at] from print_str_at::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(byte) KEY_1
|
||||
(byte) KEY_2
|
||||
@ -2159,12 +1745,7 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) KEY_C
|
||||
(byte) KEY_COLON
|
||||
(byte) KEY_COMMA
|
||||
(byte) KEY_COMMODORE
|
||||
(byte) KEY_CRSR_DOWN
|
||||
(byte) KEY_CRSR_RIGHT
|
||||
(byte) KEY_CTRL
|
||||
(byte) KEY_D
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(byte) KEY_E
|
||||
(byte) KEY_EQUALS
|
||||
@ -2175,7 +1756,6 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) KEY_F7
|
||||
(byte) KEY_G
|
||||
(byte) KEY_H
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(byte) KEY_J
|
||||
(byte) KEY_K
|
||||
@ -2183,11 +1763,6 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) KEY_LSHIFT
|
||||
(byte) KEY_M
|
||||
(byte) KEY_MINUS
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
(byte) KEY_MODIFIER_LSHIFT
|
||||
(byte) KEY_MODIFIER_RSHIFT
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(byte) KEY_N
|
||||
(byte) KEY_O
|
||||
(byte) KEY_P
|
||||
@ -2195,9 +1770,6 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) KEY_POUND
|
||||
(byte) KEY_Q
|
||||
(byte) KEY_R
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(byte) KEY_SEMICOLON
|
||||
(byte) KEY_SLASH
|
||||
@ -2209,52 +1781,9 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) KEY_X
|
||||
(byte) KEY_Y
|
||||
(byte) KEY_Z
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(byte[8]) keyboard_events
|
||||
(byte) keyboard_events_size
|
||||
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
|
||||
(byte) keyboard_get_keycode::ch
|
||||
(byte) keyboard_get_keycode::ch#0 103.0
|
||||
@ -2287,8 +1816,6 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) keyboard_matrix_read::rowid
|
||||
(byte) keyboard_matrix_read::rowid#0 4.0
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(byte) keyboard_modifiers
|
||||
(byte[8]) keyboard_scan_values
|
||||
(void()) main()
|
||||
(byte~) main::$15 22.0
|
||||
(byte~) main::$18 22.0
|
||||
@ -4743,46 +4270,12 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) $23
|
||||
(byte) KEY_1
|
||||
@ -4821,13 +4314,8 @@ FINAL SYMBOL TABLE
|
||||
(const byte) KEY_COLON#0 KEY_COLON = (byte/signed byte/word/signed word/dword/signed dword) $2d
|
||||
(byte) KEY_COMMA
|
||||
(const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) $2f
|
||||
(byte) KEY_COMMODORE
|
||||
(byte) KEY_CRSR_DOWN
|
||||
(byte) KEY_CRSR_RIGHT
|
||||
(byte) KEY_CTRL
|
||||
(byte) KEY_D
|
||||
(const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) $12
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) $2c
|
||||
(byte) KEY_E
|
||||
@ -4848,7 +4336,6 @@ FINAL SYMBOL TABLE
|
||||
(const byte) KEY_G#0 KEY_G = (byte/signed byte/word/signed word/dword/signed dword) $1a
|
||||
(byte) KEY_H
|
||||
(const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) $1d
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(const byte) KEY_I#0 KEY_I = (byte/signed byte/word/signed word/dword/signed dword) $21
|
||||
(byte) KEY_J
|
||||
@ -4863,11 +4350,6 @@ FINAL SYMBOL TABLE
|
||||
(const byte) KEY_M#0 KEY_M = (byte/signed byte/word/signed word/dword/signed dword) $24
|
||||
(byte) KEY_MINUS
|
||||
(const byte) KEY_MINUS#0 KEY_MINUS = (byte/signed byte/word/signed word/dword/signed dword) $2b
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
(byte) KEY_MODIFIER_LSHIFT
|
||||
(byte) KEY_MODIFIER_RSHIFT
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(byte) KEY_N
|
||||
(const byte) KEY_N#0 KEY_N = (byte/signed byte/word/signed word/dword/signed dword) $27
|
||||
(byte) KEY_O
|
||||
@ -4882,9 +4364,6 @@ FINAL SYMBOL TABLE
|
||||
(const byte) KEY_Q#0 KEY_Q = (byte/signed byte/word/signed word/dword/signed dword) $3e
|
||||
(byte) KEY_R
|
||||
(const byte) KEY_R#0 KEY_R = (byte/signed byte/word/signed word/dword/signed dword) $11
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(const byte) KEY_S#0 KEY_S = (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) KEY_SEMICOLON
|
||||
@ -4907,55 +4386,12 @@ FINAL SYMBOL TABLE
|
||||
(const byte) KEY_Y#0 KEY_Y = (byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
(byte) KEY_Z
|
||||
(const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(const byte[]) keyboard_char_keycodes#0 keyboard_char_keycodes = { (const byte) KEY_AT#0, (const byte) KEY_A#0, (const byte) KEY_B#0, (const byte) KEY_C#0, (const byte) KEY_D#0, (const byte) KEY_E#0, (const byte) KEY_F#0, (const byte) KEY_G#0, (const byte) KEY_H#0, (const byte) KEY_I#0, (const byte) KEY_J#0, (const byte) KEY_K#0, (const byte) KEY_L#0, (const byte) KEY_M#0, (const byte) KEY_N#0, (const byte) KEY_O#0, (const byte) KEY_P#0, (const byte) KEY_Q#0, (const byte) KEY_R#0, (const byte) KEY_S#0, (const byte) KEY_T#0, (const byte) KEY_U#0, (const byte) KEY_V#0, (const byte) KEY_W#0, (const byte) KEY_X#0, (const byte) KEY_Y#0, (const byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (const byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (const byte) KEY_ARROW_UP#0, (const byte) KEY_ARROW_LEFT#0, (const byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (const byte) KEY_ASTERISK#0, (const byte) KEY_PLUS#0, (const byte) KEY_COMMA#0, (const byte) KEY_MINUS#0, (const byte) KEY_DOT#0, (const byte) KEY_SLASH#0, (const byte) KEY_0#0, (const byte) KEY_1#0, (const byte) KEY_2#0, (const byte) KEY_3#0, (const byte) KEY_4#0, (const byte) KEY_5#0, (const byte) KEY_6#0, (const byte) KEY_7#0, (const byte) KEY_8#0, (const byte) KEY_9#0, (const byte) KEY_COLON#0, (const byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (const byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f }
|
||||
(byte[8]) keyboard_events
|
||||
(byte) keyboard_events_size
|
||||
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
|
||||
(label) keyboard_get_keycode::@return
|
||||
(byte) keyboard_get_keycode::ch
|
||||
@ -4994,8 +4430,6 @@ FINAL SYMBOL TABLE
|
||||
(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) $fe, (byte/word/signed word/dword/signed dword) $fd, (byte/word/signed word/dword/signed dword) $fb, (byte/word/signed word/dword/signed dword) $f7, (byte/word/signed word/dword/signed dword) $ef, (byte/word/signed word/dword/signed dword) $df, (byte/word/signed word/dword/signed dword) $bf, (byte/signed byte/word/signed word/dword/signed dword) $7f }
|
||||
(byte) keyboard_modifiers
|
||||
(byte[8]) keyboard_scan_values
|
||||
(void()) main()
|
||||
(byte~) main::$15 reg byte a 22.0
|
||||
(byte~) main::$18 reg byte a 22.0
|
||||
|
@ -1,46 +1,12 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte) KEY_0
|
||||
(const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) $23
|
||||
(byte) KEY_1
|
||||
@ -79,13 +45,8 @@
|
||||
(const byte) KEY_COLON#0 KEY_COLON = (byte/signed byte/word/signed word/dword/signed dword) $2d
|
||||
(byte) KEY_COMMA
|
||||
(const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) $2f
|
||||
(byte) KEY_COMMODORE
|
||||
(byte) KEY_CRSR_DOWN
|
||||
(byte) KEY_CRSR_RIGHT
|
||||
(byte) KEY_CTRL
|
||||
(byte) KEY_D
|
||||
(const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) $12
|
||||
(byte) KEY_DEL
|
||||
(byte) KEY_DOT
|
||||
(const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) $2c
|
||||
(byte) KEY_E
|
||||
@ -106,7 +67,6 @@
|
||||
(const byte) KEY_G#0 KEY_G = (byte/signed byte/word/signed word/dword/signed dword) $1a
|
||||
(byte) KEY_H
|
||||
(const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) $1d
|
||||
(byte) KEY_HOME
|
||||
(byte) KEY_I
|
||||
(const byte) KEY_I#0 KEY_I = (byte/signed byte/word/signed word/dword/signed dword) $21
|
||||
(byte) KEY_J
|
||||
@ -121,11 +81,6 @@
|
||||
(const byte) KEY_M#0 KEY_M = (byte/signed byte/word/signed word/dword/signed dword) $24
|
||||
(byte) KEY_MINUS
|
||||
(const byte) KEY_MINUS#0 KEY_MINUS = (byte/signed byte/word/signed word/dword/signed dword) $2b
|
||||
(byte) KEY_MODIFIER_COMMODORE
|
||||
(byte) KEY_MODIFIER_CTRL
|
||||
(byte) KEY_MODIFIER_LSHIFT
|
||||
(byte) KEY_MODIFIER_RSHIFT
|
||||
(byte) KEY_MODIFIER_SHIFT
|
||||
(byte) KEY_N
|
||||
(const byte) KEY_N#0 KEY_N = (byte/signed byte/word/signed word/dword/signed dword) $27
|
||||
(byte) KEY_O
|
||||
@ -140,9 +95,6 @@
|
||||
(const byte) KEY_Q#0 KEY_Q = (byte/signed byte/word/signed word/dword/signed dword) $3e
|
||||
(byte) KEY_R
|
||||
(const byte) KEY_R#0 KEY_R = (byte/signed byte/word/signed word/dword/signed dword) $11
|
||||
(byte) KEY_RETURN
|
||||
(byte) KEY_RSHIFT
|
||||
(byte) KEY_RUNSTOP
|
||||
(byte) KEY_S
|
||||
(const byte) KEY_S#0 KEY_S = (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) KEY_SEMICOLON
|
||||
@ -165,55 +117,12 @@
|
||||
(const byte) KEY_Y#0 KEY_Y = (byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
(byte) KEY_Z
|
||||
(const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte[]) keyboard_char_keycodes
|
||||
(const byte[]) keyboard_char_keycodes#0 keyboard_char_keycodes = { (const byte) KEY_AT#0, (const byte) KEY_A#0, (const byte) KEY_B#0, (const byte) KEY_C#0, (const byte) KEY_D#0, (const byte) KEY_E#0, (const byte) KEY_F#0, (const byte) KEY_G#0, (const byte) KEY_H#0, (const byte) KEY_I#0, (const byte) KEY_J#0, (const byte) KEY_K#0, (const byte) KEY_L#0, (const byte) KEY_M#0, (const byte) KEY_N#0, (const byte) KEY_O#0, (const byte) KEY_P#0, (const byte) KEY_Q#0, (const byte) KEY_R#0, (const byte) KEY_S#0, (const byte) KEY_T#0, (const byte) KEY_U#0, (const byte) KEY_V#0, (const byte) KEY_W#0, (const byte) KEY_X#0, (const byte) KEY_Y#0, (const byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (const byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (const byte) KEY_ARROW_UP#0, (const byte) KEY_ARROW_LEFT#0, (const byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f, (const byte) KEY_ASTERISK#0, (const byte) KEY_PLUS#0, (const byte) KEY_COMMA#0, (const byte) KEY_MINUS#0, (const byte) KEY_DOT#0, (const byte) KEY_SLASH#0, (const byte) KEY_0#0, (const byte) KEY_1#0, (const byte) KEY_2#0, (const byte) KEY_3#0, (const byte) KEY_4#0, (const byte) KEY_5#0, (const byte) KEY_6#0, (const byte) KEY_7#0, (const byte) KEY_8#0, (const byte) KEY_9#0, (const byte) KEY_COLON#0, (const byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (const byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) $3f, (byte/signed byte/word/signed word/dword/signed dword) $3f }
|
||||
(byte[8]) keyboard_events
|
||||
(byte) keyboard_events_size
|
||||
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
|
||||
(label) keyboard_get_keycode::@return
|
||||
(byte) keyboard_get_keycode::ch
|
||||
@ -252,8 +161,6 @@
|
||||
(byte) keyboard_matrix_read::rowid#0 reg byte x 4.0
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) $fe, (byte/word/signed word/dword/signed dword) $fd, (byte/word/signed word/dword/signed dword) $fb, (byte/word/signed word/dword/signed dword) $f7, (byte/word/signed word/dword/signed dword) $ef, (byte/word/signed word/dword/signed dword) $df, (byte/word/signed word/dword/signed dword) $bf, (byte/signed byte/word/signed word/dword/signed dword) $7f }
|
||||
(byte) keyboard_modifiers
|
||||
(byte[8]) keyboard_scan_values
|
||||
(void()) main()
|
||||
(byte~) main::$15 reg byte a 22.0
|
||||
(byte~) main::$18 reg byte a 22.0
|
||||
|
@ -8,7 +8,7 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label print_line_cursor = $400
|
||||
.label print_screen = $400
|
||||
// Pointers to a, b and c=a*b
|
||||
.label ap = $fd
|
||||
.label bp = $fe
|
||||
@ -228,9 +228,9 @@ init_screen: {
|
||||
// Clear the screen. Also resets current line/char cursor.
|
||||
print_cls: {
|
||||
.label sc = 2
|
||||
lda #<print_line_cursor
|
||||
lda #<print_screen
|
||||
sta sc
|
||||
lda #>print_line_cursor
|
||||
lda #>print_screen
|
||||
sta sc+1
|
||||
b1:
|
||||
lda #' '
|
||||
@ -241,10 +241,10 @@ print_cls: {
|
||||
inc sc+1
|
||||
!:
|
||||
lda sc+1
|
||||
cmp #>print_line_cursor+$3e8
|
||||
cmp #>print_screen+$3e8
|
||||
bne b1
|
||||
lda sc
|
||||
cmp #<print_line_cursor+$3e8
|
||||
cmp #<print_screen+$3e8
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
|
@ -153,10 +153,10 @@ print_cls: scope:[print_cls] from init_screen
|
||||
[78] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[79] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[79] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[80] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
|
||||
[82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[83] return
|
||||
|
@ -10,8 +10,6 @@ Identified constant variable (byte*) mulf_sqr2
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@12
|
||||
print_sbyte_at: scope:[print_sbyte_at] from main::@1 main::@10 main::@3
|
||||
(byte*) print_sbyte_at::at#6 ← phi( main::@1/(byte*) print_sbyte_at::at#0 main::@10/(byte*) print_sbyte_at::at#2 main::@3/(byte*) print_sbyte_at::at#1 )
|
||||
@ -58,9 +56,7 @@ print_sbyte_at::@return: scope:[print_sbyte_at] from print_sbyte_at::@7
|
||||
return
|
||||
to:@return
|
||||
@12: scope:[] from @begin
|
||||
(byte*) print_screen#9 ← phi( @begin/(byte*) print_screen#0 )
|
||||
(byte*) print_char_cursor#25 ← phi( @begin/(byte*) print_char_cursor#0 )
|
||||
(byte*) print_line_cursor#25 ← phi( @begin/(byte*) print_line_cursor#0 )
|
||||
(byte*) print_screen#8 ← phi( @begin/(byte*) print_screen#0 )
|
||||
(byte[]) print_hextab#0 ← (const string) $4
|
||||
to:@19
|
||||
print_byte_at: scope:[print_byte_at] from print_sbyte_at::@2
|
||||
@ -94,7 +90,7 @@ print_char_at::@return: scope:[print_char_at] from print_char_at
|
||||
return
|
||||
to:@return
|
||||
print_cls: scope:[print_cls] from init_screen
|
||||
(byte*) print_screen#1 ← phi( init_screen/(byte*) print_screen#4 )
|
||||
(byte*) print_screen#1 ← phi( init_screen/(byte*) print_screen#3 )
|
||||
(byte*) print_cls::sc#0 ← (byte*) print_screen#1
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
@ -105,23 +101,12 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
(byte*~) print_cls::$0 ← (byte*) print_screen#2 + (word/signed word/dword/signed dword) $3e8
|
||||
(bool~) print_cls::$1 ← (byte*) print_cls::sc#1 != (byte*~) print_cls::$0
|
||||
if((bool~) print_cls::$1) goto print_cls::@1
|
||||
to:print_cls::@2
|
||||
print_cls::@2: scope:[print_cls] from print_cls::@1
|
||||
(byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 )
|
||||
(byte*) print_line_cursor#1 ← (byte*) print_screen#3
|
||||
(byte*) print_char_cursor#1 ← (byte*) print_line_cursor#1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(byte*) print_char_cursor#8 ← phi( print_cls::@2/(byte*) print_char_cursor#1 )
|
||||
(byte*) print_line_cursor#8 ← phi( print_cls::@2/(byte*) print_line_cursor#1 )
|
||||
(byte*) print_line_cursor#2 ← (byte*) print_line_cursor#8
|
||||
(byte*) print_char_cursor#2 ← (byte*) print_char_cursor#8
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
return
|
||||
to:@return
|
||||
@19: scope:[] from @12
|
||||
(byte*) print_screen#8 ← phi( @12/(byte*) print_screen#9 )
|
||||
(byte*) print_char_cursor#24 ← phi( @12/(byte*) print_char_cursor#25 )
|
||||
(byte*) print_line_cursor#24 ← phi( @12/(byte*) print_line_cursor#25 )
|
||||
(byte*) print_screen#7 ← phi( @12/(byte*) print_screen#8 )
|
||||
(signed byte/signed word/signed dword~) $0 ← - (byte/signed byte/word/signed word/dword/signed dword) $5f
|
||||
(signed byte/signed word/signed dword~) $1 ← - (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(signed byte/signed word/signed dword~) $2 ← - (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
@ -129,24 +114,16 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(signed byte[]) vals#0 ← { (signed byte/signed word/signed dword~) $0, (signed byte/signed word/signed dword~) $1, (signed byte/signed word/signed dword~) $2, (signed byte/signed word/signed dword~) $3, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) $10, (byte/signed byte/word/signed word/dword/signed dword) $20, (byte/signed byte/word/signed word/dword/signed dword) $40, (byte/signed byte/word/signed word/dword/signed dword) $5f }
|
||||
to:@21
|
||||
main: scope:[main] from @22
|
||||
(byte*) print_screen#5 ← phi( @22/(byte*) print_screen#6 )
|
||||
(byte*) print_char_cursor#14 ← phi( @22/(byte*) print_char_cursor#18 )
|
||||
(byte*) print_line_cursor#14 ← phi( @22/(byte*) print_line_cursor#18 )
|
||||
(byte*) print_screen#4 ← phi( @22/(byte*) print_screen#5 )
|
||||
call init_screen
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main
|
||||
(byte*) print_char_cursor#9 ← phi( main/(byte*) print_char_cursor#6 )
|
||||
(byte*) print_line_cursor#9 ← phi( main/(byte*) print_line_cursor#6 )
|
||||
(byte*) print_line_cursor#3 ← (byte*) print_line_cursor#9
|
||||
(byte*) print_char_cursor#3 ← (byte*) print_char_cursor#9
|
||||
(byte*) main::at_line#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
(byte*~) main::$1 ← (byte*) main::at_line#0 + (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte*) main::at#0 ← (byte*~) main::$1
|
||||
(byte) main::k#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@7 main::@8
|
||||
(byte*) print_char_cursor#31 ← phi( main::@7/(byte*) print_char_cursor#3 main::@8/(byte*) print_char_cursor#30 )
|
||||
(byte*) print_line_cursor#31 ← phi( main::@7/(byte*) print_line_cursor#3 main::@8/(byte*) print_line_cursor#30 )
|
||||
(byte*) main::at_line#7 ← phi( main::@7/(byte*) main::at_line#0 main::@8/(byte*) main::at_line#5 )
|
||||
(byte*) main::at#4 ← phi( main::@7/(byte*) main::at#0 main::@8/(byte*) main::at#1 )
|
||||
(byte) main::k#2 ← phi( main::@7/(byte) main::k#0 main::@8/(byte) main::k#1 )
|
||||
@ -155,8 +132,6 @@ main::@1: scope:[main] from main::@7 main::@8
|
||||
call print_sbyte_at
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@1
|
||||
(byte*) print_char_cursor#30 ← phi( main::@1/(byte*) print_char_cursor#31 )
|
||||
(byte*) print_line_cursor#30 ← phi( main::@1/(byte*) print_line_cursor#31 )
|
||||
(byte*) main::at_line#5 ← phi( main::@1/(byte*) main::at_line#7 )
|
||||
(byte) main::k#3 ← phi( main::@1/(byte) main::k#2 )
|
||||
(byte*) main::at#5 ← phi( main::@1/(byte*) main::at#4 )
|
||||
@ -166,14 +141,10 @@ main::@8: scope:[main] from main::@1
|
||||
if((bool~) main::$3) goto main::@1
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@8
|
||||
(byte*) print_char_cursor#29 ← phi( main::@8/(byte*) print_char_cursor#30 )
|
||||
(byte*) print_line_cursor#29 ← phi( main::@8/(byte*) print_line_cursor#30 )
|
||||
(byte*) main::at_line#3 ← phi( main::@8/(byte*) main::at_line#5 )
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2 main::@5
|
||||
(byte*) print_char_cursor#28 ← phi( main::@2/(byte*) print_char_cursor#29 main::@5/(byte*) print_char_cursor#15 )
|
||||
(byte*) print_line_cursor#28 ← phi( main::@2/(byte*) print_line_cursor#29 main::@5/(byte*) print_line_cursor#15 )
|
||||
(byte) main::i#2 ← phi( main::@2/(byte) main::i#0 main::@5/(byte) main::i#1 )
|
||||
(byte*) main::at_line#2 ← phi( main::@2/(byte*) main::at_line#3 main::@5/(byte*) main::at_line#4 )
|
||||
(byte*) main::at_line#1 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
@ -183,16 +154,12 @@ main::@3: scope:[main] from main::@2 main::@5
|
||||
call print_sbyte_at
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@3
|
||||
(byte*) print_char_cursor#27 ← phi( main::@3/(byte*) print_char_cursor#28 )
|
||||
(byte*) print_line_cursor#27 ← phi( main::@3/(byte*) print_line_cursor#28 )
|
||||
(byte*) main::at_line#10 ← phi( main::@3/(byte*) main::at_line#1 )
|
||||
(byte) main::i#6 ← phi( main::@3/(byte) main::i#2 )
|
||||
(byte*) main::at#9 ← phi( main::@3/(byte*) main::at#2 )
|
||||
(byte) main::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@11 main::@9
|
||||
(byte*) print_char_cursor#26 ← phi( main::@11/(byte*) print_char_cursor#19 main::@9/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_line_cursor#26 ← phi( main::@11/(byte*) print_line_cursor#19 main::@9/(byte*) print_line_cursor#27 )
|
||||
(byte*) main::at_line#9 ← phi( main::@11/(byte*) main::at_line#6 main::@9/(byte*) main::at_line#10 )
|
||||
(byte) main::j#2 ← phi( main::@11/(byte) main::j#1 main::@9/(byte) main::j#0 )
|
||||
(byte) main::i#3 ← phi( main::@11/(byte) main::i#5 main::@9/(byte) main::i#6 )
|
||||
@ -204,8 +171,6 @@ main::@4: scope:[main] from main::@11 main::@9
|
||||
(signed byte) fmul8::return#0 ← (signed byte) fmul8::return#2
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@4
|
||||
(byte*) print_char_cursor#22 ← phi( main::@4/(byte*) print_char_cursor#26 )
|
||||
(byte*) print_line_cursor#22 ← phi( main::@4/(byte*) print_line_cursor#26 )
|
||||
(byte*) main::at_line#8 ← phi( main::@4/(byte*) main::at_line#9 )
|
||||
(byte) main::i#7 ← phi( main::@4/(byte) main::i#3 )
|
||||
(byte) main::j#4 ← phi( main::@4/(byte) main::j#2 )
|
||||
@ -218,8 +183,6 @@ main::@10: scope:[main] from main::@4
|
||||
call print_sbyte_at
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
(byte*) print_char_cursor#19 ← phi( main::@10/(byte*) print_char_cursor#22 )
|
||||
(byte*) print_line_cursor#19 ← phi( main::@10/(byte*) print_line_cursor#22 )
|
||||
(byte*) main::at_line#6 ← phi( main::@10/(byte*) main::at_line#8 )
|
||||
(byte) main::i#5 ← phi( main::@10/(byte) main::i#7 )
|
||||
(byte*) main::at#8 ← phi( main::@10/(byte*) main::at#7 )
|
||||
@ -229,8 +192,6 @@ main::@11: scope:[main] from main::@10
|
||||
if((bool~) main::$7) goto main::@4
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@11
|
||||
(byte*) print_char_cursor#15 ← phi( main::@11/(byte*) print_char_cursor#19 )
|
||||
(byte*) print_line_cursor#15 ← phi( main::@11/(byte*) print_line_cursor#19 )
|
||||
(byte*) main::at_line#4 ← phi( main::@11/(byte*) main::at_line#6 )
|
||||
(byte) main::i#4 ← phi( main::@11/(byte) main::i#5 )
|
||||
(byte) main::i#1 ← (byte) main::i#4 + rangenext(0,8)
|
||||
@ -238,30 +199,18 @@ main::@5: scope:[main] from main::@11
|
||||
if((bool~) main::$8) goto main::@3
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@5
|
||||
(byte*) print_char_cursor#10 ← phi( main::@5/(byte*) print_char_cursor#15 )
|
||||
(byte*) print_line_cursor#10 ← phi( main::@5/(byte*) print_line_cursor#15 )
|
||||
(byte*) print_line_cursor#4 ← (byte*) print_line_cursor#10
|
||||
(byte*) print_char_cursor#4 ← (byte*) print_char_cursor#10
|
||||
return
|
||||
to:@return
|
||||
init_screen: scope:[init_screen] from main
|
||||
(byte*) print_char_cursor#16 ← phi( main/(byte*) print_char_cursor#14 )
|
||||
(byte*) print_line_cursor#16 ← phi( main/(byte*) print_line_cursor#14 )
|
||||
(byte*) print_screen#4 ← phi( main/(byte*) print_screen#5 )
|
||||
(byte*) print_screen#3 ← phi( main/(byte*) print_screen#4 )
|
||||
call print_cls
|
||||
to:init_screen::@5
|
||||
init_screen::@5: scope:[init_screen] from init_screen
|
||||
(byte*) print_char_cursor#11 ← phi( init_screen/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_line_cursor#11 ← phi( init_screen/(byte*) print_line_cursor#2 )
|
||||
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#11
|
||||
(byte*) print_char_cursor#5 ← (byte*) print_char_cursor#11
|
||||
(byte*) init_screen::COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte) init_screen::WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) init_screen::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:init_screen::@1
|
||||
init_screen::@1: scope:[init_screen] from init_screen::@1 init_screen::@5
|
||||
(byte*) print_char_cursor#23 ← phi( init_screen::@1/(byte*) print_char_cursor#23 init_screen::@5/(byte*) print_char_cursor#5 )
|
||||
(byte*) print_line_cursor#23 ← phi( init_screen::@1/(byte*) print_line_cursor#23 init_screen::@5/(byte*) print_line_cursor#5 )
|
||||
(byte) init_screen::l#2 ← phi( init_screen::@1/(byte) init_screen::l#1 init_screen::@5/(byte) init_screen::l#0 )
|
||||
(byte*) init_screen::COLS#2 ← phi( init_screen::@1/(byte*) init_screen::COLS#2 init_screen::@5/(byte*) init_screen::COLS#0 )
|
||||
*((byte*) init_screen::COLS#2 + (byte) init_screen::l#2) ← (byte) init_screen::WHITE#0
|
||||
@ -270,14 +219,10 @@ init_screen::@1: scope:[init_screen] from init_screen::@1 init_screen::@5
|
||||
if((bool~) init_screen::$1) goto init_screen::@1
|
||||
to:init_screen::@2
|
||||
init_screen::@2: scope:[init_screen] from init_screen::@1
|
||||
(byte*) print_char_cursor#20 ← phi( init_screen::@1/(byte*) print_char_cursor#23 )
|
||||
(byte*) print_line_cursor#20 ← phi( init_screen::@1/(byte*) print_line_cursor#23 )
|
||||
(byte*) init_screen::COLS#4 ← phi( init_screen::@1/(byte*) init_screen::COLS#2 )
|
||||
(byte) init_screen::m#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:init_screen::@3
|
||||
init_screen::@3: scope:[init_screen] from init_screen::@2 init_screen::@3
|
||||
(byte*) print_char_cursor#17 ← phi( init_screen::@2/(byte*) print_char_cursor#20 init_screen::@3/(byte*) print_char_cursor#17 )
|
||||
(byte*) print_line_cursor#17 ← phi( init_screen::@2/(byte*) print_line_cursor#20 init_screen::@3/(byte*) print_line_cursor#17 )
|
||||
(byte) init_screen::m#2 ← phi( init_screen::@2/(byte) init_screen::m#0 init_screen::@3/(byte) init_screen::m#1 )
|
||||
(byte*) init_screen::COLS#3 ← phi( init_screen::@2/(byte*) init_screen::COLS#4 init_screen::@3/(byte*) init_screen::COLS#1 )
|
||||
*((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) init_screen::WHITE#0
|
||||
@ -290,16 +235,10 @@ init_screen::@3: scope:[init_screen] from init_screen::@2 init_screen::@3
|
||||
if((bool~) init_screen::$2) goto init_screen::@3
|
||||
to:init_screen::@return
|
||||
init_screen::@return: scope:[init_screen] from init_screen::@3
|
||||
(byte*) print_char_cursor#12 ← phi( init_screen::@3/(byte*) print_char_cursor#17 )
|
||||
(byte*) print_line_cursor#12 ← phi( init_screen::@3/(byte*) print_line_cursor#17 )
|
||||
(byte*) print_line_cursor#6 ← (byte*) print_line_cursor#12
|
||||
(byte*) print_char_cursor#6 ← (byte*) print_char_cursor#12
|
||||
return
|
||||
to:@return
|
||||
@21: scope:[] from @19
|
||||
(byte*) print_screen#7 ← phi( @19/(byte*) print_screen#8 )
|
||||
(byte*) print_char_cursor#21 ← phi( @19/(byte*) print_char_cursor#24 )
|
||||
(byte*) print_line_cursor#21 ← phi( @19/(byte*) print_line_cursor#24 )
|
||||
(byte*) print_screen#6 ← phi( @19/(byte*) print_screen#7 )
|
||||
(signed byte*) ap#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) $fd
|
||||
(signed byte*) bp#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) $fe
|
||||
(signed byte*) cp#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) $ff
|
||||
@ -318,9 +257,7 @@ fmul8::@return: scope:[fmul8] from fmul8
|
||||
return
|
||||
to:@return
|
||||
@22: scope:[] from @21
|
||||
(byte*) print_screen#6 ← phi( @21/(byte*) print_screen#7 )
|
||||
(byte*) print_char_cursor#18 ← phi( @21/(byte*) print_char_cursor#21 )
|
||||
(byte*) print_line_cursor#18 ← phi( @21/(byte*) print_line_cursor#21 )
|
||||
(byte*) print_screen#5 ← phi( @21/(byte*) print_screen#6 )
|
||||
(byte*) mulf_sqr1#0 ← ((byte*)) (word/signed word/dword/signed dword) $2000
|
||||
(byte*) mulf_sqr2#0 ← ((byte*)) (word/signed word/dword/signed dword) $2200
|
||||
kickasm(location (byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) {
|
||||
@ -338,10 +275,6 @@ fmul8::@return: scope:[fmul8] from fmul8
|
||||
call main
|
||||
to:@23
|
||||
@23: scope:[] from @22
|
||||
(byte*) print_char_cursor#13 ← phi( @22/(byte*) print_char_cursor#4 )
|
||||
(byte*) print_line_cursor#13 ← phi( @22/(byte*) print_line_cursor#4 )
|
||||
(byte*) print_line_cursor#7 ← (byte*) print_line_cursor#13
|
||||
(byte*) print_char_cursor#7 ← (byte*) print_char_cursor#13
|
||||
to:@end
|
||||
@end: scope:[] from @23
|
||||
|
||||
@ -497,44 +430,10 @@ SYMBOL TABLE SSA
|
||||
(byte) print_char_at::ch#2
|
||||
(byte) print_char_at::ch#3
|
||||
(byte) print_char_at::ch#4
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#0
|
||||
(byte*) print_char_cursor#1
|
||||
(byte*) print_char_cursor#10
|
||||
(byte*) print_char_cursor#11
|
||||
(byte*) print_char_cursor#12
|
||||
(byte*) print_char_cursor#13
|
||||
(byte*) print_char_cursor#14
|
||||
(byte*) print_char_cursor#15
|
||||
(byte*) print_char_cursor#16
|
||||
(byte*) print_char_cursor#17
|
||||
(byte*) print_char_cursor#18
|
||||
(byte*) print_char_cursor#19
|
||||
(byte*) print_char_cursor#2
|
||||
(byte*) print_char_cursor#20
|
||||
(byte*) print_char_cursor#21
|
||||
(byte*) print_char_cursor#22
|
||||
(byte*) print_char_cursor#23
|
||||
(byte*) print_char_cursor#24
|
||||
(byte*) print_char_cursor#25
|
||||
(byte*) print_char_cursor#26
|
||||
(byte*) print_char_cursor#27
|
||||
(byte*) print_char_cursor#28
|
||||
(byte*) print_char_cursor#29
|
||||
(byte*) print_char_cursor#3
|
||||
(byte*) print_char_cursor#30
|
||||
(byte*) print_char_cursor#31
|
||||
(byte*) print_char_cursor#4
|
||||
(byte*) print_char_cursor#5
|
||||
(byte*) print_char_cursor#6
|
||||
(byte*) print_char_cursor#7
|
||||
(byte*) print_char_cursor#8
|
||||
(byte*) print_char_cursor#9
|
||||
(void()) print_cls()
|
||||
(byte*~) print_cls::$0
|
||||
(bool~) print_cls::$1
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@2
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#0
|
||||
@ -542,39 +441,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_cls::sc#2
|
||||
(byte[]) print_hextab
|
||||
(byte[]) print_hextab#0
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#0
|
||||
(byte*) print_line_cursor#1
|
||||
(byte*) print_line_cursor#10
|
||||
(byte*) print_line_cursor#11
|
||||
(byte*) print_line_cursor#12
|
||||
(byte*) print_line_cursor#13
|
||||
(byte*) print_line_cursor#14
|
||||
(byte*) print_line_cursor#15
|
||||
(byte*) print_line_cursor#16
|
||||
(byte*) print_line_cursor#17
|
||||
(byte*) print_line_cursor#18
|
||||
(byte*) print_line_cursor#19
|
||||
(byte*) print_line_cursor#2
|
||||
(byte*) print_line_cursor#20
|
||||
(byte*) print_line_cursor#21
|
||||
(byte*) print_line_cursor#22
|
||||
(byte*) print_line_cursor#23
|
||||
(byte*) print_line_cursor#24
|
||||
(byte*) print_line_cursor#25
|
||||
(byte*) print_line_cursor#26
|
||||
(byte*) print_line_cursor#27
|
||||
(byte*) print_line_cursor#28
|
||||
(byte*) print_line_cursor#29
|
||||
(byte*) print_line_cursor#3
|
||||
(byte*) print_line_cursor#30
|
||||
(byte*) print_line_cursor#31
|
||||
(byte*) print_line_cursor#4
|
||||
(byte*) print_line_cursor#5
|
||||
(byte*) print_line_cursor#6
|
||||
(byte*) print_line_cursor#7
|
||||
(byte*) print_line_cursor#8
|
||||
(byte*) print_line_cursor#9
|
||||
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
|
||||
(bool~) print_sbyte_at::$0
|
||||
(byte~) print_sbyte_at::$1
|
||||
@ -618,110 +484,67 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_screen#6
|
||||
(byte*) print_screen#7
|
||||
(byte*) print_screen#8
|
||||
(byte*) print_screen#9
|
||||
(signed byte[]) vals
|
||||
(signed byte[]) vals#0
|
||||
|
||||
Culled Empty Block (label) print_sbyte_at::@7
|
||||
Culled Empty Block (label) print_byte_at::@2
|
||||
Culled Empty Block (label) @23
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#25 (byte*) print_char_cursor#25 (byte*) print_screen#9 (byte*) print_line_cursor#24 (byte*) print_char_cursor#24 (byte*) print_screen#8 (byte*) print_line_cursor#21 (byte*) print_char_cursor#21 (byte*) print_screen#7 (byte*) print_line_cursor#18 (byte*) print_char_cursor#18 (byte*) print_screen#6
|
||||
Alias (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#6 (byte*) print_sbyte_at::at#7 (byte*) print_sbyte_at::at#4 (byte*) print_sbyte_at::at#8
|
||||
Alias (signed byte) print_sbyte_at::b#4 = (signed byte) print_sbyte_at::b#7 (signed byte) print_sbyte_at::b#5 (signed byte) print_sbyte_at::b#9 (signed byte) print_sbyte_at::b#8
|
||||
Alias (signed byte) print_sbyte_at::b#0 = (signed byte~) print_sbyte_at::$6
|
||||
Alias (byte) print_byte_at::b#0 = (byte~) print_sbyte_at::$1
|
||||
Alias (byte*) print_byte_at::at#0 = (byte*~) print_sbyte_at::$2
|
||||
Alias (byte*) print_screen#0 = (byte*) print_screen#8 (byte*) print_screen#7 (byte*) print_screen#6 (byte*) print_screen#5
|
||||
Alias (byte) print_byte_at::b#1 = (byte) print_byte_at::b#2
|
||||
Alias (byte*) print_byte_at::at#1 = (byte*) print_byte_at::at#2
|
||||
Alias (byte*) print_char_at::at#3 = (byte*~) print_byte_at::$3
|
||||
Alias (byte*) print_line_cursor#1 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_char_cursor#1 (byte*) print_line_cursor#8 (byte*) print_char_cursor#8 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2
|
||||
Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#9
|
||||
Alias (byte*) print_char_cursor#3 = (byte*) print_char_cursor#9
|
||||
Alias (byte*) main::at#0 = (byte*~) main::$1
|
||||
Alias (byte*) main::at#4 = (byte*) main::at#5
|
||||
Alias (byte) main::k#2 = (byte) main::k#3
|
||||
Alias (byte*) main::at_line#3 = (byte*) main::at_line#5 (byte*) main::at_line#7
|
||||
Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#31
|
||||
Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#30 (byte*) print_char_cursor#31
|
||||
Alias (byte*) main::at#2 = (byte*) main::at_line#1 (byte*) main::at#9 (byte*) main::at_line#10
|
||||
Alias (byte) main::i#2 = (byte) main::i#6
|
||||
Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#28
|
||||
Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#28
|
||||
Alias (signed byte) fmul8::return#0 = (signed byte) fmul8::return#3
|
||||
Alias (byte*) main::at#3 = (byte*) main::at#7 (byte*) main::at#8
|
||||
Alias (byte) main::j#2 = (byte) main::j#4 (byte) main::j#3
|
||||
Alias (byte) main::i#3 = (byte) main::i#7 (byte) main::i#5 (byte) main::i#4
|
||||
Alias (byte*) main::at_line#4 = (byte*) main::at_line#8 (byte*) main::at_line#9 (byte*) main::at_line#6
|
||||
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#26 (byte*) print_line_cursor#19 (byte*) print_line_cursor#15 (byte*) print_line_cursor#4
|
||||
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#26 (byte*) print_char_cursor#19 (byte*) print_char_cursor#15 (byte*) print_char_cursor#4
|
||||
Alias (signed byte) main::r#0 = (signed byte~) main::$5
|
||||
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5
|
||||
Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#5
|
||||
Alias (byte*) init_screen::COLS#2 = (byte*) init_screen::COLS#4
|
||||
Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#23
|
||||
Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#23
|
||||
Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#17 (byte*) print_line_cursor#6
|
||||
Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#17 (byte*) print_char_cursor#6
|
||||
Alias (signed byte) fmul8::return#1 = (signed byte) fmul8::return#4 (signed byte) fmul8::return#2
|
||||
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#7
|
||||
Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) print_line_cursor#1
|
||||
Self Phi Eliminated (byte*) print_screen#2
|
||||
Self Phi Eliminated (byte*) main::at_line#3
|
||||
Self Phi Eliminated (byte*) print_line_cursor#29
|
||||
Self Phi Eliminated (byte*) print_char_cursor#29
|
||||
Self Phi Eliminated (byte) main::i#3
|
||||
Self Phi Eliminated (byte*) main::at_line#4
|
||||
Self Phi Eliminated (byte*) print_line_cursor#10
|
||||
Self Phi Eliminated (byte*) print_char_cursor#10
|
||||
Self Phi Eliminated (byte*) init_screen::COLS#2
|
||||
Self Phi Eliminated (byte*) print_line_cursor#20
|
||||
Self Phi Eliminated (byte*) print_char_cursor#20
|
||||
Self Phi Eliminated (byte*) print_line_cursor#12
|
||||
Self Phi Eliminated (byte*) print_char_cursor#12
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) print_byte_at::b#1 (byte) print_byte_at::b#0
|
||||
Redundant Phi (byte*) print_byte_at::at#1 (byte*) print_byte_at::at#0
|
||||
Redundant Phi (byte*) print_screen#1 (byte*) print_screen#4
|
||||
Redundant Phi (byte*) print_line_cursor#1 (byte*) print_screen#1
|
||||
Redundant Phi (byte*) print_line_cursor#14 (byte*) print_line_cursor#0
|
||||
Redundant Phi (byte*) print_char_cursor#14 (byte*) print_line_cursor#0
|
||||
Redundant Phi (byte*) print_screen#5 (byte*) print_line_cursor#0
|
||||
Redundant Phi (byte*) print_line_cursor#3 (byte*) print_line_cursor#12
|
||||
Redundant Phi (byte*) print_char_cursor#3 (byte*) print_char_cursor#12
|
||||
Redundant Phi (byte*) print_screen#1 (byte*) print_screen#3
|
||||
Redundant Phi (byte*) print_screen#2 (byte*) print_screen#1
|
||||
Redundant Phi (byte*) print_screen#4 (byte*) print_screen#0
|
||||
Redundant Phi (byte*) main::at_line#3 (byte*) main::at_line#0
|
||||
Redundant Phi (byte*) print_line_cursor#29 (byte*) print_line_cursor#3
|
||||
Redundant Phi (byte*) print_char_cursor#29 (byte*) print_char_cursor#3
|
||||
Redundant Phi (byte) main::i#3 (byte) main::i#2
|
||||
Redundant Phi (byte*) main::at_line#4 (byte*) main::at#2
|
||||
Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#27
|
||||
Redundant Phi (byte*) print_char_cursor#10 (byte*) print_char_cursor#27
|
||||
Redundant Phi (byte*) print_screen#4 (byte*) print_screen#5
|
||||
Redundant Phi (byte*) print_line_cursor#16 (byte*) print_line_cursor#14
|
||||
Redundant Phi (byte*) print_char_cursor#16 (byte*) print_char_cursor#14
|
||||
Redundant Phi (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
|
||||
Redundant Phi (byte*) print_char_cursor#11 (byte*) print_line_cursor#1
|
||||
Redundant Phi (byte*) print_screen#3 (byte*) print_screen#4
|
||||
Redundant Phi (byte*) init_screen::COLS#2 (byte*) init_screen::COLS#0
|
||||
Redundant Phi (byte*) print_line_cursor#20 (byte*) print_line_cursor#11
|
||||
Redundant Phi (byte*) print_char_cursor#20 (byte*) print_char_cursor#11
|
||||
Redundant Phi (byte*) print_line_cursor#12 (byte*) print_line_cursor#20
|
||||
Redundant Phi (byte*) print_char_cursor#12 (byte*) print_char_cursor#20
|
||||
Redundant Phi (signed byte) fmul8::a#1 (signed byte) fmul8::a#0
|
||||
Redundant Phi (signed byte) fmul8::b#1 (signed byte) fmul8::b#0
|
||||
Redundant Phi (byte*) print_line_cursor#13 (byte*) print_line_cursor#10
|
||||
Redundant Phi (byte*) print_char_cursor#13 (byte*) print_char_cursor#10
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) print_sbyte_at::$0 [5] if((signed byte) print_sbyte_at::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1
|
||||
Simple Condition (bool~) print_cls::$1 [49] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||
Simple Condition (bool~) main::$3 [80] if((byte) main::k#1!=rangelast(0,8)) goto main::@1
|
||||
Simple Condition (bool~) main::$7 [106] if((byte) main::j#1!=rangelast(0,8)) goto main::@4
|
||||
Simple Condition (bool~) main::$8 [110] if((byte) main::i#1!=rangelast(0,8)) goto main::@3
|
||||
Simple Condition (bool~) init_screen::$1 [127] if((byte) init_screen::l#1!=rangelast(0,$27)) goto init_screen::@1
|
||||
Simple Condition (bool~) init_screen::$2 [138] if((byte) init_screen::m#1!=rangelast(0,$18)) goto init_screen::@3
|
||||
Simple Condition (bool~) print_sbyte_at::$0 [3] if((signed byte) print_sbyte_at::b#4<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1
|
||||
Simple Condition (bool~) print_cls::$1 [47] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||
Simple Condition (bool~) main::$3 [69] if((byte) main::k#1!=rangelast(0,8)) goto main::@1
|
||||
Simple Condition (bool~) main::$7 [95] if((byte) main::j#1!=rangelast(0,8)) goto main::@4
|
||||
Simple Condition (bool~) main::$8 [99] if((byte) main::i#1!=rangelast(0,8)) goto main::@3
|
||||
Simple Condition (bool~) init_screen::$1 [110] if((byte) init_screen::l#1!=rangelast(0,$27)) goto init_screen::@1
|
||||
Simple Condition (bool~) init_screen::$2 [121] if((byte) init_screen::m#1!=rangelast(0,$18)) goto init_screen::@3
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) print_line_cursor#0 = ((byte*))$400
|
||||
Constant (const byte*) print_screen#0 = ((byte*))$400
|
||||
Constant (const byte) print_char_at::ch#0 = '-'
|
||||
Constant (const byte) print_char_at::ch#1 = ' '
|
||||
Constant (const byte[]) print_hextab#0 = $4
|
||||
@ -743,12 +566,11 @@ Constant (const signed byte*) cp#0 = ((signed byte*))$ff
|
||||
Constant (const byte*) mulf_sqr1#0 = ((byte*))$2000
|
||||
Constant (const byte*) mulf_sqr2#0 = ((byte*))$2200
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) print_cls::sc#0 = print_line_cursor#0
|
||||
Constant (const byte*) print_cls::$0 = print_line_cursor#0+$3e8
|
||||
Constant (const byte*) print_cls::sc#0 = print_screen#0
|
||||
Constant (const byte*) print_cls::$0 = print_screen#0+$3e8
|
||||
Constant (const signed byte[]) vals#0 = { $0, $1, $2, $3, 0, $10, $20, $40, $5f }
|
||||
Constant (const byte*) main::at#0 = main::at_line#0+4
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Eliminating Noop Cast (byte) print_byte_at::b#0 ← ((byte)) (signed byte) print_sbyte_at::b#6
|
||||
Successful SSA optimization Pass2NopCastElimination
|
||||
Resolved ranged next value main::k#1 ← ++ main::k#2 to ++
|
||||
@ -763,7 +585,6 @@ Resolved ranged next value init_screen::m#1 ← ++ init_screen::m#2 to ++
|
||||
Resolved ranged comparison value if(init_screen::m#1!=rangelast(0,$18)) goto init_screen::@3 to (byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
Culled Empty Block (label) print_sbyte_at::@6
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) print_cls::@2
|
||||
Culled Empty Block (label) @19
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@2
|
||||
@ -771,7 +592,6 @@ Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) init_screen::@5
|
||||
Culled Empty Block (label) init_screen::@2
|
||||
Culled Empty Block (label) @21
|
||||
Culled Empty Block (label) @23
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inlining constant with var siblings (const byte) print_char_at::ch#0
|
||||
Inlining constant with var siblings (const byte) print_char_at::ch#1
|
||||
@ -784,9 +604,9 @@ Inlining constant with var siblings (const byte*) main::at#0
|
||||
Inlining constant with var siblings (const byte*) init_screen::COLS#0
|
||||
Inlining constant with var siblings (const byte) init_screen::l#0
|
||||
Inlining constant with var siblings (const byte) init_screen::m#0
|
||||
Constant inlined print_cls::$0 = (const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8
|
||||
Constant inlined print_cls::$0 = (const byte*) print_screen#0+(word/signed word/dword/signed dword) $3e8
|
||||
Constant inlined $0 = -(byte/signed byte/word/signed word/dword/signed dword) $5f
|
||||
Constant inlined print_cls::sc#0 = (const byte*) print_line_cursor#0
|
||||
Constant inlined print_cls::sc#0 = (const byte*) print_screen#0
|
||||
Constant inlined $1 = -(byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
Constant inlined main::at#0 = ((byte*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
Constant inlined $2 = -(byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
@ -1024,10 +844,10 @@ print_cls: scope:[print_cls] from init_screen
|
||||
[78] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[79] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[79] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[80] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[81] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
|
||||
[82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[83] return
|
||||
@ -1097,13 +917,11 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte) print_char_at::ch#2 2.0
|
||||
(byte) print_char_at::ch#3 4.0
|
||||
(byte) print_char_at::ch#4 6.0
|
||||
(byte*) print_char_cursor
|
||||
(void()) print_cls()
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 16.5
|
||||
(byte*) print_cls::sc#2 16.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
|
||||
(byte*) print_sbyte_at::at
|
||||
(byte*) print_sbyte_at::at#0 22.0
|
||||
@ -1203,7 +1021,7 @@ INITIAL ASM
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.label print_line_cursor = $400
|
||||
.label print_screen = $400
|
||||
// Pointers to a, b and c=a*b
|
||||
.label ap = $fd
|
||||
.label bp = $fe
|
||||
@ -1695,10 +1513,10 @@ print_cls: {
|
||||
.label sc = $15
|
||||
//SEG154 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
|
||||
b1_from_print_cls:
|
||||
//SEG155 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_line_cursor
|
||||
//SEG155 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_screen
|
||||
sta sc
|
||||
lda #>print_line_cursor
|
||||
lda #>print_screen
|
||||
sta sc+1
|
||||
jmp b1
|
||||
//SEG156 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
|
||||
@ -1716,12 +1534,12 @@ print_cls: {
|
||||
bne !+
|
||||
inc sc+1
|
||||
!:
|
||||
//SEG161 [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
//SEG161 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
lda sc+1
|
||||
cmp #>print_line_cursor+$3e8
|
||||
cmp #>print_screen+$3e8
|
||||
bne b1_from_b1
|
||||
lda sc
|
||||
cmp #<print_line_cursor+$3e8
|
||||
cmp #<print_screen+$3e8
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG162 print_cls::@return
|
||||
@ -1786,7 +1604,7 @@ Statement [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed wor
|
||||
Statement [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:3::init_screen:6 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a
|
||||
Statement [80] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Statement [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:3 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a
|
||||
Statement [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::k#2 main::at#1 ] ( main:3 [ main::k#2 main::at#1 ] ) always clobbers reg byte a
|
||||
Statement [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ main::i#2 main::at#2 ] ( main:3 [ main::i#2 main::at#2 ] ) always clobbers reg byte a
|
||||
@ -1817,7 +1635,7 @@ Statement [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed wor
|
||||
Statement [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:3::init_screen:6 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a
|
||||
Statement [80] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Statement [9] (byte*) print_sbyte_at::at#0 ← (byte*) main::at#4 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ( main:3 [ main::k#2 main::at#4 print_sbyte_at::b#1 print_sbyte_at::at#0 ] ) always clobbers reg byte a
|
||||
Statement [11] (byte*) main::at#1 ← (byte*) main::at#4 + (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::k#2 main::at#1 ] ( main:3 [ main::k#2 main::at#1 ] ) always clobbers reg byte a
|
||||
Statement [15] (byte*) main::at#2 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ main::i#2 main::at#2 ] ( main:3 [ main::i#2 main::at#2 ] ) always clobbers reg byte a
|
||||
@ -1847,7 +1665,7 @@ Statement [72] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed wor
|
||||
Statement [73] *((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) init_screen::WHITE#0 [ init_screen::COLS#3 init_screen::m#2 ] ( main:3::init_screen:6 [ init_screen::COLS#3 init_screen::m#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [74] (byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ init_screen::m#2 init_screen::COLS#1 ] ( main:3::init_screen:6 [ init_screen::m#2 init_screen::COLS#1 ] ) always clobbers reg byte a
|
||||
Statement [80] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Statement [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:3::init_screen:6::print_cls:64 [ print_cls::sc#1 ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ main::k#2 main::k#1 ] : zp ZP_BYTE:2 , reg byte x ,
|
||||
Potential registers zp ZP_WORD:3 [ main::at#4 main::at#1 ] : zp ZP_WORD:3 ,
|
||||
Potential registers zp ZP_WORD:5 [ main::at_line#2 main::at#2 ] : zp ZP_WORD:5 ,
|
||||
@ -1925,7 +1743,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.label print_line_cursor = $400
|
||||
.label print_screen = $400
|
||||
// Pointers to a, b and c=a*b
|
||||
.label ap = $fd
|
||||
.label bp = $fe
|
||||
@ -2369,10 +2187,10 @@ print_cls: {
|
||||
.label sc = 2
|
||||
//SEG154 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
|
||||
b1_from_print_cls:
|
||||
//SEG155 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_line_cursor
|
||||
//SEG155 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_screen
|
||||
sta sc
|
||||
lda #>print_line_cursor
|
||||
lda #>print_screen
|
||||
sta sc+1
|
||||
jmp b1
|
||||
//SEG156 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
|
||||
@ -2390,12 +2208,12 @@ print_cls: {
|
||||
bne !+
|
||||
inc sc+1
|
||||
!:
|
||||
//SEG161 [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
//SEG161 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
lda sc+1
|
||||
cmp #>print_line_cursor+$3e8
|
||||
cmp #>print_screen+$3e8
|
||||
bne b1_from_b1
|
||||
lda sc
|
||||
cmp #<print_line_cursor+$3e8
|
||||
cmp #<print_screen+$3e8
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG162 print_cls::@return
|
||||
@ -2603,7 +2421,6 @@ FINAL SYMBOL TABLE
|
||||
(byte) print_char_at::ch#2 ch zp ZP_BYTE:11 2.0
|
||||
(byte) print_char_at::ch#3 ch zp ZP_BYTE:11 4.0
|
||||
(byte) print_char_at::ch#4 ch zp ZP_BYTE:11 6.0
|
||||
(byte*) print_char_cursor
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
@ -2612,8 +2429,6 @@ FINAL SYMBOL TABLE
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte[]) print_hextab
|
||||
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
|
||||
(byte*) print_line_cursor
|
||||
(const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
|
||||
(label) print_sbyte_at::@1
|
||||
(label) print_sbyte_at::@2
|
||||
@ -2633,6 +2448,7 @@ FINAL SYMBOL TABLE
|
||||
(signed byte) print_sbyte_at::b#4 b zp ZP_BYTE:10 21.499999999999993
|
||||
(signed byte) print_sbyte_at::b#6 b zp ZP_BYTE:10 0.6666666666666666
|
||||
(byte*) print_screen
|
||||
(const byte*) print_screen#0 print_screen = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(signed byte[]) vals
|
||||
(const signed byte[]) vals#0 vals = { -(byte/signed byte/word/signed word/dword/signed dword) $5f, -(byte/signed byte/word/signed word/dword/signed dword) $40, -(byte/signed byte/word/signed word/dword/signed dword) $20, -(byte/signed byte/word/signed word/dword/signed dword) $10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) $10, (byte/signed byte/word/signed word/dword/signed dword) $20, (byte/signed byte/word/signed word/dword/signed dword) $40, (byte/signed byte/word/signed word/dword/signed dword) $5f }
|
||||
|
||||
@ -2671,7 +2487,7 @@ Score: 10516
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.label print_line_cursor = $400
|
||||
.label print_screen = $400
|
||||
// Pointers to a, b and c=a*b
|
||||
.label ap = $fd
|
||||
.label bp = $fe
|
||||
@ -3043,10 +2859,10 @@ init_screen: {
|
||||
print_cls: {
|
||||
.label sc = 2
|
||||
//SEG154 [79] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1]
|
||||
//SEG155 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_line_cursor#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_line_cursor
|
||||
//SEG155 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1
|
||||
lda #<print_screen
|
||||
sta sc
|
||||
lda #>print_line_cursor
|
||||
lda #>print_screen
|
||||
sta sc+1
|
||||
//SEG156 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1]
|
||||
//SEG157 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy
|
||||
@ -3061,12 +2877,12 @@ print_cls: {
|
||||
bne !+
|
||||
inc sc+1
|
||||
!:
|
||||
//SEG161 [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
//SEG161 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1
|
||||
lda sc+1
|
||||
cmp #>print_line_cursor+$3e8
|
||||
cmp #>print_screen+$3e8
|
||||
bne b1
|
||||
lda sc
|
||||
cmp #<print_line_cursor+$3e8
|
||||
cmp #<print_screen+$3e8
|
||||
bne b1
|
||||
//SEG162 print_cls::@return
|
||||
//SEG163 [83] return
|
||||
|
@ -84,7 +84,6 @@
|
||||
(byte) print_char_at::ch#2 ch zp ZP_BYTE:11 2.0
|
||||
(byte) print_char_at::ch#3 ch zp ZP_BYTE:11 4.0
|
||||
(byte) print_char_at::ch#4 ch zp ZP_BYTE:11 6.0
|
||||
(byte*) print_char_cursor
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
@ -93,8 +92,6 @@
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte[]) print_hextab
|
||||
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
|
||||
(byte*) print_line_cursor
|
||||
(const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at)
|
||||
(label) print_sbyte_at::@1
|
||||
(label) print_sbyte_at::@2
|
||||
@ -114,6 +111,7 @@
|
||||
(signed byte) print_sbyte_at::b#4 b zp ZP_BYTE:10 21.499999999999993
|
||||
(signed byte) print_sbyte_at::b#6 b zp ZP_BYTE:10 0.6666666666666666
|
||||
(byte*) print_screen
|
||||
(const byte*) print_screen#0 print_screen = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(signed byte[]) vals
|
||||
(const signed byte[]) vals#0 vals = { -(byte/signed byte/word/signed word/dword/signed dword) $5f, -(byte/signed byte/word/signed word/dword/signed dword) $40, -(byte/signed byte/word/signed word/dword/signed dword) $20, -(byte/signed byte/word/signed word/dword/signed dword) $10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) $10, (byte/signed byte/word/signed word/dword/signed dword) $20, (byte/signed byte/word/signed word/dword/signed dword) $40, (byte/signed byte/word/signed word/dword/signed dword) $5f }
|
||||
|
||||
|
@ -8,99 +8,17 @@ Inlined call (byte~) main::$9 ← call toD018 (byte*) SCREEN2 (byte*) CHARSET
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(word*) SID_VOICE3_FREQ#0 ← ((word*)) (word/dword/signed dword) $d40e
|
||||
(byte*) SID_VOICE3_FREQ_LOW#0 ← ((byte*)) (word/dword/signed dword) $d40e
|
||||
(byte*) SID_VOICE3_FREQ_HIGH#0 ← ((byte*)) (word/dword/signed dword) $d40f
|
||||
(byte*) SID_VOICE3_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d412
|
||||
(byte) SID_CONTROL_NOISE#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) SID_CONTROL_PULSE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) SID_CONTROL_SAWTOOTH#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) SID_CONTROL_TRIANGLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) SID_CONTROL_TEST#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) SID_CONTROL_RING#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) SID_CONTROL_SYNC#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) SID_CONTROL_GATE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) SID_VOICE3_OSC#0 ← ((byte*)) (word/dword/signed dword) $d41b
|
||||
to:@6
|
||||
sid_rnd_init: scope:[sid_rnd_init] from main::@12
|
||||
@ -452,194 +370,30 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) BUFFER
|
||||
(byte*) BUFFER#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CHARSET
|
||||
(byte*) CHARSET#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN1
|
||||
(byte*) SCREEN1#0
|
||||
(byte*) SCREEN2
|
||||
(byte*) SCREEN2#0
|
||||
(byte) SID_CONTROL_GATE
|
||||
(byte) SID_CONTROL_GATE#0
|
||||
(byte) SID_CONTROL_NOISE
|
||||
(byte) SID_CONTROL_NOISE#0
|
||||
(byte) SID_CONTROL_PULSE
|
||||
(byte) SID_CONTROL_PULSE#0
|
||||
(byte) SID_CONTROL_RING
|
||||
(byte) SID_CONTROL_RING#0
|
||||
(byte) SID_CONTROL_SAWTOOTH
|
||||
(byte) SID_CONTROL_SAWTOOTH#0
|
||||
(byte) SID_CONTROL_SYNC
|
||||
(byte) SID_CONTROL_SYNC#0
|
||||
(byte) SID_CONTROL_TEST
|
||||
(byte) SID_CONTROL_TEST#0
|
||||
(byte) SID_CONTROL_TRIANGLE
|
||||
(byte) SID_CONTROL_TRIANGLE#0
|
||||
(byte*) SID_VOICE3_CONTROL
|
||||
(byte*) SID_VOICE3_CONTROL#0
|
||||
(word*) SID_VOICE3_FREQ
|
||||
(word*) SID_VOICE3_FREQ#0
|
||||
(byte*) SID_VOICE3_FREQ_HIGH
|
||||
(byte*) SID_VOICE3_FREQ_HIGH#0
|
||||
(byte*) SID_VOICE3_FREQ_LOW
|
||||
(byte*) SID_VOICE3_FREQ_LOW#0
|
||||
(byte*) SID_VOICE3_OSC
|
||||
(byte*) SID_VOICE3_OSC#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
|
||||
@ -925,8 +679,8 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) main::@14
|
||||
Culled Empty Block (label) @11
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [180] (bool~) fire::$14 ← (byte) fire::c#0 <= (byte/signed byte/word/signed word/dword/signed dword) 2 from [179] (bool~) fire::$13 ← (byte) fire::c#0 > (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Inversing boolean not [245] (bool~) makecharset::$9 ← (byte) makecharset::bc#1 <= (byte/signed byte/word/signed word/dword/signed dword) $3f from [244] (bool~) makecharset::$8 ← (byte) makecharset::bc#1 > (byte/signed byte/word/signed word/dword/signed dword) $3f
|
||||
Inversing boolean not [98] (bool~) fire::$14 ← (byte) fire::c#0 <= (byte/signed byte/word/signed word/dword/signed dword) 2 from [97] (bool~) fire::$13 ← (byte) fire::c#0 > (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Inversing boolean not [163] (bool~) makecharset::$9 ← (byte) makecharset::bc#1 <= (byte/signed byte/word/signed word/dword/signed dword) $3f from [162] (bool~) makecharset::$8 ← (byte) makecharset::bc#1 > (byte/signed byte/word/signed word/dword/signed dword) $3f
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) sid_rnd::return#0 = (byte) sid_rnd::return#3 (byte) sid_rnd::return#1
|
||||
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1
|
||||
@ -987,108 +741,26 @@ Redundant Phi (byte) makecharset::i#2 (byte) makecharset::i#6
|
||||
Redundant Phi (byte*) makecharset::charset#11 (byte*) makecharset::charset#9
|
||||
Redundant Phi (byte) fillscreen::fill#4 (byte) fillscreen::fill#5
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) fire::$6 [170] if((byte*) fire::buffer#4!=(byte*~) fire::$5) goto fire::@2
|
||||
Simple Condition (bool~) fire::$14 [181] if((byte) fire::c#0<=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fire::@4
|
||||
Simple Condition (bool~) fire::$17 [200] if((byte*) fire::buffer#10!=(byte*~) fire::$16) goto fire::@10
|
||||
Simple Condition (bool~) makecharset::$2 [222] if((byte*) makecharset::font#1!=(byte*~) makecharset::$1) goto makecharset::@1
|
||||
Simple Condition (bool~) makecharset::$7 [233] if((byte*) makecharset::font1#1!=(byte*~) makecharset::$6) goto makecharset::@3
|
||||
Simple Condition (bool~) makecharset::$9 [246] if((byte) makecharset::bc#1<=(byte/signed byte/word/signed word/dword/signed dword) $3f) goto makecharset::@8
|
||||
Simple Condition (bool~) makecharset::$14 [250] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@7
|
||||
Simple Condition (bool~) makecharset::$20 [267] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@6
|
||||
Simple Condition (bool~) makecharset::$21 [271] if((byte) makecharset::c#1<(byte/signed byte/word/signed word/dword/signed dword) $40) goto makecharset::@5
|
||||
Simple Condition (bool~) fillscreen::$0 [280] if((word) fillscreen::i#1!=rangelast(0,$3e7)) goto fillscreen::@1
|
||||
Simple Condition (bool~) fire::$6 [88] if((byte*) fire::buffer#4!=(byte*~) fire::$5) goto fire::@2
|
||||
Simple Condition (bool~) fire::$14 [99] if((byte) fire::c#0<=(byte/signed byte/word/signed word/dword/signed dword) 2) goto fire::@4
|
||||
Simple Condition (bool~) fire::$17 [118] if((byte*) fire::buffer#10!=(byte*~) fire::$16) goto fire::@10
|
||||
Simple Condition (bool~) makecharset::$2 [140] if((byte*) makecharset::font#1!=(byte*~) makecharset::$1) goto makecharset::@1
|
||||
Simple Condition (bool~) makecharset::$7 [151] if((byte*) makecharset::font1#1!=(byte*~) makecharset::$6) goto makecharset::@3
|
||||
Simple Condition (bool~) makecharset::$9 [164] if((byte) makecharset::bc#1<=(byte/signed byte/word/signed word/dword/signed dword) $3f) goto makecharset::@8
|
||||
Simple Condition (bool~) makecharset::$14 [168] if((byte) makecharset::ii#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@7
|
||||
Simple Condition (bool~) makecharset::$20 [185] if((byte) makecharset::i#1<(byte/signed byte/word/signed word/dword/signed dword) 8) goto makecharset::@6
|
||||
Simple Condition (bool~) makecharset::$21 [189] if((byte) makecharset::c#1<(byte/signed byte/word/signed word/dword/signed dword) $40) goto makecharset::@5
|
||||
Simple Condition (bool~) fillscreen::$0 [198] if((word) fillscreen::i#1!=rangelast(0,$3e7)) goto fillscreen::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const word*) SID_VOICE3_FREQ#0 = ((word*))$d40e
|
||||
Constant (const byte*) SID_VOICE3_FREQ_LOW#0 = ((byte*))$d40e
|
||||
Constant (const byte*) SID_VOICE3_FREQ_HIGH#0 = ((byte*))$d40f
|
||||
Constant (const byte*) SID_VOICE3_CONTROL#0 = ((byte*))$d412
|
||||
Constant (const byte) SID_CONTROL_NOISE#0 = $80
|
||||
Constant (const byte) SID_CONTROL_PULSE#0 = $40
|
||||
Constant (const byte) SID_CONTROL_SAWTOOTH#0 = $20
|
||||
Constant (const byte) SID_CONTROL_TRIANGLE#0 = $10
|
||||
Constant (const byte) SID_CONTROL_TEST#0 = 8
|
||||
Constant (const byte) SID_CONTROL_RING#0 = 4
|
||||
Constant (const byte) SID_CONTROL_SYNC#0 = 2
|
||||
Constant (const byte) SID_CONTROL_GATE#0 = 1
|
||||
Constant (const byte*) SID_VOICE3_OSC#0 = ((byte*))$d41b
|
||||
Constant (const byte*) SCREEN1#0 = ((byte*))$3800
|
||||
Constant (const byte*) SCREEN2#0 = ((byte*))$3c00
|
||||
@ -1160,7 +832,6 @@ Constant (const byte) main::toD0182_return#0 = main::toD0182_$3#0|main::toD0182_
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [14] if(true) goto main::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Resolved ranged next value fillscreen::i#1 ← ++ fillscreen::i#2 to ++
|
||||
@ -1554,100 +1225,18 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) BUFFER
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARSET
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN1
|
||||
(byte*) SCREEN2
|
||||
(byte) SID_CONTROL_GATE
|
||||
(byte) SID_CONTROL_NOISE
|
||||
(byte) SID_CONTROL_PULSE
|
||||
(byte) SID_CONTROL_RING
|
||||
(byte) SID_CONTROL_SAWTOOTH
|
||||
(byte) SID_CONTROL_SYNC
|
||||
(byte) SID_CONTROL_TEST
|
||||
(byte) SID_CONTROL_TRIANGLE
|
||||
(byte*) SID_VOICE3_CONTROL
|
||||
(word*) SID_VOICE3_FREQ
|
||||
(byte*) SID_VOICE3_FREQ_HIGH
|
||||
(byte*) SID_VOICE3_FREQ_LOW
|
||||
(byte*) SID_VOICE3_OSC
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
|
||||
(byte) fillscreen::fill
|
||||
@ -3478,112 +3067,30 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) BUFFER
|
||||
(const byte*) BUFFER#0 BUFFER = ((byte*))(word/signed word/dword/signed dword) $4000
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARSET
|
||||
(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word/dword/signed dword) $3000
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) $d800
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN1
|
||||
(const byte*) SCREEN1#0 SCREEN1 = ((byte*))(word/signed word/dword/signed dword) $3800
|
||||
(byte*) SCREEN2
|
||||
(const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word/dword/signed dword) $3c00
|
||||
(byte) SID_CONTROL_GATE
|
||||
(byte) SID_CONTROL_NOISE
|
||||
(const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) SID_CONTROL_PULSE
|
||||
(byte) SID_CONTROL_RING
|
||||
(byte) SID_CONTROL_SAWTOOTH
|
||||
(byte) SID_CONTROL_SYNC
|
||||
(byte) SID_CONTROL_TEST
|
||||
(byte) SID_CONTROL_TRIANGLE
|
||||
(byte*) SID_VOICE3_CONTROL
|
||||
(const byte*) SID_VOICE3_CONTROL#0 SID_VOICE3_CONTROL = ((byte*))(word/dword/signed dword) $d412
|
||||
(word*) SID_VOICE3_FREQ
|
||||
(const word*) SID_VOICE3_FREQ#0 SID_VOICE3_FREQ = ((word*))(word/dword/signed dword) $d40e
|
||||
(byte*) SID_VOICE3_FREQ_HIGH
|
||||
(byte*) SID_VOICE3_FREQ_LOW
|
||||
(byte*) SID_VOICE3_OSC
|
||||
(const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) $d41b
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(const byte) YELLOW#0 YELLOW = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
|
||||
|
@ -3,112 +3,30 @@
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) BUFFER
|
||||
(const byte*) BUFFER#0 BUFFER = ((byte*))(word/signed word/dword/signed dword) $4000
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARSET
|
||||
(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word/dword/signed dword) $3000
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) $d800
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN1
|
||||
(const byte*) SCREEN1#0 SCREEN1 = ((byte*))(word/signed word/dword/signed dword) $3800
|
||||
(byte*) SCREEN2
|
||||
(const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word/dword/signed dword) $3c00
|
||||
(byte) SID_CONTROL_GATE
|
||||
(byte) SID_CONTROL_NOISE
|
||||
(const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) SID_CONTROL_PULSE
|
||||
(byte) SID_CONTROL_RING
|
||||
(byte) SID_CONTROL_SAWTOOTH
|
||||
(byte) SID_CONTROL_SYNC
|
||||
(byte) SID_CONTROL_TEST
|
||||
(byte) SID_CONTROL_TRIANGLE
|
||||
(byte*) SID_VOICE3_CONTROL
|
||||
(const byte*) SID_VOICE3_CONTROL#0 SID_VOICE3_CONTROL = ((byte*))(word/dword/signed dword) $d412
|
||||
(word*) SID_VOICE3_FREQ
|
||||
(const word*) SID_VOICE3_FREQ#0 SID_VOICE3_FREQ = ((word*))(word/dword/signed dword) $d40e
|
||||
(byte*) SID_VOICE3_FREQ_HIGH
|
||||
(byte*) SID_VOICE3_FREQ_LOW
|
||||
(byte*) SID_VOICE3_OSC
|
||||
(const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) $d41b
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(const byte) YELLOW#0 YELLOW = (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
|
||||
|
@ -4,7 +4,7 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
||||
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
||||
to:@12
|
||||
to:@20
|
||||
print_str: scope:[print_str] from main
|
||||
(byte*) print_char_cursor#21 ← phi( main/(byte*) print_char_cursor#19 )
|
||||
(byte*) print_str::str#4 ← phi( main/(byte*) print_str::str#1 )
|
||||
@ -50,11 +50,6 @@ print_ln::@return: scope:[print_ln] from print_ln::@2
|
||||
(byte*) print_char_cursor#4 ← (byte*) print_char_cursor#12
|
||||
return
|
||||
to:@return
|
||||
@12: scope:[] from @begin
|
||||
(byte*) print_line_cursor#16 ← phi( @begin/(byte*) print_line_cursor#0 )
|
||||
(byte*) print_char_cursor#22 ← phi( @begin/(byte*) print_char_cursor#0 )
|
||||
(byte[]) print_hextab#0 ← (const string) $0
|
||||
to:@20
|
||||
main: scope:[main] from @20
|
||||
(byte*) print_line_cursor#15 ← phi( @20/(byte*) print_line_cursor#14 )
|
||||
(byte*) print_char_cursor#19 ← phi( @20/(byte*) print_char_cursor#20 )
|
||||
@ -80,9 +75,9 @@ main::@return: scope:[main] from main::@2
|
||||
(byte*) print_line_cursor#4 ← (byte*) print_line_cursor#10
|
||||
return
|
||||
to:@return
|
||||
@20: scope:[] from @12
|
||||
(byte*) print_line_cursor#14 ← phi( @12/(byte*) print_line_cursor#16 )
|
||||
(byte*) print_char_cursor#20 ← phi( @12/(byte*) print_char_cursor#22 )
|
||||
@20: scope:[] from @begin
|
||||
(byte*) print_line_cursor#14 ← phi( @begin/(byte*) print_line_cursor#0 )
|
||||
(byte*) print_char_cursor#20 ← phi( @begin/(byte*) print_char_cursor#0 )
|
||||
call main
|
||||
to:@21
|
||||
@21: scope:[] from @20
|
||||
@ -94,8 +89,6 @@ main::@return: scope:[main] from main::@2
|
||||
@end: scope:[] from @21
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(const string) $0 = (string) "0123456789abcdef"
|
||||
(label) @12
|
||||
(label) @20
|
||||
(label) @21
|
||||
(label) @begin
|
||||
@ -121,7 +114,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_char_cursor#2
|
||||
(byte*) print_char_cursor#20
|
||||
(byte*) print_char_cursor#21
|
||||
(byte*) print_char_cursor#22
|
||||
(byte*) print_char_cursor#3
|
||||
(byte*) print_char_cursor#4
|
||||
(byte*) print_char_cursor#5
|
||||
@ -129,8 +121,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_char_cursor#7
|
||||
(byte*) print_char_cursor#8
|
||||
(byte*) print_char_cursor#9
|
||||
(byte[]) print_hextab
|
||||
(byte[]) print_hextab#0
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#0
|
||||
(byte*) print_line_cursor#1
|
||||
@ -140,7 +130,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_line_cursor#13
|
||||
(byte*) print_line_cursor#14
|
||||
(byte*) print_line_cursor#15
|
||||
(byte*) print_line_cursor#16
|
||||
(byte*) print_line_cursor#2
|
||||
(byte*) print_line_cursor#3
|
||||
(byte*) print_line_cursor#4
|
||||
@ -169,7 +158,7 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_str::str#3
|
||||
(byte*) print_str::str#4
|
||||
|
||||
Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#22 (byte*) print_line_cursor#16 (byte*) print_char_cursor#20 (byte*) print_line_cursor#14
|
||||
Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#20 (byte*) print_line_cursor#14
|
||||
Alias (byte*) print_str::str#2 = (byte*) print_str::str#3
|
||||
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#17 (byte*) print_char_cursor#2
|
||||
Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#7 (byte*) print_char_cursor#3 (byte*) print_line_cursor#8 (byte*) print_char_cursor#12 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4
|
||||
@ -199,13 +188,9 @@ Simple Condition (bool~) print_str::$0 [6] if(*((byte*) print_str::str#2)!=(byte
|
||||
Simple Condition (bool~) print_ln::$1 [19] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) print_char_cursor#0 = ((byte*))$400
|
||||
Constant (const byte[]) print_hextab#0 = $0
|
||||
Constant (const byte*) print_str::str#1 = main::str
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Culled Empty Block (label) print_ln::@2
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) @21
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
@ -227,9 +212,9 @@ Calls in [] to main:2
|
||||
Calls in [main] to print_str:5 print_ln:7
|
||||
|
||||
Created 3 initial phi equivalence classes
|
||||
Coalesced [14] print_line_cursor#17 ← print_line_cursor#1
|
||||
Coalesced [14] print_line_cursor#16 ← print_line_cursor#1
|
||||
Coalesced [22] print_str::str#5 ← print_str::str#0
|
||||
Coalesced [23] print_char_cursor#23 ← print_char_cursor#1
|
||||
Coalesced [23] print_char_cursor#22 ← print_char_cursor#1
|
||||
Coalesced down to 3 phi equivalence classes
|
||||
Culled Empty Block (label) print_ln::@3
|
||||
Renumbering block @20 to @1
|
||||
@ -296,7 +281,6 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#1 11.0
|
||||
(byte*) print_char_cursor#10 4.4
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 16.5
|
||||
(byte*) print_line_cursor#6 22.0
|
||||
@ -674,7 +658,6 @@ FINAL SYMBOL TABLE
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:4 11.0
|
||||
(byte*) print_char_cursor#10 print_char_cursor zp ZP_WORD:4 4.4
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:2 16.5
|
||||
(byte*) print_line_cursor#6 print_line_cursor zp ZP_WORD:2 22.0
|
||||
|
@ -8,7 +8,6 @@
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:4 11.0
|
||||
(byte*) print_char_cursor#10 print_char_cursor zp ZP_WORD:4 4.4
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:2 16.5
|
||||
(byte*) print_line_cursor#6 print_line_cursor zp ZP_WORD:2 22.0
|
||||
|
@ -4,85 +4,18 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte*) GHOST_BYTE#0 ← ((byte*)) (word/signed word/dword/signed dword) $3fff
|
||||
@ -139,166 +72,32 @@ SYMBOL TABLE SSA
|
||||
(label) @8
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte*) GHOST_BYTE
|
||||
(byte*) GHOST_BYTE#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
(byte/word/dword~) irq_bottom_1::$0
|
||||
(void()*~) irq_bottom_1::$1
|
||||
@ -312,85 +111,18 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
|
||||
|
||||
Culled Empty Block (label) @8
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const byte*) GHOST_BYTE#0 = ((byte*))$3fff
|
||||
Constant (const void()*) main::$0 = &irq_bottom_1
|
||||
Constant (const void()*) irq_bottom_1::$1 = &irq_bottom_2
|
||||
@ -398,7 +130,6 @@ Constant (const void()*) irq_bottom_2::$0 = &irq_bottom_1
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte/word/dword) irq_bottom_1::$0 = $ff^VIC_RSEL#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Culled Empty Block (label) @4
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Constant inlined irq_bottom_2::$0 = &interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
@ -467,86 +198,19 @@ irq_bottom_1::@return: scope:[irq_bottom_1] from irq_bottom_1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte*) GHOST_BYTE
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
|
||||
(void()) main()
|
||||
@ -905,99 +569,32 @@ FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) $dc0d
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte*) GHOST_BYTE
|
||||
(const byte*) GHOST_BYTE#0 GHOST_BYTE = ((byte*))(word/signed word/dword/signed dword) $3fff
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) $d01a
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) $d019
|
||||
(void()**) KERNEL_IRQ
|
||||
(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) $314
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) YELLOW
|
||||
interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
(label) irq_bottom_1::@return
|
||||
interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
|
||||
|
@ -1,99 +1,32 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) $dc0d
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte*) GHOST_BYTE
|
||||
(const byte*) GHOST_BYTE#0 GHOST_BYTE = ((byte*))(word/signed word/dword/signed dword) $3fff
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) $d01a
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) $d019
|
||||
(void()**) KERNEL_IRQ
|
||||
(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) $314
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) YELLOW
|
||||
interrupt(KERNEL_MIN)(void()) irq_bottom_1()
|
||||
(label) irq_bottom_1::@return
|
||||
interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2()
|
||||
|
@ -9,85 +9,19 @@ Inlined call (byte~) loop::$7 ← call plexFreeNextYpos
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte) PLEX_COUNT#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
@ -689,94 +623,14 @@ SYMBOL TABLE SSA
|
||||
(label) @9
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte) PLEX_COUNT
|
||||
(byte) PLEX_COUNT#0
|
||||
(byte[8]) PLEX_FREE_YPOS
|
||||
@ -839,28 +693,8 @@ SYMBOL TABLE SSA
|
||||
(word[PLEX_COUNT#0]) PLEX_XPOS#0
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SPRITE
|
||||
@ -869,50 +703,18 @@ SYMBOL TABLE SSA
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(byte*) YSIN
|
||||
(byte*) YSIN#0
|
||||
(void()) init()
|
||||
@ -1348,8 +1150,8 @@ SYMBOL TABLE SSA
|
||||
(byte) plex_sprite_msb#8
|
||||
(byte) plex_sprite_msb#9
|
||||
|
||||
Inversing boolean not [112] (bool~) plexSort::$4 ← (byte) plexSort::nxt_y#0 >= *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2)) from [111] (bool~) plexSort::$3 ← (byte) plexSort::nxt_y#0 < *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))
|
||||
Inversing boolean not [182] (bool~) plexShowSprite::$9 ← (byte) plex_sprite_msb#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [181] (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [46] (bool~) plexSort::$4 ← (byte) plexSort::nxt_y#0 >= *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2)) from [45] (bool~) plexSort::$3 ← (byte) plexSort::nxt_y#0 < *((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))
|
||||
Inversing boolean not [116] (bool~) plexShowSprite::$9 ← (byte) plex_sprite_msb#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [115] (bool~) plexShowSprite::$8 ← (byte) plex_sprite_msb#3 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte*) plexInit::plexSetScreen1_screen#0 = (byte*) plexInit::screen#1 (byte*) plexInit::plexSetScreen1_screen#1
|
||||
Alias (byte*) PLEX_SCREEN_PTR#1 = (byte*) plexInit::plexSetScreen1_$0#0 (byte*) PLEX_SCREEN_PTR#22
|
||||
@ -1573,101 +1375,35 @@ Redundant Phi (byte) plex_free_next#10 (byte) plex_free_next#14
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Redundant Phi (byte) plexSort::m#3 (byte) plexSort::m#2
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) plexInit::$2 [101] if((byte) plexInit::i#1!=rangelast(0,plexInit::$1)) goto plexInit::@1
|
||||
Simple Condition (bool~) plexSort::$4 [113] if((byte) plexSort::nxt_y#0>=*((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2
|
||||
Simple Condition (bool~) plexSort::$9 [117] if((byte) plexSort::m#1!=rangelast(0,plexSort::$1)) goto plexSort::@1
|
||||
Simple Condition (bool) plexSort::plexFreePrepare1_$0#0 [140] if((byte) plexSort::plexFreePrepare1_s#1!=rangelast(0,7)) goto plexSort::plexFreePrepare1_@1
|
||||
Simple Condition (bool~) plexShowSprite::$5 [169] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1
|
||||
Simple Condition (bool~) plexShowSprite::$9 [183] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@3
|
||||
Simple Condition (bool~) init::$7 [240] if((byte) init::sx#1!=rangelast(0,init::$3)) goto init::@1
|
||||
Simple Condition (bool~) init::$8 [248] if((byte) init::ss#1!=rangelast(0,7)) goto init::@3
|
||||
Simple Condition (bool~) loop::$0 [259] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@5
|
||||
Simple Condition (bool~) loop::$2 [271] if((byte) loop::sy#1!=rangelast(0,loop::$1)) goto loop::@10
|
||||
Simple Condition (bool~) loop::$5 [285] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@13
|
||||
Simple Condition (bool~) loop::$8 [301] if(*((byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@20
|
||||
Simple Condition (bool~) loop::$10 [313] if((byte) loop::ss#1!=rangelast(0,loop::$6)) goto loop::@18
|
||||
Simple Condition (bool~) plexInit::$2 [35] if((byte) plexInit::i#1!=rangelast(0,plexInit::$1)) goto plexInit::@1
|
||||
Simple Condition (bool~) plexSort::$4 [47] if((byte) plexSort::nxt_y#0>=*((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2
|
||||
Simple Condition (bool~) plexSort::$9 [51] if((byte) plexSort::m#1!=rangelast(0,plexSort::$1)) goto plexSort::@1
|
||||
Simple Condition (bool) plexSort::plexFreePrepare1_$0#0 [74] if((byte) plexSort::plexFreePrepare1_s#1!=rangelast(0,7)) goto plexSort::plexFreePrepare1_@1
|
||||
Simple Condition (bool~) plexShowSprite::$5 [103] if((byte~) plexShowSprite::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@1
|
||||
Simple Condition (bool~) plexShowSprite::$9 [117] if((byte) plex_sprite_msb#25!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto plexShowSprite::@3
|
||||
Simple Condition (bool~) init::$7 [174] if((byte) init::sx#1!=rangelast(0,init::$3)) goto init::@1
|
||||
Simple Condition (bool~) init::$8 [182] if((byte) init::ss#1!=rangelast(0,7)) goto init::@3
|
||||
Simple Condition (bool~) loop::$0 [193] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@5
|
||||
Simple Condition (bool~) loop::$2 [205] if((byte) loop::sy#1!=rangelast(0,loop::$1)) goto loop::@10
|
||||
Simple Condition (bool~) loop::$5 [219] if((byte~) loop::$4!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto loop::@13
|
||||
Simple Condition (bool~) loop::$8 [235] if(*((byte*) RASTER#0)<(byte) loop::plexFreeNextYpos1_return#0) goto loop::@20
|
||||
Simple Condition (bool~) loop::$10 [247] if((byte) loop::ss#1!=rangelast(0,loop::$6)) goto loop::@18
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Rewriting && if()-condition to two if()s [126] (bool~) plexSort::$8 ← (bool~) plexSort::$6 && (bool~) plexSort::$7
|
||||
Rewriting && if()-condition to two if()s [60] (bool~) plexSort::$8 ← (bool~) plexSort::$6 && (bool~) plexSort::$7
|
||||
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const byte) PLEX_COUNT#0 = $20
|
||||
Constant (const word/signed word/dword/signed dword) $0 = $400+$3f8
|
||||
Constant (const byte) plex_show_idx#0 = 0
|
||||
@ -2113,50 +1849,10 @@ plexInit::@return: scope:[plexInit] from plexInit::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte) PLEX_COUNT
|
||||
(byte[8]) PLEX_FREE_YPOS
|
||||
(byte[PLEX_COUNT#0]) PLEX_PTR
|
||||
@ -2164,43 +1860,17 @@ VARIABLE REGISTER WEIGHTS
|
||||
(byte[PLEX_COUNT#0]) PLEX_SORTED_IDX
|
||||
(word[PLEX_COUNT#0]) PLEX_XPOS
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(byte*) SPRITE
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte*) YSIN
|
||||
(void()) init()
|
||||
(byte~) init::$6 22.0
|
||||
@ -3935,54 +3605,14 @@ FINAL SYMBOL TABLE
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte) PLEX_COUNT
|
||||
(const byte) PLEX_COUNT#0 PLEX_COUNT = (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte[8]) PLEX_FREE_YPOS
|
||||
@ -3997,18 +3627,8 @@ FINAL SYMBOL TABLE
|
||||
(const word[PLEX_COUNT#0]) PLEX_XPOS#0 PLEX_XPOS = { fill( PLEX_COUNT#0, 0) }
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS
|
||||
(const byte[PLEX_COUNT#0]) PLEX_YPOS#0 PLEX_YPOS = { fill( PLEX_COUNT#0, 0) }
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) SPRITE
|
||||
@ -4017,34 +3637,18 @@ FINAL SYMBOL TABLE
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) $d027
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) $d010
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) $d001
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(const byte) VIC_RST8#0 VIC_RST8 = (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte*) YSIN
|
||||
(const byte*) YSIN#0 YSIN = ((byte*))(word/signed word/dword/signed dword) $2100
|
||||
(void()) init()
|
||||
|
@ -2,54 +2,14 @@
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte) PLEX_COUNT
|
||||
(const byte) PLEX_COUNT#0 PLEX_COUNT = (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte[8]) PLEX_FREE_YPOS
|
||||
@ -64,18 +24,8 @@
|
||||
(const word[PLEX_COUNT#0]) PLEX_XPOS#0 PLEX_XPOS = { fill( PLEX_COUNT#0, 0) }
|
||||
(byte[PLEX_COUNT#0]) PLEX_YPOS
|
||||
(const byte[PLEX_COUNT#0]) PLEX_YPOS#0 PLEX_YPOS = { fill( PLEX_COUNT#0, 0) }
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) SPRITE
|
||||
@ -84,34 +34,18 @@
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) $d027
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) $d010
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) $d001
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) VIC_RST8
|
||||
(const byte) VIC_RST8#0 VIC_RST8 = (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte*) YSIN
|
||||
(const byte*) YSIN#0 YSIN = ((byte*))(word/signed word/dword/signed dword) $2100
|
||||
(void()) init()
|
||||
|
@ -2,85 +2,8 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte*) MUSIC#0 ← ((byte*)) (word/signed word/dword/signed dword) $1000
|
||||
@ -120,166 +43,12 @@ SYMBOL TABLE SSA
|
||||
(label) @6
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte*) MUSIC
|
||||
(byte*) MUSIC#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) main()
|
||||
(bool~) main::$0
|
||||
(label) main::@1
|
||||
@ -290,92 +59,14 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) @6
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Simple Condition (bool~) main::$0 [84] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $fd) goto main::@2
|
||||
Simple Condition (bool~) main::$0 [7] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $fd) goto main::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const byte*) MUSIC#0 = ((byte*))$1000
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [7] if(true) goto main::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Adding NOP phi() at start of @begin
|
||||
@ -424,86 +115,9 @@ main::@2: scope:[main] from main::@1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte*) MUSIC
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
|
||||
Initial phi equivalence classes
|
||||
@ -675,89 +289,12 @@ FINAL SYMBOL TABLE
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte*) MUSIC
|
||||
(const byte*) MUSIC#0 MUSIC = ((byte*))(word/signed word/dword/signed dword) $1000
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -2,89 +2,12 @@
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte*) MUSIC
|
||||
(const byte*) MUSIC#0 MUSIC = ((byte*))(word/signed word/dword/signed dword) $1000
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -3,85 +3,15 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte*) MUSIC#0 ← ((byte*)) (word/signed word/dword/signed dword) $1000
|
||||
@ -125,166 +55,26 @@ SYMBOL TABLE SSA
|
||||
(label) @7
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte*) MUSIC
|
||||
(byte*) MUSIC#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
interrupt(KERNEL_KEYBOARD)(void()) irq_play()
|
||||
(label) irq_play::@return
|
||||
(void()) main()
|
||||
@ -293,89 +83,18 @@ interrupt(KERNEL_KEYBOARD)(void()) irq_play()
|
||||
|
||||
Culled Empty Block (label) @7
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const byte*) MUSIC#0 = ((byte*))$1000
|
||||
Constant (const void()*) main::$0 = &irq_play
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Constant inlined main::$0 = &interrupt(KERNEL_KEYBOARD)(void()) irq_play()
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Adding NOP phi() at start of @begin
|
||||
@ -432,86 +151,16 @@ irq_play::@return: scope:[irq_play] from irq_play
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte*) MUSIC
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
interrupt(KERNEL_KEYBOARD)(void()) irq_play()
|
||||
(void()) main()
|
||||
|
||||
@ -780,96 +429,26 @@ FINAL SYMBOL TABLE
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) $dc0d
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) $d01a
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) $d019
|
||||
(void()**) KERNEL_IRQ
|
||||
(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) $314
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte*) MUSIC
|
||||
(const byte*) MUSIC#0 MUSIC = ((byte*))(word/signed word/dword/signed dword) $1000
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
interrupt(KERNEL_KEYBOARD)(void()) irq_play()
|
||||
(label) irq_play::@return
|
||||
(void()) main()
|
||||
|
@ -2,96 +2,26 @@
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) $dc0d
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) $d01a
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) IRQ_STATUS
|
||||
(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) $d019
|
||||
(void()**) KERNEL_IRQ
|
||||
(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) $314
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte*) MUSIC
|
||||
(const byte*) MUSIC#0 MUSIC = ((byte*))(word/signed word/dword/signed dword) $1000
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) $d011
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
interrupt(KERNEL_KEYBOARD)(void()) irq_play()
|
||||
(label) irq_play::@return
|
||||
(void()) main()
|
||||
|
@ -204,7 +204,7 @@ makecharset::@10: scope:[makecharset] from makecharset
|
||||
[101] call print_cls
|
||||
to:makecharset::@1
|
||||
makecharset::@1: scope:[makecharset] from makecharset::@10 makecharset::@9
|
||||
[102] (byte*) print_char_cursor#45 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 )
|
||||
[102] (byte*) print_char_cursor#44 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 )
|
||||
[102] (word) makecharset::c#2 ← phi( makecharset::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@9/(word) makecharset::c#1 )
|
||||
[103] (byte~) makecharset::$2 ← < (word) makecharset::c#2
|
||||
[104] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2)
|
||||
@ -247,7 +247,7 @@ makecharset::@8: scope:[makecharset] from makecharset::@7
|
||||
[124] call print_char
|
||||
to:makecharset::@9
|
||||
makecharset::@9: scope:[makecharset] from makecharset::@7 makecharset::@8
|
||||
[125] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#45 )
|
||||
[125] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#44 )
|
||||
[126] (word) makecharset::c#1 ← ++ (word) makecharset::c#2
|
||||
[127] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1
|
||||
to:makecharset::@return
|
||||
@ -255,8 +255,8 @@ makecharset::@return: scope:[makecharset] from makecharset::@9
|
||||
[128] return
|
||||
to:@return
|
||||
print_char: scope:[print_char] from makecharset::@8
|
||||
[129] *((byte*) print_char_cursor#45) ← (const byte) print_char::ch#0
|
||||
[130] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#45
|
||||
[129] *((byte*) print_char_cursor#44) ← (const byte) print_char::ch#0
|
||||
[130] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#44
|
||||
to:print_char::@return
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
[131] return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,112 +4,30 @@
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARSET
|
||||
(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) $d800
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN1
|
||||
(const byte*) SCREEN1#0 SCREEN1 = ((byte*))(word/signed word/dword/signed dword) $2800
|
||||
(byte) SID_CONTROL_GATE
|
||||
(byte) SID_CONTROL_NOISE
|
||||
(const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) SID_CONTROL_PULSE
|
||||
(byte) SID_CONTROL_RING
|
||||
(byte) SID_CONTROL_SAWTOOTH
|
||||
(byte) SID_CONTROL_SYNC
|
||||
(byte) SID_CONTROL_TEST
|
||||
(byte) SID_CONTROL_TRIANGLE
|
||||
(byte*) SID_VOICE3_CONTROL
|
||||
(const byte*) SID_VOICE3_CONTROL#0 SID_VOICE3_CONTROL = ((byte*))(word/dword/signed dword) $d412
|
||||
(word*) SID_VOICE3_FREQ
|
||||
(const word*) SID_VOICE3_FREQ#0 SID_VOICE3_FREQ = ((word*))(word/dword/signed dword) $d40e
|
||||
(byte*) SID_VOICE3_FREQ_HIGH
|
||||
(byte*) SID_VOICE3_FREQ_LOW
|
||||
(byte*) SID_VOICE3_OSC
|
||||
(const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) $d41b
|
||||
(byte*) SINTABLE
|
||||
(const byte*) SINTABLE#0 SINTABLE = ((byte*))(word/signed word/dword/signed dword) $1f00
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte) c1A
|
||||
(byte) c1A#1 c1A zp ZP_BYTE:4 1.1538461538461537
|
||||
(byte) c1A#3 c1A zp ZP_BYTE:4 0.18840579710144925
|
||||
@ -288,14 +206,13 @@
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:11 4.333333333333333
|
||||
(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:11 11.0
|
||||
(byte*) print_char_cursor#45 print_char_cursor zp ZP_WORD:11 1.1304347826086956
|
||||
(byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:11 1.1304347826086956
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) print_screen
|
||||
@ -317,7 +234,7 @@ zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 doplasma::c2b#2 d
|
||||
reg byte x [ doplasma::yprev#2 doplasma::yprev#3 ]
|
||||
zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 doplasma::i1#2 doplasma::i1#1 ]
|
||||
reg byte x [ doplasma::i2#2 doplasma::i2#1 ]
|
||||
zp ZP_WORD:11 [ print_char_cursor#45 print_char_cursor#18 print_char_cursor#1 ]
|
||||
zp ZP_WORD:11 [ print_char_cursor#44 print_char_cursor#18 print_char_cursor#1 ]
|
||||
reg byte x [ makecharset::ii#2 makecharset::ii#1 ]
|
||||
reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ]
|
||||
zp ZP_BYTE:13 [ doplasma::yval#0 ]
|
||||
|
@ -119,7 +119,7 @@ makecharset::@10: scope:[makecharset] from makecharset
|
||||
[58] call print_cls
|
||||
to:makecharset::@1
|
||||
makecharset::@1: scope:[makecharset] from makecharset::@10 makecharset::@9
|
||||
[59] (byte*) print_char_cursor#47 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 )
|
||||
[59] (byte*) print_char_cursor#46 ← phi( makecharset::@10/(const byte*) print_line_cursor#0 makecharset::@9/(byte*) print_char_cursor#18 )
|
||||
[59] (word) makecharset::c#2 ← phi( makecharset::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 makecharset::@9/(word) makecharset::c#1 )
|
||||
[60] (byte~) makecharset::$2 ← < (word) makecharset::c#2
|
||||
[61] (byte) makecharset::s#0 ← *((const byte*) SINTABLE#0 + (byte~) makecharset::$2)
|
||||
@ -162,7 +162,7 @@ makecharset::@8: scope:[makecharset] from makecharset::@7
|
||||
[81] call print_char
|
||||
to:makecharset::@9
|
||||
makecharset::@9: scope:[makecharset] from makecharset::@7 makecharset::@8
|
||||
[82] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#47 )
|
||||
[82] (byte*) print_char_cursor#18 ← phi( makecharset::@8/(byte*) print_char_cursor#1 makecharset::@7/(byte*) print_char_cursor#46 )
|
||||
[83] (word) makecharset::c#1 ← ++ (word) makecharset::c#2
|
||||
[84] if((word) makecharset::c#1<(word/signed word/dword/signed dword) $100) goto makecharset::@1
|
||||
to:makecharset::@return
|
||||
@ -170,8 +170,8 @@ makecharset::@return: scope:[makecharset] from makecharset::@9
|
||||
[85] return
|
||||
to:@return
|
||||
print_char: scope:[print_char] from makecharset::@8
|
||||
[86] *((byte*) print_char_cursor#47) ← (const byte) print_char::ch#0
|
||||
[87] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#47
|
||||
[86] *((byte*) print_char_cursor#46) ← (const byte) print_char::ch#0
|
||||
[87] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#46
|
||||
to:print_char::@return
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
[88] return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,114 +4,32 @@
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) BLUE
|
||||
(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARSET
|
||||
(const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) $d800
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) $d018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN1
|
||||
(const byte*) SCREEN1#0 SCREEN1 = ((byte*))(word/signed word/dword/signed dword) $2800
|
||||
(byte*) SCREEN2
|
||||
(const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word/dword/signed dword) $2c00
|
||||
(byte) SID_CONTROL_GATE
|
||||
(byte) SID_CONTROL_NOISE
|
||||
(const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) SID_CONTROL_PULSE
|
||||
(byte) SID_CONTROL_RING
|
||||
(byte) SID_CONTROL_SAWTOOTH
|
||||
(byte) SID_CONTROL_SYNC
|
||||
(byte) SID_CONTROL_TEST
|
||||
(byte) SID_CONTROL_TRIANGLE
|
||||
(byte*) SID_VOICE3_CONTROL
|
||||
(const byte*) SID_VOICE3_CONTROL#0 SID_VOICE3_CONTROL = ((byte*))(word/dword/signed dword) $d412
|
||||
(word*) SID_VOICE3_FREQ
|
||||
(const word*) SID_VOICE3_FREQ#0 SID_VOICE3_FREQ = ((word*))(word/dword/signed dword) $d40e
|
||||
(byte*) SID_VOICE3_FREQ_HIGH
|
||||
(byte*) SID_VOICE3_FREQ_LOW
|
||||
(byte*) SID_VOICE3_OSC
|
||||
(const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) $d41b
|
||||
(byte*) SINTABLE
|
||||
(const byte*) SINTABLE#0 SINTABLE = ((byte*))(word/signed word/dword/signed dword) $1f00
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(byte) c1A
|
||||
(byte) c1A#10 c1A zp ZP_BYTE:4 2.6000000000000005
|
||||
(byte) c1A#14 c1A zp ZP_BYTE:4 11.0
|
||||
@ -258,14 +176,13 @@
|
||||
(byte*) print_char_cursor
|
||||
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:11 4.333333333333333
|
||||
(byte*) print_char_cursor#18 print_char_cursor zp ZP_WORD:11 11.0
|
||||
(byte*) print_char_cursor#47 print_char_cursor zp ZP_WORD:11 1.1304347826086956
|
||||
(byte*) print_char_cursor#46 print_char_cursor zp ZP_WORD:11 1.1304347826086956
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(byte[]) print_hextab
|
||||
(byte*) print_line_cursor
|
||||
(const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) print_screen
|
||||
@ -287,7 +204,7 @@ zp ZP_BYTE:9 [ doplasma::c1b#2 doplasma::c1b#0 doplasma::c1b#1 doplasma::c2b#2 d
|
||||
zp ZP_BYTE:10 [ doplasma::i#2 doplasma::i#1 doplasma::i1#2 doplasma::i1#1 ]
|
||||
reg byte x [ doplasma::ii#4 doplasma::ii#1 ]
|
||||
reg byte y [ doplasma::i2#2 doplasma::i2#1 ]
|
||||
zp ZP_WORD:11 [ print_char_cursor#47 print_char_cursor#18 print_char_cursor#1 ]
|
||||
zp ZP_WORD:11 [ print_char_cursor#46 print_char_cursor#18 print_char_cursor#1 ]
|
||||
reg byte x [ makecharset::ii#2 makecharset::ii#1 ]
|
||||
reg byte y [ makecharset::b#2 makecharset::b#3 makecharset::b#1 ]
|
||||
reg byte a [ doplasma::$0 ]
|
||||
|
@ -2,85 +2,9 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@5
|
||||
main: scope:[main] from @6
|
||||
asm { sei }
|
||||
@ -141,162 +65,10 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) main()
|
||||
(bool~) main::$0
|
||||
(bool~) main::$1
|
||||
@ -324,89 +96,13 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) @7
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Simple Condition (bool~) main::$0 [81] if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto main::@2
|
||||
Simple Condition (bool~) main::$1 [83] if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $b) goto main::@4
|
||||
Simple Condition (bool~) raster::$0 [98] if((byte) raster::col#1!=(byte/word/signed word/dword/signed dword) $ff) goto raster::@1
|
||||
Simple Condition (bool~) main::$0 [5] if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $a) goto main::@2
|
||||
Simple Condition (bool~) main::$1 [7] if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) $b) goto main::@4
|
||||
Simple Condition (bool~) raster::$0 [22] if((byte) raster::col#1!=(byte/word/signed word/dword/signed dword) $ff) goto raster::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const byte[]) rastercols#0 = { $b, 0, $b, $b, $c, $b, $c, $c, $f, $c, $f, $f, 1, $f, 1, 1, $f, 1, $f, $f, $c, $f, $c, $c, $b, $c, $b, $b, 0, $b, 0, $ff }
|
||||
Constant (const byte) raster::i#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
@ -414,7 +110,6 @@ Consolidated array index constant in *(rastercols#0+raster::i#0)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
if() condition always true - replacing block destination [4] if(true) goto main::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Culled Empty Block (label) main::@7
|
||||
@ -492,84 +187,8 @@ raster::@return: scope:[raster] from raster::@1
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(void()) raster()
|
||||
(byte) raster::col
|
||||
@ -909,86 +528,10 @@ FINAL SYMBOL TABLE
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -3,86 +3,10 @@
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -9,85 +9,15 @@ Inlined call call mulf8s_prepare (signed byte) anim::sin_a
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) $30
|
||||
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $35
|
||||
(byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $31
|
||||
(byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $36
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
(byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) $d001
|
||||
(byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) $d010
|
||||
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) $d012
|
||||
(byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) $d017
|
||||
(byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) $d01b
|
||||
(byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) $d01c
|
||||
(byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) $d01d
|
||||
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) $d021
|
||||
(byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) $d022
|
||||
(byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) $d023
|
||||
(byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) $d024
|
||||
(byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) $d025
|
||||
(byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) $d026
|
||||
(byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) $d027
|
||||
(byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) $d011
|
||||
(byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) $80
|
||||
(byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte*) D016#0 ← ((byte*)) (word/dword/signed dword) $d016
|
||||
(byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) $d018
|
||||
(byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) $d013
|
||||
(byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) $d014
|
||||
(byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) $d019
|
||||
(byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) $d01a
|
||||
(byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
(byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dc00
|
||||
(byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dc01
|
||||
(byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc02
|
||||
(byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dc03
|
||||
(byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dc0d
|
||||
(byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) $7f
|
||||
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) $dd00
|
||||
(byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) $dd01
|
||||
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd02
|
||||
(byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) $dd03
|
||||
(byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) $dd0d
|
||||
(void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) $314
|
||||
(void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) $fffe
|
||||
(byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $b
|
||||
(byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) $d
|
||||
(byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
to:@4
|
||||
@4: scope:[] from @begin
|
||||
(byte[$200]) mulf_sqr1_lo#0 ← { fill( $200, 0) }
|
||||
@ -603,118 +533,16 @@ SYMBOL TABLE SSA
|
||||
(label) @4
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL1#0
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL2#0
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL3#0
|
||||
(byte*) BGCOL4
|
||||
(byte*) BGCOL4#0
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
(byte) BLUE#0
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte) BROWN
|
||||
(byte) BROWN#0
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_INTERRUPT#0
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A#0
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_A_DDR#0
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B#0
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA1_PORT_B_DDR#0
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_INTERRUPT#0
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A#0
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_A_DDR#0
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B#0
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte*) CIA2_PORT_B_DDR#0
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte) CIA_INTERRUPT_CLEAR#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte*) COS
|
||||
(byte*) COS#0
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREY
|
||||
(byte) GREY#0
|
||||
(void()**) HARDWARE_IRQ
|
||||
(void()**) HARDWARE_IRQ#0
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_BG#0
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte) IRQ_COLLISION_SPRITE#0
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte*) IRQ_ENABLE#0
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_LIGHTPEN#0
|
||||
(byte) IRQ_RASTER
|
||||
(byte) IRQ_RASTER#0
|
||||
(byte*) IRQ_STATUS
|
||||
(byte*) IRQ_STATUS#0
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_X#0
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte*) LIGHTPEN_Y#0
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_BLUE#0
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREEN#0
|
||||
(byte) LIGHT_GREY
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte*) PROCPORT_DDR#0
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_KERNEL_IO#0
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_ALL#0
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_CHARROM#0
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PROCPORT_RAM_IO#0
|
||||
(byte) PURPLE
|
||||
(byte) PURPLE#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SIN
|
||||
@ -749,50 +577,12 @@ SYMBOL TABLE SSA
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_ENABLE#0
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_X#0
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_EXPAND_Y#0
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC#0
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC1#0
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_MC2#0
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_PRIORITY#0
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XMSB#0
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_XPOS#0
|
||||
(byte*) SPRITES_YPOS
|
||||
(byte*) SPRITES_YPOS#0
|
||||
(word) SPRITE_PTRS
|
||||
(word) SPRITE_PTRS#0
|
||||
(byte) VIC_BMM
|
||||
(byte) VIC_BMM#0
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL#0
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte*) VIC_CONTROL2#0
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_CSEL#0
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_DEN#0
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_ECM#0
|
||||
(byte) VIC_MCM
|
||||
(byte) VIC_MCM#0
|
||||
(byte*) VIC_MEMORY
|
||||
(byte*) VIC_MEMORY#0
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RSEL#0
|
||||
(byte) VIC_RST8
|
||||
(byte) VIC_RST8#0
|
||||
(byte) WHITE
|
||||
(byte) WHITE#0
|
||||
(byte) YELLOW
|
||||
(byte) YELLOW#0
|
||||
(void()) anim()
|
||||
(bool~) anim::$0
|
||||
(signed byte~) anim::$1
|
||||
@ -1179,11 +969,11 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) @17
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [94] (bool~) mulf_init::$10 ← (byte~) mulf_init::$8 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [93] (bool~) mulf_init::$9 ← (byte~) mulf_init::$8 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [124] (bool~) mulf_init::$18 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [123] (bool~) mulf_init::$17 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [164] (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [163] (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [168] (bool~) mulf8s_prepared::$5 ← (signed byte) mulf8s_prepared::b#5 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [167] (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#5 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [293] (bool~) anim::$20 ← (byte~) anim::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [292] (bool~) anim::$19 ← (byte~) anim::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [24] (bool~) mulf_init::$10 ← (byte~) mulf_init::$8 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [23] (bool~) mulf_init::$9 ← (byte~) mulf_init::$8 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [54] (bool~) mulf_init::$18 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [53] (bool~) mulf_init::$17 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [94] (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [93] (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [98] (bool~) mulf8s_prepared::$5 ← (signed byte) mulf8s_prepared::b#5 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [97] (bool~) mulf8s_prepared::$4 ← (signed byte) mulf8s_prepared::b#5 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [223] (bool~) anim::$20 ← (byte~) anim::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [222] (bool~) anim::$19 ← (byte~) anim::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte*) mulf_init::sqr1_hi#0 = (byte*~) mulf_init::$0
|
||||
Alias (byte*) mulf_init::sqr1_lo#0 = (byte*~) mulf_init::$7
|
||||
@ -1275,96 +1065,26 @@ Redundant Phi (signed byte) anim::sin_a#1 (signed byte) anim::sin_a#0
|
||||
Redundant Phi (byte) anim::angle#11 (byte) anim::angle#2
|
||||
Redundant Phi (byte*) SIN#11 (byte*) SIN#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) mulf_init::$10 [95] if((byte~) mulf_init::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
Simple Condition (bool~) mulf_init::$15 [107] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$14) goto mulf_init::@1
|
||||
Simple Condition (bool~) mulf_init::$18 [125] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@6
|
||||
Simple Condition (bool~) mulf_init::$20 [130] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$19) goto mulf_init::@5
|
||||
Simple Condition (bool~) mulf8s_prepared::$3 [165] if(*((signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1
|
||||
Simple Condition (bool~) mulf8s_prepared::$5 [169] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
|
||||
Simple Condition (bool~) init::$4 [211] if((byte) init::i#1!=rangelast(0,7)) goto init::@1
|
||||
Simple Condition (bool~) anim::$0 [229] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto anim::@5
|
||||
Simple Condition (bool~) anim::$20 [294] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@11
|
||||
Simple Condition (bool~) anim::$26 [307] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@10
|
||||
Simple Condition (bool~) mulf_init::$10 [25] if((byte~) mulf_init::$8!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
Simple Condition (bool~) mulf_init::$15 [37] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$14) goto mulf_init::@1
|
||||
Simple Condition (bool~) mulf_init::$18 [55] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@6
|
||||
Simple Condition (bool~) mulf_init::$20 [60] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$19) goto mulf_init::@5
|
||||
Simple Condition (bool~) mulf8s_prepared::$3 [95] if(*((signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1
|
||||
Simple Condition (bool~) mulf8s_prepared::$5 [99] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
|
||||
Simple Condition (bool~) init::$4 [141] if((byte) init::i#1!=rangelast(0,7)) goto init::@1
|
||||
Simple Condition (bool~) anim::$0 [159] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto anim::@5
|
||||
Simple Condition (bool~) anim::$20 [224] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@11
|
||||
Simple Condition (bool~) anim::$26 [237] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@10
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte) PROCPORT_RAM_ALL#0 = $30
|
||||
Constant (const byte) PROCPORT_RAM_IO#0 = $35
|
||||
Constant (const byte) PROCPORT_RAM_CHARROM#0 = $31
|
||||
Constant (const byte) PROCPORT_KERNEL_IO#0 = $36
|
||||
Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = $37
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const word) SPRITE_PTRS#0 = $3f8
|
||||
Constant (const byte*) SPRITES_XPOS#0 = ((byte*))$d000
|
||||
Constant (const byte*) SPRITES_YPOS#0 = ((byte*))$d001
|
||||
Constant (const byte*) SPRITES_XMSB#0 = ((byte*))$d010
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))$d015
|
||||
Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))$d017
|
||||
Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))$d01b
|
||||
Constant (const byte*) SPRITES_MC#0 = ((byte*))$d01c
|
||||
Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))$d01d
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL1#0 = ((byte*))$d021
|
||||
Constant (const byte*) BGCOL2#0 = ((byte*))$d022
|
||||
Constant (const byte*) BGCOL3#0 = ((byte*))$d023
|
||||
Constant (const byte*) BGCOL4#0 = ((byte*))$d024
|
||||
Constant (const byte*) SPRITES_MC1#0 = ((byte*))$d025
|
||||
Constant (const byte*) SPRITES_MC2#0 = ((byte*))$d026
|
||||
Constant (const byte*) SPRITES_COLS#0 = ((byte*))$d027
|
||||
Constant (const byte*) VIC_CONTROL#0 = ((byte*))$d011
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) VIC_RST8#0 = $80
|
||||
Constant (const byte) VIC_ECM#0 = $40
|
||||
Constant (const byte) VIC_BMM#0 = $20
|
||||
Constant (const byte) VIC_DEN#0 = $10
|
||||
Constant (const byte) VIC_RSEL#0 = 8
|
||||
Constant (const byte*) VIC_CONTROL2#0 = ((byte*))$d016
|
||||
Constant (const byte*) D016#0 = ((byte*))$d016
|
||||
Constant (const byte) VIC_MCM#0 = $10
|
||||
Constant (const byte) VIC_CSEL#0 = 8
|
||||
Constant (const byte*) D018#0 = ((byte*))$d018
|
||||
Constant (const byte*) VIC_MEMORY#0 = ((byte*))$d018
|
||||
Constant (const byte*) LIGHTPEN_X#0 = ((byte*))$d013
|
||||
Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))$d014
|
||||
Constant (const byte*) IRQ_STATUS#0 = ((byte*))$d019
|
||||
Constant (const byte*) IRQ_ENABLE#0 = ((byte*))$d01a
|
||||
Constant (const byte) IRQ_RASTER#0 = 1
|
||||
Constant (const byte) IRQ_COLLISION_BG#0 = 2
|
||||
Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4
|
||||
Constant (const byte) IRQ_LIGHTPEN#0 = 8
|
||||
Constant (const byte*) COLS#0 = ((byte*))$d800
|
||||
Constant (const byte*) CIA1_PORT_A#0 = ((byte*))$dc00
|
||||
Constant (const byte*) CIA1_PORT_B#0 = ((byte*))$dc01
|
||||
Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))$dc02
|
||||
Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))$dc03
|
||||
Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))$dc0d
|
||||
Constant (const byte) CIA_INTERRUPT_CLEAR#0 = $7f
|
||||
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))$dd00
|
||||
Constant (const byte*) CIA2_PORT_B#0 = ((byte*))$dd01
|
||||
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))$dd02
|
||||
Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))$dd03
|
||||
Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))$dd0d
|
||||
Constant (const void()**) KERNEL_IRQ#0 = ((void()**))$314
|
||||
Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))$fffe
|
||||
Constant (const byte) BLACK#0 = 0
|
||||
Constant (const byte) WHITE#0 = 1
|
||||
Constant (const byte) RED#0 = 2
|
||||
Constant (const byte) CYAN#0 = 3
|
||||
Constant (const byte) PURPLE#0 = 4
|
||||
Constant (const byte) GREEN#0 = 5
|
||||
Constant (const byte) BLUE#0 = 6
|
||||
Constant (const byte) YELLOW#0 = 7
|
||||
Constant (const byte) ORANGE#0 = 8
|
||||
Constant (const byte) BROWN#0 = 9
|
||||
Constant (const byte) PINK#0 = $a
|
||||
Constant (const byte) DARK_GREY#0 = $b
|
||||
Constant (const byte) GREY#0 = $c
|
||||
Constant (const byte) LIGHT_GREEN#0 = $d
|
||||
Constant (const byte) LIGHT_BLUE#0 = $e
|
||||
Constant (const byte) LIGHT_GREY#0 = $f
|
||||
Constant (const byte[$200]) mulf_sqr1_lo#0 = { fill( $200, 0) }
|
||||
Constant (const byte[$200]) mulf_sqr1_hi#0 = { fill( $200, 0) }
|
||||
Constant (const byte[$200]) mulf_sqr2_lo#0 = { fill( $200, 0) }
|
||||
@ -1421,7 +1141,6 @@ Fixing inline constructor with mulf8u_prepared::$0 ← *(mulf8u_prepared::memB#0
|
||||
Successful SSA optimization Pass2FixInlineConstructors
|
||||
Inferred type updated to signed byte in [104] (signed word/signed byte/signed dword~) anim::$15 ← (signed byte~) anim::$14
|
||||
Inferred type updated to byte in [111] (byte/signed word/word/dword/signed dword~) anim::$22 ← (byte~) anim::$21
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Eliminating Noop Cast (byte) mulf8u_prepared::b#0 ← ((byte)) (signed byte) mulf8s_prepared::b#4
|
||||
Eliminating Noop Cast (byte~) mulf8s_prepared::$9 ← ((byte)) (signed byte) mulf8s_prepared::b#4
|
||||
Eliminating Noop Cast (signed word) mulf8s_prepared::return#0 ← ((signed word)) (word) mulf8s_prepared::m#4
|
||||
@ -1838,89 +1557,19 @@ mulf_init::@7: scope:[mulf_init] from mulf_init::@4
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte*) COS
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(byte*) SIN
|
||||
(byte*) SPRITE
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_ENABLE
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(byte*) SPRITES_XPOS
|
||||
(byte*) SPRITES_YPOS
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) anim()
|
||||
(signed word~) anim::$10 202.0
|
||||
(signed word~) anim::$11 202.0
|
||||
@ -4121,67 +3770,16 @@ FINAL SYMBOL TABLE
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte*) COS
|
||||
(const byte*) COS#0 COS = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) SIN
|
||||
@ -4192,31 +3790,12 @@ FINAL SYMBOL TABLE
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) $d027
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) $d010
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) $d001
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) anim()
|
||||
(signed word~) anim::$10 $10 zp ZP_WORD:5 202.0
|
||||
(signed word~) anim::$11 $11 zp ZP_WORD:5 202.0
|
||||
|
@ -2,67 +2,16 @@
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL1
|
||||
(byte*) BGCOL2
|
||||
(byte*) BGCOL3
|
||||
(byte*) BGCOL4
|
||||
(byte) BLACK
|
||||
(byte) BLUE
|
||||
(byte*) BORDERCOL
|
||||
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) $d020
|
||||
(byte) BROWN
|
||||
(byte*) CHARGEN
|
||||
(byte*) CIA1_INTERRUPT
|
||||
(byte*) CIA1_PORT_A
|
||||
(byte*) CIA1_PORT_A_DDR
|
||||
(byte*) CIA1_PORT_B
|
||||
(byte*) CIA1_PORT_B_DDR
|
||||
(byte*) CIA2_INTERRUPT
|
||||
(byte*) CIA2_PORT_A
|
||||
(byte*) CIA2_PORT_A_DDR
|
||||
(byte*) CIA2_PORT_B
|
||||
(byte*) CIA2_PORT_B_DDR
|
||||
(byte) CIA_INTERRUPT_CLEAR
|
||||
(byte*) COLS
|
||||
(byte*) COS
|
||||
(const byte*) COS#0 COS = ((byte*))(word/signed word/dword/signed dword) $2000
|
||||
(byte) CYAN
|
||||
(byte*) D011
|
||||
(byte*) D016
|
||||
(byte*) D018
|
||||
(byte) DARK_GREY
|
||||
(byte) GREEN
|
||||
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte) GREY
|
||||
(void()**) HARDWARE_IRQ
|
||||
(byte) IRQ_COLLISION_BG
|
||||
(byte) IRQ_COLLISION_SPRITE
|
||||
(byte*) IRQ_ENABLE
|
||||
(byte) IRQ_LIGHTPEN
|
||||
(byte) IRQ_RASTER
|
||||
(byte*) IRQ_STATUS
|
||||
(void()**) KERNEL_IRQ
|
||||
(byte*) LIGHTPEN_X
|
||||
(byte*) LIGHTPEN_Y
|
||||
(byte) LIGHT_BLUE
|
||||
(const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte/signed byte/word/signed word/dword/signed dword) $e
|
||||
(byte) LIGHT_GREEN
|
||||
(byte) LIGHT_GREY
|
||||
(byte) ORANGE
|
||||
(byte) PINK
|
||||
(byte*) PROCPORT
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(byte*) PROCPORT_DDR
|
||||
(byte) PROCPORT_DDR_MEMORY_MASK
|
||||
(byte) PROCPORT_KERNEL_IO
|
||||
(byte) PROCPORT_RAM_ALL
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(byte) PROCPORT_RAM_IO
|
||||
(byte) PURPLE
|
||||
(byte*) RASTER
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte) RED
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(byte*) SIN
|
||||
@ -73,31 +22,12 @@
|
||||
(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) $d027
|
||||
(byte*) SPRITES_ENABLE
|
||||
(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) $d015
|
||||
(byte*) SPRITES_EXPAND_X
|
||||
(byte*) SPRITES_EXPAND_Y
|
||||
(byte*) SPRITES_MC
|
||||
(byte*) SPRITES_MC1
|
||||
(byte*) SPRITES_MC2
|
||||
(byte*) SPRITES_PRIORITY
|
||||
(byte*) SPRITES_XMSB
|
||||
(const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) $d010
|
||||
(byte*) SPRITES_XPOS
|
||||
(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) SPRITES_YPOS
|
||||
(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) $d001
|
||||
(word) SPRITE_PTRS
|
||||
(byte) VIC_BMM
|
||||
(byte*) VIC_CONTROL
|
||||
(byte*) VIC_CONTROL2
|
||||
(byte) VIC_CSEL
|
||||
(byte) VIC_DEN
|
||||
(byte) VIC_ECM
|
||||
(byte) VIC_MCM
|
||||
(byte*) VIC_MEMORY
|
||||
(byte) VIC_RSEL
|
||||
(byte) VIC_RST8
|
||||
(byte) WHITE
|
||||
(byte) YELLOW
|
||||
(void()) anim()
|
||||
(signed word~) anim::$10 $10 zp ZP_WORD:5 202.0
|
||||
(signed word~) anim::$11 $11 zp ZP_WORD:5 202.0
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user